Tech News
← Back to articles

MPTCP for Linux

read original related products more articles

Introduction

Multipath TCP or MPTCP is an extension to the standard TCP and is described in RFC 8684. It allows a device to make use of multiple interfaces at once to send and receive TCP packets over a single MPTCP connection. MPTCP can aggregate the bandwidth of multiple interfaces or prefer the one with the lowest latency. It also allows a fail-over if one path is down, and the traffic is seamlessly reinjected on other paths.

graph TD; subgraph MPTCP direction LR C_1(

fa:fa-mobile
) S_1((
fa:fa-cloud
)) end subgraph TCP direction LR C_2(
fa:fa-mobile
) S_2((
fa:fa-cloud
)) end C_1 <== "5G" ==> S_1 C_1 <== "Wi-Fi

Multiple paths (subflows)
at the same time" ==> S_1 C_2 x-. "5G" .-x S_2 C_2 <== "Wi-Fi

One path at a time" ==> S_2 linkStyle 0 stroke:green; linkStyle 1 stroke:green; linkStyle 2 stroke:red; linkStyle 3 stroke:green;

Use cases

Thanks to MPTCP, being able to use multiple paths in parallel or simultaneously brings new use-cases, compared to TCP:

Seamless handovers: switching from one path to another while preserving established connections, e.g. Apple is using Multipath TCP on smartphones mainly for this reason since 2013.

Best network selection: using the “best” available path depending on some conditions, e.g. latency, losses, cost, bandwidth, etc.

Network aggregation: using multiple paths at the same time to have a higher throughput, e.g. to combine fixed and mobile networks to send files faster.

Concepts

Technically, when a new socket is created with the IPPROTO_MPTCP protocol (Linux-specific), a subflow (or path) is created. This subflow consists of a regular TCP connection that is used to transmit data through one interface. Additional subflows can be negotiated later between the hosts. For the remote host to be able to detect the use of MPTCP, a new field is added to the TCP option field of the underlying TCP subflow. This field contains, amongst other things, a MP_CAPABLE option that tells the other host to use MPTCP if it is supported. If the remote host or any middlebox in between does not support it, the returned SYN+ACK packet will not contain MPTCP options in the TCP option field. In that case, the connection will be “downgraded” to plain TCP, and it will continue with a single path.

... continue reading