Multipath TCP

From Wikipedia, the free encyclopedia
Jump to: navigation, search

Multipath TCP (MPTCP) is an ongoing effort of the Internet Engineering Task Force's (IETF) Multipath TCP working group, that aims at allowing a Transmission Control Protocol (TCP) connection to use multiple paths to maximize resource usage and increase redundancy.[1]

In January 2013, the IETF published the Multipath specification as an Experimental standard in RFC 6824.


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 backwards compatible with plain TCP.

Multipath TCP is particularly useful in the context of wireless networks [2][3] - 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.[4] In contrast to Ethernet channel bonding using 802.3ad link aggregation, Multipath TCP can balance a single TCP connection across multiple interfaces.[5]

User interface[edit]

Multipath TCP presents the same user interface as TCP. It modifies TCP so that it presents a standard TCP interface to applications, while in fact spreading data across several subflows.[6]


In July 2013, the MPTCP working group reported five independent implementations of Multipath TCP,[7] including the reference implementation[6] in the Linux kernel.[8][9]

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.[15]

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.[16]

TCP segment structure[edit]

Multipath TCP segment structure is described in detail in RFC 6824.

Data structures used by Multipath TCP are located in the TCP Options field, in a variable-length option; the option's registered TCP Option Kind is 30, as reserved by IANA.[17]

The Multipath TCP option has the Kind (30), length (variable) 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 (TCP) Parameters" registry. Those subtype fields are defined as follows:

Value Symbol Name
0x0 MP_CAPABLE Multipath Capable
0x1 MP_JOIN Join Connection
0x2 DSS Data Sequence Signal (Data ACK and data sequence mapping)
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
0xf (PRIVATE) Private Use within controlled testbeds

Values 0x8 through 0xe are currently unassigned.

Protocol operation[edit]

Detailed specification[edit]

The detailed protocol specification is provided in RFC 6824. Several survey articles provide an introduction to the protocol.[18][19]

Simplified description[edit]

Difference between TCP and MPTCP

The core idea of multipath TCP is to define a way to build a connection between two hosts and not between two interfaces (as standard TCP does).

