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

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

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

<rfc ipr="trust200902" number="8041" submissionType="IETF" category="info" consensus="yes">

  <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="2017" month="January" />

    <area>Transport</area>
    <workgroup>MPTCP Working Group</workgroup>



<keyword>TCP</keyword>
<keyword>MPTCP</keyword>
<keyword>Middlebox</keyword>
<keyword>Congestion Control</keyword>
<keyword>Path Manager</keyword>
<keyword>Scheduler</keyword>
<keyword>Proxy</keyword>
<keyword>Load-Balancer</keyword>
<keyword>Datacenter</keyword>
<keyword>Cellular/WiFi Offload</keyword>
<keyword>Hybrid Access Networks</keyword>

    <abstract>

<t>This document discusses both use cases and operational experience with
Multipath TCP (MPTCP) in real networks. It lists several prominent use
cases where 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 and suggests possible improvements.</t>

    </abstract>


  </front>

  <middle>


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

<t>Multipath TCP was specified in <xref target="RFC6824"/> and five independent implementations
have been developed. As of November 2016, 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</t>
  <t>Citrix load balancers</t>
  <t>FreeBSD <xref target="FreeBSD-MPTCP"/></t>
  <t>Oracle Solaris</t>
</list></t>

<t>The first three implementations are known to
interoperate. 
Three of these implementations are
open source (Linux kernel, FreeBSD and Apple's iOS and macOS).
Apple's implementation is widely deployed.</t>

<t>Since the publication of <xref target="RFC6824"/> as an Experimental RFC, 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 utilization of the Multipath TCP implementation
in the Linux kernel <xref target="MultipathTCP-Linux"/>. This
open-source implementation has been downloaded and implemented 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 beginning with iOS7 <xref target="IETFJ"/>. There are likely
hundreds of millions of MPTCP-enabled devices. This 
Multipath TCP implementation is currently only
used to support the Siri voice recognition/control 
application. Some lessons learned from this deployment are
described in <xref target="IETFJ"/>.</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"/> summarizes the MPTCP-specific
congestion controls that have been implemented.  Sections <xref target="pm" format="counter"/> to
<xref target="scheduler" format="counter"/> 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 amount of 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: so they 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 analyzed 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 (LAGs) are widely used
in today's networks; having multiple paths between a pair of
single-homed hosts is becoming the norm instead of the exception.
Although these multiple paths often have 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 MPTCP-enabled devices <xref target="IETFJ"/>.
It has been briefly discussed during IETF 88 <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; 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 flows only over 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 characterized 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 4 MB.</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 summarized hereafter.</t>

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

]]></artwork></figure>

<t>Initially, the two paths in <xref target="figsimple"/> have the same quality and Multipath TCP
distributes the load over both of them. During the transfer, the
path2 becomes lossy, e.g., because the client moves. Multipath
TCP detects the packet losses and they are retransmitted over 
path1. This enables the data transfer to continue over this
path. However, the subflow over path2 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 analyze the performance of Multipath TCP on
smartphones with real applications. In contrast with the bulk transfers
that are used by many publications, many deployed applications do not exchange huge amounts
of data and mainly use 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 utilized 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.</t>

<t>A first use case is when an MPTCP-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 MPTCP-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.
MPTCP-specific proxies have been proposed 
<xref target="HotMiddlebox13b"/> <xref target="HAMPEL"/>.</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 clients
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 MPTCP-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="TR-348"/>. 
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 end users <xref target="HYA-ARCH"/>.
Several solutions are currently investigated for such networks
<xref target="TR-348"/>.
<xref target="fighybrid"/> shows the organization 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
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="GRE-NOTIFY"/>.</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 <xref target="MultipathTCP-Linux"/> 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, in
Figure 4 in Section 3.3,
a corner case with segment splitting that may lead to a
desynchronization between the two hosts.</t>
</list></t>

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

<t>Middlebox interference can also be detected by analyzing packet
traces on MPTCP-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 
since Application Level Gateways used for FTP modify the TCP payload
and the DSS Checksum detects these modifications. 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.
Experience with tracebox indicates that supporting the ICMP
extension defined in <xref target="RFC1812"/> makes it easier to debug
middlebox problems in IPv4 networks.</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 challenge for Multipath
TCP. The coupled congestion-control scheme defined in <xref
target="RFC6356"/> in an adaptation of the NewReno algorithm. 
A detailed description of this coupled algorithm is provided in <xref
target="NSDI11"/>. It is the default scheme in the Linux
implementation of Multipath TCP, but Linux supports other schemes.</t>

