Internet DRAFT - draft-deconinck-multipath-quic

draft-deconinck-multipath-quic







QUIC Working Group                                         Q. De Coninck
Internet-Draft                                            O. Bonaventure
Intended status: Standards Track                               UCLouvain
Expires: May 3, 2018                                    October 30, 2017


                      Multipath Extension for QUIC
                   draft-deconinck-multipath-quic-00

Abstract

   Multipath TCP has shown how a reliable transport protocol can
   efficiently use multiple paths for a given connection.  We leverage
   the experience gained with Multipath TCP to propose simple extensions
   that enable QUIC to efficiently use multiple paths during the
   lifetime of a QUIC connection.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on May 3, 2018.

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.



De Coninck & Bonaventure   Expires May 3, 2018                  [Page 1]

Internet-Draft                   MP-QUIC                    October 2017


Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Conventions and Definitions . . . . . . . . . . . . . . . . .   3
   3.  Overview  . . . . . . . . . . . . . . . . . . . . . . . . . .   4
     3.1.  What is a Path? . . . . . . . . . . . . . . . . . . . . .   4
     3.2.  Going Further than Connection Migration . . . . . . . . .   4
     3.3.  Starting a Multipath QUIC Connection  . . . . . . . . . .   6
     3.4.  Multipath QUIC Architecture . . . . . . . . . . . . . . .   7
     3.5.  Exchanging Data over Multiple Paths . . . . . . . . . . .   7
     3.6.  Starting to Use Paths . . . . . . . . . . . . . . . . . .   8
     3.7.  Communicating New Addresses . . . . . . . . . . . . . . .   9
     3.8.  Path Migration  . . . . . . . . . . . . . . . . . . . . .   9
     3.9.  Coping with Address Removals  . . . . . . . . . . . . . .  10
     3.10. Congestion Control  . . . . . . . . . . . . . . . . . . .  11
   4.  Packet Format Changes . . . . . . . . . . . . . . . . . . . .  11
   5.  Using Multiple Paths  . . . . . . . . . . . . . . . . . . . .  12
     5.1.  Multipath Negotiation . . . . . . . . . . . . . . . . . .  12
       5.1.1.  Transport Parameter Definition  . . . . . . . . . . .  13
     5.2.  Path State  . . . . . . . . . . . . . . . . . . . . . . .  13
   6.  Modifications to QUIC frames  . . . . . . . . . . . . . . . .  14
     6.1.  ACK Frame . . . . . . . . . . . . . . . . . . . . . . . .  14
   7.  New Frames  . . . . . . . . . . . . . . . . . . . . . . . . .  15
     7.1.  ADD_ADDRESS Frame . . . . . . . . . . . . . . . . . . . .  15
     7.2.  REMOVE_ADDRESS Frame  . . . . . . . . . . . . . . . . . .  16
     7.3.  PATHS Frame . . . . . . . . . . . . . . . . . . . . . . .  16
   8.  Security Considerations . . . . . . . . . . . . . . . . . . .  17
     8.1.  Nonce Computation . . . . . . . . . . . . . . . . . . . .  17
   9.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  18
     9.1.  QUIC Transport Parameter Registry . . . . . . . . . . . .  18
   10. References  . . . . . . . . . . . . . . . . . . . . . . . . .  18
     10.1.  Normative References . . . . . . . . . . . . . . . . . .  18
     10.2.  Informative References . . . . . . . . . . . . . . . . .  19
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  20

1.  Introduction

   Endhosts have evolved.  Today's endhosts are equipped with several
   network interfaces and users expect to be able to seamlessly switch
   from one to another or use them simultaneously to aggregate
   bandwidth.  During the last years, several multipath extensions to
   transport protocols have been proposed [RFC6824],[MPRTP],[SCTPCMT].
   Multipath TCP [RFC6824] is the most mature one.  It is already
   deployed on popular smartphones and for other use cases [RFC8041].

   With regular TCP and UDP, all the packets that belong to a given flow
   contain the same 5-tuple that acts as an identifier for this flow.
   This prevents flows from using multiple paths.  QUIC



De Coninck & Bonaventure   Expires May 3, 2018                  [Page 2]

Internet-Draft                   MP-QUIC                    October 2017


   [I-D.ietf-quic-transport] does not use the 5-tuple as an implicit
   connection identifier.  A QUIC flow is identified by its Connection
   ID.  This enables flows to survive to events such as NAT rebinding or
   mobility cases where the IP address or the port of one of the
   communicating peer changes.  This connection migration feature is key
   for QUIC to migrate a flow from one path to another.  However, this
   path change is implicit and the current design
   [I-D.ietf-quic-transport] still assumes single-path flows.  Seamless
   handovers between wireless networks on smartphones are one of the
   motivations for connection migration in QUIC.  However, experience
   with Multipath TCP shows that the handover between different wireless
   networks is not an abrupt process [Cellnet],[IETFJ] . To support
   seamless handovers, it is important to be able to use two (or more)
   paths simultaneously during the handover.

   Bringing Multipath to QUIC allows hosts to aggregate several networks
   while providing better handover support, and potentially opens new
   use cases.  A detailed performance evaluation and a comparison
   between Multipath QUIC and Multipath TCP may be found in [MPQUIC].

   In this draft, we leverage many of the lessons learned from the
   design of Multipath TCP and propose extensions to the current QUIC
   design to enable it to simultaneously use several paths.  This
   document is organized as follows.  It first provides an overview of
   the operation of Multipath QUIC.  It then states changes required in
   the packet format and specifies the usage of multiple paths.  It also
   defines new frames to perform multipath operations.  Finally, it
   provides some security and IANA considerations.

