Network Working Group                                         C. Perkins
Internet-Draft                                     University of Glasgow
Intended status: Standards Track                          March 11, 2019
Expires: September 12, 2019


        Peer-to-Peer Connections for the QUIC Transport Protocol
                     draft-perkins-quic-p2p-mux-00

Abstract

   The QUIC transport protocol is intended to be a general purpose
   transport, but is currently defined for client-server operation only.
   To be applicable to all use cases, it needs to develop support for
   peer-to-peer connection establishment.  This memo describes how this
   can be done, in outline form.  Future work is needed to determine if
   such peer-to-peer use of QUIC is desirable and, if so, to define a
   complete and workable standard for peer-to-peer QUIC connection
   establishment.

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 September 12, 2019.

Copyright Notice

   Copyright (c) 2019 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



Perkins                Expires September 12, 2019               [Page 1]


Internet-Draft              Peer-to-Peer QUIC                 March 2019


   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  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Background  . . . . . . . . . . . . . . . . . . . . . . . . .   3
   3.  QUIC Connection Establishment in the Presence of NATs . . . .   4
     3.1.  Gathering Candidates  . . . . . . . . . . . . . . . . . .   4
     3.2.  Exchanging Candidates . . . . . . . . . . . . . . . . . .   4
     3.3.  Connectivity Checks . . . . . . . . . . . . . . . . . . .   5
     3.4.  Connection Establishment  . . . . . . . . . . . . . . . .   6
   4.  Demultiplexing QUIC and STUN  . . . . . . . . . . . . . . . .   6
   5.  Security Considerations . . . . . . . . . . . . . . . . . . .   6
   6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   7
   7.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .   7
   8.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   7
     8.1.  Normative References  . . . . . . . . . . . . . . . . . .   7
     8.2.  Informative References  . . . . . . . . . . . . . . . . .   8
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .   8

1.  Introduction

   QUIC [I-D.ietf-quic-transport] is a multiplexed and secure general-
   purpose transport protocol.  It is a connection-oriented protocol,
   where the end-points take the role of either client or server.  The
   server passively listens for incoming connections; clients actively
   connect to servers.  Once the connection has been established, QUIC
   is symmetric and allows either end-point to send and receive data on
   multiplexed streams within the connection.

   The client-server design of QUIC supports connection establishment
   when client and server are in the same addressing realm, or if the
   client is behind a network address/port translator (NAT).  In this
   latter case, the outgoing connection request establishes state in the
   NAT, opening the port to allow the response from the server to reach
   the client.  QUIC provides connection migration and path validation
   mechanisms that ensure connections can survive NAT rebinding events.
   The initial version of QUIC has no support, however, for establishing
   connections with a server that is behind a NAT.  Specifically, QUIC
   does not provide any mechanism to probe connectivity and create the
   necessary NAT bindings to allow incoming connections to a server that
   is behind a NAT.

   The combination of the STUN [RFC5389] protocol and the Interactive
   Connectivity Establishment (ICE) framework [RFC8445] provides those
   mechanisms needed to establish connections in the presence of NATs,



Perkins                Expires September 12, 2019               [Page 2]


Internet-Draft              Peer-to-Peer QUIC                 March 2019


   supporting path probing and NAT binding discovery/creation.  This
   memo discusses how STUN and ICE can be used with QUIC to establish
   connections when the server (and optionally the client) are behind
   NATs.

