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.

These patches are a continuation of the work [4] realized by Dorian 
Craps and Matthieu Baerts.

Changelog:
  - Patch 1:
    - Duplicate the mptcp(4|6) protocol structures from their tcp 
    equivalent, instead of using a function that creates them by copying
    tcp structures
    - Add support for MPTCP on the backend side (between the proxy and 
    the servers)
  - Patch 2:
    - Fix a warning about TCP_MAXSEG not being supported while MPTCP is 
    used by declaring new constants sock_inet(6)_mptcp_maxseg_default.
    Those constants represent the MSS supported by MPTCP (== -1 for the
    moment, as long as TCP_MAXSEG is not supported). For the moment, 
    MPTCP doesn't support TCP_MAXSEG socket option, mainly because it 
    has apparently never been requested before, apparently. It should 
    not be difficult to implement it, but is it an important option
    for HAProxy?

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]
Link: https://www.mail-archive.com/haproxy@formilux.org/msg44871.html [4]

Aperence (2):
  FEATURE: add MPTCP per address support
  BUG/MINOR: fix warning when setting MSS with MPTCP

 doc/configuration.txt       |  21 +++++++
 examples/mptcp-backend.py   |  22 +++++++
 examples/mptcp.cfg          |  23 ++++++++
 include/haproxy/compat.h    |   5 ++
 include/haproxy/protocol.h  |   4 +-
 include/haproxy/sock_inet.h |   3 +
 src/backend.c               |  11 +++-
 src/proto_tcp.c             | 113 ++++++++++++++++++++++++++++++++++--
 src/protocol.c              |   4 +-
 src/sock.c                  |   4 +-
 src/sock_inet.c             |  28 +++++++++
 src/tools.c                 |  24 +++++++-
 12 files changed, 250 insertions(+), 12 deletions(-)
 create mode 100644 examples/mptcp-backend.py
 create mode 100644 examples/mptcp.cfg

-- 
2.46.0



Reply via email to