SlideShare a Scribd company logo
1 of 266
From TCP to MPTCP Brief
Explanation:
{RFC 793, RFC 6824 }
By HADJI Akrem <akrem.hadji@supcom.tn>
15/7/2016
1
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
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
TCP PROTOCOL STACK
4
TCP PROTOCOL STACK
Physical
4
TCP PROTOCOL STACK
LINK
Physical
4
TCP PROTOCOL STACK
IP
LINK
Physical
4
TCP PROTOCOL STACK
TCP
IP
LINK
Physical
4
TCP PROTOCOL STACK
TCP
IP
APPLICATION
LINK
Physical
4
TCP PROTOCOL STACK
TCP
IP
APPLICATION
LINK
Physical
TRANSPORT
4
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
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
TCP CONNECTION INITIATION
HOST A HOST BNETWORK
7
TCP CONNECTION INITIATION
HOST A HOST BNETWORK
A sends to
B: SYN
Seq=ISN*
=x , Ack=0
7
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
TCP TRAFFIC DURING
ESTABLICHED SESSION
HOST A HOST BNETWORK
8
TCP TRAFFIC DURING
ESTABLICHED SESSION
HOST A HOST BNETWORK
A sends to
B: 100 Φ
Seq=x’ ,
Ack=0
8
TCP TRAFFIC DURING
ESTABLICHED SESSION
HOST A HOST BNETWORK
A sends to
B: 100 Φ
Seq=x’ ,
Ack=0
8
TCP TRAFFIC DURING
ESTABLICHED SESSION
HOST A HOST BNETWORK
A sends to
B: 100 Φ
Seq=x’ ,
Ack=0
8
TCP TRAFFIC DURING
ESTABLICHED SESSION
HOST A HOST BNETWORK
A sends to
B: 100 Φ
Seq=x’ ,
Ack=0
8
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
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
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
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
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
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
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
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
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
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
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
TCP CLOSING CONNECTION
9
TCP CLOSING CONNECTION
A sends to
B: FIN
Seq=x,
Ack=i last
data
received
from B
9
TCP CLOSING CONNECTION
A sends to
B: FIN
Seq=x,
Ack=i last
data
received
from B
9
TCP CLOSING CONNECTION
A sends to
B: FIN
Seq=x,
Ack=i last
data
received
from B
9
TCP CLOSING CONNECTION
A sends to
B: FIN
Seq=x,
Ack=i last
data
received
from B
9
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
MTCP PROTOCOL STACK
11
MTCP PROTOCOL STACK
Physical
11
MTCP PROTOCOL STACK
Physical Physical
11
MTCP PROTOCOL STACK
LINK
Physical Physical
11
MTCP PROTOCOL STACK
LINK
Physical
LINK
Physical
11
MTCP PROTOCOL STACK
LINK
Physical
IP 2
LINK
Physical
11
MTCP PROTOCOL STACK
IP 1
LINK
Physical
IP 2
LINK
Physical
11
MTCP PROTOCOL STACK
IP 1
LINK
Physical
IP 2
LINK
Physical
TCP Subflow
11
MTCP PROTOCOL STACK
IP 1
LINK
Physical
TCP Subflow
IP 2
LINK
Physical
TCP Subflow
11
MTCP PROTOCOL STACK
IP 1
LINK
Physical
MPTCP
TCP Subflow
IP 2
LINK
Physical
TCP Subflow
11
MTCP PROTOCOL STACK
IP 1
LINK
Physical
TRANSPORT
MPTCP
TCP Subflow
IP 2
LINK
Physical
TCP Subflow
11
MTCP PROTOCOL STACK
IP 1
LINK
Physical
TRANSPORT
MPTCP
TCP Subflow
IP 2
LINK
Physical
TCP Subflow
11
MTCP PROTOCOL STACK
IP 1
APPLICATION
LINK
Physical
TRANSPORT
MPTCP
TCP Subflow
IP 2
LINK
Physical
TCP Subflow
11
MPTCP simple scenario
HOST A HOST B
Address A1 Address A2 Address B1 Address B2
Initial
connection
setup
Additional
subflow setup
12
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
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
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
INITIAL CONNECTION SETUP
HOST A HOST BNETWORK
Address A1 Address B1
14
INITIAL CONNECTION SETUP
HOST A HOST BNETWORK
TCP: A
sends to B
SYN
MPTCP:
capable +
A’s key
Address A1 Address B1
14
INITIAL CONNECTION SETUP
HOST A HOST BNETWORK
TCP: A
sends to B
SYN
MPTCP:
capable +
A’s key
Address A1 Address B1
14
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Additional subflow setup
Methode 1
Kind Length Subtype |B| Address ID
Receiver’s Token (32 bits)
Sender’s Random Number (32 bits)
15
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
Additional subflow setup
HOST A HOST B
Address B1Address A2
16
Additional subflow setup
HOST A HOST B
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
Address B1Address A2
16
Additional subflow setup
HOST A HOST B
TCP: A
sends to B:
SYN
MPTCP:
MP_JOINT
Address B1Address A2
16
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Additional subflow setup
Methode 2 (box)
17
Additional subflow setup
Methode 2 (box)
Add Address option
17
Additional subflow setup
Methode 2 (box)
Kind Length Subtype
Address
ID
Address (IPv4 / v6 :? IPver)
Port
IPVer
Add Address option
17
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
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
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
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
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
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
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
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
DATA MAPPING
TCP connection
HOSTA
HOSTB
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
Data 13
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
Data 13
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
Data 13
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
Data 13
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
Data 13
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
Data 13
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
Data 13
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
Data 13
Data 14
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
Data 13
Data 14
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
Data 13
Data 14
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
Data 13
Data 14
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
Data 13
Data 14
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
Data 13
Data 14
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
Data 13
Data 14
TCP
sequence
reorder
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
Data 13
Data 14
TCP
sequence
reorder
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
Data 13
Data 14
TCP
sequence
reorder
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
Data 13
Data 14
TCP
sequence
reorder
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
Data 13
Data 14
TCP
sequence
reorder
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 11
Data 12
Data 13
Data 14
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 12
Data 13
Data 14
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 12
Data 13
Data 14
All data
received
to seq 14
 Send
