Presentation is loading. Please wait.

Presentation is loading. Please wait.

Multi-addressed Multipath TCP draft-ford-mptcp-multiaddressed-02 Alan Ford Costin Raiciu, Mark Handley.

Similar presentations


Presentation on theme: "Multi-addressed Multipath TCP draft-ford-mptcp-multiaddressed-02 Alan Ford Costin Raiciu, Mark Handley."— Presentation transcript:

1 Multi-addressed Multipath TCP draft-ford-mptcp-multiaddressed-02 Alan Ford Costin Raiciu, Mark Handley

2 MPTCP: Where are we now? Work has been ongoing for ~2 years Three implementations and two simulators This talk represents our current understanding of the most appropriate design We welcome broader feedback in order to make this the protocol the best it can be 2

3 Objectives An easy-to-deploy Multipath TCP solution Our constraints: – Assume that one or both endpoints are multihomed and multi-addressed – Backwards-compatible with current, regular TCP External: function through middleboxes Applications: provide same service to regular TCP Fall-back: to regular TCP in case of failure 3

4 Basic Scenario: Throughput 4 Source A 987654 Destination B 987654 9864 75 MPTCP Subflows Address B2 Address B1Address A1 Address A2

5 Basic Scenario: Resilience 5 Source 987654 Destination 987654 75 759864

6 MPTCP Operation An MPTCP Connection between endpoints is formed of one or more MPTCP Subflows Subflows will be created between different IP address pairs TCP Options used in subflows: – For a new subflow to join an existing connection – For data-level sequence numbering – For closing connections 6

7 MPTCP Example 7 Host AHost B Address A1Address A2Address B1Address B2 Initial connection setup Additional subflow setup

8 Session Initialisation Standard TCP SYN/ACK exchange with additional MPTCP option: – Sender’s token to identify this connection – Initial data-level sequence number Host AHost B SYN + TokA + DSN SYN/ACK + TokB + DSN 8

9 “Multipath Capable” Option To declare a sender’s token for this connection in the first SYN/ACK exchange 9 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +---------------+---------------+-------------------------------+ | Kind=OPT_MPC | Length = 7 |(resvd)|Version| Sender Token : +---------------+---------------+-------------------------------+ : Sender Token (continued: 4 octets total) | +-----------------------------------------------+

10 Starting a New Subflow One or both of local and remote IP addresses will be new TCP option contains: – Receiver’s token to identify this connection – Sender’s identifier for source address Host AHost B SYN + TokB + Address ID SYN/ACK + TokA + Address ID 10

11 “Join Connection” Option Added to SYN containing the receiver’s identifying token for the connection the sender wishes to join Also contains sender’s identifier for their source address 11 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +---------------+---------------+-------------------------------+ | Kind=OPT_JOIN | Length = 7 |Receiver Token (4 octets total): +---------------+---------------+----------------+--------------+ : Receiver Token (continued) | Address ID | +-------------------------------+----------------+

12 Address Knowledge Exchange But how to know a remote end’s addresses? Add Address is signalled in TCP options on existing subflow, containing: – Address (v4 or v6 depending on IPVer) – Sender’s unique Address Identifier Can be correlated with that seen in SYN Remove address also possible when interface is unexpectedly lost – Removed by Address ID, to permit NATs 12

13 Adding Addresses Add Address: declares a local address to a remote endpoint, with local identifier 13 Remote endpoint can attempt to set up new subflow(s) to this address 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +---------------+---------------+---------------+-------+-------+ | Kind=OPT_ADDR | Length | Address ID | IPVer |(resvd)| +---------------+---------------+---------------+-------+-------+ | Address (IPv4 - 4 octets) | +---------------------------------------------------------------+ (... further ID/Version/Address fields as required... )

14 Removing Addresses 14 Remove Address: declares a previously announced address as no longer valid and to be removed from connection 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +---------------+---------------+---------------+ |Kind=OPT_REMADR| Length = 2+n | Address ID |... +---------------+---------------+---------------+ Will trigger receiving endpoint to close all subflows using that address

15 Need for Address Signalling Many hosts will have firewalls/NATs that permit connections only in one direction Therefore, signalling addresses allows a receiver to open a connection in the opposite direction, e.g. Host AHost B Address A1Address B1Address B2 Initial connection setup Signal Address B2 Setup new subflow Try subflow setup 15

16 General Operation MPTCP connection is formed of multiple TCP subflows, with coupled congestion control and shared receive buffer Subflows have contiguous sequence numbering Data is reassembled by connection-level sequence numbering MPTCP can retransmit failures on original or new path (but if using a new path, must also retransmit on original for continuity) 16

17 Data Sequence Numbering Data Sequence Mapping option declares: – Subflow sequence number mapped to data-level sequence number – Number of bytes for which this mapping is valid – Data sequence number can be 64-bits 17 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +---------------+---------------+------------------------------+ | Kind=OPT_DSN | Length | Data Sequence Number... : +---------------+---------------+------------------------------+ :... ( (length-8) octets ) | Data-level Length (2 octets) | +-------------------------------+------------------------------+ | Subflow Sequence Number (4 octets) | +-------------------------------+------------------------------+

18 More on Data Sequence Mapping The Data Sequence Mapping need not be sent in every packet, and can be omitted when the sender is sure the receiver will understand (e.g. multiple packets covered by same length; or lone subflow) An initial data sequence number should be set at the first handshake 18

19 Closing Connection Subflows operate independently so can be closed with a FIN as normal If an interface is unexpectedly lost, the Remove Address option can initiate a rapid cleanup from both endpoints The DATA FIN option (on top of a TCP-level FIN) indicates the end of the connection RST has subflow-only relevance 19

20 Security and Threats Aim for baseline: no worse than current TCP Some security considerations so far: – Use of existing TCP for subflows minimises new threats from targeting third party addresses – Hijacking could be plausible with token guessing Additional security with e.g. ensuring correlation with signals on existing subflows This would also reduce issues with time-shifted attacks 20

21 Open Issues Is proposed handshake mechanism sufficient? Receiver policy control – how? Do we want Subflow IDs or Address IDs? Do we need any data-level ACKs? Do we want Connection IDs given in every packet? (Possibility of aiding IDS etc?) 21

22 Next Steps Is this specification ready to become a WG document? 22


Download ppt "Multi-addressed Multipath TCP draft-ford-mptcp-multiaddressed-02 Alan Ford Costin Raiciu, Mark Handley."

Similar presentations


Ads by Google