2.  Conventions and Definitions

   The words "MUST", "MUST NOT", "SHOULD", and "MAY" are used in this
   document.  It's not shouting; when they are capitalized, they have
   the special meaning defined in [RFC2119].

   We assume that the reader is familiar with the terminology used in
   the QUIC documents [I-D.ietf-quic-transport].  In addition, we
   define:

   o  Path: A logical association between two hosts over which packets
      can be sent.  A path is identified by a Path ID.

   o  Initial Path: The path used for the establishment of the QUIC
      connection.  The cryptographic handshake is done on this path.  It
      is identified by Path ID 0.






De Coninck & Bonaventure   Expires May 3, 2018                  [Page 3]

Internet-Draft                   MP-QUIC                    October 2017


3.  Overview

   The current design of QUIC [I-D.ietf-quic-transport] provides
   reliable transport with multiplexing and security.  A wide range of
   devices on today's Internet are multihomed.  Examples include
   smartphones equipped with both WiFi and cellular interfaces, but also
   regular dual-stack hosts that use both IPv4 and IPv6.  Experience
   with Multipath TCP has shown that the ability to combine different
   paths during the lifetime of a connection provides various benefits
   including bandwidth aggregation or seamless handovers
   [RFC8041],[IETFJ].

   The current design of QUIC does not enable multihomed devices to
   efficiently use different paths.  We first explain why a multipath
   extension would be beneficial to QUIC and them describe it at a high
   level.

3.1.  What is a Path?

   Before going into details, let's first define what is called a
   "path".  A path is a UDP flow between two hosts denoted by a 4-tuple
   (IP source address, IP destination address, source port, destination
   port).  On a smartphone interacting with a single-homed server, the
   mobile device could decide to use one path over the WiFi network and
   another over the cellular one.  Those paths are not necessarily
   completely disjoint.  For example, when interacting with a dual-stack
   server, a smartphone may create two paths over the WiFi network, one
   over IPv4 and the other one over IPv6.

3.2.  Going Further than Connection Migration

   Unlike TCP [RFC0793], QUIC is not bound to a particular 4-tuple
   during the lifetime of a connection.  A QUIC connection is identified
   by a Connection ID, placed in the public header of QUIC packets.
   This enables hosts to continue the connection even if the 4-tuple
   changed due to, e.g., NAT rebinding.  This ability to shift a
   connection from one 4-tuple to another is called Connection
   Migration.  Another of its use cases is fail-over when the address in
   use fails but another one is available.  A mobile device loosing the
   WiFi connectivity can then continue the connection over its cellular
   interface.

   A QUIC connection can thus start on a given path and end on another
   one.  However, the current QUIC design [I-D.ietf-quic-transport]
   assumes that only one path is in use for a given connection.  This
   connection migration feature is not intended to support the
   simultaneous usage of multiple paths.  To illustrate this point,
   consider the following scenario where a smartphone connected to both



De Coninck & Bonaventure   Expires May 3, 2018                  [Page 4]

Internet-Draft                   MP-QUIC                    October 2017


   WiFi and LTE networks sends a POST request fitting in 2 packets and
   receives a large response from the single-homed server.

   Server                        Phone                           Server
   via WiFi                                                     via LTE
   -------                      -------                          -----
     |  Pkt(CID=A, PN=1, frames=[  |
     |   STREAM("Request (1/2)")]) | Pkt(CID=A, PN=2, frames=[     |
     |<----------------------------|  STREAM("Request (2/2)")])    |
     |  Pkt(CID=A, PN=1, frames=[  |--------                       |
     |   ACK(LargestAcked=1)])     |       |----------             |
     |---------------------------->|                 |----------   |
     |                             |                           |-->|
     |                             |   Pkt(CID=A, PN=2, frames=[   |
     |                             |    ACK(LargestAcked=2),       |
     |                             |    STREAM("Response 1")]) ----|
     |                             |                 ----------|   |
     |                             |       ----------|             |
     |                             |<------|                       |
     |                             |    Pkt(CID=A, PN=3, frames=[  |
     |                             |     ACK (LargestAcked=2)])    |
     |                             |--------                       |
     |                             |       |----------             |
     |                             |                 |----------   |
     |                             |                           |-->|
     |                             |  Pkt(CID=A, PN=2, frames=[    |
     |                             |   STREAM("Response 2")])      |
     |                             |                           ----|
     |                             |           ...   <---------|   |


              Figure 1: Single-path QUIC with multiple paths

   Assume the client wants to aggregate all the network interfaces it
   has.  It sends the first packet with the STREAM frame containing the
   beginning of the request on the WiFi interface.  It then sends the
   second one on its LTE interface.  If the WiFi network exhibits a
   lower latency than the LTE one, the server will first receive the
   packet from the WiFi network and acknowledge it by sending an ACK
   frame on the WiFi.  Then, it receives the second packet from the LTE
   network.  Thanks to the Connection ID (CID) in the public header of
   the QUIC packet, the server detects that this packet belongs to the
   same connection and performs a connection migration over this new
   4-tuple.  At this point, the connection remains stuck on the cellular
   network, unless the smartphone sends a new packet over the WiFi
   network.  This is because there is currently no way for the server to
   know that the remote peer uses two different networks paths with
   potentially different properties.  The smartphone might have sent the



