draft-ietf-rtcweb-rtp-usage-17.txt   draft-ietf-rtcweb-rtp-usage-18.txt 
RTCWEB Working Group C. S. Perkins RTCWEB Working Group C. S. Perkins
Internet-Draft University of Glasgow Internet-Draft University of Glasgow
Intended status: Standards Track M. Westerlund Intended status: Standards Track M. Westerlund
Expires: February 26, 2015 Ericsson Expires: April 24, 2015 Ericsson
J. Ott J. Ott
Aalto University Aalto University
August 25, 2014 October 21, 2014
Web Real-Time Communication (WebRTC): Media Transport and Use of RTP Web Real-Time Communication (WebRTC): Media Transport and Use of RTP
draft-ietf-rtcweb-rtp-usage-17 draft-ietf-rtcweb-rtp-usage-18
Abstract Abstract
The Web Real-Time Communication (WebRTC) framework provides support The Web Real-Time Communication (WebRTC) framework provides support
for direct interactive rich communication using audio, video, text, for direct interactive rich communication using audio, video, text,
collaboration, games, etc. between two peers' web-browsers. This collaboration, games, etc. between two peers' web-browsers. This
memo describes the media transport aspects of the WebRTC framework. memo describes the media transport aspects of the WebRTC framework.
It specifies how the Real-time Transport Protocol (RTP) is used in It specifies how the Real-time Transport Protocol (RTP) is used in
the WebRTC context, and gives requirements for which RTP features, the WebRTC context, and gives requirements for which RTP features,
profiles, and extensions need to be supported. profiles, and extensions need to be supported.
skipping to change at page 1, line 39 skipping to change at page 1, line 39
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 February 26, 2015. This Internet-Draft will expire on April 24, 2015.
Copyright Notice Copyright Notice
Copyright (c) 2014 IETF Trust and the persons identified as the Copyright (c) 2014 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 3, line 9 skipping to change at page 3, line 9
10. Signalling Considerations . . . . . . . . . . . . . . . . . . 22 10. Signalling Considerations . . . . . . . . . . . . . . . . . . 22
11. WebRTC API Considerations . . . . . . . . . . . . . . . . . . 24 11. WebRTC API Considerations . . . . . . . . . . . . . . . . . . 24
12. RTP Implementation Considerations . . . . . . . . . . . . . . 26 12. RTP Implementation Considerations . . . . . . . . . . . . . . 26
12.1. Configuration and Use of RTP Sessions . . . . . . . . . 26 12.1. Configuration and Use of RTP Sessions . . . . . . . . . 26
12.1.1. Use of Multiple Media Sources Within an RTP Session 26 12.1.1. Use of Multiple Media Sources Within an RTP Session 26
12.1.2. Use of Multiple RTP Sessions . . . . . . . . . . . . 28 12.1.2. Use of Multiple RTP Sessions . . . . . . . . . . . . 28
12.1.3. Differentiated Treatment of RTP Packet Streams . . . 32 12.1.3. Differentiated Treatment of RTP Packet Streams . . . 32
12.2. Media Source, RTP Packet Streams, and Participant 12.2. Media Source, RTP Packet Streams, and Participant
Identification . . . . . . . . . . . . . . . . . . . . . 34 Identification . . . . . . . . . . . . . . . . . . . . . 34
12.2.1. Media Source Identification . . . . . . . . . . . . 34 12.2.1. Media Source Identification . . . . . . . . . . . . 34
12.2.2. SSRC Collision Detection . . . . . . . . . . . . . . 35 12.2.2. SSRC Collision Detection . . . . . . . . . . . . . . 34
12.2.3. Media Synchronisation Context . . . . . . . . . . . 36 12.2.3. Media Synchronisation Context . . . . . . . . . . . 36
13. Security Considerations . . . . . . . . . . . . . . . . . . . 36 13. Security Considerations . . . . . . . . . . . . . . . . . . . 36
14. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 38 14. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 38
15. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 38 15. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 38
16. References . . . . . . . . . . . . . . . . . . . . . . . . . 38 16. References . . . . . . . . . . . . . . . . . . . . . . . . . 38
16.1. Normative References . . . . . . . . . . . . . . . . . . 38 16.1. Normative References . . . . . . . . . . . . . . . . . . 38
16.2. Informative References . . . . . . . . . . . . . . . . . 41 16.2. Informative References . . . . . . . . . . . . . . . . . 41
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 43 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 43
1. Introduction 1. Introduction
skipping to change at page 3, line 33 skipping to change at page 3, line 33
time media applications. Previous work has defined the RTP protocol, time media applications. Previous work has defined the RTP protocol,
along with numerous profiles, payload formats, and other extensions. along with numerous profiles, payload formats, and other extensions.
When combined with appropriate signalling, these form the basis for When combined with appropriate signalling, these form the basis for
many teleconferencing systems. many teleconferencing systems.
The Web Real-Time communication (WebRTC) framework provides the The Web Real-Time communication (WebRTC) framework provides the
protocol building blocks to support direct, interactive, real-time protocol building blocks to support direct, interactive, real-time
communication using audio, video, collaboration, games, etc., between communication using audio, video, collaboration, games, etc., between
two peers' web-browsers. This memo describes how the RTP framework two peers' web-browsers. This memo describes how the RTP framework
is to be used in the WebRTC context. It proposes a baseline set of is to be used in the WebRTC context. It proposes a baseline set of
RTP features that are to be implemented by all WebRTC-aware end- RTP features that are to be implemented by all WebRTC Endpoints,
points, along with suggested extensions for enhanced functionality. along with suggested extensions for enhanced functionality.
This memo specifies a protocol intended for use within the WebRTC This memo specifies a protocol intended for use within the WebRTC
framework, but is not restricted to that context. An overview of the framework, but is not restricted to that context. An overview of the
WebRTC framework is given in [I-D.ietf-rtcweb-overview]. WebRTC framework is given in [I-D.ietf-rtcweb-overview].
The structure of this memo is as follows. Section 2 outlines our The structure of this memo is as follows. Section 2 outlines our
rationale in preparing this memo and choosing these RTP features. rationale in preparing this memo and choosing these RTP features.
Section 3 defines terminology. Requirements for core RTP protocols Section 3 defines terminology. Requirements for core RTP protocols
are described in Section 4 and suggested RTP extensions are described are described in Section 4 and suggested RTP extensions are described
in Section 5. Section 6 outlines mechanisms that can increase in Section 5. Section 6 outlines mechanisms that can increase
robustness to network problems, while Section 7 describes congestion robustness to network problems, while Section 7 describes congestion
control and rate adaptation mechanisms. The discussion of mandated control and rate adaptation mechanisms. The discussion of mandated
RTP mechanisms concludes in Section 8 with a review of performance RTP mechanisms concludes in Section 8 with a review of performance
monitoring and network management tools that can be used in the monitoring and network management tools. Section 9 gives some
WebRTC context. Section 9 gives some guidelines for future guidelines for future incorporation of other RTP and RTP Control
incorporation of other RTP and RTP Control Protocol (RTCP) extensions Protocol (RTCP) extensions into this framework. Section 10 describes
into this framework. Section 10 describes requirements placed on the requirements placed on the signalling channel. Section 11 discusses
signalling channel. Section 11 discusses the relationship between the relationship between features of the RTP framework and the WebRTC
features of the RTP framework and the WebRTC application programming application programming interface (API), and Section 12 discusses RTP
interface (API), and Section 12 discusses RTP implementation implementation considerations. The memo concludes with security
considerations. The memo concludes with security considerations considerations (Section 13) and IANA considerations (Section 14).
(Section 13) and IANA considerations (Section 14).
2. Rationale 2. Rationale
The RTP framework comprises the RTP data transfer protocol, the RTP The RTP framework comprises the RTP data transfer protocol, the RTP
control protocol, and numerous RTP payload formats, profiles, and control protocol, and numerous RTP payload formats, profiles, and
extensions. This range of add-ons has allowed RTP to meet various extensions. This range of add-ons has allowed RTP to meet various
needs that were not envisaged by the original protocol designers, and needs that were not envisaged by the original protocol designers, and
to support many new media encodings, but raises the question of what to support many new media encodings, but raises the question of what
extensions are to be supported by new implementations. The extensions are to be supported by new implementations. The
development of the WebRTC framework provides an opportunity to review development of the WebRTC framework provides an opportunity to review
the available RTP features and extensions, and to define a common the available RTP features and extensions, and to define a common
baseline feature set for all WebRTC implementations of RTP. This baseline RTP feature set for all WebRTC Endpoints. This builds on
builds on the past 20 years development of RTP to mandate the use of the past 20 years development of RTP to mandate the use of extensions
extensions that have shown widespread utility, while still remaining that have shown widespread utility, while still remaining compatible
compatible with the wide installed base of RTP implementations where with the wide installed base of RTP implementations where possible.
possible.
RTP and RTCP extensions that are not discussed in this document can RTP and RTCP extensions that are not discussed in this document can
be implemented by WebRTC end-points if they are beneficial for new be implemented by WebRTC Endpoints if they are beneficial for new use
use cases. However, they are not necessary to address the WebRTC use cases. However, they are not necessary to address the WebRTC use
cases and requirements identified in cases and requirements identified in
[I-D.ietf-rtcweb-use-cases-and-requirements]. [I-D.ietf-rtcweb-use-cases-and-requirements].
While the baseline set of RTP features and extensions defined in this While the baseline set of RTP features and extensions defined in this
memo is targeted at the requirements of the WebRTC framework, it is memo is targeted at the requirements of the WebRTC framework, it is
expected to be broadly useful for other conferencing-related uses of expected to be broadly useful for other conferencing-related uses of
RTP. In particular, it is likely that this set of RTP features and RTP. In particular, it is likely that this set of RTP features and
extensions will be appropriate for other desktop or mobile video extensions will be appropriate for other desktop or mobile video
conferencing systems, or for room-based high-quality telepresence conferencing systems, or for room-based high-quality telepresence
applications. applications.
skipping to change at page 5, line 21 skipping to change at page 5, line 18
and transport protocol used. and transport protocol used.
Bi-directional Transport-layer Flow: A bi-directional transport- Bi-directional Transport-layer Flow: A bi-directional transport-
layer flow is a transport-layer flow that is symmetric. That is, layer flow is a transport-layer flow that is symmetric. That is,
the transport-layer flow in the reverse direction has a 5-tuple the transport-layer flow in the reverse direction has a 5-tuple
where the source and destination address and ports are swapped where the source and destination address and ports are swapped
compared to the forward path transport-layer flow, and the compared to the forward path transport-layer flow, and the
transport protocol is the same. transport protocol is the same.
This document uses the terminology from This document uses the terminology from
[I-D.ietf-avtext-rtp-grouping-taxonomy]. Other terms are used [I-D.ietf-avtext-rtp-grouping-taxonomy] and
according to their definitions from the RTP Specification [RFC3550]. [I-D.ietf-rtcweb-overview]. Other terms are used according to their
Especially note the following frequently used terms: RTP Packet definitions from the RTP Specification [RFC3550]. Especially note
Stream, RTP Session, and End-point. the following frequently used terms: RTP Packet Stream, RTP Session,
and End-point.
4. WebRTC Use of RTP: Core Protocols 4. WebRTC Use of RTP: Core Protocols
The following sections describe the core features of RTP and RTCP The following sections describe the core features of RTP and RTCP
that need to be implemented, along with the mandated RTP profiles. that need to be implemented, along with the mandated RTP profiles.
Also described are the core extensions providing essential features Also described are the core extensions providing essential features
that all WebRTC implementations need to implement to function that all WebRTC Endpoints need to implement to function effectively
effectively on today's networks. on today's networks.
4.1. RTP and RTCP 4.1. RTP and RTCP
The Real-time Transport Protocol (RTP) [RFC3550] is REQUIRED to be The Real-time Transport Protocol (RTP) [RFC3550] is REQUIRED to be
implemented as the media transport protocol for WebRTC. RTP itself implemented as the media transport protocol for WebRTC. RTP itself
comprises two parts: the RTP data transfer protocol, and the RTP comprises two parts: the RTP data transfer protocol, and the RTP
control protocol (RTCP). RTCP is a fundamental and integral part of control protocol (RTCP). RTCP is a fundamental and integral part of
RTP, and MUST be implemented and used in all WebRTC applications. RTP, and MUST be implemented and used in all WebRTC Endpoints.
The following RTP and RTCP features are sometimes omitted in limited The following RTP and RTCP features are sometimes omitted in limited
functionality implementations of RTP, but are REQUIRED in all WebRTC functionality implementations of RTP, but are REQUIRED in all WebRTC
implementations: Endpoints:
o Support for use of multiple simultaneous SSRC values in a single o Support for use of multiple simultaneous SSRC values in a single
RTP session, including support for RTP end-points that send many RTP session, including support for RTP end-points that send many
SSRC values simultaneously, following [RFC3550] and SSRC values simultaneously, following [RFC3550] and
[I-D.ietf-avtcore-rtp-multi-stream]. The RTCP optimisations for [I-D.ietf-avtcore-rtp-multi-stream]. The RTCP optimisations for
multi-SSRC sessions defined in multi-SSRC sessions defined in
[I-D.ietf-avtcore-rtp-multi-stream-optimisation] MAY be supported; [I-D.ietf-avtcore-rtp-multi-stream-optimisation] MAY be supported;
if supported the usage MUST be signalled. if supported the usage MUST be signalled.
o Random choice of SSRC on joining a session; collision detection o Random choice of SSRC on joining a session; collision detection
skipping to change at page 8, line 16 skipping to change at page 8, line 16
profile is backwards compatible with legacy systems that implement profile is backwards compatible with legacy systems that implement
only the RTP/AVP or RTP/SAVP profile, given some constraints on only the RTP/AVP or RTP/SAVP profile, given some constraints on
parameter configuration such as the RTCP bandwidth value and "trr- parameter configuration such as the RTCP bandwidth value and "trr-
int" (the most important factor for interworking with RTP/(S)AVP int" (the most important factor for interworking with RTP/(S)AVP
end-points via a gateway is to set the trr-int parameter to a end-points via a gateway is to set the trr-int parameter to a
value representing 4 seconds, see Section 6.1 in value representing 4 seconds, see Section 6.1 in
[I-D.ietf-avtcore-rtp-multi-stream]). [I-D.ietf-avtcore-rtp-multi-stream]).
The secure RTP (SRTP) profile extensions [RFC3711] are needed to The secure RTP (SRTP) profile extensions [RFC3711] are needed to
provide media encryption, integrity protection, replay protection and provide media encryption, integrity protection, replay protection and
a limited form of source authentication. WebRTC implementations MUST a limited form of source authentication. WebRTC Endpoints MUST NOT
NOT send packets using the basic RTP/AVP profile or the RTP/AVPF send packets using the basic RTP/AVP profile or the RTP/AVPF profile;
profile; they MUST employ the full RTP/SAVPF profile to protect all they MUST employ the full RTP/SAVPF profile to protect all RTP and
RTP and RTCP packets that are generated (i.e., implementations MUST RTCP packets that are generated (i.e., implementations MUST use SRTP
use SRTP and SRTCP). The RTP/SAVPF profile MUST be configured using and SRTCP). The RTP/SAVPF profile MUST be configured using the
the cipher suites, DTLS-SRTP protection profiles, keying mechanisms, cipher suites, DTLS-SRTP protection profiles, keying mechanisms, and
and other parameters described in [I-D.ietf-rtcweb-security-arch]. other parameters described in [I-D.ietf-rtcweb-security-arch].
4.3. Choice of RTP Payload Formats 4.3. Choice of RTP Payload Formats
The set of mandatory to implement codecs and RTP payload formats for The set of mandatory to implement codecs and RTP payload formats for
WebRTC is not specified in this memo, instead they are defined in WebRTC is not specified in this memo, instead they are defined in
separate specifications, such as [I-D.ietf-rtcweb-audio]. separate specifications, such as [I-D.ietf-rtcweb-audio].
Implementations can support any codec for which an RTP payload format Implementations can support any codec for which an RTP payload format
and associated signalling is defined. Implementation cannot assume and associated signalling is defined. Implementation cannot assume
that the other participants in an RTP session understand any RTP that the other participants in an RTP session understand any RTP
payload format, no matter how common; the mapping between RTP payload payload format, no matter how common; the mapping between RTP payload
skipping to change at page 9, line 52 skipping to change at page 9, line 52
the case where senders use only a single clock rate). the case where senders use only a single clock rate).
4.4. Use of RTP Sessions 4.4. Use of RTP Sessions
An association amongst a set of end-points communicating using RTP is An association amongst a set of end-points communicating using RTP is
known as an RTP session [RFC3550]. An end-point can be involved in known as an RTP session [RFC3550]. An end-point can be involved in
several RTP sessions at the same time. In a multimedia session, each several RTP sessions at the same time. In a multimedia session, each
type of media has typically been carried in a separate RTP session type of media has typically been carried in a separate RTP session
(e.g., using one RTP session for the audio, and a separate RTP (e.g., using one RTP session for the audio, and a separate RTP
session using a different transport-layer flow for the video). session using a different transport-layer flow for the video).
WebRTC implementations of RTP are REQUIRED to implement support for WebRTC Endpoints are REQUIRED to implement support for multimedia
multimedia sessions in this way, separating each session using sessions in this way, separating each RTP session using different
different transport-layer flows for compatibility with legacy transport-layer flows for compatibility with legacy systems.
systems.
In modern day networks, however, with the widespread use of network In modern day networks, however, with the widespread use of network
address/port translators (NAT/NAPT) and firewalls, it is desirable to address/port translators (NAT/NAPT) and firewalls, it is desirable to
reduce the number of transport-layer flows used by RTP applications. reduce the number of transport-layer flows used by RTP applications.
This can be done by sending all the RTP packet streams in a single This can be done by sending all the RTP packet streams in a single
RTP session, which will comprise a single transport-layer flow (this RTP session, which will comprise a single transport-layer flow (this
will prevent the use of some quality-of-service mechanisms, as will prevent the use of some quality-of-service mechanisms, as
discussed in Section 12.1.3). Implementations are therefore also discussed in Section 12.1.3). Implementations are therefore also
REQUIRED to support transport of all RTP packet streams, independent REQUIRED to support transport of all RTP packet streams, independent
of media type, in a single RTP session using a single transport layer of media type, in a single RTP session using a single transport layer
skipping to change at page 12, line 44 skipping to change at page 12, line 44
Each RTP end-point MUST have at least one RTCP CNAME, and that RTCP Each RTP end-point MUST have at least one RTCP CNAME, and that RTCP
CNAME MUST be unique within the RTCPeerConnection. RTCP CNAMEs CNAME MUST be unique within the RTCPeerConnection. RTCP CNAMEs
identify a particular synchronisation context, i.e., all SSRCs identify a particular synchronisation context, i.e., all SSRCs
associated with a single RTCP CNAME share a common reference clock. associated with a single RTCP CNAME share a common reference clock.
If an end-point has SSRCs that are associated with several If an end-point has SSRCs that are associated with several
unsynchronised reference clocks, and hence different synchronisation unsynchronised reference clocks, and hence different synchronisation
contexts, it will need to use multiple RTCP CNAMEs, one for each contexts, it will need to use multiple RTCP CNAMEs, one for each
synchronisation context. synchronisation context.
Taking the discussion in Section 11 into account, a WebRTC end-point Taking the discussion in Section 11 into account, a WebRTC Endpoint
MUST NOT use more than one RTCP CNAME in the RTP sessions belonging MUST NOT use more than one RTCP CNAME in the RTP sessions belonging
to single RTCPeerConnection (that is, an RTCPeerConnection forms a to single RTCPeerConnection (that is, an RTCPeerConnection forms a
synchronisation context). RTP middleboxes MAY generate RTP packet synchronisation context). RTP middleboxes MAY generate RTP packet
streams associated with more than one RTCP CNAME, to allow them to streams associated with more than one RTCP CNAME, to allow them to
avoid having to resynchronize media from multiple different end- avoid having to resynchronize media from multiple different end-
points part of a multi-party RTP session. points part of a multi-party RTP session.
The RTP specification [RFC3550] includes guidelines for choosing a The RTP specification [RFC3550] includes guidelines for choosing a
unique RTP CNAME, but these are not sufficient in the presence of NAT unique RTP CNAME, but these are not sufficient in the presence of NAT
devices. In addition, long-term persistent identifiers can be devices. In addition, long-term persistent identifiers can be
problematic from a privacy viewpoint (Section 13). Accordingly, a problematic from a privacy viewpoint (Section 13). Accordingly, a
WebRTC endpoint MUST generate a new, unique, short-term persistent WebRTC Endpoint MUST generate a new, unique, short-term persistent
RTCP CNAME for each RTCPeerConnection, following [RFC7022], with a RTCP CNAME for each RTCPeerConnection, following [RFC7022], with a
single exception; if explicitly requested at creation an single exception; if explicitly requested at creation an
RTCPeerConnection MAY use the same CNAME as as an existing RTCPeerConnection MAY use the same CNAME as as an existing
RTCPeerConnection within their common same-origin context. RTCPeerConnection within their common same-origin context.
An WebRTC end-point MUST support reception of any CNAME that matches An WebRTC Endpoint MUST support reception of any CNAME that matches
the syntax limitations specified by the RTP specification [RFC3550] the syntax limitations specified by the RTP specification [RFC3550]
and cannot assume that any CNAME will be chosen according to the form and cannot assume that any CNAME will be chosen according to the form
suggested above. suggested above.
4.10. Handling of Leap Seconds 4.10. Handling of Leap Seconds
The guidelines regarding handling of leap seconds to limit their The guidelines regarding handling of leap seconds to limit their
impact on RTP media play-out and synchronization given in [RFC7164] impact on RTP media play-out and synchronization given in [RFC7164]
SHOULD be followed. SHOULD be followed.
5. WebRTC Use of RTP: Extensions 5. WebRTC Use of RTP: Extensions
There are a number of RTP extensions that are either needed to obtain There are a number of RTP extensions that are either needed to obtain
full functionality, or extremely useful to improve on the baseline full functionality, or extremely useful to improve on the baseline
performance, in the WebRTC application context. One set of these performance, in the WebRTC context. One set of these extensions is
extensions is related to conferencing, while others are more generic related to conferencing, while others are more generic in nature.
in nature. The following subsections describe the various RTP The following subsections describe the various RTP extensions
extensions mandated or suggested for use within the WebRTC context. mandated or suggested for use within WebRTC.
5.1. Conferencing Extensions and Topologies 5.1. Conferencing Extensions and Topologies
RTP is a protocol that inherently supports group communication. RTP is a protocol that inherently supports group communication.
Groups can be implemented by having each endpoint send its RTP packet Groups can be implemented by having each endpoint send its RTP packet
streams to an RTP middlebox that redistributes the traffic, by using streams to an RTP middlebox that redistributes the traffic, by using
a mesh of unicast RTP packet streams between endpoints, or by using a mesh of unicast RTP packet streams between endpoints, or by using
an IP multicast group to distribute the RTP packet streams. These an IP multicast group to distribute the RTP packet streams. These
topologies can be implemented in a number of ways as discussed in topologies can be implemented in a number of ways as discussed in
[I-D.ietf-avtcore-rtp-topologies-update]. [I-D.ietf-avtcore-rtp-topologies-update].
While the use of IP multicast groups is popular in IPTV systems, the While the use of IP multicast groups is popular in IPTV systems, the
topologies based on RTP middleboxes are dominant in interactive video topologies based on RTP middleboxes are dominant in interactive video
conferencing environments. Topologies based on a mesh of unicast conferencing environments. Topologies based on a mesh of unicast
transport-layer flows to create a common RTP session have not seen transport-layer flows to create a common RTP session have not seen
widespread deployment to date. Accordingly, WebRTC implementations widespread deployment to date. Accordingly, WebRTC Endpoints are not
are not expected to support topologies based on IP multicast groups expected to support topologies based on IP multicast groups or to
or to support mesh-based topologies, such as a point-to-multipoint support mesh-based topologies, such as a point-to-multipoint mesh
mesh configured as a single RTP session (Topo-Mesh in the terminology configured as a single RTP session (Topo-Mesh in the terminology of
of [I-D.ietf-avtcore-rtp-topologies-update]). However, a point-to- [I-D.ietf-avtcore-rtp-topologies-update]). However, a point-to-
multipoint mesh constructed using several RTP sessions, implemented multipoint mesh constructed using several RTP sessions, implemented
in the WebRTC context using independent RTCPeerConnections in WebRTC using independent RTCPeerConnections
[W3C.WD-webrtc-20130910], can be expected to be utilised by WebRTC [W3C.WD-webrtc-20130910], can be expected to be used in WebRTC, and
applications and needs to be supported. needs to be supported.
WebRTC implementations of RTP endpoints implemented according to this WebRTC Endpoints implemented according to this memo are expected to
memo are expected to support all the topologies described in support all the topologies described in
[I-D.ietf-avtcore-rtp-topologies-update] where the RTP endpoints send [I-D.ietf-avtcore-rtp-topologies-update] where the RTP endpoints send
and receive unicast RTP packet streams to and from some peer device, and receive unicast RTP packet streams to and from some peer device,
provided that peer can participate in performing congestion control provided that peer can participate in performing congestion control
on the RTP packet streams. The peer device could be another RTP on the RTP packet streams. The peer device could be another RTP
endpoint, or it could be an RTP middlebox that redistributes the RTP endpoint, or it could be an RTP middlebox that redistributes the RTP
packet streams to other RTP endpoints. This limitation means that packet streams to other RTP endpoints. This limitation means that
some of the RTP middlebox-based topologies are not suitable for use some of the RTP middlebox-based topologies are not suitable for use
in the WebRTC environment. Specifically: in WebRTC. Specifically:
o Video switching MCUs (Topo-Video-switch-MCU) SHOULD NOT be used, o Video switching MCUs (Topo-Video-switch-MCU) SHOULD NOT be used,
since they make the use of RTCP for congestion control and quality since they make the use of RTCP for congestion control and quality
of service reports problematic (see Section 3.8 of of service reports problematic (see Section 3.8 of
[I-D.ietf-avtcore-rtp-topologies-update]). [I-D.ietf-avtcore-rtp-topologies-update]).
o The Relay-Transport Translator (Topo-PtM-Trn-Translator) topology o The Relay-Transport Translator (Topo-PtM-Trn-Translator) topology
SHOULD NOT be used because its safe use requires a congestion SHOULD NOT be used because its safe use requires a congestion
control algorithm or RTP circuit breaker that handles point to control algorithm or RTP circuit breaker that handles point to
multipoint, which has not yet been standardised. multipoint, which has not yet been standardised.
skipping to change at page 14, line 51 skipping to change at page 14, line 51
The RTP extensions described in Section 5.1.1 to Section 5.1.6 are The RTP extensions described in Section 5.1.1 to Section 5.1.6 are
designed to be used with centralised conferencing, where an RTP designed to be used with centralised conferencing, where an RTP
middlebox (e.g., a conference bridge) receives a participant's RTP middlebox (e.g., a conference bridge) receives a participant's RTP
packet streams and distributes them to the other participants. These packet streams and distributes them to the other participants. These
extensions are not necessary for interoperability; an RTP end-point extensions are not necessary for interoperability; an RTP end-point
that does not implement these extensions will work correctly, but that does not implement these extensions will work correctly, but
might offer poor performance. Support for the listed extensions will might offer poor performance. Support for the listed extensions will
greatly improve the quality of experience and, to provide a greatly improve the quality of experience and, to provide a
reasonable baseline quality, some of these extensions are mandatory reasonable baseline quality, some of these extensions are mandatory
to be supported by WebRTC end-points. to be supported by WebRTC Endpoints.
The RTCP conferencing extensions are defined in Extended RTP Profile The RTCP conferencing extensions are defined in Extended RTP Profile
for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/ for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/
AVPF) [RFC4585] and the memo on Codec Control Messages (CCM) in RTP/ AVPF) [RFC4585] and the memo on Codec Control Messages (CCM) in RTP/
AVPF [RFC5104]; they are fully usable by the Secure variant of this AVPF [RFC5104]; they are fully usable by the Secure variant of this
profile (RTP/SAVPF) [RFC5124]. profile (RTP/SAVPF) [RFC5124].
5.1.1. Full Intra Request (FIR) 5.1.1. Full Intra Request (FIR)
The Full Intra Request message is defined in Sections 3.5.1 and 4.3.1 The Full Intra Request message is defined in Sections 3.5.1 and 4.3.1
of the Codec Control Messages [RFC5104]. It is used to make the of the Codec Control Messages [RFC5104]. It is used to make the
mixer request a new Intra picture from a participant in the session. mixer request a new Intra picture from a participant in the session.
This is used when switching between sources to ensure that the This is used when switching between sources to ensure that the
receivers can decode the video or other predictive media encoding receivers can decode the video or other predictive media encoding
with long prediction chains. WebRTC senders MUST understand and with long prediction chains. WebRTC Endpoints that are sending media
react to FIR feedback messages they receive, since this greatly MUST understand and react to FIR feedback messages they receive,
improves the user experience when using centralised mixer-based since this greatly improves the user experience when using
conferencing. Support for sending FIR messages is OPTIONAL. centralised mixer-based conferencing. Support for sending FIR
messages is OPTIONAL.
5.1.2. Picture Loss Indication (PLI) 5.1.2. Picture Loss Indication (PLI)
The Picture Loss Indication message is defined in Section 6.3.1 of The Picture Loss Indication message is defined in Section 6.3.1 of
the RTP/AVPF profile [RFC4585]. It is used by a receiver to tell the the RTP/AVPF profile [RFC4585]. It is used by a receiver to tell the
sending encoder that it lost the decoder context and would like to sending encoder that it lost the decoder context and would like to
have it repaired somehow. This is semantically different from the have it repaired somehow. This is semantically different from the
Full Intra Request above as there could be multiple ways to fulfil Full Intra Request above as there could be multiple ways to fulfil
the request. WebRTC senders MUST understand and react to PLI the request. WebRTC Endpoints that are sending media MUST understand
feedback messages as a loss tolerance mechanism. Receivers MAY send and react to PLI feedback messages as a loss tolerance mechanism.
PLI messages. Receivers MAY send PLI messages.
5.1.3. Slice Loss Indication (SLI) 5.1.3. Slice Loss Indication (SLI)
The Slice Loss Indication message is defined in Section 6.3.2 of the The Slice Loss Indication message is defined in Section 6.3.2 of the
RTP/AVPF profile [RFC4585]. It is used by a receiver to tell the RTP/AVPF profile [RFC4585]. It is used by a receiver to tell the
encoder that it has detected the loss or corruption of one or more encoder that it has detected the loss or corruption of one or more
consecutive macro blocks, and would like to have these repaired consecutive macro blocks, and would like to have these repaired
somehow. It is RECOMMENDED that receivers generate SLI feedback somehow. It is RECOMMENDED that receivers generate SLI feedback
messages if slices are lost when using a codec that supports the messages if slices are lost when using a codec that supports the
concept of macro blocks. A sender that receives an SLI feedback concept of macro blocks. A sender that receives an SLI feedback
skipping to change at page 16, line 31 skipping to change at page 16, line 32
5.1.6. Temporary Maximum Media Stream Bit Rate Request (TMMBR) 5.1.6. Temporary Maximum Media Stream Bit Rate Request (TMMBR)
The TMMBR feedback message is defined in Sections 3.5.4 and 4.2.1 of The TMMBR feedback message is defined in Sections 3.5.4 and 4.2.1 of
the Codec Control Messages [RFC5104]. This request and its the Codec Control Messages [RFC5104]. This request and its
notification message are used by a media receiver to inform the notification message are used by a media receiver to inform the
sending party that there is a current limitation on the amount of sending party that there is a current limitation on the amount of
bandwidth available to this receiver. This can be various reasons bandwidth available to this receiver. This can be various reasons
for this: for example, an RTP mixer can use this message to limit the for this: for example, an RTP mixer can use this message to limit the
media rate of the sender being forwarded by the mixer (without doing media rate of the sender being forwarded by the mixer (without doing
media transcoding) to fit the bottlenecks existing towards the other media transcoding) to fit the bottlenecks existing towards the other
session participants. WebRTC senders are REQUIRED to implement session participants. WebRTC Endpoints that are sending media are
support for TMMBR messages, and MUST follow bandwidth limitations set REQUIRED to implement support for TMMBR messages, and MUST follow
by a TMMBR message received for their SSRC. The sending of TMMBR bandwidth limitations set by a TMMBR message received for their SSRC.
requests is OPTIONAL. The sending of TMMBR requests is OPTIONAL.
5.2. Header Extensions 5.2. Header Extensions
The RTP specification [RFC3550] provides the capability to include The RTP specification [RFC3550] provides the capability to include
RTP header extensions containing in-band data, but the format and RTP header extensions containing in-band data, but the format and
semantics of the extensions are poorly specified. The use of header semantics of the extensions are poorly specified. The use of header
extensions is OPTIONAL in the WebRTC context, but if they are used, extensions is OPTIONAL in WebRTC, but if they are used, they MUST be
they MUST be formatted and signalled following the general mechanism formatted and signalled following the general mechanism for RTP
for RTP header extensions defined in [RFC5285], since this gives header extensions defined in [RFC5285], since this gives well-defined
well-defined semantics to RTP header extensions. semantics to RTP header extensions.
As noted in [RFC5285], the requirement from the RTP specification As noted in [RFC5285], the requirement from the RTP specification
that header extensions are "designed so that the header extension may that header extensions are "designed so that the header extension may
be ignored" [RFC3550] stands. To be specific, header extensions MUST be ignored" [RFC3550] stands. To be specific, header extensions MUST
only be used for data that can safely be ignored by the recipient only be used for data that can safely be ignored by the recipient
without affecting interoperability, and MUST NOT be used when the without affecting interoperability, and MUST NOT be used when the
presence of the extension has changed the form or nature of the rest presence of the extension has changed the form or nature of the rest
of the packet in a way that is not compatible with the way the stream of the packet in a way that is not compatible with the way the stream
is signalled (e.g., as defined by the payload type). Valid examples is signalled (e.g., as defined by the payload type). Valid examples
of RTP header extensions might include metadata that is additional to of RTP header extensions might include metadata that is additional to
skipping to change at page 19, line 38 skipping to change at page 19, line 39
respective parameters. respective parameters.
If an RTP payload format negotiated for use in a RTCPeerConnection If an RTP payload format negotiated for use in a RTCPeerConnection
supports redundant transmission or FEC as a standard feature of that supports redundant transmission or FEC as a standard feature of that
payload format, then that support MAY be used in the payload format, then that support MAY be used in the
RTCPeerConnection, subject to any appropriate signalling. RTCPeerConnection, subject to any appropriate signalling.
There are several block-based FEC schemes that are designed for use There are several block-based FEC schemes that are designed for use
with RTP independent of the chosen RTP payload format. At the time with RTP independent of the chosen RTP payload format. At the time
of this writing there is no consensus on which, if any, of these FEC of this writing there is no consensus on which, if any, of these FEC
schemes is appropriate for use in the WebRTC context. Accordingly, schemes is appropriate for use in WebRTC. Accordingly, this memo
this memo makes no recommendation on the choice of block-based FEC makes no recommendation on the choice of block-based FEC for WebRTC
for WebRTC use. use.
7. WebRTC Use of RTP: Rate Control and Media Adaptation 7. WebRTC Use of RTP: Rate Control and Media Adaptation
WebRTC will be used in heterogeneous network environments using a WebRTC will be used in heterogeneous network environments using a
variety set of link technologies, including both wired and wireless variety set of link technologies, including both wired and wireless
links, to interconnect potentially large groups of users around the links, to interconnect potentially large groups of users around the
world. As a result, the network paths between users can have widely world. As a result, the network paths between users can have widely
varying one-way delays, available bit-rates, load levels, and traffic varying one-way delays, available bit-rates, load levels, and traffic
mixtures. Individual end-points can send one or more RTP packet mixtures. Individual end-points can send one or more RTP packet
streams to each participant in a WebRTC conference, and there can be streams to each participant, and there can be several participants.
several participants. Each of these RTP packet streams can contain
different types of media, and the type of media, bit rate, and number
of RTP packet streams as well as transport-layer flows can be highly
asymmetric. Non-RTP traffic can share the network paths with RTP
transport-layer flows. Since the network environment is not
predictable or stable, WebRTC end-points MUST ensure that the RTP
traffic they generate can adapt to match changes in the available
network capacity.
The quality of experience for users of WebRTC implementation is very Each of these RTP packet streams can contain different types of
dependent on effective adaptation of the media to the limitations of media, and the type of media, bit rate, and number of RTP packet
the network. End-points have to be designed so they do not transmit streams as well as transport-layer flows can be highly asymmetric.
significantly more data than the network path can support, except for Non-RTP traffic can share the network paths with RTP transport-layer
very short time periods, otherwise high levels of network packet loss flows. Since the network environment is not predictable or stable,
or delay spikes will occur, causing media quality degradation. The WebRTC Endpoints MUST ensure that the RTP traffic they generate can
limiting factor on the capacity of the network path might be the link adapt to match changes in the available network capacity.
The quality of experience for users of WebRTC is very dependent on
effective adaptation of the media to the limitations of the network.
End-points have to be designed so they do not transmit significantly
more data than the network path can support, except for very short
time periods, otherwise high levels of network packet loss or delay
spikes will occur, causing media quality degradation. The limiting
factor on the capacity of the network path might be the link
bandwidth, or it might be competition with other traffic on the link bandwidth, or it might be competition with other traffic on the link
(this can be non-WebRTC traffic, traffic due to other WebRTC flows, (this can be non-WebRTC traffic, traffic due to other WebRTC flows,
or even competition with other WebRTC flows in the same session). or even competition with other WebRTC flows in the same session).
An effective media congestion control algorithm is therefore an An effective media congestion control algorithm is therefore an
essential part of the WebRTC framework. However, at the time of this essential part of the WebRTC framework. However, at the time of this
writing, there is no standard congestion control algorithm that can writing, there is no standard congestion control algorithm that can
be used for interactive media applications such as WebRTC's flows. be used for interactive media applications such as WebRTC's flows.
Some requirements for congestion control algorithms for Some requirements for congestion control algorithms for
RTCPeerConnections are discussed in [I-D.ietf-rmcat-cc-requirements]. RTCPeerConnections are discussed in [I-D.ietf-rmcat-cc-requirements].
A future version of this memo will mandate the use of a congestion A future version of this memo will mandate the use of a congestion
control algorithm that satisfies these requirements. control algorithm that satisfies these requirements.
7.1. Boundary Conditions and Circuit Breakers 7.1. Boundary Conditions and Circuit Breakers
WebRTC implementations MUST implement the RTP circuit breaker WebRTC Endpoints MUST implement the RTP circuit breaker algorithm
algorithm that is described in that is described in [I-D.ietf-avtcore-rtp-circuit-breakers]. The
[I-D.ietf-avtcore-rtp-circuit-breakers]. The RTP circuit breaker is RTP circuit breaker is designed to enable applications to recognise
designed to enable applications to recognise and react to situations and react to situations of extreme network congestion. However,
of extreme network congestion. However, since the RTP circuit since the RTP circuit breaker might not be triggered until congestion
breaker might not be triggered until congestion becomes extreme, it becomes extreme, it cannot be considered a substitute for congestion
cannot be considered a substitute for congestion control, and control, and applications MUST also implement congestion control to
applications MUST also implement congestion control to allow them to allow them to adapt to changes in network capacity. Any future RTP
adapt to changes in network capacity. Any future RTP congestion congestion control algorithms are expected to operate within the
control algorithms are expected to operate within the envelope envelope allowed by the circuit breaker.
allowed by the circuit breaker.
The session establishment signalling will also necessarily establish The session establishment signalling will also necessarily establish
boundaries to which the media bit-rate will conform. The choice of boundaries to which the media bit-rate will conform. The choice of
media codecs provides upper- and lower-bounds on the supported bit- media codecs provides upper- and lower-bounds on the supported bit-
rates that the application can utilise to provide useful quality, and rates that the application can utilise to provide useful quality, and
the packetisation choices that exist. In addition, the signalling the packetisation choices that exist. In addition, the signalling
channel can establish maximum media bit-rate boundaries using, for channel can establish maximum media bit-rate boundaries using, for
example, the SDP "b=AS:" or "b=CT:" lines and the RTP/AVPF Temporary example, the SDP "b=AS:" or "b=CT:" lines and the RTP/AVPF Temporary
Maximum Media Stream Bit Rate (TMMBR) Requests (see Section 5.1.6 of Maximum Media Stream Bit Rate (TMMBR) Requests (see Section 5.1.6 of
this memo). Signalled bandwidth limitations, such as SDP "b=AS:" or this memo). Signalled bandwidth limitations, such as SDP "b=AS:" or
"b=CT:" lines received from the peer, MUST be followed when sending "b=CT:" lines received from the peer, MUST be followed when sending
RTP packet streams. A WebRTC endpoint receiving media SHOULD signal RTP packet streams. A WebRTC Endpoint receiving media SHOULD signal
its bandwidth limitations, these limitations have to be based on its bandwidth limitations, these limitations have to be based on
known bandwidth limitations, for example the capacity of the edge known bandwidth limitations, for example the capacity of the edge
links. links.
7.2. Congestion Control Interoperability and Legacy Systems 7.2. Congestion Control Interoperability and Legacy Systems
There are legacy RTP implementations that do not implement RTCP, and There are legacy RTP implementations that do not implement RTCP, and
hence do not provide any congestion feedback. Congestion control hence do not provide any congestion feedback. Congestion control
cannot be performed with these end-points. WebRTC implementations cannot be performed with these end-points. WebRTC Endpoints that
that need to interwork with such end-points MUST limit their need to interwork with such end-points MUST limit their transmission
transmission to a low rate, equivalent to a VoIP call using a low to a low rate, equivalent to a VoIP call using a low bandwidth codec,
bandwidth codec, that is unlikely to cause any significant that is unlikely to cause any significant congestion.
congestion.
When interworking with legacy implementations that support RTCP using When interworking with legacy implementations that support RTCP using
the RTP/AVP profile [RFC3551], congestion feedback is provided in the RTP/AVP profile [RFC3551], congestion feedback is provided in
RTCP RR packets every few seconds. Implementations that have to RTCP RR packets every few seconds. Implementations that have to
interwork with such end-points MUST ensure that they keep within the interwork with such end-points MUST ensure that they keep within the
RTP circuit breaker [I-D.ietf-avtcore-rtp-circuit-breakers] RTP circuit breaker [I-D.ietf-avtcore-rtp-circuit-breakers]
constraints to limit the congestion they can cause. constraints to limit the congestion they can cause.
If a legacy end-point supports RTP/AVPF, this enables negotiation of If a legacy end-point supports RTP/AVPF, this enables negotiation of
important parameters for frequent reporting, such as the "trr-int" important parameters for frequent reporting, such as the "trr-int"
skipping to change at page 22, line 20 skipping to change at page 22, line 18
As described in Section 4.1, implementations are REQUIRED to generate As described in Section 4.1, implementations are REQUIRED to generate
RTCP Sender Report (SR) and Reception Report (RR) packets relating to RTCP Sender Report (SR) and Reception Report (RR) packets relating to
the RTP packet streams they send and receive. These RTCP reports can the RTP packet streams they send and receive. These RTCP reports can
be used for performance monitoring purposes, since they include basic be used for performance monitoring purposes, since they include basic
packet loss and jitter statistics. packet loss and jitter statistics.
A large number of additional performance metrics are supported by the A large number of additional performance metrics are supported by the
RTCP Extended Reports (XR) framework [RFC3611][RFC6792]. At the time RTCP Extended Reports (XR) framework [RFC3611][RFC6792]. At the time
of this writing, it is not clear what extended metrics are suitable of this writing, it is not clear what extended metrics are suitable
for use in the WebRTC context, so there is no requirement that for use in WebRTC, so there is no requirement that implementations
implementations generate RTCP XR packets. However, implementations generate RTCP XR packets. However, implementations that can use
that can use detailed performance monitoring data MAY generate RTCP detailed performance monitoring data MAY generate RTCP XR packets as
XR packets as appropriate; the use of such packets SHOULD be appropriate; the use of such packets SHOULD be signalled in advance.
signalled in advance.
9. WebRTC Use of RTP: Future Extensions 9. WebRTC Use of RTP: Future Extensions
It is possible that the core set of RTP protocols and RTP extensions It is possible that the core set of RTP protocols and RTP extensions
specified in this memo will prove insufficient for the future needs specified in this memo will prove insufficient for the future needs
of WebRTC applications. In this case, future updates to this memo of WebRTC. In this case, future updates to this memo MUST be made
MUST be made following the Guidelines for Writers of RTP Payload following the Guidelines for Writers of RTP Payload Format
Format Specifications [RFC2736], How to Write an RTP Payload Format Specifications [RFC2736], How to Write an RTP Payload Format
[I-D.ietf-payload-rtp-howto] and Guidelines for Extending the RTP [I-D.ietf-payload-rtp-howto] and Guidelines for Extending the RTP
Control Protocol [RFC5968], and SHOULD take into account any future Control Protocol [RFC5968], and SHOULD take into account any future
guidelines for extending RTP and related protocols that have been guidelines for extending RTP and related protocols that have been
developed. developed.
Authors of future extensions are urged to consider the wide range of Authors of future extensions are urged to consider the wide range of
environments in which RTP is used when recommending extensions, since environments in which RTP is used when recommending extensions, since
extensions that are applicable in some scenarios can be problematic extensions that are applicable in some scenarios can be problematic
in others. Where possible, the WebRTC framework will adopt RTP in others. Where possible, the WebRTC framework will adopt RTP
extensions that are of general utility, to enable easy implementation extensions that are of general utility, to enable easy implementation
skipping to change at page 23, line 15 skipping to change at page 23, line 12
RTP Profile: The name of the RTP profile to be used in session. The RTP Profile: The name of the RTP profile to be used in session. The
RTP/AVP [RFC3551] and RTP/AVPF [RFC4585] profiles can interoperate RTP/AVP [RFC3551] and RTP/AVPF [RFC4585] profiles can interoperate
on basic level, as can their secure variants RTP/SAVP [RFC3711] on basic level, as can their secure variants RTP/SAVP [RFC3711]
and RTP/SAVPF [RFC5124]. The secure variants of the profiles do and RTP/SAVPF [RFC5124]. The secure variants of the profiles do
not directly interoperate with the non-secure variants, due to the not directly interoperate with the non-secure variants, due to the
presence of additional header fields for authentication in SRTP presence of additional header fields for authentication in SRTP
packets and cryptographic transformation of the payload. WebRTC packets and cryptographic transformation of the payload. WebRTC
requires the use of the RTP/SAVPF profile, and this MUST be requires the use of the RTP/SAVPF profile, and this MUST be
signalled. Interworking functions might transform this into the signalled. Interworking functions might transform this into the
RTP/SAVP profile for a legacy use case, by indicating to the RTP/SAVP profile for a legacy use case, by indicating to the
WebRTC end-point that the RTP/SAVPF is used and configuring a trr- WebRTC Endpoint that the RTP/SAVPF is used and configuring a trr-
int value of 4 seconds. int value of 4 seconds.
Transport Information: Source and destination IP address(s) and Transport Information: Source and destination IP address(s) and
ports for RTP and RTCP MUST be signalled for each RTP session. In ports for RTP and RTCP MUST be signalled for each RTP session. In
WebRTC these transport addresses will be provided by ICE [RFC5245] WebRTC these transport addresses will be provided by ICE [RFC5245]
that signals candidates and arrives at nominated candidate address that signals candidates and arrives at nominated candidate address
pairs. If RTP and RTCP multiplexing [RFC5761] is to be used, such pairs. If RTP and RTCP multiplexing [RFC5761] is to be used, such
that a single port, i.e. transport-layer flow, is used for RTP that a single port, i.e. transport-layer flow, is used for RTP
and RTCP flows, this MUST be signalled (see Section 4.5). and RTCP flows, this MUST be signalled (see Section 4.5).
RTP Payload Types, media formats, and format parameters: The mapping RTP Payload Types, media formats, and format parameters: The mapping
between media type names (and hence the RTP payload formats to be between media type names (and hence the RTP payload formats to be
used), and the RTP payload type numbers MUST be signalled. Each used), and the RTP payload type numbers MUST be signalled. Each
media type MAY also have a number of media type parameters that media type MAY also have a number of media type parameters that
MUST also be signalled to configure the codec and RTP payload MUST also be signalled to configure the codec and RTP payload
format (the "a=fmtp:" line from SDP). Section 4.3 of this memo format (the "a=fmtp:" line from SDP). Section 4.3 of this memo
discusses requirements for uniqueness of payload types. discusses requirements for uniqueness of payload types.
RTP Extensions: The use of any additional RTP header extensions and RTP Extensions: The use of any additional RTP header extensions and
RTCP packet types, including any necessary parameters, MUST be RTCP packet types, including any necessary parameters, MUST be
signalled. This signalling is to ensure that a WebRTC endpoint's signalled. This signalling is to ensure that a WebRTC Endpoint's
behaviour, especially when sending, of any extensions is behaviour, especially when sending, of any extensions is
predictable and consistent. For robustness, and for compatibility predictable and consistent. For robustness, and for compatibility
with non-WebRTC systems that might be connected to a WebRTC with non-WebRTC systems that might be connected to a WebRTC
session via a gateway, implementations are REQUIRED to ignore session via a gateway, implementations are REQUIRED to ignore
unknown RTCP packets and RTP header extensions (see also unknown RTCP packets and RTP header extensions (see also
Section 4.1). Section 4.1).
RTCP Bandwidth: Support for exchanging RTCP Bandwidth values to the RTCP Bandwidth: Support for exchanging RTCP Bandwidth values to the
end-points will be necessary. This SHALL be done as described in end-points will be necessary. This SHALL be done as described in
"Session Description Protocol (SDP) Bandwidth Modifiers for RTP "Session Description Protocol (SDP) Bandwidth Modifiers for RTP
Control Protocol (RTCP) Bandwidth" [RFC3556] if using SDP, or Control Protocol (RTCP) Bandwidth" [RFC3556] if using SDP, or
something semantically equivalent. This also ensures that the something semantically equivalent. This also ensures that the
end-points have a common view of the RTCP bandwidth. A common end-points have a common view of the RTCP bandwidth. A common
RTCP bandwidth is important as a too different view of the RTCP bandwidth is important as a too different view of the
bandwidths can lead to failure to interoperate. bandwidths can lead to failure to interoperate.
These parameters are often expressed in SDP messages conveyed within These parameters are often expressed in SDP messages conveyed within
an offer/answer exchange. RTP does not depend on SDP or on the offer an offer/answer exchange. RTP does not depend on SDP or on the offer
/answer model, but does require all the necessary parameters to be /answer model, but does require all the necessary parameters to be
agreed upon, and provided to the RTP implementation. Note that in agreed upon, and provided to the RTP implementation. Note that in
the WebRTC context it will depend on the signalling model and API how WebRTC it will depend on the signalling model and API how these
these parameters need to be configured but they will be need to parameters need to be configured but they will be need to either be
either be set in the API or explicitly signalled between the peers. set in the API or explicitly signalled between the peers.
11. WebRTC API Considerations 11. WebRTC API Considerations
The WebRTC API [W3C.WD-webrtc-20130910] and the Media Capture and The WebRTC API [W3C.WD-webrtc-20130910] and the Media Capture and
Streams API [W3C.WD-mediacapture-streams-20130903] defines and uses Streams API [W3C.WD-mediacapture-streams-20130903] defines and uses
the concept of a MediaStream that consists of zero or more the concept of a MediaStream that consists of zero or more
MediaStreamTracks. A MediaStreamTrack is an individual stream of MediaStreamTracks. A MediaStreamTrack is an individual stream of
media from any type of media source like a microphone or a camera, media from any type of media source like a microphone or a camera,
but also conceptual sources, like a audio mix or a video composition, but also conceptual sources, like a audio mix or a video composition,
are possible. The MediaStreamTracks within a MediaStream need to be are possible. The MediaStreamTracks within a MediaStream need to be
skipping to change at page 25, line 33 skipping to change at page 25, line 29
user or device across different services (see Section 4.4.1 of user or device across different services (see Section 4.4.1 of
[I-D.ietf-rtcweb-security] for details). A web application can [I-D.ietf-rtcweb-security] for details). A web application can
request that the CNAMEs used in different RTCPeerConnections (within request that the CNAMEs used in different RTCPeerConnections (within
a same-orign context) be the same, this allows for synchronization of a same-orign context) be the same, this allows for synchronization of
the endpoint's RTP packet streams across the different the endpoint's RTP packet streams across the different
RTCPeerConnections. RTCPeerConnections.
Note: this doesn't result in a tracking issue, since the creation Note: this doesn't result in a tracking issue, since the creation
of matching CNAMEs depends on existing tracking. of matching CNAMEs depends on existing tracking.
The above will currently force a WebRTC end-point that receives a The above will currently force a WebRTC Endpoint that receives a
MediaStreamTrack on one RTCPeerConnection and adds it as an outgoing MediaStreamTrack on one RTCPeerConnection and adds it as an outgoing
on any RTCPeerConnection to perform resynchronisation of the stream. on any RTCPeerConnection to perform resynchronisation of the stream.
This, as the sending party needs to change the CNAME to the one it This, as the sending party needs to change the CNAME to the one it
uses, which implies that the sender has to use a local system clock uses, which implies that the sender has to use a local system clock
as timebase for the synchronisation. Thus, the relative relation as timebase for the synchronisation. Thus, the relative relation
between the timebase of the incoming stream and the system sending between the timebase of the incoming stream and the system sending
out needs to defined. This relation also needs monitoring for clock out needs to defined. This relation also needs monitoring for clock
drift and likely adjustments of the synchronisation. The sending drift and likely adjustments of the synchronisation. The sending
entity is also responsible for congestion control for its sent entity is also responsible for congestion control for its sent
streams. In cases of packet loss the loss of incoming data also streams. In cases of packet loss the loss of incoming data also
needs to be handled. This leads to the observation that the method needs to be handled. This leads to the observation that the method
that is least likely to cause issues or interruptions in the outgoing that is least likely to cause issues or interruptions in the outgoing
source packet stream is a model of full decoding, including repair source packet stream is a model of full decoding, including repair
etc., followed by encoding of the media again into the outgoing etc., followed by encoding of the media again into the outgoing
packet stream. Optimisations of this method is clearly possible and packet stream. Optimisations of this method is clearly possible and
implementation specific. implementation specific.
A WebRTC end-point MUST support receiving multiple MediaStreamTracks, A WebRTC Endpoint MUST support receiving multiple MediaStreamTracks,
where each of different MediaStreamTracks (and their sets of where each of different MediaStreamTracks (and their sets of
associated packet streams) uses different CNAMEs. However, associated packet streams) uses different CNAMEs. However,
MediaStreamTracks that are received with different CNAMEs have no MediaStreamTracks that are received with different CNAMEs have no
defined synchronisation. defined synchronisation.
Note: The motivation for supporting reception of multiple CNAMEs Note: The motivation for supporting reception of multiple CNAMEs
is to allow for forward compatibility with any future changes that is to allow for forward compatibility with any future changes that
enables more efficient stream handling when end-points relay/ enables more efficient stream handling when end-points relay/
forward streams. It also ensures that end-points can interoperate forward streams. It also ensures that end-points can interoperate
with certain types of multi-stream middleboxes or end-points that with certain types of multi-stream middleboxes or end-points that
skipping to change at page 26, line 37 skipping to change at page 26, line 34
Finally this specification puts a requirement on the WebRTC API to Finally this specification puts a requirement on the WebRTC API to
realize a method for determining the CSRC list (Section 4.1) as well realize a method for determining the CSRC list (Section 4.1) as well
as the Mixer-to-Client audio levels (Section 5.2.3) (when supported) as the Mixer-to-Client audio levels (Section 5.2.3) (when supported)
and the basic requirements for this is further discussed in and the basic requirements for this is further discussed in
Section 12.2.1. Section 12.2.1.
12. RTP Implementation Considerations 12. RTP Implementation Considerations
The following discussion provides some guidance on the implementation The following discussion provides some guidance on the implementation
of the RTP features described in this memo. The focus is on a WebRTC of the RTP features described in this memo. The focus is on a WebRTC
end-point implementation perspective, and while some mention is made Endpoint implementation perspective, and while some mention is made
of the behaviour of middleboxes, that is not the focus of this memo. of the behaviour of middleboxes, that is not the focus of this memo.
12.1. Configuration and Use of RTP Sessions 12.1. Configuration and Use of RTP Sessions
A WebRTC end-point will be a simultaneous participant in one or more A WebRTC Endpoint will be a simultaneous participant in one or more
RTP sessions. Each RTP session can convey multiple media sources, RTP sessions. Each RTP session can convey multiple media sources,
and can include media data from multiple end-points. In the and can include media data from multiple end-points. In the
following, some ways in which WebRTC end-points can configure and use following, some ways in which WebRTC Endpoints can configure and use
RTP sessions is outlined. RTP sessions is outlined.
12.1.1. Use of Multiple Media Sources Within an RTP Session 12.1.1. Use of Multiple Media Sources Within an RTP Session
RTP is a group communication protocol, and every RTP session can RTP is a group communication protocol, and every RTP session can
potentially contain multiple RTP packet streams. There are several potentially contain multiple RTP packet streams. There are several
reasons why this might be desirable: reasons why this might be desirable:
Multiple media types: Outside of WebRTC, it is common to use one RTP Multiple media types: Outside of WebRTC, it is common to use one RTP
session for each type of media sources (e.g., one RTP session for session for each type of media sources (e.g., one RTP session for
audio sources and one for video sources, each sent over different audio sources and one for video sources, each sent over different
transport layer flows). However, to reduce the number of UDP transport layer flows). However, to reduce the number of UDP
ports used, the default in WebRTC is to send all types of media in ports used, the default in WebRTC is to send all types of media in
a single RTP session, as described in Section 4.4, using RTP and a single RTP session, as described in Section 4.4, using RTP and
skipping to change at page 27, line 22 skipping to change at page 27, line 16
ports used, the default in WebRTC is to send all types of media in ports used, the default in WebRTC is to send all types of media in
a single RTP session, as described in Section 4.4, using RTP and a single RTP session, as described in Section 4.4, using RTP and
RTCP multiplexing (Section 4.5) to further reduce the number of RTCP multiplexing (Section 4.5) to further reduce the number of
UDP ports needed. This RTP session then uses only one bi- UDP ports needed. This RTP session then uses only one bi-
directional transport-layer flow, but will contain multiple RTP directional transport-layer flow, but will contain multiple RTP
packet streams, each containing a different type of media. A packet streams, each containing a different type of media. A
common example might be an end-point with a camera and microphone common example might be an end-point with a camera and microphone
that sends two RTP packet streams, one video and one audio, into a that sends two RTP packet streams, one video and one audio, into a
single RTP session. single RTP session.
Multiple Capture Devices: A WebRTC end-point might have multiple Multiple Capture Devices: A WebRTC Endpoint might have multiple
cameras, microphones, or other media capture devices, and so might cameras, microphones, or other media capture devices, and so might
want to generate several RTP packet streams of the same media want to generate several RTP packet streams of the same media
type. Alternatively, it might want to send media from a single type. Alternatively, it might want to send media from a single
capture device in several different formats or quality settings at capture device in several different formats or quality settings at
once. Both can result in a single end-point sending multiple RTP once. Both can result in a single end-point sending multiple RTP
packet streams of the same media type into a single RTP session at packet streams of the same media type into a single RTP session at
the same time. the same time.
Associated Repair Data: An end-point might send a RTP packet stream Associated Repair Data: An end-point might send a RTP packet stream
that is somehow associated with another stream. For example, it that is somehow associated with another stream. For example, it
skipping to change at page 27, line 47 skipping to change at page 27, line 41
stream. stream.
Layered or Multiple Description Coding: An end-point can use a Layered or Multiple Description Coding: An end-point can use a
layered media codec, for example H.264 SVC, or a multiple layered media codec, for example H.264 SVC, or a multiple
description codec, that generates multiple RTP packet streams, description codec, that generates multiple RTP packet streams,
each with a distinct RTP SSRC, within a single RTP session. each with a distinct RTP SSRC, within a single RTP session.
RTP Mixers, Translators, and Other Middleboxes: An RTP session, in RTP Mixers, Translators, and Other Middleboxes: An RTP session, in
the WebRTC context, is a point-to-point association between an the WebRTC context, is a point-to-point association between an
end-point and some other peer device, where those devices share a end-point and some other peer device, where those devices share a
common SSRC space. The peer device might be another WebRTC end- common SSRC space. The peer device might be another WebRTC
point, or it might be an RTP mixer, translator, or some other form Endpoint, or it might be an RTP mixer, translator, or some other
of media processing middlebox. In the latter cases, the middlebox form of media processing middlebox. In the latter cases, the
might send mixed or relayed RTP streams from several participants, middlebox might send mixed or relayed RTP streams from several
that the WebRTC end-point will need to render. Thus, even though participants, that the WebRTC Endpoint will need to render. Thus,
a WebRTC end-point might only be a member of a single RTP session, even though a WebRTC Endpoint might only be a member of a single
the peer device might be extending that RTP session to incorporate RTP session, the peer device might be extending that RTP session
other end-points. WebRTC is a group communication environment and to incorporate other end-points. WebRTC is a group communication
end-points need to be capable of receiving, decoding, and playing environment and end-points need to be capable of receiving,
out multiple RTP packet streams at once, even in a single RTP decoding, and playing out multiple RTP packet streams at once,
session. even in a single RTP session.
12.1.2. Use of Multiple RTP Sessions 12.1.2. Use of Multiple RTP Sessions
In addition to sending and receiving multiple RTP packet streams In addition to sending and receiving multiple RTP packet streams
within a single RTP session, a WebRTC end-point might participate in within a single RTP session, a WebRTC Endpoint might participate in
multiple RTP sessions. There are several reasons why a WebRTC end- multiple RTP sessions. There are several reasons why a WebRTC
point might choose to do this: Endpoint might choose to do this:
To interoperate with legacy devices: The common practice in the non- To interoperate with legacy devices: The common practice in the non-
WebRTC world is to send different types of media in separate RTP WebRTC world is to send different types of media in separate RTP
sessions, for example using one RTP session for audio and another sessions, for example using one RTP session for audio and another
RTP session, on a separate transport layer flow, for video. All RTP session, on a separate transport layer flow, for video. All
WebRTC end-points need to support the option of sending different WebRTC Endpoints need to support the option of sending different
types of media on different RTP sessions, so they can interwork types of media on different RTP sessions, so they can interwork
with such legacy devices. This is discussed further in with such legacy devices. This is discussed further in
Section 4.4. Section 4.4.
To provide enhanced quality of service: Some network-based quality To provide enhanced quality of service: Some network-based quality
of service mechanisms operate on the granularity of transport of service mechanisms operate on the granularity of transport
layer flows. If it is desired to use these mechanisms to provide layer flows. If it is desired to use these mechanisms to provide
differentiated quality of service for some RTP packet streams, differentiated quality of service for some RTP packet streams,
then those RTP packet streams need to be sent in a separate RTP then those RTP packet streams need to be sent in a separate RTP
session using a different transport-layer flow, and with session using a different transport-layer flow, and with
skipping to change at page 30, line 40 skipping to change at page 30, line 33
Figure 2: RTP mixer with only unicast paths Figure 2: RTP mixer with only unicast paths
There are various methods of implementation for the middlebox. If There are various methods of implementation for the middlebox. If
implemented as a standard RTP mixer or translator, a single RTP implemented as a standard RTP mixer or translator, a single RTP
session will extend across the middlebox and encompass all the session will extend across the middlebox and encompass all the
end-points in one multi-party session. Other types of middlebox end-points in one multi-party session. Other types of middlebox
might use separate RTP sessions between each end-point and the might use separate RTP sessions between each end-point and the
middlebox. A common aspect is that these RTP middleboxes can use middlebox. A common aspect is that these RTP middleboxes can use
a number of tools to control the media encoding provided by a a number of tools to control the media encoding provided by a
WebRTC end-point. This includes functions like requesting the WebRTC Endpoint. This includes functions like requesting the
breaking of the encoding chain and have the encoder produce a so breaking of the encoding chain and have the encoder produce a so
called Intra frame. Another is limiting the bit-rate of a given called Intra frame. Another is limiting the bit-rate of a given
stream to better suit the mixer view of the multiple down-streams. stream to better suit the mixer view of the multiple down-streams.
Others are controlling the most suitable frame-rate, picture Others are controlling the most suitable frame-rate, picture
resolution, the trade-off between frame-rate and spatial quality. resolution, the trade-off between frame-rate and spatial quality.
The middlebox has the responsibility to correctly perform The middlebox has the responsibility to correctly perform
congestion control, source identification, manage synchronisation congestion control, source identification, manage synchronisation
while providing the application with suitable media optimisations. while providing the application with suitable media optimisations.
The middlebox also has to be a trusted node when it comes to The middlebox also has to be a trusted node when it comes to
security, since it manipulates either the RTP header or the media security, since it manipulates either the RTP header or the media
skipping to change at page 33, line 24 skipping to change at page 33, line 16
identified using a combination of IP and port address. identified using a combination of IP and port address.
Deep Packet Inspection: A network classifier (DPI) inspects the Deep Packet Inspection: A network classifier (DPI) inspects the
packet and tries to determine if the packet represents a packet and tries to determine if the packet represents a
particular application and type that is to be prioritized. particular application and type that is to be prioritized.
Flow-based differentiation will provide the same treatment to all Flow-based differentiation will provide the same treatment to all
packets within a transport-layer flow, i.e., relative prioritization packets within a transport-layer flow, i.e., relative prioritization
is not possible. Moreover, if the resources are limited it might not is not possible. Moreover, if the resources are limited it might not
be possible to provide differential treatment compared to best-effort be possible to provide differential treatment compared to best-effort
for all the RTP packet streams in a WebRTC application. When flow- for all the RTP packet streams used in a WebRTC session. When flow-
based differentiation is available the WebRTC application needs to based differentiation is available, the WebRTC Endpoint needs to know
know about it so that it can provide the separation of the RTP packet about it so that it can provide the separation of the RTP packet
streams onto different UDP flows to enable a more granular usage of streams onto different UDP flows to enable a more granular usage of
flow based differentiation. That way at least providing different flow based differentiation. That way at least providing different
prioritization of audio and video if desired by application. prioritization of audio and video if desired by application.
DiffServ assumes that either the end-point or a classifier can mark DiffServ assumes that either the end-point or a classifier can mark
the packets with an appropriate DSCP so that the packets are treated the packets with an appropriate DSCP so that the packets are treated
according to that marking. If the end-point is to mark the traffic according to that marking. If the end-point is to mark the traffic
two requirements arise in the WebRTC context: 1) The WebRTC two requirements arise in the WebRTC context: 1) The WebRTC Endpoint
application or browser has to know which DSCP to use and that it can has to know which DSCP to use and that it can use them on some set of
use them on some set of RTP packet streams. 2) The information needs RTP packet streams. 2) The information needs to be propagated to the
to be propagated to the operating system when transmitting the operating system when transmitting the packet. Details of this
packet. Details of this process are outside the scope of this memo process are outside the scope of this memo and are further discussed
and are further discussed in "DSCP and other packet markings for in "DSCP and other packet markings for RTCWeb QoS"
RTCWeb QoS" [I-D.ietf-tsvwg-rtcweb-qos]. [I-D.ietf-tsvwg-rtcweb-qos].
For packet based marking schemes it might be possible to mark For packet based marking schemes it might be possible to mark
individual RTP packets differently based on the relative priority of individual RTP packets differently based on the relative priority of
the RTP payload. For example video codecs that have I, P, and B the RTP payload. For example video codecs that have I, P, and B
pictures could prioritise any payloads carrying only B frames less, pictures could prioritise any payloads carrying only B frames less,
as these are less damaging to loose. However, depending on the QoS as these are less damaging to loose. However, depending on the QoS
mechanism and what markings that are applied, this can result in not mechanism and what markings that are applied, this can result in not
only different packet drop probabilities but also packet reordering, only different packet drop probabilities but also packet reordering,
see [I-D.ietf-tsvwg-rtcweb-qos] for further discussion. As a default see [I-D.ietf-tsvwg-rtcweb-qos] for further discussion. As a default
policy all RTP packets related to a RTP packet stream ought to be policy all RTP packets related to a RTP packet stream ought to be
skipping to change at page 34, line 28 skipping to change at page 34, line 19
12.2. Media Source, RTP Packet Streams, and Participant Identification 12.2. Media Source, RTP Packet Streams, and Participant Identification
12.2.1. Media Source Identification 12.2.1. Media Source Identification
Each RTP packet stream is identified by a unique synchronisation Each RTP packet stream is identified by a unique synchronisation
source (SSRC) identifier. The SSRC identifier is carried in each of source (SSRC) identifier. The SSRC identifier is carried in each of
the RTP packets comprising a RTP packet stream, and is also used to the RTP packets comprising a RTP packet stream, and is also used to
identify that stream in the corresponding RTCP reports. The SSRC is identify that stream in the corresponding RTCP reports. The SSRC is
chosen as discussed in Section 4.8. The first stage in chosen as discussed in Section 4.8. The first stage in
demultiplexing RTP and RTCP packets received on a single transport demultiplexing RTP and RTCP packets received on a single transport
layer flow at a WebRTC end-point is to separate the RTP packet layer flow at a WebRTC Endpoint is to separate the RTP packet streams
streams based on their SSRC value; once that is done, additional based on their SSRC value; once that is done, additional
demultiplexing steps can determine how and where to render the media. demultiplexing steps can determine how and where to render the media.
RTP allows a mixer, or other RTP-layer middlebox, to combine encoded RTP allows a mixer, or other RTP-layer middlebox, to combine encoded
streams from multiple media sources to form a new encoded stream from streams from multiple media sources to form a new encoded stream from
a new media source (the mixer). The RTP packets in that new RTP a new media source (the mixer). The RTP packets in that new RTP
packet stream can include a Contributing Source (CSRC) list, packet stream can include a Contributing Source (CSRC) list,
indicating which original SSRCs contributed to the combined source indicating which original SSRCs contributed to the combined source
stream. As described in Section 4.1, implementations need to support stream. As described in Section 4.1, implementations need to support
reception of RTP data packets containing a CSRC list and RTCP packets reception of RTP data packets containing a CSRC list and RTCP packets
that relate to sources present in the CSRC list. The CSRC list can that relate to sources present in the CSRC list. The CSRC list can
change on a packet-by-packet basis, depending on the mixing operation change on a packet-by-packet basis, depending on the mixing operation
being performed. Knowledge of what media sources contributed to a being performed. Knowledge of what media sources contributed to a
particular RTP packet can be important if the user interface particular RTP packet can be important if the user interface
indicates which participants are active in the session. Changes in indicates which participants are active in the session. Changes in
the CSRC list included in packets needs to be exposed to the WebRTC the CSRC list included in packets needs to be exposed to the WebRTC
application using some API, if the application is to be able to track application using some API, if the application is to be able to track
changes in session participation. It is desirable to map CSRC values changes in session participation. It is desirable to map CSRC values
back into WebRTC MediaStream identities as they cross this API, to back into WebRTC MediaStream identities as they cross this API, to
avoid exposing the SSRC/CSRC name space to JavaScript applications. avoid exposing the SSRC/CSRC name space to WebRTC applications.
If the mixer-to-client audio level extension [RFC6465] is being used If the mixer-to-client audio level extension [RFC6465] is being used
in the session (see Section 5.2.3), the information in the CSRC list in the session (see Section 5.2.3), the information in the CSRC list
is augmented by audio level information for each contributing source. is augmented by audio level information for each contributing source.
It is desirable to expose this information to the WebRTC application It is desirable to expose this information to the WebRTC application
using some API, after mapping the CSRC values to WebRTC MediaStream using some API, after mapping the CSRC values to WebRTC MediaStream
identities, so it can be exposed in the user interface. identities, so it can be exposed in the user interface.
12.2.2. SSRC Collision Detection 12.2.2. SSRC Collision Detection
The RTP standard requires RTP implementations to have support for The RTP standard requires RTP implementations to have support for
detecting and handling SSRC collisions, i.e., resolve the conflict detecting and handling SSRC collisions, i.e., resolve the conflict
when two different end-points use the same SSRC value (see section when two different end-points use the same SSRC value (see section
8.2 of [RFC3550]). This requirement also applies to WebRTC end- 8.2 of [RFC3550]). This requirement also applies to WebRTC
points. There are several scenarios where SSRC collisions can occur: Endpoints. There are several scenarios where SSRC collisions can
occur:
o In a point-to-point session where each SSRC is associated with o In a point-to-point session where each SSRC is associated with
either of the two end-points and where the main media carrying either of the two end-points and where the main media carrying
SSRC identifier will be announced in the signalling channel, a SSRC identifier will be announced in the signalling channel, a
collision is less likely to occur due to the information about collision is less likely to occur due to the information about
used SSRCs. If SDP is used, this information is provided by used SSRCs. If SDP is used, this information is provided by
Source-Specific SDP Attributes [RFC5576]. Still, collisions can Source-Specific SDP Attributes [RFC5576]. Still, collisions can
occur if both end-points start using a new SSRC identifier prior occur if both end-points start using a new SSRC identifier prior
to having signalled it to the peer and received acknowledgement on to having signalled it to the peer and received acknowledgement on
the signalling message. The Source-Specific SDP Attributes the signalling message. The Source-Specific SDP Attributes
skipping to change at page 38, line 40 skipping to change at page 38, line 31
Romascanu, Jim Spring, Martin Thomson, and the other members of the Romascanu, Jim Spring, Martin Thomson, and the other members of the
IETF RTCWEB working group for their valuable feedback. IETF RTCWEB working group for their valuable feedback.
16. References 16. References
16.1. Normative References 16.1. Normative References
[I-D.ietf-avtcore-multi-media-rtp-session] [I-D.ietf-avtcore-multi-media-rtp-session]
Westerlund, M., Perkins, C., and J. Lennox, "Sending Westerlund, M., Perkins, C., and J. Lennox, "Sending
Multiple Types of Media in a Single RTP Session", draft- Multiple Types of Media in a Single RTP Session", draft-
ietf-avtcore-multi-media-rtp-session-05 (work in ietf-avtcore-multi-media-rtp-session-06 (work in
progress), February 2014. progress), October 2014.
[I-D.ietf-avtcore-rtp-circuit-breakers] [I-D.ietf-avtcore-rtp-circuit-breakers]
Perkins, C. and V. Singh, "Multimedia Congestion Control: Perkins, C. and V. Singh, "Multimedia Congestion Control:
Circuit Breakers for Unicast RTP Sessions", draft-ietf- Circuit Breakers for Unicast RTP Sessions", draft-ietf-
avtcore-rtp-circuit-breakers-06 (work in progress), July avtcore-rtp-circuit-breakers-06 (work in progress), July
2014. 2014.
[I-D.ietf-avtcore-rtp-multi-stream-optimisation] [I-D.ietf-avtcore-rtp-multi-stream-optimisation]
Lennox, J., Westerlund, M., Wu, Q., and C. Perkins, Lennox, J., Westerlund, M., Wu, Q., and C. Perkins,
"Sending Multiple Media Streams in a Single RTP Session: "Sending Multiple Media Streams in a Single RTP Session:
skipping to change at page 41, line 26 skipping to change at page 41, line 21
[RFC7164] Gross, K. and R. Brandenburg, "RTP and Leap Seconds", RFC [RFC7164] Gross, K. and R. Brandenburg, "RTP and Leap Seconds", RFC
7164, March 2014. 7164, March 2014.
16.2. Informative References 16.2. Informative References
[I-D.ietf-avtcore-multiplex-guidelines] [I-D.ietf-avtcore-multiplex-guidelines]
Westerlund, M., Perkins, C., and H. Alvestrand, Westerlund, M., Perkins, C., and H. Alvestrand,
"Guidelines for using the Multiplexing Features of RTP to "Guidelines for using the Multiplexing Features of RTP to
Support Multiple Media Streams", draft-ietf-avtcore- Support Multiple Media Streams", draft-ietf-avtcore-
multiplex-guidelines-02 (work in progress), January 2014. multiplex-guidelines-03 (work in progress), October 2014.
[I-D.ietf-avtcore-rtp-topologies-update] [I-D.ietf-avtcore-rtp-topologies-update]
Westerlund, M. and S. Wenger, "RTP Topologies", draft- Westerlund, M. and S. Wenger, "RTP Topologies", draft-
ietf-avtcore-rtp-topologies-update-04 (work in progress), ietf-avtcore-rtp-topologies-update-04 (work in progress),
August 2014. August 2014.
[I-D.ietf-avtext-rtp-grouping-taxonomy] [I-D.ietf-avtext-rtp-grouping-taxonomy]
Lennox, J., Gross, K., Nandakumar, S., and G. Salgueiro, Lennox, J., Gross, K., Nandakumar, S., and G. Salgueiro,
"A Taxonomy of Grouping Semantics and Mechanisms for Real- "A Taxonomy of Grouping Semantics and Mechanisms for Real-
Time Transport Protocol (RTP) Sources", draft-ietf-avtext- Time Transport Protocol (RTP) Sources", draft-ietf-avtext-
rtp-grouping-taxonomy-02 (work in progress), June 2014. rtp-grouping-taxonomy-02 (work in progress), June 2014.
[I-D.ietf-mmusic-msid] [I-D.ietf-mmusic-msid]
Alvestrand, H., "WebRTC MediaStream Identification in the Alvestrand, H., "WebRTC MediaStream Identification in the
Session Description Protocol", draft-ietf-mmusic-msid-06 Session Description Protocol", draft-ietf-mmusic-msid-07
(work in progress), June 2014. (work in progress), October 2014.
[I-D.ietf-mmusic-sdp-bundle-negotiation] [I-D.ietf-mmusic-sdp-bundle-negotiation]
Holmberg, C., Alvestrand, H., and C. Jennings, Holmberg, C., Alvestrand, H., and C. Jennings,
"Negotiating Media Multiplexing Using the Session "Negotiating Media Multiplexing Using the Session
Description Protocol (SDP)", draft-ietf-mmusic-sdp-bundle- Description Protocol (SDP)", draft-ietf-mmusic-sdp-bundle-
negotiation-08 (work in progress), August 2014. negotiation-12 (work in progress), October 2014.
[I-D.ietf-payload-rtp-howto] [I-D.ietf-payload-rtp-howto]
Westerlund, M., "How to Write an RTP Payload Format", Westerlund, M., "How to Write an RTP Payload Format",
draft-ietf-payload-rtp-howto-13 (work in progress), draft-ietf-payload-rtp-howto-13 (work in progress),
January 2014. January 2014.
[I-D.ietf-rmcat-cc-requirements] [I-D.ietf-rmcat-cc-requirements]
Jesup, R., "Congestion Control Requirements For RMCAT", Jesup, R., "Congestion Control Requirements For RMCAT",
draft-ietf-rmcat-cc-requirements-05 (work in progress), draft-ietf-rmcat-cc-requirements-06 (work in progress),
July 2014. October 2014.
[I-D.ietf-rtcweb-audio] [I-D.ietf-rtcweb-audio]
Valin, J. and C. Bran, "WebRTC Audio Codec and Processing Valin, J. and C. Bran, "WebRTC Audio Codec and Processing
Requirements", draft-ietf-rtcweb-audio-05 (work in Requirements", draft-ietf-rtcweb-audio-06 (work in
progress), February 2014. progress), September 2014.
[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-11 Browser-based Applications", draft-ietf-rtcweb-overview-12
(work in progress), August 2014. (work in progress), October 2014.
[I-D.ietf-rtcweb-use-cases-and-requirements] [I-D.ietf-rtcweb-use-cases-and-requirements]
Holmberg, C., Hakansson, S., and G. Eriksson, "Web Real- Holmberg, C., Hakansson, S., and G. Eriksson, "Web Real-
Time Communication Use-cases and Requirements", draft- Time Communication Use-cases and Requirements", draft-
ietf-rtcweb-use-cases-and-requirements-14 (work in ietf-rtcweb-use-cases-and-requirements-14 (work in
progress), February 2014. progress), February 2014.
[I-D.ietf-tsvwg-rtcweb-qos] [I-D.ietf-tsvwg-rtcweb-qos]
Dhesikan, S., Jennings, C., Druta, D., Jones, P., and J. Dhesikan, S., Jennings, C., Druta, D., Jones, P., and J.
Polk, "DSCP and other packet markings for RTCWeb QoS", Polk, "DSCP and other packet markings for RTCWeb QoS",
 End of changes. 62 change blocks. 
174 lines changed or deleted 172 lines changed or added

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