<t>The
second congestion-control scheme is OLIA <xref target="CONEXT12"/>. It
is also an adaptation of the NewReno single path
congestion-control scheme to support multiple paths. Simulations <xref
target="CONEXT12"/> and
measurements <xref target="CONEXT13"/> have shown that it provides
some performance benefits compared to the default coupled
congestion-control scheme.</t>

<t>The delay-based scheme proposed in <xref target="ICNP12"/> has also
been ported to the Multipath TCP implementation in the Linux
kernel. It has been evaluated by using
simulations  <xref target="ICNP12"/> and measurements  <xref
target="PaaschPhD"/>. </t>

<t>BALIA, defined in <xref target="BALIA"/>, provides a better balance
between TCP friendliness, responsiveness, and window oscillation.</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.</t>

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

<t>The multipath capability of Multipath TCP comes from the utilization
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 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, six 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. Implementations should 
limit the number of subflows that are used.</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="MPTCP-MAX-SUB"/>. 
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
with different destination port numbers, this could allow Multipath
TCP to reach a higher performance. This behavior is valid according
to the Multipath TCP specification <xref target="RFC6824"/>. An application could
use an enhanced socket API <xref target="SOCKET"/> to behave in this way.</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 Sub in the drawing), even if enforced by the application on the client-side." 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 an MPTCP-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 environments. Consider the following 
example. An MPTCP connection has two established subflows that 
respectively use an 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 (1420-byte and 8-byte) segments when pushing on the subflow with the 
smallest MSS. The latter segment will introduce a large overhead as this single
data segment will use 2 slots 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 each subflow, it computes
the potential 
throughput achieved by selecting each MSS value and by taking into 
account the lost space in the congestion window. It then selects the MSS that
allows to achieve the highest potential throughput.</t>

<t>Given the prevalence of middleboxes that clamp the MSS, Multipath
TCP implementations must be able to efficiently support subflows
with different MSS values. The strategy described above is a possible
solution to this problem.</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 in response 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 Extension Mechanisms for DNS (EDNS)
defined in <xref target="RFC7871"/> 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. However, in practice, 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,
upon failure of these attempts,
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 three-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 unreliable 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 fall back 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; in this case, 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="MPTCP-DEPLOY"/> discusses this issue and suggests a modified
handshake mechanism that ensures reliable delivery of the MP_CAPABLE, following
the three-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="Load-Balanced Server Farms">

<t>Large-scale server farms typically deploy thousands of servers behind a single
virtual IP (VIP). Steering traffic to these servers is done through Layer 4 load-balancers
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, load-balancers need to ensure that all these subflows are
routed to the same server. This implies that the load-balancers 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, server farms typically deploy
several load-balancers for reliability and capacity reasons. As a
TCP subflow might get routed to any of these load-balancers, they
would need to synchronize the MPTCP-related state -- a solution that is not feasible
on a large scale.</t>

<t>The token (carried in the MP_JOIN) contains the information indicating to which
MPTCP-session the subflow belongs. 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 load-balancers, which would allow them to
route TCP subflows to the appropriate server. <xref target="MPTCP-LOAD"/>
discusses this issue in detail and suggests two alternative MP_CAPABLE handshakes
to overcome these.</t>

</section>
</section>

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

<t>This informational document discusses use cases and operational experience with
Multipath TCP. An extensive analysis of the remaining security issues in the
Multipath TCP specification has been published in <xref target="RFC7430"/>, together with
suggestions for possible solutions.</t>

<t>From a security viewpoint, it is important to note that Multipath TCP, like 
other multipath solutions such as SCTP, has the ability to send packets
belonging to a single connection over different paths. This design feature
of Multipath TCP implies that middleboxes that have been deployed on-path
assuming that they would observe all the packets exchanged for a given
connection in both directions may not function correctly anymore. A typical
example are firewalls, Intrusion Detection System (IDS) or deep packet inspections (DPIs) deployed in enterprise networks. Those
devices expect to observe all the packets from all TCP connections.
With Multipath TCP, those middleboxes
may not observe anymore all packets since some of them may follow a
different path. The two examples below illustrate typical deployments of
such middleboxes. The first example, <xref target="figphonembox"/>, shows an MPTCP-enabled smartphone attached to both an enterprise and a cellular
network. If a Multipath TCP connection is established by the smartphone
towards a server, some of the packets sent by the smartphone or the
server may be transmitted over the cellular network and thus be
invisible for the enterprise middlebox.</t>