De Coninck & Bonaventure   Expires May 3, 2018                  [Page 5]

Internet-Draft                   MP-QUIC                    October 2017


   first response ACK frame on the WiFi to drift the connection towards
   the WiFi network, but the server would lose its ability to use the
   cellular one, and would possibly observe large RTT variance over the
   connection.  The multipath extension of QUIC aims to achieve an
   efficient usage of multiple paths by making them explicit to peers.

   With the proposed multipath extension to QUIC, the example presented
   in Figure 1 can become the one presented below.

   Server                          Phone                          Server
   via WiFi                                                      via LTE
   -------                        -------                          -----
     | Pkt(CID=A,PID=1,PN=1,frames=[ |                               |
     |  STREAM("Request (1/2)")])    | Pkt(CID=A,PID=3,PN=1,frames=[ |
     |<------------------------------|  STREAM("Request (2/2)")])    |
     | Pkt(CID=A,PID=1,PN=1,frames=[ |--------                       |
     |  ACK(PID=1,LargestAcked=1)])  |       |----------             |
     |------------------------------>|                 |----------   |
     | Pkt(CID=A,PID=1,PN=2,frames=[ |                           |-->|
     |  STREAM("Response 1")])       | Pkt(CIA=A,PID=3,PN=1,frames=[ |
     |------------------------------>|  ACK(PID=3,LargestAcked=1),   |
     |                               |  STREAM("Response 2")])   ----|
     | Pkt(CID=A,PID=1,PN=2,frames=[ |                 ----------|   |
     |  ACK(PID=1, LargestAcked=2),  |       ----------|             |
     |  ACK(PID=3, LargestAcked=1)]) |<------|                       |
     |<------------------------------|                               |
     | Pkt(CID=A,PID=1,PN=3,frames=[ | Pkt(CIA=A,PID=3,PN=2,frames=[ |
     |  STREAM("Response 3")])       |  STREAM("Response 4")])       |
     |------------------------------>|                           ----|
     |                               |                 ----------|   |
     |            ...                |  ...  <---------|             |

                  Figure 2: Dataflow with Multipath QUIC

   With the notion of multiple paths explicitly advertised, the server
   is aware that multiple paths using different networks are present,
   and can potentially be used simultaneously since it knows the 4-tuple
   to use for each path.  When the server receives the request that was
   carried over two different paths, it can then use both of them to
   transfer back the response to the client.  The remaining of this
   section focuses on giving a high-level view of the multipath
   operations in QUIC.

3.3.  Starting a Multipath QUIC Connection

   Before using multiple paths, the QUIC connection must be established.
   A Multipath QUIC connection always starts over an initial path where
   the cryptographic handshake takes place over the dedicated stream



De Coninck & Bonaventure   Expires May 3, 2018                  [Page 6]

Internet-Draft                   MP-QUIC                    October 2017


   with Stream ID 0.  The establishment is thus performed as in the
   current QUIC design [I-D.ietf-quic-transport] [I-D.ietf-quic-tls].
   The negotiation of multipath is performed during the cryptographic
   handshake with the max_path_id transport parameter, where both hosts
   advertise how many paths they are willing to use.  The number of
   paths that can then be used over the connection once handshake
   completes is the minimum between both advertised values.  The path on
   which the cryptographic handshake and the path number negotiation are
   performed is called the Initial Path and is identified by the Path ID
   0.

