Internet DRAFT - draft-engelbart-quic-data-channels

draft-engelbart-quic-data-channels







Network Working Group                                       M. Engelbart
Internet-Draft                                                    J. Ott
Intended status: Standards Track             Technical University Munich
Expires: 25 April 2024                                   23 October 2023


                           QUIC Data Channels
                 draft-engelbart-quic-data-channels-00

Abstract

   WebRTC data channels provide data communication between peers with
   varying reliability and ordering properties.  WebRTC data channels
   traditionally use SCTP layered on top of DTLS over UDP.  This
   document describes how WebRTC data channels can be layered over QUIC.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the QUIC Working Group
   mailing list (quic@ietf.org), which is archived at
   https://mailarchive.ietf.org/arch/browse/quic/.

   Source for this draft and an issue tracker can be found at
   https://github.com/mengelbart/draft-engelbart-quic-data-channels.

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 https://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 25 April 2024.

Copyright Notice

   Copyright (c) 2023 IETF Trust and the persons identified as the
   document authors.  All rights reserved.



Engelbart & Ott           Expires 25 April 2024                 [Page 1]

Internet-Draft             QUIC Data Channels               October 2023


   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents (https://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 Revised BSD License text as
   described in Section 4.e of the Trust Legal Provisions and are
   provided without warranty as described in the Revised BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Connection Establishment  . . . . . . . . . . . . . . . . . .   3
     2.1.  Draft version identification  . . . . . . . . . . . . . .   3
   3.  Messages and QUIC Streams . . . . . . . . . . . . . . . . . .   4
   4.  The Data Channel Establishment Protocol . . . . . . . . . . .   4
   5.  Message Ordering  . . . . . . . . . . . . . . . . . . . . . .   4
   6.  Message Priority  . . . . . . . . . . . . . . . . . . . . . .   5
   7.  Partial Reliability . . . . . . . . . . . . . . . . . . . . .   5
     7.1.  Limited Number of Retransmissions . . . . . . . . . . . .   5
     7.2.  Limited Duration of Retransmissions . . . . . . . . . . .   5
   8.  Message Types and Formats . . . . . . . . . . . . . . . . . .   5
     8.1.  Data Channel Open Message . . . . . . . . . . . . . . . .   6
     8.2.  Data Channel Close Message  . . . . . . . . . . . . . . .   7
     8.3.  Data Message  . . . . . . . . . . . . . . . . . . . . . .   7
   9.  Error Handling  . . . . . . . . . . . . . . . . . . . . . . .   8
   10. Security Considerations . . . . . . . . . . . . . . . . . . .   8
   11. IANA Considerations . . . . . . . . . . . . . . . . . . . . .   8
     11.1.  ALPN Registration  . . . . . . . . . . . . . . . . . . .   8
     11.2.  Registration of a QUIC Data Channels Identification
            String . . . . . . . . . . . . . . . . . . . . . . . . .   8
     11.3.  Error Codes Registry . . . . . . . . . . . . . . . . . .   8
   12. Normative References  . . . . . . . . . . . . . . . . . . . .   8
   Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . .   9
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .   9

1.  Introduction

   The WebRTC framework is a collection of protocols and APIs to enable
   endpoints to communicate using audio and video streams and arbitrary
   data.  In WebRTC, real-time media and data communication happen in
   parallel over two independent connections and transport protocols.
   While media communication in WebRTC uses SRTP over UDP, WebRTC data
   channels allow two endpoints to exchange data over a secure,
   multiplexed, bidirectional channel using SCTP layered on top of DTLS
   over UDP.  Data channels are streams of framed messages, which can be
   ordered or unordered and support different reliability models.  While
   the connection establishment shares some aspects between media and



Engelbart & Ott           Expires 25 April 2024                 [Page 2]

Internet-Draft             QUIC Data Channels               October 2023


   data communication, others, such as congestion control, transmission
   prioritization, and encryption, happen independently in the stacks of
   the involved protocols (SCTP, DTLS, SRTP).

   QUIC is a secure, multiplexed transport providing reliable
   communication over uni- and bidirectional streams and unreliable
   datagrams.  With the development of RTP over QUIC (RoQ), there is
   already an alternative for media communication using QUIC instead of
   SRTP for RTP media communication.  One of the main requirements
   during the development of RoQ was the ability to share a single QUIC
   connection for media communication and arbitrary data exchange.
   Using QUIC as a common protocol for media and data would allow for
   easy sharing of encryption context, congestion control, and
   prioritization among all transmissions between two endpoints.  While
   RoQ includes capabilities for multiplexing RTP, RTCP, and other
   protocols in one QUIC connection, no such protocol is currently
   defined.

   This document aims to fill this gap by specifying a data
   communication protocol similar to WebRTC data channels that can run
   over a QUIC connection, multiplexed with RoQ.  The protocol defined
   in this document is referred to as QUIC Data Channels (QDC).

   WebRTC data channels have several use cases and requirements defined
   in [RFC8831].  The data channel protocol defined in this protocol
   tries to fulfill the same requirements.

   The remainder of this document is organized as follows:

2.  Connection Establishment

   QUIC requires the use of ALPN [RFC7301] during connection setup.
   Data channels over QUIC use the "qdc" token during the TLS handshake.

2.1.  Draft version identification

      *RFC Editor's note:* Please remove this section prior to
      publication of a final version of this document.

   Data channels over QUIC use "qdc" as the ALPN identifier.

   Only implementations of the final, published RFC can identify
   themselves as "qdc".  Until such an RFC exists, implementations MUST
   NOT identify themselves using this string.







Engelbart & Ott           Expires 25 April 2024                 [Page 3]

Internet-Draft             QUIC Data Channels               October 2023


   Implementations of draft versions of the protocol MUST add the string
   "-" and the corresponding draft number to the identifier.  For
   example, draft-engelbart-quic-data-channels-04 is identified using
   the string "qdc-04".

   Non-compatible experiments based on these draft versions MUST append
   the string "-" and an experiment name to the identifier.

3.  Messages and QUIC Streams

   QDC uses a message abstraction on top of QUIC streams.  To provide
   framed messages to the application, QDC uses a single QUIC stream for
   each message.  An endpoint MUST close a QUIC stream after sending a
   message on the stream.  Message framing is implicitly provided by
   QUIC streams.  Messages sizes are only limited by the maximum size of
   a QUIC stream.

4.  The Data Channel Establishment Protocol

   The data channel establishement protocol (DCEP) is defined in
   [RFC8832].  DCEP provides functionality to setup data channels
   between two peers without external signaling.  QDC uses a similar
   protocol to establish new data channels.  To open a new data channel,
   an endpoint sends a Data Channel Open Message.

   The Open Message includes a channel identifier that will be used to
   uniquely identify the data channel.  To avoid collisions where both
   sides try to open a data channel with the same stream identifiers,
   each side MUST use streams with either even or odd stream identifiers
   when sending a Data Channel Open Message.  When using QUIC, the
   method used to determine which side uses odd or even is based on the
   underlying DTLS connection role: the side acting as the QUIC client
   MUST use streams with even stream identifiers; the side acting as the
   QUIC server MUST use streams with odd stream identifiers.

5.  Message Ordering

   Data channels are streams of ordered or unordered messages.  The type
   of the data channel determines if the messages are ordered or
   unordered.  Data Messages on ordered data channels have an additional
   Sequence Number, that a receiver can use to reorder messages that
   arrived out of order.  Each message of an ordered data channel MUST
   carry the sequence number.  Messages on unordered data channels MUST
   NOT carry sequence numbers.  Endpoints MUST treat messages without
   sequence number on an ordered channel as an error of type
   PROTOCOL_VIOLATION.  Endpoints SHOULD treat messages with a sequence
   number on an unordered data channel as an error of type
   PROTOCOL_VIOLATION.



Engelbart & Ott           Expires 25 April 2024                 [Page 4]

Internet-Draft             QUIC Data Channels               October 2023


6.  Message Priority

      *TODO*

7.  Partial Reliability

   Data channels support two partial reliability modes.  Reliability can
   either be limited in the number of retransmissions or it can be
   expressed as a deadline after which no further retransmissions will
   occur.  This section explains how these modes are supported by
   leveraging the capabilities of the underlying QUIC connection.

7.1.  Limited Number of Retransmissions

      *TODO:* This mode is hard to implement on top of QUIC because it
      requires an API to let the QUIC stack know after how many
      retransmissions it should stop reset the stream.  We suggest
      keeping this mode out of the protocol.  Application designers can
      still implement similar features using the QUIC Datagram
      extension.

7.2.  Limited Duration of Retransmissions

   The sender can limit the lifetime of a message on a data channel.
   The lifetime is defined per data channel and is the same for every
   message sent on the channel.  The lifetime of the messages on a data
   channel is communicated in the _Reliability Parameter_ of the Data
   Channel Open Messages (see Section 8.1).

   The lifetime of a message starts when the sender opens a QUIC stream
   to send the message on.  The lifetime ends after the amount of time
   that was announced in the _Reliability Parameter_. When the lifetime
   of a message expires, the sender of the message SHOULD close the
   stream using QUIC's RESET_STREAM frame.

      *TODO:* Instead of RESET_STREAM, one could use CLOSE_STREAM with
      an offset after the message header, so that the receiver knows
      which channel the message belonged to, what type it head and
      optionally can read sequence number and length.

8.  Message Types and Formats

   This section describes the message formats used for QUIC data
   channels.







Engelbart & Ott           Expires 25 April 2024                 [Page 5]

Internet-Draft             QUIC Data Channels               October 2023


8.1.  Data Channel Open Message

   The format of Data Channel Open Messages is depicted in Figure 1.

      *TODO:* Explain how to choose channel IDs (similar to Section 4 of
      [RFC8832].

   Data Channel Open Message {
     Channel ID (i),
     Message Type (i) = 0x00,
     Channel Type (8),
     Priority (i),
     Reliability Parameter (i),
     Label Length (i),
     Label (..),
     Protocol Length (i),
     Protocol (..),
   }

                    Figure 1: Data Channel Open Message

   Channel ID:  A unique identifier of the data channel.

   Message Type:  The Data Channel Open Message type is always set to
      0x00.

   Channel Type:  This field specifies the type of data channel to be
      opened.  The values are managed by IANA and follow the registry
      defined in Section 8.2.2 of [RFC8832].

   Priority:  The message priority as described in Section 6.

   Reliability Parameter: : For reliable data channels, this field MUST
   be set to 0 on the sending side and MUST be ignored on the receiving
   side.  If a partially reliable data channel with a limited lifetime
   is used, this field specifies the maximum lifetime in milliseconds
   (see also Section 5.1 of [RFC8832]).

   Label Length:  A variable-length integer specifying the length of the
      label field in bytes.

   Label:  The name of the data channel as a UTF-8-encoded string, as
      specified in [RFC3629].  This may be an empty string.

   Protocol Length:  A variable-length integer specifying the length of
      the protocol field in bytes.

   Protocol:  If this is an empty string, the protocol is unspecified.



Engelbart & Ott           Expires 25 April 2024                 [Page 6]

Internet-Draft             QUIC Data Channels               October 2023


      If it is a non-empty string, it specifies a protocol registered in
      the "WebSocket Subprotocol Name Registry" created in [RFC6455].
      This string is UTF-8 encoded, as specified in [RFC3629].

8.2.  Data Channel Close Message

   Data Channel Close Message {
     Channel ID (i),
     Message Type(i) = 0x01,
   }

                    Figure 2: Data Channel Close Message

   Channel ID:  The unique identifier of the data channel.

   Message Type:  The Data Channel Close Message type is always set to
      0x01.

8.3.  Data Message

   The Data Message has two optional fields.  The message type field
   takes the form 0b000001XX.  The two low-order bits determine the
   fields that are present in the message:

   *  The SEQ bit (0x02) indicates that a sequence number is present.
      If this bit is set to 0, the Sequence Number field is absent.  If
      this bit is set to 1, the Sequence Number field is present.

   *  The LEN bit (0x01) indicates that a Length field is present.  If
      this bit is set to 0, the Length field is absent and the Message
      Data field extends to the end of the packet.  If this bit is set
      to 1, the Length field is present.

   Data Message {
     Channel ID (i),
     Message Type (i) = 0x02..0x05
     [Sequence Number (i)],
     [Length (i)],
     Message Data (..),
   }

                                  Figure 3

   Channel ID:  The unique identifier of the data channel.

   Message Type:  The Data Message type is always set to 0x02.

   Sequence Number:  A variable-length integer specifying the sequence



Engelbart & Ott           Expires 25 April 2024                 [Page 7]

Internet-Draft             QUIC Data Channels               October 2023


      number in the channel for the message.  This field is present when
      the SEQ bit is set to 1.

   Length:  A variable-length integer specifying the length of the
      Message Data field.  This field is present when the LEN bit is set
      to 1.  When the LEN bit is set to 0, the Message Data field
      consumes all the remaining bytes in the QUIC stream.

   Message Data:  The bytes of the message to be delivered.

9.  Error Handling

10.  Security Considerations

   The security considerations for the QUIC protocol and datagram
   extension described in Section 21 of [RFC9000], Section 9 of
   [RFC9001], Section 8 of [RFC9002] and Section 6 of [RFC9221] apply.

11.  IANA Considerations

11.1.  ALPN Registration

11.2.  Registration of a QUIC Data Channels Identification String

   This document creates a new registration for the identification of
   QUIC Data Channels in the "TLS Application-Layer Protocol Negotiation
   (ALPN) Protocol IDs" registry [RFC7301].

   The "qdc" string identifies QUIC Data Channels:

   Protocol:  QUIC Data Channels

   Identification Sequence:  TODO

   Specification:  This document

11.3.  Error Codes Registry

12.  Normative References

   [RFC3629]  Yergeau, F., "UTF-8, a transformation format of ISO
              10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November
              2003, <https://www.rfc-editor.org/rfc/rfc3629>.

   [RFC6455]  Fette, I. and A. Melnikov, "The WebSocket Protocol",
              RFC 6455, DOI 10.17487/RFC6455, December 2011,
              <https://www.rfc-editor.org/rfc/rfc6455>.




Engelbart & Ott           Expires 25 April 2024                 [Page 8]

Internet-Draft             QUIC Data Channels               October 2023


   [RFC7301]  Friedl, S., Popov, A., Langley, A., and E. Stephan,
              "Transport Layer Security (TLS) Application-Layer Protocol
              Negotiation Extension", RFC 7301, DOI 10.17487/RFC7301,
              July 2014, <https://www.rfc-editor.org/rfc/rfc7301>.

   [RFC8831]  Jesup, R., Loreto, S., and M. Tüxen, "WebRTC Data
              Channels", RFC 8831, DOI 10.17487/RFC8831, January 2021,
              <https://www.rfc-editor.org/rfc/rfc8831>.

   [RFC8832]  Jesup, R., Loreto, S., and M. Tüxen, "WebRTC Data Channel
              Establishment Protocol", RFC 8832, DOI 10.17487/RFC8832,
              January 2021, <https://www.rfc-editor.org/rfc/rfc8832>.

   [RFC9000]  Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
              Multiplexed and Secure Transport", RFC 9000,
              DOI 10.17487/RFC9000, May 2021,
              <https://www.rfc-editor.org/rfc/rfc9000>.

   [RFC9001]  Thomson, M., Ed. and S. Turner, Ed., "Using TLS to Secure
              QUIC", RFC 9001, DOI 10.17487/RFC9001, May 2021,
              <https://www.rfc-editor.org/rfc/rfc9001>.

   [RFC9002]  Iyengar, J., Ed. and I. Swett, Ed., "QUIC Loss Detection
              and Congestion Control", RFC 9002, DOI 10.17487/RFC9002,
              May 2021, <https://www.rfc-editor.org/rfc/rfc9002>.

   [RFC9221]  Pauly, T., Kinnear, E., and D. Schinazi, "An Unreliable
              Datagram Extension to QUIC", RFC 9221,
              DOI 10.17487/RFC9221, March 2022,
              <https://www.rfc-editor.org/rfc/rfc9221>.

Acknowledgments

Authors' Addresses

   Mathis Engelbart
   Technical University Munich
   Email: mathis.engelbart@gmail.com


   Jörg Ott
   Technical University Munich
   Email: ott@in.tum.de








Engelbart & Ott           Expires 25 April 2024                 [Page 9]