1. From TCP to MPTCP Brief
Explanation:
{RFC 793, RFC 6824 }
By HADJI Akrem <akrem.hadji@supcom.tn>
15/7/2016
1
2. Content
I) TCP protocol
i. Transmission Control Protocol TCP
ii. TCP PROTOCOL STACK
iii. TCP HEADER
iv. TCP HEADER { Seq vs Ack}
v. TCP CONNECTION INITIATION
vi. TCP TRAFFIC DURING ESTABLICHED SESSION
vii. TCP CLOSING CONNECTION
o II) MPTCP
i. Multi-path TCP (MPTCP)
ii. MTCP PROTOCOL STACK
iii. MPTCP simple scenario
iv. INITIAL CONNECTION SETUP MP_CAPABLE Subtype
v. INITIAL CONNECTION SETUP
vi. Additional subflow setup Methode 1
vii. Additional subflow setup
viii. Additional subflow setup Methode 2 (box)
ix. DATA MAPPING
x. Data Sequence Signal:DSS
xi. Closing MPTCP connection
2
3. Transmission Control Protocol
TCP
TCP is a transport layer protocole
The main goal of TCP is to make sure that the sender
and the receiver exchange traffic in order and without
any loss.
3
11. TCP HEADER
TCP header major prams :
Source port :served process port of the main host
Destination port :distination process port
Sequence (Seq): total sent data (the sender received
their ACK)
Acknowledgement (Ack): total received data
Length: length of TCP segment payload
Options
5
12. TCP HEADER { Seq vs Ack}
Each time an A host receives or send a TCP segment to B, it
should answer these tow questions:
How much data RECEIVED (since the beginning of TCP
connection) ???
How much data SEND to B( B acknowledged me that it was
received)???
The amount of received data will be add into
Acknowledgement field {Ack} in each segment.
The amount of sent data will be add into Sequence field
{Seq} in each segment.
If segment contains just SYN or FIN (begin & end of TCP
connection)Seq number of the sender will increment by 1
after the Ack of reception.
6
15. TCP CONNECTION INITIATION
HOST A HOST BNETWORK
A sends to
B: SYN
Seq=ISN*
=x , Ack=0
*ISN is the initial sequence number: A random value chosen in the beginning of
TCP connection as sequence number.
7
16. TCP CONNECTION INITIATION
HOST A HOST BNETWORK
A sends to
B: SYN
Seq=ISN*
=x , Ack=0
*ISN is the initial sequence number: A random value chosen in the beginning of
TCP connection as sequence number.
7
17. TCP CONNECTION INITIATION
HOST A HOST BNETWORK
A sends to
B: SYN
Seq=ISN*
=x , Ack=0
*ISN is the initial sequence number: A random value chosen in the beginning of
TCP connection as sequence number.
7
18. TCP CONNECTION INITIATION
HOST A HOST BNETWORK
A sends to
B: SYN
Seq=ISN*
=x , Ack=0
*ISN is the initial sequence number: A random value chosen in the beginning of
TCP connection as sequence number.
7
19. TCP CONNECTION INITIATION
HOST A HOST BNETWORK
A sends to
B: SYN
Seq=ISN*
=x , Ack=0
B receives
A’s SYN
(B: Ack ++)
*ISN is the initial sequence number: A random value chosen in the beginning of
TCP connection as sequence number.
7
20. TCP CONNECTION INITIATION
HOST A HOST BNETWORK
A sends to
B: SYN
Seq=ISN*
=x , Ack=0
B receives
A’s SYN
(B: Ack ++)
B sends to
A: SYN/Ack
Seq=ISN(B)
=y,
Ack=0+1
*ISN is the initial sequence number: A random value chosen in the beginning of
TCP connection as sequence number.
7
21. TCP CONNECTION INITIATION
HOST A HOST BNETWORK
A sends to
B: SYN
Seq=ISN*
=x , Ack=0
B receives
A’s SYN
(B: Ack ++)
B sends to
A: SYN/Ack
Seq=ISN(B)
=y,
Ack=0+1
*ISN is the initial sequence number: A random value chosen in the beginning of
TCP connection as sequence number.
7
22. TCP CONNECTION INITIATION
HOST A HOST BNETWORK
y Ack=1
SYN
A sends to
B: SYN
Seq=ISN*
=x , Ack=0
B receives
A’s SYN
(B: Ack ++)
B sends to
A: SYN/Ack
Seq=ISN(B)
=y,
Ack=0+1
*ISN is the initial sequence number: A random value chosen in the beginning of
TCP connection as sequence number.
7
23. TCP CONNECTION INITIATION
HOST A HOST BNETWORK
y Ack=1
SYN
A sends to
B: SYN
Seq=ISN*
=x , Ack=0
B receives
A’s SYN
(B: Ack ++)
B sends to
A: SYN/Ack
Seq=ISN(B)
=y,
Ack=0+1
*ISN is the initial sequence number: A random value chosen in the beginning of
TCP connection as sequence number.
7
24. TCP CONNECTION INITIATION
HOST A HOST BNETWORK
y Ack=1
SYN
A sends to
B: SYN
Seq=ISN*
=x , Ack=0
B receives
A’s SYN
(B: Ack ++)
B sends to
A: SYN/Ack
Seq=ISN(B)
=y,
Ack=0+1
A receives
B:SYN/Ack
(A: Seq=+1
data Acked
by B)
*ISN is the initial sequence number: A random value chosen in the beginning of
TCP connection as sequence number.
7
25. TCP CONNECTION INITIATION
HOST A HOST BNETWORK
y Ack=1
SYN
A sends to
B: SYN
Seq=ISN*
=x , Ack=0
B receives
A’s SYN
(B: Ack ++)
B sends to
A: SYN/Ack
Seq=ISN(B)
=y,
Ack=0+1
A sends to B
Seq=ISN(A)
+1,
Ack=1
(A received
B’s SYN)
A receives
B:SYN/Ack
(A: Seq=+1
data Acked
by B)
*ISN is the initial sequence number: A random value chosen in the beginning of
TCP connection as sequence number.
7
26. TCP CONNECTION INITIATION
HOST A HOST BNETWORK
y Ack=1
SYN
A sends to
B: SYN
Seq=ISN*
=x , Ack=0
B receives
A’s SYN
(B: Ack ++)
B sends to
A: SYN/Ack
Seq=ISN(B)
=y,
Ack=0+1
A sends to B
Seq=ISN(A)
+1,
Ack=1
(A received
B’s SYN)
A receives
B:SYN/Ack
(A: Seq=+1
data Acked
by B)
*ISN is the initial sequence number: A random value chosen in the beginning of
TCP connection as sequence number.
7
27. TCP CONNECTION INITIATION
HOST A HOST BNETWORK
y Ack=1
SYN
A sends to
B: SYN
Seq=ISN*
=x , Ack=0
B receives
A’s SYN
(B: Ack ++)
B sends to
A: SYN/Ack
Seq=ISN(B)
=y,
Ack=0+1
A sends to B
Seq=ISN(A)
+1,
Ack=1
(A received
B’s SYN)
A receives
B:SYN/Ack
(A: Seq=+1
data Acked
by B)
*ISN is the initial sequence number: A random value chosen in the beginning of
TCP connection as sequence number.
7
28. TCP CONNECTION INITIATION
HOST A HOST BNETWORK
y Ack=1
SYN
A sends to
B: SYN
Seq=ISN*
=x , Ack=0
B receives
A’s SYN
(B: Ack ++)
B sends to
A: SYN/Ack
Seq=ISN(B)
=y,
Ack=0+1
A sends to B
Seq=ISN(A)
+1,
Ack=1
(A received
B’s SYN)
A receives
B:SYN/Ack
(A: Seq=+1
data Acked
by B)
*ISN is the initial sequence number: A random value chosen in the beginning of
TCP connection as sequence number.
7
29. TCP CONNECTION INITIATION
HOST A HOST BNETWORK
y Ack=1
SYN
A sends to
B: SYN
Seq=ISN*
=x , Ack=0
B receives
A’s SYN
(B: Ack ++)
B sends to
A: SYN/Ack
Seq=ISN(B)
=y,
Ack=0+1
A sends to B
Seq=ISN(A)
+1,
Ack=1
(A received
B’s SYN)
A receives
B:SYN/Ack
(A: Seq=+1
data Acked
by B)
B receives
A’s Ack
TCP session
established
(B: Seq=+1
data Acked by
A)
*ISN is the initial sequence number: A random value chosen in the beginning of
TCP connection as sequence number.
7
35. TCP TRAFFIC DURING
ESTABLICHED SESSION
HOST A HOST BNETWORK
A sends to
B: 100 Φ
Seq=x’ ,
Ack=0
B receives A’s
data 100 Φ
8
36. TCP TRAFFIC DURING
ESTABLICHED SESSION
HOST A HOST BNETWORK
A sends to
B: 100 Φ
Seq=x’ ,
Ack=0
B receives A’s
data 100 Φ
B sends Ack to A
Seq(B)=y’ ( the
B’s SYN acked by
A), Ack=x’+100
total data
received from A
8
37. TCP TRAFFIC DURING
ESTABLICHED SESSION
HOST A HOST BNETWORK
A sends to
B: 100 Φ
Seq=x’ ,
Ack=0
B receives A’s
data 100 Φ
B sends Ack to A
Seq(B)=y’ ( the
B’s SYN acked by
A), Ack=x’+100
total data
received from A
8
38. TCP TRAFFIC DURING
ESTABLICHED SESSION
HOST A HOST BNETWORK
y’
Ack=x’+
100
A sends to
B: 100 Φ
Seq=x’ ,
Ack=0
B receives A’s
data 100 Φ
B sends Ack to A
Seq(B)=y’ ( the
B’s SYN acked by
A), Ack=x’+100
total data
received from A
8
39. TCP TRAFFIC DURING
ESTABLICHED SESSION
HOST A HOST BNETWORK
y’
Ack=x’+
100
A sends to
B: 100 Φ
Seq=x’ ,
Ack=0
B receives A’s
data 100 Φ
B sends Ack to A
Seq(B)=y’ ( the
B’s SYN acked by
A), Ack=x’+100
total data
received from A
8
40. TCP TRAFFIC DURING
ESTABLICHED SESSION
HOST A HOST BNETWORK
y’
Ack=x’+
100
A sends to
B: 100 Φ
Seq=x’ ,
Ack=0
B receives A’s
data 100 Φ
B sends Ack to A
Seq(B)=y’ ( the
B’s SYN acked by
A), Ack=x’+100
total data
received from A
A receives B’s
Ack (A
increments its
seq by 100)
8
41. TCP TRAFFIC DURING
ESTABLICHED SESSION
HOST A HOST BNETWORK
y’
Ack=x’+
100
A sends to
B: 100 Φ
Seq=x’ ,
Ack=0
B receives A’s
data 100 Φ
B sends Ack to A
Seq(B)=y’ ( the
B’s SYN acked by
A), Ack=x’+100
total data
received from A
A sends to B
250 Φ
Seq=x’+100
Ack=1
(A same ack
since B didn’t
send any data)
A receives B’s
Ack (A
increments its
seq by 100)
8
42. TCP TRAFFIC DURING
ESTABLICHED SESSION
HOST A HOST BNETWORK
y’
Ack=x’+
100
A sends to
B: 100 Φ
Seq=x’ ,
Ack=0
B receives A’s
data 100 Φ
B sends Ack to A
Seq(B)=y’ ( the
B’s SYN acked by
A), Ack=x’+100
total data
received from A
A sends to B
250 Φ
Seq=x’+100
Ack=1
(A same ack
since B didn’t
send any data)
A receives B’s
Ack (A
increments its
seq by 100)
8
43. TCP TRAFFIC DURING
ESTABLICHED SESSION
HOST A HOST BNETWORK
y’
Ack=x’+
100
A sends to
B: 100 Φ
Seq=x’ ,
Ack=0
B receives A’s
data 100 Φ
B sends Ack to A
Seq(B)=y’ ( the
B’s SYN acked by
A), Ack=x’+100
total data
received from A
A sends to B
250 Φ
Seq=x’+100
Ack=1
(A same ack
since B didn’t
send any data)
A receives B’s
Ack (A
increments its
seq by 100)
8
44. TCP TRAFFIC DURING
ESTABLICHED SESSION
HOST A HOST BNETWORK
y’
Ack=x’+
100
A sends to
B: 100 Φ
Seq=x’ ,
Ack=0
B receives A’s
data 100 Φ
B sends Ack to A
Seq(B)=y’ ( the
B’s SYN acked by
A), Ack=x’+100
total data
received from A
A sends to B
250 Φ
Seq=x’+100
Ack=1
(A same ack
since B didn’t
send any data)
A receives B’s
Ack (A
increments its
seq by 100)
8
45. TCP TRAFFIC DURING
ESTABLICHED SESSION
HOST A HOST BNETWORK
y’
Ack=x’+
100
A sends to
B: 100 Φ
Seq=x’ ,
Ack=0
B receives A’s
data 100 Φ
B sends Ack to A
Seq(B)=y’ ( the
B’s SYN acked by
A), Ack=x’+100
total data
received from A
A sends to B
250 Φ
Seq=x’+100
Ack=1
(A same ack
since B didn’t
send any data)
B receives
A’s data (B:
Seq the same
data Acked by
A)
A receives B’s
Ack (A
increments its
seq by 100)
8
51. TCP CLOSING CONNECTION
A sends to
B: FIN
Seq=x,
Ack=i last
data
received
from B
B receives A’s
FIN (A: Ack the
recep of i data
sent by B)
9
52. TCP CLOSING CONNECTION
A sends to
B: FIN
Seq=x,
Ack=i last
data
received
from B
B receives A’s
FIN (A: Ack the
recep of i data
sent by B)
B sends Ack to A
Seq(B)=y+i ( the i
data acked by A),
Ack=x+1 data
received from A
and FIN
9
53. TCP CLOSING CONNECTION
A sends to
B: FIN
Seq=x,
Ack=i last
data
received
from B
B receives A’s
FIN (A: Ack the
recep of i data
sent by B)
B sends Ack to A
Seq(B)=y+i ( the i
data acked by A),
Ack=x+1 data
received from A
and FIN
9
54. TCP CLOSING CONNECTION
y+ i Ack=x+1
A sends to
B: FIN
Seq=x,
Ack=i last
data
received
from B
B receives A’s
FIN (A: Ack the
recep of i data
sent by B)
B sends Ack to A
Seq(B)=y+i ( the i
data acked by A),
Ack=x+1 data
received from A
and FIN
9
55. TCP CLOSING CONNECTION
y+ i Ack=x+1
A sends to
B: FIN
Seq=x,
Ack=i last
data
received
from B
B receives A’s
FIN (A: Ack the
recep of i data
sent by B)
B sends Ack to A
Seq(B)=y+i ( the i
data acked by A),
Ack=x+1 data
received from A
and FIN
9
56. TCP CLOSING CONNECTION
y+ i Ack=x+1
A sends to
B: FIN
Seq=x,
Ack=i last
data
received
from B
B receives A’s
FIN (A: Ack the
recep of i data
sent by B)
B sends Ack to A
Seq(B)=y+i ( the i
data acked by A),
Ack=x+1 data
received from A
and FIN
A receives B’s
Ack FIN
9
57. TCP CLOSING CONNECTION
y+ i Ack=x+1
A sends to
B: FIN
Seq=x,
Ack=i last
data
received
from B
B receives A’s
FIN (A: Ack the
recep of i data
sent by B)
B sends Ack to A
Seq(B)=y+i ( the i
data acked by A),
Ack=x+1 data
received from A
and FIN
A receives B’s
Ack FIN
B sends to A:
FIN
Seq=y+i,
Ack=x+1 last
data received
from A
9
58. TCP CLOSING CONNECTION
y+ i Ack=x+1
A sends to
B: FIN
Seq=x,
Ack=i last
data
received
from B
B receives A’s
FIN (A: Ack the
recep of i data
sent by B)
B sends Ack to A
Seq(B)=y+i ( the i
data acked by A),
Ack=x+1 data
received from A
and FIN
A receives B’s
Ack FIN
B sends to A:
FIN
Seq=y+i,
Ack=x+1 last
data received
from A
9
59. TCP CLOSING CONNECTION
y+ i Ack=x+1
y+i Ack=x+1
A sends to
B: FIN
Seq=x,
Ack=i last
data
received
from B
B receives A’s
FIN (A: Ack the
recep of i data
sent by B)
B sends Ack to A
Seq(B)=y+i ( the i
data acked by A),
Ack=x+1 data
received from A
and FIN
A receives B’s
Ack FIN
B sends to A:
FIN
Seq=y+i,
Ack=x+1 last
data received
from A
9
60. TCP CLOSING CONNECTION
y+ i Ack=x+1
y+i Ack=x+1
A sends to
B: FIN
Seq=x,
Ack=i last
data
received
from B
B receives A’s
FIN (A: Ack the
recep of i data
sent by B)
B sends Ack to A
Seq(B)=y+i ( the i
data acked by A),
Ack=x+1 data
received from A
and FIN
A receives B’s
Ack FIN
B sends to A:
FIN
Seq=y+i,
Ack=x+1 last
data received
from A
9
61. TCP CLOSING CONNECTION
y+ i Ack=x+1
y+i Ack=x+1
A sends to
B: FIN
Seq=x,
Ack=i last
data
received
from B
B receives A’s
FIN (A: Ack the
recep of i data
sent by B)
B sends Ack to A
Seq(B)=y+i ( the i
data acked by A),
Ack=x+1 data
received from A
and FIN
A receives B’s
Ack FIN
B sends to A:
FIN
Seq=y+i,
Ack=x+1 last
data received
from A
A receives B’s
FIN
9
62. TCP CLOSING CONNECTION
y+ i Ack=x+1
y+i Ack=x+1
A sends to
B: FIN
Seq=x,
Ack=i last
data
received
from B
B receives A’s
FIN (A: Ack the
recep of i data
sent by B)
B sends Ack to A
Seq(B)=y+i ( the i
data acked by A),
Ack=x+1 data
received from A
and FIN
A receives B’s
Ack FIN
B sends to A:
FIN
Seq=y+i,
Ack=x+1 last
data received
from A
A receives B’s
FIN
A sends Ack to B
Seq(A)=x+1 ( the
1 FIN acked by B),
Ack=y+i+1 data
received from A
and FIN
9
63. TCP CLOSING CONNECTION
y+ i Ack=x+1
y+i Ack=x+1
A sends to
B: FIN
Seq=x,
Ack=i last
data
received
from B
B receives A’s
FIN (A: Ack the
recep of i data
sent by B)
B sends Ack to A
Seq(B)=y+i ( the i
data acked by A),
Ack=x+1 data
received from A
and FIN
A receives B’s
Ack FIN
B sends to A:
FIN
Seq=y+i,
Ack=x+1 last
data received
from A
A receives B’s
FIN
A sends Ack to B
Seq(A)=x+1 ( the
1 FIN acked by B),
Ack=y+i+1 data
received from A
and FIN
9
64. TCP CLOSING CONNECTION
y+ i Ack=x+1
y+i Ack=x+1
A sends to
B: FIN
Seq=x,
Ack=i last
data
received
from B
B receives A’s
FIN (A: Ack the
recep of i data
sent by B)
B sends Ack to A
Seq(B)=y+i ( the i
data acked by A),
Ack=x+1 data
received from A
and FIN
A receives B’s
Ack FIN
x+1
Ack=y+i
+1
B sends to A:
FIN
Seq=y+i,
Ack=x+1 last
data received
from A
A receives B’s
FIN
A sends Ack to B
Seq(A)=x+1 ( the
1 FIN acked by B),
Ack=y+i+1 data
received from A
and FIN
9
65. TCP CLOSING CONNECTION
y+ i Ack=x+1
y+i Ack=x+1
A sends to
B: FIN
Seq=x,
Ack=i last
data
received
from B
B receives A’s
FIN (A: Ack the
recep of i data
sent by B)
B sends Ack to A
Seq(B)=y+i ( the i
data acked by A),
Ack=x+1 data
received from A
and FIN
A receives B’s
Ack FIN
x+1
Ack=y+i
+1
B sends to A:
FIN
Seq=y+i,
Ack=x+1 last
data received
from A
A receives B’s
FIN
A sends Ack to B
Seq(A)=x+1 ( the
1 FIN acked by B),
Ack=y+i+1 data
received from A
and FIN
9
66. TCP CLOSING CONNECTION
y+ i Ack=x+1
y+i Ack=x+1
A sends to
B: FIN
Seq=x,
Ack=i last
data
received
from B
B receives A’s
FIN (A: Ack the
recep of i data
sent by B)
B sends Ack to A
Seq(B)=y+i ( the i
data acked by A),
Ack=x+1 data
received from A
and FIN
A receives B’s
Ack FIN
x+1
Ack=y+i
+1
B sends Ack to A
Seq(B)=y+i ( the i
data acked by A),
Ack=100 data
received from A
B sends to A:
FIN
Seq=y+i,
Ack=x+1 last
data received
from A
A receives B’s
FIN
A sends Ack to B
Seq(A)=x+1 ( the
1 FIN acked by B),
Ack=y+i+1 data
received from A
and FIN
9
67. Multi-path TCP
MPTCP
Multi path TCP is a protocol that help end hosts to
benefit from multiple TCP connections simultaneously.
HOSTA
HOSTB
Address A1
Address A2
Address B1
Address B2
NETWORK
10
68. Multi-path TCP
MPTCP
Multi path TCP is a protocol that help end hosts to
benefit from multiple TCP connections simultaneously.
HOSTA
HOSTB
Address A1
Address A2
Address B1
Address B2
NETWORK
TCP subflow (I)
10
69. Multi-path TCP
MPTCP
Multi path TCP is a protocol that help end hosts to
benefit from multiple TCP connections simultaneously.
HOSTA
HOSTB
Address A1
Address A2
Address B1
Address B2
NETWORK
TCP subflow (I)
TCP subflow (II)
10
84. INITIAL CONNECTION SETUP
MP_CAPABLE Subtype
In the first TCP sub-flow connection establishment, both
hosts must declare that they support MPTCP.
In this declaration they negotiate the encryption and
exchange thier keys.
These information are carried over MPTCP_capable
signal.
13
85. INITIAL CONNECTION SETUP
MP_CAPABLE Subtype
In the first TCP sub-flow connection establishment, both
hosts must declare that they support MPTCP.
In this declaration they negotiate the encryption and
exchange thier keys.
These information are carried over MPTCP_capable
signal.
Kind Length Subtype Version
A|B|C|D|E|
F|G|H
Option Sender’s
Key (64 bits)
Option Receiver’s
Key (64 bits)
13
86. INITIAL CONNECTION SETUP
MP_CAPABLE Subtype
In the first TCP sub-flow connection establishment, both
hosts must declare that they support MPTCP.
In this declaration they negotiate the encryption and
exchange thier keys.
These information are carried over MPTCP_capable
signal.
Kind Length Subtype Version
A|B|C|D|E|
F|G|H
Option Sender’s
Key (64 bits)
Option Receiver’s
Key (64 bits)
MP_CAPABLE HEADER
13
88. INITIAL CONNECTION SETUP
HOST A HOST BNETWORK
TCP: A
sends to B
SYN
MPTCP:
capable +
A’s key
Address A1 Address B1
14
89. INITIAL CONNECTION SETUP
HOST A HOST BNETWORK
TCP: A
sends to B
SYN
MPTCP:
capable +
A’s key
Address A1 Address B1
14
90. INITIAL CONNECTION SETUP
HOST A HOST BNETWORK
SYN
MP_CAPABLE
(A_key)
TCP: A
sends to B
SYN
MPTCP:
capable +
A’s key
Address A1 Address B1
14
91. INITIAL CONNECTION SETUP
HOST A HOST BNETWORK
SYN
MP_CAPABLE
(A_key)
TCP: A
sends to B
SYN
MPTCP:
capable +
A’s key
Address A1 Address B1
14
92. INITIAL CONNECTION SETUP
HOST A HOST BNETWORK
SYN
MP_CAPABLE
(A_key)
TCP: A
sends to B
SYN
MPTCP:
capable +
A’s key
B receives
A’s SYN
MPTCP: B is
aware that A
is MPTCP
capable
Address A1 Address B1
14
93. INITIAL CONNECTION SETUP
HOST A HOST BNETWORK
SYN
MP_CAPABLE
(A_key)
TCP: A
sends to B
SYN
MPTCP:
capable +
A’s key
B receives
A’s SYN
MPTCP: B is
aware that A
is MPTCP
capable
B sends to
A:
SYN/Ack
MPTCP:
capable +
B’s key
Address A1 Address B1
14
94. INITIAL CONNECTION SETUP
HOST A HOST BNETWORK
SYN
MP_CAPABLE
(A_key)
TCP: A
sends to B
SYN
MPTCP:
capable +
A’s key
B receives
A’s SYN
MPTCP: B is
aware that A
is MPTCP
capable
B sends to
A:
SYN/Ack
MPTCP:
capable +
B’s key
Address A1 Address B1
14
95. INITIAL CONNECTION SETUP
HOST A HOST BNETWORK
SYN
MP_CAPABLE
(A_key)
SYN // ACK
MP_CAPABLE
(B_key)
TCP: A
sends to B
SYN
MPTCP:
capable +
A’s key
B receives
A’s SYN
MPTCP: B is
aware that A
is MPTCP
capable
B sends to
A:
SYN/Ack
MPTCP:
capable +
B’s key
Address A1 Address B1
14
96. INITIAL CONNECTION SETUP
HOST A HOST BNETWORK
SYN
MP_CAPABLE
(A_key)
SYN // ACK
MP_CAPABLE
(B_key)
TCP: A
sends to B
SYN
MPTCP:
capable +
A’s key
B receives
A’s SYN
MPTCP: B is
aware that A
is MPTCP
capable
B sends to
A:
SYN/Ack
MPTCP:
capable +
B’s key
Address A1 Address B1
14
97. INITIAL CONNECTION SETUP
HOST A HOST BNETWORK
SYN
MP_CAPABLE
(A_key)
SYN // ACK
MP_CAPABLE
(B_key)
TCP: A
sends to B
SYN
MPTCP:
capable +
A’s key
B receives
A’s SYN
MPTCP: B is
aware that A
is MPTCP
capable
B sends to
A:
SYN/Ack
MPTCP:
capable +
B’s key
A receives
B:SYN/Ack
MPTCP: A
is aware
that B is
MPTCP
capable
Address A1 Address B1
14
98. INITIAL CONNECTION SETUP
HOST A HOST BNETWORK
SYN
MP_CAPABLE
(A_key)
SYN // ACK
MP_CAPABLE
(B_key)
TCP: A
sends to B
SYN
MPTCP:
capable +
A’s key
B receives
A’s SYN
MPTCP: B is
aware that A
is MPTCP
capable
B sends to
A:
SYN/Ack
MPTCP:
capable +
B’s key
A sends to B
Ack
MPTCP:
capable ::
A’s key +
B’s key
A receives
B:SYN/Ack
MPTCP: A
is aware
that B is
MPTCP
capable
Address A1 Address B1
14
99. INITIAL CONNECTION SETUP
HOST A HOST BNETWORK
SYN
MP_CAPABLE
(A_key)
SYN // ACK
MP_CAPABLE
(B_key)
TCP: A
sends to B
SYN
MPTCP:
capable +
A’s key
B receives
A’s SYN
MPTCP: B is
aware that A
is MPTCP
capable
B sends to
A:
SYN/Ack
MPTCP:
capable +
B’s key
A sends to B
Ack
MPTCP:
capable ::
A’s key +
B’s key
A receives
B:SYN/Ack
MPTCP: A
is aware
that B is
MPTCP
capable
Address A1 Address B1
14
100. INITIAL CONNECTION SETUP
HOST A HOST BNETWORK
SYN
MP_CAPABLE
(A_key)
SYN // ACK
MP_CAPABLE
(B_key)
Ack
MP_CAPABLE
(A_key, B_key)
TCP: A
sends to B
SYN
MPTCP:
capable +
A’s key
B receives
A’s SYN
MPTCP: B is
aware that A
is MPTCP
capable
B sends to
A:
SYN/Ack
MPTCP:
capable +
B’s key
A sends to B
Ack
MPTCP:
capable ::
A’s key +
B’s key
A receives
B:SYN/Ack
MPTCP: A
is aware
that B is
MPTCP
capable
Address A1 Address B1
14
101. INITIAL CONNECTION SETUP
HOST A HOST BNETWORK
SYN
MP_CAPABLE
(A_key)
SYN // ACK
MP_CAPABLE
(B_key)
Ack
MP_CAPABLE
(A_key, B_key)
TCP: A
sends to B
SYN
MPTCP:
capable +
A’s key
B receives
A’s SYN
MPTCP: B is
aware that A
is MPTCP
capable
B sends to
A:
SYN/Ack
MPTCP:
capable +
B’s key
A sends to B
Ack
MPTCP:
capable ::
A’s key +
B’s key
A receives
B:SYN/Ack
MPTCP: A
is aware
that B is
MPTCP
capable
Address A1 Address B1
14
102. INITIAL CONNECTION SETUP
HOST A HOST BNETWORK
SYN
MP_CAPABLE
(A_key)
SYN // ACK
MP_CAPABLE
(B_key)
Ack
MP_CAPABLE
(A_key, B_key)
TCP: A
sends to B
SYN
MPTCP:
capable +
A’s key
B receives
A’s SYN
MPTCP: B is
aware that A
is MPTCP
capable
B sends to
A:
SYN/Ack
MPTCP:
capable +
B’s key
A sends to B
Ack
MPTCP:
capable ::
A’s key +
B’s key
A receives
B:SYN/Ack
MPTCP: A
is aware
that B is
MPTCP
capable
TCP
connection
ok
B and A are
MPTCP
CAPABLE
Address A1 Address B1
14
103. Additional subflow setup
Methode 1
There are tow methode to add new subflow
I) send direct MP_Joint Msg from host A to B.
In which it identify it self (authentication negotiated in
the MP_Capable previously)
And declare its new joinable ip with IP_ID ( to avoide
middel box NAT MPTCP declare ip with IP_ID this
information is send on MPTCP header )
15
104. Additional subflow setup
Methode 1
There are tow methode to add new subflow
I) send direct MP_Joint Msg from host A to B.
In which it identify it self (authentication negotiated in
the MP_Capable previously)
And declare its new joinable ip with IP_ID ( to avoide
middel box NAT MPTCP declare ip with IP_ID this
information is send on MPTCP header )
Kind Length Subtype |B| Address ID
Receiver’s Token (32 bits)
Sender’s Random Number (32 bits)
15
105. Additional subflow setup
Methode 1
I) send direct MP_Joint Msg from host A to B.
In which it identify it self (authentication negotiated in
the MP_Capable previously)
And declare its new joinable ip with IP_ID ( to avoide
middel box NAT MPTCP declare ip with IP_ID this
information is send on MPTCP header )
Kind Length Subtype |B| Address ID
Receiver’s Token (32 bits)
Sender’s Random Number (32 bits)
15
106. Additional subflow setup
Methode 1
In which it identify it self (authentication negotiated in
the MP_Capable previously)
And declare its new joinable ip with IP_ID ( to avoide
middel box NAT MPTCP declare ip with IP_ID this
information is send on MPTCP header )
Kind Length Subtype |B| Address ID
Receiver’s Token (32 bits)
Sender’s Random Number (32 bits)
15
107. Additional subflow setup
Methode 1
And declare its new joinable ip with IP_ID ( to avoide
middel box NAT MPTCP declare ip with IP_ID this
information is send on MPTCP header )
Kind Length Subtype |B| Address ID
Receiver’s Token (32 bits)
Sender’s Random Number (32 bits)
15
108. Additional subflow setup
Methode 1
Kind Length Subtype |B| Address ID
Receiver’s Token (32 bits)
Sender’s Random Number (32 bits)
15
109. Additional subflow setup
Methode 1
Kind Length Subtype |B| Address ID
Receiver’s Token (32 bits)
Sender’s Random Number (32 bits)
MP_JOIN Header
15
113. Additional subflow setup
HOST A HOST B
MP_JOIN (B_Token,
random_num)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
Address B1Address A2
16
114. Additional subflow setup
HOST A HOST B
MP_JOIN (B_Token,
random_num)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
Address B1Address A2
16
115. Additional subflow setup
HOST A HOST B
MP_JOIN (B_Token,
random_num)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
Address B1Address A2
16
116. Additional subflow setup
HOST A HOST B
MP_JOIN (B_Token,
random_num)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
B sends to
A: SYN/Ack
MP_JOIN
Address B1Address A2
16
117. Additional subflow setup
HOST A HOST B
MP_JOIN (B_Token,
random_num)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
B sends to
A: SYN/Ack
MP_JOIN
Address B1Address A2
16
118. Additional subflow setup
HOST A HOST B
MP_JOIN (B_Token,
random_num)
SYN //
MP_JOIN
(A_HMAC,random_
num)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
B sends to
A: SYN/Ack
MP_JOIN
Address B1Address A2
16
119. Additional subflow setup
HOST A HOST B
MP_JOIN (B_Token,
random_num)
SYN //
MP_JOIN
(A_HMAC,random_
num)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
B sends to
A: SYN/Ack
MP_JOIN
Address B1Address A2
16
120. Additional subflow setup
HOST A HOST B
MP_JOIN (B_Token,
random_num)
SYN //
MP_JOIN
(A_HMAC,random_
num)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
B sends to
A: SYN/Ack
MP_JOIN
A receives
B:SYN/Ack
MP_JOIN
Address B1Address A2
16
121. Additional subflow setup
HOST A HOST B
MP_JOIN (B_Token,
random_num)
SYN //
MP_JOIN
(A_HMAC,random_
num)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
B sends to
A: SYN/Ack
MP_JOIN
A receives
B:SYN/Ack
MP_JOIN
Address B1Address A2
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
16
122. Additional subflow setup
HOST A HOST B
MP_JOIN (B_Token,
random_num)
SYN //
MP_JOIN
(A_HMAC,random_
num)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
B sends to
A: SYN/Ack
MP_JOIN
A receives
B:SYN/Ack
MP_JOIN
Address B1Address A2
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
16
123. Additional subflow setup
HOST A HOST B
MP_JOIN (B_Token,
random_num)
SYN //
MP_JOIN
(A_HMAC,random_
num)
Ack
MP_JOIN (A_key,
B_key)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
B sends to
A: SYN/Ack
MP_JOIN
A receives
B:SYN/Ack
MP_JOIN
Address B1Address A2
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
16
124. Additional subflow setup
HOST A HOST B
MP_JOIN (B_Token,
random_num)
SYN //
MP_JOIN
(A_HMAC,random_
num)
Ack
MP_JOIN (A_key,
B_key)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
B sends to
A: SYN/Ack
MP_JOIN
A receives
B:SYN/Ack
MP_JOIN
Address B1Address A2
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
16
125. Additional subflow setup
HOST A HOST B
MP_JOIN (B_Token,
random_num)
SYN //
MP_JOIN
(A_HMAC,random_
num)
Ack
MP_JOIN (A_key,
B_key)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
B sends to
A: SYN/Ack
MP_JOIN
A receives
B:SYN/Ack
MP_JOIN
Address B1Address A2
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
16
126. Additional subflow setup
HOST A HOST B
MP_JOIN (B_Token,
random_num)
SYN //
MP_JOIN
(A_HMAC,random_
num)
Ack
MP_JOIN (A_key,
B_key)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
B sends to
A: SYN/Ack
MP_JOIN
A receives
B:SYN/Ack
MP_JOIN
B receives
A’s Ack
TCP session
established
(B: Seq=+1
data Acked by
A)
Address B1Address A2
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
16
127. Additional subflow setup
HOST A HOST B
MP_JOIN (B_Token,
random_num)
SYN //
MP_JOIN
(A_HMAC,random_
num)
Ack
MP_JOIN (A_key,
B_key)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
B sends to
A: SYN/Ack
MP_JOIN
A receives
B:SYN/Ack
MP_JOIN
B receives
A’s Ack
TCP session
established
(B: Seq=+1
data Acked by
A)
Address B1Address A2
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
16
128. Additional subflow setup
HOST A HOST B
MP_JOIN (B_Token,
random_num)
SYN //
MP_JOIN
(A_HMAC,random_
num)
Ack
MP_JOIN (A_key,
B_key)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
B sends to
A: SYN/Ack
MP_JOIN
A receives
B:SYN/Ack
MP_JOIN
B receives
A’s Ack
TCP session
established
(B: Seq=+1
data Acked by
A)
Address B1Address A2
Ack
MP_JOIN (A_key,
B_key)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
16
129. Additional subflow setup
HOST A HOST B
MP_JOIN (B_Token,
random_num)
SYN //
MP_JOIN
(A_HMAC,random_
num)
Ack
MP_JOIN (A_key,
B_key)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
B sends to
A: SYN/Ack
MP_JOIN
A receives
B:SYN/Ack
MP_JOIN
B receives
A’s Ack
TCP session
established
(B: Seq=+1
data Acked by
A)
Address B1Address A2
Ack
MP_JOIN (A_key,
B_key)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
16
130. Additional subflow setup
HOST A HOST B
MP_JOIN (B_Token,
random_num)
SYN //
MP_JOIN
(A_HMAC,random_
num)
Ack
MP_JOIN (A_key,
B_key)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
B sends to
A: SYN/Ack
MP_JOIN
A sends to B
Seq=ISN(A)
+1,
Ack=1
(A received
B’s SYN)
A receives
B:SYN/Ack
MP_JOIN
B receives
A’s Ack
TCP session
established
(B: Seq=+1
data Acked by
A)
Address B1Address A2
Ack
MP_JOIN (A_key,
B_key)
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
B receives
A’s SYN
& MP_JOIN
16
131. Additional subflow setup
Methode 2 (box)
II) In case the second host is behind firewall or middel box
that forbid external TCP connection to be establiched.
Or if host A want to let host B chose when to start the new
connection ( if B is a busy server that handel many other
connections )
In the establiched connection host A sends to B an MPTCP
ADD_ADDR signal
ADD_ADDR contains ip address A2 (ipv4 or 6)(ip @ of
second int), the address ID associated to this ip @, port*
• *Port: the TCP port in wich the host A expect to start the
new MPTCP subflow. Generally, it is the same port as the
first TCP flow (it can be set to a new one)
17
132. Additional subflow setup
Methode 2 (box)
Or if host A want to let host B chose when to start the
new connection ( if B is a busy server that handel many
other connections )
In the establiched connection host A sends to B an
MPTCP ADD_ADDR signal
ADD_ADDR contains ip address A2 (ipv4 or 6)(ip @ of
second int), the address ID associated to this ip @,
port*
• *Port: the TCP port in wich the host A expect to start the
new MPTCP subflow. Generally, it is the same port as the
first TCP flow (it can be set to a new one)
17
133. Additional subflow setup
Methode 2 (box)
In the establiched connection host A sends to B an
MPTCP ADD_ADDR signal
ADD_ADDR contains ip address A2 (ipv4 or 6)(ip @ of
second int), the address ID associated to this ip @,
port*
• *Port: the TCP port in wich the host A expect to start the
new MPTCP subflow. Generally, it is the same port as the
first TCP flow (it can be set to a new one)
17
134. Additional subflow setup
Methode 2 (box)
ADD_ADDR contains ip address A2 (ipv4 or 6)(ip @ of
second int), the address ID associated to this ip @,
port*
• *Port: the TCP port in wich the host A expect to start the
new MPTCP subflow. Generally, it is the same port as the
first TCP flow (it can be set to a new one)
17
135. Additional subflow setup
Methode 2 (box)
• *Port: the TCP port in wich the host A expect to start the
new MPTCP subflow. Generally, it is the same port as the
first TCP flow (it can be set to a new one)
17
139. Additional subflow setup
Methode 2 (box)
After recieving ADD_ADDR B can establish new TCP
connect win MP_JOIN as described before (MP_JOIN).
HOSTA
HOSTB
Addr A1
Addr A2
Addr B1
Addr B2
Established TCP connection
MPTCP ADD_ADDR
option [addr A2 ,
addr ID A2, port*]
TCP
18
140. Additional subflow setup
Methode 2 (box)
After recieving ADD_ADDR B can establish new TCP
connect win MP_JOIN as described before (MP_JOIN).
HOSTA
HOSTB
Addr A1
Addr A2
Addr B1
Addr B2
New TCP connection
Established TCP connection
MPTCP ADD_ADDR
option [addr A2 ,
addr ID A2, port*]
TCP
18
141. Additional subflow setup
Methode 2 (box)
After recieving ADD_ADDR B can establish new TCP
connect win MP_JOIN as described before (MP_JOIN).
HOSTA
HOSTB
Addr A1
Addr A2
Addr B1
Addr B2
New TCP connection
Established TCP connection
MPTCP ADD_ADDR
option [addr A2 ,
addr ID A2, port*]
TCP
18
142. Additional subflow setup
Methode 2 (box)
After recieving ADD_ADDR B can establish new TCP
connect win MP_JOIN as described before (MP_JOIN).
HOSTA
HOSTB
Addr A1
Addr A2
Addr B1
Addr B2
New TCP connection
Established TCP connection
MPTCP ADD_ADDR
option [addr A2 ,
addr ID A2, port*]
TCP
18
143. Additional subflow setup
Methode 2 (box)
After recieving ADD_ADDR B can establish new TCP
connect win MP_JOIN as described before (MP_JOIN).
HOSTA
HOSTB
Addr A1
Addr A2
Addr B1
Addr B2
New TCP connection
Established TCP connection
MPTCP ADD_ADDR
option [addr A2 ,
addr ID A2, port*]
TCP
New TCP
connect
18
144. Additional subflow setup
Methode 2 (box)
After recieving ADD_ADDR B can establish new TCP
connect win MP_JOIN as described before (MP_JOIN).
HOSTA
HOSTB
Addr A1
Addr A2
Addr B1
Addr B2
New TCP connection
Established TCP connection
MPTCP ADD_ADDR
option [addr A2 ,
addr ID A2, port*]
TCP
New TCP
connect
18
145. Additional subflow setup
Methode 2 (box)
After recieving ADD_ADDR B can establish new TCP
connect win MP_JOIN as described before (MP_JOIN).
HOSTA
HOSTB
Addr A1
Addr A2
Addr B1
Addr B2
New TCP connection
Established TCP connection
MPTCP ADD_ADDR
option [addr A2 ,
addr ID A2, port*]
TCP
New TCP
connect
18
146. Additional subflow setup
Methode 2 (box)
After recieving ADD_ADDR B can establish new TCP
connect win MP_JOIN as described before (MP_JOIN).
HOSTA
HOSTB
Addr A1
Addr A2
Addr B1
Addr B2
New TCP connection
Established TCP connection
MPTCP ADD_ADDR
option [addr A2 ,
addr ID A2, port*]
TCP
New TCP
connect
New TCP connect
18
182. Data
Sequence Signal:DSS
Data sequence signal option:
Contains DATA Mapping information { data sequence
number, subflow sequence number, data level length}
It can be used for DATA_ACK
It can be used for DATA_FIN
20
183. Data
Sequence Signal:DSS
Data sequence signal option:
Contains DATA Mapping information { data sequence
number, subflow sequence number, data level length}
It can be used for DATA_ACK
It can be used for DATA_FIN
Data-Level Length
Kind Length Subtype (reserved)|F|m|M|a|A
Data ACK
DATA sequence number {DSN}
Subflow Sequence Number
Checksum
20
193. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
Encapsulation
MPTCP: Data
Seq Number
DSN 11
Data 12
Data 13
21
194. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
Encapsulation
MPTCP: Data
Seq Number
DSN 11
Data 12
Data 13
21
197. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
Encapsulation
MPTCP: Data
Seq Number
DSN 11
DSN 12
Data 13
21
198. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
Encapsulation
MPTCP: Data
Seq Number
DSN 11
DSN 12
Data 13
21
200. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowIIDSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
Data 13
21
201. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowIIDSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
Seq 101
Data 13
21
202. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowIIDSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
Seq 101
Seq 313
Data 13
21
203. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowIIDSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
Seq 101
Seq 313
Data 13
21
204. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowIIDSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
Seq 101
Seq 313
TCP subflow (I)
recieved seq*:
Data 13
21
205. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowIIDSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
Seq 101
Seq 313
TCP subflow (I)
recieved seq*: 101
Data 13
21
206. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowIIDSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
Seq 313
TCP subflow (I)
recieved seq*: 101
Data 13
21
207. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowIIDSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
Seq 313
TCP subflow (I)
recieved seq*: 101
Data 13
21
208. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowIIDSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
Seq 313
TCP subflow (I)
recieved seq*: 101
Data 13
21
209. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
Seq 313
TCP subflow (I)
recieved seq*: 101
Data 13
21
210. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
Seq 313
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*:Data 13
21
211. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
Seq 313
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313Data 13
21
212. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313Data 13
21
213. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313Data 13
21
214. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313Data 13
21
215. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
21
216. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313DSN 13
21
217. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313DSN 13
21
218. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313DSN 13
Data 14
21
219. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313DSN 13Data 14
21
220. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313DSN 13Data 14
Data 15
21
221. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313DSN 13Data 14
Data 15
21
222. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313DSN 13
Data 15
21
223. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313DSN 13DSN 14
Data 15
21
224. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
Seq 314
DSN 13DSN 14
Data 15
21
225. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
Seq 314
DSN 13DSN 14
Data 15
21
226. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
Seq 314
DSN 13DSN 14
314
Data 15
21
227. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313DSN 13DSN 14
314
Data 15
21
228. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313DSN 13DSN 14
314
Data 15
21
229. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 14
314
Data 15
21
230. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 14
314
21
231. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
21
232. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
21
233. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
Seq 102
DSN 13
DSN 15
DSN 14
314
21
234. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
Seq 102
DSN 13
DSN 15
DSN 14
314
21
235. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
Seq 102
DSN 13
DSN 15
DSN 14
314
102
21
236. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
21
237. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
21
238. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
21
239. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
21
240. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
Seq 315
DSN 13
DSN 15
DSN 14
314
102
21
241. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
Seq 315
DSN 13
DSN 15
DSN 14
314
102
21
242. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
Seq 315
DSN 13
DSN 15
DSN 14
314
102
315
21
243. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
315
21
244. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
315
21
245. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
315
21
246. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
315
Ack 102
21
247. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
315
Ack 102
21
248. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
315
Ack 102
Ack 315
21
249. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
315
Ack 102
Ack 315
21
250. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
315
Ack 102
21
251. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
315
21
252. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
315
21
253. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
315
21
254. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
315
21
255. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15DSN 14
314
102
315
21
256. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
315
21
257. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
315
21
258. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
DATA
sequence
reorder
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
315
21
259. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
DATA
sequence
reorder
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
315
DATA_Ack 15
21
260. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
DATA
sequence
reorder
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
315
DATA_Ack 15
21
261. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
DATA
sequence
reorder
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
315
21
262. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
DATA
sequence
reorder
All data
received to
DATA_Seq 15
Send
DATA_Ack 15
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
315
21
263. DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
DATA
sequence
reorder
All data
received to
DATA_Seq 15
Send
DATA_Ack 15
Application
App1
TCP sub flowI
TCP sub flowII
DSN 11
DSN 12
Encapsulation
TCP: Subflow
Seq Number
TCP subflow (I)
recieved seq*: 101
TCP subflow (II)
recieved seq*: 313
DSN 13
DSN 15
DSN 14
314
102
315
21
264. Closing MPTCP connection
MPTCP connection ends when when both hosts have no
data to be send.
MPTCP data finalisation is independant of TCP traffic on
each subflow host can close an TCP subflow ( with
normal TCP FIN ) but continue transmitting on other
subflows.
When host has no more data to send it sends Data
Sequence Signal DATA_FIN ( DSS ) on one of its subflow
Then it waits for the reciever to send back a Data
Sequence Signal DATA_ACK ( Similar to TCP FIN)
When both hosts close their MPTCP connection they
terminate all TCP subflow ( with FIN mecanism on each
one )
22
265. Closing MPTCP connection
HOST A HOST B
TCP Subflow
DSS=DATA_FIN
TCP Subflow
DSS=DATA_ACK
TCP Subflow
DSS=DATA_FIN
Host A has no
more DATA to
send MPTCP:
DSS=DATA_FIN
B receives
A’s
DATA_FIN
B sends to A:
DATA_ACKA receives
B:DATA_ACK
A conncetion
is terminated
Address B1Address A2
TCP Subflow
DSS=DATA_ACK
Host B has no
more DATA to
send MPTCP:
DATA_FIN
A receives
B’s
DATA_FIN
A sends to B:
DATA_ACK
B receives
A:DATA_ACK
B conncetion
is terminated
23