rfc-8835

Transports for WebRTC

H. Alvestrand
date2021-01 streamIETF areawit wgrtcweb statusPROPOSED STANDARD pages13 canonicalhttps://www.rfc-editor.org/rfc/rfc8835 doi10.17487/RFC8835
This document describes the data transport protocols used by Web Real-Time Communication (WebRTC), including the protocols used for interaction with intermediate boxes such as firewalls, relays, and NAT boxes.

Extracted elements (31)

design-rationale §3.5

Even when multiple ICE candidate pairs are valid for a single component, there is only one DTLS handshake because all candidate pairs associated with a single component are part of the same DTLS association, as described in RFC8842 Section 6.

webrtc, tls, nat

design-rationale §3.3

Temporary IPv6 addresses are preferred over permanent ones for privacy, but the standard IPV6_PREFER_SRC_TMP flag does not apply in ICE because ICE gathers and reveals all addresses. Therefore WebRTC defines its own rule: discard permanent addresses when nondeprecated temporaries of the same scope exist.

webrtc, privacy, ip

design-rationale §3.4

TURN TCP candidates (RFC6062), where the connection from the TURN server to the peer is TCP, are only MAY because: they are only relevant when both peers require TCP; the same use case is covered by both sides establishing UDP relay candidates over TURN/TCP; and TCP between TURN server and peer introduces head-of-line blocking.

webrtc, nat, tcp

interoperability-note §3.4

A full ICE implementation (not ICE-Lite) is required to ensure interworking with both ICE and ICE-Lite peers when ICE-Lite peers are deployed appropriately.

webrtc, nat

interoperability-note §4.2

An implementation MAY turn off DSCP markings if it detects symptoms of unexpected behavior such as priority inversion or blocking of packets with certain DSCP values; one detection strategy is to send initial ICE probes with DSCP 0 and then probe each intended DSCP after candidate pair selection.

webrtc, qos, diffserv

normative-requirement §4.2 MUST

A receiving implementation MUST be able to receive media and data in all configurations: fully bundled, fully unbundled, and intermediate bundling configurations.

webrtc, rtp

normative-requirement §4.2 MUST

A sending implementation MUST be able to support fully bundled (all media and data on a single 5-tuple) and fully unbundled (each media stream and data on its own 5-tuple) configurations.

webrtc, rtp

normative-requirement §4.2 MUST

All packets carrying data from the SCTP association supporting data channels MUST use a single DSCP, which SHOULD be the code point recommended by [RFC8837] for the highest-priority data channel carried.

webrtc, qos, diffserv, sctp

normative-requirement §4.2 MUST

All packets on one TCP connection, no matter what it carries, MUST use a single DSCP.

webrtc, qos, diffserv, tcp

normative-requirement §3.4 MUST

ICE [RFC8445] MUST be supported, and the implementation MUST be a full ICE implementation, not ICE-Lite. A full ICE implementation allows interworking with both ICE and ICE-Lite implementations when deployed appropriately.

webrtc, nat

normative-requirement §3.4 MUST

ICE-TCP candidates [RFC6544] MUST be supported; this may allow applications to communicate to peers with public IP addresses across UDP-blocking firewalls without using a TURN server.

webrtc, nat, tcp

normative-requirement §3.4 MUST

If TCP connections are used, RTP framing according to [RFC4571] MUST be used for all packets, including RTP packets, DTLS packets used to carry data channels, and STUN connectivity check packets.

webrtc, rtp, tcp

normative-requirement §4.2 SHOULD

Implementations SHOULD attempt to set QoS DSCP markings on packets sent, according to the guidelines in [RFC8837]; departure is appropriate when running on platforms where QoS marking is not implemented.

webrtc, qos, diffserv

normative-requirement §3.5 MUST

Key exchange MUST be done using DTLS-SRTP, as described in [RFC8827].

webrtc, tls, crypto, security

normative-requirement §3.5 MUST

Protocol identification MUST be supplied as part of the DTLS handshake, as specified in [RFC8833] (ALPN for WebRTC).

webrtc, tls

normative-requirement §3.4 MUST

The ALTERNATE-SERVER mechanism specified in Section 11 of [RFC5389] (300 Try Alternate) MUST be supported.

webrtc, nat

normative-requirement §3.5 MUST

The data channel setup protocol described in [RFC8832] MUST be supported.

webrtc

normative-requirement §3.2 SHOULD

The 'Happy Eyeballs' specification for ICE [RFC8421] SHOULD be supported when TURN is used and the TURN server has IPv4 or IPv6 connectivity.

webrtc, nat, ip

normative-requirement §3.4 MUST

To deal with firewalls that block all UDP traffic, the mode of TURN using TCP between the WebRTC endpoint and the TURN server MUST be supported, and the mode using TLS over TCP MUST also be supported.

webrtc, nat, tls

normative-requirement §3.4 MUST

To deal with IPv4/IPv6 interoperability scenarios, TURN extensions for IPv6 MUST be supported.

webrtc, nat, ip

normative-requirement §3.4 MUST

To deal with NATs that perform endpoint-dependent mapping, TURN [RFC8656] MUST be supported.

webrtc, nat

normative-requirement §3.2 MUST

Web applications running in a WebRTC browser MUST be able to utilize both IPv4 and IPv6 where available; when two peers have only IPv4 or only IPv6 connectivity, applications MUST be able to communicate.

webrtc, ip

normative-requirement §3.4 MUST

WebRTC browsers MUST support configuration of STUN and TURN servers, from both browser configuration and an application.

webrtc, nat

normative-requirement §3.5 MUST

WebRTC endpoints MUST support multiplexing of DTLS and RTP over the same port pair, as described in the DTLS-SRTP specification [RFC5764] Section 5.1.2, with clarifications in [RFC7983].

webrtc, tls, rtp

normative-requirement §3.5 MUST

WebRTC endpoints MUST support SCTP over DTLS over ICE for data channel transport, as specified in [RFC8261]. The SCTP extension for I-DATA [RFC8260] MUST be supported.

webrtc, sctp, tls

normative-requirement §3.3 SHOULD

When a WebRTC endpoint gathers all IPv6 addresses and both nondeprecated temporary addresses and permanent addresses of the same scope are present, it SHOULD discard the permanent addresses before exposing them to the application or using them in ICE.

webrtc, privacy, ip

normative-requirement §4.1 SHOULD

When a WebRTC endpoint sends data over multiple streams congestion-controlled under the same regime, it SHOULD emit data so that each stream at each priority level receives approximately twice the transmission capacity of the level below.

webrtc, congestion, qos

protocol-element §3.5

The data channel transport stack is SCTP over DTLS over ICE (UDP or TCP). All SCTP packets flow as application-layer payloads over the DTLS connection shared with media.

webrtc, sctp, tls

protocol-element §3.1

The required system-provided transport interfaces are UDP [RFC0768] and TCP [RFC0793], both with IPv4 and IPv6 support. For UDP, the ability to set DSCP per-packet is required for media prioritization.

webrtc, udp, tcp, ip

protocol-element §4

The WebRTC prioritization model defines four API-level priority classes for media flows and data flows: 'very-low', 'low', 'medium', and 'high'. A high-priority flow can send 8 times as much data as a very-low-priority flow under congestion.

webrtc, qos

security-consideration §6

WebRTC security considerations are enumerated in [RFC8826] and security considerations pertaining to the use of DSCP are enumerated in [RFC8837]; this document defers to those references rather than restating them.

webrtc, security