<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.0.31 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-mptcp-experience-05" category="info">

  <front>
    <title abbrev="MPTCP Experience">Use Cases and Operational Experience with Multipath TCP</title>

    <author initials="O." surname="Bonaventure" fullname="Olivier Bonaventure">
      <organization>UCLouvain</organization>
      <address>
        <email>Olivier.Bonaventure@uclouvain.be</email>
      </address>
    </author>
    <author initials="C." surname="Paasch" fullname="Christoph Paasch">
      <organization>Apple, Inc.</organization>
      <address>
        <email>cpaasch@apple.com</email>
      </address>
    </author>
    <author initials="G." surname="Detal" fullname="Gregory Detal">
      <organization>Tessares</organization>
      <address>
        <email>Gregory.Detal@tessares.net</email>
      </address>
    </author>

    <date year="2016" month="July" day="08"/>

    <area>Transport</area>
    <workgroup>MPTCP Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document discusses both use cases and operational experience with
Multipath TCP in real world networks. It lists several prominent use
cases for which Multipath TCP has been considered and is being used.
It also gives insight to some heuristics and decisions that have
helped to realize these use cases.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>Multipath TCP was standardized in <xref target="RFC6824"/> and five independent implementations
have been developed <xref target="I-D.eardley-mptcp-implementations-survey"/>. As
of September 2015, Multipath TCP has been or is being implemented on
the following platforms:</t>

<t><list style="symbols">
  <t>Linux kernel <xref target="MultipathTCP-Linux"/></t>
  <t>Apple iOS and MacOS <xref target="Apple-MPTCP"/></t>
  <t>Citrix load balancers</t>
  <t>FreeBSD <xref target="FreeBSD-MPTCP"/></t>
  <t>Oracle</t>
</list></t>

<t>The first three implementations
<xref target="I-D.eardley-mptcp-implementations-survey"/> are known to
interoperate. The last two are currently being tested and improved
against the Linux implementation. Three of these implementations are
open-source. Apple’s implementation is widely deployed.</t>

<t>Since the publication of <xref target="RFC6824"/>, experience has been
gathered by various  network researchers and users about the
operational issues that arise when Multipath TCP is used in
today’s Internet.</t>

<t>When the MPTCP working group was created, several use cases for
Multipath TCP were identified <xref target="RFC6182"/>. Since then, other use cases
have been proposed and some have been tested and even deployed. We
describe these use cases in  <xref target="usecases"/>.</t>

