An enhanced socket API for Mul4path TCP Benjamin Hesmans Olivier - - PowerPoint PPT Presentation

an enhanced socket api for mul4path tcp
SMART_READER_LITE
LIVE PREVIEW

An enhanced socket API for Mul4path TCP Benjamin Hesmans Olivier - - PowerPoint PPT Presentation

An enhanced socket API for Mul4path TCP Benjamin Hesmans Olivier Bonaventure UCL, Belgium http://inl.info.ucl.ac.be http://www.multipath-tcp.org Outline Mul$path TCP The proposed socket API What is Mul4path TCP ? A recently


slide-1
SLIDE 1

An enhanced socket API for Mul4path TCP

Benjamin Hesmans Olivier Bonaventure UCL, Belgium

http://inl.info.ucl.ac.be http://www.multipath-tcp.org

slide-2
SLIDE 2

Outline

  • Mul$path TCP
  • The proposed socket API
slide-3
SLIDE 3

What is Mul4path TCP ?

  • A recently standardised TCP extension that

allows packets belonging to one connec4on to be sent over different paths

– Both WiFi and LTE on smartphones – Both IPv6 and IPv4 on dual-stack but single- homed hosts – Leveraging Equal Cost Mul4path in datacenters

slide-4
SLIDE 4

Mul4path TCP

  • Mul4path TCP is an evolu.on of TCP
  • Design objec4ves

– Support unmodified applica4ons – Work over today’s networks (IPv4 and IPv6) – Work in all networks where regular TCP works

slide-5
SLIDE 5

Mul4path TCP and the architecture

Physical Datalink Network Transport Application

Mul4path TCP TCP1 socket TCP2 TCPn ...

Application

  • A. Ford, C. Raiciu, M. Handley, S. Barre, and J. Iyengar, “Architectural guidelines for mul4path TCP

development", RFC6182 2011.

slide-6
SLIDE 6

Low-latency for Siri

2005 2010 2015 2020

  • Sept. 2013

Siri uses MPTCP

WiFi 3G/LTE

Voice samples Voice samples

slide-7
SLIDE 7

WiFi/LTE Bonding

2005 2010 2015 2020 July 2015 KT uses MPTCP

WiFi 4G/LTE Multipath TCP Regular TCP SOCKS

slide-8
SLIDE 8

Hybrid Access Networks

2005 2010 2015 2020 2016 Hybrid Access Networks

DSL 4G/LTE Multipath TCP Regular TCP

Hybrid Access Gateway

TCP TCP

slide-9
SLIDE 9

Sending data over different paths ?

– A Mul.path TCP connec.on is composed of one or more regular TCP subflows that are combined

  • Each host maintains state that glues the TCP subflows

that compose a Mul4path TCP connec4on together

  • Each TCP subflow is sent over a single path and appears

like a regular TCP connec4on along this path

slide-10
SLIDE 10

Mul4path TCP Connec4on establishment

SYN+ACK, MP_CAPABLE(KeyB) ACK, MP_CAPABLE(KeyA,KeyB) seq=123, DSeq=1, "abc" SYN, MP_CAPABLE(KeyA)

TokenA=H(KeyA) TokenB=H(KeyB) TokenA=H(KeyA) TokenB=H(KeyB) First subflow established

slide-11
SLIDE 11

Establishment of the second subflow

SYN MP_JOIN[TokenB,NonceA=123]

SYN+ACK MP_JOIN[TokenA,NonceB=456, HMAC(123||456,"keyB||keyA")] ACK,MP_JOIN [HMAC(456||123,"keyA||keyB")]

TokenA=H(KeyA) TokenB=H(KeyB) TokenA=H(KeyA) TokenB=H(KeyB)

Seq=567, Dseq=4, "def"

2nd subflow established

slide-12
SLIDE 12

TCP subflows

  • Which subflows can be associated to a

Mul4path TCP connec4on ?

– At least one of the elements of the four-tuple needs to differ between two subflows

  • Local IP address
  • Remote IP address
  • Local port
  • Remote port
slide-13
SLIDE 13

Subflow agility

  • Mul4path TCP supports

– addi4on of subflows – removal of subflows

slide-14
SLIDE 14

How to control these subflows ?

  • Current reference implementa4on on Linux

– Standard socket API to support exis4ng applica4ons

  • Subflows are managed by the path manager

