Controlling Multiple Streams for Telepresence (CLUE) Protocol Data Channel
RFC 8850
Christer Holmberg
Ericsson
2021-01
SIP
SDP
DTLS
SCTP
DATA
CHANNEL
DCEP
DATA_CHANNEL_OPEN
DATA_CHANNEL_ACK
PPID
TELEPRESENCE
RTCWEB
WEBRTC
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.
Status of This Memo
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 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.
Table of Contents
- 1. Introduction
- 2. Conventions
- 3. CLUE Data Channel
  - 3.1. General
  - 3.2. SCTP Considerations
    - 3.2.1. General
    - 3.2.2. SCTP Payload Protocol Identifier (PPID)
    - 3.2.3. Reliability
    - 3.2.4. Order
    - 3.2.5. Stream Reset
    - 3.2.6. SCTP Multihoming
    - 3.2.7. Closing the CLUE Data Channel
  - 3.3. SDP Considerations
    - 3.3.1. General
    - 3.3.2. SDP dcmap Attribute
    - 3.3.3. SDP dcsa Attribute
    - 3.3.4. Example
- 4. Security Considerations
- 5. IANA Considerations
  - 5.1. Subprotocol Identifier "clue"
- 6. References
  - 6.1. Normative References
  - 6.2. Informative References
