In-order (data sequencing)
- Two-level sequencing (Reason p.53)
- TCP subflows maintain their own sequence number (SEQ)
- Additional data sequence number (DSN) is introduced in MPTCP
- 32 or 64 bits DSN
- Both supported! Depending on flags
Reliable (ACK and retransmission)
- Packet loss
Fast retransmit on the same subflow as original transmission.
Re-evaluate whether the segment can be retransmitted over another subflow.
- Subflow failure
All unAcked data are retransmitted using other available paths.
Flow control (rbuf management)
- Shared receiving window (Reason p.61)
If middleboxes change
- Use largest
windowreceived at MPTCP level
- Use received
windowover each subflow to cope with flow control imposed by the middlebox
- Use largest
- Coupled congestion control (Reason p.101)
For each loss on path r,
For each non-duplicated ack on path r,
- Simply fills all subflows in MultiPath TCP: From Theory to Practice (2011)
- Some middleboxes combine or split segments, even changes SEQ in SYN to ensure randomness
MPTCP also carries the mapping between DSN and SEQ (e.g. DSN 0 -> SEQ 123) and the length of the packet
- Some middleboxes even change the content of packet
- E.g. ALG for a NAT
MPTCP includes its own checksum, if content modification is detected on specific path, MPTCP will send RST to that path and use other available path.
Checksum calculation causes performance degradation
- MPTCP uses TCP header option: MPTCP (30).
- MPTCP is composed of 1+ regular TCP subflows. (Reason p.41)