<figure title="Enterprise Middlebox May Not Observe All Packets from Multihomed Host" anchor="figphonembox"><artwork><![CDATA[
  smartphone +----- enterprise net --- MBox----+------ server
             |                                 |
             +----- cellular net  -------------+ 

]]></artwork></figure>

<t>The second example, <xref target="figcsmbox"/>, shows a possible issue when multiple middleboxes
are deployed inside a network. For simplicity, we assume that network1 is the default
IPv4 path while network2 is the default IPv6 path. A similar issue could occur with
per-flow load-balancing such as ECMP <xref target="RFC2992"/>. With regular TCP, all packets from
each connection would either pass through Mbox1 or Mbox2. With Multipath TCP, the client
can easily establish a subflow over network1 and another over network2 and each middlebox
would only observe a part of the traffic of the end-to-end Multipath TCP connection.</t>

<figure title="Interactions between Load-Balancing and Security Middleboxes" anchor="figcsmbox"><artwork><![CDATA[
  client ----R-- network1  --- MBox1 -----R------------- server
             |                            |
             +-- network2  --- MBox2 -----+

]]></artwork></figure>

<t>In these two cases, it is possible for an attacker to evade some security measures
operating on the TCP byte stream and implemented on the middleboxes by controlling 
the bytes that are actually sent over each subflow and there are tools that ease
those kinds of evasion <xref target="PZ15"/> <xref target="PT14"/>. This is not a security issue for Multipath TCP itself
since Multipath TCP behaves correctly. However, this demonstrates the difficulty of
enforcing security policies by relying only on on-path middleboxes instead of enforcing
them directly on the endpoints.</t>

</section>



  </middle>

  <back>

    <references title='Normative References'>

<?rfc include="reference.RFC.6182.xml"?>
<?rfc include="reference.RFC.6824.xml"?>

    </references>

    <references title='Informative References'>



<?rfc include="reference.RFC.1812.xml"?>
<?rfc include="reference.RFC.1928.xml"?>
<?rfc include="reference.RFC.2992.xml"?>
<?rfc include="reference.RFC.4987.xml"?>
<?rfc include="reference.RFC.6356.xml"?>
<?rfc include="reference.RFC.7430.xml"?>
<?rfc include="reference.RFC.7871.xml"?>





<!--I-D.lhwxz-gre-notifications-hybrid-access; Expired-->

<reference anchor='GRE-NOTIFY'>
<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='Work in Progress,' value='draft-lhwxz-gre-notifications-hybrid-access-01' />

</reference>

<!--I-D.boucadair-mptcp-max-subflow; I-D Exists -->

<reference anchor='MPTCP-MAX-SUB'>
<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='Work in Progress' value='draft-boucadair-mptcp-max-subflow-02' />

</reference>


<!--lhwxz-hybrid-access-network-architecture; Expired -->
<reference anchor='HYA-ARCH'>
<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='Work in Progress,' value='draft-lhwxz-hybrid-access-network-architecture-02' />

</reference>

<!--I-D.paasch-mptcp-syncookies; Expired -->

<reference anchor='MPTCP-DEPLOY'>
<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='Work in Progress,' value='draft&nbhy;paasch-mptcp-syncookies-02' />
</reference>


<!--I-D.paasch-mptcp-loadbalancer; Expired -->
<reference anchor='MPTCP-LOAD'>
<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='Work in Progress,' value='draft&nbhy;paasch-mptcp-loadbalancer-00' />
</reference>



<reference anchor="HAMPEL" >
  <front>
    <title>Seamless TCP mobility using lightweight MPTCP proxy</title>
    <author initials="G." surname="Hampel">
      <organization></organization>
    </author>
    <author initials="A." surname="Rana">
      <organization></organization>
    </author>
    <author initials="T." surname="Klein">
      <organization></organization>
    </author>
    <date month="November" year="2013"/>
  </front>
  <seriesInfo name="MobiWac '13:" value="Proceedings of the 11th ACM international symposium on Mobility management and wireless access"/>
   <seriesInfo name="DOI" value="10.1145/2508222.2508226"/>
</reference>


<reference anchor="BALIA" >
  <front>
    <title>Multipath TCP: analysis, design, and implementation</title>
    <author initials="Q." surname="Peng">
      <organization></organization>
    </author>
    <author initials="A." surname="Walid">
      <organization></organization>
    </author>
    <author initials="J." surname="Hwang">
      <organization></organization>
    </author>
    <author initials="S." surname="Low">
      <organization></organization>
    </author>
    <date month="February" year="2016"/>
  </front>
  <seriesInfo name="IEEE/ACM Trans. on Networking (TON)," value="Volume 24, Issue 1"/>