Ack 14
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 13
Data 14
All data
received
to seq 14
 Send
Ack 14
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
Data 14
All data
received
to seq 14
 Send
Ack 14
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
All data
received
to seq 14
 Send
Ack 14
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
All data
received
to seq 14
 Send
Ack 14
Ack 14
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
All data
received
to seq 14
 Send
Ack 14
Ack 14
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
All data
received
to seq 14
 Send
Ack 14
Ack 14
19
DATA MAPPING
TCP connection
HOSTA
HOSTB
All data
received
to seq 14
 Send
Ack 14
19
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
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
DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
21
DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
Data 11
21
DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowIIData 11
21
DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
Encapsulation
MPTCP: Data
Seq Number
Data 11
21
DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
Encapsulation
MPTCP: Data
Seq Number
21
DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
Encapsulation
MPTCP: Data
Seq Number
DSN 11
21
DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
Encapsulation
MPTCP: Data
Seq Number
DSN 11
21
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
21
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
21
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
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
DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
Encapsulation
MPTCP: Data
Seq Number
DSN 11Data 13
21
DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowII
Encapsulation
MPTCP: Data
Seq Number
DSN 11Data 13
21
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
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
DATA MAPPING
MPTCP
connection with
Multiple subflows
HOSTA
HOSTB
Application
App1
TCP sub flowI
TCP sub flowIIDSN 11
DSN 12
Data 13
21
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
THANK YOU

24

More Related Content

Similar to TCP to MPTCP Brief Explanation

08 module interconnecting cisco router
08 module interconnecting cisco router08 module interconnecting cisco router
08 module interconnecting cisco routerAsif
 
