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 resource usage and increase redundancy.
In January 2013, the IETF published the Multipath specification as an Experimental standard in RFC 6824. Currently, the IETF works on an update to version 1 of the MPTCP protocol which will obsolete RFC 6824 if approved in 2019.

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 plain TCP. Multipath TCP is backward compatible with plain 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 level. 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.

Implementation

In July 2013, the MPTCP working group reported five independent implementations of Multipath TCP, including the reference implementation in the Linux kernel.
The currently available implementations are:
In July 2014, Oracle reported that an implementation on Solaris was being developed. In June 2015, work is in progress.
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.. Tessares uses the Linux kernel implementation to deploy Hybrid Access Networks
There is an ongoing effort to push a new Multipath TCP implementation in the mainline Linux kernel,

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 :
Other deployment use Multipath TCP to aggregate the bandwidth of different networks. For example, several types of smartphones, notably in Korea, use Multipath TCP to bond WiFi and 4G through SOCKS proxies. Another example are the Hybrid Access Networks that are deployed by network operators willing to combine xDSL and LTE networks. In this deployment, Multipath TCP is used to efficiently balance the traffic over the xDSL and the LTE network.

Multipath TCP options

Multipath TCP uses options that are described in detail in RFC 6824. All Multipath TCP options are encoded as TCP options with Option Kind is 30, as reserved by IANA.
The Multipath TCP option has the Kind, length and the remainder of the content begins with a 4-bit subtype field, for which IANA has created and will maintain a sub-registry entitled "MPTCP Option Subtypes" under the "Transmission Control Protocol Parameters" registry. Those subtype fields are defined as follows:
ValueSymbolName
0x0MP_CAPABLEMultipath Capable
0x1MP_JOINJoin Connection
0x2DSSData Sequence Signal
0x3ADD_ADDRAdd Address
0x4REMOVE_ADDRRemove Address
0x5MP_PRIOChange Subflow Priority
0x6MP_FAILFallback
0x7MP_FASTCLOSEFast Close
0xfPrivate Use within controlled testbeds

Values 0x8 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:
Multipath TCP adds new mechanisms to TCP transmissions:
The detailed protocol specification is provided in RFC 6824. Several survey articles provide an introduction to the protocol.

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.

Stream Control Transmission Protocol

is a reliable in-order datagram stream transport protocol originally intended for telecommunication signaling. It supports concurrent use of multiple access links and allows the application to influence the access interface selections on a datagram stream basis. It also supports mobility via access renegotiation. Hence, SCTP is also a transport layer solution. It offers type 3 flow granularity with concurrency, but with more flow scheduling control than Multipath TCP. It also fully supports mobility in a fashion similar to Multipath TCP.

IMS SIP

Within the IP Multimedia Subsystem architecture, Session Initiation Protocol can support the concurrent use of multiple contact IP addresses for the registration of one or more IMS user agents. This allows for the creation of multiple IMS signaling paths. On these signaling paths, signaling messages carry Session Description Protocol messaging to negotiate media streams. SDP allows for the negotiation of the streams of one media session over multiple paths. In turn, this enables application layer multipath transport. From this point of view, IMS can therefore offer application layer multipath support with flow granularity and concurrent access. A multipath extension to Real-time Transport Protocol is currently under discussion within the IETF. Multipath RTP can offer flow granularity with concurrent access and mobility.

Multipath QUIC

The IETF is currently developing the QUIC protocol that integrates the features that are traditionally found in the TCP, TLS and HTTP protocols. Thanks to the flexibility and extensibility of QUIC, it is possible to extend it to support multiple paths and address the same use cases as Multipath TCP. A first design for Multipath QUIC has been proposed, implemented and evaluated.

Other protocols and experiments

At the session layer, the Mobile Access Router project experimented in 2003 with the aggregation of multiple wireless accesses with heterogeneous technologies, transparently balancing traffic between them in response to the perceived performance of each of them.
Parallel access schemes used to accelerate transfers by taking advantage of HTTP range requests to initiate connections to multiple servers of a replicated content, are not equivalent to Multipath TCP as they involve the application layer and are limited to content of known size.

RFC