2.  Background

   A NAT translates IP addresses and ports in IP and UDP packet headers,
   separating the addressing realm used behind the NAT from the external
   addressing realm.  The addressing realm behind the NAT will often use
   private IP addresses [RFC1918], and the external addressing realm is
   often the public Internet, but this is not mandated.  When a packet
   is sent from an endpoint behind a NAT to an external endpoint, state
   is created in the NAT allowing replies to be returned.  This is known
   as a NAT binding.  If the NAT receives a packet on an external port
   that is not subject to an active NAT binding, that packet is dropped.

   Two QUIC endpoints wish to communicate.  One or both of the endpoints
   might be behind a NAT.  If the QUIC client is behind a NAT, then the
   outgoing initial packet sent from client to server to establish the
   connection will create a NAT binding, allowing the response from the
   QUIC server to pass the NAT and reach the client.  The QUIC handshake
   proceeds as normal, and the connection is established.  However, if
   the QUIC server is behind a NAT, then the initial packet sent by the
   QUIC client will reach a port on the NAT for which there is no active
   binding and will be dropped.  The connection cannot be established in
   this case.

   ICE provides a framework for probing connectivity and creating NAT
   bindings to allow connections to be established.  It proceeds in four
   phases:

   o  Gathering candidates: The endpoints discover the set of possible
      IP addresses and ports ("transport addresses") on which they can
      be reached, known as the set of "candidates".  The candidate set
      includes transport addresses bound to directly attached network
      interfaces, translated transport addresses on the outside of a NAT
      ("server-reflexive addresses"), and transport addresses allocated
      via some form of relay ("relayed addresses".  When gathering the
      candidates, STUN is used to discover server reflexive addresses,
      and the relay protocol (e.g., TURN) is used to determine relayed
      addresses.

   o  Exchanging candidates: The endpoints exchanges their candidate
      sets.  Since the two endpoints cannot directly communicate, due to
      the presence of the NATs, this exchange has to be done indirectly
      via an external relay that is reachable by both endpoints.  In the
      multimedia conferencing systems for which ICE was defined, this



Perkins                Expires September 12, 2019               [Page 3]


Internet-Draft              Peer-to-Peer QUIC                 March 2019


      exchange takes place over the signalling channel (e.g., SIP or
      WebRTC).  This signalling is heavyweight and multimedia specific,
      and is not appropriate for QUIC, so an alternative mechanism will
      need to be defined.

   o  Connectivity checks: Once the candidate sets have been exchanged,
      the endpoint systematically probe all pairs of local and remote
      candidates, in priority order, to determine which candidate pairs
      can be used to communicate.  Each pair of candidates is probed, by
      sending a request and checking for a response, in both directions.
      This ensures that NAT bindings are established form each endpoint,
      so connectivity is found even if both endpoints are behind NATs.

   o  Connection establishment: Once the connectivity checks succeed for
      a suitable pair of candidates, the connection is established using
      those candidates in the normal manner.

   The ICE framework was designed to support multimedia conferencing,
   and defines the signalling to exchange candidates in a way that is
   specific to those systems.  The technique is generic however, and can
   be adapted to support NAT traversal and connection establishment for
   QUIC.

3.  QUIC Connection Establishment in the Presence of NATs

3.1.  Gathering Candidates

   Candidates are gathered as in Section 5 of [RFC8445].  The Initiating
   Agent is the QUIC client.  The Responding Agent is the QUIC server.
   RTP and RTCP are not used, and candidates are gathered for a single
   QUIC component instead.  A QUIC server that "knows" that it is not
   behind a NAT MAY use the lite mechanism described in Section 5.2 of
   [RFC8445].

   Editor's note: clarifications are likely needed since the candidate
   gathering in [RFC8445] is written assuming RTP and RTCP candidates,
   but the approach looks suitable for QUIC without significant change.

3.2.  Exchanging Candidates

   Section 5.3 of [RFC8445] describes the information to be communicated
   during the exchange of candidates.  This can be used unchanged, but
   the protocol used to exchange the candidates needs to be defined for
   the ICE usage for QUIC.

   The key design decision to make is what is the signalling protocol to
   be used with ICE when establishing QUIC connections?  The multimedia
   conferencing uses of ICE naturally use an SDP offer/answer exchange



Perkins                Expires September 12, 2019               [Page 4]


Internet-Draft              Peer-to-Peer QUIC                 March 2019


   [I-D.ietf-mmusic-ice-sip-sdp] to convey this information, but asking
   QUIC endpoints to implement SDP is not acceptable.  An alternative is
   needed.

   There are two approaches.  Firstly, the candidate exchange can be
   performed out-of-band from the point of view of QUIC, by some higher
   level signalling protocol.  This assumes that the application that
   uses QUIC will perform the necessary signalling.  The application
   will extract the set of local candidates from the QUIC stack and pass
   them to the peer, then later pass in the set of remote candidates
   received from the peer to the QUIC stack to trigger the systematic
   probing of candidate addresses.  This requires no QUIC-specific
   protocol standardisation, other than to specify when the exchange
   happens, since the signalling protocol is application specific and
   the interface between the QUIC stack and that signalling protocol is
   implementation specific.  Standards are likely needed to define the
   signalling for specific applications that use QUIC in this way.

   Alternatively, the candidate exchange can be embedded into QUIC to
   provide a general way for an indirect QUIC connection, made via a
   middlebox relay of some sort, to signal candidates to the endpoints,
   allowing them to bootstrap a direct peer-to-peer QUIC connection.
   This is a significant change to the QUIC security model, since it
   introduces a trusted middlebox that can relay candidate information,
   so exposing that communication is taking place.  However, such a
   trusted device is necessary to bootstrap any direct peer-to-peer
   connection in the presence of NATs, since it is not possible to
   establish a direct connection without the help of a relay.  Adding
   the candidate exchange mechanism to QUIC allows the provision of
   generic NAT traversal bootstrapping, allowing for reusable libraries
   and common mechanisms, but potentially risks missing out on
   application integration that could provide useful peer identity
   guarantees and end-to-end security mechanisms for the signalling.

   The right approach is likely to define a common abstract interface
   between QUIC and the candidate exchange signalling, specifying what
   information is to be exchanged and when.  Then, also define a common
   signalling protocol that MAY be used if there is no more suitable
   application specific mechanism.

3.3.  Connectivity Checks

   The assumption is that connectivity checks proceed using STUN, as is
   described in Section 7 of [RFC8445].  This has the benefit of working
   with existing STUN servers, reusing existing specifications, and of
   allowing code reuse.  It also continues to exercise the ability of
   middleboxes to pass STUN traffic, which is necessary for WebRTC NAT
   traversal and to support other peer to peer applications.  It further



Perkins                Expires September 12, 2019               [Page 5]


Internet-Draft              Peer-to-Peer QUIC                 March 2019


   ossifies STUN as the commonly used protocol for connectivity checks
   in the Internet.

   Alternatively, a QUIC-specific connectivity check protocol could be
   developed.  This would fulfil the same role STUN plays in [RFC8445],
   but could use a syntax that is closer to that of other QUIC packets,
   and could perhaps better integrate with the QUIC security mechanisms.
   It is the belief of the author that the benefits of such a new syntax
   for a STUN-like service do not outweigh the complexity of developing
   the new mechanism, and that it is beneficial to have a single, widely
   used, connectivity checking standard.  It is, however, possible to
   define a new connectivity check protocol, and such a protocol could
   avoid some of the complexity and backwards compatibility features
   included in STUN.

3.4.  Connection Establishment

   The connectivity checks determine that it is possible to send STUN
   packets in UDP on an particular 5-tuple.  Once the connectivity
   checks have concluded, and a candidate pair has been selected, the
   QUIC endpoints will attempt to establish a QUIC connection on the
   chosen path.

   To ensure the NAT ports are open, it is necessary that traffic flows
   in both directions.  It might be that it is sufficient to pick a peer
   to act as the server (e.g., highest numbered IP address becomes the
   server), or it might be necessary to perform a simultaneous open of
   the QUIC connection (in a similar manner to TCP simultaneous open).
   This will depend on the extent to which middleboxes attempt to detect
   and control QUIC connection establishment.  Simultaneous open seems
   most robust, but at the expense of complexity.

4.  Demultiplexing QUIC and STUN

   STUN and QUIC packets can be demultiplexed based on the value of the
   first octet, as described in [I-D.aboba-avtcore-quic-multiplexing].
   This provides a mechanism for middleboxes to distinguish peer to peer
   and regular QUIC flows on the wire.  This is beneficial in that it
   further establishes STUN as the connectivity check mechanism for the
   Internet, supporting its use in protocols such as WebRTC.  It is
   problematic, in that it provides a mechanism that can be used to
   detect and prevent peer to peer uses of QUIC.

5.  Security Considerations

   To be completed.  Key initial topics include: 1) changes to the QUIC
   security model, since any attempt to provide relayed connectivity
   checks for NAT traversal requires some degree of trust in the relay