Part 8 : TCP and Congestion control
Part 8 : TCP and Congestion controlPart 8 : TCP and Congestion control
Part 8 : TCP and Congestion controlOlivier Bonaventure
 
Lecture 5
Lecture 5Lecture 5
Lecture 5ntpc08
 
13_TCP_Attack.pptx
13_TCP_Attack.pptx13_TCP_Attack.pptx
13_TCP_Attack.pptxAlmaOraevi
 
Eshcol tech solutions pvt ltd
Eshcol tech solutions pvt ltdEshcol tech solutions pvt ltd
Eshcol tech solutions pvt ltdOjas Kumar
 
INTRODUCTION TO SOCKETS IN COMPUTER NETWORKS DEPT OF CSE.ppt
INTRODUCTION TO SOCKETS IN COMPUTER NETWORKS DEPT OF CSE.pptINTRODUCTION TO SOCKETS IN COMPUTER NETWORKS DEPT OF CSE.ppt
INTRODUCTION TO SOCKETS IN COMPUTER NETWORKS DEPT OF CSE.pptsenthilnathans25
 

Similar to TCP to MPTCP Brief Explanation (14)

08 module interconnecting cisco router
08 module interconnecting cisco router08 module interconnecting cisco router
08 module interconnecting cisco router
 
EN-04 (1).pptx
EN-04 (1).pptxEN-04 (1).pptx
EN-04 (1).pptx
 
Part 8 : TCP and Congestion control
Part 8 : TCP and Congestion controlPart 8 : TCP and Congestion control
Part 8 : TCP and Congestion control
 
Lecture 5
Lecture 5Lecture 5
Lecture 5
 
7 tcp-congestion
7 tcp-congestion7 tcp-congestion
7 tcp-congestion
 
Part4-reliable-tcp.pptx
Part4-reliable-tcp.pptxPart4-reliable-tcp.pptx
Part4-reliable-tcp.pptx
 
13_TCP_Attack.pptx
13_TCP_Attack.pptx13_TCP_Attack.pptx
13_TCP_Attack.pptx
 
Part4-reliable-tcp.pptx
Part4-reliable-tcp.pptxPart4-reliable-tcp.pptx
Part4-reliable-tcp.pptx
 
sockets_intro.ppt
sockets_intro.pptsockets_intro.ppt
sockets_intro.ppt
 
Eshcol tech solutions pvt ltd
Eshcol tech solutions pvt ltdEshcol tech solutions pvt ltd
Eshcol tech solutions pvt ltd
 
Olumide pidan b
Olumide pidan bOlumide pidan b
Olumide pidan b
 
Sockets
Sockets Sockets
Sockets
 
INTRODUCTION TO SOCKETS IN COMPUTER NETWORKS DEPT OF CSE.ppt
INTRODUCTION TO SOCKETS IN COMPUTER NETWORKS DEPT OF CSE.pptINTRODUCTION TO SOCKETS IN COMPUTER NETWORKS DEPT OF CSE.ppt
INTRODUCTION TO SOCKETS IN COMPUTER NETWORKS DEPT OF CSE.ppt
 
Elementary TCP Sockets
Elementary TCP SocketsElementary TCP Sockets
Elementary TCP Sockets
 

Recently uploaded

2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.
2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.
2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.elesangwon
 
Research Methodology for Engineering pdf
Research Methodology for Engineering pdfResearch Methodology for Engineering pdf
Research Methodology for Engineering pdfCaalaaAbdulkerim
 
OOP concepts -in-Python programming language
OOP concepts -in-Python programming languageOOP concepts -in-Python programming language
OOP concepts -in-Python programming languageSmritiSharma901052
 
Katarzyna Lipka-Sidor - BIM School Course
Katarzyna Lipka-Sidor - BIM School CourseKatarzyna Lipka-Sidor - BIM School Course
Katarzyna Lipka-Sidor - BIM School Coursebim.edu.pl
 