- Acknowledgements
- Author's Address
Introduction
This document defines how to use the WebRTC data channel mechanism [RFC8831] to realize a data channel, referred to as a Controlling Multiple Streams for Telepresence (CLUE) data channel, for transporting CLUE protocol messages [RFC8847] between two CLUE entities.
This document also defines how to describe the SCTPoDTLS association [RFC8261] (also referred to as "SCTP over DTLS" in this document) used to realize the CLUE data channel using the Session Description Protocol (SDP) [RFC4566] and defines usage of the SDP-based "SCTP over DTLS" data channel negotiation mechanism [RFC8864]. ("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 [RFC3264] for negotiating usage of a CLUE data channel, are outside the scope of this document.
NOTE: The usage of the Data Channel Establishment Protocol (DCEP) [RFC8832] for establishing a CLUE data channel is outside the scope of this document.
Conventions
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.
SCTPoDTLS association
Refers to an SCTP association carried over a DTLS connection [RFC8261].
WebRTC data channel
Refers to a pair of SCTP streams over an SCTPoDTLS association that is used to transport non-media data between two entities, as defined in [RFC8831].
CLUE data channel
Refers to a WebRTC data channel realization [RFC8831], with a specific set of SCTP characteristics, with the purpose of transporting CLUE protocol messages [RFC8847] between two CLUE entities.
CLUE entity
Refers to a SIP User Agent (UA) [RFC3261] that supports the CLUE data channel and the CLUE protocol.
CLUE session
Refers to a SIP session [RFC3261] between two SIP UAs, where a CLUE data channel, associated with the SIP session, has been established between the SIP UAs.
SCTP stream
Defined in [RFC4960] as a unidirectional logical channel established from one to another associated SCTP endpoint, within which all user messages are delivered in sequence except for those submitted to the unordered delivery service.
SCTP stream identifier
Defined in [RFC4960] as an unsigned integer. Identifies an SCTP stream.
CLUE Data Channel
General
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 [RFC8831], 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.
SCTP Considerations
General
As described in [RFC8831], 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.
SCTP Payload Protocol Identifier (PPID)
A CLUE entity MUST use the PPID value 51 when sending a CLUE message on a CLUE data channel.
NOTE: As described in [RFC8831], the PPID value 51 indicates that the SCTP message contains data encoded in UTF-8 format. The PPID value 51 does not indicate which application protocol the SCTP message is associated with -- only the format in which the data is encoded.
Reliability
The usage of SCTP for the CLUE data channel ensures reliable transport of CLUE protocol messages [RFC8847].
[RFC8831] requires the support of the partial reliability extension defined in [RFC3758] and the limited retransmission policy defined in [RFC7496]. 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.
Order
A CLUE entity MUST use the ordered delivery SCTP service, as described in [RFC4960], for the CLUE data channel.
Stream Reset
A CLUE entity MUST support the stream reset extension defined in [RFC6525].
Per [RFC8831], the dynamic address reconfiguration extension parameter ('Supported Extensions Parameter') defined in [RFC5061] must be used to signal the support of the stream reset extension defined in [RFC6525]. Other features defined in [RFC5061] MUST NOT be used for CLUE data channels.
SCTP Multihoming
SCTP multihoming is not supported for SCTPoDTLS associations and therefore cannot be used for a CLUE data channel.
Closing the CLUE Data Channel
As described in [RFC8831], to close a data channel, an entity sends an SCTP reset message [RFC6525] 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.
SDP Considerations
General
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 [RFC8864] for establishing a CLUE data channel on the SCTPoDTLS association.
NOTE: Protocols other than SDP for negotiating usage of an SCTPoDTLS association for realizing a CLUE data channel are outside the scope of this specification.
[RFC8848] describes the SDP Offer/Answer procedures for negotiating a CLUE session, including the CLUE-controlled media streams and the CLUE data channel.
SDP Media Description Fields
[RFC8841] defines how to set the values of an "m=" line describing an SCTPoDTLS association. As defined in [RFC8841], for a CLUE data channel the values are set as follows:
SDP "proto" Field Values
media | port | proto | fmt
"application" | UDP port value | "UDP/DTLS/SCTP" | "webrtc-datachannel"
"application" | TCP port value | "TCP/DTLS/SCTP" | "webrtc-datachannel"
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 [RFC8445] is used and the ICE procedures determine that TCP transport is required).
SDP sctp-port Attribute
As defined in [RFC8841], 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 [RFC8841].
SDP dcmap Attribute
The values of the SDP dcmap attribute [RFC8864], associated with the "m=" line describing the SCTPoDTLS association used to realize the WebRTC data channel, are set as follows:
SDP dcmap Attribute Values
stream-id | subprotocol | label | ordered | max-retr | max-time
Value of the SCTP stream used to realize the CLUE data channel | "CLUE" | Application specific | "true" | N/A | N/A
NOTE: As CLUE entities are required to use ordered SCTP message delivery, with full reliability, according to the procedures in [RFC8864] the max-retr and max-time attribute parameters are not used when negotiating CLUE data channels.
SDP dcsa Attribute
The SDP dcsa attribute [RFC8864] is not used when establishing a CLUE data channel.
Example
The example in Figure 1 shows an SDP media description for a CLUE data channel. Complete SDP examples can be found in [RFC8848].
SDP Media Description for a CLUE Data Channel

         m=application 54111 UDP/DTLS/SCTP webrtc-datachannel
         a=sctp-port: 5000
         a=dcmap:2 subprotocol="CLUE";ordered=true
Security Considerations
This specification relies on the security properties of the WebRTC data channel described in [RFC8831], 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 [RFC3261] for session establishment prior to establishing the data channel.
IANA Considerations
Subprotocol Identifier "clue"
This document adds the subprotocol identifier "clue" to the "WebSocket Subprotocol Name Registry" as follows:
Registration of 'clue' Value
Subprotocol Identifier | clue
Subprotocol Common Name | CLUE
Subprotocol Definition | RFC 8850
Reference | RFC 8850
References
Normative References
[RFC2119]

Key words for use in RFCs to Indicate Requirement Levels
S. Bradner
March 1997
BCP 14
RFC 2119
DOI 10.17487/RFC2119
[RFC3261]

SIP: Session Initiation Protocol
J. Rosenberg
H. Schulzrinne
G. Camarillo
A. Johnston
J. Peterson
R. Sparks
M. Handley
E. Schooler
June 2002
RFC 3261
DOI 10.17487/RFC3261
[RFC3264]

