Multipath TCP

Overview

The IETF’s Multipath
TCP (MPTCP) working group is focused on
an idea that has emerged in various forms over
recent years – namely, that a single transport
session as seen by the application layer might
be striped or otherwise multiplexed across
multiple IP layer paths between the session’s
two endpoints. An over-arching expectation is
that TCP-based applications see the
traditional TCP API, but gain performance
beneﬁts when their session transparently
utilises multiple, potentially divergent
network layer paths. These beneﬁts include
being able to stripe data over parallel paths
for additional speed (where multiple similar
paths exist concurrently), or seamlessly
maintaining TCP sessions when an individual
path fails (or becomes too ‘expensive’) or as
a mobile device’s multiple underlying network
interfaces come and go. The parts of an MPTCP
session ﬂowing over different network paths
are known as subﬂows.

In 2012 CAIA began a two related research
efforts into multipath TCP (MPTCP).

Multipath TCP for FreeBSD (with support
from Cisco Systems)

Evaluating the use of dynamic path cost
for sub-flow selection in loss-based
Multipath TCP sessions

The first project has two aims -- develop a
prototype implementation of MPTCP for FreeBSD,
then utilise that implementation to experiment
with blending loss-based and delay-based
congestion control (CC) algorithms across
sub-flows making up MPTCP connections or
sessions.

The second project has a focus on the
potential for regular loss-based MPTCP in
mobile devices to make intelligent sub-flow
selections based on path costs.

Outcomes

Released an experimental kernel patch that enables
Multipath TCP support for FreeBSD-10.x and provides the framework for
congestion control research over multipath connections. This was a non-trivial
change to the FreeBSD TCP stack that required a range of modifications within the TCP input/
output paths and associated subroutines.