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.
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.
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.
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?