108
Multipath TCP Costin Raiciu University Politehnica of Bucharest Joint work with: Mark Handley, Damon Wischik, University College London Olivier Bonaventure, Sébastien Barré, Université catholique de Louvain and many many others Christoph Paasch Université catholique de Louvain Thanks to

Multipath TCP

  • Upload
    cleo

  • View
    89

  • Download
    2

Embed Size (px)

DESCRIPTION

Multipath TCP. Christoph Paasch Université c atholique de Louvain. Costin Raiciu University Politehnica of Bucharest. Joint work with: Mark Handley , Damon Wischik, University College London Olivier Bonaventure , Sébastien Barré , Université catholique de Louvain - PowerPoint PPT Presentation

Citation preview

Page 1: Multipath TCP

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: Multipath TCP

Networks are becoming multipath

Mobile devices have multiple wireless connections

Page 3: Multipath TCP

Networks are becoming multipath

Page 4: Multipath TCP

Networks are becoming multipath

Page 5: Multipath TCP

Networks are becoming multipath

Datacenters have redundant topologies

Page 6: Multipath TCP

Networks are becoming multipath

Servers are multi-homed

Client

Page 7: Multipath TCP

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: Multipath TCP

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: Multipath TCP

Mismatch between network and transport

creates problems

Page 10: Multipath TCP

Poor Performance for Mobile Users

3G celltower

Page 11: Multipath TCP

Poor Performance for Mobile Users

3G celltower

Page 12: Multipath TCP

Poor Performance for Mobile Users

3G celltower

Page 13: Multipath TCP

Poor Performance for Mobile Users

3G celltower

Offload to WiFi

Page 14: Multipath TCP

Poor Performance for Mobile Users

3G celltower

All ongoing TCP connections die

Page 15: Multipath TCP

Collisions in datacenters

[Fares et al - A Scalable, Commodity Data Center Network Architecture - Sigcomm 2008]

Page 16: Multipath TCP

Single-path TCP collisions reduce throughput

[Raiciu et. Al – Sigcomm 2011]

Page 17: Multipath TCP

Multipath TCP

Page 18: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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: Multipath TCP

MPTCP Connection Management

SYN

MP_CAPABLE X

Page 22: Multipath TCP

MPTCP Connection Management

SYN/ACK MP_CAPABLE Y

Page 23: Multipath TCP

MPTCP Connection ManagementSUBFLOW 1CWNDSnd.SEQNORcv.SEQNO

FLOW Y

Page 24: Multipath TCP

MPTCP Connection Management

SYN JOIN Y

SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO

FLOW Y

Page 25: Multipath TCP

MPTCP Connection Management

SYN/ACK

JOIN X

SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO

FLOW Y

Page 26: Multipath TCP

MPTCP Connection Management

SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO

SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO

FLOW Y

Page 27: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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

SubflowSubflow

Subflow Subflow

Data sequence number Data ACK

Page 32: Multipath TCP

MPTCP Operation

DATASEQ1000

DSEQ10000

options

……

SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO

SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO

FLOW Y

Page 33: Multipath TCP

MPTCP Operation

DATASEQ1000

DSEQ10000

options

……

SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO

SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO

FLOW Y

Page 34: Multipath TCP

MPTCP Operation

DATASEQ1000

DSEQ10000

options

……

DATASEQ5000

DSEQ11000

options

……

SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO

SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO

FLOW Y

Page 35: Multipath TCP

MPTCP Operation

DATASEQ1000

DSEQ10000

options

……

DATASEQ5000

DSEQ11000

options

……

SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO

SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO

FLOW Y

Page 36: Multipath TCP

MPTCP Operation

DATASEQ1000

DSEQ10000

options

……

DATASEQ5000

DSEQ11000

options

……

SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO

SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO

FLOW Y

Page 37: Multipath TCP

MPTCP OperationACK2000

Data ACK11000

… …

SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO

SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO

DATASEQ5000

DSEQ11000

options

……

FLOW Y

Page 38: Multipath TCP

MPTCP Operation

DATASEQ5000

DSEQ11000

options

……

SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO

SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO

FLOW Y

Page 39: Multipath TCP

MPTCP Operation

DATASEQ5000

DSEQ11000

options

……

SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO

SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO

FLOW Y

Page 40: Multipath TCP

MPTCP Operation

DATASEQ2000

DSEQ11000

options

……

SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO

SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO

FLOW Y

Page 41: Multipath TCP

Multipath TCPCongestion Control

Page 42: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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: Multipath TCP

Applications of Multipath TCP

Page 56: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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: Multipath TCP

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: Multipath TCP

Multipath TCP in data centers

Page 65: Multipath TCP

Multipath TCP in data centers

Page 66: Multipath TCP

MPTCP better utilizes the FatTree network

Page 67: Multipath TCP

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: Multipath TCP

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: Multipath TCP

MPTCP improves performance on EC2

SameRack

Page 70: Multipath TCP

Implementing Multipath TCP

in the Linux Kernel

Page 71: Multipath TCP

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: Multipath TCP

MPTCP-session creation

Page 73: Multipath TCP

Application creates regular TCP-sockets

Page 74: Multipath TCP

MPTCP-session creation

Page 75: Multipath TCP

The Kernel creates the Meta-socket

Page 76: Multipath TCP

MPTCP creating new subflows

Page 77: Multipath TCP

The Kernel handles the different MPTCP subflows

Page 78: Multipath TCP

MPTCP Performance with apache

100 simultaneous HTTP-Requests, total of 100000

Page 79: Multipath TCP

MPTCP Performance with apache

100 simultaneous HTTP-Requests, total of 100000

Page 80: Multipath TCP

MPTCP Performance with apache

100 simultaneous HTTP-Requests, total of 100000

Page 81: Multipath TCP

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: Multipath TCP

MPTCP on multicore architectures

Page 83: Multipath TCP

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: Multipath TCP

MPTCP on multicore architectures

Page 85: Multipath TCP

Multipath TCP on

Mobile Devices

Page 86: Multipath TCP

MPTCP over WiFi/3G

Page 87: Multipath TCP

TCP over WiFi/3G

Page 88: Multipath TCP

MPTCP over WiFi/3G

Page 89: Multipath TCP

MPTCP over WiFi/3G

Page 90: Multipath TCP

MPTCP over WiFi/3G

Page 91: Multipath TCP

MPTCP over WiFi/3G

Page 92: Multipath TCP

MPTCP over WiFi/3G

Page 93: Multipath TCP

MPTCP over WiFi/3G

Page 94: Multipath TCP

MPTCP over WiFi/3G

Page 95: Multipath TCP

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: Multipath TCP

WiFi to 3G handover with Multipath TCP

Page 97: Multipath TCP

WiFi to 3G handover with Multipath TCP

Page 98: Multipath TCP

WiFi to 3G handover with Multipath TCP

Page 99: Multipath TCP

WiFi to 3G handover with Multipath TCP

Page 100: Multipath TCP

WiFi to 3G handover with Multipath TCP

Page 101: Multipath TCP

WiFi to 3G handover with Multipath TCP

Page 102: Multipath TCP

WiFi to 3G handover with Multipath TCP

Page 103: Multipath TCP

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: Multipath TCP

Multipath topologies need multipath transportMultipath TCP can be used

by unchanged applicationsover today’s networks

MPTCP moves traffic away from congestion,making a collection of links behave like asingle pooled resource

Page 105: Multipath TCP

Backup Slides

Page 106: Multipath TCP

Packet-level ECMP in datacenters

Page 107: Multipath TCP

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: Multipath TCP

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.