How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath...
Transcript of How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath...
![Page 1: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/1.jpg)
How Hard Can It Be? ���Designing and Implementing a
Deployable Multipath TCP Cos$n Raiciu
University Politehnica of Bucharest
Joint work with: Christoph Paasch, Sebas1en Barre, Alan Ford, Fabien Duchene, Michio Honda, Olivier Bonaventure, Mark Handley
Thanks to
![Page 2: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/2.jpg)
Networks are becoming mul$path
Mobile devices have mul1ple wireless connec1ons
![Page 3: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/3.jpg)
Networks are becoming mul$path
Datacenters have redundant topologies
![Page 4: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/4.jpg)
Networks are becoming mul$path
Datacenters have redundant topologies
![Page 5: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/5.jpg)
Networks are becoming mul$path
Servers are mul1-‐homed
Client
![Page 6: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/6.jpg)
How do we use these networks?
TCP.
Used by most applica$ons,
offers byte-‐oriented reliable delivery,
adjusts load to network condi$ons
![Page 7: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/7.jpg)
TCP is single path
A TCP connec$on Uses a single-‐path in the network regardless of network topology
Is 1ed to the source and des1na1on addresses of the endpoints
![Page 8: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/8.jpg)
Mismatch between network and transport
creates problems
![Page 9: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/9.jpg)
Collisions in datacenters
[Fares et al -‐ A Scalable, Commodity Data Center Network Architecture -‐ Sigcomm 2008]
![Page 10: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/10.jpg)
How hard can it be?
Designing and
Implementing a
Deployable Multipath TCP
![Page 11: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/11.jpg)
Deployable Multipath TCP
How hard can it be?
Designing
Implementing
![Page 12: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/12.jpg)
Deployable Multipath TCP
How hard can it be?
Designing
Implementing
![Page 13: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/13.jpg)
Goal: A Deployable Multipath TCP
We want to evolve TCP to be able to use mul2ple paths in the network.
Mul$path TCP must meet the following goals:
GOAL 1: Support unmodified applica.ons
GOAL 2: Work over today’s networks
GOAL 3: Work whenever TCP would work
![Page 14: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/14.jpg)
Our Linux kernel Mul.path TCP implementa.on supports legacy apps
and works well over:
deployed 3G and Wifi networks,
exis1ng datacenters and
the Internet at large.
![Page 15: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/15.jpg)
Deployable Multipath TCP
How hard can it be?
Designing
Implementing
![Page 16: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/16.jpg)
It can be preTy hard.
![Page 17: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/17.jpg)
It can be preTy hard.
Mark Handley suggested we start working on designing MPTCP in spring 2007
![Page 18: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/18.jpg)
It can be preTy hard.
Mark Handley suggested we start working on designing MPTCP in spring 2007
Five years later, here we are –
we finally nailed this!
![Page 19: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/19.jpg)
It can be preTy hard.
Mark Handley suggested we start working on designing MPTCP in spring 2007
Five years later, here we are –
we finally nailed this!
Why was it this difficult?
Internet Architecture is a living thing.
![Page 20: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/20.jpg)
Protocol Layering
IP IP IP IP
TCP TCP
HTTP HTTP
Ethernet Modem Ethernet ATM ATM Modem
Web Server
Internet Router
Internet Router
Web Client
• Link layers (eg Ethernet) are local to a particular link • Routers look at IP headers to decide how to route a packet. • TCP provides reliability via retransmission, flow control, etc. • Application using OS’s TCP API to do its job.
Fiction!
![Page 21: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/21.jpg)
Middleboxes
![Page 22: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/22.jpg)
Source Port Destination Port
Sequence Number
Acknowledgment Number
Receive Window Header Length Reserved Code bits
Checksum
Options
Urgent Pointer
Data
Bit 0 Bit 15 Bit 16 Bit 31
20 Bytes
0 - 40 Bytes
Destination IP
Source IP
TTL Header Checksum Protocol
Identification Fragment Offset Flags
IHL Version TOS Total Length ECN
![Page 23: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/23.jpg)
Source Port Destination Port
Sequence Number
Acknowledgment Number
Receive Window Header Length Reserved Code bits
Checksum
Options
Urgent Pointer
Data
Bit 0 Bit 15 Bit 16 Bit 31
20 Bytes
0 - 40 Bytes
Destination IP
Source IP
TTL Header Checksum Protocol
Identification Fragment Offset Flags
IHL Version TOS Total Length ECN
![Page 24: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/24.jpg)
Source Port Destination Port
Sequence Number
Acknowledgment Number
Receive Window Header Length Reserved Code bits
Checksum
Options
Urgent Pointer
Data
Bit 0 Bit 15 Bit 16 Bit 31
20 Bytes
0 - 40 Bytes
Destination IP
Source IP
TTL Header Checksum Protocol
Identification Fragment Offset Flags
IHL Version TOS Total Length ECN
![Page 25: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/25.jpg)
Source Port Destination Port
Sequence Number
Acknowledgment Number
Receive Window Header Length Reserved Code bits
Checksum
Options
Urgent Pointer
Data
Bit 0 Bit 15 Bit 16 Bit 31
20 Bytes
0 - 40 Bytes
Destination IP
Source IP
TTL Header Checksum Protocol
Identification Fragment Offset Flags
IHL Version TOS Total Length ECN
![Page 26: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/26.jpg)
Source Port Destination Port
Sequence Number
Acknowledgment Number
Receive Window Header Length Reserved Code bits
Checksum
Options
Urgent Pointer
Data
Bit 0 Bit 15 Bit 16 Bit 31
20 Bytes
0 - 40 Bytes
Destination IP
Source IP
TTL Header Checksum Protocol
Identification Fragment Offset Flags
IHL Version TOS Total Length ECN
![Page 27: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/27.jpg)
Deployable Multipath TCP
How hard can it be?
Designing
Implementing
![Page 28: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/28.jpg)
MPTCP Connec$on Management
![Page 29: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/29.jpg)
MPTCP Connec$on Management
SYN
MP_CAPABLE
![Page 30: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/30.jpg)
MPTCP Connec$on Management
SYN
MP_CAPABLE
Enable MPTCP if SYN has MP_CAPABLE
![Page 31: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/31.jpg)
MPTCP Connec$on Management
SYN/ACK MP_CAPABLE
Enable MPTCP if SYN has MP_CAPABLE
ENABLED
![Page 32: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/32.jpg)
MPTCP Connec$on Management
SYN/ACK MP_CAPABLE
Enable MPTCP if SYN has MP_CAPABLE
ENABLED
Enable MPTCP if SYN/ACK has MP_CAPABLE
![Page 33: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/33.jpg)
MPTCP Connec$on Management
Enable MPTCP if SYN/ACK has MP_CAPABLE
Enable MPTCP if SYN has MP_CAPABLE
ENABLED ENABLED
ACK
![Page 34: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/34.jpg)
MPTCP Connec$on Management
Subflow 1 Subflow 1
![Page 35: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/35.jpg)
MPTCP Connec$on Management
SYN JOIN
Subflow 1 Subflow 1
![Page 36: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/36.jpg)
MPTCP Connec$on Management
SYN/ACK
JOIN
Subflow 1 Subflow 1
![Page 37: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/37.jpg)
MPTCP Connec$on Management
ACK
Subflow 1 Subflow 1
![Page 38: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/38.jpg)
MPTCP Connec$on Management
Subflow 1 Subflow 1
Subflow 2 Subflow 2
![Page 39: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/39.jpg)
That was easy!
![Page 40: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/40.jpg)
Almost too easy…
![Page 41: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/41.jpg)
MPTCP Connec$on Management
SYN/ACK MP_CAPABLE Y
Enable MPTCP if SYN/ACK has MP_CAPABLE
Enable MPTCP if SYN has MP_CAPABLE
ENABLED
![Page 42: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/42.jpg)
MPTCP Connec$on Management
Enable MPTCP if SYN/ACK has MP_CAPABLE
Enable MPTCP if SYN has MP_CAPABLE
SYN/ACK MP_CAPABLE
ENABLED
6% of access networks remove unknown op$ons (14% on port 80)
[Honda et al. – Is It S$ll Possible to Extend TCP? – IMC 2011 ]
![Page 43: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/43.jpg)
MPTCP Connec$on Management
Enable MPTCP if SYN/ACK has MP_CAPABLE
Enable MPTCP if SYN has MP_CAPABLE
SYN/ACK
ENABLED DISABLED
![Page 44: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/44.jpg)
MPTCP Connec$on Management
Enable MPTCP if SYN/ACK has MP_CAPABLE
Enable MPTCP if SYN has MP_CAPABLE
and ACK has DATA_ACK
SYN/ACK
DISABLED
![Page 45: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/45.jpg)
MPTCP Connec$on Management
Enable MPTCP if SYN/ACK has MP_CAPABLE
ACK
DISABLED
Enable MPTCP if SYN has MP_CAPABLE
and ACK has DATA_ACK
![Page 46: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/46.jpg)
MPTCP Connec$on Management
Enable MPTCP if SYN/ACK has MP_CAPABLE
ACK
DISABLED DISABLED
Enable MPTCP if SYN has MP_CAPABLE
and ACK has DATA_ACK
To achieve GOAL 3: When MPTCP opera$on is not possible, fallback to TCP.
![Page 47: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/47.jpg)
Nego$a$on used to be between two endpoints
In today’s Internet, nego$a$on is: between two endpoints and an unknown number of intermediaries
New protocol nego2a2on has to take this into account or it will fail
Lesson
![Page 48: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/48.jpg)
Sending Data
![Page 49: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/49.jpg)
TCP Opera$on
1
![Page 50: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/50.jpg)
TCP Opera$on
1 2
![Page 51: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/51.jpg)
TCP Opera$on
1 2 3
![Page 52: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/52.jpg)
TCP Opera$on
2 3 4 1
![Page 53: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/53.jpg)
TCP Opera$on
3 4 2
ACK 1
![Page 54: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/54.jpg)
TCP Opera$on
4 3
ACK 2 ACK 1
![Page 55: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/55.jpg)
TCP Opera$on
4
ACK 3 ACK 2 ACK 1
![Page 56: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/56.jpg)
TCP Opera$on
ACK 4 ACK 3 ACK 2
ACK 1
![Page 57: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/57.jpg)
Strawman Design
1
![Page 58: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/58.jpg)
Strawman Design
1
2
![Page 59: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/59.jpg)
Strawman Design
3
2
1
![Page 60: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/60.jpg)
Strawman Design
2
3
4
1
![Page 61: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/61.jpg)
Strawman Design
2 4
3
ACK 1
![Page 62: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/62.jpg)
Strawman Design
4
3
ACK 1
ACK 2
![Page 63: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/63.jpg)
Strawman Design
4
ACK 3
ACK 2
ACK 1
A third of access networks will “correct” or drop ACKs of unseen data
![Page 64: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/64.jpg)
Strawman Design
ACK 3
ACK 4
ACK 1
![Page 65: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/65.jpg)
Strawman Design
![Page 66: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/66.jpg)
Ok, so what does work?
• We need a sequence space for each subflow – This will drive loss detec$on and retransmissions
• We need a data sequence number – This will put segments in order at the receiver
• We need a data ACK for flow control – Receive window is rela$ve to Data ACK
![Page 67: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/67.jpg)
MPTCP Data Transmission
SUBFLOW: 100 DATA:1
![Page 68: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/68.jpg)
MPTCP Data Transmission
SUBFLOW: 100 DATA:1
SUBFLOW: 200 DATA:2
![Page 69: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/69.jpg)
MPTCP Data Transmission
SUBFLOW: 101 DATA:3
SUBFLOW: 200 DATA:2
SUBFLOW: 100 DATA:1
![Page 70: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/70.jpg)
MPTCP Data Transmission
SUBFLOW: 101 DATA:3
SUBFLOW: 200 DATA:2
SUBFLOW: 100 DATA:1
![Page 71: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/71.jpg)
MPTCP Data Transmission
SUBFLOW: 101 DATA:3
SUBFLOW: 200 DATA:2
SUBFLOW: 100 DATA:1
SUBFLOW: 102 DATA:2
![Page 72: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/72.jpg)
TCP Packet Header
Source Port Destination Port
Sequence Number
Acknowledgment Number
Receive Window Header Length Reserved Code bits
Checksum
Options
Urgent Pointer
Data
Bit 0 Bit 15 Bit 16 Bit 31
20 Bytes
0 - 40 Bytes
![Page 73: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/73.jpg)
MPTCP Packet Header
Source Port Destination Port
Sequence Number
Acknowledgment Number
Receive Window Header Length Reserved Code bits
Checksum
Options
Urgent Pointer
Data
Bit 0 Bit 15 Bit 16 Bit 31
20 Bytes
0 - 40 Bytes
Subflow
Subflow
Subflow Subflow
![Page 74: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/74.jpg)
MPTCP Packet Header
Source Port Destination Port
Sequence Number
Acknowledgment Number
Receive Window Header Length Reserved Code bits
Checksum
Options
Urgent Pointer
Data
Bit 0 Bit 15 Bit 16 Bit 31
20 Bytes
0 - 40 Bytes
Subflow
Subflow
Subflow Subflow
Connection relative to Data ACK
![Page 75: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/75.jpg)
MPTCP Packet Header
Source Port Destination Port
Sequence Number
Acknowledgment Number
Receive Window Header Length Reserved Code bits
Checksum
Options
Urgent Pointer
Data
Bit 0 Bit 15 Bit 16 Bit 31
20 Bytes
0 - 40 Bytes
Subflow
Subflow
Subflow Subflow
Data sequence number ? Data ACK ?
Data sequence number ? Data ACK ?
Connection relative to
![Page 76: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/76.jpg)
Sending Data ACKs in the payload sucks
![Page 77: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/77.jpg)
Sending Data ACKs in the payload sucks leads to deadlocks
![Page 78: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/78.jpg)
Client Server
Read Request 2, Sends Response 2
Read Request 1, Sends Response 1
Read Request 2, Sends Response 2
![Page 79: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/79.jpg)
Read Request 1, Starts sending response 1 (won’t read request 2 $ll finished)
Client Server
Client blocked by server receive window
Server blocked on client receive window (receive window will only open when Data Ack received)
Client wants to send Data Ack, but blocked by receive window
Deadlock
Data wai$ng in receive buffer
Even though the client app has read the data, Data Ack s$ll cannot be sent
![Page 80: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/80.jpg)
Design space for feasible solu1ons is quite narrow
There are not too many things that could have
been done differently
Read paper for: • Flow control • Dealing with content-‐ changing middleboxes
• Dealing with TSO/LRO • Connec$on teardown
• Fast receive code • Middlebox tests • Evalua$on
![Page 81: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/81.jpg)
Deployable Multipath TCP
How hard can it be?
Designing
Implementing
![Page 82: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/82.jpg)
MPTCP over WiFi/3G
8Mbps, 20ms
2Mbps, 150ms
![Page 83: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/83.jpg)
TCP over WiFi/3G
![Page 84: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/84.jpg)
MPTCP over WiFi/3G
![Page 85: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/85.jpg)
MPTCP over WiFi/3G
Mul1path TCP increases throughput
![Page 86: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/86.jpg)
MPTCP over WiFi/3G
What happened here?
![Page 87: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/87.jpg)
MPTCP over WiFi/3G
1 Receive Window
![Page 88: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/88.jpg)
MPTCP over WiFi/3G
1 Receive Window
4 3 2
![Page 89: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/89.jpg)
MPTCP over WiFi/3G
1
3 2 4
Receive Window
![Page 90: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/90.jpg)
MPTCP over WiFi/3G
1
ACK
3 2 4
Receive Window
![Page 91: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/91.jpg)
MPTCP over WiFi/3G
1
Wifi path blocked by the Receive Window
3 2 4
Receive Window
![Page 92: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/92.jpg)
MPTCP over WiFi/3G
1
1
3 2 4
Receive Window
REINJECT SEGMENT ON WIFI
![Page 93: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/93.jpg)
MPTCP over WiFi/3G
1 REINJECT SEGMENT ON WIFI
HALVE CONGESTION WINDOW
OF 3G SUBFLOW 3 2 4
Receive Window 1
![Page 94: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/94.jpg)
MPTCP over WiFi/3G
1 3 2 4
Receive Window 1
![Page 95: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/95.jpg)
MPTCP over WiFi/3G
Receive Window 1
![Page 96: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/96.jpg)
MPTCP over WiFi/3G
![Page 97: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/97.jpg)
Demo
![Page 98: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/98.jpg)
Conclusions
• Designing a Mul$path TCP isn’t difficult. • Designing a deployable Mul$path TCP is much harder. – Need to understand the evolving and undocumented Internet architecture.
– Need defensive mechanisms to fall back to TCP behaviour when all else fails.
• Most extensions to TCP now face the same hurdles.
![Page 99: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/99.jpg)
Conclusions (2)
• Designing a performant MPTCP needs care. – Especially need careful management of buffering to avoid unwanted interac$ons between subflows.
![Page 100: How Hard Can It Be? · How hard can it be?" Designing and "Implementing a "Deployable Multipath TCP& Deployable Multipath TCP& How hard can it be?" Designing" Implementing "Deployable](https://reader036.fdocuments.us/reader036/viewer/2022071008/5fc5964cd41bc73dbf1356ab/html5/thumbnails/100.jpg)
MPTCP allows standard applica2ons to reap the benefits of mul2path networks
• It is deployable today • Try out the code – hDp://mptcp.info.ucl.ac.be/