mptcp
DESCRIPTION
mptcpTRANSCRIPT
![Page 1: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/1.jpg)
Multipath TCPCostin Raiciu
University Politehnica of Bucharest
Joint work with: Mark Handley, Damon Wischik, University College LondonOlivier Bonaventure, Sébastien Barré, Université catholique de Louvain and many many others
Christoph PaaschUniversité catholique de Louvain
Thanks to
![Page 2: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/2.jpg)
Networks are becoming multipath
Mobile devices have multiple wireless connections
![Page 3: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/3.jpg)
Networks are becoming multipath
![Page 4: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/4.jpg)
Networks are becoming multipath
![Page 5: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/5.jpg)
Networks are becoming multipath
Datacenters have redundant topologies
![Page 6: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/6.jpg)
Networks are becoming multipath
Servers are multi-homed
Client
![Page 7: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/7.jpg)
How do we use these networks?TCP.
Used by most applications, offers byte-oriented reliable delivery,adjusts load to network conditions
[Labovits et al – Internet Interdomain traffic – Sigcomm 2010]
![Page 8: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/8.jpg)
TCP is single path
A TCP connection Uses a single-path in the network regardless of network topology
Is tied to the source and destination addresses of the endpoints
![Page 9: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/9.jpg)
Mismatch between network and transport
creates problems
![Page 10: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/10.jpg)
Poor Performance for Mobile Users
3G celltower
![Page 11: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/11.jpg)
Poor Performance for Mobile Users
3G celltower
![Page 12: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/12.jpg)
Poor Performance for Mobile Users
3G celltower
![Page 13: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/13.jpg)
Poor Performance for Mobile Users
3G celltower
Offload to WiFi
![Page 14: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/14.jpg)
Poor Performance for Mobile Users
3G celltower
All ongoing TCP connections die
![Page 15: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/15.jpg)
Collisions in datacenters
[Fares et al - A Scalable, Commodity Data Center Network Architecture - Sigcomm 2008]
![Page 16: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/16.jpg)
Single-path TCP collisions reduce throughput
[Raiciu et. Al – Sigcomm 2011]
![Page 17: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/17.jpg)
Multipath TCP
![Page 18: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/18.jpg)
Multipath TCP (MPTCP) is an evolution of TCP that can effectively use multiple paths within a single transport connection
• Supports unmodified applications
• Works over today’s networks
• Standardized at the IETF (almost there)
![Page 19: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/19.jpg)
Multipath TCP components
Connection setupSending data over multiple pathsEncoding control informationDealing with (many) middleboxesCongestion control
[Raiciu et. al – NSDI 2012]
[Wischik et. al – NSDI 2011]
![Page 20: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/20.jpg)
Multipath TCP components
Connection setupSending data over multiple pathsEncoding control informationDealing with (many) middleboxesCongestion control
[Raiciu et. al – NSDI 2012]
[Wischik et. al – NSDI 2011]
![Page 21: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/21.jpg)
MPTCP Connection Management
SYN
MP_CAPABLE X
![Page 22: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/22.jpg)
MPTCP Connection Management
SYN/ACK MP_CAPABLE Y
![Page 23: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/23.jpg)
MPTCP Connection ManagementSUBFLOW 1CWNDSnd.SEQNORcv.SEQNO
FLOW Y
![Page 24: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/24.jpg)
MPTCP Connection Management
SYN JOIN Y
SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO
FLOW Y
![Page 25: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/25.jpg)
MPTCP Connection Management
SYN/ACK
JOIN X
SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO
FLOW Y
![Page 26: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/26.jpg)
MPTCP Connection Management
SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO
SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO
FLOW Y
![Page 27: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/27.jpg)
TCP Packet Header
Source Port Destination Port
Sequence Number
Acknowledgment Number
Receive WindowHeaderLength Reserved Code bits
Checksum
Options
Urgent Pointer
Data
Bit 0 Bit 15 Bit 16 Bit 31
20Bytes
0 - 40Bytes
![Page 28: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/28.jpg)
TCP Packet Header
Source Port Destination Port
Sequence Number
Acknowledgment Number
Receive WindowHeaderLength Reserved Code bits
Checksum
Options
Urgent Pointer
Data
Bit 0 Bit 15 Bit 16 Bit 31
20Bytes
0 - 40Bytes
![Page 29: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/29.jpg)
Sequence Numbers
Packets go multiple paths.– Need sequence numbers to put them back in sequence.– Need sequence numbers to infer loss on a single path.
Options:– One sequence space shared across all paths?– One sequence space per path, plus an extra one to put
data back in the correct order at the receiver?
![Page 30: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/30.jpg)
Sequence Numbers
• One sequence space per path is preferable.– Loss inference is more reliable.– Some firewalls/proxies expect to see all the sequence
numbers on a path.
• Outer TCP header holds subflow sequence numbers.– Where do we put the data sequence numbers?
![Page 31: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/31.jpg)
MPTCP Packet Header
Source Port Destination Port
Sequence Number
Acknowledgment Number
Receive WindowHeaderLength Reserved Code bits
Checksum
Options
Urgent Pointer
Data
Bit 0 Bit 15 Bit 16 Bit 31
20Bytes
0 - 40Bytes
Subflow
Subflow
Subflow Subflow
Data sequence number Data ACK
![Page 32: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/32.jpg)
MPTCP Operation
DATASEQ1000
DSEQ10000
options
……
SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO
SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO
FLOW Y
![Page 33: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/33.jpg)
MPTCP Operation
DATASEQ1000
DSEQ10000
options
……
SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO
SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO
FLOW Y
![Page 34: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/34.jpg)
MPTCP Operation
DATASEQ1000
DSEQ10000
options
……
DATASEQ5000
DSEQ11000
options
……
SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO
SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO
FLOW Y
![Page 35: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/35.jpg)
MPTCP Operation
DATASEQ1000
DSEQ10000
options
……
DATASEQ5000
DSEQ11000
options
……
SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO
SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO
FLOW Y
![Page 36: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/36.jpg)
MPTCP Operation
DATASEQ1000
DSEQ10000
options
……
DATASEQ5000
DSEQ11000
options
……
SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO
SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO
FLOW Y
![Page 37: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/37.jpg)
MPTCP OperationACK2000
Data ACK11000
… …
SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO
SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO
DATASEQ5000
DSEQ11000
options
……
FLOW Y
![Page 38: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/38.jpg)
MPTCP Operation
DATASEQ5000
DSEQ11000
options
……
SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO
SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO
FLOW Y
![Page 39: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/39.jpg)
MPTCP Operation
DATASEQ5000
DSEQ11000
options
……
SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO
SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO
FLOW Y
![Page 40: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/40.jpg)
MPTCP Operation
DATASEQ2000
DSEQ11000
options
……
SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO
SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO
FLOW Y
![Page 41: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/41.jpg)
Multipath TCPCongestion Control
![Page 42: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/42.jpg)
42Packet switching ‘pools’ circuits.Multipath ‘pools’ linksTCP controls how a link is shared.How should a pool be shared?
Two circuits A link Two separate links
A pool of links
![Page 43: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/43.jpg)
To be fair, Multipath TCP should take as much capacity as TCP at a bottleneck link, no matter how many paths it is using.
Design goal 1:Multipath TCP should be fair to regular TCP at shared bottlenecks
To be fair, Multipath TCP should take as much capacity as TCP at a bottleneck link, no matter how many subflows it is using.
A multipath TCP flow with two subflows
Regular TCP
43
![Page 44: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/44.jpg)
To be fair, Multipath TCP should take as much capacity as TCP at a bottleneck link, no matter how many paths it is using.
Design goal 2:MPTCP should use efficient paths
Each flow has a choice of a 1-hop and a 2-hop path. How should split its traffic?
12Mb/s
12Mb/s
12Mb/s
44
![Page 45: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/45.jpg)
To be fair, Multipath TCP should take as much capacity as TCP at a bottleneck link, no matter how many paths it is using.
Design goal 2:MPTCP should use efficient paths
If each flow split its traffic 1:1 ...
8Mb/s
8Mb/s
8Mb/s
12Mb/s
12Mb/s
12Mb/s
45
![Page 46: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/46.jpg)
To be fair, Multipath TCP should take as much capacity as TCP at a bottleneck link, no matter how many paths it is using.
Design goal 2:MPTCP should use efficient paths
If each flow split its traffic 2:1 ...
9Mb/s
9Mb/s
9Mb/s
12Mb/s
12Mb/s
12Mb/s
46
![Page 47: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/47.jpg)
To be fair, Multipath TCP should take as much capacity as TCP at a bottleneck link, no matter how many paths it is using.
Design goal 2:MPTCP should use efficient paths
• If each flow split its traffic 4:1 ...
10Mb/s
10Mb/s
10Mb/s
12Mb/s
12Mb/s
12Mb/s
47
![Page 48: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/48.jpg)
To be fair, Multipath TCP should take as much capacity as TCP at a bottleneck link, no matter how many paths it is using.
Design goal 2:MPTCP should use efficient paths
• If each flow split its traffic ∞:1 ...
12Mb/s
12Mb/s
12Mb/s
12Mb/s
12Mb/s
12Mb/s
48
![Page 49: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/49.jpg)
To be fair, Multipath TCP should take as much capacity as TCP at a bottleneck link, no matter how many paths it is using.
Design goal 3:MPTCP should get at least as much as TCP on the best path
Design Goal 2 says to send all your traffic on the least congested path, in this case 3G. But this has high RTT, hence it will give low throughput.
wifi path: high loss, small RTT
3G path: low loss, high RTT
49
![Page 50: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/50.jpg)
Maintain a congestion window w.
Increase w for each ACK, by 1/w
Decrease w for each drop, by w/2
How does TCP congestion control work?50
![Page 51: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/51.jpg)
Maintain a congestion window wr, one window for each path, where r ∊ R ranges over the set of available paths.
Increase wr for each ACK on path r, by
Decrease wr for each drop on path r, by wr /2
51
How does MPTCP congestion control work?
€
αwr
r
∑
![Page 52: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/52.jpg)
Maintain a congestion window wr, one window for each path, where r ∊ R ranges over the set of available paths.
Increase wr for each ACK on path r, by
Decrease wr for each drop on path r, by wr /2
52
How does MPTCP congestion control work?
€
αwr
r
∑Goal 2
![Page 53: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/53.jpg)
Maintain a congestion window wr, one window for each path, where r ∊ R ranges over the set of available paths.
Increase wr for each ACK on path r, by
Decrease wr for each drop on path r, by wr /2
53
How does MPTCP congestion control work?
€
αwr
r
∑Goals 1&3
![Page 54: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/54.jpg)
Maintain a congestion window wr, one window for each path, where r ∊ R ranges over the set of available paths.
Increase wr for each ACK on path r, by
Decrease wr for each drop on path r, by wr /2
54
How does MPTCP congestion control work?
![Page 55: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/55.jpg)
Applications of Multipath TCP
![Page 56: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/56.jpg)
At a multihomed web server, MPTCP tries to share the ‘pooled access capacity’ fairly.
56
100Mb/s
100Mb/s
2 TCPs @ 50Mb/s
4 TCPs@ 25Mb/s
![Page 57: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/57.jpg)
At a multihomed web server, MPTCP tries to share the ‘pooled access capacity’ fairly.
57
100Mb/s
100Mb/s
2 TCPs @ 33Mb/s
1 MPTCP @ 33Mb/s
4 TCPs@ 25Mb/s
![Page 58: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/58.jpg)
At a multihomed web server, MPTCP tries to share the ‘pooled access capacity’ fairly.
58
100Mb/s
100Mb/s
2 TCPs @ 25Mb/s
2 MPTCPs @ 25Mb/s
4 TCPs@ 25Mb/s
The total capacity, 200Mb/s, is shared out evenly between all 8 flows.
![Page 59: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/59.jpg)
At a multihomed web server, MPTCP tries to share the ‘pooled access capacity’ fairly.
59
100Mb/s
100Mb/s
2 TCPs @ 22Mb/s
3 MPTCPs @ 22Mb/s
4 TCPs@ 22Mb/s
The total capacity, 200Mb/s, is shared out evenly between all 9 flows.
It’s as if they were all sharing a single 200Mb/s link. The two links can be said to form a 200Mb/s pool.
![Page 60: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/60.jpg)
At a multihomed web server, MPTCP tries to share the ‘pooled access capacity’ fairly.
60
100Mb/s
100Mb/s
2 TCPs @ 20Mb/s
4 MPTCPs @ 20Mb/s
4 TCPs@ 20Mb/s
The total capacity, 200Mb/s, is shared out evenly between all 10 flows.
It’s as if they were all sharing a single 200Mb/s link. The two links can be said to form a 200Mb/s pool.
![Page 61: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/61.jpg)
At a multihomed web server, MPTCP tries to share the ‘pooled access capacity’ fairly.
61
100Mb/s
100Mb/s
5 TCPs
First 0, then 10 MPTCPs
15 TCPs
time [min]
throughput per flow [Mb/s]
We confirmed in experiments that MPTCP nearly manages to pool the capacity of the two access links.Setup: two 100Mb/s access links, 10ms delay, first 20 flows, then 30.
![Page 62: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/62.jpg)
At a multihomed web server, MPTCP tries to share the ‘pooled access capacity’ fairly.
62
100Mb/s
100Mb/s
5 TCPs
First 0, then 10 MPTCPs
15 TCPs
MPTCP makes a collection of links behave like a single large pool of capacity —i.e. if the total capacity is C, and there are n flows, each flow gets throughput C/n.
![Page 63: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/63.jpg)
Multipath TCP can pool datacenter networks
Instead of using one path for each flow, use many random paths
Don’t worry about collisions.
Just don’t send (much) traffic on colliding paths
![Page 64: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/64.jpg)
Multipath TCP in data centers
![Page 65: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/65.jpg)
Multipath TCP in data centers
![Page 66: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/66.jpg)
MPTCP better utilizes the FatTree network
![Page 67: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/67.jpg)
MPTCP on EC2
• Amazon EC2: infrastructure as a service– We can borrow virtual machines by the hour– These run in Amazon data centers worldwide– We can boot our own kernel
• A few availability zones have multipath topologies– 2-8 paths available between hosts not on the same
machine or in the same rack– Available via ECMP
![Page 68: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/68.jpg)
Amazon EC2 Experiment
• 40 medium CPU instances running MPTCP• For 12 hours, we sequentially ran all-to-all
iperf cycling through:– TCP– MPTCP (2 and 4 subflows)
![Page 69: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/69.jpg)
MPTCP improves performance on EC2
SameRack
![Page 70: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/70.jpg)
Implementing Multipath TCP
in the Linux Kernel
![Page 71: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/71.jpg)
Linux Kernel MPTCP About 10000 lines of code in the Linux Kernel Initially started by Sébastien Barré Now, 3 actively working on Linux Kernel MPTCP
Christoph Paasch Fabien Duchêne Gregory Detal
Freely available at http://mptcp.info.ucl.ac.be
![Page 72: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/72.jpg)
MPTCP-session creation
![Page 73: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/73.jpg)
Application creates regular TCP-sockets
![Page 74: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/74.jpg)
MPTCP-session creation
![Page 75: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/75.jpg)
The Kernel creates the Meta-socket
![Page 76: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/76.jpg)
MPTCP creating new subflows
![Page 77: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/77.jpg)
The Kernel handles the different MPTCP subflows
![Page 78: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/78.jpg)
MPTCP Performance with apache
100 simultaneous HTTP-Requests, total of 100000
![Page 79: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/79.jpg)
MPTCP Performance with apache
100 simultaneous HTTP-Requests, total of 100000
![Page 80: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/80.jpg)
MPTCP Performance with apache
100 simultaneous HTTP-Requests, total of 100000
![Page 81: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/81.jpg)
MPTCP on multicore architectures Flow-to-core affinity steers all packets from one TCP-flow to
the same core. MPTCP has lots of L1/L2 cache-misses because the individual
subflows are steered to different CPU-cores
![Page 82: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/82.jpg)
MPTCP on multicore architectures
![Page 83: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/83.jpg)
MPTCP on multicore architectures Solution: Send all packets from the same MPTCP-session to the
same CPU-core Based on Receive-Flow-Steering implementation in Linux
(Author: Tom Herbert from Google)
![Page 84: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/84.jpg)
MPTCP on multicore architectures
![Page 85: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/85.jpg)
Multipath TCP on
Mobile Devices
![Page 86: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/86.jpg)
MPTCP over WiFi/3G
![Page 87: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/87.jpg)
TCP over WiFi/3G
![Page 88: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/88.jpg)
MPTCP over WiFi/3G
![Page 89: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/89.jpg)
MPTCP over WiFi/3G
![Page 90: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/90.jpg)
MPTCP over WiFi/3G
![Page 91: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/91.jpg)
MPTCP over WiFi/3G
![Page 92: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/92.jpg)
MPTCP over WiFi/3G
![Page 93: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/93.jpg)
MPTCP over WiFi/3G
![Page 94: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/94.jpg)
MPTCP over WiFi/3G
![Page 95: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/95.jpg)
WiFi to 3G handover with Multipath TCP
A mobile node may lose its WiFi connection.
Regular TCP will break!
Some applications support recovering from a broken TCP (HTTP-Header Range)
Thanks to the REMOVE_ADDR-option, MPTCP is able to handle this without the need for application support.
![Page 96: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/96.jpg)
WiFi to 3G handover with Multipath TCP
![Page 97: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/97.jpg)
WiFi to 3G handover with Multipath TCP
![Page 98: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/98.jpg)
WiFi to 3G handover with Multipath TCP
![Page 99: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/99.jpg)
WiFi to 3G handover with Multipath TCP
![Page 100: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/100.jpg)
WiFi to 3G handover with Multipath TCP
![Page 101: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/101.jpg)
WiFi to 3G handover with Multipath TCP
![Page 102: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/102.jpg)
WiFi to 3G handover with Multipath TCP
![Page 103: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/103.jpg)
Related Work
Multipath TCP has been proposed many times before– First by Huitema (1995),CMT, pTCP, M-TCP, …
You can solve mobility differently– At different layer: Mobile IP, HTTP range – At transport layer: Migrate TCP, SCTP
You can deal with datacenter collisions differently– Hedera (Openflow + centralized scheduling)
![Page 104: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/104.jpg)
Multipath topologies need multipath transport
Multipath TCP can be usedby unchanged applicationsover today’s networks
MPTCP moves traffic away from congestion,making a collection of links behave like asingle pooled resource
![Page 105: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/105.jpg)
Backup Slides
![Page 106: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/106.jpg)
Packet-level ECMP in datacenters
![Page 107: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/107.jpg)
Maintain a congestion window wr, one window for each path, where r ∊ R ranges over the set of available paths.
Increase wr for each ACK on path r, by
Decrease wr for each drop on path r, by wr /2
107
How does MPTCP congestion control work?
Design goals 1&3:At any potential bottleneck S that path r might be in,look at the best that a single-path TCP could get,and compare to what I’m getting.
![Page 108: mptcp](https://reader036.vdocument.in/reader036/viewer/2022062714/55cf8eef550346703b972bcd/html5/thumbnails/108.jpg)
Maintain a congestion window wr, one window for each path, where r ∊ R ranges over the set of available paths.
Increase wr for each ACK on path r, by
Decrease wr for each drop on path r, by wr /2
108
How does MPTCP congestion control work?
Design goal 2:We want to shift traffic away from congestion.
To achieve this, we increase windows in proportion to their size.