zoukankan      html  css  js  c++  java
  • MPTCP


    https://datatracker.ietf.org/doc/rfc8041/?include_text=1


    Document Type   RFC - Informational (January 2017; No errata)
      Last updated   2017-01-12
      Stream   IETF
      Formats    
      Reviews  
    Stream WG state   Submitted to IESG for Publication
      Document shepherd   Philip Eardley
      Shepherd write-up    
    (last changed 2016-07-19)
    IESG IESG state   RFC 8041 (Informational)
      Consensus Boilerplate   Yes
      Telechat date    
      Responsible AD   Mirja Kühlewind
      Send notices to   "Philip Eardley" <philip.eardley@bt.com>, olivier.bonaventure@uclouvain.be
    IANA IANA review state   Version Changed - Review Needed
      IANA action state   No IC

    Internet Engineering Task Force (IETF)                    O. Bonaventure
    Request for Comments: 8041                                     UCLouvain
    Category: Informational                                        C. Paasch
    ISSN: 2070-1721                                              Apple, Inc.
                                                                    G. Detal
                                                                    Tessares
                                                                January 2017
    
            Use Cases and Operational Experience with Multipath TCP
    
    Abstract
    
       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.
    
    Status of This Memo
    
       This document is not an Internet Standards Track specification; it is
       published for informational purposes.
    
       This document is a product of the Internet Engineering Task Force
       (IETF).  It represents the consensus of the IETF community.  It has
       received public review and has been approved for publication by the
       Internet Engineering Steering Group (IESG).  Not all documents
       approved by the IESG are a candidate for any level of Internet
       Standard; see Section 2 of RFC 7841.
    
       Information about the current status of this document, any errata,
       and how to provide feedback on it may be obtained at
       http://www.rfc-editor.org/info/rfc8041.
    
    Bonaventure, et al.           Informational                     [Page 1]
    RFC 8041                    MPTCP Experience                January 2017
    
    Copyright Notice
    
       Copyright (c) 2017 IETF Trust and the persons identified as the
       document authors.  All rights reserved.
    
       This document is subject to BCP 78 and the IETF Trust's Legal
       Provisions Relating to IETF Documents
       (http://trustee.ietf.org/license-info) in effect on the date of
       publication of this document.  Please review these documents
       carefully, as they describe your rights and restrictions with respect
       to this document.  Code Components extracted from this document must
       include Simplified BSD License text as described in Section 4.e of
       the Trust Legal Provisions and are provided without warranty as
       described in the Simplified BSD License.
    
    Table of Contents
    
       1. Introduction ....................................................3
       2. Use Cases .......................................................4
          2.1. Datacenters ................................................4
          2.2. Cellular/WiFi Offload ......................................5
          2.3. Multipath TCP Proxies ......................................8
       3. Operational Experience ..........................................9
          3.1. Middlebox Interference .....................................9
          3.2. Congestion Control ........................................11
          3.3. Subflow Management ........................................12
          3.4. Implemented Subflow Managers ..............................13
          3.5. Subflow Destination Port ..................................15
          3.6. Closing Subflows ..........................................16
          3.7. Packet Schedulers .........................................17
          3.8. Segment Size Selection ....................................18
          3.9. Interactions with the Domain Name System ..................19
          3.10. Captive Portals ..........................................20
          3.11. Stateless Webservers .....................................20
          3.12. Load-Balanced Server Farms ...............................21
       4. Security Considerations ........................................21
       5. References .....................................................23
          5.1. Normative References ......................................23
          5.2. Informative References ....................................23
       Acknowledgements ..................................................30
       Authors' Addresses ................................................30
    
    Bonaventure, et al.           Informational                     [Page 2]
    RFC 8041                    MPTCP Experience                January 2017
    
    1.  Introduction
    
       Multipath TCP was specified in [RFC6824] and five independent
       implementations have been developed.  As of November 2016, Multipath
       TCP has been or is being implemented on the following platforms:
    
       o  Linux kernel [MultipathTCP-Linux]
    
       o  Apple iOS and macOS
    
       o  Citrix load balancers
    
       o  FreeBSD [FreeBSD-MPTCP]
    
       o  Oracle Solaris
    
       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.
    
       Since the publication of [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.
    
       When the MPTCP working group was created, several use cases for
       Multipath TCP were identified [RFC6182].  Since then, other use cases
       have been proposed and some have been tested and even deployed.  We
       describe these use cases in Section 2.
    
       Section 3 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 [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.
    
       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 [IETFJ].  There are likely hundreds of millions
       of MPTCP-enabled devices.  This Multipath TCP implementation is
    
    Bonaventure, et al.           Informational                     [Page 3]
    RFC 8041                    MPTCP Experience                January 2017
    
       currently only used to support the Siri voice recognition/control
       application.  Some lessons learned from this deployment are described
       in [IETFJ].
    
       Section 3 is organized as follows.  Supporting the middleboxes was
       one of the difficult issues in designing the Multipath TCP protocol.
       We explain in Section 3.1 which types of middleboxes the Linux Kernel
       implementation of Multipath TCP supports and how it reacts upon
       encountering these.  Section 3.2 summarizes the MPTCP-specific
       congestion controls that have been implemented.  Sections 3.3 to 3.7
       discuss heuristics and issues with respect to subflow management as
       well as the scheduling across the subflows.  Section 3.8 explains
       some problems that occurred with subflows having different Maximum
       Segment Size (MSS) values.  Section 3.9 presents issues with respect
       to content delivery networks and suggests a solution to this issue.
       Finally, Section 3.10 documents an issue with captive portals where
       MPTCP will behave suboptimally.
    
    2.  Use Cases
    
       Multipath TCP has been tested in several use cases.  There is already
       an abundant amount of scientific literature on Multipath TCP
       [MPTCPBIB].  Several of the papers published in the scientific
       literature have identified possible improvements that are worth being
       discussed here.
    
    2.1.  Datacenters
    
       A first, although initially unexpected, documented use case for
       Multipath TCP has been in datacenters [HotNets][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 [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 [RFC6182] assumes that at least
       one of the communicating hosts has several IP addresses, [HotNets]
       demonstrates that Multipath TCP is beneficial when both hosts are
       single-homed.  This idea is analyzed in more details in [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 [SIGCOMM11] in this environment.
    
    Bonaventure, et al.           Informational                     [Page 4]
    RFC 8041                    MPTCP Experience                January 2017
    
       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, [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.
    
    2.2.  Cellular/WiFi Offload
    
       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 [IETFJ].  It has been
       briefly discussed during IETF 88 [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.
    
       The performance of Multipath TCP in wireless networks was briefly
       evaluated in [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 [NSDI12] to
       solve this identified performance problem.  These two heuristics have
       since been used in the Multipath TCP implementation in the Linux
       kernel.  [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
       [CONEXT13] to cope with some of these problems.
    
       The first experimental analysis of Multipath TCP in a public wireless
       environment was presented in [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
    
    Bonaventure, et al.           Informational                     [Page 5]
    RFC 8041                    MPTCP Experience                January 2017
    
       and uses both wireless interfaces.  This mode provides fast handover
       from WiFi to cellular or the opposite when the user moves.
       Measurements presented in [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 [CACM14].
    
       Many cellular networks use volume-based pricing; users often prefer
       to use unmetered WiFi networks when available instead of metered
       cellular networks.  [Cellnet12] implements support for the MP_PRIO
       option to explore two other modes of operation.
    
       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 [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.
    
       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 [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 [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.
    
       From a protocol viewpoint, [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.
    
    Bonaventure, et al.           Informational                     [Page 6]
    RFC 8041                    MPTCP Experience                January 2017
    
       Another study of the performance of Multipath TCP in wireless
       networks was reported in [IMC13b].  This study uses laptops connected
       to various cellular ISPs and WiFi hotspots.  It compares various file
       transfer scenarios.  [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
       Section 3.2), there is no significant performance difference for file
       sizes smaller than 4 MB.
    
       A different study of the performance of Multipath TCP with two
       wireless networks is presented in [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, [INFOCOM14] documents
       an interesting scenario that is summarized hereafter.
    
       client ----------- path1 -------- server
         |                                  |
         +--------------- path2 ------------+
    
           Figure 1: Simple network topology
    
       Initially, the two paths in Figure 1 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.  [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.
    
    Bonaventure, et al.           Informational                     [Page 7]
    RFC 8041                    MPTCP Experience                January 2017
    
       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.  [COMMAG2016] proposes a software testing
       framework that allows to automate Android applications to study their
       interactions with Multipath TCP.  [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.
    
    2.3.  Multipath TCP Proxies
    
       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.
    
       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 [HotMiddlebox13b] [HAMPEL].
    
       Another possibility leverages the SOCKS protocol [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 [KT].
    
    Bonaventure, et al.           Informational                     [Page 8]
    RFC 8041                    MPTCP Experience                January 2017
    
       Measurements performed with Android smartphones [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 [PAM2016].
    
       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
       [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 [HYA-ARCH].  Several solutions are currently investigated for
       such networks [TR-348].  Figure 2 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 [GRE-NOTIFY].
    
       client --- HCPE ------ DSL ------- HAG --- internet --- server
                   |                       |
                   +------- LTE -----------+
    
                          Figure 2: Hybrid Access Network
    
    3.  Operational Experience
    
    3.1.  Middlebox Interference
    
       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.
    
    Bonaventure, et al.           Informational                     [Page 9]
    RFC 8041                    MPTCP Experience                January 2017
    
       The first analysis appears in [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:
    
       o  change source or destination addresses
    
       o  change source or destination port numbers
    
       o  change TCP sequence numbers
    
       o  split or coalesce segments
    
       o  remove TCP options
    
       o  modify the payload of TCP segments
    
       These middlebox interferences have all been included in the MBtest
       suite [MBTest].  This test suite is used in [HotMiddlebox13] to
       verify the reaction of the Multipath TCP implementation in the Linux
       kernel [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:
    
       o  the Multipath TCP implementation in the Linux kernel is not
          affected by a middlebox that performs NAT or modifies TCP sequence
          numbers
    
       o  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
    
       o  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
    
       o  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
    
       o  when a middlebox performs segment splitting, the Multipath TCP
          implementation in the Linux kernel correctly reassembles the data
          corresponding to the indicated mapping.  [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.
    
    Bonaventure, et al.           Informational                    [Page 10]
    RFC 8041                    MPTCP Experience                January 2017
    
       The interactions between Multipath TCP and real deployed middleboxes
       are also analyzed in [HotMiddlebox13]; a particular scenario with the
       FTP Application Level Gateway running on a NAT is described.
    
       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 [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 [COMCOM2016] and similar
       conclusions about the middlebox interference are provided.
    
       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 [tracebox] described in [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 [RFC1812] makes it easier to debug middlebox problems in
       IPv4 networks.
    
       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 [StrangeMbox].  This causes Multipath TCP to perform a
       fallback to regular TCP without any impact on the application.
    
    3.2.  Congestion Control
    
       Congestion control has been an important challenge for Multipath TCP.
       The coupled congestion-control scheme defined in [RFC6356] in an
       adaptation of the NewReno algorithm.  A detailed description of this
       coupled algorithm is provided in [NSDI11].  It is the default scheme
       in the Linux implementation of Multipath TCP, but Linux supports
       other schemes.
    
    Bonaventure, et al.           Informational                    [Page 11]
    RFC 8041                    MPTCP Experience                January 2017
    
       The second congestion-control scheme is OLIA [CONEXT12].  It is also
       an adaptation of the NewReno single path congestion-control scheme to
       support multiple paths.  Simulations [CONEXT12] and measurements
       [CONEXT13] have shown that it provides some performance benefits
       compared to the default coupled congestion-control scheme.
    
       The delay-based scheme proposed in [ICNP12] has also been ported to
       the Multipath TCP implementation in the Linux kernel.  It has been
       evaluated by using simulations [ICNP12] and measurements [PaaschPhD].
    
       BALIA, defined in [BALIA], provides a better balance between TCP
       friendliness, responsiveness, and window oscillation.
    
       These different congestion-control schemes have been compared in
       several articles.  [CONEXT13] and [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.
    
    3.3.  Subflow Management
    
       The multipath capability of Multipath TCP comes from the utilization
       of one subflow per path.  The Multipath TCP architecture [RFC6182]
       and the protocol specification [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.
    
       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.
    
    Bonaventure, et al.           Informational                    [Page 12]
    RFC 8041                    MPTCP Experience                January 2017
    
    3.4.  Implemented Subflow Managers
    
       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.
    
       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.
    
       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.
    
       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 [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.
    
                    host1 ----------  switch1 ----- host2
                      |                   |            |
                      +--------------  switch2 --------+
    
                    Figure 3: Simple Switched Network Topology
    
    Bonaventure, et al.           Informational                    [Page 13]
    RFC 8041                    MPTCP Experience                January 2017
    
       Consider the simple network topology shown in Figure 3.  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.
    
       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.
    
       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.
    
       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 [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.
    
       A more flexible subflow manager has been proposed, implemented and
       evaluated in [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.
    
    Bonaventure, et al.           Informational                    [Page 14]
    RFC 8041                    MPTCP Experience                January 2017
    
    3.5.  Subflow Destination Port
    
       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.
    
       For illustration, consider a dual-homed client that creates a second
       subflow to reach a single-homed server as illustrated in Figure 4.
    
               client ------- r1 --- internet --- server
                   |                   |
                   +----------r2-------+
    
           Figure 4: Multihomed-Client Connected to Single-Homed Server
    
       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.
    
       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 [RFC6824].  An application could use an
       enhanced socket API [SOCKET] to behave in this way.
    
       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
    
    Bonaventure, et al.           Informational                    [Page 15]
    RFC 8041                    MPTCP Experience                January 2017
    
       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.
    
    3.6.  Closing Subflows
    
                        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
                           |                           |
    
        Figure 5: 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.
    
       Figure 5 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 Figure 5 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 Figure 5) only triggers the
    
    Bonaventure, et al.           Informational                    [Page 16]
    RFC 8041                    MPTCP Experience                January 2017
    
       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.
    
       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.
    
    3.7.  Packet Schedulers
    
       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 [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 [CSWS14].  The experiments and
       measurements described in [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
       [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
    
    Bonaventure, et al.           Informational                    [Page 17]
    RFC 8041                    MPTCP Experience                January 2017
    
       opposite is true.  [PAMS2014] notes that "it is highly likely that
       the optimal scheduling strategy depends on the characteristics of the
       paths being used."
    
    3.8.  Segment Size Selection
    
       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.
    
       The Linux implementation recently took another approach [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.
    
       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.
    
    Bonaventure, et al.           Informational                    [Page 18]
    RFC 8041                    MPTCP Experience                January 2017
    
    3.9.  Interactions with the Domain Name System
    
       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.
    
                          cdn1
                           |
               client -- cellular -- internet -- cdn3
                  |                   |
                  +----- wifi --------+
                           |
                         cdn2
    
                         Figure 6: Simple Network Topology
    
       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.
    
       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 [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).
    
    Bonaventure, et al.           Informational                    [Page 19]
    RFC 8041                    MPTCP Experience                January 2017
    
    3.10.  Captive Portals
    
       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 Figure 7.
    
               client -----  network1
                    |
                    +------- internet ------------- server
    
                        Figure 7: Issue with Captive Portal
    
       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.
    
    3.11.  Stateless Webservers
    
       MPTCP has been designed to interoperate with webservers that benefit
       from SYN-cookies to protect against SYN-flooding attacks [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.
    
       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.
    
    Bonaventure, et al.           Informational                    [Page 20]
    RFC 8041                    MPTCP Experience                January 2017
    
       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.
    
       [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.
    
    3.12.  Load-Balanced Server Farms
    
       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 [Presto08].
    
       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.
    
       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.  [MPTCP-LOAD] discusses this issue in detail
       and suggests two alternative MP_CAPABLE handshakes to overcome these.
    
    4.  Security Considerations
    
       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 [RFC7430], together with suggestions for possible
       solutions.
    
    Bonaventure, et al.           Informational                    [Page 21]
    RFC 8041                    MPTCP Experience                January 2017
    
       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,
       Figure 8, 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.
    
         smartphone +----- enterprise net --- MBox----+------ server
                    |                                 |
                    +----- cellular net  -------------+
    
                  Figure 8: Enterprise Middlebox May Not Observe
                         All Packets from Multihomed Host
    
       The second example, Figure 9, 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 [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.
    
         client ----R-- network1  --- MBox1 -----R------------- server
                    |                            |
                    +-- network2  --- MBox2 -----+
    
                          Figure 9: Interactions between
                      Load-Balancing and Security Middleboxes
    
       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
       [PZ15] [PT14].  This is not a security issue for Multipath TCP itself
    
    Bonaventure, et al.           Informational                    [Page 22]
    RFC 8041                    MPTCP Experience                January 2017
    
       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.
    
    5.  References
    
    5.1.  Normative References
    
       [RFC6182]  Ford, A., Raiciu, C., Handley, M., Barre, S., and J.
                  Iyengar, "Architectural Guidelines for Multipath TCP
                  Development", RFC 6182, DOI 10.17487/RFC6182, March 2011,
                  <http://www.rfc-editor.org/info/rfc6182>.
    
       [RFC6824]  Ford, A., Raiciu, C., Handley, M., and O. Bonaventure,
                  "TCP Extensions for Multipath Operation with Multiple
                  Addresses", RFC 6824, DOI 10.17487/RFC6824, January 2013,
                  <http://www.rfc-editor.org/info/rfc6824>.
    
    5.2.  Informative References
    
       [BALIA]    Peng, Q., Walid, A., Hwang, J., and S. Low, "Multipath
                  TCP: analysis, design, and implementation", IEEE/ACM
                  Trans. on Networking (TON), Volume 24, Issue 1, February
                  2016.
    
       [CACM14]   Paasch, C. and O. Bonaventure, "Multipath TCP",
                  Communications of the ACM, 57(4):51-57, April 2014,
                  <http://inl.info.ucl.ac.be/publications/multipath-tcp>.
    
       [Cellnet12]
                  Paasch, C., Detal, G., Duchene, F., Raiciu, C., and O.
                  Bonaventure, "Exploring Mobile/WiFi Handover with
                  Multipath TCP", ACM SIGCOMM workshop on Cellular
                  Networks (Cellnet12), August 2012,
                  <http://inl.info.ucl.ac.be/publications/
                  exploring-mobilewifi-handover-multipath-tcp>.
    
       [COMCOM2016]
                  Tran, V., De Coninck, Q., Hesmans, B., Sadre, R., and O.
                  Bonaventure, "Observing real Multipath TCP traffic",
                  Computer Communications, DOI 10.1016/j.comcom.2016.01.014,
                  April 2016, <http://inl.info.ucl.ac.be/publications/
                  observing-real-multipath-tcp-traffic>.
    
    Bonaventure, et al.           Informational                    [Page 23]
    RFC 8041                    MPTCP Experience                January 2017
    
       [COMMAG2016]
                  De Coninck, Q., Baerts, M., Hesmans, B., and O.
                  Bonaventure, "Observing Real Smartphone Applications over
                  Multipath TCP", IEEE Communications Magazine Network
                  Testing Series, 54(3), March 2016,
                  <http://inl.info.ucl.ac.be/publications/observing-real-
                  smartphone-applications-over-multipath-tcp>.
    
       [CONEXT12] Khalili, R., Gast, N., Popovic, M., Upadhyay, U., and J.
                  Leboudec, "MPTCP is not Pareto-Optimal: Performance Issues
                  and a Possible Solution", CoNEXT '12: Proceedings of the
                  8th international conference on Emerging networking
                  experiments and technologies, DOI 10.1145/2413176.2413178,
                  December 2012.
    
       [CONEXT13] Paasch, C., Khalili, R., and O. Bonaventure, "On the
                  Benefits of Applying Experimental Design to Improve
                  Multipath TCP", Conference on emerging Networking
                  EXperiments and Technologies (CoNEXT),
                  DOI 10.1145/2535372.2535403, December 2013,
                  <http://inl.info.ucl.ac.be/publications/benefits-applying-
                  experimental-design-improve-multipath-tcp>.
    
       [CONEXT15] Hesmans, B., Detal, G., Barre, S., Bauduin, R., and O.
                  Bonaventure, "SMAPP: Towards Smart Multipath TCP-enabled
                  APPlications", Proc. Conext 2015, Heidelberg, Germany,
                  December 2015, <http://inl.info.ucl.ac.be/publications/
                  smapp-towards-smart-multipath-tcp-enabled-applications>.
    
       [CSWS14]   Paasch, C., Ferlin, S., Alay, O., and O. Bonaventure,
                  "Experimental evaluation of multipath TCP schedulers",
                  CSWS '14: Proceedings of the 2014 ACM SIGCOMM workshop on
                  Capacity sharing workshop, DOI 10.1145/2630088.2631977,
                  August 2014.
    
       [DetalMSS] Detal, G., "dynamically adapt mss value", Post on the
                  mptcp-dev mailing list, September 2014,
                  <https://listes-2.sipr.ucl.ac.be/sympa/arc/mptcp-dev/
                  2014-09/msg00130.html>.
    
       [FreeBSD-MPTCP]
                  Williams, N., "Multipath TCP For FreeBSD Kernel Patch
                  v0.5", <http://caia.swin.edu.au/urp/newtcp/mptcp>.
    
    Bonaventure, et al.           Informational                    [Page 24]
    RFC 8041                    MPTCP Experience                January 2017
    
       [GRE-NOTIFY]
                  Leymann, N., Heidemann, C., Wasserman, M., Xue, L., and M.
                  Zhang, "GRE Notifications for Hybrid Access", Work in
                  Progress, draft-lhwxz-gre-notifications-hybrid-access-01,
                  January 2015.
    
       [HAMPEL]   Hampel, G., Rana, A., and T. Klein, "Seamless TCP mobility
                  using lightweight MPTCP proxy", MobiWac '13: Proceedings
                  of the 11th ACM international symposium on Mobility
                  management and wireless access,
                  DOI 10.1145/2508222.2508226, November 2013.
    
       [HotMiddlebox13]
                  Hesmans, B., Duchene, F., Paasch, C., Detal, G., and O.
                  Bonaventure, "Are TCP Extensions Middlebox-proof?", CoNEXT
                  workshop Hot Middlebox, December 2013,
                  <http://inl.info.ucl.ac.be/publications/
                  are-tcp-extensions-middlebox-proof>.
    
       [HotMiddlebox13b]
                  Detal, G., Paasch, C., and O. Bonaventure, "Multipath in
                  the Middle(Box)", HotMiddlebox '13, December 2013,
                  <http://inl.info.ucl.ac.be/publications/
                  multipath-middlebox>.
    
       [HotNets]  Raiciu, C., Pluntke, C., Barre, S., Greenhalgh, A.,
                  Wischik, D., and M. Handley, "Data center networking with
                  multipath TCP", Hotnetx-IX: Proceedings of the 9th ACM
                  SIGCOMM Workshop on Hot Topics in Networks Article No. 10,
                  DOI 10.1145/1868447.1868457, October 2010,
                  <http://doi.acm.org/10.1145/1868447.1868457>.
    
       [HYA-ARCH] Leymann, N., Heidemann, C., Wasserman, M., Xue, L., and M.
                  Zhang, "Hybrid Access Network Architecture", Work in
                  Progress, draft-lhwxz-hybrid-access-network-
                  architecture-02, January 2015.
    
       [ICNP12]   Cao, Y., Xu, M., and X. Fu, "Delay-based congestion
                  control for multipath TCP", 20th IEEE International
                  Conference on Network Protocols (INCP),
                  DOI 10.1109/ICNP.2012.6459978, October 2012.
    
       [IETF88]   Stewart, L., "IETF 88 Meeting minutes of the MPTCP working
                  group", November 2013, <https://www.ietf.org/proceedings/
                  88/minutes/minutes-88-mptcp>.
    
    Bonaventure, et al.           Informational                    [Page 25]
    RFC 8041                    MPTCP Experience                January 2017
    
       [IETFJ]    Bonaventure, O. and S. Seo, "Multipath TCP Deployments",
                  IETF Journal, Vol. 12, Issue 2, November 2016.
    
       [IMC11]    Honda, M., Nishida, Y., Raiciu, C., Greenhalgh, A.,
                  Handley, M., and H. Tokuda, "Is it still possible to
                  extend TCP?", IMC '11: Proceedings of the 2011 ACM SIGCOMM
                  conference on Internet measurement conference,
                  DOI 10.1145/2068816.2068834, November 2011,
                  <http://doi.acm.org/10.1145/2068816.2068834>.
    
       [IMC13a]   Detal, G., Hesmans, B., Bonaventure, O., Vanaubel, Y., and
                  B. Donnet, "Revealing Middlebox Interference with
                  Tracebox", Proceedings of the 2013 ACM SIGCOMM conference
                  on Internet measurement conference,
                  DOI 10.1145/2504730.2504757, October 2013,
                  <http://inl.info.ucl.ac.be/publications/
                  revealing-middlebox-interference-tracebox>.
    
       [IMC13b]   Chen, Y., Lim, Y., Gibbens, R., Nahum, E., Khalili, R.,
                  and D. Towsley, "A measurement-based study of MultiPath
                  TCP performance over wireless network", ICM '13:
                  Proceedings of the 2013 conference on Internet
                  measurement conference, DOI 10.1145/2504730.2504751,
                  October 2013,
                  <http://doi.acm.org/10.1145/2504730.2504751>.
    
       [IMC13c]   Pelsser, C., Cittadini, L., Vissicchio, S., and R. Bush,
                  "From Paris to Tokyo: on the suitability of ping to
                  measure latency", IMC '13: Proceedings of the 2013
                  conference on Internet measurement Conference,
                  DOI 10.1145/2504730.2504765, October 2013,
                  <http://doi.acm.org/10.1145/2504730.2504765>.
    
       [INFOCOM14]
                  Lim, Y., Chen, Y., Nahum, E., Towsley, D., and K. Lee,
                  "Cross-layer path management in multi-path transport
                  protocol for mobile devices", IEEE INFOCOM'14,
                  DOI 10.1109/INFOCOM.2014.6848120, April 2014.
    
       [KT]       Seo, S., "KT's GiGA LTE", July 2015,
                  <https://www.ietf.org/proceedings/93/slides/
                  slides-93-mptcp-3.pdf>.
    
       [MBTest]   Hesmans, B., "MBTest", October 2013,
                  <https://bitbucket.org/bhesmans/mbtest>.
    
    Bonaventure, et al.           Informational                    [Page 26]
    RFC 8041                    MPTCP Experience                January 2017
    
       [Mobicom15]
                  De Coninck, Q., Baerts, M., Hesmans, B., and O.
                  Bonaventure, "Poster - Evaluating Android Applications
                  with Multipath TCP", Mobicom 2015 (Poster),
                  DOI 10.1145/2789168.2795165, September 2015.
    
       [MPTCP-DEPLOY]
                  Paasch, C., Biswas, A., and D. Haas, "Making Multipath TCP
                  robust for stateless webservers", Work in Progress,
                  draft-paasch-mptcp-syncookies-02, October 2015.
    
       [MPTCP-LOAD]
                  Paasch, C., Greenway, G., and A. Ford, "Multipath TCP
                  behind Layer-4 loadbalancers", Work in Progress,
                  draft-paasch-mptcp-loadbalancer-00, September 2015.
    
       [MPTCP-MAX-SUB]
                  Boucadair, M. and C. Jacquenet, "Negotiating the Maximum
                  Number of Multipath TCP (MPTCP) Subflows", Work in
                  Progress draft-boucadair-mptcp-max-subflow-02, May 2016.
    
       [MPTCPBIB] Bonaventure, O., "Multipath TCP - Annotated bibliography",
                  Technical report, April 2015,
                  <https://github.com/obonaventure/mptcp-bib>.
    
       [MultipathTCP-Linux]
                  Paasch, C., Barre, S., and . et al, "Multipath TCP - Linux
                  Kernel implementation", <http://www.multipath-tcp.org>.
    
       [NSDI11]   Wischik, D., Raiciu, C., Greenhalgh, A., and M. Handley,
                  "Design, implementation and evaluation of congestion
                  control for multipath TCP", NSDI11: In Proceedings of the
                  8th USENIX conference on Networked systems design
                  and implementation, 2011.
    
       [NSDI12]   Raiciu, C., Paasch, C., Barre, S., Ford, A., Honda, M.,
                  Duchene, F., Bonaventure, O., and M. Handley, "How Hard
                  Can It Be? Designing and Implementing a Deployable
                  Multipath TCP", NSDI '12: USENIX Symposium of Networked
                  Systems Design and implementation, April 2012,
                  <http://inl.info.ucl.ac.be/publications/how-hard-can-it-
                  be-designing-and-implementing-deployable-multipath-tcp>.
    
       [PaaschPhD]
                  Paasch, C., "Improving Multipath TCP", Ph.D. Thesis ,
                  November 2014, <http://inl.info.ucl.ac.be/publications/
                  improving-multipath-tcp>.
    
    Bonaventure, et al.           Informational                    [Page 27]
    RFC 8041                    MPTCP Experience                January 2017
    
       [PAM2016]  De Coninck, Q., Baerts, M., Hesmans, B., and O.
                  Bonaventure, "A First Analysis of Multipath TCP on
                  Smartphones", 17th International Passive and Active
                  Measurements Conference (PAM2016) volume 17, March 2016,
                  <http://inl.info.ucl.ac.be/publications/
                  first-analysis-multipath-tcp-smartphones>.
    
       [PAMS2014] Arzani, B., Gurney, A., Cheng, S., Guerin, R., and B. Loo,
                  "Impact of Path Selection and Scheduling Policies on MPTCP
                  Performance", PAMS2014, DOI 10.1109/WAINA.2014.121, May
                  2014.
    
       [Presto08] Greenberg, A., Lahiri, P., Maltz, D., Patel, P., and S.
                  Sengupta, "Towards a next generation data center
                  architecture: scalability and commoditization", ACM
                  PRESTO 2008, DOI 10.1145/1397718.1397732, August 2008,
                  <http://dl.acm.org/citation.cfm?id=1397732>.
    
       [PT14]     Pearce, C. and P. Thomas, "Multipath TCP Breaking Today's
                  Networks with Tomorrow's Protocols", Proc.
                  Blackhat Briefings, 2014, <http://www.blackhat.com/docs/
                  us-14/materials/us-14-Pearce-Multipath-TCP-Breaking-
                  Todays-Networks-With-Tomorrows-Protocols-WP.pdf>.
    
       [PZ15]     Pearce, C. and S. Zeadally, "Ancillary Impacts of
                  Multipath TCP on Current and Future Network Security",
                  IEEE Internet Computing, vol. 19, no. 5, pp. 58-65,
                  DOI 10.1109/MIC.2015.70, September 2015.
    
       [RFC1812]  Baker, F., Ed., "Requirements for IP Version 4 Routers",
                  RFC 1812, DOI 10.17487/RFC1812, June 1995,
                  <http://www.rfc-editor.org/info/rfc1812>.
    
       [RFC1928]  Leech, M., Ganis, M., Lee, Y., Kuris, R., Koblas, D., and
                  L. Jones, "SOCKS Protocol Version 5", RFC 1928,
                  DOI 10.17487/RFC1928, March 1996,
                  <http://www.rfc-editor.org/info/rfc1928>.
    
       [RFC2992]  Hopps, C., "Analysis of an Equal-Cost Multi-Path
                  Algorithm", RFC 2992, DOI 10.17487/RFC2992, November 2000,
                  <http://www.rfc-editor.org/info/rfc2992>.
    
       [RFC4987]  Eddy, W., "TCP SYN Flooding Attacks and Common
                  Mitigations", RFC 4987, DOI 10.17487/RFC4987, August 2007,
                  <http://www.rfc-editor.org/info/rfc4987>.
    
    Bonaventure, et al.           Informational                    [Page 28]
    RFC 8041                    MPTCP Experience                January 2017
    
       [RFC6356]  Raiciu, C., Handley, M., and D. Wischik, "Coupled
                  Congestion Control for Multipath Transport Protocols",
                  RFC 6356, DOI 10.17487/RFC6356, October 2011,
                  <http://www.rfc-editor.org/info/rfc6356>.
    
       [RFC7430]  Bagnulo, M., Paasch, C., Gont, F., Bonaventure, O., and C.
                  Raiciu, "Analysis of Residual Threats and Possible Fixes
                  for Multipath TCP (MPTCP)", RFC 7430,
                  DOI 10.17487/RFC7430, July 2015,
                  <http://www.rfc-editor.org/info/rfc7430>.
    
       [RFC7871]  Contavalli, C., van der Gaast, W., Lawrence, D., and W.
                  Kumari, "Client Subnet in DNS Queries", RFC 7871,
                  DOI 10.17487/RFC7871, May 2016,
                  <http://www.rfc-editor.org/info/rfc7871>.
    
       [SIGCOMM11]
                  Raiciu, C., Barre, S., Pluntke, C., Greenhalgh, A.,
                  Wischik, D., and M. Handley, "Improving datacenter
                  performance and robustness with multipath TCP", SIGCOMM
                  '11: Proceedings of the ACM SIGCOMM 2011 conference,
                  DOI 10.1145/2018436.2018467, August 2011,
                  <http://doi.acm.org/10.1145/2018436.2018467>.
    
       [SOCKET]   Hesmans, B. and O. Bonaventure, "An enhanced socket API
                  for Multipath TCP", Proceedings of the 2016 Applied
                  Networking Research Workshop, DOI 10.1145/2959424.2959433,
                  July 2016, <http://doi.acm.org/10.1145/2959424.2959433>.
    
       [StrangeMbox]
                  Bonaventure, O., "Multipath TCP through a strange
                  middlebox", Blog post, January 2015,
                  <http://blog.multipath-tcp.org/blog/html/2015/01/30/
                  multipath_tcp_through_a_strange_middlebox.html>.
    
       [TMA2015]  Hesmans, B., Tran Viet, H., Sadre, R., and O. Bonaventure,
                  "A First Look at Real Multipath TCP Traffic", Traffic
                  Monitoring and Analysis, 2015,
                  <http://inl.info.ucl.ac.be/publications/
                  first-look-real-multipath-tcp-traffic>.
    
       [TR-348]   Broadband Forum, ., "TR 348 - Hybrid Access Broadband
                  Network Architecture", Issue: 1, July 2016,
                  <https://www.broadband-forum.org/technical/download/
                  TR-348.pdf>.
    
    Bonaventure, et al.           Informational                    [Page 29]
    RFC 8041                    MPTCP Experience                January 2017
    
       [tracebox] Detal, G. and O. Tilmans, "Tracebox: A Middlebox Detection
                  Tool", 2013, <http://www.tracebox.org>.
    
    Acknowledgements
    
       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.
    
    Authors' Addresses
    
       Olivier Bonaventure
       UCLouvain
    
       Email: Olivier.Bonaventure@uclouvain.be
    
       Christoph Paasch
       Apple, Inc.
    
       Email: cpaasch@apple.com
    
       Gregory Detal
       Tessares
    
       Email: Gregory.Detal@tessares.net
    
    Bonaventure, et al.           Informational                    [Page 30]


  • 相关阅读:
    第一讲 递归与循环3
    第一讲 递归与循环2
    第一讲 递归与循环1
    [转]批处理
    VBA运算符(九)
    VBA常量(八)
    VBA变量(七)
    VBA输入框(InputBox)(六)
    VBA消息框(MsgBox)(五)
    VBA宏注释(四)
  • 原文地址:https://www.cnblogs.com/ztguang/p/12644983.html
Copyright © 2011-2022 走看看