Design, implementation and evaluation of congestion control for multipath TCP

Damon Wischik, Costin Raiciu, Adam Greenhalgh, and Mark Handley.
NSDI 2011 [preprint pdf] [slides pptx] [slides pdf]. Winner of Best Publication award (two awarded).
More mathematical draft [pdf].
Related talk

Abstract.

Multipath TCP, as proposed by the IETF working group mptcp, allows a single data stream to be split across multiple paths. This has obvious benefits for reliability, and it can also lead to more efficient use of networked resources. We describe the design of a multipath congestion control algorithm, we implement it in Linux, and we evaluate it for multihomed servers, data centers and mobile clients. We show that some 'obvious' solutions for multipath congestion control can be harmful, but that our algorithm improves throughput and fairness compared to single-path TCP. Our algorithm is a drop-in replacement for TCP, and we believe it is safe to deploy.
If there are enough flows that are multipath-capable in the Internet, and if they shift themselves away from congestion, then the Internet will become more resilient against flash crowds.

In this picture, when the red flow of traffic suddenly increases, there is a knock-on effect on the other flows. The end result is that the 'pain' of the flash crowd is shared over all three other users, rather than hitting just the unlucky green user.

In this network with four links, the simple strategy of running TCP separately on each subflow results in the overall throughputs shown on the left. Whereas a more cunning allocation of bandwidth can achieve a fairer outcome, shown on the right. Our MPTCP congestion control algorithm achieves roughly the outcome shown on the right.

An interesting way to think of the outcome is that the total capacity of (5+12+10+3)=30Mb/s ends up being shared fairly between the three flows, as if the networks capacity was all amalgamated into a single link. This is what is meant by resource pooling. We believe that MPTCP will help the Internet as a whole achieve resource pooling.

These plots show window sizes, for a simulation of multipath TCP flow running over two paths. In the left hand plots, the two paths have equal loss rate (p1=p2=0.05%). In the right hand plots, the two paths have unequal loss rates (p1=0.02%, p2=0.05%). The plots show window size on path 1 on the horizontal axis, and window size on path 2 on the vertical axis.

In the bottom diagrams, we simulate two independent copies of TCP on the two paths: then, no matter how uncongested link 1 is, the flow sends just as much traffic on link 2. In the top diagrams, we simulate a coupled congestion controler, which links window increases and decreases between the two subflows: then, when the links are equally congested it flaps between the two paths, and when one link is better then it shifts all traffic onto the better link.

Is it possible to get the traffic-shifting capability of the fully coupled controller, while retaining the stability of uncoupled TCPs?