how hard can it be? · how hard can it be?" designing and "implementing a...

100
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

Upload: others

Post on 19-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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/