draft-ietf-rtcweb-rtp-usage-00.txt   draft-ietf-rtcweb-rtp-usage-01.txt 
Network Working Group C. Perkins Network Working Group C. Perkins
Internet-Draft University of Glasgow Internet-Draft University of Glasgow
Intended status: Standards Track M. Westerlund Intended status: Standards Track M. Westerlund
Expires: March 17, 2012 Ericsson Expires: May 3, 2012 Ericsson
J. Ott J. Ott
Aalto University Aalto University
September 14, 2011 October 31, 2011
RTP Requirements for RTC-Web Web Real-Time Communication (WebRTC): Media Transport and Use of RTP
draft-ietf-rtcweb-rtp-usage-00 draft-ietf-rtcweb-rtp-usage-01
Abstract Abstract
This memo discusses use of RTP in the context of the RTC-Web The Web Real-Time Communication (WebRTC) framework aims to provide
activity. It discusses important features of RTP that need to be support for direct interactive rich communication using audio, video,
considered by other parts of the RTC-Web framework, describes which collaboration, games, etc. between two peers' web-browsers. This
RTP profile to use in this environment, and outlines what RTP memo describes the media transport aspects of the WebRTC framework.
extensions should be supported. It specifies how the Real-time Transport Protocol (RTP) is used in
the WebRTC context, and gives requirements for which RTP features,
This document is a candidate to become a work item of the RTCWEB profiles, and extensions need to be supported.
working group as <WORKING GROUP DRAFT "MEDIA TRANSPORTS">.
Status of this Memo Status of this Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on March 17, 2012. This Internet-Draft will expire on May 3, 2012.
Copyright Notice Copyright Notice
Copyright (c) 2011 IETF Trust and the persons identified as the Copyright (c) 2011 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1. Expected Topologies . . . . . . . . . . . . . . . . . . . 3 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Requirements from RTP . . . . . . . . . . . . . . . . . . . . 6 3. Media Transport in WebRTC . . . . . . . . . . . . . . . . . . 4
2.1. Signalling for RTP sessions . . . . . . . . . . . . . . . 6 3.1. Expected Topologies . . . . . . . . . . . . . . . . . . . 4
2.2. (Lack of) Signalling for Payload Format Changes . . . . . 7 3.2. Requirements from RTP . . . . . . . . . . . . . . . . . . 7
3. RTP Profile . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.2.1. Signalling for RTP sessions . . . . . . . . . . . . . 7
4. RTP and RTCP Guidelines . . . . . . . . . . . . . . . . . . . 8 3.2.2. (Lack of) Signalling for Payload Format Changes . . . 8
5. RTP Optimisations . . . . . . . . . . . . . . . . . . . . . . 8 4. WebRTC Use of RTP: Core Protocols . . . . . . . . . . . . . . 8
5.1. RTP and RTCP Multiplexing . . . . . . . . . . . . . . . . 8 4.1. RTP and RTCP . . . . . . . . . . . . . . . . . . . . . . . 8
5.2. Reduced Size RTCP . . . . . . . . . . . . . . . . . . . . 8 4.2. Choice of RTP Profile . . . . . . . . . . . . . . . . . . 9
5.3. Symmetric RTP/RTCP . . . . . . . . . . . . . . . . . . . . 9 4.3. Choice of RTP Payload Formats . . . . . . . . . . . . . . 10
5.4. Generation of the RTCP Canonical Name (CNAME) . . . . . . 9 4.4. RTP Session Multiplexing . . . . . . . . . . . . . . . . . 10
6. RTP Extensions . . . . . . . . . . . . . . . . . . . . . . . . 10 5. WebRTC Use of RTP: Optimisations . . . . . . . . . . . . . . . 10
6.1. RTP Conferencing Extensions . . . . . . . . . . . . . . . 10 5.1. RTP and RTCP Multiplexing . . . . . . . . . . . . . . . . 10
6.1.1. Full Intra Request . . . . . . . . . . . . . . . . . . 11 5.2. Reduced Size RTCP . . . . . . . . . . . . . . . . . . . . 11
6.1.2. Picture Loss Indication . . . . . . . . . . . . . . . 11 5.3. Symmetric RTP/RTCP . . . . . . . . . . . . . . . . . . . . 11
6.1.3. Slice Loss Indication . . . . . . . . . . . . . . . . 11 5.4. Generation of the RTCP Canonical Name (CNAME) . . . . . . 12
6.1.4. Reference Picture Selection Indication . . . . . . . . 11 6. WebRTC Use of RTP: Extensions . . . . . . . . . . . . . . . . 12
6.1.5. Temporary Maximum Media Stream Bit Rate Request . . . 11 6.1. Conferencing Extensions . . . . . . . . . . . . . . . . . 12
6.2. RTP Header Extensions . . . . . . . . . . . . . . . . . . 12 6.1.1. Full Intra Request . . . . . . . . . . . . . . . . . . 13
6.3. Rapid Synchronisation Extensions . . . . . . . . . . . . . 13 6.1.2. Picture Loss Indication . . . . . . . . . . . . . . . 13
6.4. Client to Mixer Audio Level . . . . . . . . . . . . . . . 13 6.1.3. Slice Loss Indication . . . . . . . . . . . . . . . . 13
6.5. Mixer to Client Audio Level . . . . . . . . . . . . . . . 13 6.1.4. Reference Picture Selection Indication . . . . . . . . 14
7. Improving RTP Transport Robustness . . . . . . . . . . . . . . 13 6.1.5. Temporary Maximum Media Stream Bit Rate Request . . . 14
7.1. RTP Retransmission . . . . . . . . . . . . . . . . . . . . 14 6.2. Header Extensions . . . . . . . . . . . . . . . . . . . . 14
7.2. Forward Error Correction (FEC) . . . . . . . . . . . . . . 15 6.3. Rapid Synchronisation Extensions . . . . . . . . . . . . . 15
7.2.1. Basic Redundancy . . . . . . . . . . . . . . . . . . . 15 6.4. Mixer Audio Level Extensions . . . . . . . . . . . . . . . 15
7.2.2. Block Based . . . . . . . . . . . . . . . . . . . . . 16 6.4.1. Client to Mixer Audio Level . . . . . . . . . . . . . 15
7.2.3. Recommendations for FEC . . . . . . . . . . . . . . . 17 6.4.2. Mixer to Client Audio Level . . . . . . . . . . . . . 15
8. RTP Rate Control and Media Adaptation . . . . . . . . . . . . 17 7. WebRTC Use of RTP: Improving Transport Robustness . . . . . . 16
9. RTP Performance Monitoring . . . . . . . . . . . . . . . . . . 18 7.1. Retransmission . . . . . . . . . . . . . . . . . . . . . . 16
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 7.2. Forward Error Correction (FEC) . . . . . . . . . . . . . . 17
11. Security Considerations . . . . . . . . . . . . . . . . . . . 18 7.2.1. Basic Redundancy . . . . . . . . . . . . . . . . . . . 17
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 18 7.2.2. Block Based FEC . . . . . . . . . . . . . . . . . . . 19
13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 19 7.2.3. Recommendations for FEC . . . . . . . . . . . . . . . 20
13.1. Normative References . . . . . . . . . . . . . . . . . . . 19 8. WebRTC Use of RTP: Rate Control and Media Adaptation . . . . . 20
13.2. Informative References . . . . . . . . . . . . . . . . . . 21 8.1. Rate Control Requirements . . . . . . . . . . . . . . . . 21
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 21 8.2. RTCP Limiations . . . . . . . . . . . . . . . . . . . . . 21
8.3. Legacy Interop Limitations . . . . . . . . . . . . . . . . 22
9. WebRTC Use of RTP: Performance Monitoring . . . . . . . . . . 23
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23
11. Security Considerations . . . . . . . . . . . . . . . . . . . 24
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 24
13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 24
13.1. Normative References . . . . . . . . . . . . . . . . . . . 24
13.2. Informative References . . . . . . . . . . . . . . . . . . 27
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 28
1. Introduction 1. Introduction
This memo discusses the Real-time Transport Protocol (RTP) [RFC3550] The Real-time Transport Protocol (RTP) [RFC3550] was designed to
in the context of the RTC-Web activity. The work in the IETF Audio/ provide a framework for delivery of audio and video teleconferencing
Video Transport Working Group, and it's successors, has been about data and other real-time media applications. This memo describes how
providing building blocks for real-time multimedia transport, and has RTP is to be used in the context of the Web Real-Time Communication
not specified who should use which building blocks. The selection of (WebRTC) framework, a new activity that aims to provide support for
building blocks and functionalities can really only be done in the direct, interactive, and rich communication using audio, video,
context of some application, for example RTC-Web. We have selected a collaboration, games, etc. between two peers' web-browsers.
set of RTP features and extensions that are suitable for a number of
applications that fit the RTC-Web context. Thus, applications such Previous work in the IETF Audio/Video Transport Working Group, and
as VoIP, audio and video conferencing, and on-demand multimedia it's successors, has been about providing a framework for real-time
streaming are considered. Applications that rely on IP multicast multimedia transport, but has not specified how the pieces of this
have not been considered likely to be applicable to RTC-Web, thus framework should be combined. This is because the choice of building
extensions related to multicast have been excluded. We believe that blocks and protocol features can really only be done in the context
RTC-Web will greatly benefit in interoperability if a reasonable set of some application. This memo proposes a set of RTP features and
of RTP functionalities and extensions are selected. This memo is extensions to be implemented by applications that fit within the
intended as a starting point for discussion of those features in the WebRTC application context. This includes applications such as voice
RTC-Web framework. over IP (VoIP), video teleconferencing, and on-demand multimedia
streaming, delivered in the context of the WebRTC browser-based
infrastructure.
2. Terminology
This memo is structured into different topics. For each topic, one This memo is structured into different topics. For each topic, one
or several recommendations from the authors are given. When it comes or several recommendations from the authors are given. When it comes
to the importance of extensions, or the need for implementation to the importance of extensions, or the need for implementation
support, we use three requirement levels to indicate the importance support, we use three requirement levels to indicate the importance
of the feature to the RTC-Web specification: of the feature to the WebRTC specification:
REQUIRED: Functionality that is absolutely needed to make the RTC- REQUIRED: Functionality that is absolutely needed to make the WebRTC
Web solution work well, or functionality of low complexity that solution work well, or functionality of low complexity that
provides high value. provides high value.
RECOMMENDED: Should be included as its brings significant benefit, RECOMMENDED: Should be included as its brings significant benefit,
but the solution can potentially work without it. but the solution can potentially work without it.
OPTIONAL: Something that is useful in some cases, but not always a OPTIONAL: Something that is useful in some cases, but not always a
benefit. benefit.
When this memo discusses RTP, it includes the RTP Control Protocol 3. Media Transport in WebRTC
(RTCP) unless explicitly stated otherwise. RTCP is a fundamental and
integral part of the RTP protocol, and is REQUIRED to be implemented.
1.1. Expected Topologies 3.1. Expected Topologies
As RTC-Web is focused on peer to peer connections established from As WebRTC is focused on peer to peer connections established from
clients in web browsers the following topologies further discussed in clients in web browsers the following topologies further discussed in
RTP Topologies [RFC5117] are primarily considered. The topologies RTP Topologies [RFC5117] are primarily considered. The topologies
are depicted and briefly explained here for ease of the reader. are depicted and briefly explained here for ease of the reader.
+---+ +---+ +---+ +---+
| A |<------->| B | | A |<------->| B |
+---+ +---+ +---+ +---+
Figure 1: Point to Point Figure 1: Point to Point
skipping to change at page 4, line 30 skipping to change at page 5, line 32
v v v v
+---+ +---+
| C | | C |
+---+ +---+
Figure 2: Multi-unicast Figure 2: Multi-unicast
For small multiparty sessions it is practical enough to create RTP For small multiparty sessions it is practical enough to create RTP
sessions by letting every participant send individual unicast RTP/UDP sessions by letting every participant send individual unicast RTP/UDP
flows to each of the other participants. This is called multi- flows to each of the other participants. This is called multi-
unicast and is unfortunately not discussed in the RTP Topologies unicast (Figure 2), and is unfortunately not discussed in the RTP
[RFC5117]. This topology has the benefit of not requiring central Topologies [RFC5117]. This topology has the benefit of not requiring
nodes. The downside is that it increases the used bandwidth at each central nodes. The downside is that it increases the used bandwidth
sender by requiring one copy of the media streams for each at each sender by requiring one copy of the media streams for each
participant that are part of the same session beyond the sender participant that are part of the same session beyond the sender
itself. Thus this is limited to scenarios with few end-points unless itself. Thus this is limited to scenarios with few end-points unless
the media is very low bandwidth. the media is very low bandwidth.
It needs to be noted that, if this topology is to be supported by the This topology may be implemented as a single RTP session, spanning
RTC-Web framework, it needs to be possible to connect one RTP session multiple peer to peer transport layer connections, or as several
to multiple established peer to peer flows that are individually pairwise RTP sessions, one between each pair of peers. The later
established. approach simplifies rate adaptation, but reduces the effectiveness of
RTCP for debugging purposes, by limiting the ability to send third-
party RTCP reports.
+---+ +------------+ +---+ +---+ +------------+ +---+
| A |<---->| |<---->| B | | A |<---->| |<---->| B |
+---+ | | +---+ +---+ | | +---+
| Mixer | | Mixer |
+---+ | | +---+ +---+ | | +---+
| C |<---->| |<---->| D | | C |<---->| |<---->| D |
+---+ +------------+ +---+ +---+ +------------+ +---+
Figure 3: RTP Mixer with Only Unicast Paths Figure 3: RTP Mixer with Only Unicast Paths
skipping to change at page 5, line 41 skipping to change at page 7, line 4
+------------+ +------------+
| | | |
+---+ | | +---+ +---+ | | +---+
| A |<---->| Translator |<---->| B | | A |<---->| Translator |<---->| B |
+---+ | | +---+ +---+ | | +---+
| | | |
+------------+ +------------+
Figure 5: Translator towards Legacy end-point Figure 5: Translator towards Legacy end-point
To support legacy end-point (B) that don't fulfil the requirements of To support legacy end-point (B) that don't fulfil the requirements of
RTC-Web it is possible to insert a Translator (Figure 5) that takes WebRTC it is possible to insert a Translator (Figure 5) that takes on
on the role to ensure that from A's perspective B looks like a fully the role to ensure that from A's perspective B looks like a fully
compliant end-point. Thus it is the combination of the Translator compliant end-point. Thus it is the combination of the Translator
and B that looks like the end-point B. The intention is that the and B that looks like the end-point B. The intention is that the
presence of the translator is transparent to A, however it is not presence of the translator is transparent to A, however it is not
certain that is possible. Thus this case is include so that it can certain that is possible. Thus this case is include so that it can
be discussed if any mechanism specified to be used for RTC-Web be discussed if any mechanism specified to be used for WebRTC results
results in such issues and how to handle them. in such issues and how to handle them.
2. Requirements from RTP 3.2. Requirements from RTP
This section discusses some requirements RTP and RTCP [RFC3550] place This section discusses some requirements RTP and RTCP [RFC3550] place
on their underlying transport protocol, the signalling channel, etc. on their underlying transport protocol, the signalling channel, etc.
2.1. Signalling for RTP sessions 3.2.1. Signalling for RTP sessions
RTP is built with the assumption of an external to RTP/RTCP RTP is built with the assumption of an external to RTP/RTCP
signalling channel to configure the RTP sessions and its functions. signalling channel to configure the RTP sessions and its functions.
The basic configuration of an RTP session consists of the following The basic configuration of an RTP session consists of the following
parameters: parameters:
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 in addition to any presence of additional header fields in addition to any
cryptographic transformation of the packet content. cryptographic transformation of the packet content.
Transport Information: Source and destination address(s) and ports Transport Information: Source and destination address(s) and ports
for RTP and RTCP must be signalled for each RTP session. If RTP for RTP and RTCP MUST be signalled for each RTP session. If RTP
and RTCP multiplexing [RFC5761] is to be used, such that a single and RTCP multiplexing [RFC5761] is to be used, such that a single
port is used for RTP and RTCP flows, this must be signalled. port is used for RTP and RTCP flows, this MUST be signalled (see
Section 5.1). If several RTP sessions are to be multiplexed onto
a single transport layer flow, this MUST also be signalled (see
Section 4.4).
RTP Payload Types, media formats, and media format parameters: The RTP Payload Types, media formats, and media format parameters: The
mapping between media type names (and hence the RTP payload mapping between media type names (and hence the RTP payload
formats to be used) and the RTP payload type numbers must be formats to be used) and the RTP payload type numbers must be
signalled. Each media type may also have a number of media type signalled. Each media type may also have a number of media type
parameters that must also be signalled to configure the codec and parameters that must also be signalled to configure the codec and
RTP payload format (the "a=fmtp:" line from SDP). RTP payload format (the "a=fmtp:" line from SDP).
RTP Extensions: The RTP extensions one intends to use need to be RTP Extensions: The RTP extensions one intends to use need to be
agreed upon, including any parameters for each respective agreed upon, including any parameters for each respective
skipping to change at page 7, line 11 skipping to change at page 8, line 28
bandwidths may lead to failure to interoperate. bandwidths may 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 an offer/answer exchange. RTP does not depend on SDP or on the
offer/answer model, but does require all the necessary parameters to offer/answer model, but does require all the necessary parameters to
be agreed somehow, and provided to the RTP implementation. We note be agreed somehow, and provided to the RTP implementation. We note
that in RTCWEB context it will depend on the signalling model and API that in RTCWEB context it will depend on the signalling model and API
how these parameters need to be configured but they will be need to how these parameters need to be configured but they will be need to
either set in the API or explicitly signalled between the peers. either set in the API or explicitly signalled between the peers.
2.2. (Lack of) Signalling for Payload Format Changes 3.2.2. (Lack of) Signalling for Payload Format Changes
As discussed in Section 2.1, the mapping between media type name, and As discussed in Section 3.2.1, the mapping between media type name,
its associated RTP payload format, and the RTP payload type number to and its associated RTP payload format, and the RTP payload type
be used for that format must be signalled as part of the session number to be used for that format must be signalled as part of the
setup. An endpoint may signal support for multiple media formats, or session setup. An endpoint may signal support for multiple media
multiple configurations of a single format, each using a different formats, or multiple configurations of a single format, each using a
RTP payload type number. If multiple formats are signalled by an different RTP payload type number. If multiple formats are signalled
endpoint, that endpoint is REQUIRED to be prepared to receive data by an endpoint, that endpoint is REQUIRED to be prepared to receive
encoded in any of those formats at any time. RTP does not require data encoded in any of those formats at any time (this is slightly
advance signalling for changes between formats that were signalled modified if several RTP sessions are multiplexed onto one transport
during the session setup. This is needed for rapid rate adaptation. layer connection, such that an endpoint must be prepared for a source
to switch between formats of the same media type at any time; see
Section 4.4). RTP does not require advance signalling for changes
between formats that were signalled during the session setup. This
is needed for rapid rate adaptation.
3. RTP Profile 4. WebRTC Use of RTP: Core Protocols
The "Extended Secure RTP Profile for Real-time Transport Control 4.1. RTP and RTCP
Protocol (RTCP)-Based Feedback (RTP/SAVPF)" [RFC5124] is REQUIRED to
be implemented. This builds on the basic RTP/AVP profile [RFC3551], The Real-time Transport Protocol (RTP) [RFC3550] is REQUIRED to be
the RTP/AVPF feedback profile [RFC4585], and the secure RTP/SAVP implemented as the media transport protocol for WebRTC. RTP itself
profile [RFC3711]. comprises two parts: the RTP data transfer protocol, and the RTP
control protocol (RTCP). RTCP is a fundamental and integral part of
the RTP protocol, and is REQUIRED to be implemented.
RTP and RTCP are flexible and extensible protocols that allow, on the
one hand, choosing from a variety of building blocks and combining
those to meet application needs, but on the other hand, offer the
ability to create extensions where existing mechanisms are not
sufficient. This memo requires a number of RTP and RTCP extensions
that have been shown to be provide important functionality in the
WebRTC context be implemented. It is possible that future extensions
will be needed: several documents provide guidelines for the use and
extension of RTP and RTCP, including Guidelines for Writers of RTP
Payload Format Specifications [RFC2736] and Guidelines for Extending
the RTP Control Protocol [RFC5968], and should be consulted before
extending this memo.
4.2. Choice of RTP Profile
The complete specification of RTP for a particular application domain
requires the choice of an RTP Profile. For WebRTC use, the "Extended
Secure RTP Profile for Real-time Transport Control Protocol (RTCP)-
Based Feedback (RTP/SAVPF)" [RFC5124] is REQUIRED to be implemented.
This builds on the basic RTP/AVP profile [RFC3551], the RTP/AVPF
feedback profile [RFC4585], and the secure RTP/SAVP profile
[RFC3711].
The RTP/AVPF part of RTP/SAVPF is required to get the improved RTCP The RTP/AVPF part of RTP/SAVPF is required to get the improved RTCP
timer model, that allows more flexible transmission of RTCP packets timer model, that allows more flexible transmission of RTCP packets
in response to events, rather than strictly according to bandwidth. in response to events, rather than strictly according to bandwidth.
This also saves RTCP bandwidth and will commonly only use the full This also saves RTCP bandwidth and will commonly only use the full
amount when there is a lot of events on which to send feedback. This amount when there is a lot of events on which to send feedback. This
functionality is needed to make use of the RTP conferencing functionality is needed to make use of the RTP conferencing
extensions discussed in Section 6.1. extensions discussed in Section 6.1. The improved RTCP timer model
defined by RTP/AVPF is backwards compatible with legacy systems that
implement only the RTP/AVP profile given some constraints on
parameter configuration such as RTCP banwidth and "trr-int".
The RTP/SAVP part of RTP/SAVPF is for support for Secure RTP (SRTP) The RTP/SAVP part of RTP/SAVPF is for support for Secure RTP (SRTP)
[RFC3711]. This provides media encryption, integrity protection, [RFC3711]. This provides media encryption, integrity protection,
replay protection and a limited form of source authentication. It replay protection and a limited form of source authentication. It
does not contain a specific keying mechanism, so that, and the set of does not contain a specific keying mechanism, so that, and the set of
security transforms, will be required to be chosen. It is possible security transforms, will be required to be chosen. It is possible
that a security mechanism operating on a lower layer than RTP can be that a security mechanism operating on a lower layer than RTP can be
used instead and that should be evaluated. However, the reasons for used instead and that should be evaluated. However, the reasons for
the design of SRTP should be taken into consideration in that the design of SRTP should be taken into consideration in that
discussion. discussion. A mandatory to implement media security mechanism
including keying must be required so that confidentialtiy, integrity
protection and source authentication of the media stream can be
provided when desired by the user.
4. RTP and RTCP Guidelines 4.3. Choice of RTP Payload Formats
RTP and RTCP are two flexible and extensible protocols that allow, on (tbd: say something about the choice of RTP Payload Format for
the one hand, choosing from a variety of building blocks and WebRTC. If there is a mandatory to implement set of codecs, this
combining those to meet application needs, and on the other hand, should reference them. In any case, it should reference a discussion
create extensions where existing mechanisms are not sufficient: from of signalling for the choice of codec, once that discussion reaches
new payload formats to RTP extension headers to additional RTCP closure.)
control packets.
Different informational documents provide guidelines to the use and 4.4. RTP Session Multiplexing
particularly the extension of RTP and RTCP, including the following:
Guidelines for Writers of RTP Payload Format Specifications [RFC2736]
and Guidelines for Extending the RTP Control Protocol [RFC5968].
5. RTP Optimisations An association amongst a set of participants communicating with RTP
is known as an RTP session. A participant may be involved in
multiple RTP sessions at the same time. In a multimedia session,
each medium has typically been carried in a separate RTP session with
its own RTCP packets (i.e., one RTP session for the audio, with a
separate RTP session running on a different transport connection for
the video; if SDP is used, this corresponds to one RTP session for
each "m=" line in the SDP). WebRTC implementations of RTP are
REQUIRED to implement support of multimedia sessions in this way, for
compatibility with legacy systems.
In today's networks, however, with the prolific use of Network
Address Translators (NAT) and Firewalls (FW), there is a desire to
reduce the number of transport layer ports used by real-time media
applications using RTP by combining multimedia traffic in a single
RTP session. (Details of how this is to be done are tbd, but see
[I-D.lennox-rtcweb-rtp-media-type-mux],
[I-D.holmberg-mmusic-sdp-bundle-negotiation] and
[I-D.westerlund-avtcore-multiplex-architecture].) WebRTC
implementations of RTP are REQUIRED to support multiplexing of
multimedia sessions onto a single RTP session according to (tbd). If
such RTP session multiplexing is to be used, this MUST be negotiated
during the signalling phase.
5. WebRTC Use of RTP: Optimisations
This section discusses some optimisations that makes RTP/RTCP work This section discusses some optimisations that makes RTP/RTCP work
better and more efficient and therefore are considered. better and more efficient and therefore are considered.
5.1. RTP and RTCP Multiplexing 5.1. RTP and RTCP Multiplexing
Historically, RTP and RTCP have been run on separate UDP ports. With Historically, RTP and RTCP have been run on separate UDP ports. With
the increased use of Network Address/Port Translation (NAPT) this has the increased use of Network Address/Port Translation (NAPT) this has
become problematic, since maintaining multiple NAT bindings can be become problematic, since maintaining multiple NAT bindings can be
costly. It also complicates firewall administration, since multiple costly. It also complicates firewall administration, since multiple
ports must be opened to allow RTP traffic. To reduce these costs and ports must be opened to allow RTP traffic. To reduce these costs and
session setup times, support for multiplexing RTP data packets and session setup times, support for multiplexing RTP data packets and
RTCP control packets on a single port [RFC5761] is REQUIRED. RTCP control packets on a single port [RFC5761] is REQUIRED.
Supporting this specification is generally a simplification in code, Supporting this specification is generally a simplification in code,
since it relaxes the tests in [RFC3550]. since it relaxes the tests in [RFC3550].
Note that the use of RTP and RTCP multiplexed on a single port Note that the use of RTP and RTCP multiplexed on a single port
ensures that there is occasional traffic sent on that port, even if ensures that there is occasional traffic sent on that port, even if
there is no active media traffic. This may be useful to keep-alive there is no active media traffic. This may be useful to keep-alive
NAT bindings. NAT bindings and is recommend method for application level keep-
alives of RTP sessions [RFC6263].
5.2. Reduced Size RTCP 5.2. Reduced Size RTCP
RTCP packets are usually sent as compound RTCP packets; and RFC 3550 RTCP packets are usually sent as compound RTCP packets; and RFC 3550
demands that those compound packets always start with an SR or RR demands that those compound packets always start with an SR or RR
packet. However, especially when using frequent feedback messages, packet. However, especially when using frequent feedback messages,
these general statistics are not needed in every packet and these general statistics are not needed in every packet and
unnecessarily increase the mean RTCP packet size and thus limit the unnecessarily increase the mean RTCP packet size and thus limit the
frequency at which RTCP packets can be sent within the RTCP bandwidth frequency at which RTCP packets can be sent within the RTCP bandwidth
share. share.
skipping to change at page 10, line 5 skipping to change at page 12, line 27
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, some may find long-term persistent identifiers devices. In addition, some may find long-term persistent identifiers
problematic from a privacy viewpoint. Accordingly, support for problematic from a privacy viewpoint. Accordingly, support for
generating a short-term persistent RTCP CNAMEs following method (b) generating a short-term persistent RTCP CNAMEs following method (b)
as specified in Section 4.2 of "Guidelines for Choosing RTP Control as specified in Section 4.2 of "Guidelines for Choosing RTP Control
Protocol (RTCP) Canonical Names (CNAMEs)" [RFC6222] is RECOMMENDED, Protocol (RTCP) Canonical Names (CNAMEs)" [RFC6222] is RECOMMENDED,
since this addresses both concerns. since this addresses both concerns.
6. RTP Extensions 6. WebRTC Use of RTP: Extensions
There are a number of RTP extensions that could be very useful in the There are a number of RTP extensions that could be very useful in the
RTC-Web context. One set is related to conferencing, others are more WebRTC context. One set is related to conferencing, others are more
generic in nature. generic in nature.
6.1. RTP Conferencing Extensions 6.1. Conferencing Extensions
RTP is inherently defined for group communications, whether using IP
multicast, multi-unicast, or based on a centralised server. In
today's practice, however, overlay-based conferencing dominates,
typically using one or a few so-called conference bridges or servers
to connect endpoints in a star or flat tree topology. Quite diverse
conferencing topologies can be created using the basic elements of
RTP mixers and translators as defined in RFC 3550.
An number of conferencing topologies are defined in [RFC5117] out of
the which the following ones are the more common (and most likely in
practice workable) ones:
1) RTP Translator (Relay) with Only Unicast Paths (RFC 5117, section RTP is inherently a group communication protocol. Groups can be
3.3) implemented using a centralised server, multi-unicast, or IP
multicast. While IP multicast was popular in early deployments, in
today's practice, overlay-based conferencing dominates, typically
using one or more central servers to connect endpoints in a star or
flat tree topology. These central servers can be implemented in a
number of ways [RFC5117], of which the following are the most common:
2) RTP Mixer with Only Unicast Paths (RFC 5117, section 3.4) 1. RTP Translator (Relay) with Only Unicast Paths ([RFC5117],
section 3.3)
3) Point to Multipoint Using a Video Switching MCU (RFC 5117, section 2. RTP Mixer with Only Unicast Paths ([RFC5117], section 3.4)
3.5)
4) Point to Multipoint Using Content Modifying MCUs (RFC 5117, 3. Point to Multipoint Using a Video Switching MCU ([RFC5117],
section 3.5)
4. Point to Multipoint Using Content Modifying MCUs ([RFC5117],
section 3.6) section 3.6)
We note that 3 and 4 are not well utilising the functions of RTP and As discussed in [RFC5117] section 3.5, the use of a video switching
in some cases even violates the RTP specifications. Thus we MCU makes the use of RTCP for congestion control, or any type of
recommend that one focus on 1 and 2. quality reports, very problematic. Also, as discussed in [RFC5117]
section 3.6, the use of a content modifying MCU with RTCP termination
breaks RTP loop detection and removes the ability for receivers to
identify active senders. According only the first two options are
recommended.
RTP protocol extensions to be used with conferencing are included RTP protocol extensions to be used with conferencing are included
because they are important in the context of centralised because they are important in the context of centralised
conferencing, where one RTP Mixer (Conference Focus) receives a conferencing, where one RTP Mixer (Conference Focus) receives a
participants media streams and distribute them to the other participants media streams and distribute them to the other
participants. These messages are defined in the Extended RTP Profile participants. These messages are defined in the 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 "Codec Control Messages in the RTP Audio- AVPF) [RFC4585] and the "Codec Control Messages in the RTP Audio-
Visual Profile with Feedback (AVPF)" (CCM) [RFC5104] and are fully Visual Profile with Feedback (AVPF)" (CCM) [RFC5104] and are fully
usable by the Secure variant of this profile (RTP/SAVPF) [RFC5124]. usable by the Secure variant of this profile (RTP/SAVPF) [RFC5124].
skipping to change at page 12, line 5 skipping to change at page 14, line 28
This feedback message is defined in Section 3.5.4 and 4.2.1 in CCM This feedback message is defined in Section 3.5.4 and 4.2.1 in CCM
[RFC5104]. This message and its notification message is used by a [RFC5104]. This message and its notification message is used by a
media receiver, to inform the sending party that there is a current media receiver, to inform the sending party that there is a current
limitation on the amount of bandwidth available to this receiver. limitation on the amount of bandwidth available to this receiver.
This can be for various reasons, and can for example be used by an This can be for various reasons, and can for example be used by an
RTP mixer to limit the media sender being forwarded by the mixer RTP mixer to limit the media sender being forwarded by the mixer
(without doing media transcoding) to fit the bottlenecks existing (without doing media transcoding) to fit the bottlenecks existing
towards the other session participants. It is RECOMMENDED that this towards the other session participants. It is RECOMMENDED that this
feedback message is supported. feedback message is supported.
6.2. RTP Header Extensions 6.2. Header Extensions
The RTP specification [RFC3550] provides a capability to extend the The RTP specification [RFC3550] provides a capability to extend the
RTP header with in-band data, but the format and semantics of the RTP header with in-band data, but the format and semantics of the
extensions are poorly specified. Accordingly, if header extensions extensions are poorly specified. Accordingly, if header extensions
are to be used, it is REQUIRED that they be formatted and signalled are to be used, it is REQUIRED that they be formatted and signalled
according to the general mechanism of RTP header extensions defined according to the general mechanism of RTP header extensions defined
in [RFC5285]. in [RFC5285].
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
skipping to change at page 12, line 31 skipping to change at page 15, line 5
is signalled (e.g., as defined by the payload type). Valid examples is signalled (e.g., as defined by the payload type). Valid examples
might include metadata that is additional to the usual RTP might include metadata that is additional to the usual RTP
information. information.
The RTP rapid synchronisation header extension [RFC6051] is The RTP rapid synchronisation header extension [RFC6051] is
recommended, as discussed in Section 6.3 we also recommend the client recommended, as discussed in Section 6.3 we also recommend the client
to mixer audio level [I-D.ietf-avtext-client-to-mixer-audio-level], to mixer audio level [I-D.ietf-avtext-client-to-mixer-audio-level],
and consider the mixer to client audio level and consider the mixer to client audio level
[I-D.ietf-avtext-mixer-to-client-audio-level] as optional feature. [I-D.ietf-avtext-mixer-to-client-audio-level] as optional feature.
It is RECOMMENDED that the mechanism to encrypt header extensions It is REQUIRED that the mechanism to encrypt header extensions
[I-D.ietf-avtcore-srtp-encrypted-header-ext] is implemented when the [I-D.ietf-avtcore-srtp-encrypted-header-ext] is implemented when the
client-to-mixer and mixer-to-client audio level indications are in client-to-mixer or mixer-to-client audio level indications are in use
use in SRTP encrypted sessions, since the information contained in in SRTP encrypted sessions, since the information contained in these
these header extensions may be considered sensitive. header extensions may be considered sensitive.
Currently the other header extensions are not recommended to be
included at this time. But we do include a list of the available
ones for information below:
Transmission Time offsets: [RFC5450] defines a format for including
an RTP timestamp offset of the actual transmission time of the RTP
packet in relation to capture/display timestamp present in the RTP
header. This can be used to improve jitter determination and
buffer management.
Associating Time-Codes with RTP Streams: [RFC5484] defines how to
associate SMPTE times codes with the RTP streams.
6.3. Rapid Synchronisation Extensions 6.3. Rapid Synchronisation Extensions
Many RTP sessions require synchronisation between audio, video, and Many RTP sessions require synchronisation between audio, video, and
other content. This synchronisation is performed by receivers, using other content. This synchronisation is performed by receivers, using
information contained in RTCP SR packets, as described in the RTP information contained in RTCP SR packets, as described in the RTP
specification [RFC3550]. This basic mechanism can be slow, however, specification [RFC3550]. This basic mechanism can be slow, however,
so it is RECOMMENDED that the rapid RTP synchronisation extensions so it is RECOMMENDED that the rapid RTP synchronisation extensions
described in [RFC6051] be implemented. The rapid synchronisation described in [RFC6051] be implemented. The rapid synchronisation
extensions use the general RTP header extension mechanism [RFC5285], extensions use the general RTP header extension mechanism [RFC5285],
which requires signalling, but are otherwise backwards compatible. which requires signalling, but are otherwise backwards compatible.
6.4. Client to Mixer Audio Level 6.4. Mixer Audio Level Extensions
6.4.1. Client to Mixer Audio Level
The Client to Mixer Audio Level The Client to Mixer Audio Level
[I-D.ietf-avtext-client-to-mixer-audio-level] is an RTP header [I-D.ietf-avtext-client-to-mixer-audio-level] is an RTP header
extension used by a client to inform a mixer about the level of audio extension used by a client to inform a mixer about the level of audio
activity in the packet the header is attached to. This enables a activity in the packet the header is attached to. This enables a
central node to make mixing or selection decisions without decoding central node to make mixing or selection decisions without decoding
or detailed inspection of the payload. Thus reducing the needed or detailed inspection of the payload. Thus reducing the needed
complexity in some types of central RTP nodes. complexity in some types of central RTP nodes.
Assuming that the Client to Mixer Audio Level Assuming that the Client to Mixer Audio Level
[I-D.ietf-avtext-client-to-mixer-audio-level] is published as a [I-D.ietf-avtext-client-to-mixer-audio-level] is published as a
finished specification prior to RTCWEB's first RTP specification then finished specification prior to RTCWEB's first RTP specification then
it is RECOMMENDED that this extension is included. it is RECOMMENDED that this extension is included.
6.5. Mixer to Client Audio Level 6.4.2. Mixer to Client Audio Level
The Mixer to Client Audio Level header extension The Mixer to Client Audio Level header extension
[I-D.ietf-avtext-mixer-to-client-audio-level] provides the client [I-D.ietf-avtext-mixer-to-client-audio-level] provides the client
with the audio level of the different sources mixed into a common mix with the audio level of the different sources mixed into a common mix
from the RTP mixer. Thus enabling a user interface to indicate the from the RTP mixer. Thus enabling a user interface to indicate the
relative activity level of a session participant, rather than just relative activity level of a session participant, rather than just
being included or not based on the CSRC field. This is a pure being included or not based on the CSRC field. This is a pure
optimisations of non critical functions and thus optional optimisations of non critical functions and thus optional
functionality. functionality.
Assuming that the Mixer to Client Audio Level Assuming that the Mixer to Client Audio Level
[I-D.ietf-avtext-client-to-mixer-audio-level] is published as a [I-D.ietf-avtext-client-to-mixer-audio-level] is published as a
finished specification prior to RTCWEB's first RTP specification then finished specification prior to RTCWEB's first RTP specification then
it is OPTIONAL that this extension is included. it is OPTIONAL that this extension is included.
7. Improving RTP Transport Robustness 7. WebRTC Use of RTP: Improving Transport Robustness
There are some tools that can make RTP flows robust against Packet There are some tools that can make RTP flows robust against Packet
loss and reduce the impact on media quality. However they all add loss and reduce the impact on media quality. However they all add
extra bits compared to a non-robust stream. These extra bits needs extra bits compared to a non-robust stream. These extra bits needs
to be considered and the aggregate bit-rate needs to be rate to be considered and the aggregate bit-rate needs to be rate
controlled. Thus improving robustness might require a lower base controlled. Thus improving robustness might require a lower base
encoding quality but has the potential to give that quality with encoding quality but has the potential to give that quality with
fewer errors in it. fewer errors in it.
7.1. RTP Retransmission 7.1. Retransmission
Support for RTP retransmission as defined by "RTP Retransmission Support for RTP retransmission as defined by "RTP Retransmission
Payload Format" [RFC4588] is RECOMMENDED. Payload Format" [RFC4588] is RECOMMENDED.
The retransmission scheme in RTP allows flexible application of The retransmission scheme in RTP allows flexible application of
retransmissions. Only selected missing packets can be requested by retransmissions. Only selected missing packets can be requested by
the receiver. It also allows for the sender to prioritise between the receiver. It also allows for the sender to prioritise between
missing packets based on senders knowledge about their content. missing packets based on senders knowledge about their content.
Compared to TCP, RTP retransmission also allows one to give up on a Compared to TCP, RTP retransmission also allows one to give up on a
packet that despite retransmission(s) still has not been received packet that despite retransmission(s) still has not been received
within a time window. within a time window.
"RTC-Web Media Transport Requirements" [I-D.cbran-rtcweb-data] raises "WebRTC Media Transport Requirements" [I-D.cbran-rtcweb-data] raises
two issues that they think makes RTP Retransmission unsuitable for two issues that they think makes RTP Retransmission unsuitable for
RTCWEB. We here consider these issues and explain why they are in RTCWEB. We here consider these issues and explain why they are in
fact not a reason to exclude RTP retransmission from the tool box fact not a reason to exclude RTP retransmission from the tool box
available to RTCWEB media sessions. available to RTCWEB media sessions.
The additional latency added by [RFC4588] will exceed the latency The additional latency added by [RFC4588] will exceed the latency
threshold for interactive voice and video: RTP Retransmission will threshold for interactive voice and video: RTP Retransmission will
require at least one round trip time for a retransmission request require at least one round trip time for a retransmission request
and repair packet to arrive. Thus the general suitability of and repair packet to arrive. Thus the general suitability of
using retransmissions will depend on the actual network path using retransmissions will depend on the actual network path
latency between the end-points. In many of the actual usages the latency between the end-points. In many of the actual usages the
latency between two end-points will be low enough for RTP latency between two end-points will be low enough for RTP
retransmission to be effective. Interactive communication with retransmission to be effective. Interactive communication with
end-to-end delays of 400 ms still provide a fair quality. Even end-to-end delays of 400 ms still provide a fair quality. Even
removing half of that in end-point delays allows functional removing half of that in end-point delays allows functional
retransmission between end-points on the continent. In addition retransmission between end-points on the same continent. In
in some applications one may accept temporary delay spikes to addition, some applications may accept temporary delay spikes to
allow for retransmission of crucial codec information such an allow for retransmission of crucial codec information such an
parameter sets, intra picture etc, rather than getting no media at parameter sets, intra picture etc, rather than getting no media at
all. all.
The undesirable increase in packet transmission at the point when The undesirable increase in packet transmission at the point when
congestion occurs: Congestion loss will impact the rate controls congestion occurs: Congestion loss will impact the rate controls
view of available bit-rate for transmission. When using view of available bit-rate for transmission. When using
retransmission one will have to prioritise between performing retransmission one will have to prioritise between performing
retransmissions and the quality one can achieve with ones retransmissions and the quality one can achieve with ones
adaptable codecs. In many use cases one prefer error free or low adaptable codecs. In many use cases one prefer error free or low
skipping to change at page 15, line 31 skipping to change at page 17, line 40
Support of some type of FEC to combat the effects of packet loss is Support of some type of FEC to combat the effects of packet loss is
beneficial, but is heavily application dependent. However, some FEC beneficial, but is heavily application dependent. However, some FEC
mechanisms are encumbered. mechanisms are encumbered.
The main benefit from FEC is the relatively low additional delay The main benefit from FEC is the relatively low additional delay
needed to protect against packet losses. The transmission of any needed to protect against packet losses. The transmission of any
repair packets should preferably be done with a time delay that is repair packets should preferably be done with a time delay that is
just larger than any loss events normally encountered. That way the just larger than any loss events normally encountered. That way the
repair packet isn't also lost in the same event as the source data. repair packet isn't also lost in the same event as the source data.
The amount of repair packets needed are also highly dynamically and The amount of repair packets needed varies depending on the amount
depends on two main factors, the amount and pattern of lost packets and pattern of packet loss to be recovered, and on the mechanism used
to be recovered and the mechanism one use to derive repair data. The to derive repair data. The later choice also effects the the
later choice also effects the the additional delay required to both additional delay required to both encode the repair packets and in
encode the repair packets and in the receiver to be able to recover the receiver to be able to recover the lost packet(s).
the lost packet(s).
7.2.1. Basic Redundancy 7.2.1. Basic Redundancy
The method for providing basic redundancy is to simply retransmit an The method for providing basic redundancy is to simply retransmit a
some time earlier sent packet. This is relatively simple in theory, some time earlier sent packet. This is relatively simple in theory,
i.e. one saves any outgoing source (original) packet in a buffer i.e. one saves any outgoing source (original) packet in a buffer
marked with a timestamp of actual transmission, some X ms later one marked with a timestamp of actual transmission, some X ms later one
transmit this packet again. Where X is selected to be longer than transmit this packet again. Where X is selected to be longer than
the common loss events. Thus any loss events shorter than X can be the common loss events. Thus any loss events shorter than X can be
recovered assuming that one doesn't get an another loss event before recovered assuming that one doesn't get an another loss event before
all the packets lost in the first event has been received. all the packets lost in the first event has been received.
The downside of basic redundancy is the overhead. To provide each The downside of basic redundancy is the overhead. To provide each
packet with once chance of recovery, then the transmission rate packet with once chance of recovery, then the transmission rate
skipping to change at page 16, line 13 skipping to change at page 18, line 21
possible to only redundantly send really important packets thus possible to only redundantly send really important packets thus
reducing the overhead below 100% for some other trade-off is reducing the overhead below 100% for some other trade-off is
overhead. overhead.
In addition the basic retransmission of the same packet using the In addition the basic retransmission of the same packet using the
same SSRC in the same RTP session is not possible in RTP context. same SSRC in the same RTP session is not possible in RTP context.
The reason is that one would then destroy the RTCP reporting if one The reason is that one would then destroy the RTCP reporting if one
sends the same packet twice with the same sequence number. Thus one sends the same packet twice with the same sequence number. Thus one
needs more elaborate mechanisms. needs more elaborate mechanisms.
RTP Payload Format Support: Some RTP payload format do support basic
redundancy within the RTP paylaod format itself. Examples are
AMR-WB [RFC4867] and G.719 [RFC5404].
RTP Payload for Redundant Audio Data: This audio and text redundancy RTP Payload for Redundant Audio Data: This audio and text redundancy
format defined in [RFC2198] allows for multiple levels of format defined in [RFC2198] allows for multiple levels of
redundancy with different delay in their transmissions, as long as redundancy with different delay in their transmissions, as long as
the source plus payload parts to be redundantly transmitted the source plus payload parts to be redundantly transmitted
together fits into one MTU. This should work fine for most together fits into one MTU. This should work fine for most
interactive use cases as both the codec bit-rates and the framing interactive audio and text use cases as both the codec bit-rates
intervals normally allow for this requirement to hold. This and the framing intervals normally allow for this requirement to
payload format also don't increase the packet rate, as original hold. This payload format also don't increase the packet rate, as
data and redundant data are sent together. This format does not original data and redundant data are sent together. This format
allow perfect recovery, only recovery of information deemed does not allow perfect recovery, only recovery of information
necessary for audio, for example the sequence number of the deemed necessary for audio, for example the sequence number of the
original data is lost. original data is lost.
RTP Retransmission Format: The RTP Retransmission Payload format RTP Retransmission Format: The RTP Retransmission Payload format
[RFC4588] can be used to pro-actively send redundant packets using [RFC4588] can be used to pro-actively send redundant packets using
either SSRC or session multiplexing. By using different SSRCs or either SSRC or session multiplexing. By using different SSRCs or
a different session for the redundant packets the RTCP receiver a different session for the redundant packets the RTCP receiver
reports will be correct. The retransmission payload format is reports will be correct. The retransmission payload format is
used to recover the packets original data thus enabling a perfect used to recover the packets original data thus enabling a perfect
recovery. recovery.
Duplication Grouping Semantics in the Session Description Protocol: Duplication Grouping Semantics in the Session Description Protocol:
This [I-D.begen-mmusic-redundancy-grouping] is proposal for new This [I-D.begen-mmusic-redundancy-grouping] is proposal for new
SDP signalling to indicate media stream duplication using SDP signalling to indicate media stream duplication using
different RTP sessions, or different SSRCs to separate the source different RTP sessions, or different SSRCs to separate the source
and the redundant copy of the stream. and the redundant copy of the stream.
7.2.2. Block Based 7.2.2. Block Based FEC
Block based redundancy collects a number of source packets into a Block based redundancy collects a number of source packets into a
data block for processing. The processing results in some number of data block for processing. The processing results in some number of
repair packets that is then transmitted to the other end allowing the repair packets that is then transmitted to the other end allowing the
receiver to attempt to recover some number of lost packets in the receiver to attempt to recover some number of lost packets in the
block. The benefit of block based approaches is the overhead which block. The benefit of block based approaches is the overhead which
can be lower than 100% and still recover one or more lost source can be lower than 100% and still recover one or more lost source
packet from the block. The optimal block codes allows for each packet from the block. The optimal block codes allows for each
received repair packet to repair a single loss within the block. received repair packet to repair a single loss within the block.
Thus 3 repair packets that are received should allow for any set of 3 Thus 3 repair packets that are received should allow for any set of 3
skipping to change at page 17, line 42 skipping to change at page 20, line 9
[I-D.ietf-fecframe-framework] defines how not only RTP packets but [I-D.ietf-fecframe-framework] defines how not only RTP packets but
how arbitrary packet flows can be protected. Some solutions how arbitrary packet flows can be protected. Some solutions
produced or under development in FECFRAME WG are RTP specific. produced or under development in FECFRAME WG are RTP specific.
There exist alternatives supporting block codes such as Reed- There exist alternatives supporting block codes such as Reed-
Salomon and Raptor. Salomon and Raptor.
7.2.3. Recommendations for FEC 7.2.3. Recommendations for FEC
(tbd) (tbd)
8. RTP Rate Control and Media Adaptation 8. WebRTC Use of RTP: Rate Control and Media Adaptation
It is REQUIRED to have an RTP Rate Control mechanism using Media WebRTC will be used in very varied network environment with a
adaptation to ensure that the generated RTP flows are network hetrogenous set of link technologies, including wired and wireless,
friendly, and maintain the user experience in the presence of network interconnecting peers at different topological locations resulting in
problems. network paths with widely varying one way delays, bit-rate capacity,
load levels and traffic mixes. In addition individual end-points
will open one or more WebRTC sessions between one or more peers.
Each of these session may contain different mixes of media and data
flows. Assymetric usage of media bit-rates and number of media
streams is also to be expected. A single end-point may receive zero
to many simultanous media streams while itself transmitting one or
more streams.
The WebRTC application is very dependent from a quality perspective
on the media adapation working well so that an end-point doesn't
transmit significantly more than the path is capable of handling. If
it would, the result would be high levels of packet loss or delay
spikes causing media degradations.
WebRTC applications using more than a single media stream of any
media type or data flows has an additional concern. In this case the
different flows should try to avoid affecting each other negatively.
In addition in case there is a resource limiation, the available
resources needs to be shared. How to share them is something the
application should prioritize so that the limiation in quality or
capabilities are the ones that provide the least affect on the
application.
This hetrogenous situation results in a requirement to have
functionality that adapts to the available capacity and that competes
fairly with other network flows. If it would not compete fairly
enough WebRTC could be used as an attack method for starving out
other traffic on specific links as long as the attacker is able to
create traffic across a specific link. This is not far-fetched for a
web-service capable of attracting large number of end-points and use
the service, combined with BGP routing state a server could pick
client pairs to drive traffic to specific paths.
The above estalish a clear need based on several reasons why there
need to be a well working media adaptation mechanism. This mechanism
also have a number of requirements on what services it should provide
and what performance it needs to provide.
The biggest issue is that there are no standardised and ready to use The biggest issue is that there are no standardised and ready to use
mechanism that can simply be included in RTC-Web. Thus there will be mechanism that can simply be included in WebRTC Thus there will be
need for the IETF to produce such a specification. A potential need for the IETF to produce such a specification. Therefore the
starting point for defining a solution is "RTP with TCP Friendly Rate suggested way forward is to specify requirements on any solution for
Control" [rtp-tfrc]. the media adaptation. These requirements is for now proposed to be
documented in this specification. In addition a proposed detailed
solution will be developed, but is expected to take longer time to
finalize than this document.
9. RTP Performance Monitoring 8.1. Rate Control Requirements
Note: This section does not yet have WG consensus.
This section provides a number of requirements on an media
adaptation/congestion control solution for WebRTC.
1. All WebRTC media streams MUST be congestion-controlled. (The
same requirement apply to data streams)
2. The congestion algorithms used MUST cause WebRTC streams to act
reasonably fairly with TCP and other congestion-controlled flows,
such as DCCP and TFRC, and other WebRTC flows. Note that WebRTC
involves multiple data flows which "normally" would be separately
congestion-controlled.
3. The congestion control mechanism MUST be possible to realize
between two indendently implemented WebRTC end-points.
4. The congestion control algorithm SHOULD attempt to minimize the
media-stream end-to-end delays between the participants, by
controlling bandwidth appropriately.
5. The congestion control SHOULD allow for prioritization and
shifting of banwidth between media flows. In other words, if one
flow on the same path as another has to adjust its bit-rate the
other flow can perform that adjustment instead, or divided
between the flows.
Thus it is REQUIRED to have an implementation of an RTP Rate Control
mechanism fulfilling the above requirements.
8.2. RTCP Limiations
Experience with the congestion control algorithms of TCP [RFC5681],
TFRC [RFC5348], and DCCP [RFC4341], [RFC4342], [RFC4828], has shown
that feedback on packet arrivals needs to be sent roughly once per
round trip time. We note that the capabilities of real-time media
traffic to adapt to changing path conditions may be less rapid than
for the elastic applications TCP was designed for, but frequent
feedback is still required to allow the congestion control algorithm
to track the path dynamics.
The total RTCP bandwidth is limited in its transmission rate to a
fraction of the RTP traffic (by default 5%). RTCP packets are larger
than, e.g., TCP ACKs (even when non-compound RTCP packets are used).
The media stream bit rate thus limits the maximum feedback rate as a
function of the mean RTCP packet size.
Interactive communication may not be able to afford waiting for
packet losses to occur to indicate congestion, because an increase in
playout delay due to queuing (most prominent in wireless networks)
may easily lead to packets being dropped due to late arrival at the
receiver. Therefore, more sophisticated cues may need to be reported
-- to be defined in a suitable congestion control framework as noted
above -- which, in turn, increase the report size again. For
example, different RTCP XR report blocks (jointly) provide the
necessary details to implement a variety of congestion control
algorithms, but the (compound) report size grows quickly.
In group communication, the share of RTCP bandwidth needs to be
shared by all group members, reducing the capacity and thus the
reporting frequency per node.
Example: assuming 512 kbit/s video yields 3200 bytes/s RTCP
bandwidth, split across two entities in a point-to-point session. An
endpoint could thus send a report of 100 bytes about every 70ms or
for every other frame in a 30 fps video.
8.3. Legacy Interop Limitations
Congestion control interoperability with most type of legacy devices,
even using an translator could be difficult. There are numerous
reasons for this:
No RTCP Support: There exist legacy implementations that does not
even implement RTCP at all. Thus no feedback at all is provided.
RTP/AVP Minimal RTCP Interval of 5s: RTP [RFC3550] under the RTP/AVP
profile specifies a recommended minimal fixed interval of 5
seconds. Sending RTCP report blocks as seldom as 5 seconds makes
it very difficult for a sender to use these reports and react to
any congestion event.
RTP/AVP Scaled Minimal Interval: If a legacy device uses the scaled
minimal RTCP compound interval, the "RECOMMENDED value for the
reduced minimum in seconds is 360 divided by the session bandwidth
in kilobits/second" ([RFC3550], section 6.2). The minimal
interval drops below a second, still several times the RTT in
almost all paths in the Internet, when the session bandwidht
becomes 360 kbps. A session bandwidth of 1 Mbps still has a
minimal interval of 360 ms. Thus, with the exception for rather
high bandwidth sessions, getting frequent enough RTCP Report
Blocks to report on the order of the RTT is very difficult as long
as the legacy device uses the RTP/AVP profile.
RTP/AVPF Supporting Legacy Device: If a legacy device supports RTP/
AVPF, then that enables negotation of important parameters for
frequent reporting, such as the "trr-int" parameter, and the
possibility that the end-point supports some useful feedback
format for congestion control purpose such as TMMBR [RFC5104].
It has been suggested on the RTCWEB mailing list that if
interoperating with really limited legacy devices an WebRTC end-point
may not send more than 64 kbps of media streams, to avoid it causing
massive congestion on most paths in the Internet when communicating
with a legacy node not providing sufficient feedback for effective
congestion control. This warrants further discussion as there is
clearly a number of link layers that don't even provide that amount
of bit-rate consistently, and that assumes no competing traffic.
9. WebRTC Use of RTP: Performance Monitoring
RTCP does contains a basic set of RTP flow monitoring points like RTCP does contains a basic set of RTP flow monitoring points like
packet loss and jitter. There exist a number of extensions that packet loss and jitter. There exist a number of extensions that
could be included in the set to be supported. However, in most cases could be included in the set to be supported. However, in most cases
which RTP monitoring that is needed depends on the application, which which RTP monitoring that is needed depends on the application, which
makes it difficult to select which to include when the set of makes it difficult to select which to include when the set of
applications is very large. applications is very large.
Exposing some metrics in the WebRTC API should be considered allowing
the application to gather the measurements of interest. However,
security implications for the different data sets exposed will need
to be considered in this.
10. IANA Considerations 10. IANA Considerations
This memo makes no request of IANA. This memo makes no request of IANA.
Note to RFC Editor: this section may be removed on publication as an Note to RFC Editor: this section may be removed on publication as an
RFC. RFC.
11. Security Considerations 11. Security Considerations
RTP and its various extensions each have their own security RTP and its various extensions each have their own security
considerations. These should be taken into account when considering considerations. These should be taken into account when considering
the security properties of the complete suite. We currently don't the security properties of the complete suite. We currently don't
think this suite creates any additional security issues or think this suite creates any additional security issues or
properties. The use of SRTP [RFC3711] will provide protection or properties. The use of SRTP [RFC3711] will provide protection or
mitigation against all the fundamental issues by offering mitigation against all the fundamental issues by offering
confidentiality, integrity and partial source authentication. The confidentiality, integrity and partial source authentication. A
guidelines in [I-D.ietf-avtcore-srtp-vbr-audio] apply when using mandatory to implement media security solution will be required to be
variable bit rate (VBR) audio codecs, for example Opus. picked. We currently don't discuss the key-management aspect of SRTP
in this memo, that needs to be done taking the WebRTC communication
model into account.
We don't discuss the key-management aspect of SRTP in this memo, that The guidelines in [I-D.ietf-avtcore-srtp-vbr-audio] apply when using
needs to be done taking the RTC-Web communication model into account. variable bit rate (VBR) audio codecs, for example Opus or the Mixer
audio level header extensions.
In the context of RTC-Web the actual security properties required Security considerations for the WebRTC work are discussed in
from RTP are currently not fully understood. Until security goals [I-D.ietf-rtcweb-security].
and requirements are specified it will be difficult to determine what
security features in addition to SRTP and a suitable key-management,
if any, that are needed.
12. Acknowledgements 12. Acknowledgements
The authors would like to thank Harald Alvestrand, Cary Bran, and
Cullen Jennings for valuable feedback.
13. References 13. References
13.1. Normative References 13.1. Normative References
[I-D.holmberg-mmusic-sdp-bundle-negotiation]
Holmberg, C. and H. Alvestrand, "Multiplexing Negotiation
Using Session Description Protocol (SDP) Port Numbers",
draft-holmberg-mmusic-sdp-bundle-negotiation-00 (work in
progress), October 2011.
[I-D.ietf-avtcore-srtp-encrypted-header-ext] [I-D.ietf-avtcore-srtp-encrypted-header-ext]
Lennox, J., "Encryption of Header Extensions in the Secure Lennox, J., "Encryption of Header Extensions in the Secure
Real-Time Transport Protocol (SRTP)", Real-Time Transport Protocol (SRTP)",
draft-ietf-avtcore-srtp-encrypted-header-ext-00 (work in draft-ietf-avtcore-srtp-encrypted-header-ext-00 (work in
progress), June 2011. progress), June 2011.
[I-D.ietf-avtcore-srtp-vbr-audio] [I-D.ietf-avtcore-srtp-vbr-audio]
Perkins, C. and J. Valin, "Guidelines for the use of Perkins, C. and J. Valin, "Guidelines for the use of
Variable Bit Rate Audio with Secure RTP", Variable Bit Rate Audio with Secure RTP",
draft-ietf-avtcore-srtp-vbr-audio-03 (work in progress), draft-ietf-avtcore-srtp-vbr-audio-03 (work in progress),
skipping to change at page 19, line 35 skipping to change at page 25, line 23
draft-ietf-avtext-client-to-mixer-audio-level-03 (work in draft-ietf-avtext-client-to-mixer-audio-level-03 (work in
progress), July 2011. progress), July 2011.
[I-D.ietf-avtext-mixer-to-client-audio-level] [I-D.ietf-avtext-mixer-to-client-audio-level]
Ivov, E., Marocco, E., and J. Lennox, "A Real-Time Ivov, E., Marocco, E., and J. Lennox, "A Real-Time
Transport Protocol (RTP) Header Extension for Mixer-to- Transport Protocol (RTP) Header Extension for Mixer-to-
Client Audio Level Indication", Client Audio Level Indication",
draft-ietf-avtext-mixer-to-client-audio-level-03 (work in draft-ietf-avtext-mixer-to-client-audio-level-03 (work in
progress), July 2011. progress), July 2011.
[I-D.ietf-rtcweb-security]
Rescorla, E., "Security Considerations for RTC-Web",
draft-ietf-rtcweb-security-01 (work in progress),
October 2011.
[I-D.lennox-rtcweb-rtp-media-type-mux]
Lennox, J. and J. Rosenberg, "Multiplexing Multiple Media
Types In a Single Real-Time Transport Protocol (RTP)
Session", draft-lennox-rtcweb-rtp-media-type-mux-00 (work
in progress), October 2011.
[I-D.westerlund-avtcore-multiplex-architecture]
Westerlund, M., Burman, B., and C. Perkins, "RTP
Multiplexing Architecture",
draft-westerlund-avtcore-multiplex-architecture-00 (work
in progress), October 2011.
[RFC2736] Handley, M. and C. Perkins, "Guidelines for Writers of RTP [RFC2736] Handley, M. and C. Perkins, "Guidelines for Writers of RTP
Payload Format Specifications", BCP 36, RFC 2736, Payload Format Specifications", BCP 36, RFC 2736,
December 1999. December 1999.
[RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V.
Jacobson, "RTP: A Transport Protocol for Real-Time Jacobson, "RTP: A Transport Protocol for Real-Time
Applications", STD 64, RFC 3550, July 2003. Applications", STD 64, RFC 3550, July 2003.
[RFC3551] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and [RFC3551] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and
Video Conferences with Minimal Control", STD 65, RFC 3551, Video Conferences with Minimal Control", STD 65, RFC 3551,
skipping to change at page 20, line 32 skipping to change at page 26, line 39
[RFC5109] Li, A., "RTP Payload Format for Generic Forward Error [RFC5109] Li, A., "RTP Payload Format for Generic Forward Error
Correction", RFC 5109, December 2007. Correction", RFC 5109, December 2007.
[RFC5124] Ott, J. and E. Carrara, "Extended Secure RTP Profile for [RFC5124] Ott, J. and E. Carrara, "Extended Secure RTP Profile for
Real-time Transport Control Protocol (RTCP)-Based Feedback Real-time Transport Control Protocol (RTCP)-Based Feedback
(RTP/SAVPF)", RFC 5124, February 2008. (RTP/SAVPF)", RFC 5124, February 2008.
[RFC5285] Singer, D. and H. Desineni, "A General Mechanism for RTP [RFC5285] Singer, D. and H. Desineni, "A General Mechanism for RTP
Header Extensions", RFC 5285, July 2008. Header Extensions", RFC 5285, July 2008.
[RFC5450] Singer, D. and H. Desineni, "Transmission Time Offsets in
RTP Streams", RFC 5450, March 2009.
[RFC5484] Singer, D., "Associating Time-Codes with RTP Streams",
RFC 5484, March 2009.
[RFC5506] Johansson, I. and M. Westerlund, "Support for Reduced-Size [RFC5506] Johansson, I. and M. Westerlund, "Support for Reduced-Size
Real-Time Transport Control Protocol (RTCP): Opportunities Real-Time Transport Control Protocol (RTCP): Opportunities
and Consequences", RFC 5506, April 2009. and Consequences", RFC 5506, April 2009.
[RFC5761] Perkins, C. and M. Westerlund, "Multiplexing RTP Data and [RFC5761] Perkins, C. and M. Westerlund, "Multiplexing RTP Data and
Control Packets on a Single Port", RFC 5761, April 2010. Control Packets on a Single Port", RFC 5761, April 2010.
[RFC6051] Perkins, C. and T. Schierl, "Rapid Synchronisation of RTP [RFC6051] Perkins, C. and T. Schierl, "Rapid Synchronisation of RTP
Flows", RFC 6051, November 2010. Flows", RFC 6051, November 2010.
skipping to change at page 21, line 29 skipping to change at page 27, line 29
Watson, M., Begen, A., and V. Roca, "Forward Error Watson, M., Begen, A., and V. Roca, "Forward Error
Correction (FEC) Framework", Correction (FEC) Framework",
draft-ietf-fecframe-framework-15 (work in progress), draft-ietf-fecframe-framework-15 (work in progress),
June 2011. June 2011.
[RFC2198] Perkins, C., Kouvelas, I., Hodson, O., Hardman, V., [RFC2198] Perkins, C., Kouvelas, I., Hodson, O., Hardman, V.,
Handley, M., Bolot, J., Vega-Garcia, A., and S. Fosse- Handley, M., Bolot, J., Vega-Garcia, A., and S. Fosse-
Parisis, "RTP Payload for Redundant Audio Data", RFC 2198, Parisis, "RTP Payload for Redundant Audio Data", RFC 2198,
September 1997. September 1997.
[RFC4341] Floyd, S. and E. Kohler, "Profile for Datagram Congestion
Control Protocol (DCCP) Congestion Control ID 2: TCP-like
Congestion Control", RFC 4341, March 2006.
[RFC4342] Floyd, S., Kohler, E., and J. Padhye, "Profile for
Datagram Congestion Control Protocol (DCCP) Congestion
Control ID 3: TCP-Friendly Rate Control (TFRC)", RFC 4342,
March 2006.
[RFC4828] Floyd, S. and E. Kohler, "TCP Friendly Rate Control
(TFRC): The Small-Packet (SP) Variant", RFC 4828,
April 2007.
[RFC4867] Sjoberg, J., Westerlund, M., Lakaniemi, A., and Q. Xie,
"RTP Payload Format and File Storage Format for the
Adaptive Multi-Rate (AMR) and Adaptive Multi-Rate Wideband
(AMR-WB) Audio Codecs", RFC 4867, April 2007.
[RFC5117] Westerlund, M. and S. Wenger, "RTP Topologies", RFC 5117, [RFC5117] Westerlund, M. and S. Wenger, "RTP Topologies", RFC 5117,
January 2008. January 2008.
[RFC5348] Floyd, S., Handley, M., Padhye, J., and J. Widmer, "TCP
Friendly Rate Control (TFRC): Protocol Specification",
RFC 5348, September 2008.
[RFC5404] Westerlund, M. and I. Johansson, "RTP Payload Format for
G.719", RFC 5404, January 2009.
[RFC5681] Allman, M., Paxson, V., and E. Blanton, "TCP Congestion
Control", RFC 5681, September 2009.
[RFC5968] Ott, J. and C. Perkins, "Guidelines for Extending the RTP [RFC5968] Ott, J. and C. Perkins, "Guidelines for Extending the RTP
Control Protocol (RTCP)", RFC 5968, September 2010. Control Protocol (RTCP)", RFC 5968, September 2010.
[rtp-tfrc] [RFC6263] Marjou, X. and A. Sollaud, "Application Mechanism for
Gharai, L., "RTP with TCP Friendly Rate Control Keeping Alive the NAT Mappings Associated with RTP / RTP
(draft-gharai-avtcore-rtp-tfrc-00)", March 2011. Control Protocol (RTCP) Flows", RFC 6263, June 2011.
Authors' Addresses Authors' Addresses
Colin Perkins Colin Perkins
University of Glasgow University of Glasgow
School of Computing Science School of Computing Science
Glasgow G12 8QQ Glasgow G12 8QQ
United Kingdom United Kingdom
Email: csp@csperkins.org Email: csp@csperkins.org
 End of changes. 69 change blocks. 
217 lines changed or deleted 482 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/