- Forward


Multipath TCP (MPTCP)
An Introduction


Prof. David Bernstein
James Madison University

Computer Science Department
bernstdh@jmu.edu

Print

Introduction
Back SMYC Forward
  • Specification:
    • RFC 6824
  • Purpose:
    • Provide the ability to simultaneously use multiple paths between peers (to increase bandwidth or reliability/robustness)
  • Constraints:
    • Be backward compatible with TCP
    • Work when one or both hosts are multi-addressed
Terminology
Back SMYC Forward
  • Path:
    • A sequence of links between a sender and receiver that is defined by a 4-tuple containing the source and destination addresses and ports
  • Subflow:
    • A flow of TCP segments over a regular TCP connection
  • MPTCP Connection:
    • A set of one or more subflows
Overview
Back SMYC Forward
  • Getting Started:
    • An MPTCP connection begins as a regular TCP connection using the 3-way handshake (but the SYN, SYNACK, and ACK packets include the MP_CAPABLE option)
  • Adding a Subflow:
    • An additional TCP connection is created by either the client or server (after the client signals that it has additional addresses) and logically combined with the existing connection
    • The SYN, SYNACK and ACK packets in this handshake include the MP_JOIN option and a token that indicates which MPTCP connection it is joining
  • Removing a Subflow:
    • Subflows can be terminated using the normal 4-way process
  • Terminating a Connection:
    • Peer A sends a DATA FIN in the Data Sequence Signal
    • Once all of the data has been received, Peer Z sends a DATA ACK in the Data Sequence Signal
Providing Reliability
Back SMYC Forward
  • Sequence Numbers:
    • MPTCP uses a 64-bit Data Sequence Number (DSN)
    • Each subflow has its own 32-bit sequence number
  • The Data Sequence Signal:
    • Contans the Data Sequence Mapping from the subflow sequence space to the data sequence space
  • Acknowledgments:
    • Regular TCP acknowledgments are used on each subflow
    • MPTCP also uses acknowledgments for the data sequence space (that track the advancement of the overall byte stream which is maintained in one buffer)
MPTCP Messages
Back SMYC Forward
  • Recall:
    • TCP packets include a variable length header field for options
  • MPTCP Option Format:
    • Kind (8 bits)
    • Length (8 bits)
    • Subtype (4 bits)
    • Subtype-specific data (variable)
MP_CAPABLE Option
Back SMYC Forward
  • Purpose:
    • Used in the initial TCP handshaking
  • Subtype-Specific Data:
    • Version (4 bits)
    • Flags (8 bits)
    • Option Sender's Key (64 bits)
    • Option Receiver's Key (64 bits)
MP_JOIN Option
Back SMYC Forward
  • Purpose:
    • Start a new subflow
  • Subtype-Specific Data for SYN:
    • Flags (4 bits)
    • Address ID (8 bits)
    • Receiver's Token (32 bits)
    • Sender's Random Number (32 bits)
  • Subtype-Specific Data for SYNACK:
    • Flags (4 bits)
    • Address ID (8 bits)
    • Senders Truncated Hash-based Message Authentication Code (64 bits)
    • Sender's Random Number (32 bits)
  • Subtype-Specific Data for ACK:
    • Reserved (12 bits)
    • Sender's Hash-based Message Authentication Code (160 bits)
Data Sequence Signal (DSS) Option
Back SMYC Forward
  • Purpose:
    • Map between the subflow sequence numbers and the data sequence numbers
  • Subtype-Specific Data:
    • Reserved (6 bits)
    • Flags (6 bits)
    • Data ACK (32 or 64 bits depending on flags)
    • Data sequence number (32 or 64 bits depending on flags)
    • Subflow sequence number (32 bits)
    • Data-level length (16 bits)
    • Checksum (16 bits)
There's Always More to Learn
Back -