3.4.  Multipath QUIC Architecture

   Once the connection is established, QUIC can start to use as many
   paths as negotiated.  A Multipath QUIC connection is composed of
   several paths.  Each path is associated with a different four-tuple
   and identified by a Path ID, as shown in Figure 3.

             +---------------------------------------------+
             |                  Connection                 |
             |   +--------+ +--------+ ... +------------+  |
             |   | Path 0 | | Path 1 |     | Path N - 1 |  |
             |   | Tuple  | | Tuple' | ... |   Tuple"   |  |
             |   |  PN    | |  PN'   |     |    PN"     |  |
             |   +--------+ +--------+ ... +------------+  |
             +---------------------------------------------+

              Figure 3: Architectural view of Multipath QUIC

   A Multipath QUIC connection starts on the Initial Path, identified by
   Path ID 0.  In Multipath QUIC, each packet (except the handshake
   packets at the beginning of the connection) explicitly contains the
   path identifier of the path it belongs to.  This Path ID is included
   in the QUIC public header of each packet.  This design simplifies the
   detection of packet losses on a per-path basis and enables a receiver
   to easily detect out-of-order packets on a given path.  Hosts can
   also collect network information about each path, such as round-trip-
   time measurements and maintain a per-path congestion window.

3.5.  Exchanging Data over Multiple Paths

   A QUIC packet acts as a container of one of more frames.  Multipath
   QUIC uses the same STREAM frames as QUIC to carry data.  A byte
   offset is associated to the data payload.  One of the key design
   decision of (Multipath) QUIC is that frames are independent of the
   packets carrying them.  This implies that a frame transmitted over
   one path could be retransmitted later on another path without any
   change.



De Coninck & Bonaventure   Expires May 3, 2018                  [Page 7]

Internet-Draft                   MP-QUIC                    October 2017


   However, the path on which data is sent is a packet-level
   information.  This means a frame can be sent regardless of the path
   of the packet carrying it.  Furthermore, because the data offset is a
   frame-level information, there is no need to define additional
   sequence numbers to cope with reordering across paths, unlike
   Multipath TCP [RFC6824] that uses a Data Sequence Number at MPTCP
   level.  Other flow control considerations like the stream receive
   window advertised by the MAX_STREAM_DATA frame remain unchanged when
   there are multiple paths.

   However, Multipath QUIC might face reordering at packet-level when
   using paths having different latencies.  The presence of the Path ID
   in the public header ensures that the packets sent over a given path
   will contain monotonically increasing packet numbers.  To ensure more
   flexibility and potentially to reduce the ACK block section of the
   ACK frame when aggregating bandwidth of paths exhibiting different
   network characteristics, each path keeps its own monotonically
   increasing Packet Number space.  This potentially allows sending 256
   * 2^64 packets on a QUIC connection since each path (with a Path ID
   encoded on 1 byte) has its own packet number space.

   The ACK frame is also modified to allow per-path packet
   acknowledgments.  This remains compliant with the design decision of
   the independence between packets and frames while providing more
   flexibility to hosts to decide on which path they want to send path
   acknowledgments.  Looking again in Figure 2, packets that were sent
   over a given path (e.g., the response2 packet on path 3) can be
   acknowledged on another path (here, path 1) to limit the latency due
   to ACK transmission on high-latency paths.  Such scheduling decision
   would not have been possible in Multipath TCP [RFC6824] which must
   acknowledge data coming from a given path on the same path.

3.6.  Starting to Use Paths

   The cryptographic handshake determines how many paths, in addition to
   the initial one, can be used.  Once this handshake completes, hosts
   can start using them simply by transmitting QUIC packets with the
   associated Path ID.  In contrast with Multipath TCP, Multipath QUIC
   does not require a per-path handshake.  This reduces the time
   required to use a not used yet path.  Multipath QUIC is fully
   symmetrical.  Both client and server can start using new paths.

   Although a path can be first used by any host, it might not be
   practical for one of the peers to start using new paths.  A possible
   cause is when a server wants to initiate the usage of a new path to a
   NAT'd client.  The client would possibly not receive the packet,
   leading to connectivity issues on that path.  To detect such issues,
   the PATHS frame provides a list of the current active paths of the



De Coninck & Bonaventure   Expires May 3, 2018                  [Page 8]

Internet-Draft                   MP-QUIC                    October 2017


   sending hosts to the peer.  A path is called active when a functional
   network 4-tuple (on which either packets were sent or received on it
   or host received acknowledgments for packets over that path) is
   assigned to it.  Furthermore, the PATHS frame indicates which 4-tuple
   the path is currently using.  It also contains some path status
   metrics such as the round-trip-time estimated by the sending host
   over a given path in order to provide a global view of the path
   performance.

3.7.  Communicating New Addresses

   When a multi-homed mobile device connects to a dual-stacked server on
   its IPv4 address, it is aware of its local addresses (e.g., the WiFi
   and the cellular ones) and the IPv4 remote address used to establish
   connection.  If the client wants to create new paths over IPv6, it
   needs to learn the other addresses of the remote peer.

   This is possible with the ADD_ADDRESS frames that are sent by a
   Multipath QUIC host to advertise its current addresses.  Each
   advertised address has an Address ID given by the sending host.  The
   addresses assigned to a host can vary during the lifetime of a
   Multipath QUIC connection.  A new ADD_ADDRESS frame is transmitted
   when host has a new address.  This ADD_ADDRESS frame is protected as
   other QUIC control frames, which implies that it cannot be spoofed by
   attackers.

