A socket API to control Multipath TCP draft-hesmans-mptcp-socket-00

Slides:



Advertisements
Similar presentations
Florida State UniversityCOP Advanced Unix Programming Raw Sockets Datalink Access Chapters 25, 26.
Advertisements

MPTCP Application Considerations draft-scharf-mptcp-api-01 Michael Scharf Alan Ford IETF 77, March 2010.
Draft-ietf-mptcp-api-01 Michael Scharf, Alan Ford March 31, 2011.
MIF API Extension Discussion MIF IETF 78 Dapeng Liu Yuri Ismailov.
WELCOME! Multipath TCP Implementors Workshop Saturday 24 th July Maastricht Philip Eardley MPTCP WG Co-chair.
Opportunistic Mobility with Multipath TCP
IPv6 Technologies and Advanced Services page 1 Porting applications to IPv6 OpenH323 and IPv6 support K. Stamos Computer Engineer, University of Patras.
CSE 333 – SECTION 8 Networking and sockets. Overview Network Sockets IP addresses and IP address structures in C/C++ DNS – Resolving DNS names Demos.
Sockets: Network IPC Internet Socket UNIX Domain Socket.
Jennifer Rexford Fall 2014 (TTh 3:00-4:20 in CS 105) COS 561: Advanced Computer Networks Multipath.
TDTS21 Advanced Networking
Today’s topic: Basic TCP API –Socket –Bind –Listen –Connect –Accept –Read –Write –Close.
Jieun Song Port-Binding & Connect-Back Shellcode.
1 Socket Interfaces Professor Jinhua Guo CIS527 Fall 2003.
Tutorial 8 Socket Programming
UDP: User Datagram Protocol. UDP: User Datagram Protocol [RFC 768] r “bare bones”, “best effort” transport protocol r connectionless: m no handshaking.
Socket Addresses. Domains Internet domains –familiar with these Unix domains –for processes communicating on the same hosts –not sure of widespread use.
ISP – 9 th Recitation Socket programming – Client side.
TCP Socket Programming. r An abstract interface provided to the application programmer  File descriptor, allows apps to read/write to the network r Allows.
Socket options A way for network applications to ‘tweak’ the processing done at lower-levels of the TCP/IP stack.
Basic Socket Programming TCP/IP overview. TCP interface Reference: –UNIX Network Programming, by Richard Stevens. –UNIX man page.
TCP Socket Programming. r An abstract interface provided to the application programmer  File descriptor, allows apps to read/write to the network r Allows.
IPv6 Extensions to RPC Sumandra Majee Sun Microsystems Inc.
Client-Side Network Programming
CS345 Operating Systems Φροντιστήριο Άσκησης 2. Inter-process communication Exchange data among processes Methods –Signal –Pipe –Sockets.
LWIP TCP/IP Stack 김백규.
Server Sockets: A server socket listens on a given port Many different clients may be connecting to that port Ideally, you would like a separate file descriptor.
Unrestricted Connection Manager MIF WG IETF 79, Beijing Gaétan Feige - Cisco Pierrick Seïté, France Telecom - Orange
Sockets API Overview Sockets with UDP Sockets with TCP Fast Sockets (Fast UDP) IP Multicasting.
 Wind River Systems, Inc Chapter - 13 Network Programming.
