MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo

MultiPath TCP: From Theory to Practice

S´ebastienBarr´e Christoph Paasch Olivier Bonaventure

9 mai 2011

http ://inl.info.ucl.ac.be/mptcp/

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 1 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP

Mobile devices can connect to the Internet via different interfaces 3G

Internet

WiFi Data-centers have a large redundant infrastructure

Dual-Homed Servers

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 2 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP

Mobile devices can connect to the Internet via different interfaces 3G

Internet

WiFi Data-centers have a large redundant infrastructure

Dual-Homed Servers

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 2 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP

State of the Art TCP is used for 95% of the Internet communications A single TCP connection cannot be used across different interfaces.

MultiPath TCP (short MPTCP) MPTCP allows a single data-connection to use several interfaces simultaneously. Allows failover from one interface to another (e.g., mobile client). Increases the bandwidth due to resource pooling.

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 3 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo

MultiPath TCP : From Theory To Practice S. Barr´e,C. Paasch, O. Bonaventure

We implemented MultiPath TCP in the Linux Kernel. Solved several design challenges that needed to be considered. Evaluated and measured the impact of our design choices in a testbed. Live-Demo of MPTCP at the end of this presentation.

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 4 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Architecture - From Theory

Application Layer

standard Socket API

Transport Layer

MultiPath TCP

TCP TCP TCP subflow subflow subflow

Network Layer

WiFi Wired 3G

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 5 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Architecture - To Practice

Sending packets over MultiPath TCP

Application Layer

standard Socket API

Transport Layer

Meta-socket MultiPath TCP send-queue

Master Slave Slave subsocket subsocket subsocket TCP TCP TCP subflow subflow subflow

Network Layer

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 6 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Architecture - To Practice

Sending packets over MultiPath TCP

Application Layer

standard Socket API

Transport Layer

Meta-socket MultiPath TCP send-queue

MultiPath TCP Scheduler

Master Slave Slave subsocket subsocket subsocket TCP TCP TCP subflow subflow subflow

Network Layer

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 7 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Architecture - To Practice

Receiving packets over MultiPath TCP Packets can be reordered at the data-level due to delay-differences.

out-of-order queue 8 7 6 5 4 M low-delay path M subflow 1 subflow 1 P P T T C subflow 2 subflow 2 C P high-delay path P 3 2 1 receive-queue

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 8 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Architecture - To Practice

Receiving packets over MultiPath TCP A loss at the subflow-level (or network-reordering) can also cause reordering at the subflow-level

dropped packet out-of-order queue 9 10 8 7 6 5 4 M low-delay path M subflow 1 subflow 1 P P T T C subflow 2 subflow 2 C P high-delay path P 3 2 1 receive-queue

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 9 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Architecture - To Practice

Receiving packets over MultiPath TCP Subflow-level out-of-order queues are necessary to handle the retransmission at the subflow-level

retransmitted packet subflow out-of-order queue 8 out-of-order queue 7 6 5 4 10 9 M low-delay path M subflow 1 subflow 1 P P T T C subflow 2 subflow 2 C P high-delay path P 3 2 1 receive-queue

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 10 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Architecture - To Practice

Receiving packets over MultiPath TCP

Application Layer

standard Socket API

Transport Layer

Meta-socket MultiPath TCP send-queue receive-queue ofo-queue

Master Slave Slave subsocket subsocket subsocket TCP TCP TCP subflow subflow subflow ofo-queue ofo-queue ofo-queue

Network Layer

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 11 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Architecture - To Practice

Interconnected testbed with two separate paths at 1Gbps

2000

1500

1Gbps 1000

1Gbps iperf goodput (Mbps ) 500

0 1000 2000 3000 4000 5000 6000 7000 8000 9000 MSS (bytes )

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 12 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Architecture - To Practice

regular TCP can only use one single path

2000

1500

1Gbps regular TCP 1000

1Gbps iperf goodput (Mbps ) 500

regular TCP 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 MSS (bytes )

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 12 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Architecture - To Practice

MultiPath TCP uses both paths simultaneously

2000

1500

1Gbps MPTCP 1000

1Gbps iperf goodput (Mbps ) 500

regular TCP MultiPath TCP 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 MSS (bytes )

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 12 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Receive-Buffer - From Theory

Regular TCP : receive-buffer should be twice the BDP Support a fast-retransmit Support network-level reordering MultiPath TCP : Higher reordering possible due to delay-differences of the paths. out-of-order queue 8 7 6 5 4 M low-delay path M subflow 1 subflow 1 P P T T C subflow 2 subflow 2 C P high-delay path P 3 2 1 receive-queue

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 13 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Receive-Buffer - To Practice

⇒A subflow on a slow path (high RTT) may block a subflow on a fast path from transmitting.

RTTmax

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 14 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Receive-Buffer - To Practice

⇒A subflow on a slow path (high RTT) may block a subflow on a fast path from transmitting.

⇒We need to cope with one fast-retransmit and network-level reordering on this slow path

