Multipath TCP
Multipath TCP is an ongoing effort of the Internet Engineering Task Force's Multipath TCP working group, that aims at allowing a Transmission Control Protocol connection to use multiple paths to maximize throughput and increase redundancy.
In January 2013, the IETF published the Multipath specification as an Experimental standard in. It was replaced in March 2020 by the Multipath TCP v1 specification in.
Benefits
The redundancy offered by Multipath TCP enables inverse multiplexing of resources, and thus increases TCP throughput to the sum of all available link-level channels instead of using a single one as required by standard TCP. Multipath TCP is backward compatible with standard TCP.Multipath TCP is particularly useful in the context of wireless networks; using both Wi-Fi and a mobile network is a typical use case. In addition to the gains in throughput from inverse multiplexing, links may be added or dropped as the user moves in or out of coverage without disrupting the end-to-end TCP connection.
The problem of link handover is thus solved by abstraction in the transport layer, without any special mechanisms at the network or link layers. Handover functionality can then be implemented at the endpoints without requiring special functionality in the subnetworks - in accordance to the Internet's end-to-end principle.
Multipath TCP also brings performance benefits in datacenter environments. In contrast to Ethernet channel bonding using 802.3ad link aggregation, Multipath TCP can balance a single TCP connection across multiple interfaces and reach very high throughput.
Multipath TCP causes a number of new issues. From a network security perspective, multipath routing causes cross-path data fragmentation that results in firewalls and malware scanners becoming inefficient when they only see one path's traffic. In addition, SSL decryption will become inefficient by way of the end-to-end encryption protocols.
User interface
In order to facilitate its deployment, Multipath TCP presents the same socket interface as TCP. This implies that any standard TCP application can be used above Multipath TCP while in fact spreading data across several subflows.Some applications could benefit from an enhanced API to control the underlying Multipath TCP stack. Two different APIs have been proposed to expose some of features of the Multipath TCP stack to applications: an API that extends Netlink on Linux and an enhanced socket API.
Implementations
In July 2013, the MPTCP working group reported five independent implementations of Multipath TCP, including the initial reference implementation in the Linux kernel.The currently available implementations are:
- Linux kernel introduced in the mainlined kernel in v5.6
- Linux kernel fork from Université catholique de Louvain researchers and other collaborators
- FreeBSD from Swinburne University of Technology and AI/ML-based from Deakin University
- F5 Networks BIG-IP LTM
- Citrix Netscaler
- Apple iOS 7, released on September 18, 2013 is the first large scale commercial deployment of Multipath TCP. Since iOS 7, any application can use Multipath TCP.
- Apple Mac OS X 10.10, released on October 16, 2014
- Alcatel-Lucent released MPTCP proxy version 0.9 source code on October 26, 2012
During the MPTCP WG meeting at IETF 93, SungHoon Seo announced that KT had deployed since mid June a commercial service that allows smartphone users to reach 1 Gbit/s using a MPTCP proxy service. Wavenet uses the Linux kernel implementation to deploy Hybrid Access Networks.
Use cases
Multipath TCP was designed to be backward compatible with regular TCP. As such, it can support any application. However, some specific deployments leverage the ability of simultaneously using different paths.Apple uses Multipath TCP to support the Siri application on iPhone. Siri sends voice samples over an HTTPS session to Apple servers. Those servers reply with the information requested by the users. According to Apple engineers, the main benefits of Multipath TCP with this application are:
- User-feedback 20% faster in the 95th percentile
- 5x reduction of network failures
In the standardisation of converged fixed and mobile communication networks, 3GPP and BBF are interoperating to provide an ATSSS feature to support multipath sessions, e.g, by applying Multipath TCP both in the User Equipment or Residential Gateway and on the network side.
Multipath TCP options
Multipath TCP uses options that are described in detail in. All Multipath TCP options are encoded as TCP options with Option Kind 30, as reserved by IANA.The Multipath TCP option consists of the standard Option-Kind and Length values, followed by a 4-bit subtype field, for which the IANA maintains a sub-registry entitled "MPTCP Option Subtypes" under the "Transmission Control Protocol Parameters" registry. This subtype field indicates the MPTCP header type, and its values are defined as follows:
| Value | Symbol | Name |
| 0x0 | MP_CAPABLE | Multipath Capable |
| 0x1 | MP_JOIN | Join Connection |
| 0x2 | DSS | Data Sequence Signal |
| 0x3 | ADD_ADDR | Add Address |
| 0x4 | REMOVE_ADDR | Remove Address |
| 0x5 | MP_PRIO | Change Subflow Priority |
| 0x6 | MP_FAIL | Fallback |
| 0x7 | MP_FASTCLOSE | Fast Close |
| 0x8 | MP_TCPRST | Subflow Reset |
| 0xf | MP_EXPERIMENTAL | Reserved for Private Use |
Values 0x9 through 0xe are currently unassigned.
Protocol operation
Simplified description
The core idea of multipath TCP is to define a way to build a connection between two hosts and not between two interfaces.For instance, Alice has a smartphone with 3G and WiFi interfaces and Bob has a computer with an Ethernet interface.
In standard TCP, the connection should be established between two IP addresses. Each TCP connection is identified by a four-tuple. Given this restriction, an application can only create one TCP connection through a single link. Multipath TCP allows the connection to use several paths simultaneously. For this, Multipath TCP creates one TCP connection, called subflow, over each path that needs to be used.
The purpose of the different protocol operations are:
- to handle when and how to add/remove paths
- to be compatible with legacy TCP hardware
- to define a fair congestion control strategy between the different links and the different hosts
- The subflow system, used to gather multiple standard TCP connections. Subflows are identified during the TCP three-way handshake. After the handshake, an application can add or remove some subflows.
- The MPTCP DSS option contains a data sequence number and an acknowledgement number. These allow receiving data from multiple subflows in the original order, without any corruption
- A modified retransmission protocol handles congestion control and reliability.
Detailed specification
Congestion control
Several congestion control mechanisms have been defined for Multipath TCP. Their main difference with classical TCP congestion control schemes is that they need to react to congestion on the different paths without being unfair with single path TCP sources that could compete with them on one of the paths. Four Multipath TCP congestion control schemes are currently supported by the Multipath TCP implementation in the Linux kernel.- The Linked Increase Algorithm defined in
RFC 6356 - The Opportunistic Linked Increase Algorithm
- The wVegas delay based congestion control algorithm
- The Balanced Linked Increase Algorithm
Alternatives