Internet-Draft | SDP O/A for RTP over QUIC | September 2021 |
Dawkins | Expires 12 March 2022 | [Page] |
- Workgroup:
- AVTCORE/MMUSIC Working Groups
- Internet-Draft:
- draft-dawkins-sdp-rtp-quic-00
- Published:
- Intended Status:
- Standards Track
- Expires:
SDP Offer/Answer for RTP using QUIC as Transport
Abstract
This document describes these new SDP "proto" attribute values: "QUIC", "QUIC/RTP/SAVP", "QUIC/RTP/AVPF", and "QUIC/RTP/SAVPF", and describes how SDP Offer/Answer can be used to set up an RTP connection using QUIC as a transport protocol.¶
These proto values are necessary to allow the use of QUIC as an underlying transport protocol for applications that commonly use SDP as a session signaling protocol to set up RTP connections with UDP as its underlying transport protocol, such as SIP and WebRTC.¶
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 12 March 2022.¶
Copyright Notice
Copyright (c) 2021 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 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.¶
1. Introduction
This document describes these new SDP "proto" attribute values: "QUIC", "QUIC/RTP/SAVP", "QUIC/RTP/AVPF", and "QUIC/RTP/SAVPF", and describes how SDP Offer/Answer ([RFC3264]) can be used to set up an RTP ([RFC3550]) connection using QUIC ([RFC9000]) as a transport protocol.¶
These proto values are necessary to allow the use of QUIC as an underlying transport protocol for applications that commonly use SDP as a session signaling protocol to set up RTP connections with UDP as its underlying transport protocol, such as SIP ([RFC3261]) and WebRTC ([RFC8825]).¶
1.1. Notes for Readers
This document is intended for publiication as a standards-track RFC in the IETF stream, but has not been adopted by any IETF working group, and does not carry any special status within the IETF.¶
1.2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 ([RFC2119]) ([RFC8174]) when, and only when, they appear in all capitals, as shown here.¶
1.3. Contribution and Discussion Venues for this draft.
(Note to RFC Editor - if this document ever reaches you, please remove this section)¶
This document is under development in the Github repository at https://github.com/SpencerDawkins/sdp-rtp-quic.¶
Readers are invited to open issues and send pull requests with contributed text for this document, or to send them to the author via email.¶
1.4. Scope of this document
This document focuses on the IANA registration and description of the RTP sessions using SDP Offer/Answer, as would be the case for many current RTP applications in common use, such as SIP ([RFC3261]) and WebRTC ([RFC8825]).¶
This document is intended as complementary to [I-D.engelbart-rtp-over-quic], which largely focuses on RTP/RTCP encapsulation in QUIC datagrams, so that the SDP experts can focus on SDP offer/answer aspects, and the RTP experts can focus on RTP/RTCP encapsulation aspects.¶
1.5. Assumptions for this document
This document assumes that for RTP-over-QUIC, it is useful to register these AVP profiles using QUIC, in order to allow existing SIP and RTCWEB RTP applications to migrate more easily to QUIC:¶
- RTP/SAVP ("The Secure Real-time Transport Protocol (SRTP)"), as defined in [RFC3711].¶
- RTP/AVPF ("Extended RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/AVPF)"), as defined in [RFC4585].¶
- RTP/SAVPF ("Extended Secure RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/SAVPF)"), as defined in [RFC5124].¶
This document assumes that any implementation adding support for RTP-over-QUIC could reasonably add support for BUNDLE ([RFC8843]), "rtcp-mux" ([RFC5761]).¶
2. Open Questions (probably not for this draft, but could have implications on SDP Offer/Answer)
- RTP (and RTCP) headers and payloads will be entirely encrypted using QUIC ([RFC9000]), as secured by TLS 1.3 handshake ([RFC9001]), between QUIC endpoints. It's worth thinking more about how that maps onto expected deployment scenarios like centralized multiparty conferencing, and also whether WebRTC really requires SAVPF with double encryption (i.e. SRTP encryption, and then QUIC encryption). No opinions here yet, just noting the question for now.¶
- When QUIC establishes connections, it uses IP addresses but then expects applications to use connection IDs to refer to connections, even if the underlying IP addresses change because of NAT binding, and even if the QUIC implementation performs QUIC connection migration itself, so the underlying IP addresses change. RTP applications expect to use IP addresses, not QUIC connection IDs. Must we specify an RTP/RTCP adaptation layer, similar to [I-D.ietf-quic-http] for HTTP/3?¶
3. Identifiers and Attributes
As much as possible, these are reused from other specifications, with references to the original definitions.¶
3.1. Protocol Identifiers
3.1.1. The QUIC proto
The 'QUIC' protocol identifier is similar to the 'UDP' and 'TCP' protocol identifiers in that it only describes the transport protocol, and not the upper-layer protocol.¶
An 'm' line that specifies 'QUIC' MUST further qualify the application-layer protocol using an fmt identifier, such as "QUIC/RTP/AVPF". Media described using an 'm' line containing the 'QUIC' protocol identifier are carried using QUIC ([RFC9000]).¶
The following is an update to the ABNF for an 'm' line, as specified by [RFC8866], that defines a new value for the QUIC protocol.¶
media-field = %s"m" "=" media SP port \["/" integer\] SP proto 1*(SP fmt) CRLF m= line parameter parameter value(s) ------------------------------------------------------------------ <media>: (unchanged from {{RFC8866}}) <proto>: 'QUIC' <port>: UDP port number <fmt>: (unchanged from {{RFC8866}})¶
3.1.2. The QUIC/RTP/SAVP proto
The following is an update to the ABNF for an 'm' line, as specified by [RFC8866], that defines a new value for the QUIC/RTP/SAVP protocol.¶
media-field = %s"m" "=" media SP port \["/" integer\] SP proto 1*(SP fmt) CRLF m= line parameter parameter value(s) ------------------------------------------------------------------ <media>: (unchanged from {{RFC8866}}) <proto>: 'QUIC/RTP/SAVP' <port>: UDP port number <fmt>: (unchanged from {{RFC8866}})¶
3.1.3. The QUIC/RTP/AVPF proto
The following is an update to the ABNF for an 'm' line, as specified by [RFC8866], that defines a new value for the QUIC/RTP/AVPF protocol.¶
media-field = %s"m" "=" media SP port \["/" integer\] SP proto 1*(SP fmt) CRLF m= line parameter parameter value(s) ------------------------------------------------------------------ <media>: (unchanged from {{RFC8866}}) <proto>: 'QUIC/RTP/AVPF' <port>: UDP port number <fmt>: (unchanged from {{RFC8866}})¶
3.1.4. The QUIC/RTP/SAVPF proto
The following is an update to the ABNF for an 'm' line, as specified by [RFC8866], that defines a new value for the QUIC/RTP/SAVPF protocol.¶
media-field = %s"m" "=" media SP port \["/" integer\] SP proto 1*(SP fmt) CRLF m= line parameter parameter value(s) ------------------------------------------------------------------ <media>: (unchanged from {{RFC8866}}) <proto>: 'QUIC/RTP/SAVPF' <port>: UDP port number <fmt>: (unchanged from {{RFC8866}})¶
3.2. A QUIC/RTP/AVPF Offer
A complete example of an SDP offer using QUIC/RTP/AVPF might look like:¶
SDP line | Notes |
---|---|
v=0 | Same as [RFC8866] |
o=jdoe 3724394400 3724394405 IN IP4 198.51.100.1 | Same as [RFC8866] |
s=Call to John Smith | Same as [RFC8866] |
i=SDP Offer #1 | Same as [RFC8866] |
u=http://www.jdoe.example.com/home.html | Same as [RFC8866] |
e=Jane Doe jane@jdoe.example.com | Same as [RFC8866] |
p=+1 617 555-6011 | Same as [RFC8866] |
c=IN IP4 198.51.100.1 | Same as [RFC8866] |
t=0 0 | Same as [RFC8866] |
m=audio 49170 RTP/AVP 0 | Same as [RFC8866] |
m=audio 49180 RTP/AVP 0 | Same as [RFC8866] |
m=video 51372 QUIC/RTP/AVPF 99 | QUIC transport |
a=setup:passive | will wait for QUIC handshake (setup attribute from [RFC4145]) |
a=connection:new | don't want to reuse an existing QUIC connection (connection attribute from [RFC4145]) |
c=IN IP6 2001:db8::2 | Same as [RFC8866] |
a=rtpmap:99 h266/90000 | H.266 VVC codec [I-D.ietf-avtcore-rtp-vvc] |
This example is largely based on an example appearing in [RFC8866], Section 5, but is using QUIC/RTP/AVPF to support a newer codec.¶
Because QUIC uses connections for both streams and datagrams, we are reusing two session- and media-level SDP attributes from [SDP-attribute-name] that were defined in [RFC4145] for use with TCP: setup and connection.¶
This example SDP offer might be included in a SIP Invite.¶
4. IANA Considerations
This document registers these protocols in the proto registry ([SDP-parameters]).¶
- QUIC (Section 3.1.1)¶
- QUIC/RTP/SAVP (Section 3.1.2)¶
- QUIC/RTP/AVPF (Section 3.1.3)¶
- QUIC/RTP/SAVPF (Section 3.1.4)¶
4.1. Proto Registrations
IANA is requested to add these protocols to the Session Description Protocol (SDP) Parameters proto registry ([SDP-parameters]).¶
Type | SDP Name | Reference |
---|---|---|
proto | QUIC | RFCXXXX |
proto | QUIC/RTP/SAVP | RFCXXXX |
proto | QUIC/RTP/AVPF | RFCXXXX |
proto | QUIC/RTP/SAVPF | RFCXXXX |
Note to the RFC Editor¶
Please replace "RFCXXXX" with the assigned RFC number, when that is available, and remove this note.¶
5. Security Considerations
Security considerations for the QUIC protocol are described in the corresponding section in [RFC9000].¶
Security considerations for the TLS handshake used to secure QUIC are described in [RFC9001].¶
Security considerations for SDP are described in the corresponding section in [RFC8866].¶
Security considerations for SDP offer/answer are described in the cooresponding section in [RFC3264].¶
6. Acknowledgments
My appreciation to the authors of [RFC4145], which served as a model for the initial structure of this document.¶
Your name could appear here. Please comment and contribute, as per Section 1.3.¶
7. References
7.1. Normative References
- [RFC2119]
- Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://doi.org/10.17487/RFC2119>.
- [RFC3261]
- Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, DOI 10.17487/RFC3261, , <https://doi.org/10.17487/RFC3261>.
- [RFC3264]
- Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with Session Description Protocol (SDP)", RFC 3264, DOI 10.17487/RFC3264, , <https://doi.org/10.17487/RFC3264>.
- [RFC3550]
- Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, , <https://doi.org/10.17487/RFC3550>.
- [RFC3711]
- Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. Norrman, "The Secure Real-time Transport Protocol (SRTP)", RFC 3711, DOI 10.17487/RFC3711, , <https://doi.org/10.17487/RFC3711>.
- [RFC4585]
- Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey, "Extended RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, DOI 10.17487/RFC4585, , <https://doi.org/10.17487/RFC4585>.
- [RFC5124]
- Ott, J. and E. Carrara, "Extended Secure RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/SAVPF)", RFC 5124, DOI 10.17487/RFC5124, , <https://doi.org/10.17487/RFC5124>.
- [RFC5761]
- Perkins, C. and M. Westerlund, "Multiplexing RTP Data and Control Packets on a Single Port", RFC 5761, DOI 10.17487/RFC5761, , <https://doi.org/10.17487/RFC5761>.
- [RFC8174]
- Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://doi.org/10.17487/RFC8174>.
- [RFC8825]
- Alvestrand, H., "Overview: Real-Time Protocols for Browser-Based Applications", RFC 8825, DOI 10.17487/RFC8825, , <https://doi.org/10.17487/RFC8825>.
- [RFC8843]
- Holmberg, C., Alvestrand, H., and C. Jennings, "Negotiating Media Multiplexing Using the Session Description Protocol (SDP)", RFC 8843, DOI 10.17487/RFC8843, , <https://doi.org/10.17487/RFC8843>.
- [RFC8866]
- Begen, A., Kyzivat, P., Perkins, C., and M. Handley, "SDP: Session Description Protocol", RFC 8866, DOI 10.17487/RFC8866, , <https://doi.org/10.17487/RFC8866>.
- [RFC9000]
- Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", RFC 9000, DOI 10.17487/RFC9000, , <https://doi.org/10.17487/RFC9000>.
- [RFC9001]
- Thomson, M., Ed. and S. Turner, Ed., "Using TLS to Secure QUIC", RFC 9001, DOI 10.17487/RFC9001, , <https://doi.org/10.17487/RFC9001>.
- [SDP-attribute-name]
- "SDP Parameters - attribute-name", , <https://www.iana.org/assignments/sdp-parameters/sdp-parameters.xhtml#sdp-att-field>.
- [SDP-parameters]
- "SDP Parameters - Proto", , <https://www.iana.org/assignments/sdp-parameters/sdp-parameters.xhtml#sdp-parameters-2>.
7.2. Informative References
- [I-D.engelbart-rtp-over-quic]
- Ott, J. and M. Engelbart, "RTP over QUIC", Work in Progress, Internet-Draft, draft-engelbart-rtp-over-quic-00, , <https://datatracker.ietf.org/doc/html/draft-engelbart-rtp-over-quic-00>.
- [I-D.ietf-avtcore-rtp-vvc]
- Zhao, S., Wenger, S., Sanchez, Y., and Y. Wang, "RTP Payload Format for Versatile Video Coding (VVC)", Work in Progress, Internet-Draft, draft-ietf-avtcore-rtp-vvc-10, , <https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-vvc-10>.
- [I-D.ietf-quic-http]
- Bishop, M., "Hypertext Transfer Protocol Version 3 (HTTP/3)", Work in Progress, Internet-Draft, draft-ietf-quic-http-34, , <https://datatracker.ietf.org/doc/html/draft-ietf-quic-http-34>.
- [RFC4145]
- Yon, D. and G. Camarillo, "TCP-Based Media Transport in the Session Description Protocol (SDP)", RFC 4145, DOI 10.17487/RFC4145, , <https://doi.org/10.17487/RFC4145>.