draft-ietf-rtcweb-data-channel-02.txt | draft-ietf-rtcweb-data-channel-03.txt | |||
---|---|---|---|---|
Network Working Group R. Jesup | Network Working Group R. Jesup | |||
Internet-Draft Mozilla | Internet-Draft Mozilla | |||
Intended status: Standards Track S. Loreto | Intended status: Standards Track S. Loreto | |||
Expires: April 26, 2013 Ericsson | Expires: August 28, 2013 Ericsson | |||
M. Tuexen | M. Tuexen | |||
Muenster Univ. of Appl. Sciences | Muenster Univ. of Appl. Sciences | |||
October 23, 2012 | February 24, 2013 | |||
RTCWeb Datagram Connection | RTCWeb Data Channels | |||
draft-ietf-rtcweb-data-channel-02.txt | draft-ietf-rtcweb-data-channel-03.txt | |||
Abstract | Abstract | |||
The Web Real-Time Communication (WebRTC) working group is charged to | The Web Real-Time Communication (WebRTC) working group is charged to | |||
provide protocol support for direct interactive rich communication | provide protocol support for direct interactive rich communication | |||
using audio, video, and data between two peers' web-browsers. This | using audio, video, and data between two peers' web-browsers. This | |||
document describes the non-media data transport aspects of the WebRTC | document specifies the non-media data transport aspects of the WebRTC | |||
framework. It provides an architectural overview of how the Stream | framework. It provides an architectural overview of how the Stream | |||
Control Transmission Protocol (SCTP) is used in the WebRTC context as | Control Transmission Protocol (SCTP) is used in the WebRTC context as | |||
a generic transport service allowing Web Browser to exchange generic | a generic transport service allowing Web Browser to exchange generic | |||
data from peer to peer. | data from peer to peer. | |||
Status of this Memo | Status of this Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on April 26, 2013. | This Internet-Draft will expire on August 28, 2013. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2012 IETF Trust and the persons identified as the | Copyright (c) 2013 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. Requirements . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
4. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3.1. Use Cases for Unreliable Data Channels . . . . . . . . . . 4 | |||
4.1. Use Cases for Unreliable Datagram Based Channels . . . . . 5 | 3.2. Use Cases for Reliable Data Channels . . . . . . . . . . . 4 | |||
4.2. Use Cases for Reliable Channels (Datagram or Stream | 4. Requirements . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
Based) . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | ||||
5. SCTP over DTLS over UDP Considerations . . . . . . . . . . . . 6 | 5. SCTP over DTLS over UDP Considerations . . . . . . . . . . . . 6 | |||
6. The Usage of SCTP in the RTCWeb Context . . . . . . . . . . . 8 | 6. The Usage of SCTP in the RTCWeb Context . . . . . . . . . . . 9 | |||
6.1. Association Setup . . . . . . . . . . . . . . . . . . . . 9 | 6.1. Association Setup . . . . . . . . . . . . . . . . . . . . 9 | |||
6.2. SCTP Streams . . . . . . . . . . . . . . . . . . . . . . . 9 | 6.2. SCTP Streams . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
6.3. Channel Definition . . . . . . . . . . . . . . . . . . . . 9 | 6.3. Channel Definition . . . . . . . . . . . . . . . . . . . . 9 | |||
6.4. Usage of Payload Protocol Identifier . . . . . . . . . . . 10 | 6.4. Usage of Payload Protocol Identifier . . . . . . . . . . . 10 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 10 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 10 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | |||
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 10 | 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
10. Informative References . . . . . . . . . . . . . . . . . . . . 11 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . . 10 | ||||
10.2. Informative References . . . . . . . . . . . . . . . . . . 12 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 12 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
1. Introduction | 1. Introduction | |||
Non-media data types in the context of RTCWEB are handled by using | Non-media data types in the context of RTCWeb are handled by using | |||
SCTP [RFC4960] encapsulated in DTLS [RFC6347]. | SCTP [RFC4960] encapsulated in DTLS [RFC6347]. | |||
+----------+ | +----------+ | |||
| SCTP | | | SCTP | | |||
+----------+ | +----------+ | |||
| DTLS | | | DTLS | | |||
+----------+ | +----------+ | |||
| ICE/UDP | | | ICE/UDP | | |||
+----------+ | +----------+ | |||
Figure 1: Basic stack diagram | Figure 1: Basic stack diagram | |||
The encapsulation of SCTP over DTLS over ICE/UDP provides a NAT | The encapsulation of SCTP over DTLS (see | |||
traversal solution together with confidentiality, source | [I-D.ietf-tsvwg-sctp-dtls-encaps]) over ICE/UDP (see [RFC5245]) | |||
authenticated, integrity protected transfers. This data transport | provides a NAT traversal solution together with confidentiality, | |||
service operates in parallel to the media transports, and all of them | source authentication, and integrity protected transfers. This data | |||
can eventually share a single transport-layer port number. | transport service operates in parallel to the media transports, and | |||
all of them can eventually share a single transport-layer port | ||||
number. | ||||
SCTP as specified in [RFC4960] with the extension defined in | SCTP as specified in [RFC4960] with the partial reliability extension | |||
[RFC3758] provides multiple streams natively with reliable, and | defined in [RFC3758] provides multiple streams natively with | |||
partially-reliable delivery modes. | reliable, and partially-reliable delivery modes. | |||
The remainder of this document is organized as follows: Section 3 and | The remainder of this document is organized as follows: Section 4 and | |||
Section 4 provide requirements and use cases for both unreliable and | Section 3 provide requirements and use cases for both unreliable and | |||
reliable peer to peer datagram base channel; Section 5 arguments SCTP | reliable peer to peer datagram base channel; Section 5 arguments SCTP | |||
over DTLS over UDP; Section 6 provides an overview of how SCTP should | over DTLS over UDP; Section 6 provides an specification of how SCTP | |||
be used by the RTCWeb protocol framework for transporting non-media | should be used by the RTCWeb protocol framework for transporting non- | |||
data between browsers. | media data between browsers. | |||
2. Conventions | 2. Conventions | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
3. Requirements | 3. Use Cases | |||
This section lists the requirements for P2P data connections between | This section defined use cases specific to data channels. For | |||
two browsers. | general use cases see [I-D.ietf-rtcweb-use-cases-and-requirements]. | |||
Req. 1 Multiple simultaneous datagram streams MUST be supported. | 3.1. Use Cases for Unreliable Data Channels | |||
Note that there may 0 or more media streams in parallel with | ||||
the data streams, and the number and state (active/inactive) | ||||
of the media streams may change at any time. | ||||
Req. 2 Both reliable and unreliable datagram streams MUST be | U-C 1 A real-time game where position and object state information | |||
is sent via one or more unreliable data channels. Note that | ||||
at any time there may be no media channels, or all media | ||||
channels may be inactive, and that there may also be reliable | ||||
data channels in use. | ||||
U-C 2 Providing non-critical information to a user about the reason | ||||
for a state update in a video chat or conference, such as Mute | ||||
state. | ||||
3.2. Use Cases for Reliable Data Channels | ||||
U-C 3 A real-time game where critical state information needs to be | ||||
transferred, such as control information. Such a game may | ||||
have no media channels, or they may be inactive at any given | ||||
time, or may only be added due to in-game actions. | ||||
U-C 4 Non-realtime file transfers between people chatting. Note | ||||
that this may involve a large number of files to transfer | ||||
sequentially or in parallel, such as when sharing a folder of | ||||
images or a directory of files. | ||||
U-C 5 Realtime text chat while talking with an individual or with | ||||
multiple people in a conference. | ||||
U-C 6 Renegotiation of the set of media streams in the | ||||
PeerConnection. | ||||
U-C 7 Proxy browsing, where a browser uses data channels of a | ||||
PeerConnection to send and receive HTTP/HTTPS requests and | ||||
data, for example to avoid local internet filtering or | ||||
monitoring. | ||||
4. Requirements | ||||
This section lists the requirements for P2P data channels between two | ||||
browsers. | ||||
Req. 1 Multiple simultaneous data channels MUST be supported. Note | ||||
that there may 0 or more media streams in parallel with the | ||||
data channels, and the number and state (active/inactive) of | ||||
the media streams may change at any time. | ||||
Req. 2 Both reliable and unreliable data channels MUST be | ||||
supported. | supported. | |||
Req. 3 Data streams MUST be congestion controlled; either | Req. 3 Data channels MUST be congestion controlled; either | |||
individually, as a class, or in conjunction with the media | individually, as a class, or in conjunction with the media | |||
streams, to ensure that datagram exchanges don't cause | streams, to ensure that data channels don't cause congestion | |||
congestion problems for the media streams, and that the | problems for the media streams, and that the RTCWeb | |||
rtcweb PeerConnection as a whole is fair with competing | PeerConnection as a whole is fair with competing traffic | |||
streams such as TCP. | such as TCP. | |||
Req. 4 The application SHOULD be able to provide guidance as to the | Req. 4 The application SHOULD be able to provide guidance as to the | |||
relative priority of each datagram stream relative to each | relative priority of each data channel relative to each | |||
other, and relative to the media streams. [ TBD: how this is | other, and relative to the media streams. [ TBD: how this is | |||
encoded and what the impact of this is. ] This will interact | encoded and what the impact of this is. ] This will interact | |||
with the congestion control algorithms. | with the congestion control algorithms. | |||
Req. 5 Datagram streams MUST be encrypted; allowing for | Req. 5 Data channels MUST be secured; allowing for confidentiality, | |||
confidentiality, integrity and source authentication. See | integrity and source authentication. See | |||
[I-D.ietf-rtcweb-security] and | [I-D.ietf-rtcweb-security] and | |||
[I-D.ietf-rtcweb-security-arch] for detailed info. | [I-D.ietf-rtcweb-security-arch] for detailed info. | |||
Req. 6 Consent and NAT traversal mechanism: These are handled by | Req. 6 Data channels MUST provide message fragmentation support | |||
the PeerConnection's ICE [RFC5245] connectivity checks and | such that IP-layer fragmentation can be avoided no matter | |||
optional TURN servers. | how large a message the Javascript application passes to be | |||
Req. 7 Data streams MUST provide message fragmentation support such | ||||
that IP-layer fragmentation does not occur no matter how | ||||
large a message the Javascript application passes to be | ||||
sent. | sent. | |||
Req. 8 The data stream transport protocol MUST not encode local IP | Req. 7 The data channel transport protocol MUST NOT encode local IP | |||
addresses inside its protocol fields; doing so reveals | addresses inside its protocol fields; doing so reveals | |||
potentially private information, and leads to failure if the | potentially private information, and leads to failure if the | |||
address is depended upon. | address is depended upon. | |||
Req. 9 The data stream protocol SHOULD support unbounded-length | Req. 8 The data channel transport protocol SHOULD support | |||
"messages" (i.e., a virtual socket stream) at the | unbounded-length "messages" (i.e., a virtual socket stream) | |||
application layer, for such things as image-file-transfer; | at the application layer, for such things as image-file- | |||
or it MUST support a maximum application-layer message size | transfer; Implementations might enforce a reasonable message | |||
of at least 2GB. | size limit. | |||
Req. 10 The data stream packet format/encoding MUST be such that it | Req. 9 The data channel packet format/encoding MUST be such that it | |||
is impossible for a malicious Javascript to generate an | is impossible for a malicious Javascript to generate an | |||
application message crafted such that it could be | application message crafted such that it could be | |||
interpreted as a native protocol over UDP - such as UPnP, | interpreted as a native protocol over UDP - such as UPnP, | |||
RTP, SNMP, STUN, etc. | RTP, SNMP, STUN, etc. | |||
Req. 11 The data stream transport protocol MUST start with the | Req. 10 The data channel transport protocol SHOULD avoid IP | |||
assumption of a PMTU of 1280 [ *** need justification ***] | fragmentation. It MUST support PMTU discovery and MUST NOT | |||
bytes until measured otherwise. | rely on ICMP or ICMPv6 being generated or being passed back, | |||
especially for PMTU discovery. | ||||
Req. 12 The data stream transport protocol MUST NOT rely on ICMP or | ||||
ICMPv6 being generated or being passed back, such as for | ||||
PMTU discovery. | ||||
Req. 13 It MUST be possible to implement the protocol stack in the | Req. 11 It MUST be possible to implement the protocol stack in the | |||
user application space. | user application space. | |||
4. Use Cases | 5. SCTP over DTLS over UDP Considerations | |||
4.1. Use Cases for Unreliable Datagram Based Channels | ||||
U-C 1 A real-time game where position and object state information | ||||
is sent via one or more unreliable data channels. Note that | ||||
at any time there may be no media channels, or all media | ||||
channels may be inactive, and that there may also be reliable | ||||
data channels in use. | ||||
U-C 2 Non-critical state updates about a user in a video chat or | The important features of SCTP in the RTCWeb context are: | |||
conference, such as Mute state. | ||||
4.2. Use Cases for Reliable Channels (Datagram or Stream Based) | o TCP-friendly congestion control. | |||
Note that either reliable datagrams or streams are possible; reliable | o The congestion control is modifiable for integration with media | |||
streams would be fairly simple to layer on top of SCTP reliable | stream congestion control. | |||
datagrams with in-order delivery. | ||||
U-C 3 A real-time game where critical state information needs to be | o Support for multiple channels with different characteristics. | |||
transferred, such as control information. Typically this | ||||
would be datagrams. Such a game may have no media channels, | ||||
or they may be inactive at any given time, or may only be | ||||
added due to in-game actions. | ||||
U-C 4 Non-realtime file transfers between people chatting. This | o Support for out-of-order delivery. | |||
could be datagrams or streaming. Note that this may involve a | ||||
large number of files to transfer sequentially or in parallel, | ||||
such as when sharing a folder of images or a directory of | ||||
files. | ||||
U-C 5 Realtime text chat while talking with an individual or with | o Support for large datagrams and PMTU-discovery and fragmentation. | |||
multiple people in a conference. Typically this would be | ||||
datagrams. | ||||
U-C 6 Renegotiation of the set of media streams in the | o Reliable or partial reliability support. | |||
PeerConnection. Typically this would be datagrams. | ||||
U-C 7 Proxy browsing, where a browser uses data channels of a | o Support of multiple streams. | |||
PeerConnection to send and receive HTTP/HTTPS requests and | ||||
data, for example to avoid local internet filtering or | ||||
monitoring. Typically this would be streams. | ||||
5. SCTP over DTLS over UDP Considerations | SCTP multihoming will not be used in RTCWeb. The SCTP layer will | |||
simply act as if it were running on a single-homed host, since that | ||||
is the abstraction that the lower layer (a connection oriented, | ||||
unreliable datagram service) exposes. | ||||
The encapsulation of SCTP over DTLS as defined in | The encapsulation of SCTP over DTLS defined in | |||
[I-D.tuexen-tsvwg-sctp-dtls-encaps] provides a NAT traversal solution | [I-D.ietf-tsvwg-sctp-dtls-encaps] provides confidentiality, source | |||
together with confidentiality, source authenticated, integrity | authenticated, and integrity protected transfers. Using DTLS over | |||
protected transfers. SCTP as specified in [RFC4960] MUST be used in | UDP in combination with ICE enables NAT traversal in IPv4 based | |||
combination with the extension defined in [RFC3758] and provides the | networks. SCTP as specified in [RFC4960] MUST be used in combination | |||
following interesting features for transporting non-media data | with the extension defined in [RFC3758] and provides the following | |||
between browsers: | interesting features for transporting non-media data between | |||
browsers: | ||||
o Support of multiple streams. | o Support of multiple unidirectional streams. | |||
o Ordered and unordered delivery of user messages. | o Ordered and unordered delivery of user messages. | |||
o Reliable and partial-reliable transport of user messages. | o Reliable and partial-reliable transport of user messages. | |||
Each SCTP user message contains a so called Payload Protocol | Each SCTP user message contains a so called Payload Protocol | |||
Identifier (PPID) that is passed to SCTP by its upper layer and sent | Identifier (PPID) that is passed to SCTP by its upper layer and sent | |||
to its peer. This value represents an application (or upper layer) | to its peer. This value can be used to multiplex multiple protocols | |||
specified protocol identifier and be used to transport multiple | over a single SCTP association. The sender provides for each | |||
protocols over a single SCTP association. The sender provides for | protocol a specific PPID and the receiver can demultiplex the | |||
each protocol a specific PPID and the receiver MAY demultiplex the | ||||
messages based on the received PPID. | messages based on the received PPID. | |||
The encapsulation of SCTP over DTLS, together with the SCTP features | The encapsulation of SCTP over DTLS, together with the SCTP features | |||
listed above satisfies all the requirements listed in Section 3. | listed above satisfies all the requirements listed in Section 4. | |||
The layering of protocols for WebRTC is shown in the following | The layering of protocols for WebRTC is shown in the following | |||
Figure 2. | Figure 2. | |||
+------+ | +------+ | |||
|RTCWEB| | |RTCWEB| | |||
| DATA | | | DATA | | |||
+------+ | +------+ | |||
| SCTP | | | SCTP | | |||
+--------------------+ | +--------------------+ | |||
| STUN | SRTP | DTLS | | | STUN | SRTP | DTLS | | |||
+--------------------+ | +--------------------+ | |||
| ICE | | | ICE | | |||
+--------------------+ | +--------------------+ | |||
| UDP1 | UDP2 | ... | | | UDP1 | UDP2 | ... | | |||
+--------------------+ | +--------------------+ | |||
Figure 2: WebRTC protocol layers | Figure 2: WebRTC protocol layers | |||
This stack (especially in contrast to DTLS over SCTP [RFC6083]) has | This stack (especially in contrast to DTLS over SCTP [RFC6083] in | |||
combination with SCTP over UDP [I-D.ietf-tsvwg-sctp-udp-encaps]) has | ||||
been chosen because it | been chosen because it | |||
o supports the transmission of arbitrary large user messages. | o supports the transmission of arbitrary large user messages. | |||
o shares the DTLS connection with the media channels. | o shares the DTLS connection with the media channels. | |||
o provides privacy for the SCTP control information. | o provides privacy for the SCTP control information. | |||
Considering the protocol stack of Figure 2 the usage of DTLS over UDP | Considering the protocol stack of Figure 2 the usage of DTLS over UDP | |||
is specified in [RFC6347], while the usage of SCTP on top of DTLS is | is specified in [RFC6347], while the usage of SCTP on top of DTLS is | |||
specified in [I-D.tuexen-tsvwg-sctp-dtls-encaps]. | specified in [I-D.ietf-tsvwg-sctp-dtls-encaps]. | |||
Since DTLS is typically implemented in user-land, the SCTP stack also | Since DTLS is typically implemented in user-land, the SCTP stack also | |||
needs to be a user-land stack. | needs to be a user-land stack. | |||
When using DTLS as the lower layer, only single homed SCTP | When using DTLS as the lower layer, only single homed SCTP | |||
associations SHOULD be used, since DTLS does not expose any address | associations MUST be used, since DTLS does not expose any address | |||
management to its upper layer. The ICE/UDP layer can handle IP | management to its upper layer. The ICE/UDP layer can handle IP | |||
address changes during a session without needing to notify the DTLS | address changes during a session without needing to notify the DTLS | |||
and SCTP layers, though it would be advantageous to retest path MTU | and SCTP layers, though it would be advantageous to retest path MTU | |||
on an IP address change. | on an IP address change. | |||
DTLS implementations used for this stack SHOULD support controlling | DTLS implementations used for this stack SHOULD support controlling | |||
fields of the IP layer like the Don't fragment (DF)-bit in case of | fields of the IP layer like the Don't fragment (DF)-bit in case of | |||
IPv4 and the Differentiated Services Code Point (DSCP) field required | IPv4 and the Differentiated Services Code Point (DSCP) field required | |||
for supporting [I-D.ietf-rtcweb-qos]. Being able to set the (DF)-bit | for supporting [I-D.ietf-rtcweb-qos]. Being able to set the (DF)-bit | |||
in case of IPv4 is required for performing path MTU discovery. The | in case of IPv4 is required for performing path MTU discovery. The | |||
DTLS implementation SHOULD also support sending user messages | DTLS implementation SHOULD also support sending user messages | |||
exceeding the path MTU. | exceeding the path MTU. | |||
Incoming ICMP or ICMPv6 messages can't be processed by the SCTP | Incoming ICMP or ICMPv6 messages can't be processed by the SCTP | |||
layer, since there is no way to identify the corresponding | layer, since there is no way to identify the corresponding | |||
association. Therefore SCTP MUST support performing Path MTU | association. Therefore SCTP MUST support performing Path MTU | |||
discovery without relying on ICMP or ICMPv6. In general, the lower | discovery without relying on ICMP or ICMPv6 as specified in [RFC4821] | |||
layer interface of an SCTP implementation SHOULD be adapted to | using probing messages specified in [RFC4820]. The initial Path MTU | |||
address the differences between IPv4 or IPv6 (being connection-less) | MUST NOT exceed 1280 [ *** need justification ***] bytes until | |||
or DTLS (being connection-oriented). | measured otherwise. | |||
In general, the lower layer interface of an SCTP implementation | ||||
SHOULD be adapted to address the differences between IPv4 or IPv6 | ||||
(being connection-less) or DTLS (being connection-oriented). | ||||
When protocol stack of Figure 2 is used, DTLS protects the complete | When protocol stack of Figure 2 is used, DTLS protects the complete | |||
SCTP packet, so it provides confidentiality, integrity and source | SCTP packet, so it provides confidentiality, integrity and source | |||
authentication of the complete SCTP packet. | authentication of the complete SCTP packet. | |||
This protocol stack MUST support the usage of multiple SCTP streams. | This protocol stack MUST support the usage of multiple SCTP streams. | |||
A user message can be sent ordered or unordered and with partial or | A user message can be sent ordered or unordered and with partial or | |||
full reliability. The partial reliability extension MUST support | full reliability. The partial reliability extension MUST support | |||
policies to limit | policies to limit | |||
skipping to change at page 8, line 38 | skipping to change at page 8, line 51 | |||
means that all SCTP streams within a single SCTP association share | means that all SCTP streams within a single SCTP association share | |||
the same congestion window. Traffic not being sent over SCTP is not | the same congestion window. Traffic not being sent over SCTP is not | |||
covered by the SCTP congestion control. Due to the typical parallel | covered by the SCTP congestion control. Due to the typical parallel | |||
SRTP media streams, a delay-sensitive congestion control algorithm | SRTP media streams, a delay-sensitive congestion control algorithm | |||
MUST be supported and the congestion control MAY be coordinated | MUST be supported and the congestion control MAY be coordinated | |||
between the data channels and the media streams to avoid a data | between the data channels and the media streams to avoid a data | |||
channel transfer ending up with most or all the channel bandwidth. | channel transfer ending up with most or all the channel bandwidth. | |||
Since SCTP does not support the negotiation of a congestion control | Since SCTP does not support the negotiation of a congestion control | |||
algorithm, the algorithm either MUST be negotiated before | algorithm, the algorithm either MUST be negotiated before | |||
establishment of the SCTP association or MUST not require any | establishment of the SCTP association or MUST NOT require any | |||
negotiation because it only requires sender side behavior using | negotiation because it only requires sender side behavior using | |||
existing information carried in the association. | existing information carried in the association. | |||
6. The Usage of SCTP in the RTCWeb Context | 6. The Usage of SCTP in the RTCWeb Context | |||
The important features of SCTP in the RTCWeb context are: | ||||
o TCP-friendly congestion control. | ||||
o The congestion control is modifiable for integration with media | ||||
stream congestion control. | ||||
o Support for multiple channels with different characteristics. | ||||
o Support for out-of-order delivery. | ||||
o Support for large datagrams and PMTU-discovery and fragmentation. | ||||
o Reliable or partial reliability support. | ||||
o Support of multiple streams. | ||||
SCTP multihoming will not be used in RTCWeb. The SCTP layer will | ||||
simply act as if it were running on a single-homed host, since that | ||||
is the abstraction that the lower layer (a connection oriented, | ||||
unreliable datagram service) exposes. | ||||
6.1. Association Setup | 6.1. Association Setup | |||
The SCTP association will be set up when the two endpoints of the | The SCTP association will be set up when the two endpoints of the | |||
WebRTC PeerConnection agree on opening it, as negotiated by JSEP | WebRTC PeerConnection agree on opening it, as negotiated by JSEP | |||
(typically an exchange of SDP) [I-D.ietf-rtcweb-jsep]. Additionally, | (typically an exchange of SDP) [I-D.ietf-rtcweb-jsep]. Additionally, | |||
the negotiation SHOULD include some type of congestion control | the negotiation SHOULD include some type of congestion control | |||
selection. It will use the DTLS connection selected via SDP; | selection. It will use the DTLS connection selected via SDP; | |||
typically this will be shared via BUNDLE with DTLS connections used | typically this will be shared via BUNDLE with DTLS connections used | |||
to key the DTLS-SRTP media streams. | to key the DTLS-SRTP media streams. | |||
The application SHOULD indicate the initial number of streams | The application SHOULD indicate the initial number of streams | |||
required when opening the association, and if no value is supplied, | required when opening the association, and if no value is supplied, | |||
the implementation SHOULD provide a default, with a suggested value | the implementation SHOULD provide an appropriate default. If more | |||
of 16. If more simultaneous streams are needed, [RFC6525] allows | simultaneous streams are needed, [RFC6525] allows adding additional | |||
adding additional (but not removing) streams to an existing | (but not removing) streams to an existing association. Note there | |||
association. Note there can be up to 65536 SCTP streams per SCTP | can be up to 65536 SCTP streams per SCTP association in each | |||
association in each direction. | direction. | |||
6.2. SCTP Streams | 6.2. SCTP Streams | |||
SCTP defines a stream as an unidirectional logical channel existing | SCTP defines a stream as an unidirectional logical channel existing | |||
within an SCTP association one to another SCTP endpoint. The streams | within an SCTP association one to another SCTP endpoint. The streams | |||
are used to provide the notion of in-sequence delivery and for | are used to provide the notion of in-sequence delivery and for | |||
multiplexing. Each user message is sent on a particular stream, | multiplexing. Each user message is sent on a particular stream, | |||
either order or unordered. Ordering is preserved only for all | either order or unordered. Ordering is preserved only for all | |||
ordered messages sent on the same stream. | ordered messages sent on the same stream. | |||
skipping to change at page 10, line 18 | skipping to change at page 10, line 9 | |||
The realization of a bidirectional Data Channel is a pair of one | The realization of a bidirectional Data Channel is a pair of one | |||
incoming stream and one outgoing SCTP stream. | incoming stream and one outgoing SCTP stream. | |||
The simple protocol specified in [I-D.jesup-rtcweb-data-protocol] | The simple protocol specified in [I-D.jesup-rtcweb-data-protocol] | |||
MUST be used to set up and manage the bidirectional data channels. | MUST be used to set up and manage the bidirectional data channels. | |||
Note that there's no requirement for the SCTP streams used to create | Note that there's no requirement for the SCTP streams used to create | |||
a bidirectional channel have the same number in each direction. How | a bidirectional channel have the same number in each direction. How | |||
stream values are selected is protocol and implementation dependent. | stream values are selected is protocol and implementation dependent. | |||
Closing of a Data Channel MUST be signalled by resetting the | Closing of a Data Channel MUST be signaled by resetting the | |||
corresponding streams [RFC6525]. Resetting a stream set the Stream | corresponding streams [RFC6525]. Resetting a stream set the Stream | |||
Sequence Numbers (SSNs) of the stream back to 'zero' with a | Sequence Numbers (SSNs) of the stream back to 'zero' with a | |||
corresponding notification to the application layer that the reset | corresponding notification to the application layer that the reset | |||
has been performed. Closed streams are available to reuse. | has been performed. Streams are available to reuse after a reset has | |||
been performed. | ||||
[RFC6525] also guarantees that all the messages are delivered (or | [RFC6525] also guarantees that all the messages are delivered (or | |||
expired) before resetting the stream. | expired) before resetting the stream. | |||
6.4. Usage of Payload Protocol Identifier | 6.4. Usage of Payload Protocol Identifier | |||
The SCTP Payload Protocol Identifiers (PPIDs) MUST used to signal the | The SCTP Payload Protocol Identifiers (PPIDs) can be used to signal | |||
interpretation of the "Payload data", like the protocol specified in | the interpretation of the "Payload data", like the protocol specified | |||
[I-D.jesup-rtcweb-data-protocol] uses them to identify a Javascript | in [I-D.jesup-rtcweb-data-protocol] uses them to identify a | |||
string, a Javascript array or a a Javascript blob. | Javascript string, a Javascript array or a Javascript blob. | |||
7. Security Considerations | 7. Security Considerations | |||
To be done. | This document does not add any additional considerations to the ones | |||
given in [I-D.ietf-rtcweb-security] and | ||||
[I-D.ietf-rtcweb-security-arch]. | ||||
8. IANA Considerations | 8. IANA Considerations | |||
This document does not require any actions by the IANA. | This document does not require any actions by the IANA. | |||
9. Acknowledgments | 9. Acknowledgments | |||
Many thanks for comments, ideas, and text from Harald Alvestrand, | Many thanks for comments, ideas, and text from Harald Alvestrand, | |||
Adam Bergkvist, Cullen Jennings, Eric Rescorla, Randall Stewart, and | Adam Bergkvist, Cullen Jennings, Eric Rescorla, Randall Stewart, | |||
Justin Uberti. | Justin Uberti, and Magnus Westerlund. | |||
10. Informative References | 10. References | |||
10.1. Normative References | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC3758] Stewart, R., Ramalho, M., Xie, Q., Tuexen, M., and P. | [RFC3758] Stewart, R., Ramalho, M., Xie, Q., Tuexen, M., and P. | |||
Conrad, "Stream Control Transmission Protocol (SCTP) | Conrad, "Stream Control Transmission Protocol (SCTP) | |||
Partial Reliability Extension", RFC 3758, May 2004. | Partial Reliability Extension", RFC 3758, May 2004. | |||
[RFC4820] Tuexen, M., Stewart, R., and P. Lei, "Padding Chunk and | ||||
Parameter for the Stream Control Transmission Protocol | ||||
(SCTP)", RFC 4820, March 2007. | ||||
[RFC4821] Mathis, M. and J. Heffner, "Packetization Layer Path MTU | ||||
Discovery", RFC 4821, March 2007. | ||||
[RFC4960] Stewart, R., "Stream Control Transmission Protocol", | [RFC4960] Stewart, R., "Stream Control Transmission Protocol", | |||
RFC 4960, September 2007. | RFC 4960, September 2007. | |||
[RFC5245] Rosenberg, J., "Interactive Connectivity Establishment | [RFC5245] Rosenberg, J., "Interactive Connectivity Establishment | |||
(ICE): A Protocol for Network Address Translator (NAT) | (ICE): A Protocol for Network Address Translator (NAT) | |||
Traversal for Offer/Answer Protocols", RFC 5245, | Traversal for Offer/Answer Protocols", RFC 5245, | |||
April 2010. | April 2010. | |||
[RFC6083] Tuexen, M., Seggelmann, R., and E. Rescorla, "Datagram | ||||
Transport Layer Security (DTLS) for Stream Control | ||||
Transmission Protocol (SCTP)", RFC 6083, January 2011. | ||||
[RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | [RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | |||
Security Version 1.2", RFC 6347, January 2012. | Security Version 1.2", RFC 6347, January 2012. | |||
[RFC6525] Stewart, R., Tuexen, M., and P. Lei, "Stream Control | [RFC6525] Stewart, R., Tuexen, M., and P. Lei, "Stream Control | |||
Transmission Protocol (SCTP) Stream Reconfiguration", | Transmission Protocol (SCTP) Stream Reconfiguration", | |||
RFC 6525, February 2012. | RFC 6525, February 2012. | |||
[I-D.jesup-rtcweb-data-protocol] | ||||
Jesup, R., Loreto, S., and M. Tuexen, "WebRTC Data Channel | ||||
Protocol", draft-jesup-rtcweb-data-protocol-03 (work in | ||||
progress), September 2012. | ||||
[I-D.ietf-tsvwg-sctp-dtls-encaps] | ||||
Jesup, R., Loreto, S., Stewart, R., and M. Tuexen, "DTLS | ||||
Encapsulation of SCTP Packets for RTCWEB", | ||||
draft-ietf-tsvwg-sctp-dtls-encaps-00 (work in progress), | ||||
February 2013. | ||||
[I-D.ietf-rtcweb-security] | [I-D.ietf-rtcweb-security] | |||
Rescorla, E., "Security Considerations for RTC-Web", | Rescorla, E., "Security Considerations for RTC-Web", | |||
draft-ietf-rtcweb-security-03 (work in progress), | draft-ietf-rtcweb-security-04 (work in progress), | |||
June 2012. | January 2013. | |||
[I-D.ietf-rtcweb-security-arch] | [I-D.ietf-rtcweb-security-arch] | |||
Rescorla, E., "RTCWEB Security Architecture", | Rescorla, E., "RTCWEB Security Architecture", | |||
draft-ietf-rtcweb-security-arch-05 (work in progress), | draft-ietf-rtcweb-security-arch-06 (work in progress), | |||
October 2012. | January 2013. | |||
[I-D.ietf-rtcweb-jsep] | [I-D.ietf-rtcweb-jsep] | |||
Uberti, J. and C. Jennings, "Javascript Session | Uberti, J. and C. Jennings, "Javascript Session | |||
Establishment Protocol", draft-ietf-rtcweb-jsep-01 (work | Establishment Protocol", draft-ietf-rtcweb-jsep-02 (work | |||
in progress), June 2012. | in progress), October 2012. | |||
[I-D.ietf-rtcweb-qos] | [I-D.ietf-rtcweb-qos] | |||
Dhesikan, S., Druta, D., Jones, P., and J. Polk, "DSCP and | Dhesikan, S., Druta, D., Jones, P., and J. Polk, "DSCP and | |||
other packet markings for RTCWeb QoS", | other packet markings for RTCWeb QoS", | |||
draft-ietf-rtcweb-qos-00 (work in progress), October 2012. | draft-ietf-rtcweb-qos-00 (work in progress), October 2012. | |||
[I-D.ietf-tsvwg-sctp-udp-encaps] | 10.2. Informative References | |||
Tuexen, M. and R. Stewart, "UDP Encapsulation of SCTP | ||||
Packets", draft-ietf-tsvwg-sctp-udp-encaps-06 (work in | ||||
progress), October 2012. | ||||
[I-D.jesup-rtcweb-data-protocol] | [RFC6083] Tuexen, M., Seggelmann, R., and E. Rescorla, "Datagram | |||
Jesup, R., Loreto, S., and M. Tuexen, "WebRTC Data Channel | Transport Layer Security (DTLS) for Stream Control | |||
Protocol", draft-jesup-rtcweb-data-protocol-03 (work in | Transmission Protocol (SCTP)", RFC 6083, January 2011. | |||
progress), September 2012. | ||||
[I-D.tuexen-tsvwg-sctp-dtls-encaps] | [I-D.ietf-rtcweb-use-cases-and-requirements] | |||
Jesup, R., Loreto, S., Stewart, R., and M. Tuexen, "DTLS | Holmberg, C., Hakansson, S., and G. Eriksson, "Web Real- | |||
Encapsulation of SCTP Packets for RTCWEB", | Time Communication Use-cases and Requirements", | |||
draft-tuexen-tsvwg-sctp-dtls-encaps-01 (work in progress), | draft-ietf-rtcweb-use-cases-and-requirements-10 (work in | |||
July 2012. | progress), December 2012. | |||
[I-D.ietf-tsvwg-sctp-udp-encaps] | ||||
Tuexen, M. and R. Stewart, "UDP Encapsulation of SCTP | ||||
Packets for End-Host to End-Host Communication", | ||||
draft-ietf-tsvwg-sctp-udp-encaps-11 (work in progress), | ||||
February 2013. | ||||
Authors' Addresses | Authors' Addresses | |||
Randell Jesup | Randell Jesup | |||
Mozilla | Mozilla | |||
USA | US | |||
Email: randell-ietf@jesup.org | Email: randell-ietf@jesup.org | |||
Salvatore Loreto | Salvatore Loreto | |||
Ericsson | Ericsson | |||
Hirsalantie 11 | Hirsalantie 11 | |||
Jorvas 02420 | Jorvas 02420 | |||
Finland | FI | |||
Email: salvatore.loreto@ericsson.com | Email: salvatore.loreto@ericsson.com | |||
Michael Tuexen | Michael Tuexen | |||
Muenster University of Applied Sciences | Muenster University of Applied Sciences | |||
Stegerwaldstrasse 39 | Stegerwaldstrasse 39 | |||
Steinfurt 48565 | Steinfurt 48565 | |||
Germany | DE | |||
Email: tuexen@fh-muenster.de | Email: tuexen@fh-muenster.de | |||
End of changes. 68 change blocks. | ||||
186 lines changed or deleted | 204 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |