At present days, most of network devices, consumer electronic devices have multiple network interfaces. Like mobile phones have wifi, 2G, 3G, bluetooth, server systems have multiple NICs, wireless adapters. In normal way at transport layer, traditional TCP protocol cannot use all available network interfaces simultaneously. It can use any one of network interface of system at a time and will create point-to-point reliable communication channel between two host machines.
Is it possible to overcome this and to provide an alternative multipath mechanism as reliable as TCP's properties? The answer is Multipath TCP (MPTCP).
Other mechanisms for multi path transmissions are NIC or Channel bonding, MCTCP (Multi Connection TCP), CMT-SCTP (Concurrent Multipath Transfer for SCTP), R-MTP (Reliable Multiplexing Transport Protocol), etc. But if we see in real world practical scenario, NIC bonding and MPTCP are more attractive because of their availability, usage and advantages.
MPTCP is an extension to the existing TCP protocol at transport layer. It will receive application data via normal socket interfaces as TCP and divide the data stream into multiple TCP subflows. Here, each subflow is considered as normal TCP path. Then the data will pass through IP, link and physical layer as normal TCP flow and use three way handshake for initial connection establishment with MPTCP specific options.
Currently, MPTCP standardisation takes momentum at IETF (Internet Engineering Task Force), IETF RFCs (Request for Comments) 6824,6181,6182,6365 and 6897 describes MPTCP details.
In more in-depth view, MPTCP is better than NIC bonding in the following ways,
- MPTCP is able to move traffic away from more congested path to less congested path, but NIC-bonding cannot do this.
- Easy to implement congestion control algorithms at transport layer rather than at link layer.
- MPTCP can send packets via any available network interfaces like wireless, wired or USB
The simple MPTCP protocol architecture is as follows,
Figure.1. MPTCP architecture
MPTCP will be used in point to point or point to multi point connection environment. For example, mobile devices can send data via both 3G and WiFi interfaces to the other mobile devices; consideration is both should have MPTCP enabled. Like, in data center, the servers can use more than one NICs and wireless interfaces simultaneously for data transfer, WiFi offloading is another use case scenario.
Following is an example data center scenario,
Figure.2. Data center scenario using MPTCP
In the above figure, the application data will be divided into three separate TCP subflows by MPTCP and will be sent via all available three network interfaces of the server 1 to the destination server 2. Suppose, if each interface has support of 1Gbps speed and channels also supports that speed, then using the MPTCP the user will get approximately 3Gbps throughput between two servers, which is an aggregation individual interface throughput.
If suppose normal TCP protocol used, then the data will be sent via one network interface only, existing TCP protocol won’t use all available network interfaces simultaneously. Here, MPTCP will be more useful because of using all available network interfaces simultaneously to send and receive data.
So, is it interesting? Is anyone doesn’t want to get higher data throughput by using new protocols like MPTCP with available network resources?
Currently MPTCP is in IETF exploration mode, in future it will be accepted by IESG (Internet Engineering Steering Group) and will be standardised just like TCP.