"Multiplexing Scheme Updates for Secure Real-time Transport Protocol (SRTP) Extension for Datagram Transport Layer Security (DTLS)" [
RFC 7983] defines a scheme for a Real-time Transport Protocol (RTP) [
RFC 3550] receiver to demultiplex DTLS [
RFC 9147], Session Traversal Utilities for NAT (STUN) [
RFC 8489], Secure Real-time Transport Protocol (SRTP) / Secure Real-time Transport Control Protocol (SRTCP) [
RFC 3711], ZRTP [
RFC 6189], and Traversal Using Relays around NAT (TURN) channel packets arriving on a single port. This document updates [
RFC 7983] and "Datagram Transport Layer Security (DTLS) Extension to Establish Keys for the Secure Real-time Transport Protocol (SRTP)" [
RFC 5764] to also allow QUIC [
RFC 9000] to be multiplexed on the same port.
The multiplexing scheme described in this document supports multiple use cases. In the WebRTC scenarios described in [
P2P-QUIC] and [
P2P-QUIC-TRIAL], SRTP transports audio and video while peer-to-peer QUIC is used for data exchange. For this use case, SRTP [
RFC 3711] is keyed using DTLS-SRTP [
RFC 5764]; therefore, SRTP/SRTCP [
RFC 3550], STUN, TURN, DTLS, and QUIC need to be multiplexed on the same port. Were SRTP to be keyed using QUIC-SRTP (not yet specified), SRTP/SRTCP, STUN, TURN, and QUIC would need to be multiplexed on the same port. Where QUIC is used for peer-to-peer transport of data as well as RTP/RTCP [
RTP-OVER-QUIC], STUN, TURN, and QUIC need to be multiplexed on the same port.
While the scheme described in this document is compatible with QUIC version 2 [
RFC 9369], it is not compatible with QUIC bit greasing [
RFC 9287]. As a result, endpoints that wish to use multiplexing on their socket
MUST NOT send the grease_quic_bit transport parameter.