3.8.  Path Migration

   At a given time, a Multipath QUIC connection gathers a set of paths,
   each denoted by a 4-tuple.  The 4-tuple that is associated to a path
   is not fixed.  It may change during the lifetime of a connection.
   Those changes can be caused by NAT rebindings or handovers for
   example.


















De Coninck & Bonaventure   Expires May 3, 2018                  [Page 9]

Internet-Draft                   MP-QUIC                    October 2017


                                                                    Host
                                                                    ----
   UDP(sIP= 192.0.2.0, dIP=198.51.100.0, sport=S, dport=D, payload=   |
       QUICPkt(CID=A, PN=X, PathID=1))                                |
           -------------------------------------------------------->  |
                                                                      |
   UDP(sIP= 198.51.100.0, dIP=192.0.2.0, sport=D, dport=S, payload=   |
       QUICPkt(CID=A, PN=Y, PathID=1))                                |
           <--------------------------------------------------------  |
                                                                      |
   UDP(sIP= 203.0.113.0, dIP=198.51.100.0, sport=T, dport=D, payload= |
       QUICPkt(CID=A, PN=X+1, PathID=1))                              |
           -------------------------------------------------------->  |
                                                                      |
   UDP(sIP= 198.51.100.0, dIP=203.0.113.0, sport=D, dport=T, payload= |
       QUICPkt(CID=A, PN=Y+1, PathID=1))                              |
           <--------------------------------------------------------  |
                                                                      |

                    Figure 4: Example of path migration

   Figure 4 shows an example of path whose 4-tuple changes during the
   connection.  Initially, from the host perspective, path 1 is using
   the 4-tuple (198.51.100.0, 192.0.2.0, D, S).  The first packet it
   receives still uses it and the host uses that 4-tuple to generate the
   next packet on that path.  Then, host receives a packet on path 1
   with a different 4-tuple (198.51.100.0, 203.0.113.0, D, T), with both
   changed remote IP and port.  Because the QUIC packet contains both
   the Connection ID and the Path ID it belongs to, host can simply
   adapt the path 4-tuple to the one of the last packet received, and
   next packets on path 1 will use that 4-tuple.  Because the Path ID is
   its only identifier, a path is not bound to a particular 4-tuple, and
   can shift to another one.  Multipath QUIC thus integrates the
   Connection Migration ability at path level, providing the Path
   Migration ability.

3.9.  Coping with Address Removals

   During the life of the QUIC connection, an host might lose some of
   its addresses . A concrete example is a smartphone going out of
   reachability of a WiFi network or shutting off one of its network
   interfaces.  Such address removals are advertised by REMOVE_ADDRESS
   frames.  Those frames contain the Address ID of the lost address.

   Thanks to this frame, an host can stop using a path whose 4-tuple
   contains the removed address.  However, if a NAT'd client losses its
   private address and advertises this event, the sever will not know to
   which public address this advertisement is intended and might still



De Coninck & Bonaventure   Expires May 3, 2018                 [Page 10]

Internet-Draft                   MP-QUIC                    October 2017


   use paths using that particular address.  The PATHS frame helps the
   server to perform the mapping between both addresses.  It contains
   for each active path the local Address ID used by the sending host.
   With both the PATHS and the REMOVE_ADDRESS frames, the server can
   identify which paths will be affected by the address removal to stop
   their usage before being migrated to another 4-tuple.

3.10.  Congestion Control

   The QUIC congestion control scheme is defined in
   [I-D.ietf-quic-recovery].  This congestion control scheme is not
   suitable when several paths are active.  Using the congestion control
   scheme defined in [I-D.ietf-quic-recovery] with Multipath QUIC would
   result in unfairness.  Each path of a Multipath QUIC connection MUST
   have its own congestion window.  The windows of the different paths
   MUST be coupled together.  Multipath TCP uses the LIA congestion
   control scheme specified in [RFC6356].  This scheme can immediately
   be adapted to Multipath QUIC.  Other coupled congestion control
   schemes have been proposed for Multipath TCP such as [OLIA].

4.  Packet Format Changes

   This section describes the changes required in the packet format.  As
   previously described, multipath capabilities must be enabled after
   connection establishment.  Because the initial path has Path ID 0,
   packets with long headers are considered to be sent on Path 0,
   therefore no change is required on the wire.  Since only short
   headers are expected to be sent once the connection is established,
   only those require the Path ID as a field.  The proposed short header
   is presented in Figure 5.





















De Coninck & Bonaventure   Expires May 3, 2018                 [Page 11]

