The Transmission Control Protocol (TCP) is used by the vast majority of applications to transport their data reliably across the Internet and in the cloud. TCP was designed in the 1970s and has slowly evolved since then. Today’s networks are multipath: mobile devices have multiple wireless interfaces, datacenters have many redundant paths between servers, and multihoming has become the norm for big server farms. Meanwhile, TCP is essentially a single-path protocol: when a TCP connection is established, the connection is bound to the IP addresses of the two communicating hosts and these cannot change. Multipath TCP (MPTCP) is a major modification to TCP that allows multiple paths to be used simultaneously by a single transport connection. Multipath TCP circumvents the issues mentioned above and several others that affect TCP. The IETF published the Multipath TCP RFC in January 2013 and an implementation in the Linux kernel is available today from http://www.multipath-tcp.org
This tutorial will present in details the design of Multipath TCP. We will start with a presentation of the current Internet landscape and explain how various types of middleboxes have influenced the design of Multipath TCP. Second we will describe the key design choices for the connection establishment and release procedures as well as the data transfer mechanisms. We will then discuss several use cases for the deployment of Multipath TCP including improving the performance of datacenters, mobile WiFi offloading on smartphones and IPv4/IPv6 coexistence.
Olivier Bonaventure. Tutorial. Jul-2013. IETF’87 (Berlin)