</reference>



<reference anchor="MBTest" target="https://bitbucket.org/bhesmans/mbtest">
  <front>
    <title>MBTest</title>
    <author initials="B." surname="Hesmans">
      <organization></organization>
    </author>
    <date month="October" year="2013"/>
  </front>
</reference>


<reference anchor="tracebox" target="http://www.tracebox.org">
  <front>
    <title>Tracebox: A Middlebox Detection Tool</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" value="Analysis"/>
</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" value="Hot Middlebox"/>
</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 month="October" year="2010"/>
  </front>
  <seriesInfo name="Hotnetx-IX: Proceedings of the 9th ACM SIGCOMM Workshop on Hot Topics in Networks" value="Article No. 10"/>
  <seriesInfo name="DOI" value="10.1145/1868447.1868457"/>
</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 month="November" year="2011"/>
  </front>
  <seriesInfo name="IMC '11: Proceedings of the 2011 ACM SIGCOMM conference on Internet measurement" value="conference"/>
   <seriesInfo name="DOI" value="10.1145/2068816.2068834"/>
</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 month="October" year="2013"/>
  </front>
  <seriesInfo name="Proceedings of the 2013 ACM SIGCOMM conference on Internet measurement" value="conference"/>
  <seriesInfo name="DOI" value="10.1145/2504730.2504757"/>
</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 month="October" year="2013"/>
  </front>
  <seriesInfo name="ICM '13: Proceedings of the 2013 conference on Internet measurement" value="conference"/>
  <seriesInfo name="DOI" value="10.1145/2504730.2504751"/>
</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 month="October" year="2013"/>
  </front>
  <seriesInfo name="IMC '13: Proceedings of the 2013 conference on Internet measurement" value="Conference"/>
   <seriesInfo name="DOI" value="10.1145/2504730.2504765"/>
</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 month="August" year="2012"/>
  </front>
  <seriesInfo name="ACM SIGCOMM workshop on Cellular Networks" value="(Cellnet12)"/>
</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="CSWS '14: Proceedings of the 2014 ACM SIGCOMM workshop on Capacity sharing" value="workshop"/>
  <seriesInfo name="DOI" value="10.1145/2630088.2631977"/>
</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," value="57(4):51-57"/>
</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" value="(CoNEXT)"/>
  <seriesInfo name="DOI" value="10.1145/2535372.2535403"/>
</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="NSDI11: In Proceedings of the 8th USENIX conference on Networked systems design and" value="implementation"/>
</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="NSDI '12: USENIX Symposium of Networked Systems Design and" value="implementation" />
</reference>



<reference anchor="MultipathTCP-Linux" target="http://www.multipath-tcp.org">
  <front>
    <title>Multipath TCP - Linux Kernel implementation</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/>
  </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/>
  </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 month="April" year="2014"/>
  </front>
  <seriesInfo name="IEEE" value="INFOCOM'14"/>
  <seriesInfo name="DOI" value="10.1109/INFOCOM.2014.6848120"/>
</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 month="August" year="2011"/>
  </front>
  <seriesInfo name="SIGCOMM '11: Proceedings of the ACM SIGCOMM 2011" value="conference"/>
 <seriesInfo name="DOI" value="10.1145/2018436.2018467" />
</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 month="May" year="2014"/>
  </front>
  <seriesInfo name="PAMS2014" value=""/>
  <seriesInfo name="DOI" value="10.1109/WAINA.2014.121"/>
</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 month="November" year="2013"/>
  </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 month="December" year="2012"/>
  </front>
  <seriesInfo name="CoNEXT '12: Proceedings of the 8th international conference on Emerging networking experiments and" value="technologies"/>
<seriesInfo name="DOI" value="10.1145/2413176.2413178"/>
</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 month="October" year="2012"/>
  </front>
  <seriesInfo name="20th IEEE International Conference on Network Protocols" value="(INCP)"/>
  <seriesInfo name="DOI" value="10.1109/ICNP.2012.6459978"/>
</reference>

<reference anchor="DetalMSS" target="https://listes-2.sipr.ucl.ac.be/sympa/arc/mptcp-dev/2014-09/msg00130.html">
  <front>
    <title>dynamically adapt 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" value="list"/>