Internet-Draft                   MP-QUIC                    October 2017


    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+
   |0|C|K|M|Type(4)|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                     [Connection ID (64)]                      +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | [Path ID (8)] |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Packet Number (8/16/32)                ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Protected Payload (*)                   ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


                  Figure 5: New Short Header for Packets

   The usage of multiple paths is indicated with the M bit.  If this bit
   is set, the packet also contains the Path ID field indicating the
   path the packet belongs to.  If the multipath flag is not set, the
   packet belongs to path 0.  Notice that Path ID 0 can be used as a
   regular path to exchange data, but a single-path connection MUST use
   path 0 for all exchanged packets.

5.  Using Multiple Paths

5.1.  Multipath Negotiation

   The Multipath Negotiation takes place during the cryptographic
   handshake with the max_path_id transport parameter.  A QUIC
   connection is initially single-path in QUIC, and all packets prior to
   handshake completion MUST be exchanged over the Initial Path.  During
   this process, hosts advertise the maximum path ID they are willing to
   use.  The maximum path ID that can be used over the connection is the
   minimum between both advertised values.  A connection can then use
   any path with a Path ID comprised between 0 and the negotiated
   maximum path ID inclusive.  If one of the host does not provides the
   max_path_id transport parameter during the cryptographic handshake,
   the remote MUST assume a value of 0, leading to a single-path
   connection over the Initial Path.  Packets with a Path ID greater
   than the negotiated maximum value MUST be ignored.








De Coninck & Bonaventure   Expires May 3, 2018                 [Page 12]

Internet-Draft                   MP-QUIC                    October 2017


5.1.1.  Transport Parameter Definition

   An endhost MAY use the following transport parameter:

   max_path_id (0x0007):  The maximum path ID transport parameter
      indicates the number of paths in addition to the Initial Path that
      the host is willing to use over the connection, encoded as an
      unsigned 8-bit integer.  This indicates that received packets
      larger than this limit will be dropped.  The default value for
      this parameter is 0, meaning that an host omitting this transport
      parameter does not want to use multiple paths over the connection.

5.2.  Path State

   A path is associated to a UDP flow over which packets can be sent or
   received.  The following state is maintained for a given path.

   o Path ID: this 1-byte number uniquely identifies a path in a
     connection. This value is immutable.
   o Packet Number Space: each path is associated with own monotonically
     increasing packet number space. Each endpoint maintains a separate
     packet number for sending and receiving. Packet number
     considerations described in {{I-D.ietf-quic-transport}} apply
     within a given path.
   o Current 4-tuple: the tuple (sIP, dIP, sport, dport) used by the
     path to send or receive packets. This value is mutable and can also
     be empty when the path is not in use. If this value is set, the
     path is considered as active. The tuple can change either because
     the host decides to change its local address and/or port, or
     because it receives a packet with a different remote address and/or
     port than currently recorded. To cope with possible packet
     reordering within a given path, the remote address and port
     recorded by the host MUST match the one of the received packet with
     the largest Packet Number. The Initial Path MUST remain active at
     any time of the connection.
   o Current (local Address ID, remote Address ID) tuple: those
     identifiers come from the ADD_ADDRESS sent (local) and received
     (remote). This enables host to detect a path as unusable when,
     e.g., the remote Address ID is declared as lost by a
     REMOVE_ADDRESS. The addresses on which the connection was
     established have Address ID 0. The reception of PATHS frames
     helps hosts to perform the matching between the remote Address ID
     and the path.
   o Performance metrics: basic statistics such as round-trip-time or
     number of packets sent and received can be collected on a per-path
     basis. This information can be useful when an host needs to perform
     packet scheduling decisions and flow control management.




De Coninck & Bonaventure   Expires May 3, 2018                 [Page 13]

Internet-Draft                   MP-QUIC                    October 2017


6.  Modifications to QUIC frames

   The multipath extension allows hosts to send packets over multiple
   paths.  Since nearly all QUIC frames are independent of packets, no
   change is required.  The only exception is the ACK frame that
   contains packet-level information with the Largest Acknowledged
   field.  Since the Packet Number are now linked to paths, the ACK
   frame must contain the Path ID it acknowledges.

6.1.  ACK Frame

   This draft changes the type byte of the ACK frame.  The new type is
   formatted as "10PNLLMM", and is parsed as follows:

   o The two high-order bits must be set to 10 indicating that this is
   an ACK frame.  This changes from the 101 prefix of the current QUIC
   design [I-D.ietf-quic-transport].  Note that the prefix 100 is
   currently unused in [I-D.ietf-quic-transport].

   o The "P" bit indicates the presence of the Path ID field in the ACK
   frame.  If unset, the ACK frame relates to the default path (i.e.,
   Path ID 0).

   o Other bits remain unchanged.

   The format of the modified ACK frame is shown below.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | [Path ID (8)] |[Num Blocks(8)]|   NumTS (8)   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                Largest Acknowledged (8/16/32/48)            ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        ACK Delay (16)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     ACK Block Section (*)                   ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Timestamp Section (*)                   ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                 Figure 6: ACK Frame adapted to Multipath

   Compared to the ACK frame in the current QUIC design
   [I-D.ietf-quic-transport], the ACK frame can contain an optional Path
   ID field indicating to which path the acknowledged PSNs relate to.
   Since frames are independent of packets, and the path notion relates
   to the packets, the ACK frames can be sent on any path, unlike



