https://bz.apache.org/bugzilla/show_bug.cgi?id=69292

            Bug ID: 69292
           Summary: Add multipath TCP (MPTCP) support
           Product: Apache httpd-2
           Version: 2.5-HEAD
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: Core
          Assignee: bugs@httpd.apache.org
          Reporter: anthony.doera...@hotmail.com
  Target Milestone: ---

Multipath TCP (MPTCP), standardized in RFC8684 [1], is a TCP extension that
enables a TCP connection to use different paths.

Multipath TCP has been used for several use cases. On smartphones, MPTCP
enables seamless handovers between cellular and Wi-Fi networks while preserving
established connections. This use-case is what pushed Apple to use MPTCP since
2013 in multiple applications [2]. On dual-stack hosts, Multipath TCP enables
the TCP connection to automatically use the best performing path, either IPv4
or IPv6. If one path fails, MPTCP automatically uses the other path.

To benefit from MPTCP, both the client and the server have to support it.
Multipath TCP is a backward-compatible TCP extension that is enabled by default
on recent Linux distributions (Debian, Ubuntu, Redhat, ...). Multipath TCP is
included in the Linux kernel since version 5.6 [3]. To use it on Linux, an
application must explicitly enable it when creating the socket. No need to
change anything else in the application.

Adding the possibility to create MPTCP sockets would thus be a really fine
addition to httpd, by allowing clients to make use of their different 
interfaces.

This patch introduces the possibility to listen with MPTCP sockets, as well
as connecting to backend servers. Note however that these changes are only
available on Linux, as IPPROTO_MPTCP is Linux specific for
the time being.

To do so, we extended the Listen directive to include a "multipathtcp" option,
allowing to create MPTCP sockets instead of regular TCP ones:

Listen 80 options=multipathtcp

For proxies, we can connect using MPTCP by passing the "multipathtcp"
parameter:

ProxyPass "/example" "http://backend.example.com"; multipathtcp=On

We then store this information in flags for the listen directive, and in the
worker for proxy, and create sockets appropriately according to this value.

Link: https://www.rfc-editor.org/rfc/rfc8684.html [1]
Link: https://www.tessares.net/apples-mptcp-story-so-far/ [2]
Link: https://www.mptcp.dev [3]

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscr...@httpd.apache.org
For additional commands, e-mail: bugs-h...@httpd.apache.org

Reply via email to