Perkins                Expires September 12, 2019               [Page 6]


Internet-Draft              Peer-to-Peer QUIC                 March 2019


   server; 2) information leaks via STUN, if used for connectivity
   checks, even if just leaking that a peer-to-peer connection
   establishment is ongoing (the latter can likely be inferred from the
   range of IP addresses used, but there might be other information
   leaks); and 3) security properties of the signalling protocol used to
   communicate with the relay server.

6.  IANA Considerations

   No IANA actions needed.  Yet.

7.  Acknowledgements

   This work was supported by the UK Engineering and Physical Sciences
   Research Council under grant EP/R04144X/1.

8.  References

8.1.  Normative References

   [I-D.aboba-avtcore-quic-multiplexing]
              Aboba, B., Thatcher, P., and C. Perkins, "QUIC
              Multiplexing", draft-aboba-avtcore-quic-multiplexing-03
              (work in progress), January 2019.

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

   [RFC1918]  Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G.,
              and E. Lear, "Address Allocation for Private Internets",
              BCP 5, RFC 1918, DOI 10.17487/RFC1918, February 1996,
              <https://www.rfc-editor.org/info/rfc1918>.

   [RFC5389]  Rosenberg, J., Mahy, R., Matthews, P., and D. Wing,
              "Session Traversal Utilities for NAT (STUN)", RFC 5389,
              DOI 10.17487/RFC5389, October 2008, <https://www.rfc-
              editor.org/info/rfc5389>.

   [RFC8445]  Keranen, A., Holmberg, C., and J. Rosenberg, "Interactive
              Connectivity Establishment (ICE): A Protocol for Network
              Address Translator (NAT) Traversal", RFC 8445,
              DOI 10.17487/RFC8445, July 2018, <https://www.rfc-
              editor.org/info/rfc8445>.






Perkins                Expires September 12, 2019               [Page 7]


Internet-Draft              Peer-to-Peer QUIC                 March 2019


8.2.  Informative References

   [I-D.ietf-mmusic-ice-sip-sdp]
              Petit-Huguenin, M., Nandakumar, S., and A. Keranen,
              "Session Description Protocol (SDP) Offer/Answer
              procedures for Interactive Connectivity Establishment
              (ICE)", draft-ietf-mmusic-ice-sip-sdp-24 (work in
              progress), November 2018.

Author's Address

   Colin Perkins
   University of Glasgow
   School of Computing Science
   Glasgow  G12 8QQ
   United Kingdom

   Email: csp@csperkins.org

































Perkins                Expires September 12, 2019               [Page 8]