|
|
|
|
|
IETF RFC 8850
Last modified on Monday, January 18th, 2021
Permanent link to RFC 8850
Search GitHub Wiki for RFC 8850
Show other RFCs mentioning RFC 8850
Internet Engineering Task Force (IETF) C. Holmberg
Request for Comments: 8850 Ericsson
Category: Experimental January 2021
ISSN: 2070-1721
Controlling Multiple Streams for Telepresence (CLUE) Protocol
Data Channel
Abstract
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/RFC 8850.
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
1. Introduction
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.
| NOTE: The usage of the Data Channel Establishment Protocol
| (DCEP) [RFC 8832] for establishing a CLUE data channel is
| outside the scope of this document.
2. 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 [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 an SCTPoDTLS association
that is used to transport non-media data between two entities, as
defined in [RFC 8831].
CLUE data channel
Refers to a WebRTC data channel realization [RFC 8831], with a
specific set of SCTP characteristics, with the purpose of
transporting CLUE protocol messages [RFC 8847] between two CLUE
entities.
CLUE entity
Refers to a SIP User Agent (UA) [RFC 3261] that supports the CLUE
data channel and the CLUE protocol.
CLUE session
Refers to a SIP session [RFC 3261] 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 [RFC 4960] 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 [RFC 4960] as an unsigned integer. Identifies an SCTP
stream.
3. CLUE Data Channel
3.1. 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 [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.
3.2. SCTP Considerations
3.2.1. General
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.
3.2.2. 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 [RFC 8831], 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.
3.2.3. Reliability
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.
3.2.4. Order
A CLUE entity MUST use the ordered delivery SCTP service, as
described in [RFC 4960], for the CLUE data channel.
3.2.5. Stream Reset
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.
3.2.6. SCTP Multihoming
SCTP multihoming is not supported for SCTPoDTLS associations and
therefore cannot be used for a CLUE data channel.
3.2.7. Closing the CLUE Data Channel
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.
3.3. SDP Considerations
3.3.1. 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 [RFC 8864] 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.
[RFC 8848] describes the SDP Offer/Answer procedures for negotiating a
CLUE session, including the CLUE-controlled media streams and the
CLUE data channel.
3.3.1.1. SDP Media Description Fields
[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 | "UDP/DTLS/ | "webrtc-datachannel" |
| | value | SCTP" | |
+---------------+----------+------------+----------------------+
| "application" | TCP port | "TCP/DTLS/ | "webrtc-datachannel" |
| | value | SCTP" | |
+---------------+----------+------------+----------------------+
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).
3.3.1.2. SDP sctp-port Attribute
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].
3.3.2. SDP dcmap Attribute
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 | "CLUE" | Application | "true"| N/A | N/A |
| the SCTP | | specific | | | |
|stream used| | | | | |
| to realize| | | | | |
| the CLUE | | | | | |
| data | | | | | |
| channel | | | | | |
+-----------+-------------+-------------+-------+--------+----------+
Table 2: SDP dcmap Attribute Values
| NOTE: As CLUE entities are required to use ordered SCTP message
| delivery, with full reliability, according to the procedures in
| [RFC 8864] the max-retr and max-time attribute parameters are
| not used when negotiating CLUE data channels.
3.3.3. SDP dcsa Attribute
The SDP dcsa attribute [RFC 8864] is not used when establishing a CLUE
data channel.
3.3.4. Example
The example in Figure 1 shows an SDP media description for a CLUE
data channel. Complete SDP examples can be found in [RFC 8848].
m=application 54111 UDP/DTLS/SCTP webrtc-datachannel
a=sctp-port: 5000
a=dcmap:2 subprotocol="CLUE";ordered=true
Figure 1: SDP Media Description for a CLUE Data Channel
4. Security Considerations
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.
5. IANA Considerations
5.1. Subprotocol Identifier "clue"
This document adds the subprotocol identifier "clue" to the
"WebSocket Subprotocol Name Registry" as follows:
+-------------------------+----------+
| Subprotocol Identifier | clue |
+-------------------------+----------+
| Subprotocol Common Name | CLUE |
+-------------------------+----------+
| Subprotocol Definition | RFC 8850 |
+-------------------------+----------+
| Reference | RFC 8850 |
+-------------------------+----------+
Table 3: Registration of 'clue' Value
6. References
6.1. Normative References
[RFC 2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC 2119, March 1997,
<https://www.rfc-editor.org/info/RFC 2119>.
[RFC 3261] 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/RFC 3261, June 2002,
<https://www.rfc-editor.org/info/RFC 3261>.
[RFC 3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
with Session Description Protocol (SDP)", RFC 3264,
DOI 10.17487/RFC 3264, June 2002,
<https://www.rfc-editor.org/info/RFC 3264>.
[RFC 4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session
Description Protocol", RFC 4566, DOI 10.17487/RFC 4566,
July 2006, <https://www.rfc-editor.org/info/RFC 4566>.
[RFC 4960] Stewart, R., Ed., "Stream Control Transmission Protocol",
RFC 4960, DOI 10.17487/RFC 4960, September 2007,
<https://www.rfc-editor.org/info/RFC 4960>.
[RFC 5061] Stewart, R., Xie, Q., Tuexen, M., Maruyama, S., and M.
Kozuka, "Stream Control Transmission Protocol (SCTP)
Dynamic Address Reconfiguration", RFC 5061,
DOI 10.17487/RFC 5061, September 2007,
<https://www.rfc-editor.org/info/RFC 5061>.
[RFC 6525] Stewart, R., Tuexen, M., and P. Lei, "Stream Control
Transmission Protocol (SCTP) Stream Reconfiguration",
RFC 6525, DOI 10.17487/RFC 6525, February 2012,
<https://www.rfc-editor.org/info/RFC 6525>.
[RFC 7496] Tuexen, M., Seggelmann, R., Stewart, R., and S. Loreto,
"Additional Policies for the Partially Reliable Stream
Control Transmission Protocol Extension", RFC 7496,
DOI 10.17487/RFC 7496, April 2015,
<https://www.rfc-editor.org/info/RFC 7496>.
[RFC 8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC 8174,
May 2017, <https://www.rfc-editor.org/info/RFC 8174>.
[RFC 8261] Tuexen, M., Stewart, R., Jesup, R., and S. Loreto,
"Datagram Transport Layer Security (DTLS) Encapsulation of
SCTP Packets", RFC 8261, DOI 10.17487/RFC 8261, November
2017, <https://www.rfc-editor.org/info/RFC 8261>.
[RFC 8831] Jesup, R., Loreto, S., and M. Tüxen, "WebRTC Data
Channels", RFC 8831, DOI 10.17487/RFC 8831, January 2021,
<https://www.rfc-editor.org/info/RFC 8831>.
[RFC 8841] Holmberg, C., Shpount, R., Loreto, S., 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/RFC 8841, January 2021,
<https://www.rfc-editor.org/info/RFC 8841>.
[RFC 8864] Drage, K., Makaraju, M., Ejzak, R., Marcon, J., and R.
Even, Ed., "Negotiation Data Channels Using the Session
Description Protocol (SDP)", RFC 8864,
DOI 10.17487/RFC 8864, January 2021,
<https://www.rfc-editor.org/info/RFC 8864>.
6.2. Informative References
[RFC 3758] Stewart, R., Ramalho, M., Xie, Q., Tuexen, M., and P.
Conrad, "Stream Control Transmission Protocol (SCTP)
Partial Reliability Extension", RFC 3758,
DOI 10.17487/RFC 3758, May 2004,
<https://www.rfc-editor.org/info/RFC 3758>.
[RFC 8445] Keranen, A., Holmberg, C., and J. Rosenberg, "Interactive
Connectivity Establishment (ICE): A Protocol for Network
Address Translator (NAT) Traversal", RFC 8445,
DOI 10.17487/RFC 8445, July 2018,
<https://www.rfc-editor.org/info/RFC 8445>.
[RFC 8832] Jesup, R., Loreto, S., and M. Tüxen, "WebRTC Data Channel
Establishment Protocol", RFC 8832, DOI 10.17487/RFC 8832,
January 2021, <https://www.rfc-editor.org/info/RFC 8832>.
[RFC 8847] Presta, R. and S P. Romano, "Protocol for Controlling
Multiple Streams for Telepresence (CLUE)", RFC 8847,
DOI 10.17487/RFC 8847, January 2021,
<https://www.rfc-editor.org/info/RFC 8847>.
[RFC 8848] Hanton, R., Kyzivat, P., Xiao, L., and C. Groves, "Session
Signaling for Controlling Multiple Streams for
Telepresence (CLUE)", RFC 8848, DOI 10.17487/RFC 8848,
January 2021, <https://www.rfc-editor.org/info/RFC 8848>.
Acknowledgements
Thanks to Paul Kyzivat, Christian Groves, and Mark Duckworth for
comments on this document.
Author's Address
Christer Holmberg
Ericsson
Hirsalantie 11
FI-02420 Jorvas
Finland
Email: christer.holmberg@ericsson.com
RFC TOTAL SIZE: 19486 bytes
PUBLICATION DATE: Monday, January 18th, 2021
LEGAL RIGHTS: The IETF Trust (see BCP 78)
|