draft-ietf-rtcweb-transports-14.txt | draft-ietf-rtcweb-transports-15.txt | |||
---|---|---|---|---|
Network Working Group H. Alvestrand | Network Working Group H. Alvestrand | |||
Internet-Draft Google | Internet-Draft Google | |||
Intended status: Standards Track June 7, 2016 | Intended status: Standards Track August 4, 2016 | |||
Expires: December 9, 2016 | Expires: February 5, 2017 | |||
Transports for WebRTC | Transports for WebRTC | |||
draft-ietf-rtcweb-transports-14 | draft-ietf-rtcweb-transports-15 | |||
Abstract | Abstract | |||
This document describes the data transport protocols used by WebRTC, | This document describes the data transport protocols used by WebRTC, | |||
including the protocols used for interaction with intermediate boxes | including the protocols used for interaction with intermediate boxes | |||
such as firewalls, relays and NAT boxes. | such as firewalls, relays and NAT boxes. | |||
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 | |||
skipping to change at page 1, line 32 ¶ | skipping to change at page 1, line 32 ¶ | |||
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 December 9, 2016. | This Internet-Draft will expire on February 5, 2017. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2016 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 | |||
skipping to change at page 2, line 13 ¶ | skipping to change at page 2, line 13 ¶ | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
2. Requirements language . . . . . . . . . . . . . . . . . . . . 3 | 2. Requirements language . . . . . . . . . . . . . . . . . . . . 3 | |||
3. Transport and Middlebox specification . . . . . . . . . . . . 3 | 3. Transport and Middlebox specification . . . . . . . . . . . . 3 | |||
3.1. System-provided interfaces . . . . . . . . . . . . . . . 3 | 3.1. System-provided interfaces . . . . . . . . . . . . . . . 3 | |||
3.2. Ability to use IPv4 and IPv6 . . . . . . . . . . . . . . 4 | 3.2. Ability to use IPv4 and IPv6 . . . . . . . . . . . . . . 4 | |||
3.3. Usage of temporary IPv6 addresses . . . . . . . . . . . . 4 | 3.3. Usage of temporary IPv6 addresses . . . . . . . . . . . . 4 | |||
3.4. Middle box related functions . . . . . . . . . . . . . . 4 | 3.4. Middle box related functions . . . . . . . . . . . . . . 5 | |||
3.5. Transport protocols implemented . . . . . . . . . . . . . 6 | 3.5. Transport protocols implemented . . . . . . . . . . . . . 6 | |||
4. Media Prioritization . . . . . . . . . . . . . . . . . . . . 6 | 4. Media Prioritization . . . . . . . . . . . . . . . . . . . . 7 | |||
4.1. Local prioritization . . . . . . . . . . . . . . . . . . 7 | 4.1. Local prioritization . . . . . . . . . . . . . . . . . . 7 | |||
4.2. Usage of Quality of Service - DSCP and Multiplexing . . . 8 | 4.2. Usage of Quality of Service - DSCP and Multiplexing . . . 8 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 10 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | |||
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 | 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 11 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 10 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 11 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 13 | 8.2. Informative References . . . . . . . . . . . . . . . . . 14 | |||
Appendix A. Change log . . . . . . . . . . . . . . . . . . . . . 14 | Appendix A. Change log . . . . . . . . . . . . . . . . . . . . . 15 | |||
A.1. Changes from -00 to -01 . . . . . . . . . . . . . . . . . 14 | A.1. Changes from -00 to -01 . . . . . . . . . . . . . . . . . 15 | |||
A.2. Changes from -01 to -02 . . . . . . . . . . . . . . . . . 14 | A.2. Changes from -01 to -02 . . . . . . . . . . . . . . . . . 16 | |||
A.3. Changes from -02 to -03 . . . . . . . . . . . . . . . . . 15 | A.3. Changes from -02 to -03 . . . . . . . . . . . . . . . . . 16 | |||
A.4. Changes from -03 to -04 . . . . . . . . . . . . . . . . . 15 | A.4. Changes from -03 to -04 . . . . . . . . . . . . . . . . . 16 | |||
A.5. Changes from -04 to -05 . . . . . . . . . . . . . . . . . 15 | A.5. Changes from -04 to -05 . . . . . . . . . . . . . . . . . 17 | |||
A.6. Changes from -05 to -06 . . . . . . . . . . . . . . . . . 16 | A.6. Changes from -05 to -06 . . . . . . . . . . . . . . . . . 17 | |||
A.7. Changes from -06 to -07 . . . . . . . . . . . . . . . . . 16 | A.7. Changes from -06 to -07 . . . . . . . . . . . . . . . . . 17 | |||
A.8. Changes from -07 to -08 . . . . . . . . . . . . . . . . . 16 | A.8. Changes from -07 to -08 . . . . . . . . . . . . . . . . . 17 | |||
A.9. Changes from -08 to -09 . . . . . . . . . . . . . . . . . 16 | A.9. Changes from -08 to -09 . . . . . . . . . . . . . . . . . 18 | |||
A.10. Changes from -09 to -10 . . . . . . . . . . . . . . . . . 16 | A.10. Changes from -09 to -10 . . . . . . . . . . . . . . . . . 18 | |||
A.11. Changes from -10 to -11 . . . . . . . . . . . . . . . . . 17 | A.11. Changes from -10 to -11 . . . . . . . . . . . . . . . . . 18 | |||
A.12. Changes from -11 to -12 . . . . . . . . . . . . . . . . . 17 | A.12. Changes from -11 to -12 . . . . . . . . . . . . . . . . . 18 | |||
A.13. Changes from -12 to -13 . . . . . . . . . . . . . . . . . 17 | A.13. Changes from -12 to -13 . . . . . . . . . . . . . . . . . 18 | |||
A.14. Changes from -13 to -14 . . . . . . . . . . . . . . . . . 17 | A.14. Changes from -13 to -14 . . . . . . . . . . . . . . . . . 18 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 17 | A.15. Changes from -14 to -15 . . . . . . . . . . . . . . . . . 18 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 19 | ||||
1. Introduction | 1. Introduction | |||
WebRTC is a protocol suite aimed at real time multimedia exchange | WebRTC is a protocol suite aimed at real time multimedia exchange | |||
between browsers, and between browsers and other entities. | between browsers, and between browsers and other entities. | |||
WebRTC is described in the WebRTC overview document, | WebRTC is described in the WebRTC overview document, | |||
[I-D.ietf-rtcweb-overview], which also defines terminology used in | [I-D.ietf-rtcweb-overview], which also defines terminology used in | |||
this document, including the terms "WebRTC device" and "WebRTC | this document, including the terms "WebRTC device" and "WebRTC | |||
browser". | browser". | |||
skipping to change at page 3, line 36 ¶ | skipping to change at page 3, line 36 ¶ | |||
3.1. System-provided interfaces | 3.1. System-provided interfaces | |||
The protocol specifications used here assume that the following | The protocol specifications used here assume that the following | |||
protocols are available to the implementations of the WebRTC | protocols are available to the implementations of the WebRTC | |||
protocols: | protocols: | |||
o UDP [RFC0768]. This is the protocol assumed by most protocol | o UDP [RFC0768]. This is the protocol assumed by most protocol | |||
elements described. | elements described. | |||
o TCP [RFC0793]. This is used for HTTP/WebSockets, as well as for | o TCP [RFC0793]. This is used for HTTP/WebSockets, as well as for | |||
TURN/SSL and ICE-TCP. | TURN/TLS and ICE-TCP. | |||
For both protocols, IPv4 and IPv6 support is assumed. | For both protocols, IPv4 and IPv6 support is assumed. | |||
For UDP, this specification assumes the ability to set the DSCP code | For UDP, this specification assumes the ability to set the DSCP code | |||
point of the sockets opened on a per-packet basis, in order to | point of the sockets opened on a per-packet basis, in order to | |||
achieve the prioritizations described in [I-D.ietf-tsvwg-rtcweb-qos] | achieve the prioritizations described in [I-D.ietf-tsvwg-rtcweb-qos] | |||
(see Section 4.2) when multiple media types are multiplexed. It does | (see Section 4.2) when multiple media types are multiplexed. It does | |||
not assume that the DSCP codepoints will be honored, and does assume | not assume that the DSCP codepoints will be honored, and does assume | |||
that they may be zeroed or changed, since this is a local | that they may be zeroed or changed, since this is a local | |||
configuration issue. | configuration issue. | |||
Platforms that do not give access to these interfaces will not be | Platforms that do not give access to these interfaces will not be | |||
able to support a conforming WebRTC implementation. | able to support a conforming WebRTC implementation. | |||
This specification does not assume that the implementation will have | This specification does not assume that the implementation will have | |||
access to ICMP or raw IP. | access to ICMP or raw IP. | |||
The following protocols may be used, but can be implemented by a | ||||
WebRTC endpoint, and are therefore not defined as "system-provided | ||||
interfaces": | ||||
o TURN - Traversal Using Relays Around NAT, [RFC5766] | ||||
o STUN - Session Traversal Utilities for NAT, [RFC5389] | ||||
o ICE - Interactive Connectivity Establishment, [RFC5245] | ||||
o TLS - Transport Layer Security, [RFC5246] | ||||
o DTLS - Datagram Transport Layer Security, [RFC6347]. | ||||
3.2. Ability to use IPv4 and IPv6 | 3.2. Ability to use IPv4 and IPv6 | |||
Web applications running in a WebRTC browser MUST be able to utilize | Web applications running in a WebRTC browser MUST be able to utilize | |||
both IPv4 and IPv6 where available - that is, when two peers have | both IPv4 and IPv6 where available - that is, when two peers have | |||
only IPv4 connectivity to each other, or they have only IPv6 | only IPv4 connectivity to each other, or they have only IPv6 | |||
connectivity to each other, applications running in the WebRTC | connectivity to each other, applications running in the WebRTC | |||
browser MUST be able to communicate. | browser MUST be able to communicate. | |||
When TURN is used, and the TURN server has IPv4 or IPv6 connectivity | When TURN is used, and the TURN server has IPv4 or IPv6 connectivity | |||
to the peer or its TURN server, candidates of the appropriate types | to the peer or the peer's TURN server, candidates of the appropriate | |||
MUST be supported. The "Happy Eyeballs" specification for ICE | types MUST be supported. The "Happy Eyeballs" specification for ICE | |||
[I-D.martinsen-mmusic-ice-dualstack-fairness] SHOULD be supported. | [I-D.ietf-mmusic-ice-dualstack-fairness] SHOULD be supported. | |||
3.3. Usage of temporary IPv6 addresses | 3.3. Usage of temporary IPv6 addresses | |||
The IPv6 default address selection specification [RFC6724] specifies | The IPv6 default address selection specification [RFC6724] specifies | |||
that temporary addresses [RFC4941] are to be preferred over permanent | that temporary addresses [RFC4941] are to be preferred over permanent | |||
addresses. This is a change from the rules specified by [RFC3484]. | addresses. This is a change from the rules specified by [RFC3484]. | |||
For applications that select a single address, this is usually done | For applications that select a single address, this is usually done | |||
by the IPV6_PREFER_SRC_TMP preference flag specified in [RFC5014]. | by the IPV6_PREFER_SRC_TMP preference flag specified in [RFC5014]. | |||
However, this rule is not completely obvious in the ICE scope. This | However, this rule, which is intended to ensure that privacy-enhanced | |||
is therefore clarified as follows: | addresses are used in preference to static addresses, doesn't have | |||
the right effect in ICE, where all addresses are gathered and | ||||
therefore revealed to the application. Therefore, the following rule | ||||
is applied instead: | ||||
When a client gathers all IPv6 addresses on a host, and both | When a client gathers all IPv6 addresses on a host, and both non- | |||
temporary addresses and permanent addresses of the same scope are | deprecated temporary addresses and permanent addresses of the same | |||
present, the client SHOULD discard the permanent addresses before | scope are present, the client SHOULD discard the permanent addresses | |||
exposing addresses to the application or using them in ICE. This is | before exposing addresses to the application or using them in ICE. | |||
consistent with the default policy described in [RFC6724]. | This is consistent with the default policy described in [RFC6724]. | |||
If some of the temporary IPv6 addresses, but not all, are marked | If some of the temporary IPv6 addresses, but not all, are marked | |||
deprecated, the client SHOULD discard the deprecated addresses. | deprecated, the client SHOULD discard the deprecated addresses. In | |||
an ICE restart, deprecated addresses that are currently in use MAY be | ||||
retained. | ||||
3.4. Middle box related functions | 3.4. Middle box related functions | |||
The primary mechanism to deal with middle boxes is ICE, which is an | The primary mechanism to deal with middle boxes is ICE, which is an | |||
appropriate way to deal with NAT boxes and firewalls that accept | appropriate way to deal with NAT boxes and firewalls that accept | |||
traffic from the inside, but only from the outside if it is in | traffic from the inside, but only from the outside if it is in | |||
response to inside traffic (simple stateful firewalls). | response to inside traffic (simple stateful firewalls). | |||
ICE [RFC5245] MUST be supported. The implementation MUST be a full | ICE [RFC5245] MUST be supported. The implementation MUST be a full | |||
ICE implementation, not ICE-Lite. A full ICE implementation allows | ICE implementation, not ICE-Lite. A full ICE implementation allows | |||
skipping to change at page 5, line 32 ¶ | skipping to change at page 6, line 5 ¶ | |||
benefit, for the following reasons. | benefit, for the following reasons. | |||
First, use of TURN TCP candidates would only be relevant in cases | First, use of TURN TCP candidates would only be relevant in cases | |||
which both peers are required to use TCP to establish a | which both peers are required to use TCP to establish a | |||
PeerConnection. | PeerConnection. | |||
Second, that use case is supported in a different way by both sides | Second, that use case is supported in a different way by both sides | |||
establishing UDP relay candidates using TURN over TCP to connect to | establishing UDP relay candidates using TURN over TCP to connect to | |||
their respective relay servers. | their respective relay servers. | |||
Third, using TCP only between the endpoint and its relay may result | Third, using TCP between the client's TURN server and the peer may | |||
in less issues with TCP in regards to real-time constraints, e.g. due | result in more performance problems than using UDP, e.g. due to head | |||
to head of line blocking. | of line blocking. | |||
ICE-TCP candidates [RFC6544] MUST be supported; this may allow | ICE-TCP candidates [RFC6544] MUST be supported; this may allow | |||
applications to communicate to peers with public IP addresses across | applications to communicate to peers with public IP addresses across | |||
UDP-blocking firewalls without using a TURN server. | UDP-blocking firewalls without using a TURN server. | |||
If TCP connections are used, RTP framing according to [RFC4571] MUST | If TCP connections are used, RTP framing according to [RFC4571] MUST | |||
be used, both for the RTP packets and for the DTLS packets used to | be used for all packets. This includes the RTP packets, DTLS packets | |||
carry data channels. | used to carry data channels, and STUN connectivity check packets. | |||
The ALTERNATE-SERVER mechanism specified in [RFC5389] (STUN) section | The ALTERNATE-SERVER mechanism specified in [RFC5389] (STUN) section | |||
11 (300 Try Alternate) MUST be supported. | 11 (300 Try Alternate) MUST be supported. | |||
The WebRTC implementation MAY support accessing the Internet through | The WebRTC implementation MAY support accessing the Internet through | |||
an HTTP proxy. If it does so, it MUST include the "ALPN" header as | an HTTP proxy. If it does so, it MUST include the "ALPN" header as | |||
specified in [RFC7639], and proxy authentication as described in | specified in [RFC7639], and proxy authentication as described in | |||
Section 4.3.6 of [RFC7231] and [RFC7235] MUST also be supported. | Section 4.3.6 of [RFC7231] and [RFC7235] MUST also be supported. | |||
3.5. Transport protocols implemented | 3.5. Transport protocols implemented | |||
skipping to change at page 6, line 31 ¶ | skipping to change at page 6, line 51 ¶ | |||
Note: DTLS-SRTP as defined in [RFC5764] section 6.7.1 defines the | Note: DTLS-SRTP as defined in [RFC5764] section 6.7.1 defines the | |||
interaction between DTLS and ICE ( [RFC5245]). The effect of this | interaction between DTLS and ICE ( [RFC5245]). The effect of this | |||
specification is that all ICE candidate pairs associated with a | specification is that all ICE candidate pairs associated with a | |||
single component are part of the same DTLS association. Thus, there | single component are part of the same DTLS association. Thus, there | |||
will only be one DTLS handshake even if there are multiple valid | will only be one DTLS handshake even if there are multiple valid | |||
candidate pairs. | candidate pairs. | |||
WebRTC implementations MUST support multiplexing of DTLS and RTP over | WebRTC implementations MUST support multiplexing of DTLS and RTP over | |||
the same port pair, as described in the DTLS-SRTP specification | the same port pair, as described in the DTLS-SRTP specification | |||
[RFC5764], section 5.1.2. All application layer protocol payloads | [RFC5764], section 5.1.2, with clarifications in | |||
over this DTLS connection are SCTP packets. | ||||
[I-D.ietf-avtcore-rfc5764-mux-fixes]. All application layer protocol | ||||
payloads over this DTLS connection are SCTP packets. | ||||
Protocol identification MUST be supplied as part of the DTLS | Protocol identification MUST be supplied as part of the DTLS | |||
handshake, as specified in [I-D.ietf-rtcweb-alpn]. | handshake, as specified in [I-D.ietf-rtcweb-alpn]. | |||
4. Media Prioritization | 4. Media Prioritization | |||
The WebRTC prioritization model is that the application tells the | The WebRTC prioritization model is that the application tells the | |||
WebRTC implementation about the priority of media and data that is | WebRTC implementation about the priority of media and data that is | |||
controlled from the API. | controlled from the API. | |||
skipping to change at page 8, line 46 ¶ | skipping to change at page 9, line 15 ¶ | |||
Implementations SHOULD attempt to set QoS on the packets sent, | Implementations SHOULD attempt to set QoS on the packets sent, | |||
according to the guidelines in [I-D.ietf-tsvwg-rtcweb-qos]. It is | according to the guidelines in [I-D.ietf-tsvwg-rtcweb-qos]. It is | |||
appropriate to depart from this recommendation when running on | appropriate to depart from this recommendation when running on | |||
platforms where QoS marking is not implemented. | platforms where QoS marking is not implemented. | |||
The implementation MAY turn off use of DSCP markings if it detects | The implementation MAY turn off use of DSCP markings if it detects | |||
symptoms of unexpected behaviour like priority inversion or blocking | symptoms of unexpected behaviour like priority inversion or blocking | |||
of packets with certain DSCP markings. The detection of these | of packets with certain DSCP markings. The detection of these | |||
conditions is implementation dependent. | conditions is implementation dependent. | |||
A particularly hard problem is when one media transport uses multiple | ||||
DSCP code points, where one may be blocked and another may be | ||||
allowed. This is allowed even within a single media flow for video | ||||
in [I-D.ietf-tsvwg-rtcweb-qos]. Implementations need to diagnose | ||||
this scenario; one possible implementation is to send initial ICE | ||||
probes with DSCP 0, and send ICE probes on all the DSCP code points | ||||
that are intended to be used once a candidate pair has been selected. | ||||
If one or more of the DSCP-marked probes fail, the sender will switch | ||||
the media type to using DSCP 0. This can be carried out | ||||
simultaneously with the initial media traffic; on failure, the | ||||
initial data may need to be resent. This switch will of course | ||||
invalidate any congestion information gathered up to that point. | ||||
Failures can also start happening during the lifetime of the call; | ||||
this case is expected to be rarer, and can be handled by the normal | ||||
mechanisms for transport failure, which may involve an ICE restart. | ||||
Note that when a DSCP code point causes non-delivery, one has to | ||||
switch the whole media flow to DSCP 0, since all traffic for a single | ||||
media flow needs to be on the same queue for congestion control | ||||
purposes. Other flows on the same transport, using different DSCP | ||||
code points, don't need to change. | ||||
All packets carrying data from the SCTP association supporting the | All packets carrying data from the SCTP association supporting the | |||
data channels MUST use a single DSCP code point. The code point used | data channels MUST use a single DSCP code point. The code point used | |||
SHOULD be that recommended by [I-D.ietf-tsvwg-rtcweb-qos] for the | SHOULD be that recommended by [I-D.ietf-tsvwg-rtcweb-qos] for the | |||
highest priority data channel carried. Note that this means that all | highest priority data channel carried. Note that this means that all | |||
data packets, no matter what their relative priority is, will be | data packets, no matter what their relative priority is, will be | |||
treated the same by the network. | treated the same by the network. | |||
All packets on one TCP connection, no matter what it carries, MUST | All packets on one TCP connection, no matter what it carries, MUST | |||
use a single DSCP code point. | use a single DSCP code point. | |||
skipping to change at page 9, line 41 ¶ | skipping to change at page 10, line 34 ¶ | |||
More complex configurations, such as sending a high priority video | More complex configurations, such as sending a high priority video | |||
stream on one 5-tuple and sending all other video streams multiplexed | stream on one 5-tuple and sending all other video streams multiplexed | |||
together over another 5-tuple, can also be envisioned. More | together over another 5-tuple, can also be envisioned. More | |||
information on mapping media flows to 5-tuples can be found in | information on mapping media flows to 5-tuples can be found in | |||
[I-D.ietf-rtcweb-rtp-usage]. | [I-D.ietf-rtcweb-rtp-usage]. | |||
A sending implementation MUST be able to support the following | A sending implementation MUST be able to support the following | |||
configurations: | configurations: | |||
o multiplex all media and data on a single 5-tuple (fully bundled) | o Multiplex all media and data on a single 5-tuple (fully bundled) | |||
o send each media stream on its own 5-tuple and data on its own | o Send each media stream on its own 5-tuple and data on its own | |||
5-tuple (fully unbundled) | 5-tuple (fully unbundled) | |||
It MAY choose to support other configurations, such as bundling each | It MAY choose to support other configurations, such as bundling each | |||
media type (audio, video or data) into its own 5-tuple (bundling by | media type (audio, video or data) into its own 5-tuple (bundling by | |||
media type). | media type). | |||
Sending data over multiple 5-tuples is not supported. | Sending data channel data over multiple 5-tuples is not supported. | |||
A receiving implementation MUST be able to receive media and data in | A receiving implementation MUST be able to receive media and data in | |||
all these configurations. | all these configurations. | |||
5. IANA Considerations | 5. IANA Considerations | |||
This document makes no request of IANA. | This document makes no request of IANA. | |||
Note to RFC Editor: this section may be removed on publication as an | Note to RFC Editor: this section may be removed on publication as an | |||
RFC. | RFC. | |||
6. Security Considerations | 6. Security Considerations | |||
Security considerations are enumerated in [I-D.ietf-rtcweb-security]. | RTCWEB security considerations are enumerated in | |||
[I-D.ietf-rtcweb-security]. | ||||
Security considerations pertaining to the use of DSCP are enumerated | ||||
in [I-D.ietf-tsvwg-rtcweb-qos]. | ||||
7. Acknowledgements | 7. Acknowledgements | |||
This document is based on earlier versions embedded in | This document is based on earlier versions embedded in | |||
[I-D.ietf-rtcweb-overview], which were the results of contributions | [I-D.ietf-rtcweb-overview], which were the results of contributions | |||
from many RTCWEB WG members. | from many RTCWEB WG members. | |||
Special thanks for reviews of earlier versions of this draft go to | Special thanks for reviews of earlier versions of this draft go to | |||
Eduardo Gueiros, Magnus Westerlund, Markus Isomaki and Dan Wing; the | Eduardo Gueiros, Magnus Westerlund, Markus Isomaki and Dan Wing; the | |||
contributions from Andrew Hutton also deserve special mention. | contributions from Andrew Hutton also deserve special mention. | |||
8. References | 8. References | |||
8.1. Normative References | 8.1. Normative References | |||
[I-D.ietf-avtcore-rfc5764-mux-fixes] | ||||
Petit-Huguenin, M. and G. Salgueiro, "Multiplexing Scheme | ||||
Updates for Secure Real-time Transport Protocol (SRTP) | ||||
Extension for Datagram Transport Layer Security (DTLS)", | ||||
draft-ietf-avtcore-rfc5764-mux-fixes-10 (work in | ||||
progress), July 2016. | ||||
[I-D.ietf-mmusic-ice-dualstack-fairness] | ||||
Martinsen, P., Reddy, T., and P. Patil, "ICE Multihomed | ||||
and IPv4/IPv6 Dual Stack Fairness", draft-ietf-mmusic-ice- | ||||
dualstack-fairness-02 (work in progress), September 2015. | ||||
[I-D.ietf-mmusic-sctp-sdp] | [I-D.ietf-mmusic-sctp-sdp] | |||
Holmberg, C., Loreto, S., and G. Camarillo, "Stream | Holmberg, C., Loreto, S., and G. Camarillo, "Stream | |||
Control Transmission Protocol (SCTP)-Based Media Transport | Control Transmission Protocol (SCTP)-Based Media Transport | |||
in the Session Description Protocol (SDP)", draft-ietf- | in the Session Description Protocol (SDP)", draft-ietf- | |||
mmusic-sctp-sdp-16 (work in progress), February 2016. | mmusic-sctp-sdp-16 (work in progress), February 2016. | |||
[I-D.ietf-rtcweb-alpn] | [I-D.ietf-rtcweb-alpn] | |||
Thomson, M., "Application Layer Protocol Negotiation for | Thomson, M., "Application Layer Protocol Negotiation for | |||
Web Real-Time Communications (WebRTC)", draft-ietf-rtcweb- | Web Real-Time Communications (WebRTC)", draft-ietf-rtcweb- | |||
alpn-04 (work in progress), May 2016. | alpn-04 (work in progress), May 2016. | |||
skipping to change at page 11, line 35 ¶ | skipping to change at page 12, line 45 ¶ | |||
Tuexen, M., Stewart, R., Jesup, R., and S. Loreto, "DTLS | Tuexen, M., Stewart, R., Jesup, R., and S. Loreto, "DTLS | |||
Encapsulation of SCTP Packets", draft-ietf-tsvwg-sctp- | Encapsulation of SCTP Packets", draft-ietf-tsvwg-sctp- | |||
dtls-encaps-09 (work in progress), January 2015. | dtls-encaps-09 (work in progress), January 2015. | |||
[I-D.ietf-tsvwg-sctp-ndata] | [I-D.ietf-tsvwg-sctp-ndata] | |||
Stewart, R., Tuexen, M., Loreto, S., and R. Seggelmann, | Stewart, R., Tuexen, M., Loreto, S., and R. Seggelmann, | |||
"Stream Schedulers and User Message Interleaving for the | "Stream Schedulers and User Message Interleaving for the | |||
Stream Control Transmission Protocol", draft-ietf-tsvwg- | Stream Control Transmission Protocol", draft-ietf-tsvwg- | |||
sctp-ndata-05 (work in progress), March 2016. | sctp-ndata-05 (work in progress), March 2016. | |||
[I-D.martinsen-mmusic-ice-dualstack-fairness] | ||||
Martinsen, P., Reddy, T., and P. Patil, "ICE IPv4/IPv6 | ||||
Dual Stack Fairness", draft-martinsen-mmusic-ice- | ||||
dualstack-fairness-02 (work in progress), February 2015. | ||||
[RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, DOI | [RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, DOI | |||
10.17487/RFC0768, August 1980, | 10.17487/RFC0768, August 1980, | |||
<http://www.rfc-editor.org/info/rfc768>. | <http://www.rfc-editor.org/info/rfc768>. | |||
[RFC0793] Postel, J., "Transmission Control Protocol", STD 7, RFC | [RFC0793] Postel, J., "Transmission Control Protocol", STD 7, RFC | |||
793, DOI 10.17487/RFC0793, September 1981, | 793, DOI 10.17487/RFC0793, September 1981, | |||
<http://www.rfc-editor.org/info/rfc793>. | <http://www.rfc-editor.org/info/rfc793>. | |||
[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, DOI 10.17487/ | Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ | |||
skipping to change at page 12, line 21 ¶ | skipping to change at page 13, line 26 ¶ | |||
Extensions for Stateless Address Autoconfiguration in | Extensions for Stateless Address Autoconfiguration in | |||
IPv6", RFC 4941, DOI 10.17487/RFC4941, September 2007, | IPv6", RFC 4941, DOI 10.17487/RFC4941, September 2007, | |||
<http://www.rfc-editor.org/info/rfc4941>. | <http://www.rfc-editor.org/info/rfc4941>. | |||
[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, DOI | Traversal for Offer/Answer Protocols", RFC 5245, DOI | |||
10.17487/RFC5245, April 2010, | 10.17487/RFC5245, April 2010, | |||
<http://www.rfc-editor.org/info/rfc5245>. | <http://www.rfc-editor.org/info/rfc5245>. | |||
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | ||||
(TLS) Protocol Version 1.2", RFC 5246, DOI 10.17487/ | ||||
RFC5246, August 2008, | ||||
<http://www.rfc-editor.org/info/rfc5246>. | ||||
[RFC5389] Rosenberg, J., Mahy, R., Matthews, P., and D. Wing, | [RFC5389] Rosenberg, J., Mahy, R., Matthews, P., and D. Wing, | |||
"Session Traversal Utilities for NAT (STUN)", RFC 5389, | "Session Traversal Utilities for NAT (STUN)", RFC 5389, | |||
DOI 10.17487/RFC5389, October 2008, | DOI 10.17487/RFC5389, October 2008, | |||
<http://www.rfc-editor.org/info/rfc5389>. | <http://www.rfc-editor.org/info/rfc5389>. | |||
[RFC5764] McGrew, D. and E. Rescorla, "Datagram Transport Layer | [RFC5764] McGrew, D. and E. Rescorla, "Datagram Transport Layer | |||
Security (DTLS) Extension to Establish Keys for the Secure | Security (DTLS) Extension to Establish Keys for the Secure | |||
Real-time Transport Protocol (SRTP)", RFC 5764, DOI | Real-time Transport Protocol (SRTP)", RFC 5764, DOI | |||
10.17487/RFC5764, May 2010, | 10.17487/RFC5764, May 2010, | |||
<http://www.rfc-editor.org/info/rfc5764>. | <http://www.rfc-editor.org/info/rfc5764>. | |||
skipping to change at page 12, line 48 ¶ | skipping to change at page 14, line 10 ¶ | |||
[RFC6062] Perreault, S., Ed. and J. Rosenberg, "Traversal Using | [RFC6062] Perreault, S., Ed. and J. Rosenberg, "Traversal Using | |||
Relays around NAT (TURN) Extensions for TCP Allocations", | Relays around NAT (TURN) Extensions for TCP Allocations", | |||
RFC 6062, DOI 10.17487/RFC6062, November 2010, | RFC 6062, DOI 10.17487/RFC6062, November 2010, | |||
<http://www.rfc-editor.org/info/rfc6062>. | <http://www.rfc-editor.org/info/rfc6062>. | |||
[RFC6156] Camarillo, G., Novo, O., and S. Perreault, Ed., "Traversal | [RFC6156] Camarillo, G., Novo, O., and S. Perreault, Ed., "Traversal | |||
Using Relays around NAT (TURN) Extension for IPv6", RFC | Using Relays around NAT (TURN) Extension for IPv6", RFC | |||
6156, DOI 10.17487/RFC6156, April 2011, | 6156, DOI 10.17487/RFC6156, April 2011, | |||
<http://www.rfc-editor.org/info/rfc6156>. | <http://www.rfc-editor.org/info/rfc6156>. | |||
[RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | ||||
Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347, | ||||
January 2012, <http://www.rfc-editor.org/info/rfc6347>. | ||||
[RFC6544] Rosenberg, J., Keranen, A., Lowekamp, B., and A. Roach, | [RFC6544] Rosenberg, J., Keranen, A., Lowekamp, B., and A. Roach, | |||
"TCP Candidates with Interactive Connectivity | "TCP Candidates with Interactive Connectivity | |||
Establishment (ICE)", RFC 6544, DOI 10.17487/RFC6544, | Establishment (ICE)", RFC 6544, DOI 10.17487/RFC6544, | |||
March 2012, <http://www.rfc-editor.org/info/rfc6544>. | March 2012, <http://www.rfc-editor.org/info/rfc6544>. | |||
[RFC6724] Thaler, D., Ed., Draves, R., Matsumoto, A., and T. Chown, | [RFC6724] Thaler, D., Ed., Draves, R., Matsumoto, A., and T. Chown, | |||
"Default Address Selection for Internet Protocol Version 6 | "Default Address Selection for Internet Protocol Version 6 | |||
(IPv6)", RFC 6724, DOI 10.17487/RFC6724, September 2012, | (IPv6)", RFC 6724, DOI 10.17487/RFC6724, September 2012, | |||
<http://www.rfc-editor.org/info/rfc6724>. | <http://www.rfc-editor.org/info/rfc6724>. | |||
skipping to change at page 17, line 31 ¶ | skipping to change at page 18, line 46 ¶ | |||
o Clarify that the ALPN header needs to be sent. | o Clarify that the ALPN header needs to be sent. | |||
o Mentioned that RFC 7657 also talks about congestion control | o Mentioned that RFC 7657 also talks about congestion control | |||
A.14. Changes from -13 to -14 | A.14. Changes from -13 to -14 | |||
o Add note about non-support for marking flows as interactive or | o Add note about non-support for marking flows as interactive or | |||
non-interactive. | non-interactive. | |||
A.15. Changes from -14 to -15 | ||||
o Various text clarifications based on comments in Last Call and | ||||
IESG review | ||||
o Clarified that only non-deprecated IPv6 addresses are used | ||||
o Described handling of downgrading of DSCP markings when blackholes | ||||
are detected | ||||
o Expanded acronyms in a new protocol list | ||||
Author's Address | Author's Address | |||
Harald Alvestrand | Harald Alvestrand | |||
Email: harald@alvestrand.no | Email: harald@alvestrand.no | |||
End of changes. 25 change blocks. | ||||
55 lines changed or deleted | 131 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |