MPTCP PROXY - Internet Engineering Task Force (IETF) · PDF fileMPTCP Proxy Objectives •...
Transcript of MPTCP PROXY - Internet Engineering Task Force (IETF) · PDF fileMPTCP Proxy Objectives •...
MPTCP PROXY
• Implementation Update
• Interoperability
• Code Release
Georg Hampel, Anil Rana – Bell Labs/Alcatel-Lucent
L1/L2 L1/L2
Native MPTCP
TCP
Application
MPTCP
Subflow
L1/L2 L1/L2
TCP
IP
Relay
IP
Subflow
IP
Application
IP
MPTCP
Native TCP MPTCP PROXY
Realization of MPTCP PROXY:
• Sequential packet processing (Packet Filter)
• No split connection.
• No stream assembly. No segment buffering.
MPTCP Proxy Objectives
• Mobility between untrusted domains
• Cellular traffic offload to untrusted domains
• Exploit MPTCP’s middlebox compliance
• Focus: Incremental deployment
– Mobile: Easy upgrade & cross-platform portability
– Network: Compliance with gateway processing
Deployment Options
TCP MPTCP
Subflow
TCP
IP
Relay
IP
Subflow
IP IP
MPTCP
TCP MPTCPTCP
IP
Relay
IP
Subflow
IP
MPTCP TCP
IP
Relay
Subflow
IP
TCP
IP
MPTCP TCP
IP
Relay
Subflow
IP
TCP
IP
Subflow
IP
MPTCP
MPTCP Proxy: How it Works.
• Multiple simultaneous subflows per connection
– Proxy MPTCP Sender: Uses one subflow at a time
– Proxy MPTCP Receiver: Multipath-capable
• MBB handover � Multipath operation for ~RTT
– New data on new subflow
– In-flight data & retransmissions of old data on old subflow
• BBM handover � Single-path operation
– Immediate cut of old subflow
– Creates & switches to new subflow, recovers lost data
• Mobility needs only one flow & congestion control
MPTCP Proxy: Packet Splitting
TCP SN � DSN � SSN
TCP AN DAN SAN
TCP SN DSN SSN
TCP AN � DAN � SAN
TCP ����
Sender
MPTCP
Sender
Select Subflow
• During seamless handover
• When peer does multipath transmission
Proxy
TCP
Receiver
MPTCP
Receiver
SFL1, DAN=4, SAN = 52 TCP AN=14 TCP
SFL2, DAN=4, SAN = 62 Receiver
MPTCP Proxy: ACK Replication
SFL1, DAN=3, SAN = 51 TCP AN=13 TCP
SFL2, DAN=3, SAN = 61 Receiver
MPTCP� SFL1, DSN=1, SSN=50 � TCP SN=11
Sender SFL2, DSN=2, SSN=60 � TCP SN=12
• Keep track SSN�DSN�TSN mapping history
MPTCP� SFL1, DSN=3, SSN=51 � TCP SN=13
Sender
Non-Monotonous Mappings
• TCP � SFL: Monotonize mappings. Impossible after break!
• SFL � TCP: Data ACK Nmb (DSS) may not be provided!
• There is no Data SACK! How to translate SFL SACK to TCP?
TCP SN
SFL SN
TCP ACK
Too aggressive ????
Very conservative ????
Sequence Space Projection
• Project ACKed SEQ space from TCP � SFL or SFL � TCP
• Requires inference: SFL ACK � Data ACK
Legitimate outside proxy multipath transmission !
TCP SN
SFL SN
TCP ACK
SFL SACK
SFL ACK
Selective ACK after Break
• TCP ACK � SFL SACK Block
• TCP SACK Block � SFL ACK
TCP SN
SFL SN
TCP ACK
SFL SACK
SFL ACK
SACK
MPTCP Proxy: Implementation
• Linux >= 2.6.14
• Packet filter: Netfilter + Netlink
• Prototype: Userspace, IPtables
• Command-line interface
App MPTCP PROXY
TCP RAW Netlink
Netfilter
IP
Queue
IP Tab
mangle
ACCEPT/DROP
filter
functions
own
packets
filtered packets
mangled
packets
input/output
packets
command
MPTCP Proxy: Feature Support
• All features of MPTCP design doc…
Except:
– IPv6
– 8 octet DSN
– ADD_ADDRESS
– DSS Checksums
– MP_FAIL
• Command line features:
– Establish/tear down of subflows
– MBB: Seamless handover between established subflows
– BBM: Breaks subflow and establishes new subflow on new interface
Interoperability Tests
TCP MPTCP
Subflow
TCP
IP
Relay
IP
Subflow
IP IP
MPTCP
TCP MPTCP Proxy Native MPTCP
• Native MPTCP: Olivier Bonaventure’s group
• Support by Christoph Paasch
Interoperability: Basic Trials
• Establishment of connections �
• Adding (multiple) subflows �
• Closing subflow(s) �
• Closing connections �
• Fast closing of connections �
Done for:
MPTCP Proxy � Native MPTCP
MPTCP Proxy � MPTCP Proxy
Interoperability: Dynamics
• MPTCP Proxy switches: MP_PRIO (3B, B=0) + MP_PRIO (3B, B=1) ����
• MPTCP Proxy breaks: REMOVE_ADDR, SFL RST ����
• Native MPTCP: multipath operation ����
Native
MPTCPTCP Host
+ MPTCP Proxy
Server Client
Native
MPTCPTCP Host
+ MPTCP Proxy
Server Client
9.0E+06
9.1E+06
9.2E+06
9.3E+06
9.4E+06
9.5E+06
9.6E+06
9.7E+06
9.8E+06
2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8
time (s)
Normalized data Seq Nmb
sack [
sack ]
dsn
dsn
dan
dan
With SACK Without SACK
Native MPTCP + server � MPTCP Proxy + client
MPTCP Proxy Switches
Native
MPTCPTCP Host
+ MPTCP Proxy
Server Client
Native
MPTCPTCP Host
+ MPTCP Proxy
Server Client
RTT = 30ms
Native MPTCP + server � MPTCP Proxy + client
Native MPTCP does multipath
0
10000
20000
30000
40000
50000
60000
70000
80000
90000
100000
0 20000 40000 60000 80000 100000 120000 140000 160000
Data SEQ/ACK Number
SFL SEQ/ACK Number
ssn
ssn
san
san
Native
MPTCPTCP Host
+ MPTCP Proxy
Server Client
Native
MPTCPTCP Host
+ MPTCP Proxy
Server Client
Native MPTCP + server � MPTCP Proxy + client
Native MPTCP does multipath
0
500000
1000000
1500000
2000000
2500000
0 200000 400000 600000 800000 1000000 1200000 1400000
SFL SEQ/ACK Number
Data SEQ/ACK Number
dsn
dsn
dan
dan
Native
MPTCPTCP Host
+ MPTCP Proxy
Server Client
Native
MPTCPTCP Host
+ MPTCP Proxy
Server Client
Code Release
• MPTCP Proxy Vs 0.9: Released on Oct 26, 2012
• Installation & Operation Guide
• http://open-innovation.alcatel-
lucent.com/projects/mptcp-proxy