This document defines how to use the WebRTC data channel mechanism to realize a data channel, referred to as a Controlling Multiple Streams for Telepresence (CLUE) data channel, for transporting CLUE protocol messages between two CLUE entities.
This document is not an Internet Standards Track specification; it is published for examination, experimental implementation, and evaluation.
This document defines an Experimental Protocol for the Internet community. This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Not all documents approved by the IESG are candidates for any level of Internet Standard; see Section 2 of RFC 7841.
Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc8850.
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.
This document defines how to use the WebRTC data channel mechanism [RFC 8831] to realize a data channel, referred to as a Controlling Multiple Streams for Telepresence (CLUE) data channel, for transporting CLUE protocol messages [RFC 8847] between two CLUE entities.
This document also defines how to describe the SCTPoDTLS association [RFC 8261] (also referred to as "SCTP over DTLS" in this document) used to realize the CLUE data channel using the Session Description Protocol (SDP) [RFC 4566] and defines usage of the SDP-based "SCTP over DTLS" data channel negotiation mechanism [RFC 8864]. ("SCTP" stands for "Stream Control Transmission Protocol".) This includes SCTP considerations specific to a CLUE data channel, the SDP media description ("m=" line) values, and usage of SDP attributes specific to a CLUE data channel.
Details and procedures associated with the CLUE protocol, and the SDP Offer/Answer procedures [RFC 3264] for negotiating usage of a CLUE data channel, are outside the scope of this document.
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 [RFC 2119] [RFC 8174] when, and only when, they appear in all capitals, as shown here.
SCTPoDTLS association
Refers to an SCTP association carried over a DTLS connection [RFC 8261].
WebRTC data channel
Refers to a pair of SCTP streams over anSCTPoDTLS association that is used to transport non-mediadata between two entities, as defined in [RFC 8831].
CLUE data channel
Refers to a WebRTC data channel realization [RFC 8831], with a specific set ofSCTP characteristics, with the purpose of transporting CLUEprotocol messages [RFC 8847] between two CLUE entities.
CLUE entity
Refers to a SIP User Agent (UA) [RFC 3261] that supports the CLUE data channeland the CLUE protocol.
CLUE session
Refers to a SIP session [RFC 3261] between two SIP UAs, where aCLUE data channel, associated with the SIP session, has beenestablished between the SIP UAs.
SCTP stream
Defined in [RFC 4960] as a unidirectional logical channelestablished from one to another associated SCTP endpoint,within which all user messages are delivered in sequence exceptfor those submitted to the unordered delivery service.
SCTP stream identifier
Defined in [RFC 4960] as an unsigned integer. Identifies an SCTP stream.
This section describes the realization of a CLUE data channel, using the WebRTC data channel mechanism. This includes a set of SCTP characteristics specific to a CLUE data channel, the values of the "m=" line describing the SCTPoDTLS association associated with the WebRTC data channel, and the usage of the SDP-based "SCTP over DTLS" data channel negotiation mechanism for creating the CLUE data channel.
As described in [RFC 8831], the SCTP streams realizing a WebRTC data channel must be associated with the same SCTP association. In addition, both SCTP streams realizing the WebRTC data channel must use the same SCTP stream identifier value. These rules also apply to a CLUE data channel.
Within a given CLUE session, a CLUE entity MUST use a single CLUE data channel for transport of all CLUE messages towards its peer.
As described in [RFC 8831], different SCTP options (e.g., regarding ordered delivery) can be used for a data channel. This section describes the SCTP options used for a CLUE data channel. Section 3.3 describes how SCTP options are signaled using SDP.
The usage of SCTP for the CLUE data channel ensures reliable transport of CLUE protocol messages [RFC 8847].
[RFC 8831] requires the support of the partial reliability extension defined in [RFC 3758] and the limited retransmission policy defined in [RFC 7496]. A CLUE entity MUST NOT use these extensions, as messages are required to always be sent reliably. A CLUE entity MUST terminate the session if it detects that the peer entity uses any of the extensions.
A CLUE entity MUST support the stream reset extension defined in [RFC 6525].
Per [RFC 8831], the dynamic address reconfiguration extension parameter ('Supported Extensions Parameter') defined in [RFC 5061] must be used to signal the support of the stream reset extension defined in [RFC 6525]. Other features defined in [RFC 5061] MUST NOT be used for CLUE data channels.
As described in [RFC 8831], to close a data channel, an entity sends an SCTP reset message [RFC 6525] on its outgoing SCTP stream associated with the data channel. When the remote peer receives the reset message, it also sends (unless already sent) a reset message on its outgoing SCTP stream associated with the data channel. The SCTPoDTLS association, and other data channels established on the same association, are not affected by the SCTP reset messages.
This section defines how to (1) construct the SDP media description ("m=" line) for describing the SCTPoDTLS association used to realize a CLUE data channel and (2) use the SDP-based "SCTP over DTLS" data channel negotiation mechanism [RFC 8864] for establishing a CLUE data channel on the SCTPoDTLS association.
[RFC 8848] describes the SDP Offer/Answer procedures for negotiating a CLUE session, including the CLUE-controlled media streams and the CLUE data channel.
[RFC 8841] defines how to set the values of an "m=" line describing an SCTPoDTLS association. As defined in [RFC 8841], for a CLUE data channel the values are set as follows:
media
port
proto
fmt
"application"
UDP port value
"UDP/DTLS/SCTP"
"webrtc-datachannel"
"application"
TCP port value
"TCP/DTLS/SCTP"
"webrtc-datachannel"
Table 1: SDP "proto" Field Values
CLUE entities SHOULD NOT transport the SCTPoDTLS association used to realize the CLUE data channel over TCP (using the "TCP/DTLS/SCTP" proto value), unless it is known that UDP/DTLS/SCTP will not work (for instance, when the Interactive Connectivity Establishment (ICE) mechanism [RFC 8445] is used and the ICE procedures determine that TCP transport is required).
As defined in [RFC 8841], the SDP sctp-port attribute value is set to the SCTP port of the SCTPoDTLS association. A CLUE entity can choose any valid SCTP port value [RFC 8841].
The values of the SDP dcmap attribute [RFC 8864], associated with the "m=" line describing the SCTPoDTLS association used to realize the WebRTC data channel, are set as follows:
stream-id
subprotocol
label
ordered
max-retr
max-time
Value of the SCTP stream used to realize the CLUE data channel
This specification relies on the security properties of the WebRTC data channel described in [RFC 8831], including reliance on DTLS. Since CLUE sessions are established using SIP/SDP, protecting the data channel against message modification and recovery requires the use of SIP authentication and authorization mechanisms described in [RFC 3261] for session establishment prior to establishing the data channel.
S. Bradner, "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.
J. Rosenberg, H. Schulzrinne, G. Camarillo, A. Johnston, J. Peterson, R. Sparks, M. Handley, and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, DOI 10.17487/RFC3261, June 2002, <https://www.rfc-editor.org/info/rfc3261>.
J. Rosenberg, and H. Schulzrinne, "An Offer/Answer Model with Session Description Protocol (SDP)", RFC 3264, DOI 10.17487/RFC3264, June 2002, <https://www.rfc-editor.org/info/rfc3264>.
M. Handley, V. Jacobson, and C. Perkins, "SDP: Session Description Protocol", RFC 4566, DOI 10.17487/RFC4566, July 2006, <https://www.rfc-editor.org/info/rfc4566>.
R. Stewart, Q. Xie, M. Tuexen, S. Maruyama, and M. Kozuka, "Stream Control Transmission Protocol (SCTP) Dynamic Address Reconfiguration", RFC 5061, DOI 10.17487/RFC5061, September 2007, <https://www.rfc-editor.org/info/rfc5061>.
R. Stewart, M. Tuexen, and P. Lei, "Stream Control Transmission Protocol (SCTP) Stream Reconfiguration", RFC 6525, DOI 10.17487/RFC6525, February 2012, <https://www.rfc-editor.org/info/rfc6525>.
M. Tuexen, R. Seggelmann, R. Stewart, and S. Loreto, "Additional Policies for the Partially Reliable Stream Control Transmission Protocol Extension", RFC 7496, DOI 10.17487/RFC7496, April 2015, <https://www.rfc-editor.org/info/rfc7496>.
M. Tuexen, R. Stewart, R. Jesup, and S. Loreto, "Datagram Transport Layer Security (DTLS) Encapsulation of SCTP Packets", RFC 8261, DOI 10.17487/RFC8261, November 2017, <https://www.rfc-editor.org/info/rfc8261>.
C Holmberg, R. Shpount, S Loreto, and G Camarillo, "Session Description Protocol (SDP) Offer/Answer Procedures for Stream Control Transmission Protocol (SCTP) over Datagram Transport Layer Security (DTLS) Transport", RFC 8841, DOI 10.17487/RFC8841, January 2021, <https://www.rfc-editor.org/info/rfc8841>.
Huawei, K. Drage, M. Makaraju, R. Ejzak, J. Marcon, and R. Even, "Negotiation Data Channels Using the Session Description Protocol (SDP)", RFC 8864, DOI 10.17487/RFC8864, January 2021, <https://www.rfc-editor.org/info/rfc8864>.
R. Stewart, M. Ramalho, Q. Xie, M. Tuexen, and P. Conrad, "Stream Control Transmission Protocol (SCTP) Partial Reliability Extension", RFC 3758, DOI 10.17487/RFC3758, May 2004, <https://www.rfc-editor.org/info/rfc3758>.
A. Keranen, C. Holmberg, 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>.
R. Jesup, S. Loreto, and M Tüxen, "WebRTC Data Channel Establishment Protocol", RFC 8832, DOI 10.17487/RFC8832, January 2021, <https://www.rfc-editor.org/info/rfc8832>.
R Presta, and S P. Romano, "Protocol for Controlling Multiple Streams for Telepresence (CLUE)", RFC 8847, DOI 10.17487/RFC8847, January 2021, <https://www.rfc-editor.org/info/rfc8847>.
Huawei, R. Hanton, P. Kyzivat, L. Xiao, and C. Groves, "Session Signaling for Controlling Multiple Streams for Telepresence (CLUE)", RFC 8848, DOI 10.17487/RFC8848, January 2021, <https://www.rfc-editor.org/info/rfc8848>.