Network Programming Eddie Aronovich mail:
Multipath TCP Update Philip Eardley, MPTCP WG Co-Chair tsvarea 1 st August, IETF-87, Berlin 1.
API Extension Discussion for MIF-enabled Hosts IETF#77 Dapeng Liu, Zhen Cao.
Introduction to Socket
Socket Programming Tutorial Department of Computer Science Southern Illinois University Edwardsville Fall, 2015 Dr. Hiroshi Fujinoki
2: Application Layer1 Chapter 2: Application layer r 2.1 Principles of network applications r 2.2 Web and HTTP r 2.3 FTP r 2.4 Electronic Mail  SMTP,
Multipath TCP ACM Queue, Volume 12 Issue 2, pp. 1-12, February 2014 Christoph Paasch and Olivier Bonaventure University College London 1.
Socket address structures Byte ordering IP address conversion
CSCI 330 UNIX and Network Programming Unit XIV: User Datagram Protocol.
1 Spring Semester 2008, Dept. of Computer Science, Technion Internet Networking recitation #7 Socket Programming.
MPTCP – MULTIPATH TCP WG meeting #1 Nov 9 th, 2009 Hiroshima, ietf-76.
IETF #57 in Viena1 IPv6 Address Assignment and Route Selection for End-to-End Multihoming Kenji Ohira Kyoto University draft-ohira-assign-select-e2e-multihome-01.txt.
API Extension Discussion for MIF-enabled Hosts IETF#77 Dapeng Liu, Zhen Cao.
Lecture 15 Socket Programming CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.
1 Socket Interface. 2 Client-Server Architecture The client is the one who speaks first Typical client-server situations  Client and server on the same.
Socket Programming(1/2). Outline  1. Introduction to Network Programming  2. Network Architecture – Client/Server Model  3. TCP Socket Programming.
1 Socket Interface. 2 Basic Sockets API Review Socket Library TCPUDP IP EthernetPPP ARP DHCP, Mail, WWW, TELNET, FTP... Network cardCom Layer 4 / Transport.
CSE 333 – SECTION 8 Client-Side Network Programming.
Jim Fawcett CSE 681 – Software Modeling & Analysis Fall 2002
Multipath TCP in SDN-enabled LEO Satellite Networks
Improving Datacenter Performance and Robustness with Multipath TCP
Socket Programming (Cont.)
Network Programming CSC- 341
Tcpcrypt The case for ubiquitous transport level encryption
Multipath TCP Yifan Peng Oct 11, 2012
Network Programming with Sockets
CSCD433 Advanced Networks Spring 2016 Lecture 16a
Socket Interface 1 Introduction 11 Socket address formats 2 API 12 13
Multi-addressed Multipath TCP
MultiPath TCP Material from
Transport layer API: Socket Programming
Multipath TCP improvements
Refs: Chapter 10, Appendix A
Deployable Multipath TCP
Sockets Programming Socket to me!.
Sockets Programming Socket to me!.
Internet Networking recitation #8
Sockets.
Today’s topic: Basic TCP API
Socket Extensions for OnDemand Mobility Management
Presentation transcript:

A socket API to control Multipath TCP draft-hesmans-mptcp-socket-00 Benjamin Hesmans Olivier Bonaventure UCL, Belgium

Multipath TCP and the architecture Application socket Application Multipath TCP Transport TCP1 TCP2 TCPn Network ... Datalink Physical Backward compatibility : socket unchanged A. Ford, C. Raiciu, M. Handley, S. Barre, and J. Iyengar, “Architectural guidelines for multipath TCP development", RFC6182 2011.

Multipath TCP deployments Initial assumption Backward compatible replacement for TCP Use by some researchers and multipath-tcp.org Existing deployments Siri (Apple) SOCKS (KT, OVH, …) Hybrid Access Networks (Tessares, …) Current Multipath TCP users need to control the utilisation of the subflows

How to control the subflows ? Current reference implementation on Linux Unmodified standard socket API to support existing applications Subflows are managed by the path manager kernel module Full-mesh use all available interfaces as soon as they are available NDiffports Use N flows per interface (assumes single-homed hosts)

What was wrong with this approach ? In theory, kernel path manager can be tuned to the user's needs but User needs vary a lot Prefer A over B if C is down Use B only for a given app Start over C and establish A if flow is long enough Writing a new path manager is difficult New path manager kernel must be shipped to support specific needs

How to control these subflows ? Special AF Other system calls

Towards a standardised MPTCP API using socket options Why socket options ? getsockopt and setsockopt are well-known and extensible Relatively easy to implement a new socket option Can pass information from app to stack as memory buffer Can retrieve information from stack to app as memory buffer Initially suggested in RFC6897, but not supported by any implementation

Implemented MPTCP socket options 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 option on a specific subflow

Currently established subflows int i; unsigned int optlen; struct mptcp_sub_ids *ids; optlen = 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

What are the endpoints of a subflow ? unsigned int optlen; struct mptcp_sub_tuple *sub_tuple; optlen = 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), Local endpoint Remote endpoint

Creating a subflow Local endpoint Remote endpoint unsigned int optlen; struct mptcp_sub_tuple *sub_tuple; struct sockaddr_in *addr; optlen = 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_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

Utilization of the socket API 3G celltower IP 1.2.3.4 IP 5.6.7.8 MPTCP enabled applications will be able to accurately control their usage of the cellular and WiFi interfaces

Status Implemented in Linux Create/delete/query subflows, apply socket options non-blocking I/O and events, e.g. with select, recvmsg and sendmsg Seeking cooperation with application developers Better understand their requirements Expose the right abstractions Next steps in IETF Add socket API to WG charter WG interest ?