De Coninck & Bonaventure   Expires May 3, 2018                 [Page 14]

Internet-Draft                   MP-QUIC                    October 2017


   Multipath TCP [RFC6824] which is constrained to send ACKs on the same
   path.  The impact of such a strategy on the latency estimation has to
   be explored further.

7.  New Frames

   To support the multipath operations, new frames have been defined to
   coordinate hosts.  This draft uses a type field containing 0x10 to
   indicate that the frame is related to multipath operations.

7.1.  ADD_ADDRESS Frame

   The ADD_ADDRESS frame is used by a host to advertise its currently
   reachable addresses.  The proposed type for the ADDRESS frame is
   0x10.  An ADD_ADDRESS frame is shown below.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|0|0|P|IPVers.|Address ID (8) |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       IP Address (32/128)                   ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          [Port (16)]          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Figure 7: ADD_ADDRESS Frame

   The ADD_ADDRESS frame contains the following fields:

   o Reserved bits: the three most-significant bits of the first byte
     are set to 0, and are reserved for future use.

   o P bit: the fourth most-significant bit of the first byte indicates,
     if set, the presence of the Port field.

   o IPVers.: the remaining four least-significant bits of the first
     byte contains the version of the IP address contained in the IP
     Address field.

   o IP Address: the advertised IP address, in network order.

   o Port: this optional field indicates the port number related to the
     advertised IP address. When this field is present, it indicates
     that a path can use the 2-tuple (IP addr, port).






De Coninck & Bonaventure   Expires May 3, 2018                 [Page 15]

Internet-Draft                   MP-QUIC                    October 2017


7.2.  REMOVE_ADDRESS Frame

   The REMOVE_ADDRESS frame is used by a host to signal that a
   previously announced address was lost.  The proposed type for the
   REMOVE_ADDRESS frame is 0x11.  A REMOVE_ADDRESS frame is shown below.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+
   |Address ID (8) |
   +-+-+-+-+-+-+-+-+

                      Figure 8: REMOVE_ADDRESS Frame

   The frame contains only one field, Address ID, being the identifier
   of the address to remove.  A host SHOULD stop using paths using the
   removed address until they have been migrated to another available
   address.  If the REMOVE_ADDRESS contains an Address ID that was not
   previously announced, host MUST ignore the frame.

7.3.  PATHS Frame

   The PATHS frame communicates the paths state of the sending host to
   the peer.  It allows the sender to communicate its active paths to
   the peer in order to detect potential connectivity issue over paths.
   Its proposed type is 0x12.  The format of the PATHS frame is shown
   below.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+
   |ActivePaths (8)|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Path Info Section (*)                   ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                           Figure 9: PATHS Frame

   The PATHS frame contains the following fields:

   o ActivePaths: the current number of paths considered as active
     sender point of view, excluding the Initial Path. ActivePaths MUST
     be lower or equal to the maximum Path ID negotiated.

   o Path Info Section: contains information about all the active paths
     (i.e., there are ActivePaths + 1 entries). The format of this
     section is shown below.




De Coninck & Bonaventure   Expires May 3, 2018                 [Page 16]

Internet-Draft                   MP-QUIC                    October 2017


    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Path ID 0 (8) |LocAddrID 0 (8)|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        RTT Path 0 (32)                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                  ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Path ID N (8) |LocAddrID N (8)|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        RTT Path N (32)                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Figure 10: Path Info Section

   The fields in the Path Info Section are:

   o Path ID: the Path ID of the active path the sending host provides
     information about.

   o LocAddrID: the local Address ID of the address currently used by
     the path.

   o RTT Path: the RTT experienced by the sending host over the path
     with the provided Path ID. The formatting is similar to the one
     used for the ACK delay field in the ACK frame.

   The Path Info section currently contains the RTT of the sending host,
   but this section can be extended to provide additional information in
   order to get a global picture of the connection at both ends.

8.  Security Considerations

8.1.  Nonce Computation

   With Multipath QUIC, each path has its own packet number space.  With
   the current nonce computation [I-D.ietf-quic-tls], using twice the
   same packet number over two different paths leads to the same
   cryptographic nonce.  Depending on the size of the Initial Value (and
   hence the nonce), there are two ways to mitigate this issue.

   If the Initial Value has a length of 8 bytes, then a packet number
   used on a given path MUST NOT be reused on another path of the
   connection, and therefore at most 2^64 packets can be sent on a QUIC
   connection.  This means there will be packet number skipping at path
   level, but the packet number will remain monotonically increasing on
   each path.



De Coninck & Bonaventure   Expires May 3, 2018                 [Page 17]