Prach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism CommunityPrach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism Communityprachaibot
 
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithm
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithmComputer Graphics Introduction, Open GL, Line and Circle drawing algorithm
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithmDeepika Walanjkar
 
Novel 3D-Printed Soft Linear and Bending Actuators
Novel 3D-Printed Soft Linear and Bending ActuatorsNovel 3D-Printed Soft Linear and Bending Actuators
Novel 3D-Printed Soft Linear and Bending ActuatorsResearcher Researcher
 
System Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event SchedulingSystem Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event SchedulingBootNeck1
 
Stork Webinar | APM Transformational planning, Tool Selection & Performance T...
Stork Webinar | APM Transformational planning, Tool Selection & Performance T...Stork Webinar | APM Transformational planning, Tool Selection & Performance T...
Stork Webinar | APM Transformational planning, Tool Selection & Performance T...Stork
 
Immutable Image-Based Operating Systems - EW2024.pdf
Immutable Image-Based Operating Systems - EW2024.pdfImmutable Image-Based Operating Systems - EW2024.pdf
Immutable Image-Based Operating Systems - EW2024.pdfDrew Moseley
 
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...Sumanth A
 
ROBOETHICS-CCS345 ETHICS AND ARTIFICIAL INTELLIGENCE.ppt
ROBOETHICS-CCS345 ETHICS AND ARTIFICIAL INTELLIGENCE.pptROBOETHICS-CCS345 ETHICS AND ARTIFICIAL INTELLIGENCE.ppt
ROBOETHICS-CCS345 ETHICS AND ARTIFICIAL INTELLIGENCE.pptJohnWilliam111370
 
KCD Costa Rica 2024 - Nephio para parvulitos
KCD Costa Rica 2024 - Nephio para parvulitosKCD Costa Rica 2024 - Nephio para parvulitos
KCD Costa Rica 2024 - Nephio para parvulitosVictor Morales
 
SOFTWARE ESTIMATION COCOMO AND FP CALCULATION
SOFTWARE ESTIMATION COCOMO AND FP CALCULATIONSOFTWARE ESTIMATION COCOMO AND FP CALCULATION
SOFTWARE ESTIMATION COCOMO AND FP CALCULATIONSneha Padhiar
 
Ch10-Global Supply Chain - Cadena de Suministro.pdf
Ch10-Global Supply Chain - Cadena de Suministro.pdfCh10-Global Supply Chain - Cadena de Suministro.pdf
Ch10-Global Supply Chain - Cadena de Suministro.pdfChristianCDAM
 
Robotics Group 10 (Control Schemes) cse.pdf
Robotics Group 10  (Control Schemes) cse.pdfRobotics Group 10  (Control Schemes) cse.pdf
Robotics Group 10 (Control Schemes) cse.pdfsahilsajad201
 
Engineering Drawing section of solid
Engineering Drawing     section of solidEngineering Drawing     section of solid
Engineering Drawing section of solidnamansinghjarodiya
 
Comparative study of High-rise Building Using ETABS,SAP200 and SAFE., SAFE an...
Comparative study of High-rise Building Using ETABS,SAP200 and SAFE., SAFE an...Comparative study of High-rise Building Using ETABS,SAP200 and SAFE., SAFE an...
Comparative study of High-rise Building Using ETABS,SAP200 and SAFE., SAFE an...Erbil Polytechnic University
 
multiple access in wireless communication
multiple access in wireless communicationmultiple access in wireless communication
multiple access in wireless communicationpanditadesh123
 
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENTFUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENTSneha Padhiar
 

Recently uploaded (20)

2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.
2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.
2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.
 
Research Methodology for Engineering pdf
Research Methodology for Engineering pdfResearch Methodology for Engineering pdf
Research Methodology for Engineering pdf
 
OOP concepts -in-Python programming language
OOP concepts -in-Python programming languageOOP concepts -in-Python programming language
OOP concepts -in-Python programming language
 
Katarzyna Lipka-Sidor - BIM School Course
Katarzyna Lipka-Sidor - BIM School CourseKatarzyna Lipka-Sidor - BIM School Course
Katarzyna Lipka-Sidor - BIM School Course
 
Prach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism CommunityPrach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism Community
 
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithm
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithmComputer Graphics Introduction, Open GL, Line and Circle drawing algorithm
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithm
 
Novel 3D-Printed Soft Linear and Bending Actuators
Novel 3D-Printed Soft Linear and Bending ActuatorsNovel 3D-Printed Soft Linear and Bending Actuators
Novel 3D-Printed Soft Linear and Bending Actuators
 
System Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event SchedulingSystem Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event Scheduling
 
Stork Webinar | APM Transformational planning, Tool Selection & Performance T...
Stork Webinar | APM Transformational planning, Tool Selection & Performance T...Stork Webinar | APM Transformational planning, Tool Selection & Performance T...
Stork Webinar | APM Transformational planning, Tool Selection & Performance T...
 
Immutable Image-Based Operating Systems - EW2024.pdf
Immutable Image-Based Operating Systems - EW2024.pdfImmutable Image-Based Operating Systems - EW2024.pdf
Immutable Image-Based Operating Systems - EW2024.pdf
 
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...
 
ROBOETHICS-CCS345 ETHICS AND ARTIFICIAL INTELLIGENCE.ppt
ROBOETHICS-CCS345 ETHICS AND ARTIFICIAL INTELLIGENCE.pptROBOETHICS-CCS345 ETHICS AND ARTIFICIAL INTELLIGENCE.ppt
ROBOETHICS-CCS345 ETHICS AND ARTIFICIAL INTELLIGENCE.ppt
 
KCD Costa Rica 2024 - Nephio para parvulitos
KCD Costa Rica 2024 - Nephio para parvulitosKCD Costa Rica 2024 - Nephio para parvulitos
KCD Costa Rica 2024 - Nephio para parvulitos
 
SOFTWARE ESTIMATION COCOMO AND FP CALCULATION
SOFTWARE ESTIMATION COCOMO AND FP CALCULATIONSOFTWARE ESTIMATION COCOMO AND FP CALCULATION
SOFTWARE ESTIMATION COCOMO AND FP CALCULATION
 
Ch10-Global Supply Chain - Cadena de Suministro.pdf
Ch10-Global Supply Chain - Cadena de Suministro.pdfCh10-Global Supply Chain - Cadena de Suministro.pdf
Ch10-Global Supply Chain - Cadena de Suministro.pdf
 
Robotics Group 10 (Control Schemes) cse.pdf
Robotics Group 10  (Control Schemes) cse.pdfRobotics Group 10  (Control Schemes) cse.pdf
Robotics Group 10 (Control Schemes) cse.pdf
 
Engineering Drawing section of solid
Engineering Drawing     section of solidEngineering Drawing     section of solid
Engineering Drawing section of solid
 
Comparative study of High-rise Building Using ETABS,SAP200 and SAFE., SAFE an...
Comparative study of High-rise Building Using ETABS,SAP200 and SAFE., SAFE an...Comparative study of High-rise Building Using ETABS,SAP200 and SAFE., SAFE an...
Comparative study of High-rise Building Using ETABS,SAP200 and SAFE., SAFE an...
 
multiple access in wireless communication
multiple access in wireless communicationmultiple access in wireless communication
multiple access in wireless communication
 
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENTFUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
 

