Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

socket: add MPTCP support #13278

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

socket: add MPTCP support #13278

wants to merge 1 commit into from

Commits on Apr 29, 2024

  1. socket: add MPTCP support

    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.
    
    This attached patch adds an --mptcp option which allows the creation of
    an MPTCP socket instead of TCP on Linux. If Multipath TCP is not
    supported on the system, an error will be reported. It is important to
    note that if the end server doesn't support MPTCP, the connection will
    continue after a seamless fallback to TCP.
    
    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]
    Co-developed-by: Dorian Craps (@CrapsDorian) <[email protected]>
    Co-developed-by: Olivier Bonaventure (@obonaventure) <[email protected]>
    Co-developed-by: Matthieu Baerts (@matttbe) <[email protected]>
    Signed-off-by: Dorian Craps <[email protected]>
    CrapsDorian authored and matttbe committed Apr 29, 2024
    Configuration menu
    Copy the full SHA
    655a743 View commit details
    Browse the repository at this point in the history