Network Working Group M. Engelbart Internet-Draft J. Ott Intended status: Standards Track Technical University Munich Expires: 25 April 2024 23 October 2023 Multiplexing RTP and Data Channels over QUIC draft-engelbart-multiplex-roq-qdc-00 Abstract This document defines a multiplexing scheme for using RTP over QUIC and QUIC Data Channels in a single QUIC connection. Discussion Venues This note is to be removed before publishing as an RFC. Source for this draft and an issue tracker can be found at https://github.com/mengelbart/draft-engelbart-multiplex-roq-qdc. 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. 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 Engelbart & Ott Expires 25 April 2024 [Page 1] Internet-Draft Multiplexing RoQ and QDC October 2023 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 . . . . . . . . . . . . . . . . . . 2 2.1. Draft version identification . . . . . . . . . . . . . . 2 3. Multiplexing . . . . . . . . . . . . . . . . . . . . . . . . 3 3.1. Multiplexing using External Signaling . . . . . . . . . . 3 3.2. Multiplexing without Signaling . . . . . . . . . . . . . 4 4. Error Handling . . . . . . . . . . . . . . . . . . . . . . . 4 5. Security Considerations . . . . . . . . . . . . . . . . . . . 4 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 4 6.1. Registration of an ALPN Identification String . . . . . . 4 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 4 7.1. Normative References . . . . . . . . . . . . . . . . . . 4 7.2. Informative References . . . . . . . . . . . . . . . . . 5 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 5 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 5 1. Introduction One of the requirements in the development of RTP over QUIC (RoQ) ([I-D.draft-ietf-avtcore-rtp-over-quic]) was the ability to share a QUIC connection for RTP, RTCP, and other protocols. RoQ uses a flow identifier to multiplex different RTP streams, RTCP, and possibly other protocols. However, RoQ does not describe which protocol can be multiplexed with RoQ on the same QUIC connection. [I-D.draft-engelbart-quic-data-channels] describes a simple protocol similar to WebRTC data channels ([RFC8831]) called QUIC Data Channels (QDC). QDC uses QUIC instead of SCTP over DTLS and also uses an identifier similar to the one used by RoQ. This document describes how the two protocols can be multiplexed in one QUIC connection. 2. Connection Establishment QUIC requires the use of ALPN [RFC7301] during connection setup. Connections multiplexing RoQ and QDC use the "roq-qdc-mux" 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. Engelbart & Ott Expires 25 April 2024 [Page 2] Internet-Draft Multiplexing RoQ and QDC October 2023 Only implementations of the final, published RFC can identify themselves as "roq-qdc-mux". Until such an RFC exists, implementations MUST NOT identify themselves using this string. Implementations of draft versions of the protocol MUST add the string "-" and the corresponding draft number to the identifier. For example, draft-engelbart-multiplex-roq-qdc-04 is identified using the string "roq-qdc-mux-04". Non-compatible experiments based on these draft versions MUST append the string "-" and an experiment name to the identifier. 3. Multiplexing The two protocols for which this document describes a multiplexing scheme use a variable length integer as the first element on every QUIC stream and datagram. In RoQ, this integer is called a flow identifier, and it is used to multiplex different RTP streams and RTCP. In QDC, the integer is called a channel identifier and is used to multiplex multiple data channels. This document describes two options for multiplexing RoQ and QDC. The first option builds upon the external signaling that is required by RoQ (Section 3.1). The second one works without any external signaling but places some restrictions on the chosen flow and channel identifiers (Section 3.2). *TODO:* If we define two methods, we also need to say how to choose between them. This could involve more external signaling, e.g., SDP, or we could use two different ALPNs. It might be easier to just settle on one single way to do it. 3.1. Multiplexing using External Signaling RoQ requires using an external signaling protocol like the one described in [I-D.draft-dawkins-avtcore-sdp-rtp-quic]. The signaling includes the negotiation of flow identifiers for RoQ. In this scheme, applications MUST agree on all identifiers used by RoQ using the external signaling. Any identifier not assigned to a RoQ flow using external signaling MUST be treated as a QDC channel ID. Endpoints MUST NOT use an identifier for RoQ if it has not been signaled and agreed upon by both peers using the external signaling protocol. Engelbart & Ott Expires 25 April 2024 [Page 3] Internet-Draft Multiplexing RoQ and QDC October 2023 3.2. Multiplexing without Signaling When there is no external signaling for negotiation of identifiers available, endpoints can use the second least significant bit (0x02) of the flow or channel identifiers for multiplexing. RoQ flows have the bit set to 1, and QDC channels have the bit set to 0. The second least significant bit is used instead of the least significant bit because the least significant bit already has a special function in QDC. 4. Error Handling *TODO:* This looks tricky. Some error codes will be easy to demultiplex when they are associated with a flow/channel ID. But some might not be, e.g., in CONNECTION_CLOSE frames. 5. 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. 6. IANA Considerations 6.1. Registration of an ALPN Identification String This document creates a new registration for the identification of the protocol in the "TLS Application-Layer Protocol Negotiation (ALPN) Protocol IDs" registry [RFC7301]. The "roq-qdc-mux" string identifies RoQ: Protocol: Multiplexed RoQ and QDC Identification Sequence: TODO Specification: This document 7. References 7.1. Normative References [I-D.draft-engelbart-quic-data-channels] "*** BROKEN REFERENCE ***". Engelbart & Ott Expires 25 April 2024 [Page 4] Internet-Draft Multiplexing RoQ and QDC October 2023 [I-D.draft-ietf-avtcore-rtp-over-quic] Ott, J., Engelbart, M., and S. Dawkins, "RTP over QUIC (RoQ)", Work in Progress, Internet-Draft, draft-ietf- avtcore-rtp-over-quic-07, 23 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, . [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", RFC 9000, DOI 10.17487/RFC9000, May 2021, . [RFC9001] Thomson, M., Ed. and S. Turner, Ed., "Using TLS to Secure QUIC", RFC 9001, DOI 10.17487/RFC9001, May 2021, . [RFC9002] Iyengar, J., Ed. and I. Swett, Ed., "QUIC Loss Detection and Congestion Control", RFC 9002, DOI 10.17487/RFC9002, May 2021, . [RFC9221] Pauly, T., Kinnear, E., and D. Schinazi, "An Unreliable Datagram Extension to QUIC", RFC 9221, DOI 10.17487/RFC9221, March 2022, . 7.2. Informative References [I-D.draft-dawkins-avtcore-sdp-rtp-quic] Dawkins, S., "SDP Offer/Answer for RTP using QUIC as Transport", Work in Progress, Internet-Draft, draft- dawkins-avtcore-sdp-rtp-quic-00, 28 January 2022, . [RFC8831] Jesup, R., Loreto, S., and M. Tüxen, "WebRTC Data Channels", RFC 8831, DOI 10.17487/RFC8831, January 2021, . Acknowledgments Authors' Addresses Engelbart & Ott Expires 25 April 2024 [Page 5] Internet-Draft Multiplexing RoQ and QDC October 2023 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 6]