MPTCP PROXY - Internet Engineering Task Force (IETF) · PDF fileMPTCP Proxy Objectives •...

21
MPTCP PROXY • Implementation Update • Interoperability • Code Release Georg Hampel, Anil Rana – Bell Labs/Alcatel-Lucent

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

Algorithmic Challenges

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

Next Steps

• New signaling features for proxy support

– Implicit proxy

– Explicit proxy

– Anchor features

draft_hampel_mptcp_proxies_anchors_00