An Offer/Answer Model with Session Description Protocol (SDP)
J. Rosenberg
H. Schulzrinne
June 2002
RFC 3264
DOI 10.17487/RFC3264
[RFC4566]

SDP: Session Description Protocol
M. Handley
V. Jacobson
C. Perkins
July 2006
RFC 4566
DOI 10.17487/RFC4566
[RFC4960]

Stream Control Transmission Protocol
R. Stewart, Ed.
September 2007
RFC 4960
DOI 10.17487/RFC4960
[RFC5061]

Stream Control Transmission Protocol (SCTP) Dynamic Address Reconfiguration
R. Stewart
Q. Xie
M. Tuexen
S. Maruyama
M. Kozuka
September 2007
RFC 5061
DOI 10.17487/RFC5061
[RFC6525]

Stream Control Transmission Protocol (SCTP) Stream Reconfiguration
R. Stewart
M. Tuexen
P. Lei
February 2012
RFC 6525
DOI 10.17487/RFC6525
[RFC7496]

Additional Policies for the Partially Reliable Stream Control Transmission Protocol Extension
M. Tuexen
R. Seggelmann
R. Stewart
S. Loreto
April 2015
RFC 7496
DOI 10.17487/RFC7496
[RFC8174]

Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words
B. Leiba
May 2017
BCP 14
RFC 8174
DOI 10.17487/RFC8174
[RFC8261]

Datagram Transport Layer Security (DTLS) Encapsulation of SCTP Packets
M. Tuexen
R. Stewart
R. Jesup
S. Loreto
November 2017
RFC 8261
DOI 10.17487/RFC8261
[RFC8831]

WebRTC Data Channels
Randell Jesup
Salvatore Loreto
Michael Tüxen
January 2021
RFC 8831
DOI 10.17487/RFC8831
[RFC8841]

Session Description Protocol (SDP) Offer/Answer Procedures for Stream Control Transmission Protocol (SCTP) over Datagram Transport Layer Security (DTLS) Transport
Christer Holmberg
Roman Shpount
Salvatore Loreto
Gonzalo Camarillo
January 2021
RFC 8841
DOI 10.17487/RFC8841
[RFC8864]

Negotiation Data Channels Using the Session Description Protocol (SDP)
Keith Drage
Unaffiliated
Raju Makaraju
Nokia
Richard Ejzak
Unaffiliated
Jerome Marcon
Unaffiliated
Roni Even, Ed.
Huawei
January 2021
RFC 8864
DOI 10.17487/RFC8864
Informative References
[RFC3758]

Stream Control Transmission Protocol (SCTP) Partial Reliability Extension
R. Stewart
M. Ramalho
Q. Xie
M. Tuexen
P. Conrad
May 2004
RFC 3758
DOI 10.17487/RFC3758
[RFC8445]

Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal
A. Keranen
C. Holmberg
J. Rosenberg
July 2018
RFC 8445
DOI 10.17487/RFC8445
[RFC8832]

WebRTC Data Channel Establishment Protocol
Randell Jesup
Salvatore Loreto
Michael Tüxen
January 2021
RFC 8832
DOI 10.17487/RFC8832
[RFC8847]

Protocol for Controlling Multiple Streams for Telepresence (CLUE)
Roberta Presta
Simon Pietro Romano
January 2021
RFC 8847
DOI 10.17487/RFC8847
[RFC8848]

Session Signaling for Controlling Multiple Streams for Telepresence (CLUE)
Robert Hanton
Cisco
Paul Kyzivat
Lennard Xiao
Huawei
Christian Groves
Huawei
January 2021
RFC 8848
DOI 10.17487/RFC8848
Acknowledgements
Thanks to Paul Kyzivat, Christian Groves, and Mark Duckworth for comments on this document.
Author's Address
Christer Holmberg
Ericsson
Hirsalantie 11
02420
Jorvas
Finland
christer.holmberg@ericsson.com