draft-ietf-rtcweb-transports-08.txt   draft-ietf-rtcweb-transports-09.txt 
Network Working Group H. Alvestrand Network Working Group H. Alvestrand
Internet-Draft Google Internet-Draft Google
Intended status: Standards Track February 27, 2015 Intended status: Standards Track July 6, 2015
Expires: August 31, 2015 Expires: January 7, 2016
Transports for WebRTC Transports for WebRTC
draft-ietf-rtcweb-transports-08 draft-ietf-rtcweb-transports-09
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 August 31, 2015. This Internet-Draft will expire on January 7, 2016.
Copyright Notice Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the Copyright (c) 2015 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 11 skipping to change at page 2, line 11
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 . . . . . . . . . . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . 3 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 . . . . . . . . . . . . . . 4
3.5. Transport protocols implemented . . . . . . . . . . . . . 5 3.5. Transport protocols implemented . . . . . . . . . . . . . 5
4. Media Prioritization . . . . . . . . . . . . . . . . . . . . 6 4. Media Prioritization . . . . . . . . . . . . . . . . . . . . 6
4.1. Usage of Quality of Service - DSCP and Multiplexing . . . 6 4.1. Usage of Quality of Service - DSCP and Multiplexing . . . 6
4.2. Local prioritization . . . . . . . . . . . . . . . . . . 8 4.2. Local prioritization . . . . . . . . . . . . . . . . . . 8
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9
6. Security Considerations . . . . . . . . . . . . . . . . . . . 9 6. Security Considerations . . . . . . . . . . . . . . . . . . . 9
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 9
8.1. Normative References . . . . . . . . . . . . . . . . . . 9 8.1. Normative References . . . . . . . . . . . . . . . . . . 9
8.2. Informative References . . . . . . . . . . . . . . . . . 11 8.2. Informative References . . . . . . . . . . . . . . . . . 12
Appendix A. Change log . . . . . . . . . . . . . . . . . . . . . 12 Appendix A. Change log . . . . . . . . . . . . . . . . . . . . . 12
A.1. Changes from -00 to -01 . . . . . . . . . . . . . . . . . 12 A.1. Changes from -00 to -01 . . . . . . . . . . . . . . . . . 12
A.2. Changes from -01 to -02 . . . . . . . . . . . . . . . . . 12 A.2. Changes from -01 to -02 . . . . . . . . . . . . . . . . . 13
A.3. Changes from -02 to -03 . . . . . . . . . . . . . . . . . 13 A.3. Changes from -02 to -03 . . . . . . . . . . . . . . . . . 13
A.4. Changes from -03 to -04 . . . . . . . . . . . . . . . . . 13 A.4. Changes from -03 to -04 . . . . . . . . . . . . . . . . . 14
A.5. Changes from -04 to -05 . . . . . . . . . . . . . . . . . 13 A.5. Changes from -04 to -05 . . . . . . . . . . . . . . . . . 14
A.6. Changes from -05 to -06 . . . . . . . . . . . . . . . . . 14 A.6. Changes from -05 to -06 . . . . . . . . . . . . . . . . . 14
A.7. Changes from -06 to -07 . . . . . . . . . . . . . . . . . 14 A.7. Changes from -06 to -07 . . . . . . . . . . . . . . . . . 14
A.8. Changes from -07 to -08 . . . . . . . . . . . . . . . . . 14 A.8. Changes from -07 to -08 . . . . . . . . . . . . . . . . . 15
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 14 A.9. Changes from -08 to -09 . . . . . . . . . . . . . . . . . 15
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 15
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. this document, including the terms "WebRTC device" and "WebRTC
browser".
This document focuses on the data transport protocols that are used This document focuses on the data transport protocols that are used
by conforming implementations, including the protocols used for by conforming implementations, including the protocols used for
interaction with intermediate boxes such as firewalls, relays and NAT interaction with intermediate boxes such as firewalls, relays and NAT
boxes. boxes.
This protocol suite intends to satisfy the security considerations This protocol suite intends to satisfy the security considerations
described in the WebRTC security documents, described in the WebRTC security documents,
[I-D.ietf-rtcweb-security] and [I-D.ietf-rtcweb-security-arch]. [I-D.ietf-rtcweb-security] and [I-D.ietf-rtcweb-security-arch].
This document describes requirements that apply to all WebRTC This document describes requirements that apply to all WebRTC
devices. When there are requirements that apply only to WebRTC devices. When there are requirements that apply only to WebRTC
browsers, this is called out by using the word "browser". browsers, this is called out explicitly.
2. Requirements language 2. Requirements language
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 RFC 2119 [RFC2119]. document are to be interpreted as described in RFC 2119 [RFC2119].
3. Transport and Middlebox specification 3. Transport and Middlebox specification
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. This is the protocol assumed by most protocol elements o UDP [RFC0768]. This is the protocol assumed by most protocol
described. elements described.
o TCP. This is used for HTTP/WebSockets, as well as for TURN/SSL o TCP [RFC0793]. This is used for HTTP/WebSockets, as well as for
and ICE-TCP. TURN/SSL 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.1) when multiple media types are multiplexed. It does (see Section 4.1) 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.
skipping to change at page 4, line 23 skipping to change at page 4, line 31
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 is not completely obvious in the ICE scope. This
is therefore clarified as follows: is therefore clarified as follows:
When a client gathers all IPv6 addresses on a host, and both When a client gathers all IPv6 addresses on a host, and both
temporary addresses and permanent addresses of the same scope are temporary addresses and permanent addresses of the same scope are
present, the client SHOULD discard the permanent addresses before present, the client SHOULD discard the permanent addresses before
forming pairs. This is consistent with the default policy described exposing addresses to the application or using them in ICE. This is
in [RFC6724]. consistent with the default policy described in [RFC6724].
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 6, line 7 skipping to change at page 6, line 15
[I-D.ietf-rtcweb-rtp-usage]. Key exchange MUST be done using DTLS- [I-D.ietf-rtcweb-rtp-usage]. Key exchange MUST be done using DTLS-
SRTP, as described in [I-D.ietf-rtcweb-security-arch]. SRTP, as described in [I-D.ietf-rtcweb-security-arch].
For data transport over the WebRTC data channel For data transport over the WebRTC data channel
[I-D.ietf-rtcweb-data-channel], WebRTC implementations MUST support [I-D.ietf-rtcweb-data-channel], WebRTC implementations MUST support
SCTP over DTLS over ICE. This encapsulation is specified in SCTP over DTLS over ICE. This encapsulation is specified in
[I-D.ietf-tsvwg-sctp-dtls-encaps]. Negotiation of this transport in [I-D.ietf-tsvwg-sctp-dtls-encaps]. Negotiation of this transport in
SDP is defined in [I-D.ietf-mmusic-sctp-sdp]. The SCTP extension for SDP is defined in [I-D.ietf-mmusic-sctp-sdp]. The SCTP extension for
NDATA, [I-D.ietf-tsvwg-sctp-ndata], MUST be supported. NDATA, [I-D.ietf-tsvwg-sctp-ndata], MUST be supported.
The setup protocol for WebRTC data channels is described in The setup protocol for WebRTC data channels described in
[I-D.ietf-rtcweb-data-protocol]. [I-D.ietf-rtcweb-data-protocol] MUST be supported.
Note: DTLS-SRTP as defined in [RFC5764] section 6.7.1 defines the
interaction between DTLS and ICE ( [RFC5245]). The effect of this
specification is that all ICE candidate pairs associated with a
single component are part of the same DTLS association. Thus, there
will only be one DTLS handshake even if there are multiple valid
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. All application layer protocol payloads
over this DTLS connection are SCTP packets. 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 flows WebRTC implementation about the priority of media and data flows
skipping to change at page 6, line 43 skipping to change at page 7, line 9
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. (Question: Does there need conditions is implementation dependent. (Question: Does there need
to be an API knob to turn off DSCP markings?) to be an API knob to turn off DSCP markings? If nobody argues for
it, this parenthesis will be removed.)
All packets arrying 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. data channels MUST use a single DSCP code point.
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.
More advice on the use of DSCP code points with RTP is given in More advice on the use of DSCP code points with RTP is given in
[I-D.ietf-dart-dscp-rtp]. [I-D.ietf-dart-dscp-rtp].
There exist a number of schemes for achieving quality of service that There exist a number of schemes for achieving quality of service that
do not depend solely on DSCP code points. Some of these schemes do not depend solely on DSCP code points. Some of these schemes
skipping to change at page 10, line 10 skipping to change at page 10, line 21
[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-00 (work in progress), July 2014. alpn-00 (work in progress), July 2014.
[I-D.ietf-rtcweb-data-channel] [I-D.ietf-rtcweb-data-channel]
Jesup, R., Loreto, S., and M. Tuexen, "WebRTC Data Jesup, R., Loreto, S., and M. Tuexen, "WebRTC Data
Channels", draft-ietf-rtcweb-data-channel-13 (work in Channels", draft-ietf-rtcweb-data-channel-13 (work in
progress), January 2015. progress), January 2015.
[I-D.ietf-rtcweb-data-protocol]
Jesup, R., Loreto, S., and M. Tuexen, "WebRTC Data Channel
Establishment Protocol", draft-ietf-rtcweb-data-
protocol-09 (work in progress), January 2015.
[I-D.ietf-rtcweb-rtp-usage] [I-D.ietf-rtcweb-rtp-usage]
Perkins, C., Westerlund, M., and J. Ott, "Web Real-Time Perkins, C., Westerlund, M., and J. Ott, "Web Real-Time
Communication (WebRTC): Media Transport and Use of RTP", Communication (WebRTC): Media Transport and Use of RTP",
draft-ietf-rtcweb-rtp-usage-22 (work in progress), draft-ietf-rtcweb-rtp-usage-22 (work in progress),
February 2015. February 2015.
[I-D.ietf-rtcweb-security] [I-D.ietf-rtcweb-security]
Rescorla, E., "Security Considerations for WebRTC", draft- Rescorla, E., "Security Considerations for WebRTC", draft-
ietf-rtcweb-security-07 (work in progress), July 2014. ietf-rtcweb-security-07 (work in progress), July 2014.
skipping to change at page 10, line 46 skipping to change at page 11, line 16
Stewart, R., Tuexen, M., Loreto, S., and R. Seggelmann, Stewart, R., Tuexen, M., Loreto, S., and R. Seggelmann,
"Stream Schedulers and a New Data Chunk for the Stream "Stream Schedulers and a New Data Chunk for the Stream
Control Transmission Protocol", draft-ietf-tsvwg-sctp- Control Transmission Protocol", draft-ietf-tsvwg-sctp-
ndata-02 (work in progress), January 2015. ndata-02 (work in progress), January 2015.
[I-D.martinsen-mmusic-ice-dualstack-fairness] [I-D.martinsen-mmusic-ice-dualstack-fairness]
Martinsen, P., Reddy, T., and P. Patil, "ICE IPv4/IPv6 Martinsen, P., Reddy, T., and P. Patil, "ICE IPv4/IPv6
Dual Stack Fairness", draft-martinsen-mmusic-ice- Dual Stack Fairness", draft-martinsen-mmusic-ice-
dualstack-fairness-02 (work in progress), February 2015. dualstack-fairness-02 (work in progress), February 2015.
[RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768,
August 1980.
[RFC0793] Postel, J., "Transmission Control Protocol", STD 7, RFC
793, September 1981.
[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.
[RFC4571] Lazzaro, J., "Framing Real-time Transport Protocol (RTP) [RFC4571] Lazzaro, J., "Framing Real-time Transport Protocol (RTP)
and RTP Control Protocol (RTCP) Packets over Connection- and RTP Control Protocol (RTCP) Packets over Connection-
Oriented Transport", RFC 4571, July 2006. Oriented Transport", RFC 4571, July 2006.
[RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy [RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy
Extensions for Stateless Address Autoconfiguration in Extensions for Stateless Address Autoconfiguration in
IPv6", RFC 4941, September 2007. IPv6", RFC 4941, September 2007.
skipping to change at page 11, line 49 skipping to change at page 12, line 24
"Default Address Selection for Internet Protocol Version 6 "Default Address Selection for Internet Protocol Version 6
(IPv6)", RFC 6724, September 2012. (IPv6)", RFC 6724, September 2012.
8.2. Informative References 8.2. Informative References
[I-D.ietf-dart-dscp-rtp] [I-D.ietf-dart-dscp-rtp]
Black, D. and P. Jones, "Differentiated Services Black, D. and P. Jones, "Differentiated Services
(DiffServ) and Real-time Communication", draft-ietf-dart- (DiffServ) and Real-time Communication", draft-ietf-dart-
dscp-rtp-10 (work in progress), November 2014. dscp-rtp-10 (work in progress), November 2014.
[I-D.ietf-rtcweb-data-protocol]
Jesup, R., Loreto, S., and M. Tuexen, "WebRTC Data Channel
Establishment Protocol", draft-ietf-rtcweb-data-
protocol-09 (work in progress), January 2015.
[I-D.ietf-rtcweb-overview] [I-D.ietf-rtcweb-overview]
Alvestrand, H., "Overview: Real Time Protocols for Alvestrand, H., "Overview: Real Time Protocols for
Browser-based Applications", draft-ietf-rtcweb-overview-13 Browser-based Applications", draft-ietf-rtcweb-overview-13
(work in progress), November 2014. (work in progress), November 2014.
[RFC3484] Draves, R., "Default Address Selection for Internet [RFC3484] Draves, R., "Default Address Selection for Internet
Protocol version 6 (IPv6)", RFC 3484, February 2003. Protocol version 6 (IPv6)", RFC 3484, February 2003.
[RFC5014] Nordmark, E., Chakrabarti, S., and J. Laganier, "IPv6 [RFC5014] Nordmark, E., Chakrabarti, S., and J. Laganier, "IPv6
Socket API for Source Address Selection", RFC 5014, Socket API for Source Address Selection", RFC 5014,
skipping to change at page 14, line 39 skipping to change at page 15, line 14
A.8. Changes from -07 to -08 A.8. Changes from -07 to -08
o Updated references o Updated references
o Deleted "bundle each media type (audio, video or data) into its o Deleted "bundle each media type (audio, video or data) into its
own 5-tuple (bundling by media type)" from MUST support own 5-tuple (bundling by media type)" from MUST support
configuration, since JSEP does not have a means to negotiate this configuration, since JSEP does not have a means to negotiate this
configuration configuration
A.9. Changes from -08 to -09
o Added a clarifying note about DTLS-SRTP and ICE interaction.
Author's Address Author's Address
Harald Alvestrand Harald Alvestrand
Google Google
Email: harald@alvestrand.no Email: harald@alvestrand.no
 End of changes. 21 change blocks. 
29 lines changed or deleted 49 lines changed or added

This html diff was produced by rfcdiff 1.42. The latest version is available from http://tools.ietf.org/tools/rfcdiff/