<t><xref target="operexp"/> focuses on the operational
experience with Multipath TCP. Most of this experience
comes from the utilisation of the Multipath TCP implementation
in the Linux kernel <xref target="MultipathTCP-Linux"/>. This
open-source implementation has been downloaded and is used by
thousands of users all over the world. Many of these users have
provided direct or indirect feedback by writing documents (scientific
articles or blog messages) or posting to the mptcp-dev mailing list
(see   https://listes-2.sipr.ucl.ac.be/sympa/arc/mptcp-dev ).
This Multipath TCP implementation is actively maintained and
continuously improved. It is used on various types of hosts,
ranging from smartphones or embedded routers to high-end servers.</t>

<t>The Multipath TCP implementation in the Linux kernel is not,
by far, the most widespread deployment of Multipath
TCP. Since September 2013, Multipath TCP is also supported on
smartphones and tablets running iOS7 <xref target="IOS7"/>. There are likely
hundreds of millions of Multipath TCP enabled devices. However,
this particular Multipath TCP implementation is currently only
used to support a single application. Unfortunately, there is
no public information about the lessons learned from this large
scale deployment.</t>

<t><xref target="operexp"/> is organized as follows.
Supporting the middleboxes was one of the difficult issues in
designing the Multipath TCP protocol. We explain in  <xref target="mbox"/>
which types of middleboxes the Linux Kernel implementation of
Multipath TCP supports and how it reacts upon encountering
these.  <xref target="congestion"/> summarises the MPTCP specific
congestion controls that have been implemented.  <xref target="pm"/> to
<xref target="scheduler"/> discuss heuristics and issues with respect to subflow
management as well as the scheduling across the subflows. 
<xref target="mss"/> explains some problems that occurred with subflows having
different Maximum Segment Size (MSS) values.  <xref target="cdn"/> presents issues with respect
to content delivery networks and suggests a solution to this issue.
Finally,  <xref target="wifi"/> documents an issue with captive portals
where MPTCP  will behave suboptimally.</t>

</section>
<section anchor="usecases" title="Use cases">

<t>Multipath TCP has been tested in several use cases. There is already
an abundant scientific literature on Multipath TCP <xref target="MPTCPBIB"/>.
Several of the papers published in the scientific literature have
identified possible improvements that are worth being discussed here.</t>

<section anchor="dc" title="Datacenters">

<t>A first, although initially unexpected, documented use case for
Multipath TCP has been in datacenters
<xref target="HotNets"/><xref target="SIGCOMM11"/>. Today’s datacenters are designed to provide
several paths between single-homed servers. The multiplicity of these
paths comes from the utilization of Equal Cost Multipath (ECMP) and
other load balancing techniques inside the datacenter. Most of the
deployed load balancing techniques in datacenters rely on hashes
computed over the five tuple. Thus all packets from the same TCP
connection follow the same path and so are not reordered.
The results in <xref target="HotNets"/> demonstrate by
simulations that Multipath TCP can achieve a better utilization of the
available network by using multiple subflows for each Multipath TCP
session. Although <xref target="RFC6182"/> assumes that at least one of the
communicating hosts has several IP addresses, <xref target="HotNets"/> demonstrates
that Multipath TCP is beneficial when both hosts are single-homed. This
idea is analysed in more details in <xref target="SIGCOMM11"/> where  the Multipath TCP
implementation in the Linux kernel is modified to be able to use
several subflows from the same IP address. Measurements in a public
datacenter show the quantitative benefits of Multipath TCP
<xref target="SIGCOMM11"/> in this environment.</t>

<t>Although ECMP is widely used inside datacenters, this is not the only
environment where there are different paths between a pair of hosts.
ECMP and other load balancing techniques such as Link Aggregation
Groups (LAG) are widely used
in today’s networks and having multiple paths between a pair of
single-homed hosts is becoming the norm instead of the exception.
Although these multiple paths have often the same cost (from an IGP
metrics viewpoint), they do not necessarily have the same performance.
For example, <xref target="IMC13c"/> reports the results of a long measurement
study showing that load balanced Internet paths between that same pair
of hosts can have huge delay differences.</t>

</section>
<section anchor="smartphones" title="Cellular/WiFi Offload">

<t>A second use case that has been explored by several network
researchers is the cellular/WiFi offload use case. Smartphones or
other mobile devices equipped with two wireless interfaces are a very
common use case for Multipath TCP. In September 2015, this is also
the largest deployment of Multipath-TCP enabled devices <xref target="IOS7"/>.
It has been briefly discussed during IETF88 <xref target="ietf88"/>, but there is
no published paper or report that analyses this deployment.
For this reason, we only discuss published papers that have mainly
used the Multipath TCP implementation in the Linux kernel for
their experiments.</t>

<t>The performance of Multipath TCP in wireless networks was briefly
evaluated in <xref target="NSDI12"/>. One experiment analyzes the performance of
Multipath TCP on a client with two wireless interfaces. This
evaluation shows that when the receive window is large, Multipath TCP
can efficiently use the two available links. However, if the window
becomes smaller, then packets sent on a slow path can block the
transmission of packets on a faster path. In some cases, the
performance of Multipath TCP over two paths can become lower than the
performance of regular TCP over the best performing path. Two
heuristics, reinjection and penalization, are proposed in <xref target="NSDI12"/>
to solve this identified performance problem. These two heuristics
have since been used in the Multipath TCP implementation in the Linux
kernel. <xref target="CONEXT13"/> explored the problem in more detail and revealed
some other scenarios where Multipath TCP can have difficulties in
efficiently pooling the available paths. Improvements to the Multipath
TCP implementation in the Linux kernel are proposed in <xref target="CONEXT13"/>
to cope with some of these problems.</t>

<t>The first experimental analysis of Multipath TCP in a public wireless
environment was presented in <xref target="Cellnet12"/>. These measurements explore
the ability of Multipath TCP to use two wireless networks (real WiFi
and 3G networks). Three modes of operation are compared. The first
mode of operation is the simultaneous use of the two wireless
networks. In this mode, Multipath TCP pools the available resources
and uses both wireless interfaces. This mode provides fast handover
from WiFi to cellular or the opposite when the user
moves. Measurements presented in <xref target="CACM14"/> show that the handover
from one wireless network to another is not an abrupt process. When
a host moves, there are regions where the quality
of one of the  wireless networks is weaker than the other, but the
host considers this wireless network to still be up. When a mobile
host enters such regions, its ability to send packets over another
wireless network is important to ensure a smooth handover. This is
clearly illustrated from the packet trace discussed in <xref target="CACM14"/>.</t>

<t>Many cellular networks use volume-based pricing and users often prefer
to use unmetered WiFi networks when available instead of metered
cellular networks. <xref target="Cellnet12"/> implements support for the
MP_PRIO option to explore two other modes of operation.</t>

<t>In the backup mode, Multipath TCP opens a TCP subflow over each
interface, but the cellular interface is configured in backup mode.
This implies that data only flows over only the WiFi interface when both
interfaces are considered to be active. If the WiFi interface fails,
then the traffic switches quickly to the cellular interface, ensuring
a smooth handover from the user’s viewpoint <xref target="Cellnet12"/>. The cost of
this approach is that the WiFi and cellular interfaces are likely to
remain active all the time since all subflows are established over
the two interfaces.</t>

<t>The single-path mode is slightly different. This mode benefits from
the break-before-make capability of Multipath TCP. When an MPTCP
session is established, a subflow is created over the WiFi interface.
No packet is sent over the cellular interface as long as the WiFi
interface remains up <xref target="Cellnet12"/>. This implies that the cellular
interface can remain idle and battery capacity is preserved. When the
WiFi interface fails, a new subflow is established over the cellular
interface in order to preserve the established Multipath TCP sessions.
Compared to the backup mode described earlier, measurements
reported in <xref target="Cellnet12"/> indicate that this mode of operation
is characterised by a throughput drop while the cellular interface is
brought up and the subflows are reestablished.</t>

<t>From a protocol viewpoint, <xref target="Cellnet12"/> discusses the problem posed
by the unreliability of the REMOVE_ADDR option and proposes a small
protocol extension to allow hosts to reliably exchange this
option. It would be useful to analyze packet traces to understand
whether the unreliability of the REMOVE_ADDR option poses an
operational problem in real deployments.</t>

<t>Another study of the performance of Multipath TCP in wireless networks
was reported  in <xref target="IMC13b"/>. This study uses laptops connected to
various cellular ISPs and WiFi hotspots. It compares various file
transfer scenarios. <xref target="IMC13b"/> observes that 4-path MPTCP
outperforms 2-path MPTCP, especially for larger files.
However, for three congestion control algorithms (LIA, OLIA and Reno - see <xref target="congestion"/>),
there is no significant performance difference for file sizes smaller than 4MB.</t>

<t>A different study of the performance of Multipath TCP with two
wireless networks is presented in <xref target="INFOCOM14"/>. In this study the
two networks had different qualities : a good network and a lossy
network. When using two paths with different packet loss ratios, the
Multipath TCP congestion control scheme moves traffic away from the
lossy link that is considered to be congested. However, <xref target="INFOCOM14"/>
documents an interesting scenario that is summarised in 
<xref target="figsimple"/>.</t>

<figure title="Simple network topology" anchor="figsimple"><artwork><![CDATA[
client ----------- path1 -------- server
  |                                  |
  +--------------- path2 ------------+

]]></artwork></figure>

<t>Initially, the two paths have the same quality and Multipath TCP
distributes the load over both of them. During the transfer, the
second path becomes lossy, e.g. because the client moves. Multipath
TCP detects the packet losses and they are retransmitted over the
first path. This enables the data transfer to continue over the first
path. However, the subflow over the second path is still up and
transmits one packet from time to time. Although the N packets have
been acknowledged over the first subflow (at the MPTCP level), they
have not been acknowledged at the TCP level over the second
subflow. To preserve the continuity of the sequence numbers over the
second subflow, TCP will continue to retransmit these segments until
either they are acknowledged or the maximum number of retransmissions
is reached. This behavior is clearly inefficient and may lead to
blocking since the second subflow will consume window space to be able
to retransmit these packets. <xref target="INFOCOM14"/> proposes a new Multipath
TCP option to solve this problem. In practice, a new TCP option is
probably not required. When the client detects that the data
transmitted over the second subflow has been acknowledged over the
first subflow, it could decide to terminate the second subflow by
sending a RST segment. If the interface associated to this subflow is
still up, a new subflow could be immediately reestablished. It would
then be immediately usable to send new data and would not be forced
to first retransmit the previously transmitted data. As of this
writing, this dynamic management of the subflows is not yet
implemented in the Multipath TCP implementation in the Linux kernel.</t>

<t>Some studies have started to analyse the performance of Multipath TCP on
smartphones with real applications. In contrast with the bulk transfers
that are used by many publications, real applications do not exchange huge amounts
of data and establish a large number of small connections. <xref target="COMMAG2016"/>
proposes a software testing framework that allows to automate Android 
applications to study their interactions with Multipath TCP. 
<xref target="PAM2016"/> analyses a one-month packet trace of all the packets exchanged
by a dozen of smartphones used by regular users. This analysis reveals 
that short connections are important on smartphones and that the main
benefit of using Multipath TCP on smartphones is the ability to perform
seamless handovers between different wireless networks. Long connections
benefit from these handovers.</t>

</section>
<section anchor="proxy" title="Multipath TCP proxies">

<t>As Multipath TCP is not yet widely deployed on both clients and servers,
several deployments have used various forms of proxies. Two families
of solutions are currently being used or tested <xref target="I-D.deng-mptcp-proxy"/>.</t>

<t>A first use case is when a Multipath TCP enabled client wants to use
several interfaces to reach a regular TCP server. A typical use case
is a smartphone that needs to use both its WiFi and its cellular 
interface to transfer data. Several types of proxies are possible
for this use case. An HTTP proxy deployed on a Multipath TCP capable
server would enable the smartphone to use Multipath TCP to access
regular web servers. Obviously, this solution only works for applications
that rely on HTTP. Another possibility is to use a proxy that can
convert any Multipath TCP connection into a regular TCP connection.
Multipath TCP-specific proxies have been proposed <xref target="I-D.wei-mptcp-proxy-mechanism"/> 
<xref target="HotMiddlebox13b"/> <xref target="I-D.hampel-mptcp-proxies-anchors"/>.</t>

<t>Another possibility leverages the SOCKS protocol <xref target="RFC1928"/>. SOCKS
is often used in enterprise networks to allow clients to reach
external servers. For this, the client opens a TCP connection to the
SOCKS server that relays it to the final destination. If both the client
and the SOCKS server use Multipath TCP, but not the final destination,
then Multipath TCP can still be used on the path between the client
and the SOCKS server. At IETF’93, Korea Telecom announced that they
have deployed in June 2015 a commercial service that uses Multipath
TCP on smartphones. These smartphones access regular TCP servers
through a SOCKS proxy. This enables them to achieve throughputs of up
to 850 Mbps <xref target="KT"/>.</t>

<t>Measurements performed with Android smartphones <xref target="Mobicom15"/> show that
popular applications work correctly through a SOCKS
proxy and Multipath TCP enabled smartphones. 
Thanks to Multipath TCP, long-lived connections can be spread over the two
available interfaces. However, for short-lived connections, most of the data
is sent over the initial subflow that is created over the interface
corresponding to the default route and the second subflow is almost
not used <xref target="PAM2016"/>.</t>

<t>A second use case is when Multipath TCP is used by middleboxes, typically
inside access networks. Various network operators are discussing and
evaluating solutions for hybrid access networks <xref target="BBF-WT348"/>. 
Such networks arise
when a network operator controls two different access network
technologies, e.g. wired and cellular, and wants to combine them to improve the bandwidth
offered to the endusers <xref target="I-D.lhwxz-hybrid-access-network-architecture"/>.
Several solutions are currently investigated for such networks
<xref target="BBF-WT348"/>.
<xref target="fighybrid"/> shows the organisation of such a network. When a client
creates a normal TCP connection, it is intercepted by the Hybrid CPE 
(HPCE) that converts it in a Multipath TCP connection so that it
can use the available access networks (DSL and LTE in the example).
The Hybrid Access Gateway (HAG) does the opposite to ensure that the
regular server sees a normal TCP connection. Some of the solutions
that are currently discussed for hybrid networks use
Multipath TCP on the HCPE and the HAG. Other solutions rely on
tunnels between the HCPE and the
HAG <xref target="I-D.lhwxz-gre-notifications-hybrid-access"/>.</t>

<figure title="Hybrid Access Network" anchor="fighybrid"><artwork><![CDATA[
client --- HCPE ------ DSL ------- HAG --- internet --- server 
            |                       |
            +------- LTE -----------+

]]></artwork></figure>

</section>
</section>
<section anchor="operexp" title="Operational Experience">

<section anchor="mbox" title="Middlebox interference">

<t>The interference caused by various types of middleboxes has been
an important concern during the design of the Multipath TCP protocol.
Three studies on the interactions between Multipath TCP and
middleboxes are worth discussing.</t>

<t>The first analysis appears in <xref target="IMC11"/>. This paper was the main
motivation for Multipath TCP incorporating various techniques to
cope with middlebox interference. More specifically, Multipath TCP
has been designed to cope with middleboxes that :</t>

<t><list style="symbols">
  <t>change source or destination addresses</t>
  <t>change source or destination port numbers</t>
  <t>change TCP sequence numbers</t>
  <t>split or coalesce segments</t>
  <t>remove TCP options</t>
  <t>modify the payload of TCP segments</t>
</list></t>

<t>These middlebox interferences have all been included in the MBtest
suite <xref target="MBTest"/>. This test suite is used in <xref target="HotMiddlebox13"/>
to verify the reaction of the Multipath TCP implementation in the
Linux kernel when faced with middlebox interference.  The test
environment used for this evaluation is a dual-homed client connected
to a single-homed server. The middlebox behavior can be activated on
any of the paths. The main results of this analysis are :</t>

<t><list style="symbols">
  <t>the Multipath TCP implementation in the Linux kernel is not
affected by a middlebox that performs NAT or modifies TCP sequence numbers</t>
  <t>when a middlebox removes the MP_CAPABLE option from the initial
SYN segment, the Multipath TCP implementation in the Linux kernel
falls back correctly to regular TCP</t>
  <t>when a middlebox removes the DSS option from all data segments, the
Multipath TCP implementation in the Linux kernel falls back correctly
to regular TCP</t>
  <t>when a middlebox performs segment coalescing, the Multipath TCP
implementation in the Linux kernel is still able to accurately extract
the data corresponding to the indicated mapping</t>
  <t>when a middlebox performs segment splitting, the Multipath TCP
implementation in the Linux kernel correctly reassembles the data
corresponding to the indicated mapping. <xref target="HotMiddlebox13"/> shows on
figure 4 in section 3.3
a corner case with segment splitting that may lead to a
desynchronisation between the two hosts.</t>
</list></t>

<t>The interactions between Multipath TCP and real deployed middleboxes
is also analyzed in <xref target="HotMiddlebox13"/> and a particular scenario with
the FTP application level gateway running on a NAT is described.</t>

<t>Middlebox interference can also be detected by analysing packet
traces on Multipath TCP enabled servers. 
A closer look at the packets received on the multipath-tcp.org server 
<xref target="TMA2015"/> shows that among the 184,000 Multipath TCP connections, 
only 125 of them were falling back to regular TCP. These connections
originated from 28 different client IP addresses. These include 91 HTTP 
connections and 34 FTP connections. The FTP interference is expected 
and due to Application Level Gateways running home routers. The HTTP 
interference appeared only on the direction from server to client and 
could have been caused by transparent proxies deployed in cellular 
or enterprise networks. A longer trace is discussed in <xref target="COMCOM2016"/> and
similar conclusions about the middlebox interference are provided.</t>

<t>From an operational viewpoint, knowing that Multipath TCP can cope
with various types of middlebox interference is important. However,
there are situations where the network operators need to gather
information about where a particular middlebox interference
occurs. The tracebox software <xref target="tracebox"/> described in <xref target="IMC13a"/> is
an extension of the popular traceroute software that enables network
operators to check at which hop a particular field of the TCP header
(including options) is modified. It has been used by several network
operators to debug various middlebox interference problems. tracebox
includes a scripting language that enables its user to specify
precisely which packet (including IP and TCP options) 
is sent by the source. tracebox sends packets
with an increasing TTL/HopLimit and compares the information returned
in the ICMP messages with the packet that it sent. This enables
tracebox to detect any interference caused by middleboxes on a given
path. tracebox works better when routers implement the ICMP extension
defined in <xref target="RFC1812"/>.</t>

<t>Users of the Multipath TCP implementation have reported some
experience with middlebox interference. The strangest scenario has
been a middlebox that accepts the Multipath TCP options in the SYN
segment but later replaces Multipath TCP options with a TCP EOL
option <xref target="StrangeMbox"/>. This causes Multipath TCP to perform a
fallback to regular TCP without any impact on the application.</t>

</section>
<section anchor="congestion" title="Congestion control">

<t>Congestion control has been an important problem for Multipath
TCP. The standardised congestion control scheme for Multipath TCP is
defined in <xref target="RFC6356"/> and <xref target="NSDI11"/>. This congestion control scheme
has been implemented in the Linux implementation of Multipath
TCP. Linux uses a modular architecture to support various congestion
control schemes. This architecture is applicable for both regular TCP
and Multipath TCP. While the coupled congestion control scheme defined
in <xref target="RFC6356"/> is the default congestion control scheme in the Linux
implementation, other congestion control schemes have been added. The
second congestion control scheme is OLIA <xref target="CONEXT12"/>. This congestion
control scheme is also an adaptation of the NewReno single path
congestion control scheme to support multiple paths. Simulations and
measurements have shown that it provides some performance benefits
compared to the the default congestion control scheme
<xref target="CONEXT12"/>. Measurements over a wide range of parameters reported in
<xref target="CONEXT13"/> also indicate some benefits with the OLIA congestion
control scheme. Recently, a delay-based congestion control scheme has
been ported to the Multipath TCP implementation in the Linux
kernel. This congestion control scheme has been evaluated by using
simulations in <xref target="ICNP12"/>. The fourth congestion control scheme that
has been included in the Linux implementation of Multipath TCP
is the BALIA scheme <xref target="I-D.walid-mptcp-congestion-control"/>.</t>

<t>These different congestion control schemes have been compared in
several articles. <xref target="CONEXT13"/> and <xref target="PaaschPhD"/> compare these algorithms in an emulated
environment. The evaluation showed that the delay-based congestion
control scheme is less able to efficiently use the available links
than the three other schemes. Reports from some users indicate that
they seem to favor OLIA.</t>

</section>
<section anchor="pm" title="Subflow management">

<t>The multipath capability of Multipath TCP comes from the utilisation
of one subflow per path. The Multipath TCP architecture <xref target="RFC6182"/>
and the protocol specification <xref target="RFC6824"/> define the basic usage of
the subflows and the protocol mechanisms that are required to create
and terminate them. However, there are no guidelines on how subflows
are used during the lifetime of a Multipath TCP session. Most of the
published experiments with Multipath TCP have been performed in controlled
environments. Still, based on the experience running them and
discussions on the mptcp-dev mailing list, interesting lessons have
been learned about the management of these subflows.</t>

<t>From a subflow viewpoint, the Multipath TCP protocol is completely
symmetrical. Both the clients and the server have the capability 
to create subflows. However in practice the existing Multipath TCP
implementations <xref target="I-D.eardley-mptcp-implementations-survey"/> have
opted for a strategy where only the client creates new subflows. 
The main motivation for this strategy is that often the client 
resides behind a NAT or a firewall, preventing passive subflow 
openings on the client. Although there are environments such as 
datacenters where this problem does not occur, as of this writing,
no precise requirement has emerged for allowing the server to 
create new subflows.</t>

</section>
<section anchor="implemented-subflow-managers" title="Implemented subflow managers">

<t>The Multipath TCP implementation in the Linux kernel includes 
several strategies to manage the subflows that compose a Multipath
TCP session. The basic subflow manager is the full-mesh. As the 
name implies, it creates a full-mesh of subflows between the 
communicating hosts.</t>

<t>The most frequent use case for this subflow manager is a multihomed
client connected to a single-homed server. In this case, one subflow
is created for each interface on the client. The current 
implementation of the full-mesh subflow manager is static. The subflows
are created immediately after the creation of the initial subflow. If 
one subflow fails during the lifetime of the Multipath TCP session 
(e.g. due to excessive retransmissions, or the loss of the 
corresponding interface), it is not always reestablished. There is 
ongoing work to enhance the full-mesh path manager to deal with 
such events.</t>

<t>When the server is multihomed, using the full-mesh subflow manager 
may lead to a large number of subflows being established. For example, 
consider a dual-homed client connected to a server with three 
interfaces. In this case, even if the subflows are only created by 
the client, 6 subflows will be established. This may be excessive 
in some environments, in particular when the client and/or the server 
have a large number of interfaces. A recent draft has proposed
a Multipath TCP option to negotiate the maximum number
of subflows. 
However, it should be noted that there have been reports on the 
mptcp-dev mailing indicating that users rely on Multipath TCP to 
aggregate more than four different interfaces. Thus, there is a 
need for supporting many interfaces efficiently.</t>

<t>Creating subflows between multihomed clients and servers may 
sometimes lead to operational issues as observed by discussions 
on the mptcp-dev mailing list. In some cases the network operators
would like to have a better control on how the subflows are 
created by Multipath TCP <xref target="I-D.boucadair-mptcp-max-subflow"/>. 
This might require the definition of policy rules to control 
the operation of the subflow manager. The two scenarios below 
illustrate some of these requirements.</t>

<figure title="Simple switched network topology" anchor="figswitched"><artwork><![CDATA[
        host1 ----------  switch1 ----- host2
          |                   |            |
          +--------------  switch2 --------+

]]></artwork></figure>

<t>Consider the simple network topology shown in <xref target="figswitched"/>. 
From an operational viewpoint, a network operator could want to 
create two subflows between the communicating hosts. From a bandwidth
utilization viewpoint, the most natural paths are host1-switch1-host2 
and host1-switch2-host2. However, a Multipath TCP implementation 
running on these two hosts may sometimes have difficulties to 
obtain this result.</t>

<t>To understand the difficulty, let us consider different allocation
strategies for the IP addresses. A first strategy is to assign two
subnets : subnetA (resp. subnetB) contains the IP addresses of 
host1’s interface to switch1 (resp. switch2) and host2’s interface
to switch1 (resp. switch2). In this case, a Multipath TCP subflow
manager should only create one subflow per subnet. To enforce the 
utilization of these paths, the network operator would have to 
specify a policy that prefers the subflows in the same subnet over 
subflows between addresses in different subnets. It should be noted
that the policy should probably also specify how the subflow manager
should react when an interface or subflow fails.</t>

<t>A second strategy is to use a single subnet for all IP addresses. 
In this case, it becomes more difficult to specify a policy that 
indicates which subflows should be established.</t>

<t>The second subflow manager that is currently supported by the 
Multipath TCP implementation in the Linux kernel is the ndiffport 
subflow manager. This manager was initially created to exploit 
the path diversity that exists between single-homed hosts due to 
the utilization of flow-based load balancing techniques <xref target="SIGCOMM11"/>.
This subflow manager creates N subflows between the same pair of IP 
addresses. The N subflows are created by the client and differ 
only in the source port selected by the client. It was not
designed to be used on multihomed hosts.</t>

<t>A more flexible subflow manager has been proposed, implemented
and evaluated in <xref target="CONEXT15"/>. This subflow manager exposes various
kernel events to a user space daemon that decides when subflows
need to be created and terminated based on various policies.</t>

</section>
<section anchor="subflow-destination-port" title="Subflow destination port">

<t>The Multipath TCP protocol relies on the token contained in the 
MP_JOIN option to associate a subflow to an existing Multipath
TCP session. This implies that there is no restriction on the
source address, destination address and source or destination
ports used for the new subflow. The ability to use different
source and destination addresses is key to support multihomed
servers and clients. The ability to use different destination
port numbers is worth discussing because it has operational
implications.</t>

<t>For illustration, consider a dual-homed client that creates a
second subflow to reach a single-homed server as illustrated in
<xref target="figmultihomed"/>.</t>

<figure title="Multihomed-client connected to single-homed server" anchor="figmultihomed"><artwork><![CDATA[
        client ------- r1 --- internet --- server
            |                   |
            +----------r2-------+

]]></artwork></figure>

<t>When the Multipath TCP implementation in the Linux kernel creates
the second subflow it uses the same destination port as the initial
subflow. This choice is motivated by the fact that the server might
be protected by a firewall and only accept TCP connections
(including subflows) on the official port number. Using the same
destination port for all subflows is also useful for operators
that rely on the port numbers to track application usage in their
network.</t>

<t>There have been suggestions from Multipath TCP users to modify the
implementation to allow the client to use different destination
ports to reach the server. This suggestion seems mainly motivated
by traffic shaping middleboxes that are used in some wireless
networks. In networks where different shaping rates are associated
to different destination port numbers, this could allow Multipath
TCP to reach a higher performance. As of this writing, we are not
aware of any implementation of this kind of tweaking.</t>

<t>However, from an implementation point-of-view supporting different
destination ports for the same Multipath TCP connection can cause
some issues. A legacy implementation of a TCP stack
creates a listening socket to react upon incoming SYN segments.
The listening socket is handling the SYN segments that are sent
on a specific port number. Demultiplexing incoming segments can
thus be done solely by looking at the IP addresses and the port
numbers. With Multipath TCP however, incoming SYN segments may
have an MP_JOIN option with a different destination port. This
means, that all incoming segments that did not match on an existing
listening-socket or an already established socket must be parsed
for an eventual MP_JOIN option. This imposes an additional cost
on servers, previously not existent on legacy TCP implementations.</t>

</section>
<section anchor="closing-subflows" title="Closing subflows">

<figure title="Multipath TCP may not be able to avoid time-wait state on the subflow (indicated as &quot;Sub" anchor="figtimewait"><artwork><![CDATA[
                 client                       server
                    |                           |
MPTCP: established  |                           | MPTCP: established
Sub: established    |                           | Sub: established
                    |                           |
                    |         DATA_FIN          |
MPTCP: close-wait   | <------------------------ | close()   (step 1)
Sub: established    |         DATA_ACK          |
                    | ------------------------> | MPTCP: fin-wait-2
                    |                           | Sub: established
                    |                           |
                    |  DATA_FIN + subflow-FIN   |
close()/shutdown()  | ------------------------> | MPTCP: time-wait
(step 2)            |        DATA_ACK           | Sub: close-wait
MPTCP: closed       | <------------------------ |
Sub: fin-wait-2     |                           |
                    |                           |
                    |        subflow-FIN        |
MPTCP: closed       | <------------------------ | subflow-close()
Sub: time-wait      |        subflow-ACK        |
(step 3)            | ------------------------> | MPTCP: time-wait
                    |                           | Sub: closed
                    |                           |

]]></artwork></figure>

<t><xref target="figtimewait"/> shows a very particular issue within Multipath TCP.
Many high-performance applications try to avoid Time-Wait state by
deferring the closure of the connection until the peer has sent a
FIN. That way, the client on the left of <xref target="figtimewait"/> does a
passive closure of the connection, transitioning from Close-Wait
to Last-ACK and finally freeing the resources after reception of the
ACK of the FIN. An application running on top of a Multipath TCP
enabled Linux kernel might also use this approach. The difference
here is that the close() of the connection (Step 1 in <xref target="figtimewait"/>)
only triggers the sending of a DATA_FIN. Nothing guarantees that the
kernel is ready to combine the DATA_FIN with a subflow-FIN. The
reception of the DATA_FIN will make the application trigger the
closure of the connection (step 2), trying to avoid Time-Wait state
with this late closure. This time, the kernel might decide to combine
the DATA_FIN with a subflow-FIN. This decision will be fatal, as the
subflow’s state machine will not transition from Close-Wait to
Last-Ack, but rather go through Fin-Wait-2 into Time-Wait state.
The Time-Wait state will consume resources on the host for at least
2 MSL (Maximum Segment Lifetime). Thus, a smart application that
tries to avoid Time-Wait state by doing late closure of the
connection actually ends up with one of its subflows in Time-Wait
state. A high-performance Multipath TCP kernel implementation should
honor the desire of the application to do passive closure of the
connection and successfully avoid Time-Wait state - even on the
subflows.</t>

<t>The solution to this problem lies in an optimistic assumption that
a host doing active-closure of a Multipath TCP connection by sending
a DATA_FIN will soon also send a FIN on all its subflows. Thus,
the passive closer of the connection can simply wait for the peer to
send exactly this FIN - enforcing passive closure even on the
subflows. Of course, to avoid consuming resources indefinitely,
a timer must limit the time our implementation waits for the FIN.</t>

</section>
<section anchor="scheduler" title="Packet schedulers">

<t>In a Multipath TCP implementation, the packet scheduler is the
algorithm that is executed when transmitting each packet to decide
on which subflow it needs to be transmitted. The packet scheduler
itself does not have any impact on the interoperability of Multipath
TCP implementations. However, it may clearly impact the performance
of Multipath TCP sessions. The Multipath TCP implementation in the
Linux kernel supports a pluggable architecture for the packet
scheduler <xref target="PaaschPhD"/>. As of this writing, two schedulers have
been implemented: round-robin and lowest-rtt-first. The second
scheduler relies on the round-trip-time (rtt) measured on each TCP
subflow and sends first segments over the subflow having the lowest round-trip-time.
They are compared
in <xref target="CSWS14"/>. The experiments and measurements described in
<xref target="CSWS14"/> show that the lowest-rtt-first scheduler appears to
be the best compromise from a performance viewpoint.
Another study of the packet schedulers is presented in <xref target="PAMS2014"/>.
This study relies on simulations with the Multipath TCP implementation
in the Linux kernel. They compare the lowest-rtt-first with the
round-robin and a random scheduler. They show some situations
where the lowest-rtt-first scheduler does not perform as well as
the other schedulers, but there are many scenarios where the
opposite is true. <xref target="PAMS2014"/> notes that “it is highly likely that
the optimal scheduling strategy depends on the characteristics of the
paths being used.”</t>

</section>
<section anchor="mss" title="Segment size selection">

<t>When an application performs a write/send system call, the kernel 
allocates a packet buffer (sk_buff in Linux) to store the data the 
application wants to send. The kernel will store at most one MSS 
(Maximum Segment Size) of data per buffer. As the MSS can differ amongst 
subflows, an MPTCP implementation must select carefully the MSS used 
to generate application data. The Linux kernel implementation 
had various ways of selecting the MSS: minimum or maximum amongst the 
different subflows. However, these heuristics of MSS selection can
cause significant performance issues in some environment. Consider the following 
example. An MPTCP connection has two established subflows that 
respectively use a MSS of 1420 and 1428 bytes. If MPTCP selects
the maximum,
then the application will generate segments of 1428 bytes of data. An 
MPTCP implementation will have to split the segment in two (a 
1420-byte and 8-byte segments) when pushing on the subflow with the 
smallest MSS. The latter segment will introduce a large overhead as 
for a single data segment 2 slots will be used in the congestion 
window (in packets) therefore reducing by roughly twice the potential throughput 
(in bytes/s) of this subflow. Taking the smallest MSS does not solve 
the issue as there might be a case where the subflow with the smallest 
MSS only sends a few packets
therefore reducing the potential throughput of the other subflows.</t>

<t>The Linux implementation recently took another approach <xref target="DetalMSS"/>.
Instead of 
selecting the minimum and maximum values, it now dynamically adapts 
the MSS based on the contribution of all the subflows to the 
connection’s throughput. For this it computes, for each subflow,
the potential 
throughput achieved by selecting each MSS value and by taking into 
account the lost space in the cwnd. It then selects the MSS that
allows to achieve the highest potential throughput.</t>

</section>
<section anchor="cdn" title="Interactions with the Domain Name System">

<t>Multihomed clients such as smartphones can send DNS
queries over any of their interfaces. When a
single-homed client performs a DNS query, it receives from its local
resolver the best answer for its request. If the client is
multihomed, the answer returned to the DNS query may vary with
the interface over which it has been sent.</t>

<figure title="Simple network topology" anchor="figcdn"><artwork><![CDATA[
                   cdn1
                    |
        client -- cellular -- internet -- cdn3
           |                   |
           +----- wifi --------+
                    |
                  cdn2

]]></artwork></figure>

<t>If the client sends a DNS query over the WiFi interface, the answer
will point to the cdn2 server while the same request sent over the
cellular interface will point to the cdn1 server. This might cause
problems for CDN providers that locate their servers inside ISP
networks and have contracts that specify that the CDN server will only
be accessed from within this particular ISP. Assume now that both the
client and the CDN servers support Multipath TCP. In this case, a
Multipath TCP session from cdn1 or cdn2 would potentially use both
the cellular network and the WiFi network. Serving the client from
cdn2 over the cellular interface could violate the
contract between the CDN provider and the network operators. A similar
problem occurs with regular TCP if the client caches DNS replies. For
example the client obtains a DNS answer over the cellular interface
and then stops this interface and starts to use its WiFi interface. If
the client retrieves data from cdn1 over its WiFi interface, this may
also violate the contract between the CDN and the network operators.</t>

<t>A possible solution to prevent this problem would be to modify the
DNS resolution on the client. The client subnet EDNS extension
defined in <xref target="I-D.ietf-dnsop-edns-client-subnet"/> could be used
for this purpose. When the client sends a DNS query from its WiFi
interface, it should also send the client subnet corresponding to
the cellular interface in this request. This would indicate to the
resolver that the answer should be valid for both the WiFi and the
cellular interfaces (e.g., the cdn3 server).</t>

</section>
<section anchor="wifi" title="Captive portals">

<t>Multipath TCP enables a host to use different interfaces to reach
a server. In theory, this should ensure connectivity when at least
one of the interfaces is active. In practice however, there are
some particular scenarios with captive portals that may cause
operational problems. The reference environment is
shown in <xref target="figcaptive"/>.</t>

<figure title="Issue with captive portal" anchor="figcaptive"><artwork><![CDATA[
        client -----  network1
             |
             +------- internet ------------- server

]]></artwork></figure>

<t>The client is attached to two networks : network1 that provides
limited connectivity and the entire Internet through the second
network interface. In practice, this scenario corresponds to an open
WiFi network with a captive portal for network1 and a cellular service
for the second interface. On many smartphones, the WiFi interface is
preferred over the cellular interface. If the smartphone learns a
default route via both interfaces, it will typically prefer to use the
WiFi interface to send its DNS request and create the first subflow.
This is not optimal with Multipath TCP. A better approach would
probably be to try a few attempts on the WiFi interface and then try
to use the second interface for the initial subflow as well.</t>

</section>
<section anchor="syncookies" title="Stateless webservers">

<t>MPTCP has been designed to interoperate with webservers that benefit from SYN-cookies
to protect against SYN-flooding attacks <xref target="RFC4987"/>. MPTCP achieves this by
echoing the keys negotiated during the MP_CAPABLE handshake in the third ACK of the 3-way handshake.
Reception of this third ACK then allows the server to reconstruct the state
specific to MPTCP.</t>

<t>However, one caveat to this mechanism is the non-reliable nature of the third ACK.
Indeed, when the third ACK gets lost, the server will not be able to reconstruct
the MPTCP-state. MPTCP will fallback to regular TCP in this case.
This is in contrast to regular TCP. When the client starts sending data, the first
data segment also includes the SYN-cookie, which allows the server to reconstruct
the TCP-state. Further, this data segment will be retransmitted by the client
in case it gets lost and thus is resilient against loss. MPTCP does not include
the keys in this data segment and thus the server cannot reconstruct the MPTCP state.</t>

<t>This issue might be considered as a minor one for MPTCP. Losing the third ACK
should only happen when packet loss is high. However, when packet-loss
is high MPTCP provides a lot of benefits as it can move traffic away from the
lossy link. It is undesirable that MPTCP has a higher chance to fall back to
regular TCP in those lossy environments.</t>

<t><xref target="I-D.paasch-mptcp-syncookies"/> discusses this issue and suggests a modified
handshake mechanism that ensures reliable delivery of the MP_CAPABLE, following
the 3-way handshake. This modification will make MPTCP reliable, even in lossy
environments when servers need to use SYN-cookies to protect against SYN-flooding attacks.</t>

</section>
<section anchor="loadbalancer" title="Loadbalanced serverfarms">

<t>Large-scale serverfarms typically deploy thousands of servers behind a single
virtual IP (VIP). Steering traffic to these servers is done through layer-4 loadbalancers
that ensure that a TCP-flow will always be routed to the same server <xref target="Presto08"/>.</t>

<t>As Multipath TCP uses multiple different TCP subflows to steer the traffic across
the different paths, loadbalancers need to ensure that all these subflows are
routed to the same server. This implies that the loadbalancers need to track
the MPTCP-related state, allowing them to parse the token in the MP_JOIN and assign
those subflows to the appropriate server. However, serverfarms typically deploy
multiple of these loadbalancers for reliability and capacity reasons. As a
TCP subflow might get routed to any of these loadbalancers, they
would need to synchronize the MPTCP-related state - a solution that is not feasible
at large scale.</t>

<t>The token (carried in the MP_JOIN) contains the information indicating which
MPTCP-session the subflow belongs to. As the token is a hash of the key, servers
are not able to generate the token in such a way that the token can provide the
necessary information to the loadbalancers which would allow them to
route TCP subflows to the appropriate server. <xref target="I-D.paasch-mptcp-loadbalancer"/>
discusses this issue in detail and suggests two alternative MP_CAPABLE handshakes
to overcome these. As of September 2015, it is not yet clear how MPTCP might accomodate
such use-case to enable its deployment within loadbalanced serverfarms.</t>

</section>
</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>There are no IANA considerations in this informational document.</t>

</section>
<section anchor="security-considerations" title="Security Considerations">

<t>The security considerations for Multipath TCP have already been documented
in <xref target="RFC6181"/>, <xref target="RFC6182"/>, <xref target="RFC6824"/> and <xref target="RFC7430"/>.</t>

</section>
<section anchor="conclusion" title="Conclusion">

<t>In this document, we have documented a few years of experience
with Multipath TCP. The different scientific publications that have
been summarised confirm that Multipath TCP works well in different use
cases in today’s Internet. None of the cited publications has
identified major issues with Multipath TCP and its utilisation in the
current Internet. Some of these publications list directions for
future improvements that mainly affect the subflow managers and
packet schedulers. These heuristics affect the performance of 
Multipath TCP, but not the protocol itself. It is likely that 
these improvements will be discussed in future IETF documents.</t>

<t>Besides the published scientific literature, a number of companies
have deployed Multipath TCP at large. One of these deployments
uses Multipath TCP on the client and the server side, making it
a true end-to-end deployment. This deployment uses Multipath TCP
to support fast handover between cellular and WiFi networks. 
A wider deployment of Multipath TCP on servers seems to be blocked by
the necessity to support Multipath TCP on load balancers.
Given the influence that middleboxes had on the design of Multipath TCP,
it is interesting to note that the other industrial deployments use
Multipath TCP inside middleboxes. These middelboxes use Multipath TCP
to efficiently combine several access links while still interacting
with legacy TCP servers.</t>

</section>
<section anchor="acknowledgements" title="Acknowledgements">

<t>This work was partially supported by the FP7-Trilogy2 project. We
would like to thank all the implementers and users of the Multipath
TCP implementation in the Linux kernel. This document has
benefited from the comments of John Ronan, Yoshifumi Nishida,
Phil Eardley and Jaehyun Hwang.</t>

</section>


  </middle>

  <back>


    <references title='Informative References'>





<reference  anchor='RFC1812' target='http://www.rfc-editor.org/info/rfc1812'>
<front>
<title>Requirements for IP Version 4 Routers</title>
<author initials='F.' surname='Baker' fullname='F. Baker' role='editor'><organization /></author>
<date year='1995' month='June' />
<abstract><t>This memo defines and discusses requirements for devices that perform the network layer forwarding function of the Internet protocol suite. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='1812'/>
<seriesInfo name='DOI' value='10.17487/RFC1812'/>
</reference>



<reference  anchor='RFC1928' target='http://www.rfc-editor.org/info/rfc1928'>
<front>
<title>SOCKS Protocol Version 5</title>
<author initials='M.' surname='Leech' fullname='M. Leech'><organization /></author>
<author initials='M.' surname='Ganis' fullname='M. Ganis'><organization /></author>
<author initials='Y.' surname='Lee' fullname='Y. Lee'><organization /></author>
<author initials='R.' surname='Kuris' fullname='R. Kuris'><organization /></author>
<author initials='D.' surname='Koblas' fullname='D. Koblas'><organization /></author>
<author initials='L.' surname='Jones' fullname='L. Jones'><organization /></author>
<date year='1996' month='March' />
<abstract><t>This memo describes a protocol that is an evolution of the previous version of the protocol, version 4 [1]. This new protocol stems from active discussions and prototype implementations.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='1928'/>
<seriesInfo name='DOI' value='10.17487/RFC1928'/>
</reference>



<reference  anchor='RFC4987' target='http://www.rfc-editor.org/info/rfc4987'>
<front>
<title>TCP SYN Flooding Attacks and Common Mitigations</title>
<author initials='W.' surname='Eddy' fullname='W. Eddy'><organization /></author>
<date year='2007' month='August' />
<abstract><t>This document describes TCP SYN flooding attacks, which have been well-known to the community for several years.  Various countermeasures against these attacks, and the trade-offs of each, are described.  This document archives explanations of the attack and common defense techniques for the benefit of TCP implementers and administrators of TCP servers or networks, but does not make any standards-level recommendations.  This memo provides information for the Internet community.</t></abstract>
</front>
<seriesInfo name='RFC' value='4987'/>
<seriesInfo name='DOI' value='10.17487/RFC4987'/>
</reference>



<reference  anchor='RFC6181' target='http://www.rfc-editor.org/info/rfc6181'>
<front>
<title>Threat Analysis for TCP Extensions for Multipath Operation with Multiple Addresses</title>
<author initials='M.' surname='Bagnulo' fullname='M. Bagnulo'><organization /></author>
<date year='2011' month='March' />
<abstract><t>Multipath TCP (MPTCP for short) describes the extensions proposed for TCP so that endpoints of a given TCP connection can use multiple paths to exchange data.  Such extensions enable the exchange of segments using different source-destination address pairs, resulting in the capability of using multiple paths in a significant number of scenarios.  Some level of multihoming and mobility support can be achieved through these extensions.  However, the support for multiple IP addresses per endpoint may have implications on the security of the resulting MPTCP.  This note includes a threat analysis for MPTCP. This document is not an Internet Standards Track specification; it is published for informational purposes.</t></abstract>
</front>
<seriesInfo name='RFC' value='6181'/>
<seriesInfo name='DOI' value='10.17487/RFC6181'/>
</reference>



<reference  anchor='RFC6182' target='http://www.rfc-editor.org/info/rfc6182'>
<front>
<title>Architectural Guidelines for Multipath TCP Development</title>
<author initials='A.' surname='Ford' fullname='A. Ford'><organization /></author>
<author initials='C.' surname='Raiciu' fullname='C. Raiciu'><organization /></author>
<author initials='M.' surname='Handley' fullname='M. Handley'><organization /></author>
<author initials='S.' surname='Barre' fullname='S. Barre'><organization /></author>
<author initials='J.' surname='Iyengar' fullname='J. Iyengar'><organization /></author>
<date year='2011' month='March' />
<abstract><t>Hosts are often connected by multiple paths, but TCP restricts communications to a single path per transport connection.  Resource usage within the network would be more efficient were these multiple paths able to be used concurrently.  This should enhance user experience through improved resilience to network failure and higher throughput.</t><t>This document outlines architectural guidelines for the development of a Multipath Transport Protocol, with references to how these architectural components come together in the development of a Multipath TCP (MPTCP).  This document lists certain high-level design decisions that provide foundations for the design of the MPTCP protocol, based upon these architectural requirements.  This document  is not an Internet Standards Track specification; it is published for informational purposes.</t></abstract>
</front>
<seriesInfo name='RFC' value='6182'/>
<seriesInfo name='DOI' value='10.17487/RFC6182'/>
</reference>



<reference  anchor='RFC6356' target='http://www.rfc-editor.org/info/rfc6356'>
<front>
<title>Coupled Congestion Control for Multipath Transport Protocols</title>
<author initials='C.' surname='Raiciu' fullname='C. Raiciu'><organization /></author>
<author initials='M.' surname='Handley' fullname='M. Handley'><organization /></author>
<author initials='D.' surname='Wischik' fullname='D. Wischik'><organization /></author>
<date year='2011' month='October' />
<abstract><t>Often endpoints are connected by multiple paths, but communications are usually restricted to a single path per connection.  Resource usage within the network would be more efficient were it possible for these multiple paths to be used concurrently.  Multipath TCP is a proposal to achieve multipath transport in TCP.</t><t>New congestion control algorithms are needed for multipath transport protocols such as Multipath TCP, as single path algorithms have a series of issues in the multipath context.  One of the prominent problems is that running existing algorithms such as standard TCP independently on each path would give the multipath flow more than its fair share at a bottleneck link traversed by more than one of its subflows.  Further, it is desirable that a source with multiple paths available will transfer more traffic using the least congested of the paths, achieving a property called &quot;resource pooling&quot; where a bundle of links effectively behaves like one shared link with bigger capacity.  This would increase the overall efficiency of the network and also its robustness to failure.</t><t>This document presents a congestion control algorithm that couples the congestion control algorithms running on different subflows by linking their increase functions, and dynamically controls the overall aggressiveness of the multipath flow.  The result is a practical algorithm that is fair to TCP at bottlenecks while moving traffic away from congested links.  This document defines an Experimental  Protocol for the Internet community.</t></abstract>
</front>
<seriesInfo name='RFC' value='6356'/>
<seriesInfo name='DOI' value='10.17487/RFC6356'/>
</reference>



<reference  anchor='RFC6824' target='http://www.rfc-editor.org/info/rfc6824'>
<front>
<title>TCP Extensions for Multipath Operation with Multiple Addresses</title>
<author initials='A.' surname='Ford' fullname='A. Ford'><organization /></author>
<author initials='C.' surname='Raiciu' fullname='C. Raiciu'><organization /></author>
<author initials='M.' surname='Handley' fullname='M. Handley'><organization /></author>
<author initials='O.' surname='Bonaventure' fullname='O. Bonaventure'><organization /></author>
<date year='2013' month='January' />
<abstract><t>TCP/IP communication is currently restricted to a single path per connection, yet multiple paths often exist between peers.  The simultaneous use of these multiple paths for a TCP/IP session would improve resource usage within the network and, thus, improve user experience through higher throughput and improved resilience to network failure.</t><t>Multipath TCP provides the ability to simultaneously use multiple paths between peers.  This document presents a set of extensions to traditional TCP to support multipath operation.  The protocol offers the same type of service to applications as TCP (i.e., reliable bytestream), and it provides the components necessary to establish and use multiple TCP flows across potentially disjoint paths.  This  document defines an Experimental Protocol for the Internet community.</t></abstract>
</front>
<seriesInfo name='RFC' value='6824'/>
<seriesInfo name='DOI' value='10.17487/RFC6824'/>
</reference>



<reference  anchor='RFC7430' target='http://www.rfc-editor.org/info/rfc7430'>
<front>
<title>Analysis of Residual Threats and Possible Fixes for Multipath TCP (MPTCP)</title>
<author initials='M.' surname='Bagnulo' fullname='M. Bagnulo'><organization /></author>
<author initials='C.' surname='Paasch' fullname='C. Paasch'><organization /></author>
<author initials='F.' surname='Gont' fullname='F. Gont'><organization /></author>
<author initials='O.' surname='Bonaventure' fullname='O. Bonaventure'><organization /></author>
<author initials='C.' surname='Raiciu' fullname='C. Raiciu'><organization /></author>
<date year='2015' month='July' />
<abstract><t>This document analyzes the residual threats for Multipath TCP (MPTCP) and explores possible solutions to address them.</t></abstract>
</front>
<seriesInfo name='RFC' value='7430'/>
<seriesInfo name='DOI' value='10.17487/RFC7430'/>
</reference>



<reference anchor='I-D.ietf-dnsop-edns-client-subnet'>
<front>
<title>Client Subnet in DNS Queries</title>

<author initials='C' surname='Contavalli' fullname='Carlo Contavalli'>
    <organization />
</author>

<author initials='W' surname='Gaast' fullname='Wilmer van der Gaast'>
    <organization />
</author>

<author initials='t' surname='tale' fullname='tale'>
    <organization />
</author>

<author initials='W' surname='Kumari' fullname='Warren Kumari'>
    <organization />
</author>

<date month='April' day='19' year='2016' />

<abstract><t>This document describes an EDNS0 extension that is in active use to carry information about the network that originated a DNS query, and the network for which the subsequent response can be cached.  Since it has some known operational and privacy shortcomings, a revision will be worked through the IETF for improvement.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-dnsop-edns-client-subnet-08' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-dnsop-edns-client-subnet-08.txt' />
</reference>



<reference anchor='I-D.eardley-mptcp-implementations-survey'>
<front>
<title>Survey of MPTCP Implementations</title>

<author initials='P' surname='Eardley' fullname='Philip Eardley'>
    <organization />
</author>

<date month='July' day='12' year='2013' />

<abstract><t>This document presents results from the survey to gather information from people who have implemented MPTCP, in particular to help progress the protocol from Experimental to Standards track.  The document currently includes answers from four teams: a Linux implementation from UCLouvain, a FreeBSD implementation from Swinburne, an anonymous implementation in a commercial OS, and a NetScalar Firmware implementation from Citrix Systems, Inc. Thank- you!  In summary, we have four independent implementations of all the MPTCP signalling messages, with the exception of address management, and some interoperabiity testing has been done by the other three implementations with the 'reference' Linux implementation.  So it appears that the RFC is (at least largely) clear and correct.  On address management, we have only one implementation of ADD_ADDR with two teams choosing not to implement it.  We have one implementation of the working group's coupled congestion control (RFC6356) and none of the MPTCP-aware API (RFC6897).  The main suggested improvements are around  o  how MPTCP falls back (if the signalling is interrupted by a middlebox): (1) corner cases that are not handled properly, (2) at the IETF, the MPTCP community should work with middlebox vendors, either to reduce or eliminate the need for fallback or to understand the middlebox interactions better.  o  security: both better MPTCP security (perhaps building on SSL) and a lighter weight mechanism, preferably both in one mechanism.  It is hoped that the next version can include information from any other implementations.  If you are an implementer and want to contribute your answers, please see the -01 version of this document for a blank survey ready to be filled in.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-eardley-mptcp-implementations-survey-02' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-eardley-mptcp-implementations-survey-02.txt' />
</reference>



<reference anchor='I-D.walid-mptcp-congestion-control'>
<front>
<title>Balanced Linked Adaptation Congestion Control Algorithm for MPTCP</title>

<author initials='A' surname='Walid' fullname='Anwar Walid'>
    <organization />
</author>

<author initials='Q' surname='Peng' fullname='Qiuyu Peng'>
    <organization />
</author>

<author initials='J' surname='Hwang' fullname='Jaehyun Hwang'>
    <organization />
</author>

<author initials='S' surname='Low' fullname='Steven H. Low'>
    <organization />
</author>

<date month='January' day='25' year='2016' />

<abstract><t>This document describes the mechanism of Balia, the "Balanced linked adaptation", which is a congestion control algorithm for Multipath TCP (MPTCP).  The recent proposals, LIA and OLIA, suffer from either unfriendliness to Single Path TCP (SPTCP) or unresponsiveness to network changes under certain conditions.  The tradeoff between friendliness and responsiveness is inevitable, but Balia judiciously balances this tradeoff based on a new design framework that allows one to systematically explore the design space.  Balia has been implemented in the Linux kernel and also included in the UCLouvain's MPTCP implementation.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-walid-mptcp-congestion-control-04' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-walid-mptcp-congestion-control-04.txt' />
<format type='PDF'
        target='http://www.ietf.org/internet-drafts/draft-walid-mptcp-congestion-control-04.pdf' />
</reference>



<reference anchor='I-D.lhwxz-gre-notifications-hybrid-access'>
<front>
<title>GRE Notifications for Hybrid Access</title>

<author initials='N' surname='Leymann' fullname='Nicolai Leymann'>
    <organization />
</author>

<author initials='C' surname='Heidemann' fullname='Cornelius Heidemann'>
    <organization />
</author>

<author initials='M' surname='Wasserman' fullname='Margaret Wasserman'>
    <organization />
</author>

<author initials='L' surname='Xue' fullname='Li Xue'>
    <organization />
</author>

<author initials='M' surname='Zhang' fullname='Mingui Zhang'>
    <organization />
</author>

<date month='January' day='14' year='2015' />

<abstract><t>This document specifies a set of GRE (Generic Routing Encapsulation) extensions which enable operators to construct residential networks that are able to access the provider service through more than one hybrid access networks simultaneously in order to satisfy the higher bandwidth requirements.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-lhwxz-gre-notifications-hybrid-access-01' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-lhwxz-gre-notifications-hybrid-access-01.txt' />
</reference>



<reference anchor='I-D.boucadair-mptcp-max-subflow'>
<front>
<title>Negotiating the Maximum Number of Multipath TCP (MPTCP) Subflows</title>

<author initials='M' surname='Boucadair' fullname='Mohamed Boucadair'>
    <organization />
</author>

<author initials='C' surname='Jacquenet' fullname='Christian Jacquenet'>
    <organization />
</author>

<date month='May' day='31' year='2016' />

<abstract><t>This document specifies an experimental Multipath TCP (MPTCP) option that is meant to negotiate the maximum number of subflows that can be established and maintained for a given MPTCP connection.  The purpose is to minimize any possible performance degradation that can be induced by a possibly large number of establishment requests for additional subflows if the remote endpoint is not appropriately dimensioned to handle such requests.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-boucadair-mptcp-max-subflow-02' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-boucadair-mptcp-max-subflow-02.txt' />
</reference>



<reference anchor='I-D.lhwxz-hybrid-access-network-architecture'>
<front>
<title>Hybrid Access Network Architecture</title>

<author initials='N' surname='Leymann' fullname='Nicolai Leymann'>
    <organization />
</author>

<author initials='C' surname='Heidemann' fullname='Cornelius Heidemann'>
    <organization />
</author>

<author initials='M' surname='Wasserman' fullname='Margaret Wasserman'>
    <organization />
</author>

<author initials='L' surname='Xue' fullname='Li Xue'>
    <organization />
</author>

<author initials='M' surname='Zhang' fullname='Mingui Zhang'>
    <organization />
</author>

<date month='January' day='13' year='2015' />

<abstract><t>Residential and Enterprise customers require continuously increasing bandwidth, however it may be difficult for operators to update or rebuild existing fixed access networks, especially when they are deployed in certain areas.  This document discusses a general way to address this problem by bundling together multiple heterogeneous access networks according to certain management policies.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-lhwxz-hybrid-access-network-architecture-02' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-lhwxz-hybrid-access-network-architecture-02.txt' />
</reference>



<reference anchor='I-D.wei-mptcp-proxy-mechanism'>
<front>
<title>MPTCP proxy mechanisms</title>

<author initials='X' surname='Wei' fullname='Xinpeng Wei'>
    <organization />
</author>

<author initials='C' surname='Xiong' fullname='Chunshan Xiong'>
    <organization />
</author>

<author initials='E' surname='Ed' fullname='Ed'>
    <organization />
</author>

<date month='June' day='30' year='2015' />

<abstract><t>Multipath TCP provides the ability to simultaneously use multiple paths between peers for a TCP/IP session, and it could improve resource usage within the network and, thus, improve user experience through higher throughput and improved resilience to network failure. This document discusses the mechanism of a new network entity, named MPTCP proxy, which is aimed to assist MPTCP capable peer to use MPTCP session in case of one of the peers not being MPTCP capable or to act as an aggregation point for sublfows.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-wei-mptcp-proxy-mechanism-02' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-wei-mptcp-proxy-mechanism-02.txt' />
</reference>



<reference anchor='I-D.hampel-mptcp-proxies-anchors'>
<front>
<title>MPTCP Proxies and Anchors</title>

<author initials='G' surname='Hampel' fullname='Georg Hampel'>
    <organization />
</author>

<author initials='T' surname='Klein' fullname='Thierry Klein'>
    <organization />
</author>

<date month='February' day='8' year='2012' />

<abstract><t>MPTCP proxies and anchors are network-based functions, which support MPTCP connections.  The MPTCP proxy provides multipath support for MPTCP-capable hosts on behalf of their MPTCP-unaware peers.  This facilitates incremental deployment of MPTCP.  The MPTCP anchor permits subflow establishment for MPTCP connections when direct interaction between end hosts fails.  This permits tolerance to local IP protocol restrictions and it provides robustness in case of break- before-make mobility events.  MPTCP proxies and anchors are especially suited for wireless access environments.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-hampel-mptcp-proxies-anchors-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-hampel-mptcp-proxies-anchors-00.txt' />
<format type='PDF'
        target='http://www.ietf.org/internet-drafts/draft-hampel-mptcp-proxies-anchors-00.pdf' />
</reference>



<reference anchor='I-D.deng-mptcp-proxy'>
<front>
<title>Use-cases and Requirements for MPTCP Proxy in ISP Networks</title>

<author initials='D' surname='Lingli' fullname='Deng Lingli'>
    <organization />
</author>

<author initials='D' surname='Liu' fullname='Dapeng Liu'>
    <organization />
</author>

<author initials='T' surname='Sun' fullname='Tao Sun'>
    <organization />
</author>

<author initials='M' surname='Boucadair' fullname='Mohamed Boucadair'>
    <organization />
</author>

<author initials='G' surname='Cauchie' fullname='Gregory Cauchie'>
    <organization />
</author>

<date month='October' day='26' year='2014' />

<abstract><t>This document presents the use-cases and identifies requirements for ISP deployed MPTCP proxies for both Fixed and Mobile networks.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-deng-mptcp-proxy-01' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-deng-mptcp-proxy-01.txt' />
</reference>



<reference anchor='I-D.paasch-mptcp-syncookies'>
<front>
<title>Making Multipath TCP robust for stateless webservers</title>

<author initials='C' surname='Paasch' fullname='Christoph Paasch'>
    <organization />
</author>

<author initials='A' surname='Biswas' fullname='Anumita Biswas'>
    <organization />
</author>

<author initials='D' surname='Haas' fullname='Darren Haas'>
    <organization />
</author>

<date month='October' day='14' year='2015' />

<abstract><t>This document proposes a modification of the MPTCP handshake that allows it to work efficiently with stateless servers.  We first identify the issues around stateless connection establishment using SYN-cookies.  Further, we suggest an extension to Multipath TCP to overcome these issues and discuss alternatives.  As a side-effect, the proposed modification to the handshake opens the door to reduce the size of the MP_CAPABLE option in the SYN. This reduces the growing pressure on the TCP-option space in the SYN- segment, giving space for future extensions to TCP.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-paasch-mptcp-syncookies-02' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-paasch-mptcp-syncookies-02.txt' />
<format type='PS'
        target='http://www.ietf.org/internet-drafts/draft-paasch-mptcp-syncookies-02.ps' />
<format type='PDF'
        target='http://www.ietf.org/internet-drafts/draft-paasch-mptcp-syncookies-02.pdf' />
</reference>



<reference anchor='I-D.paasch-mptcp-loadbalancer'>
<front>
<title>Multipath TCP behind Layer-4 loadbalancers</title>

<author initials='C' surname='Paasch' fullname='Christoph Paasch'>
    <organization />
</author>

<author initials='G' surname='Greenway' fullname='Greg Greenway'>
    <organization />
</author>

<author initials='A' surname='Ford' fullname='Alan Ford'>
    <organization />
</author>

<date month='September' day='7' year='2015' />

<abstract><t>Large webserver farms consist of thousands of frontend proxies that serve as endpoints for the TCP and TLS connection and relay traffic to the (sometimes distant) backend servers.  Load-balancing across those server is done by layer-4 loadbalancers that ensure that a TCP flow will always reach the same server.  Multipath TCP's use of multiple TCP subflows for the transmission of the data stream requires those loadbalancers to be aware of MPTCP to ensure that all subflows belonging to the same MPTCP connection reach the same frontend proxy.  In this document we analyze the challenges related to this and suggest a simple modification to the generation of the MPTCP-token to overcome those challenges.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-paasch-mptcp-loadbalancer-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-paasch-mptcp-loadbalancer-00.txt' />
<format type='PS'
        target='http://www.ietf.org/internet-drafts/draft-paasch-mptcp-loadbalancer-00.ps' />
<format type='PDF'
        target='http://www.ietf.org/internet-drafts/draft-paasch-mptcp-loadbalancer-00.pdf' />
</reference>


<reference anchor="MBTest" target="https://bitbucket.org/bhesmans/mbtest">
  <front>
    <title>MBTest</title>
    <author initials="B." surname="Hesmans">
      <organization></organization>
    </author>
    <date year="2013"/>
  </front>
</reference>
<reference anchor="tracebox" target="http://www.tracebox.org">
  <front>
    <title>tracebox</title>
    <author initials="G." surname="Detal">
      <organization></organization>
    </author>
    <author initials="O." surname="Tilmans">
      <organization></organization>
    </author>
    <date year="2013"/>
  </front>
</reference>
<reference anchor="TMA2015" target="http://inl.info.ucl.ac.be/publications/first-look-real-multipath-tcp-traffic">
  <front>
    <title>A First Look at Real Multipath TCP Traffic</title>
    <author initials="B." surname="Hesmans">
      <organization></organization>
    </author>
    <author initials="H." surname="Tran Viet">
      <organization></organization>
    </author>
    <author initials="R." surname="Sadre">
      <organization></organization>
    </author>
    <author initials="O." surname="Bonaventure">
      <organization></organization>
    </author>
    <date year="2015"/>
  </front>
  <seriesInfo name="Traffic Monitoring and Analysis" value=""/>
</reference>
<reference anchor="HotMiddlebox13" target="http://inl.info.ucl.ac.be/publications/are-tcp-extensions-middlebox-proof">
  <front>
    <title>Are TCP Extensions Middlebox-proof?</title>
    <author initials="B." surname="Hesmans">
      <organization></organization>
    </author>
    <author initials="F." surname="Duchene">
      <organization></organization>
    </author>
    <author initials="C." surname="Paasch">
      <organization></organization>
    </author>
    <author initials="G." surname="Detal">
      <organization></organization>
    </author>
    <author initials="O." surname="Bonaventure">
      <organization></organization>
    </author>
    <date year="2013" month="December"/>
  </front>
  <seriesInfo name="CoNEXT workshop HotMiddlebox" value=""/>
</reference>
<reference anchor="HotNets" target="http://doi.acm.org/10.1145/1868447.1868457">
  <front>
    <title>Data center networking with multipath TCP</title>
    <author initials="C." surname="Raiciu">
      <organization></organization>
    </author>
    <author initials="C." surname="Pluntke">
      <organization></organization>
    </author>
    <author initials="S." surname="Barre">
      <organization></organization>
    </author>
    <author initials="A." surname="Greenhalgh">
      <organization></organization>
    </author>
    <author initials="D." surname="Wischik">
      <organization></organization>
    </author>
    <author initials="M." surname="Handley">
      <organization></organization>
    </author>
    <date year="2010"/>
  </front>
  <seriesInfo name="Proceedings of the 9th ACM SIGCOMM Workshop on Hot Topics in Networks (Hotnets-IX)" value=""/>
</reference>
<reference anchor="KT" target="https://www.ietf.org/proceedings/93/slides/slides-93-mptcp-3.pdf">
  <front>
    <title>KT's GiGA LTE</title>
    <author initials="S." surname="Seo">
      <organization></organization>
    </author>
    <date year="2015" month="July"/>
  </front>
</reference>
<reference anchor="IMC11" target="http://doi.acm.org/10.1145/2068816.2068834">
  <front>
    <title>Is it still possible to extend TCP?</title>
    <author initials="M." surname="Honda">
      <organization></organization>
    </author>
    <author initials="Y." surname="Nishida">
      <organization></organization>
    </author>
    <author initials="C." surname="Raiciu">
      <organization></organization>
    </author>
    <author initials="A." surname="Greenhalgh">
      <organization></organization>
    </author>
    <author initials="M." surname="Handley">
      <organization></organization>
    </author>
    <author initials="H." surname="Tokuda">
      <organization></organization>
    </author>
    <date year="2011"/>
  </front>
  <seriesInfo name="Proceedings of the 2011 ACM SIGCOMM conference on Internet measurement conference (IMC '11)" value=""/>
</reference>
<reference anchor="IMC13a" target="http://inl.info.ucl.ac.be/publications/revealing-middlebox-interference-tracebox">
  <front>
    <title>Revealing Middlebox Interference with Tracebox</title>
    <author initials="G." surname="Detal">
      <organization></organization>
    </author>
    <author initials="B." surname="Hesmans">
      <organization></organization>
    </author>
    <author initials="O." surname="Bonaventure">
      <organization></organization>
    </author>
    <author initials="Y." surname="Vanaubel">
      <organization></organization>
    </author>
    <author initials="B." surname="Donnet">
      <organization></organization>
    </author>
    <date year="2013"/>
  </front>
  <seriesInfo name="Proceedings of the 2013 ACM SIGCOMM conference on Internet measurement conference" value=""/>
</reference>
<reference anchor="IMC13b" target="http://doi.acm.org/10.1145/2504730.2504751">
  <front>
    <title>A measurement-based study of MultiPath TCP performance over wireless network</title>
    <author initials="Y." surname="Chen">
      <organization></organization>
    </author>
    <author initials="Y." surname="Lim">
      <organization></organization>
    </author>
    <author initials="R." surname="Gibbens">
      <organization></organization>
    </author>
    <author initials="E." surname="Nahum">
      <organization></organization>
    </author>
    <author initials="R." surname="Khalili">
      <organization></organization>
    </author>
    <author initials="D." surname="Towsley">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
  <seriesInfo name="Proceedings of the 2013 conference on Internet measurement conference (IMC '13)" value=""/>
</reference>
<reference anchor="IMC13c" target="http://doi.acm.org/10.1145/2504730.2504765">
  <front>
    <title>From Paris to Tokyo  on the suitability of ping to measure latency</title>
    <author initials="C." surname="Pelsser">
      <organization></organization>
    </author>
    <author initials="L." surname="Cittadini">
      <organization></organization>
    </author>
    <author initials="S." surname="Vissicchio">
      <organization></organization>
    </author>
    <author initials="R." surname="Bush">
      <organization></organization>
    </author>
    <date year="2013"/>
  </front>
  <seriesInfo name="Proceedings of the 2013 conference on Internet measurement conference (IMC '13)" value=""/>
</reference>
<reference anchor="Cellnet12" target="http://inl.info.ucl.ac.be/publications/exploring-mobilewifi-handover-multipath-tcp">
  <front>
    <title>Exploring Mobile/WiFi Handover with Multipath TCP</title>
    <author initials="C." surname="Paasch">
      <organization></organization>
    </author>
    <author initials="G." surname="Detal">
      <organization></organization>
    </author>
    <author initials="F." surname="Duchene">
      <organization></organization>
    </author>
    <author initials="C." surname="Raiciu">
      <organization></organization>
    </author>
    <author initials="O." surname="Bonaventure">
      <organization></organization>
    </author>
    <date year="2012"/>
  </front>
  <seriesInfo name="ACM SIGCOMM workshop on Cellular Networks (Cellnet12)" value=""/>
</reference>
<reference anchor="CSWS14" >
  <front>
    <title>Experimental Evaluation of Multipath TCP Schedulers</title>
    <author initials="C." surname="Paasch">
      <organization></organization>
    </author>
    <author initials="S." surname="Ferlin">
      <organization></organization>
    </author>
    <author initials="O." surname="Alay">
      <organization></organization>
    </author>
    <author initials="O." surname="Bonaventure">
      <organization></organization>
    </author>
    <date year="2014" month="August"/>
  </front>
  <seriesInfo name="SIGCOMM CSWS2014 workshop" value=""/>
</reference>
<reference anchor="CACM14" target="http://inl.info.ucl.ac.be/publications/multipath-tcp">
  <front>
    <title>Multipath TCP</title>
    <author initials="C." surname="Paasch">
      <organization></organization>
    </author>
    <author initials="O." surname="Bonaventure">
      <organization></organization>
    </author>
    <date year="2014" month="April"/>
  </front>
  <seriesInfo name="Communications of the ACM, 57(4):51-57" value=""/>
</reference>
<reference anchor="CONEXT13" target="http://inl.info.ucl.ac.be/publications/benefits-applying-experimental-design-improve-multipath-tcp">
  <front>
    <title>On the Benefits of Applying Experimental Design to Improve Multipath TCP</title>
    <author initials="C." surname="Paasch">
      <organization></organization>
    </author>
    <author initials="R." surname="Khalili">
      <organization></organization>
    </author>
    <author initials="O." surname="Bonaventure">
      <organization></organization>
    </author>
    <date year="2013" month="December"/>
  </front>
  <seriesInfo name="Conference on emerging Networking EXperiments and Technologies (CoNEXT)" value=""/>
</reference>
<reference anchor="NSDI11" >
  <front>
    <title>Design, implementation and evaluation of congestion control for Multipath TCP</title>
    <author initials="D." surname="Wischik">
      <organization></organization>
    </author>
    <author initials="C." surname="Raiciu">
      <organization></organization>
    </author>
    <author initials="A." surname="Greenhalgh">
      <organization></organization>
    </author>
    <author initials="M." surname="Handley">
      <organization></organization>
    </author>
    <date year="2011"/>
  </front>
  <seriesInfo name="In Proceedings of the 8th USENIX conference on Networked systems design and implementation (NSDI11)" value=""/>
</reference>
<reference anchor="NSDI12" target="http://inl.info.ucl.ac.be/publications/how-hard-can-it-be-designing-and-implementing-deployable-multipath-tcp">
  <front>
    <title>How Hard Can It Be? Designing and Implementing a Deployable Multipath TCP</title>
    <author initials="C." surname="Raiciu">
      <organization></organization>
    </author>
    <author initials="C." surname="Paasch">
      <organization></organization>
    </author>
    <author initials="S." surname="Barre">
      <organization></organization>
    </author>
    <author initials="A." surname="Ford">
      <organization></organization>
    </author>
    <author initials="M." surname="Honda">
      <organization></organization>
    </author>
    <author initials="F." surname="Duchene">
      <organization></organization>
    </author>
    <author initials="O." surname="Bonaventure">
      <organization></organization>
    </author>
    <author initials="M." surname="Handley">
      <organization></organization>
    </author>
    <date year="2012" month="April"/>
  </front>
  <seriesInfo name="USENIX Symposium of Networked Systems Design and Implementation (NSDI12)" value=""/>
</reference>
<reference anchor="MultipathTCP-Linux" target="http://www.multipath-tcp.org">
  <front>
    <title>Multipath TCP implementation in the Linux kernel</title>
    <author initials="C." surname="Paasch">
      <organization></organization>
    </author>
    <author initials="S." surname="Barre">
      <organization></organization>
    </author>
    <author initials="." surname="et al">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="Apple-MPTCP" target="https://support.apple.com/en-us/HT201373">
  <front>
    <title>iOS - Multipath TCP Support in iOS 7</title>
    <author initials="." surname="Apple, Inc">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="FreeBSD-MPTCP" target="http://caia.swin.edu.au/urp/newtcp/mptcp">
  <front>
    <title>Multipath TCP For FreeBSD Kernel Patch v0.5</title>
    <author initials="N." surname="Williams">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="INFOCOM14" >
  <front>
    <title>Cross-Layer Path Management in Multi-path Transport Protocol for Mobile Devices</title>
    <author initials="Y." surname="Lim">
      <organization></organization>
    </author>
    <author initials="Y." surname="Chen">
      <organization></organization>
    </author>
    <author initials="E." surname="Nahum">
      <organization></organization>
    </author>
    <author initials="D." surname="Towsley">
      <organization></organization>
    </author>
    <author initials="K." surname="Lee">
      <organization></organization>
    </author>
    <date year="2014"/>
  </front>
  <seriesInfo name="IEEE INFOCOM'14" value=""/>
</reference>
<reference anchor="SIGCOMM11" target="http://doi.acm.org/10.1145/2018436.2018467">
  <front>
    <title>Improving datacenter performance and robustness with multipath TCP</title>
    <author initials="C." surname="Raiciu">
      <organization></organization>
    </author>
    <author initials="S." surname="Barre">
      <organization></organization>
    </author>
    <author initials="C." surname="Pluntke">
      <organization></organization>
    </author>
    <author initials="A." surname="Greenhalgh">
      <organization></organization>
    </author>
    <author initials="D." surname="Wischik">
      <organization></organization>
    </author>
    <author initials="M." surname="Handley">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
  <seriesInfo name="Proceedings of the ACM SIGCOMM 2011 conference" value=""/>
</reference>
<reference anchor="PAMS2014" >
  <front>
    <title>Impact of Path Selection and Scheduling Policies on MPTCP Performance</title>
    <author initials="B." surname="Arzani">
      <organization></organization>
    </author>
    <author initials="A." surname="Gurney">
      <organization></organization>
    </author>
    <author initials="S." surname="Cheng">
      <organization></organization>
    </author>
    <author initials="R." surname="Guerin">
      <organization></organization>
    </author>
    <author initials="B." surname="Loo">
      <organization></organization>
    </author>
    <date year="2014"/>
  </front>
  <seriesInfo name="PAMS2014" value=""/>
</reference>
<reference anchor="IOS7" target="http://support.apple.com/kb/HT5977">
  <front>
    <title>Multipath TCP Support in iOS 7</title>
    <author initials="." surname="Apple" fullname="Apple">
      <organization></organization>
    </author>
    <date year="2014" month="January"/>
  </front>
</reference>
<reference anchor="ietf88" target="http://tools.ietf.org/wg/mptcp/minutes?item=minutes-88-mptcp.html">
  <front>
    <title>IETF'88 Meeting minutes of the MPTCP working group</title>
    <author initials="L." surname="Stewart">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="CONEXT12" >
  <front>
    <title>MPTCP is not pareto-optimal performance issues and a possible solution</title>
    <author initials="R." surname="Khalili">
      <organization></organization>
    </author>
    <author initials="N." surname="Gast">
      <organization></organization>
    </author>
    <author initials="M." surname="Popovic">
      <organization></organization>
    </author>
    <author initials="U." surname="Upadhyay">
      <organization></organization>
    </author>
    <author initials="J.-Y." surname="Leboudec">
      <organization></organization>
    </author>
    <date year="2012"/>
  </front>
  <seriesInfo name="Proceedings of the 8th international conference on Emerging networking experiments and technologies (CoNEXT12)" value=""/>
</reference>
<reference anchor="ICNP12" >
  <front>
    <title>Delay-based congestion control for multipath TCP</title>
    <author initials="Y." surname="Cao">
      <organization></organization>
    </author>
    <author initials="M." surname="Xu">
      <organization></organization>
    </author>
    <author initials="X." surname="Fu">
      <organization></organization>
    </author>
    <date year="2012"/>
  </front>
  <seriesInfo name="20th IEEE International Conference on Network Protocols (ICNP)" value=""/>
</reference>
<reference anchor="DetalMSS" target="https://listes-2.sipr.ucl.ac.be/sympa/arc/mptcp-dev/2014-09/msg00130.html">
  <front>
    <title>Adaptive MSS value</title>
    <author initials="G." surname="Detal">
      <organization></organization>
    </author>
    <date year="2014" month="September"/>
  </front>
  <seriesInfo name="Post on the mptcp-dev mailing list" value=""/>
</reference>
<reference anchor="StrangeMbox" target="http://blog.multipath-tcp.org/blog/html/2015/01/30/multipath_tcp_through_a_strange_middlebox.html">
  <front>
    <title>Multipath TCP through a strange middlebox</title>
    <author initials="O." surname="Bonaventure">
      <organization></organization>
    </author>
    <date year="2015" month="January"/>
  </front>
  <seriesInfo name="Blog post" value=""/>
</reference>
<reference anchor="MPTCPBIB" target="https://github.com/obonaventure/mptcp-bib">
  <front>
    <title>Multipath TCP - An annotated bibliography</title>
    <author initials="O." surname="Bonaventure">
      <organization></organization>
    </author>
    <date year="2015" month="April"/>
  </front>
  <seriesInfo name="Technical report" value=""/>
</reference>
<reference anchor="PaaschPhD" target="http://inl.info.ucl.ac.be/publications/improving-multipath-tcp">
  <front>
    <title>Improving Multipath TCP</title>
    <author initials="C." surname="Paasch">
      <organization></organization>
    </author>
    <date year="2014" month="November"/>
  </front>
  <seriesInfo name="Ph.D. Thesis" value=""/>
</reference>
<reference anchor="Mobicom15" >
  <front>
    <title>Poster - Evaluating Android Applications with Multipath TCP</title>
    <author initials="Q." surname="De Coninck">
      <organization></organization>
    </author>
    <author initials="M." surname="Baerts">
      <organization></organization>
    </author>
    <author initials="B." surname="Hesmans">
      <organization></organization>
    </author>
    <author initials="O." surname="Bonaventure">
      <organization></organization>
    </author>
    <date year="2015" month="September"/>
  </front>
  <seriesInfo name="Mobicom 2015 (Poster)" value=""/>
</reference>
<reference anchor="Presto08" target="http://dl.acm.org/citation.cfm?id=1397732">
  <front>
    <title>Towards a Next Generation Data Center Architecture -  Scalability and Commoditization</title>
    <author initials="A." surname="Greenberg">
      <organization></organization>
    </author>
    <author initials="P." surname="Lahiri">
      <organization></organization>
    </author>
    <author initials="D." surname="Maltz">
      <organization></organization>
    </author>
    <author initials="P." surname="Parveen">
      <organization></organization>
    </author>
    <author initials="S." surname="Sengupta">
      <organization></organization>
    </author>
    <date year="2008" month="August"/>
  </front>
  <seriesInfo name="ACM PRESTO 2008" value=""/>
</reference>
<reference anchor="HotMiddlebox13b" target="http://inl.info.ucl.ac.be/publications/multipath-middlebox">
  <front>
    <title>Multipath in the Middle(Box)</title>
    <author initials="G." surname="Detal">
      <organization></organization>
    </author>
    <author initials="C." surname="Paasch">
      <organization></organization>
    </author>
    <author initials="O." surname="Bonaventure">
      <organization></organization>
    </author>
    <date year="2013" month="December"/>
  </front>
  <seriesInfo name="HotMiddlebox'13" value=""/>
</reference>
<reference anchor="BBF-WT348" >
  <front>
    <title>WT-348 - Hybrid Access for Broadband Networks</title>
    <author initials="G." surname="Fabregas (Ed)">
      <organization></organization>
    </author>
    <date year="2015" month="June"/>
  </front>
  <seriesInfo name="Broadband Forum, contribution bbf2014.1139.04" value=""/>
</reference>
<reference anchor="PAM2016" target="http://inl.info.ucl.ac.be/publications/first-analysis-multipath-tcp-smartphones">
  <front>
    <title>A First Analysis of Multipath TCP on Smartphones</title>
    <author initials="Q." surname="De Coninck">
      <organization></organization>
    </author>
    <author initials="M." surname="Baerts">
      <organization></organization>
    </author>
    <author initials="B." surname="Hesmans">
      <organization></organization>
    </author>
    <author initials="O." surname="Bonaventure">
      <organization></organization>
    </author>
    <date year="2016" month="March"/>
  </front>
  <seriesInfo name="17th International Passive and Active Measurements Conference (PAM2016)" value=""/>
</reference>
<reference anchor="COMMAG2016" target="http://inl.info.ucl.ac.be/publications/observing-real-smartphone-applications-over-multipath-tcp">
  <front>
    <title>Observing Real Smartphone Applications over Multipath TCP</title>
    <author initials="Q." surname="De Coninck">
      <organization></organization>
    </author>
    <author initials="M." surname="Baerts">
      <organization></organization>
    </author>
    <author initials="B." surname="Hesmans">
      <organization></organization>
    </author>
    <author initials="O." surname="Bonaventure">
      <organization></organization>
    </author>
    <date year="2016" month="March"/>
  </front>
  <seriesInfo name="IEEE Communications Magazine" value=""/>
</reference>
<reference anchor="COMCOM2016" target="http://inl.info.ucl.ac.be/publications/observing-real-multipath-tcp-traffic">
  <front>
    <title>Observing real Multipath TCP traffic</title>
    <author >
      <organization></organization>
    </author>
    <date year="2016" month="April"/>
  </front>
  <seriesInfo name="Computer Communications" value=""/>
</reference>
<reference anchor="CONEXT15" target="http://inl.info.ucl.ac.be/publications/smapp-towards-smart-multipath-tcp-enabled-applications">
  <front>
    <title>SMAPP - Towards Smart Multipath TCP-enabled APPlications</title>
    <author initials="B." surname="Hesmans">
      <organization></organization>
    </author>
    <author initials="G." surname="Detal">
      <organization></organization>
    </author>
    <author initials="S." surname="Barre">
      <organization></organization>
    </author>
    <author initials="R." surname="Bauduin">
      <organization></organization>
    </author>
    <author initials="O." surname="Bonaventure">
      <organization></organization>
    </author>
    <date year="2015" month="December"/>
  </front>
  <seriesInfo name="Proc. Conext 2015, Heidelberg, Germany" value=""/>
</reference>


    </references>


<section anchor="changelog" title="Changelog">

<t>This section should be removed before final publication</t>

<t><list style="symbols">
  <t>initial version : September 16th, 2014 : Added section <xref target="mss"/> that
discusses some performance problems that appeared with the Linux
implementation when using subflows having different MSS values</t>
  <t>update with a description of the middlebox that replaces an unknown
TCP option with EOL <xref target="StrangeMbox"/></t>
  <t>version ietf-02 : July 2015, answer to last call comments  <list style="symbols">
      <t>Reorganised text to better separate use cases and operational
experience</t>
      <t>New use case on Multipath TCP proxies in <xref target="proxy"/></t>
      <t>Added some text on middleboxes in <xref target="mbox"/></t>
      <t>Removed the discussion on SDN</t>
      <t>Restructured text and improved writing in some parts</t>
    </list></t>
  <t>version ietf-03 : September 2015, answer to comments from Phil
Eardley  <list style="symbols">
      <t>Improved introduction</t>
      <t>Added details about using SOCKS and Korea Telecom’s use-case in <xref target="proxy"/>.</t>
      <t>Added issue around clients caching DNS-results in <xref target="cdn"/></t>
      <t>Explained issue of MPTCP with stateless webservers <xref target="syncookies"/></t>
      <t>Added description of MPTCP’s use behind layer-4 loadbalancers <xref target="loadbalancer"/></t>
      <t>Restructured text and improved writing in some parts</t>
    </list></t>
  <t>version ietf-04 : April 2016, answer to last comments  <list style="symbols">
      <t>Updated text on measurements with smartphones</t>
      <t>Updated conclusion</t>
    </list></t>
</list></t>

</section>


  </back>
</rfc>