TCP to MPTCP Brief Explanation

  • 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
  • 13. TCP CONNECTION INITIATION HOST A HOST BNETWORK 7
  • 14. TCP CONNECTION INITIATION HOST A HOST BNETWORK A sends to B: SYN Seq=ISN* =x , Ack=0 7
  • 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
  • 30. TCP TRAFFIC DURING ESTABLICHED SESSION HOST A HOST BNETWORK 8
  • 31. TCP TRAFFIC DURING ESTABLICHED SESSION HOST A HOST BNETWORK A sends to B: 100 Φ Seq=x’ , Ack=0 8
  • 32. TCP TRAFFIC DURING ESTABLICHED SESSION HOST A HOST BNETWORK A sends to B: 100 Φ Seq=x’ , Ack=0 8
  • 33. TCP TRAFFIC DURING ESTABLICHED SESSION HOST A HOST BNETWORK A sends to B: 100 Φ Seq=x’ , Ack=0 8
  • 34. TCP TRAFFIC DURING ESTABLICHED SESSION HOST A HOST BNETWORK A sends to B: 100 Φ Seq=x’ , Ack=0 8
  • 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
  • 47. TCP CLOSING CONNECTION A sends to B: FIN Seq=x, Ack=i last data received from B 9
  • 48. TCP CLOSING CONNECTION A sends to B: FIN Seq=x, Ack=i last data received from B 9
  • 49. TCP CLOSING CONNECTION A sends to B: FIN Seq=x, Ack=i last data received from B 9
  • 50. TCP CLOSING CONNECTION A sends to B: FIN Seq=x, Ack=i last data received from B 9
  • 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
  • 76. MTCP PROTOCOL STACK IP 1 LINK Physical IP 2 LINK Physical 11
  • 77. MTCP PROTOCOL STACK IP 1 LINK Physical IP 2 LINK Physical TCP Subflow 11
  • 78. MTCP PROTOCOL STACK IP 1 LINK Physical TCP Subflow IP 2 LINK Physical TCP Subflow 11
  • 79. MTCP PROTOCOL STACK IP 1 LINK Physical MPTCP TCP Subflow IP 2 LINK Physical TCP Subflow 11
  • 80. MTCP PROTOCOL STACK IP 1 LINK Physical TRANSPORT MPTCP TCP Subflow IP 2 LINK Physical TCP Subflow 11
  • 81. MTCP PROTOCOL STACK IP 1 LINK Physical TRANSPORT MPTCP TCP Subflow IP 2 LINK Physical TCP Subflow 11
  • 82. MTCP PROTOCOL STACK IP 1 APPLICATION LINK Physical TRANSPORT MPTCP TCP Subflow IP 2 LINK Physical TCP Subflow 11
  • 83. MPTCP simple scenario HOST A HOST B Address A1 Address A2 Address B1 Address B2 Initial connection setup Additional subflow setup 12
  • 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
  • 87. INITIAL CONNECTION SETUP HOST A HOST BNETWORK Address A1 Address B1 14
  • 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
  • 110. Additional subflow setup HOST A HOST B Address B1Address A2 16
  • 111. Additional subflow setup HOST A HOST B TCP: A sends to B: SYN MPTCP: MP_JOINT Address B1Address A2 16
  • 112. Additional subflow setup HOST A HOST B TCP: A sends to B: SYN MPTCP: MP_JOINT Address B1Address A2 16
  • 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
  • 137. Additional subflow setup Methode 2 (box) Add Address option 17
  • 138. Additional subflow setup Methode 2 (box) Kind Length Subtype Address ID Address (IPv4 / v6 :? IPver) Port IPVer Add Address option 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
  • 161. DATA MAPPING TCP connection HOSTA HOSTB Data 11 Data 12 Data 13 Data 14 19
  • 162. DATA MAPPING TCP connection HOSTA HOSTB Data 11 Data 12 Data 13 Data 14 19
  • 163. DATA MAPPING TCP connection HOSTA HOSTB Data 11 Data 12 Data 13 Data 14 19
  • 164. DATA MAPPING TCP connection HOSTA HOSTB Data 11 Data 12 Data 13 Data 14 19
  • 165. DATA MAPPING TCP connection HOSTA HOSTB Data 11 Data 12 Data 13 Data 14 19
  • 166. DATA MAPPING TCP connection HOSTA HOSTB Data 11 Data 12 Data 13 Data 14 19
  • 167. DATA MAPPING TCP connection HOSTA HOSTB Data 11 Data 12 Data 13 Data 14 TCP sequence reorder 19
  • 168. DATA MAPPING TCP connection HOSTA HOSTB Data 11 Data 12 Data 13 Data 14 TCP sequence reorder 19
  • 169. DATA MAPPING TCP connection HOSTA HOSTB Data 11 Data 12 Data 13 Data 14 TCP sequence reorder 19
  • 170. DATA MAPPING TCP connection HOSTA HOSTB Data 11 Data 12 Data 13 Data 14 TCP sequence reorder 19
  • 171. DATA MAPPING TCP connection HOSTA HOSTB Data 11 Data 12 Data 13 Data 14 TCP sequence reorder 19
  • 172. DATA MAPPING TCP connection HOSTA HOSTB Data 11 Data 12 Data 13 Data 14 19
  • 174. DATA MAPPING TCP connection HOSTA HOSTB Data 12 Data 13 Data 14 All data received to seq 14  Send Ack 14 19
  • 175. DATA MAPPING TCP connection HOSTA HOSTB Data 13 Data 14 All data received to seq 14  Send Ack 14 19
  • 176. DATA MAPPING TCP connection HOSTA HOSTB Data 14 All data received to seq 14  Send Ack 14 19
  • 177. DATA MAPPING TCP connection HOSTA HOSTB All data received to seq 14  Send Ack 14 19
  • 178. DATA MAPPING TCP connection HOSTA HOSTB All data received to seq 14  Send Ack 14 Ack 14 19
  • 179. DATA MAPPING TCP connection HOSTA HOSTB All data received to seq 14  Send Ack 14 Ack 14 19
  • 180. DATA MAPPING TCP connection HOSTA HOSTB All data received to seq 14  Send Ack 14 Ack 14 19
  • 181. DATA MAPPING TCP connection HOSTA HOSTB All data received to seq 14  Send Ack 14 19
  • 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
  • 184. DATA MAPPING MPTCP connection with Multiple subflows HOSTA HOSTB Application App1 TCP sub flowI TCP sub flowII 21
  • 185. DATA MAPPING MPTCP connection with Multiple subflows HOSTA HOSTB Application App1 TCP sub flowI TCP sub flowII Data 11 21
  • 186. DATA MAPPING MPTCP connection with Multiple subflows HOSTA HOSTB Application App1 TCP sub flowI TCP sub flowIIData 11 21
  • 187. DATA MAPPING MPTCP connection with Multiple subflows HOSTA HOSTB Application App1 TCP sub flowI TCP sub flowII Encapsulation MPTCP: Data Seq Number Data 11 21
  • 188. DATA MAPPING MPTCP connection with Multiple subflows HOSTA HOSTB Application App1 TCP sub flowI TCP sub flowII Encapsulation MPTCP: Data Seq Number 21
  • 189. DATA MAPPING MPTCP connection with Multiple subflows HOSTA HOSTB Application App1 TCP sub flowI TCP sub flowII Encapsulation MPTCP: Data Seq Number DSN 11 21
  • 190. DATA MAPPING MPTCP connection with Multiple subflows HOSTA HOSTB Application App1 TCP sub flowI TCP sub flowII Encapsulation MPTCP: Data Seq Number DSN 11 21
  • 191. 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 21
  • 192. 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 21
  • 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
  • 195. DATA MAPPING MPTCP connection with Multiple subflows HOSTA HOSTB Application App1 TCP sub flowI TCP sub flowII Encapsulation MPTCP: Data Seq Number DSN 11Data 13 21
  • 196. DATA MAPPING MPTCP connection with Multiple subflows HOSTA HOSTB Application App1 TCP sub flowI TCP sub flowII Encapsulation MPTCP: Data Seq Number DSN 11Data 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
  • 199. DATA MAPPING MPTCP connection with Multiple subflows HOSTA HOSTB Application App1 TCP sub flowI TCP sub flowIIDSN 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