Internet-Draft                   MP-QUIC                    October 2017


   If the Initial Value has a length of 9 or more, then the
   cryptographic nonce computation is now performed as follow.  The
   nonce, N, is formed by combining the packet protection IV (either
   client_pp_iv_n or server_pp_iv_n) with the Path ID and the packet
   number.  The 64 bits of the reconstructed QUIC packet number in
   network byte order is left-padded with zeros to the size of the IV.
   The 8 bits of the Path ID is right-padded with zeros to the size of
   the IV.  The Path IV is computed as the exclusive OR of the padded
   Path ID and the IV.  The exclusive OR of the padded packet number and
   the Path IV forms the AEAD nonce.

9.  IANA Considerations

9.1.  QUIC Transport Parameter Registry

   This document defines a new transport parameter for the negotiation
   of multiple paths.  The following entry in Table 1 should be added to
   the "QUIC Transport Parameters" registry under the "QUIC Protocol"
   heading.

                +--------+----------------+---------------+
                | Value  | Parameter Name | Specification |
                +--------+----------------+---------------+
                | 0x0007 | max_path_id    | Section 5.1.1 |
                +--------+----------------+---------------+

          Table 1: Addition to QUIC Transport Parameters Entries

10.  References

10.1.  Normative References

   [I-D.ietf-quic-recovery]
              Iyengar, J. and I. Swett, "QUIC Loss Detection and
              Congestion Control", draft-ietf-quic-recovery-06 (work in
              progress), September 2017.

   [I-D.ietf-quic-tls]
              Thomson, M. and S. Turner, "Using Transport Layer Security
              (TLS) to Secure QUIC", draft-ietf-quic-tls-07 (work in
              progress), October 2017.

   [I-D.ietf-quic-transport]
              Iyengar, J. and M. Thomson, "QUIC: A UDP-Based Multiplexed
              and Secure Transport", draft-ietf-quic-transport-07 (work
              in progress), October 2017.





De Coninck & Bonaventure   Expires May 3, 2018                 [Page 18]

Internet-Draft                   MP-QUIC                    October 2017


   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997, <https://www.rfc-
              editor.org/info/rfc2119>.

10.2.  Informative References

   [Cellnet]  Paasch, C., Detal, G., Duchene, F., Raiciu, C., and O.
              Bonaventure, "Exploring Mobile/WiFi Handover with
              Multipath TCP", ACM SIGCOMM workshop on Cellular Networks
              (Cellnet'12) , 2012.

   [IETFJ]    Bonaventure, O. and S. Seo, "Multipath TCP Deployments",
              IETF Journal , November 2016.

   [MPQUIC]   De Coninck, Q. and O. Bonaventure, "Multipath QUIC: Design
              and Evaluation", 13th International Conference on emerging
              Networking EXperiments and Technologies (CoNEXT 2017).
              http://multipath-quic.org , December 2017.

   [MPRTP]    Singh, V., Ahsan, S., and J. Ott, "MPRTP: Multipath
              considerations for real-time media", Proceedings of the
              4th ACM Multimedia Systems Conference , 2013.

   [OLIA]     Khalili, R., Gast, N., Popovic, M., Upadhyay, U., and J.
              Le Boudec, "MPTCP is not pareto-optimal: performance
              issues and a possible solution", Proceedings of the 8th
              international conference on Emerging networking
              experiments and technologies, ACM , 2012.

   [RFC0793]  Postel, J., "Transmission Control Protocol", STD 7,
              RFC 793, DOI 10.17487/RFC0793, September 1981,
              <https://www.rfc-editor.org/info/rfc793>.

   [RFC6356]  Raiciu, C., Handley, M., and D. Wischik, "Coupled
              Congestion Control for Multipath Transport Protocols",
              RFC 6356, DOI 10.17487/RFC6356, October 2011,
              <https://www.rfc-editor.org/info/rfc6356>.

   [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,
              <https://www.rfc-editor.org/info/rfc6824>.

   [RFC8041]  Bonaventure, O., Paasch, C., and G. Detal, "Use Cases and
              Operational Experience with Multipath TCP", RFC 8041,
              DOI 10.17487/RFC8041, January 2017, <https://www.rfc-
              editor.org/info/rfc8041>.



De Coninck & Bonaventure   Expires May 3, 2018                 [Page 19]

Internet-Draft                   MP-QUIC                    October 2017


   [SCTPCMT]  Iyengar, J., Amer, P., and R. Stewart, "Concurrent
              multipath transfer using SCTP multihoming over independent
              end-to-end paths", IEEE/ACM Transactions on networking,
              Vol. 14, no 5 , 2006.

Authors' Addresses

   Quentin De Coninck
   UCLouvain

   Email: quentin.deconinck@uclouvain.be


   Olivier Bonaventure
   UCLouvain

   Email: Olivier.Bonaventure@uclouvain.be


































De Coninck & Bonaventure   Expires May 3, 2018                 [Page 20]