</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" value="post"/>
</reference>



<reference anchor="MPTCPBIB" target="https://github.com/obonaventure/mptcp-bib">
  <front>
    <title>Multipath TCP - Annotated bibliography</title>
    <author initials="O." surname="Bonaventure">
      <organization></organization>
    </author>
    <date year="2015" month="April"/>
  </front>
  <seriesInfo name="Technical" value="report"/>
</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" value="(Poster)"/>
  <seriesInfo name="DOI" value="10.1145/2789168.2795165"/>
</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="Patel">
      <organization></organization>
    </author>
    <author initials="S." surname="Sengupta">
      <organization></organization>
    </author>
    <date year="2008" month="August"/>
  </front>
  <seriesInfo name="ACM PRESTO" value="2008"/>
 <seriesInfo name="DOI" value="10.1145/1397718.1397732"/>
</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" value="'13"/>
</reference>


<reference anchor="TR-348" target="https://www.broadband-forum.org/technical/download/TR&nbhy;348.pdf">
  <front>
    <title>TR 348 - Hybrid Access Broadband Network Architecture</title>
    <author initials="." surname="Broadband Forum">
      <organization></organization>
    </author>
    <date year="2016" month="July"/>
  </front>
  <seriesInfo name="Issue:" value="1"/>
</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="volume 17"/>
</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="Network Testing Series, 54(3)"/>
</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 initials="V." surname="Tran">
      <organization></organization>
    </author>
    <author initials="Q." surname="De Coninck">
      <organization></organization>
    </author>
    <author initials="B." surname="Hesmans">
      <organization></organization>
    </author>
    <author initials="R." surname="Sadre">
      <organization></organization>
    </author>
    <author initials="O." surname="Bonaventure">
      <organization></organization>
    </author>
    <date year="2016" month="April"/>
  </front>
  <seriesInfo name="Computer Communications" value=""/>
<seriesInfo name="DOI" value="10.1016/j.comcom.2016.01.014"/>
</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," value="Germany"/>
</reference>


<reference anchor="PZ15" >
  <front>
    <title>Ancillary Impacts of Multipath TCP on Current and Future Network Security</title>
    <author initials="C." surname="Pearce">
      <organization></organization>
    </author>
    <author initials="S." surname="Zeadally">
      <organization></organization>
    </author>
    <date month="September" year="2015"/>
  </front>
  <seriesInfo name="IEEE Internet Computing, vol. 19, no. 5," value="pp. 58-65"/>
  <seriesInfo name="DOI" value="10.1109/MIC.2015.70"/>
</reference>

<reference anchor="PT14" target="http://www.blackhat.com/docs/us-14/materials/us-14-Pearce-Multipath-TCP-Breaking-Todays-Networks-With-Tomorrows-Protocols-WP.pdf">
  <front>
    <title>Multipath TCP Breaking Today's Networks with Tomorrow's Protocols</title>
    <author initials="C." surname="Pearce">
      <organization></organization>
    </author>
    <author initials="P." surname="Thomas">
      <organization></organization>
    </author>
    <date year="2014"/>
  </front>
  <seriesInfo name="Proc. Blackhat" value="Briefings"/>
</reference>


<reference anchor="SOCKET" target="http://doi.acm.org/10.1145/2959424.2959433">
  <front>
    <title>An enhanced socket API for Multipath TCP</title>
    <author initials="B." surname="Hesmans">
      <organization></organization>
    </author>
    <author initials="O." surname="Bonaventure">
      <organization></organization>
    </author>
    <date year="2016" month="July"/>
  </front>
  <seriesInfo name="Proceedings of the 2016 Applied Networking Research" value="Workshop"/>
  <seriesInfo name="DOI" value="10.1145/2959424.2959433"/>
</reference>


<reference anchor="IETFJ">
  <front>
    <title>Multipath TCP Deployments,</title>
    <author initials="O." surname="Bonaventure">
      <organization></organization>
    </author>
    <author initials="S." surname="Seo">
      <organization></organization>
    </author>
    <date year="2016" month="November"/>
  </front>
  <seriesInfo name="IETF Journal, Vol. 12," value="Issue 2"/>
</reference>


    </references>



<section anchor="acknowledgements" title="Acknowledgements" numbered="no">

<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, Jaehyun Hwang, Mirja Kuehlewind, Benoit Claise, Jari Arkko, 
Qin Wu, Spencer Dawkins, and Ben Campbell.</t>

</section>

  </back>
</rfc>

