本文将mark下Multipath TCP (MPTCP)相关notes。

Why

Aims at allowing a TCP connection to use multiple paths to maximize throughput and increase redundancy.

Background

Hosts connected to the Internet or within a data center environment are often connected by multiple paths. However, when TCP is used for data transport, communication is restricted to a single network path. It is possible that some paths between the two hosts are congested, whereas alternate paths are underutilized. A more efficient use of network resources is possible if these multiple paths are used concurrently. In addition, the use of multiple connections enhances the user experience, because it provides higher throughput and improved resilience against network failures.
连接到互联网或数据中心环境中的主机通常由多条路径连接。然而,当使用 TCP 进行数据传输时,通信仅限于一条网络路径。两台主机之间的某些路径可能会出现拥塞,而备用路径的利用率却很低。如果同时使用这些多路径,就能更有效地利用网络资源。此外,多连接的使用还能增强用户体验,因为它提供了更高的吞吐量,并提高了对网络故障的恢复能力。

MPTCP is a set of extensions to regular TCP that enables a single data flow to be separated and carried across multiple connections.
MPTCP 是对普通 TCP 的一系列扩展,可将单个数据流分离并在多个连接中传输。

As shown in this diagram, MPTCP is able to separate the 9mbps flow into three different sub-flows on the sender node, which is subsequently aggregated back into the original data flow on the receiving node.
如图所示,MPTCP 能够在发送节点上将 9mbps 的数据流分离成三个不同的子数据流,然后在接收节点上汇总成原始数据流。

The data that enters the MPTCP connection acts exactly as it does through a regular TCP connection; the transmitted data has guaranteed an in-order delivery. Since MPTCP adjusts the network stack and operates within the transport layer, it is used transparently by the application.
进入 MPTCP 连接的数据与通过普通 TCP 连接的数据完全相同;传输的数据保证按顺序传送。由于 MPTCP 调整了网络堆栈并在传输层内运行,因此应用程序可以透明地使用它。

Simplified description

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 10.11.12.13 and 10.11.12.14) and Bob has a computer with an Ethernet interface (with IP address 20.21.22.23).

In standard TCP, the connection should be established between two IP addresses. Each TCP connection is identified by a four-tuple (source and destination addresses and ports). 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.


参考资料:

  1. https://www.wikiwand.com/en/Multipath_TCP
  2. https://datatracker.ietf.org/doc/html/rfc8684
  3. MPTCP and Product Support Overview
  4. An Overview of Multipath TCP