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
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
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
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
Recall:
TCP packets include a variable length header
field for options