For instance, Alice has a smartphone with 3G and WiFi interfaces (with IP addresses and and Bob has a computer with an Ethernet interface (with IP address

In standard TCP application, the connection should be established between two IP addresses. TCP defines the source and destination by IP address and port. An application has to choose a single link. A multipath TCP application can take advantage of using different paths to talk from Alice to Bob. Each path (subflow) is a standard TCP connection.

The purpose of the different protocol operations (defined in RFC 6824) are:

  • to handle when and how to add/remove paths (for instance if there's a connection lost of some congestion control)
  • to be compatible with legacy TCP hardware (such as some firewalls that can automatically reject TCP connections if the sequence number aren't successive)
  • to define a fair congestion control strategy between the different links and the different hosts (especially with those that doesn't support MPTCP)
Example of a full MPTCP session

Multipath TCP adds new mechanisms to TCP transmissions:

  • The subflow system, used to gather multiple standard TCP connections (the paths from one host to another). Subflows are identified during the TCP three-way handshake. After the handshake, an application can add or remove some subflows (message subtypes 0x3 and 0x4).
  • The MPTCP option field contains a data sequence number and an acknowledgement number. These allow receiving data from multiple subflows in the original order, without any corruption (message subtype 0x2)
  • A modified retransmission protocol handles congestion control and reliability.

Congestion control[edit]

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 RFC6356
  • The Opportunistic Linked Increase Algorithm[20]
  • The wVegas delay based congestion control algorithm
  • The Balanced Linked Increase Algorithm [21]


Stream Control Transmission Protocol[edit]

Stream Control Transmission Protocol (SCTP) 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.[22]

IMS SIP[edit]

Within the IP Multimedia Subsystem (IMS) architecture, Session Initiation Protocol (SIP) 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 (SDP) messaging to negotiate media streams. SDP allows for the (re-)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 (RTP) is currently under discussion within the IETF. Multipath RTP can offer flow granularity with concurrent access and mobility (via IMS, SDP signaling or the RTP control protocol).[22]

Other protocols and experiments[edit]

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.[23]

Parallel access schemes[22] 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 6181 - Threat Analysis for TCP Extensions for Multipath Operation with Multiple Addresses
  • RFC 6182 - Architectural Guidelines for Multipath TCP Development
  • RFC 6356 - Coupled Congestion Control for Multipath Transport Protocols
  • RFC 6824 - TCP Extensions for Multipath Operation with Multiple Addresses
  • RFC 6897 - Multipath TCP (MPTCP) Application Interface Considerations
  • RFC 7430 - Analysis of Residual Threats and Possible Fixes for Multipath TCP (MPTCP)

See also[edit]


  1. ^ Multipath TCP working group
  2. ^ Paasch, Christoph; Detal, Gregory; Duchene, Fabien; Raiciu, Costin; Bonaventure, Olivier (2012). "Proceedings of the 2012 ACM SIGCOMM workshop on Cellular networks: Operations, challenges, and future design - Cell Net '12": 31. doi:10.1145/2342468.2342476. ISBN 9781450314756.  |chapter= ignored (help)
  3. ^ TCP with feed-forward source coding for wireless downlink networks
  4. ^ Raiciu; Barre; Pluntke; Greenhalgh; Wischik; Handley (2011). "Improving datacenter performance and robustness with multipath TCP". Sigcomm. 
  5. ^ C. Paasch; G. Detal; S. Barré; F. Duchêne; O. Bonaventure. "The fastest TCP connection with Multipath TCP". Retrieved 2013-09-20. 
  6. ^ a b c "The Linux kernel MultiPath TCP project". Retrieved 2014-11-28. 
  7. ^ "Survey of MPTCP Implementations (Internet-Draft, 2013)". Retrieved 2013-09-20. 
  8. ^ Barre; Paasch; Bonaventure (2011). "MultiPath TCP: From Theory to Practice". IFIP Networking. 
  9. ^ Raiciu; Paasch; Barre; Ford; Honda; Duchene; Bonaventure; Handley (2012). "How Hard Can It Be? Designing and Implementing a Deployable Multipath TCP". USENIX NSDI. 
  10. ^ "Multipath TCP for FreeBSD v0.1". Retrieved 2013-09-23. 
  11. ^ "Release Note: BIG-IP LTM and TMOS 11.5.0". f5 Networks. 2014-05-30. Retrieved 2014-05-30. 
  12. ^ John Gudmundson (2013-05-28). "Maximize mobile user experience with NetScaler Multipath TCP". Citrix. Retrieved 2013-09-20. 
  13. ^ "Apple seems to also believe in Multipath TCP". Retrieved 2013-09-20. 
  14. ^ "MPTCP ROAMS FREE (BY DEFAULT!) – OS X YOSEMITE". Retrieved 2015-09-16. 
  15. ^ Rao, Shoaib. "Some comments on RFC 6824". Retrieved 25 June 2015. 
  16. ^ (PDF)  Missing or empty |title= (help)
  17. ^ "IANA Protocol Registry TCP Option Kind Numbers". Retrieved 2013-09-24. 
  18. ^ Paasch, Christoph; Bonaventure, Olivier (April 2014). "Multipath TCP". Communications of the ACM 57 (4): 51–57. doi:10.1145/2578901. 
  19. ^ Raiciu, Costin; Iyengar, Janardhan; Bonaventure, Olivier (2013). Haddadi, Hamed; Bonaventure, Olivier, eds. Recent Advances in Reliable Transport Protocols. ACM SIGCOMM. 
  20. ^ Khalili, Ramin; Gast, Nicolas; Popovic, Miroslav; Upadhyay, Utkarsh; Le Boudec, Jean-Yves (2012). "Proceedings of the 8th international conference on Emerging networking experiments and technologies - CoNEXT '12": 1. doi:10.1145/2413176.2413178. ISBN 9781450317757.  |chapter= ignored (help)
  21. ^ Peng, Qiuyu; Walid, Anwar; Hwang, Jaehyun; Low, Steven H. (2013). "Multipath TCP: Analysis, Design and Implementation". arXiv:1308.3119. 
  22. ^ a b c P. Rodriguez; E. Biersack (2002-07-01). "Dynamic parallel access to replicated content in the Internet" (PDF). IEEE/ACM Transactions on Networking. 
  23. ^ R. Chakravorty; I. Pratt; P. Rodriguez (2003-07-01). "Mobile Access Router". University of Cambridge, Microsoft Research. 

External links[edit]