RTTmax ∗ 2

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 14 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Receive-Buffer - To Practice

⇒A subflow on a slow path (high RTT) may block a subflow on a fast path from transmitting.

⇒We need to cope with one fast-retransmit and network-level reordering on this slow path

⇒During this time, all other subflows should be able to transmit at full speed (BWi = bandwidth of subflow i)

X RTTmax ∗ 2 ∗ BWi i∈subflows

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 14 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Receive-Buffer - To Practice

Regular TCP only gets 100Mbps of goodput

200

180

160

100Mbps 140 regular TCP 120

100 100Mbps

+ 0ms iperf goodput (Mbps ) 80

60 TCP (0 ms ec) 40 2 4 6 8 10 12 14 16 rcvbuf (MB)

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 15 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Receive-Buffer - To Practice

MultiPath TCP doubles the goodput

200

180

160

100Mbps 140 MPTCP 120 100 100Mbps

+ 0ms iperf goodput (Mbps ) 80 MPTCP (0 ms ec, 0 ms ec)

60 TCP (0 ms ec) 40 2 4 6 8 10 12 14 16 rcvbuf (MB)

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 15 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Receive-Buffer - To Practice

10ms and 100ms of difference has not a huge influence

200

180

160

100Mbps 140 MPTCP 120 100 100Mbps

+ 10ms iperf goodput (Mbps ) 80 MPTCP (0 ms ec, 0 ms ec) MPTCP (0 ms ec, 10 ms ec) 60 TCP (0 ms ec) 40 2 4 6 8 10 12 14 16 rcvbuf (MB)

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 15 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Receive-Buffer - To Practice

10ms and 100ms of difference has not a huge influence

200

180

160

100Mbps 140 MPTCP 120 100 100Mbps

+ 100ms iperf goodput (Mbps ) 80 MPTCP (0 ms ec, 0 ms ec) MPTCP (0 ms ec, 10 ms ec) 60 MPTCP (0 ms ec, 100 ms ec) TCP (0 ms ec) 40 2 4 6 8 10 12 14 16 rcvbuf (MB)

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 15 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Receive-Buffer - To Practice

500ms of difference affects the goodput significantly

200

180

160

100Mbps 140 MPTCP 120 100 100Mbps

+ 500ms iperf goodput (Mbps ) 80 MPTCP (0 ms ec, 0 ms ec) MPTCP (0 ms ec, 10 ms ec) 60 MPTCP (0 ms ec, 100 ms ec) MPTCP (0 ms ec, 500 ms ec) TCP (0 ms ec) 40 2 4 6 8 10 12 14 16 rcvbuf (MB)

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 15 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Congestion Control

Several subflows will ”eat up” regular TCP

100

80 regular TCP shared Bottleneck 33% 60

66% 40 MPTCP

2 subflows 20 Average Goodput in Mbps TCP MPTCP-Reno 0 1 2 3 Number of MPTCP-Subflows

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 16 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Congestion Control

Our implementation of the Coupled Congestion Control 1 is fair to regular TCP across shared bottlenecks and avoids the paths with congested links.

100

80 regular TCP shared Bottleneck 50% 60

50% 40 MPTCP

2 subflows 20 Average Goodput in Mbps TCP MPTCP-CCC 0 1 2 3 Number of MPTCP-Subflows

1. D. Wischik, C. Raiciu, A. Greenhalgh, M. Handley. ”Design, implementation and evaluation of congestion control for multipath TCP”. NSDI’2011 S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 16 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Live-Demo

Access http ://inl.info.ucl.ac.be/mptcp to download our implementation (source-code, Live-CD,...). Contributions are always welcome ! ! !

Setup for the Live-Demo :

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 17 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Congestion Control - Theory

Coupled Congestion Control 2

For each ack on subflow i :

cwndi = cwndi + min(α/cwndtot , 1/cwndi )

2 cwndi ∗mssi maxi ( 2 ) RTTi α = cwndtot (P cwndi ∗mssi )2 i RTTi

2. D. Wischik, C. Raiciu, A. Greenhalgh, M. Handley. ”Design, implementation and evaluation of congestion control for multipath TCP”. NSDI’2011 S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 17 / 17 MultiPath TCP - Architecture MultiPath TCP - Receive-Buffer MultiPath TCP - Congestion Control MultiPath TCP - Live-Demo MultiPath TCP - Congestion Control - Practice

Congestion Control in the Linux Kernel Limitations : Congestion window is expressed in packets Linux Kernel cannot handle floating point numbers

Coupled Congestion Control implementation Count the number of acknowledged packets per subflow in cwnd cnti . Increase congestion window by one, if cwnd cnti > max(totcwnd /α, 1/cwndi ) Calculate alpha by minimizing the number of divisions and scaling the remaining ones :

cwndmax ∗ scalenum α = cwndtot (P rttmax ∗cwndi ∗scaleden )2 i rtti

S´ebastienBarr´e- Christoph Paasch - Olivier Bonaventure MultiPath TCP: From Theory to Practice 17 / 17