kernel module

– Full-mesh – NDiffports

slide-15
SLIDE 15

How to control these subflows ?

Special AF Other system calls

slide-16
SLIDE 16

Outline

  • Mul4path TCP
  • The proposed socket API
slide-17
SLIDE 17

Why using socket op4ons ?

  • getsockopt and setsockopt are well-

known and extensible

  • Rela4vely easy to implement a new socket
  • p4on
  • Can pass informa4on from app to stack as

memory buffer

  • Can retrieve informa4on from stack to app as

memory buffer

slide-18
SLIDE 18

The MPTCP socket op4ons

  • MPTCP_GET_SUB_IDS

– Retrieve the ids of the different subflows

  • MPTCP_GET_SUB_TUPLE

– Retrieve the endpoints of a specific subflow

  • MPTCP_OPEN_SUB_TUPLE

– Create a new subflow with specific endpoints

  • MPTCP_CLOSE_SUB_ID

– Closes one of the established subflows

  • MPTCP_SUB_GETSOCKOPT and

MPTCP_SUB_SETSOCKOPT

– Apply a TCP socket op4on on a specific subflow

slide-19
SLIDE 19

Currently established subflows

int i; unsigned int optlen;

struct mptcp_sub_ids *ids;

  • ptlen = 42; // must be large enough

ids = (struct mptcp_sub_ids *) malloc(optlen);

err=getsockopt(sockfd, IPPROTO_TCP, MPTCP_GET_SUB_IDS, ids, &optlen);

for(i = 0; i < ids->sub_count; i++){ printf("Subflow id : %i\n", 
 ids->sub_status[i].id); }

Subflow id

slide-20
SLIDE 20

What are the endpoints of a subflow ?

unsigned int optlen; struct mptcp_sub_tuple *sub_tuple;

  • ptlen = 100; // must be large enough

sub_tuple = (struct mptcp_sub_tuple *)malloc(optlen); sub_tuple->id = sub_id; getsockopt(sockfd, IPPROTO_TCP, MPTCP_GET_SUB_TUPLE,

sub_tuple,&optlen); sin = (struct sockaddr_in*) &sub_tuple->addrs[0];

printf("\tip src : %s src port : %hu\n", inet_ntoa(sin->sin_addr), ntohs(sin->sin_port));

sin = (struct sockaddr_in*) &sub_tuple->addrs[1];

printf("\tip dst : %s dst port : %hu\n", inet_ntoa(sin->sin_addr), ntohs(sin->sin_port));

Local endpoint Remote endpoint

slide-21
SLIDE 21

Crea4ng a subflow

unsigned int optlen; struct mptcp_sub_tuple *sub_tuple; struct sockaddr_in *addr;

  • ptlen = sizeof(struct mptcp_sub_tuple) +

2 * sizeof(struct sockaddr_in);

sub_tuple = malloc(optlen); sub_tuple->id = 0; sub_tuple->prio = 0;

addr = (struct sockaddr_in*) &sub_tuple->addrs[0];

addr->sin_family = AF_INET; addr->sin_port = htons(12345); inet_pton(AF_INET, "10.0.0.1", &addr->sin_addr);

addr = (struct sockaddr_in*) &sub_tuple->addrs[1];

addr->sin_family = AF_INET; addr->sin_port = htons(1234); inet_pton(AF_INET, "10.1.0.1", &addr->sin_addr);

error = getsockopt(sockfd, IPPROTO_TCP, MPTCP_OPEN_SUB_TUPLE, sub_tuple, &optlen);

Local endpoint Remote endpoint

slide-22
SLIDE 22

U4liza4on of the socket API

3G celltower

MPTCP enabled applica$ons will be able to accurately control their usage of the cellular and WiFi interfaces

IP 1.2.3.4 IP 5.6.7.8

slide-23
SLIDE 23

Conclusion and next steps

  • Mul4path TCP is geong deployed

– Special applica4ons (Siri) and on middleboxes

  • Socket API will enable applica4on developers to

take full control of the underlying MPTCP

– Create/delete/query subflows, apply op4ons – Next steps

  • non-blocking I/O and events with

select, recvmsg and sendmsg

  • Address management and adver4sement
  • More op4ons to control stack (e.g. scheduler)
  • Coopera4on with applica4on developers