draft-perkins-rtcweb-rtp-usage-02.txt   draft-perkins-rtcweb-rtp-usage-03.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: January 12, 2012 Ericsson Expires: February 29, 2012 Ericsson
J. Ott J. Ott
Aalto University Aalto University
July 11, 2011 August 28, 2011
RTP Requirements for RTC-Web RTP Requirements for RTC-Web
draft-perkins-rtcweb-rtp-usage-02 draft-perkins-rtcweb-rtp-usage-03
Abstract Abstract
This memo discusses use of RTP in the context of the RTC-Web This memo discusses use of RTP in the context of the RTC-Web
activity. It discusses important features of RTP that need to be activity. It discusses important features of RTP that need to be
considered by other parts of the RTC-Web framework, describes which considered by other parts of the RTC-Web framework, describes which
RTP profile to use in this environment, and outlines what RTP RTP profile to use in this environment, and outlines what RTP
extensions should be supported. extensions should be supported.
This document is a candidate to become a work item of the RTCWEB This document is a candidate to become a work item of the RTCWEB
skipping to change at page 1, line 40 skipping to change at page 1, line 40
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 January 12, 2012. This Internet-Draft will expire on February 29, 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 . . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Expected Topologies . . . . . . . . . . . . . . . . . . . 4 1.1. Expected Topologies . . . . . . . . . . . . . . . . . . . 3
2. Requirements from RTP . . . . . . . . . . . . . . . . . . . . 7 2. Requirements from RTP . . . . . . . . . . . . . . . . . . . . 6
2.1. RTP Multiplexing Points . . . . . . . . . . . . . . . . . 7 2.1. Signalling for RTP sessions . . . . . . . . . . . . . . . 6
2.2. RTP Session Multiplexing . . . . . . . . . . . . . . . . . 8 2.2. (Lack of) Signalling for Payload Format Changes . . . . . 7
2.2.1. Why RTP Sessions Should be Demultiplexed by the 3. RTP Profile . . . . . . . . . . . . . . . . . . . . . . . . . 7
Transport . . . . . . . . . . . . . . . . . . . . . . 8 4. RTP and RTCP Guidelines . . . . . . . . . . . . . . . . . . . 8
2.2.2. Arguments for a single transport flow . . . . . . . . 12 5. RTP Optimisations . . . . . . . . . . . . . . . . . . . . . . 8
2.2.3. Summary . . . . . . . . . . . . . . . . . . . . . . . 14 5.1. RTP and RTCP Multiplexing . . . . . . . . . . . . . . . . 8
2.3. Signalling for RTP sessions . . . . . . . . . . . . . . . 15 5.2. Reduced Size RTCP . . . . . . . . . . . . . . . . . . . . 8
2.4. (Lack of) Signalling for Payload Format Changes . . . . . 16 5.3. Symmetric RTP/RTCP . . . . . . . . . . . . . . . . . . . . 9
3. RTP Session Multiplexing . . . . . . . . . . . . . . . . . . . 16 5.4. Generation of the RTCP Canonical Name (CNAME) . . . . . . 9
3.1. DCCP Based Solution . . . . . . . . . . . . . . . . . . . 17 6. RTP Extensions . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2. SHIM layer . . . . . . . . . . . . . . . . . . . . . . . . 18 6.1. RTP Conferencing Extensions . . . . . . . . . . . . . . . 10
3.3. RTP Internal Multiplexing . . . . . . . . . . . . . . . . 20 6.1.1. Full Intra Request . . . . . . . . . . . . . . . . . . 11
3.3.1. Issues with SSRC RTP Multiplexing . . . . . . . . . . 21 6.1.2. Picture Loss Indication . . . . . . . . . . . . . . . 11
3.3.2. Executing on this Proposal . . . . . . . . . . . . . . 22 6.1.3. Slice Loss Indication . . . . . . . . . . . . . . . . 11
3.4. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . 23 6.1.4. Reference Picture Selection Indication . . . . . . . . 11
4. RTP Profile . . . . . . . . . . . . . . . . . . . . . . . . . 23 6.1.5. Temporary Maximum Media Stream Bit Rate Request . . . 11
5. RTP and RTCP Guidelines . . . . . . . . . . . . . . . . . . . 24 6.2. RTP Header Extensions . . . . . . . . . . . . . . . . . . 12
6. RTP Optimisations . . . . . . . . . . . . . . . . . . . . . . 24 6.3. Rapid Synchronisation Extensions . . . . . . . . . . . . . 13
6.1. RTP and RTCP Multiplexing . . . . . . . . . . . . . . . . 24 6.4. Client to Mixer Audio Level . . . . . . . . . . . . . . . 13
6.2. Reduced Size RTCP . . . . . . . . . . . . . . . . . . . . 25 6.5. Mixer to Client Audio Level . . . . . . . . . . . . . . . 13
6.3. Symmetric RTP/RTCP . . . . . . . . . . . . . . . . . . . . 25 7. Improving RTP Transport Robustness . . . . . . . . . . . . . . 13
6.4. Generation of the RTCP Canonical Name (CNAME) . . . . . . 25 7.1. RTP Retransmission . . . . . . . . . . . . . . . . . . . . 14
7. RTP Extensions . . . . . . . . . . . . . . . . . . . . . . . . 26 7.2. Forward Error Correction (FEC) . . . . . . . . . . . . . . 15
7.1. RTP Conferencing Extensions . . . . . . . . . . . . . . . 26 7.2.1. Basic Redundancy . . . . . . . . . . . . . . . . . . . 15
7.1.1. RTCP Feedback Message: Full Intra Request . . . . . . 27 7.2.2. Block Based . . . . . . . . . . . . . . . . . . . . . 16
7.1.2. RTCP Feedback Message: Picture Loss Indicator . . . . 27 7.2.3. Recommendations for FEC . . . . . . . . . . . . . . . 17
7.1.3. RTCP Feedback Message: Temporary Maximum Media 8. RTP Rate Control and Media Adaptation . . . . . . . . . . . . 17
Stream Bit Rate Request . . . . . . . . . . . . . . . 27 9. RTP Performance Monitoring . . . . . . . . . . . . . . . . . . 18
7.2. RTP Header Extensions . . . . . . . . . . . . . . . . . . 27 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18
7.3. Rapid Synchronisation Extensions . . . . . . . . . . . . . 28 11. Security Considerations . . . . . . . . . . . . . . . . . . . 18
7.4. Client to Mixer Audio Level . . . . . . . . . . . . . . . 28 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 18
7.5. Mixer to Client Audio Level . . . . . . . . . . . . . . . 29 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 19
8. Improving RTP Transport Robustness . . . . . . . . . . . . . . 29 13.1. Normative References . . . . . . . . . . . . . . . . . . . 19
8.1. RTP Retransmission . . . . . . . . . . . . . . . . . . . . 29 13.2. Informative References . . . . . . . . . . . . . . . . . . 21
8.2. Forward Error Correction (FEC) . . . . . . . . . . . . . . 31 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 21
8.2.1. Basic Redundancy . . . . . . . . . . . . . . . . . . . 31
8.2.2. Block Based . . . . . . . . . . . . . . . . . . . . . 32
8.2.3. Recommendations for FEC . . . . . . . . . . . . . . . 33
9. RTP Rate Control and Media Adaptation . . . . . . . . . . . . 33
10. RTP Performance Monitoring . . . . . . . . . . . . . . . . . . 33
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34
12. Security Considerations . . . . . . . . . . . . . . . . . . . 34
13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 34
14. References . . . . . . . . . . . . . . . . . . . . . . . . . . 34
14.1. Normative References . . . . . . . . . . . . . . . . . . . 34
14.2. Informative References . . . . . . . . . . . . . . . . . . 36
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 37
1. Introduction 1. Introduction
This memo discusses the Real-time Transport Protocol (RTP) [RFC3550] This memo discusses the Real-time Transport Protocol (RTP) [RFC3550]
in the context of the RTC-Web activity. The work in the IETF Audio/ in the context of the RTC-Web activity. The work in the IETF Audio/
Video Transport Working Group, and it's successors, has been about Video Transport Working Group, and it's successors, has been about
providing building blocks for real-time multimedia transport, and has providing building blocks for real-time multimedia transport, and has
not specified who should use which building blocks. The selection of not specified who should use which building blocks. The selection of
building blocks and functionalities can really only be done in the building blocks and functionalities can really only be done in the
context of some application, for example RTC-Web. We have selected a context of some application, for example RTC-Web. We have selected a
skipping to change at page 7, line 10 skipping to change at page 6, line 10
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 RTC-Web
results in such issues and how to handle them. results in such issues and how to handle them.
2. Requirements from RTP 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. RTP Multiplexing Points 2.1. Signalling for RTP sessions
There are three fundamental points of multiplexing within the RTP
framework:
Use of separate RTP Sessions: The first, and the most important,
multiplexing point is the RTP session. This multiplexing point
does not have an identifier within the RTP protocol itself, but
instead relies on the lower layer to separate the different RTP
sessions. This is most often done by separating different RTP
sessions onto different UDP ports, or by sending to different IP
multicast addresses. The distinguishing feature of an RTP session
is that it has a separate SSRC identifier space; a single RTP
session can span multiple transport connections provided packets
are gatewayed such that participants are known to each other.
Different RTP sessions are used to separate different types of
media within a multimedia session. For example, audio and video
flows are sent on separate RTP sessions. But also completely
different usages of the same media type, e.g. video of the
presenter and the slide video, benefits from being separated.
Multiplexing using the SSRC within an RTP session: The second
multiplexing point is the SSRC that separates different sources of
media within a single RTP session. An example might be different
participants in a multiparty teleconference, or different camera
views of a presentation. In most cases, each participant within
an RTP session has a single SSRC, although this may change over
time if collisions are detected. However, in some more complex
scenarios participants may generate multiple media streams of the
same type simultaneously (e.g., if they have two cameras, and so
send two video streams at once) and so will have more than one
SSRC in use at once. The RTCP CNAME can be used to distinguish
between a single participant using two SSRC values (where the RTCP
CNAME will be the same for each SSRC), and two participants (who
will have different RTCP CNAMEs).
Multiplexing using the Payload Type within an RTP session: If
different media encodings of the same media type (audio, video,
text, etc) are to be used at different times within an RTP
session, for example a single participant that can switch between
two different audio codecs, the payload type is used to identify
how the media from that particular source is encoded. When
changing media formats within an RTP Session, the SSRC of the
sender remains unchanged, but the RTP Payload Type changes to
indicate the change in media format.
These multiplexing points area fundamental part of the design of RTP
and are discussed in Section 5.2 of [RFC3550]. Of special importance
is the need to separate different RTP sessions using a multiplexing
mechanism at some lower layer than RTP, rather than trying to combine
several RTP sessions implicitly into one lower layer flow. This will
be further discussed in the next section.
2.2. RTP Session Multiplexing
In today's network with prolific use of Network Address Translators
(NAT) and Firewalls (FW), there is a desire to reduce the number of
transport layer ports used by an real-time media application using
RTP. This has led some to suggest multiplexing two or more RTP
sessions on a single transport layer flow, using either the Payload
Type or SSRC to demultiplex the sessions, in violation of the rules
outlined above. It is not the first time some people look at RTP and
question the need for using RTP sessions for different media types,
and even more the potential need to separate different media streams
of the same type into different session due to their different
purposes. Section 5.2 of [RFC3550] outlines some of those problems;
we elaborate on that discussion, and on other problems that occurs if
one violates this part of the RTP design and architecture.
2.2.1. Why RTP Sessions Should be Demultiplexed by the Transport
As discussed in Section 5.2 of [RFC3550], multiplexing several RTP
sessions (e.g., audio and video) onto a single transport layer flow
introduces the following problems:
Payload Identification: If two RTP sessions of the same type are
multiplexed onto a single transport layer flow using the same SSRC
but relying on the Payload Type to distinguish the session, and
one were to change encodings and thus acquire a different RTP
payload type, there would be no general way of identifying which
stream had changed encodings. This can be avoided by partitioning
the SSRC space between the two sessions, but that causes other
problems as discussed below.
Timing and Sequence Number Space: An RTP SSRC is defined to identify
a single timing and sequence number space. Interleaving multiple
payload types would require different timing spaces if the media
clock rates differ and would require different sequence number
spaces to tell which payload type suffered packet loss. Using
multiple clock rates in a single RTP session is problematic, as
discussed in [I-D.ietf-avtext-multiple-clock-rates]. This can be
avoided by partitioning the SSRC space between the two sessions,
but that causes other problems as discussed below.
RTCP Reception Reports: RTCP sender reports and receiver reports can
only describe one timing and sequence number space per SSRC, and
do not carry a payload type field. Multiplexing sessions based on
the payload type breaks RTCP. This can be avoided by partitioning
the SSRC space between the two sessions, but that causes other
problems as discussed below.
RTP Mixers: Multiplexing RTP sessions of incompatible media type
(e.g., audio and video) onto a single transport layer flow breaks
the operation of RTP mixers, since they are unable to combine the
flows together.
RTP Translators: Multiplexing RTP sessions of incompatible media
type (e.g., audio and video) onto a single transport layer flow
breaks the operation of RTP some types of RTP translator, for
example media transcoders, which rely on the RTP requirement that
all media are of the same type.
Quality of Service: Carrying multiple media in one RTP session
precludes the use of different network paths or network resource
allocations that are flow based if appropriate. It also makes
reception of a subset of the media, for example just audio if
video would exceed the available bandwidth, difficult without the
use of an RTP translator within the network to filter out the
unwanted media which unless they are trusted devices (and included
in the key-exchange). This is difficult to combine with media
security functions.
Separate Endpoints: Multiplexing several sessions into one transport
layer flow prevents use of a distributed endpoint implementation,
where audio and video are rendered by different processes and/or
systems.
We do note that some of the above issues are resolved as long as
there is explicit separation of the RTP sessions when transported
over the same lower layer transport, for example by inserting a
multiplexing layer in between the lower transport and the RTP/RTCP
headers. But a number of the above issue are not resolved by this.
In the RTCWEB context, i.e. web browsers running on various end-
points it might appear unlikely that flow based QoS is available on
the end-points that will support RTCWEB. The authors don't disagree
that it is unlikely for the common case of users in their home-
network or at WiFi hotspots will have flow-based QoS available.
However, if one considers enterprise users, especially using intranet
applications, the availability and desire to use QoS is not
implausible. There are also web users who use networks that are more
resource-constrained than wired networks and WIFI networks, for
example cellular network. The current access network QoS mechanism
for user traffic in cellular technology from 3GPP are flow based.
RTP's design hasn't been changed, although session multiplexing
related topics have been discussed at various points of RTP's 20 year
history. The fact is that numerous RTP mechanism and extensions have
been defined assuming that one can perform session multiplexing when
needed. Mechanism that has been identified as problematic if one
doesn't do session separation are:
Scalability: RTP was built with media scalability in consideration.
The simplest way of achieving separation between different
scalability layers is placing them in different RTP sessions, and
using the same SSRC and CNAME in each session to bind them
together. This is most commonly done in multicast, and not
particularly applicable to RTC-Web, but gatewaying of such a
session would then require more alterations and likely stateful
translation.
RTP Retransmission in Session Multiplexing mode: RTP Retransmission
[RFC4588] does have a mode for session multiplexing. This would
not be the main mode used in RTC-Web, but for interoperability and
reduced cost in translation support for different RTP Sessions are
beneficial.
Forward Error Correction: The "An RTP Payload Format for Generic
Forward Error Correction" [RFC2733] and its update [RFC5109] can
only be used on media formats that produce RTP packets that are
smaller than half the MTU if the FEC flow and media flow being
protected are to be sent in the same RTP session, this is due to
"RTP Payload for Redundant Audio Data" [RFC2198]. This is because
the SSRC value of the original flow is recovered from the FEC
packets SSRC field. So for anything that desires to use these
format with RTP payloads that are close to MTU needs to put the
FEC data in a separate RTP session compared to the original
transmissions. The usage of this type of FEC data has not been
decided on in RTCWEB.
SSRC Allocation and Collision: The SSRC identifier is a random 32-
bit number that is required to be globally unique within an RTP
session, and that is reallocated to a new random value if an SSRC
collision occurs between participants. If two or more RTP
sessions share a transport layer flow, there is no guarantee that
their choice of SSRC values will be distinct, and there is no way
in standard RTP to signal which SSRC values are used by which RTP
session. RTP is explicitly a group-based communication protocol,
and new participants can join an RTP session at any time; these
new participants may chose SSRC values that conflict with the SSRC
values used in any of the multiplexed RTP sessions. This problem
can be avoided by partitioning the SSRC space, and signalling how
the space is to be subdivided, but this is not backwards
compatible with any existing RTP system. In addition, subdividing
the SSRC space makes it difficult to gateway between multiplexed
RTP sessions and standard RTP sessions: the standard sessions may
use parts of the SSRC space reserved in the multiplexed RTP
sessions, requiring the gateway to rewrite RTCP packets, as well
as the SSRC and CSRC list in RTP data packets. Rewriting RTCP is
a difficult task, especially when one considers extensions such as
RTCP XR.
Conflicting RTCP Report Types: The extension mechanisms used in RTCP
depend on separation of RTP sessions for different media types.
For example, the RTCP Extended Report block for VoIP is suitable
for conversational audio, but clearly not useful for Video. This
may cause unusable or unwanted reports to be generated for some
streams, wasting capacity and confusing monitoring systems. While
this is problem may be unlikely for VoIP reports, it may be an
issue for the more detailed media agnostic reports which are
sometimes be used for different media types. Also, this makes the
implementation of RTCP more complex, since partitioning the SSRC
space by media type needs not only to be one the media processing
side, but also on the RTCP reporting
RTCP Reporting and Scheduling: The RTCP reporting interval and its
packet scheduling will be affected if several RTP sessions are
multiplexed onto the same transport layer flow. The reporting
interval is determined by the session bandwidth, and the reporting
interval chosen for a high-rate video session will be different to
the interval chosen by a low-rate VoIP session. If such sessions
are multiplexed, then participants in one session will see the
SSRC values of the other session. This will cause them to
overestimate the number of participants in the session by a factor
of two, thus doubling their RTCP reporting interval, and making
their feedback less timely. In the worst case, when an RTP
session with very low RTCP bandwidth is multiplexed with an RTP
session with high RTCP bandwidth, this may cause repeated RTCP
timer reconsideration, leading to the members of the low bandwidth
session timing out. Participants in an RTP session configured
with high bandwidth (and short RTCP reporting interval) will see
RTCP reports from participants in the low bandwidth session much
less often than expected, potentially causing them to repeatedly
timeout and re-create state for those participants. The split of
RTCP bandwidth between senders and receivers (where at least 25%
of the RTCP bandwidth is allocated to senders) will be disrupted
if a session with few senders (e.g., a VoIP session) is
multiplexed with a session with many senders (e.g., a video
session). These issues can be resolved if the partition of the
SSRC is signalled, but this is not backwards compatible with any
existing RTP system. The partition would require re-implementing
large part of the RTCP processing to take the individual sessions
into account.
Sampling Group Membership: The mechanism defined in RFC2762 to
sample the group membership, allowing participants to keep less
state, assumes a single flat 32-bit SSRC space, and breaks if the
SSRC space is shared between several RTP sessions.
As can be seen, the requirement that separate RTP sessions are
carried in separate transport-layer flows is fundamental to the
design of RTP. Due to this design principle, implementors of various
services or applications using RTP have not commonly violated this
model, and have separated RTP sessions onto different transport layer
flows. After 15 years of deployment of RTP in its current form, any
move to change this assumption must carefully consider the backwards
compatibility problems that this will cause. In particular, since
widespread use of multiplexed RTP sessions in RTC-Web will almost
certainly cause their use in other scenarios, the discussion
regarding compatibility must be wider than just whether multiplexing
works for the extremely limited subset of RTP use cases currently
being considered in the RTC-Web group. Any such multiplexing
extension to RTP must therefore be developed by the AVTCORE working
group, since it has much broader applicability and scope than RTC-
Web.
2.2.2. Arguments for a single transport flow
The arguments the authors are aware of for why it is desirable to use
a single underlying transport (e.g., UDP) flow for all media, rather
than one flow for each type of media are the following:
End-Point Port Consumption: A given IP address only has 16-bits of
available port space per transport protocol for any consumer of
ports that exists on the machine. This is normally never an issue
for a end-user machine. It can become an issue for servers that
has large number of simultaneous flows. However, in RTCWEB where
we will use authenticated STUN requests a server can serve
multiple end-point from the same local port, and use the whole
5-tuple (source and destination address, source and destination
port, protocol) as identifier of flows. Thus, in theory, the
minimal number of media server ports needed are the maximum number
of simultaneous RTP sessions a single end-point may use, when in
practice implementation probably benefit from using more.
NAT State: If an end-point is behind a NAT each flow it generates to
an external address will result in state on that NAT. That state
is a limited resource, either from memory or processing stand-
point in home or SOHO NATs, or for large scale NATs serving many
internal end-points, the available ports run-out. We see this
primarily as a problem for larger centralised NATs where end-point
independent mapping do require each flow mapping to use one port
for the external IP address, thus affecting the the maximum
aggregation of internal users per external IP address. However,
we would like to point out that a RTCWEB session with audio and
video are likely using 2 or 3 UDP flows. This can be contrasted
with that certain web applications that can result that 100+ TCP
flows are opened to various servers. Sure they are recovered more
quickly due to the explicit session teardown when no longer need,
at the same time more web sites may be simultaneously communicated
in various browser tabs. So the question is if the UDP mapping
space is as heavily used as the TCP mapping space, and that TCP
will continue to be the limiting factor for the amount of internal
users a particular NAT can support.
NAT Traversal taking additional time: When doing NAT/FW traversal it
takes additional time to open additional ports. And it takes time
in a phase of communication between accepting to communicate and
the media path being established which is a fairly critical. The
best case scenario for how much extra time it can take following
the specified ICE procedures are. 1.5*RTT +
Ta*(Additional_Flows-1), where Ta is the pacing timer, which ICE
specifies to be no smaller than 20 ms. That assumes a message in
one direction, and then an immediate triggered check back. This
as ICE first finds one candidate pair that works prior to
establish multiple flows. Thus, there is no extra time until one
has found a working candidate pair, from that is only the time it
takes to in parallel establish the additional flows which in most
case are 1 or 2 more additional flows.
NAT Traversal Failure Rate: In cases when one needs more than a
single flow to be established through the NAT there is some risk
that one succeed in establishing the first flow but fails with one
or more of the additional flows. The risk that this happens are
hard to quantify. However, that risk should be fairly low as one
has just prior successfully established one flow from the same
interfaces. Thus only rare events as NAT resource overload, or
selecting particular port numbers that are filtered etc, should be
reasons for failure.
2.2.3. Summary
As we have noted in the preceding sections, implicit multiplexing of
multiple RTP sessions onto a single transport flow raises a large
number of backwards compatibility issues. It has been argued that
these issues are either not important, since the RTP features
disrupted are not of interest to the current set of RTC-Web use
cases, or can be solved by somehow explicitly dividing the SSRC space
into different regions for different RTP sessions. We believe the
first argument is short-sighted: those RTP features may not be
important today, but the successful deployment of simple RTC-Web
applications will generate interest to try more advanced scenarios,
which may well need those features. Partitioning the SSRC space to
separate RTP sessions results in new set of issues, where the biggest
from our point of view is that it effectively creates a new variant
of the RTP protocol, which is incompatible with standard RTP. Having
two different variants of the core functionality of RTP will make it
much more difficult to develop future protocol extensions, and the
new variant will likely also have different set of extensions that
work. In addition the two versions aren't directly interoperable,
and will force anyone that want to interconnect the two version to
deploy (complex) gateways. It also reduces the common user base and
interest in maintaining and developing either version.
On the other hand, we are sympathetic to the argument that using a
single transport flow does save some time in setup processing, it
will save some resources on NATs and FWs that are in between the end-
points communicating, it may have somewhat higher success rate of
session establishment.
Thus the authors considered it REQUIRED that RTP sessions are
multiplexed using an explicit mechanism outside RTP. We strongly
RECOMMENDED that the mechanism used to accomplish this multiplexing
is to use unique UDP flows for each RTP session, based on simplicity
and interoperability. However, we can accept a WG consensus that
using a single transport layer flow between peers is the default, and
that also the fallback of using separate UDP flows are supported,
under one constraint: that the RTP sessions are explicitly
multiplexed in such a way existing mechanism or extensions to RTP are
not prevented to work, and that the solution does not result in that
an alternative variant of RTP is created (i.e., it must not disrupt
RTCP processing, and the RTP semantics). In this later case we
RECOMMEND that some type of multiplexing layer is inserted between
UDP flow and the RTP/RTCP headers to separate the RTP sessions, since
removing this shim-layer and gatewaying to standard RTP sessions is
simpler than trying to separate RTP sessions that are multiplexed
together to gateway them to standard RTP sessions. We discuss
possible multiplexing layers in Section 3.
2.3. 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
skipping to change at page 16, line 6 skipping to change at page 7, line 11
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.4. (Lack of) Signalling for Payload Format Changes 2.2. (Lack of) Signalling for Payload Format Changes
As discussed in Section 2.3, the mapping between media type name, and As discussed in Section 2.1, the mapping between media type name, and
its associated RTP payload format, and the RTP payload type number to its associated RTP payload format, and the RTP payload type number to
be used for that format must be signalled as part of the session be used for that format must be signalled as part of the session
setup. An endpoint may signal support for multiple media formats, or setup. An endpoint may signal support for multiple media formats, or
multiple configurations of a single format, each using a different multiple configurations of a single format, each using a different
RTP payload type number. If multiple formats are signalled by an RTP payload type number. If multiple formats are signalled by an
endpoint, that endpoint is REQUIRED to be prepared to receive data endpoint, that endpoint is REQUIRED to be prepared to receive data
encoded in any of those formats at any time. RTP does not require encoded in any of those formats at any time. RTP does not require
advance signalling for changes between formats that were signalled advance signalling for changes between formats that were signalled
during the session setup. This is needed for rapid rate adaptation. during the session setup. This is needed for rapid rate adaptation.
3. RTP Session Multiplexing 3. RTP Profile
This section explores a few different possible solutions for how to
achieve explicit multiplexing between RTP sessions and possible other
UDP based flows, such as STUN and protocols carrying application
data. But before diving into the proposals we should consider a bit
what requirements we can derive from the previous discussion and the
intended goals.
General Requirements for this multiplexing solution as we understand
them are:
On top of a single flow: To get the full set of benefits of reducing
the number of transport flows between two peers one should be able
to multiplex all peer traffic from one application instance over a
single transport flow.
On top of UDP: The primary transport protocol that meets real-time
requirements and has reasonable NAT/FW traversal properties are
UDP. So the solution are REQUIRED to work over this.
Fallback Protocol: If UDP fails to traverse the NAT/FW including
using TURN when available a fallback option has been discussed.
This would be WebSocket [I-D.ietf-hybi-thewebsocketprotocol] or
over HTTP(S) [RFC2616]. Over HTTP one likely need to consider the
media stream as parts of a unknown length binary object and thus
provide framing and multiplexing between what would be sent as
individual IP packets. WebSocket provides framing, but here
multiplexing is needed.
Protocols to Multiplex: The protocols that need to be multiplexed
over this lower layer transport are:
1. STUN [RFC5389] or something similar to enable the ICE-like
connectivity checks [RFC5245] to be performed.
2. RTP Sessions: One or more for each media type (audio and
video) that the application desires to setup. For example we
may need more than one RTP session to allow easy separation of
video streams showing the person speaking and a slide video
stream. There has also been proposal for supporting
simulcasting to enable non-transcoding centralised
conferencing.
3. DTLS-SRTP or ZRTP are two proposals for how to do key-
management for SRTP. Both are in-band key-management schemes
that will be sent on the same flow as SRTP will be sent as
soon as the key-management has completed. Thus they must also
successfully be multiplexed. In addition there is a question
if each RTP session needs its own keying context, then also
the different DTLS handshakes needs to be separated.
4. Protocols for non-RTP media data. Such protocols provide a
datagram service to the application that is congestion
controlled and secured. The exact protocol is not yet
decided. For securing this DTLS is a likely candidate,
however the order of the protocols are not clear. If it is
foo over DTLS or DTLS over foo is yet to be decided.
5. Reliable Data transmission protocol. There has been some
interest for a reliable data transport between the peer. It
is uncertain if this is going to be defined from the start,
later or not at all.
Please keep these general requirements in mind when we look at some
possible solutions.
3.1. DCCP Based Solution
The most reasonable approach is to use DCCP as common multiplexing
layer, at least for RTP and non-RTP data and use DCCP's function for
congestion control in both cases. This would result in a stack
picture that looks like this:
+-------------+------+
| Media | FOO |
+------+------+ | +
| SRTP | DTLS | DTLS |
+------+------+------+------+
| STUN | DCCP |
+------+--------------------+
| UDP |
+---------------------------+
RTP and Data on top of DCCP
STUN and DCCP can be demultiplexed simply as long as the DCCP source
port are in the range 16384-65535. The great benefit of this
solution is that it can support large number of parallel explicitly
multiplexed datagram flows. Another great benefit is a common place
for congestion control implementation for both RTP and non-RTP data.
It also provides a negotiation mechanism for transport features,
including congestion control algorithms, enabling future development
of this layer.
The above leaves out the question of a reliable transport solution.
This can be done in two major ways as far as we can see. Either
build reliability extensions on top of DCCP or put a protocol in
parallel with STUN and DCCP. The downside with the latter is that we
again end up in a situation where we have several protocols that can
occur in the outer UDP payload requiring implicit demultiplexing
based on actual data, rather than on a field. As DCCP has a
negotiation mechanism for both what service that uses DCCP and DCCP
options and features both becomes viable methods for defining
reliability extensions.
Note: that the main reason not also putting STUN on top of DCCP is
the fact that DCCP do require a handshake on transport parameters
when establishing a new flow. Thus performing that negotiation prior
to doing verification of connection increase both the amount of data
that will be transmitted to a not yet consenting peer and the the
increased delay.
3.2. SHIM layer
A very straightforward design would be adding a one or two byte shim
layer on top of the transport payload prior to the actual multiplexed
protocols. This allows both for static assignment of shim code-
points like for STUN and for dynamically agreed on usages, either
explicitly through signalling or implicitly by application context.
+-------------+------+
| Media | DTLS |
+------+------+------+------+
| STUN | SRTP | DTLS | FOO |
+------+------+------+------+
| SHIM |
+---------------------------+
| UDP |
+---------------------------+
Using a SHIM layer on top of UDP
The Internet Draft "RTC-Web Non-Media Data Transport Requirements"
[I-D.cbran-rtcweb-data] dismisses the idea of a generic SHIM layer
for a number of reasons:
Breaking interoperability with existing inspection gear: The authors
of [I-D.cbran-rtcweb-data] point out the need for recognising the
specific SSRC for recognising the special magic cookie. A device
upgraded to perform this kind of a matching could also be modified
to inspect a SHIM layer. Assuming that a SHIM layer will be
introduced in the IETF anyway, it appears more beneficial to have
a single upgrade to networking gear capable of supporting a set of
protocols than defining application-specific extensions.
Adding complexity through another muxing layer: Removing an extra
fixed size header is trivial. In contrast to SSRC-based
demultiplexing, this could even be easily supported by the
operating system. It should also be noted that both SSRC-based
and SHIM layer-based demultiplexing require all media streams to
terminate within the same application process and hence similar
application-internal mechanisms to forward media data to the
correct media engine for processing. It is thus hard to see the
"adding complexity" reasoning.
Increase packet overhead further: A reasonably designed SHIM layer
would only add a few bytes of overhead. Given that the entire
discussion is motivated by audio/video calls and video packets
would dominate a media stream both in number and in size, the
relative overhead is minimal and the point appear moot.
Shim is a mistake which cannot be undone later: One can argue the
same for overloading the SSRC identifier space. SHIM layers have
repeatedly been discussed in the IETF because new protocols, such
as DCCP and SCTP, face deployment problems in the real-world
Internet as they use previously unknown IP protocol numbers. The
only issue is that the IETF has not yet decided on a (common) SHIM
layer. And if the shim layer is explicitly signalled and there
exist fallback solution to using separate UDP flows, then it can
in fact be undone.
A shim layer has low overhead combined with explicitness and great
flexibility on what to put on top. In addition to definition of the
shim itself some signalling will needed, either explicit or implicit
depending on how the signalling model and the API. The signalling
needs to assign meaning to what a particular multiplexing code-point
means in the particular underlying transport flow.
Although a reliable protocol isn't included in the above example it
can easily be included and be anything that can put in a UDP payload
such as TCP, RMT based, home grown. Thus ensuring maximum
flexibility to add additional protocols on top of the single UDP
flow.
3.3. RTP Internal Multiplexing
The main point with RTP internal multiplexing is to enable
multiplexing RTP sessions without adding any extra layer between the
RTP header and the lower transport, e.g. single UDP flow, that things
are multiplex on. Rosenberg [I-D.rosenberg-rtcweb-rtpmux] suggests
one method for RTP Internal Multiplexing. In addition to this there
are suggestion in "RTC-Web Non-Media Data Transport Requirements"
[I-D.cbran-rtcweb-data] to multiplex also the non-RTP data on the
same level using implicit identification of data packets that
separate them from DTLS-SRTP packets, RTP/RTCP packets and STUN
packets. This results in a stack picture that looks like this:
+-------------+------+
| Media | DTLS |
+------+------+------+------+
| STUN | SRTP | DTLS | FOO |
+------+------+------+------+
| UDP |
+---------------------------+
RTP Internal Multiplexing
Where Foo is the protocol suggested by "RTC-Web Non-Media Data
Transport Requirements" [I-D.cbran-rtcweb-data].
These proposals rely on the idea that a receiver can look at a number
of the bytes of the UDP payload to identify the type of packet. So
assuming DTLS-SRTP key management and a datagram non-RTP data
transport we have at least four protocols to separate. If one have
successfully identified the protocol as (S)RTP then one looks at the
SSRC field to find out media type and stream IDs.
There are a number of issues with the current proposals which we will
raise below. We also discuss what is going to be needed to drive
this work.
3.3.1. Issues with SSRC RTP Multiplexing
The first argument against this design is that it further
proliferates this bad design of implicit packet identification that
started with STUN. And instead of trying to break out of this
pattern we appear to pile on more protocols that is supposed to
identified despite that all these protocols actually have protocol
fields that have a purpose in these overlapping bytes that we attempt
to perform identification in. At some point a protocol extension in
either of the protocols will result in a collision breaking the
demultiplexing mechanism.
Secondly, the design restricts RTCWEB to a subset of RTP
functionality. By redefining the SSRC field this creates in practice
an alternative RTP protocol that can't fully interoperate with RTP as
currently defined. The inclusion of a magic word that allows Deep
Packet Inspection and other interpreters to commonly identify the
versions correctly is a clear admission to this fact, even if not
state explicitly in the text. This new version is forever prevented
from using any of the features that has been identified as not being
compatible with this design. In addition it either forces future RTP
extensions to take this severe limitation in into account or create
additional extensions that are not compatible. Forking the RTP
protocol into two versions is really not desirable.
Thirdly, a significantly limited size stream ID field requires
someone to manage and ensure that unique stream IDs are used by each
end-point. This would not be an issue if the only use case ever
would be communication between two end-points. However, we at this
point have use cases and requirements for centralised conferencing
scenarios. Even a basic star scenario requires extra complexities as
the central node needs to be able to force the node that aren't at
the centre to use the IDs that the central node dictates. This usage
then becomes much more complex at the very moment someone attempts to
interconnect two stars. This is in fact likely to happen when one
needs either scalability or geographical optimisation. With
geographical optimisation I mean one entity in Asia and one in Africa
that performs media mixing or transport relaying to reduce the delay
and traffic load. In addition to the centralised conferencing usage,
it looks plausible that RTCWEB could allow for an ad-hoc conferencing
mesh. Without a central point beyond the web server, only the web
server could ensure the uniqueness requirements. All of the above
cases is easily handled by regular RTP without any control at all.
Showing that this proposal brings extra complexities.
Fourth, if any legacy interoperation is considered one should be
aware that it occurs that the same SSRC value is used in different
RTP session in the same communication session. Commonly for
providing quick association of media streams in the different
sessions, sometime due to implementation choices, and sometime due to
that an extension requires this, like the session mode of RTP
retransmission [RFC4588].
Fifth, there is a need to support more than a single session context
per media type. As shown in "RTP Multiple Stream Sessions and
Simulcast" [I-D.westerlund-avtcore-multistream-and-simulcast] there
are clear benefits in using multiple RTP sessions for separating
intent with different media streams. This is already occurring in
video conferencing to separate main video (e.g. active speaker) from
alternative video (e.g. non-active speaker, audience) and document or
slide video streams. We will not deny that the web server could
track the flows and their purpose through other mechanisms and
signalling channels. However, it complicates any interop with legacy
and forces more functionality and additional APIs into any gateway
function.
3.3.2. Executing on this Proposal
If RTCWEB WG decides that despite the issues associated with RTP
internal multiplexing wants to pursue this approach the WG needs to
be aware that this WG doesn't have the right to redefine RTP
semantics. The IETF has an active WG chartered for maintaining and
extending RTP in the AVTCORE WG, and proposal for change needs to be
handled in that WG. This means that all RTCWEB WG can do for the RTP
multiplexing part is to provide requirements to AVTCORE. The WG
participants would then be encouraged to engage in proposing and be
proponents for the work in the AVTCORE WG.
Considering that not only RTCWEB is has voiced the need for a
multiplexing solution and that this likely have significant impact on
RTP for the future, any proposal for a solution needs to be generally
applicable. For example most of the arguments dismissed in
"Multiplexing of Real-Time Transport Protocol (RTP) Traffic for
Browser based Real-Time Communications (RTC)"
[I-D.rosenberg-rtcweb-rtpmux] as not being applicable for RTCWEB will
need to be reconsidered in the light of more general applications.
So some requirements on this solution are from the authors of this
draft:
1. Possible to multiplex more than a single RTP session of the same
media type.
2. Be possible to use all relevant RTP/RTCP extensions and RTP
payload formats.
3. Be possible to use a particular SSRC value in more than a single
RTP session simultaneously.
4. Be possible to interconnect through a gateway the RTP sessions
that are multiplexed on a single transport flow back to using
multiple transport flows to a legacy end-point otherwise
supporting the applications RTP configuration. This should
preferably done with minimal state, especially avoid per SSRC
state.
3.4. Conclusion
Looking at these proposals we authors are clearly in favour of a shim
layer unless DCCP is being selected anyway as datagram or media
transport protocol which in case one should strongly consider having
both data and media over the same protocol to enable that it is used
as multiplexing layer.
We don't see RTP internal as a realistic contender for the first
phase of RTCWEB specifications. It has documented issues. The only
way forward for the WG is to develop requirements for what RTCWEB
needs and share these with AVTCORE. If there are proponents for
driving a solution, they take the design of a generalised protocol in
AVTCORE that takes into consideration the existing specification. It
might find a suitable solution, it may not. When this is done we
might have something stable to start deploying in two years from now
or the WG has decided to drop the work as non feasible.
4. RTP Profile
The "Extended Secure RTP Profile for Real-time Transport Control The "Extended Secure RTP Profile for Real-time Transport Control
Protocol (RTCP)-Based Feedback (RTP/SAVPF)" [RFC5124] is REQUIRED to Protocol (RTCP)-Based Feedback (RTP/SAVPF)" [RFC5124] is REQUIRED to
be implemented. This builds on the basic RTP/AVP profile [RFC3551], be implemented. This builds on the basic RTP/AVP profile [RFC3551],
the RTP/AVPF feedback profile [RFC4585], and the secure RTP/SAVP the RTP/AVPF feedback profile [RFC4585], and the secure RTP/SAVP
profile [RFC3711]. 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 7.1. extensions discussed in Section 6.1.
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.
5. RTP and RTCP Guidelines 4. RTP and RTCP Guidelines
RTP and RTCP are two flexible and extensible protocols that allow, on RTP and RTCP are two flexible and extensible protocols that allow, on
the one hand, choosing from a variety of building blocks and the one hand, choosing from a variety of building blocks and
combining those to meet application needs, and on the other hand, combining those to meet application needs, and on the other hand,
create extensions where existing mechanisms are not sufficient: from create extensions where existing mechanisms are not sufficient: from
new payload formats to RTP extension headers to additional RTCP new payload formats to RTP extension headers to additional RTCP
control packets. control packets.
Different informational documents provide guidelines to the use and Different informational documents provide guidelines to the use and
particularly the extension of RTP and RTCP, including the following: particularly the extension of RTP and RTCP, including the following:
Guidelines for Writers of RTP Payload Format Specifications [RFC2736] Guidelines for Writers of RTP Payload Format Specifications [RFC2736]
and Guidelines for Extending the RTP Control Protocol [RFC5968]. and Guidelines for Extending the RTP Control Protocol [RFC5968].
6. RTP Optimisations 5. 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.
6.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.
6.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.
RFC5506 "Support for Reduced-Size Real-Time Transport Control RFC5506 "Support for Reduced-Size Real-Time Transport Control
Protocol (RTCP): Opportunities and Consequences" [RFC5506] specifies Protocol (RTCP): Opportunities and Consequences" [RFC5506] specifies
how to reduce the mean RTCP message and allow for more frequent how to reduce the mean RTCP message and allow for more frequent
feedback. Frequent feedback, in turn, is essential to make real-time feedback. Frequent feedback, in turn, is essential to make real-time
application quickly aware of changing network conditions and allow application quickly aware of changing network conditions and allow
them to adapt their transmission and encoding behaviour. them to adapt their transmission and encoding behaviour.
Support for RFC5506 is REQUIRED. Support for RFC5506 is REQUIRED.
6.3. Symmetric RTP/RTCP 5.3. Symmetric RTP/RTCP
RTP entities choose the RTP and RTCP transport addresses, i.e., IP RTP entities choose the RTP and RTCP transport addresses, i.e., IP
addresses and port numbers, to receive packets on and bind their addresses and port numbers, to receive packets on and bind their
respective sockets to those. When sending RTP packets, however, they respective sockets to those. When sending RTP packets, however, they
may use a different IP address or port number for RTP, RTCP, or both; may use a different IP address or port number for RTP, RTCP, or both;
e.g., when using a different socket instance for sending and for e.g., when using a different socket instance for sending and for
receiving. Symmetric RTP/RTCP requires that the IP address and port receiving. Symmetric RTP/RTCP requires that the IP address and port
number for sending and receiving RTP/RTCP packets are identical. number for sending and receiving RTP/RTCP packets are identical.
The reasons for using symmetric RTP is primarily to avoid issues with The reasons for using symmetric RTP is primarily to avoid issues with
NAT and Firewalls by ensuring that the flow is actually bi- NAT and Firewalls by ensuring that the flow is actually bi-
directional and thus kept alive and registered as flow the intended directional and thus kept alive and registered as flow the intended
recipient actually wants. In addition it saves resources in the form recipient actually wants. In addition it saves resources in the form
of ports at the end-points, but also in the network as NAT mappings of ports at the end-points, but also in the network as NAT mappings
or firewall state is not unnecessary bloated. Also the number of QoS or firewall state is not unnecessary bloated. Also the number of QoS
state are reduced. state are reduced.
Using Symmetric RTP and RTCP [RFC4961] is REQUIRED. Using Symmetric RTP and RTCP [RFC4961] is REQUIRED.
6.4. Generation of the RTCP Canonical Name (CNAME) 5.4. Generation of the RTCP Canonical Name (CNAME)
The RTCP Canonical Name (CNAME) provides a persistent transport-level The RTCP Canonical Name (CNAME) provides a persistent transport-level
identifier for an RTP endpoint. While the Synchronisation Source identifier for an RTP endpoint. While the Synchronisation Source
(SSRC) identifier for an RTP endpoint may change if a collision is (SSRC) identifier for an RTP endpoint may change if a collision is
detected, or when the RTP application is restarted, it's RTCP CNAME detected, or when the RTP application is restarted, it's RTCP CNAME
is meant to stay unchanged, so that RTP endpoints can be uniquely is meant to stay unchanged, so that RTP endpoints can be uniquely
identified and associated with their RTP media streams. For proper identified and associated with their RTP media streams. For proper
functionality, RTCP CNAMEs should be unique among the participants of functionality, RTCP CNAMEs should be unique among the participants of
an RTP session. an 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, 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.
7. RTP Extensions 6. 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 RTC-Web context. One set is related to conferencing, others are more
generic in nature. generic in nature.
7.1. RTP Conferencing Extensions 6.1. RTP Conferencing Extensions
RTP is inherently defined for group communications, whether using IP RTP is inherently defined for group communications, whether using IP
multicast, multi-unicast, or based on a centralised server. In multicast, multi-unicast, or based on a centralised server. In
today's practice, however, overlay-based conferencing dominates, today's practice, however, overlay-based conferencing dominates,
typically using one or a few so-called conference bridges or servers typically using one or a few so-called conference bridges or servers
to connect endpoints in a star or flat tree topology. Quite diverse to connect endpoints in a star or flat tree topology. Quite diverse
conferencing topologies can be created using the basic elements of conferencing topologies can be created using the basic elements of
RTP mixers and translators as defined in RFC 3550. RTP mixers and translators as defined in RFC 3550.
An number of conferencing topologies are defined in [RFC5117] out of An number of conferencing topologies are defined in [RFC5117] out of
skipping to change at page 27, line 13 skipping to change at page 11, line 5
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].
7.1.1. RTCP Feedback Message: Full Intra Request 6.1.1. Full Intra Request
The Full Intra Request is defined in Sections 3.5.1 and 4.3.1 of CCM The Full Intra Request is defined in Sections 3.5.1 and 4.3.1 of CCM
[RFC5104]. It is used to have the mixer request from a session [RFC5104]. It is used to have the mixer request from a session
participants a new Intra picture. This is used when switching participants a new Intra picture. This is used when switching
between sources to ensure that the receivers can decode the video or between sources to ensure that the receivers can decode the video or
other predicted media encoding with long prediction chains. It is other predicted media encoding with long prediction chains. It is
RECOMMENDED that this feedback message is supported. RECOMMENDED that this feedback message is supported.
7.1.2. RTCP Feedback Message: Picture Loss Indicator 6.1.2. Picture Loss Indication
The Picture Loss Indicator is defined in Section 6.3.1 of AVPF The Picture Loss Indication is defined in Section 6.3.1 of the RTP/
[RFC4585]. It is used by a receiver to tell the encoder that it lost AVPF profile [RFC4585]. It is used by a receiver to tell the encoder
the decoder context and would like to have it repaired somehow. This that it lost the decoder context and would like to have it repaired
is semantically different from the Full Intra Request above. It is somehow. This is semantically different from the Full Intra Request
RECOMMENDED that this feedback message is supported as a loss above. It is RECOMMENDED that this feedback message is supported as
tolerance mechanism. a loss tolerance mechanism.
7.1.3. RTCP Feedback Message: Temporary Maximum Media Stream Bit Rate 6.1.3. Slice Loss Indication
Request
The Slice Loss Indicator is defined in Section 6.3.2 of 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 consecutive
macroblocks, and would like to have these repaired somehow. The use
of this feedback message is OPTIONAL as a loss tolerance mechanism.
6.1.4. Reference Picture Selection Indication
Reference Picture Selection Indication (RPSI) is defined in Section
6.3.3 of the RTP/AVPF profile [RFC4585]. Some video coding standards
allow the use of older reference pictures than the most recent one
for predictive coding. If such a codec is in used, and if the
encoder has learned about a loss of encoder-decoder synchronicity, a
known-as-correct reference picture can be used for future coding.
The RPSI message allows this to be signalled. The use of this RTCP
feedback message is OPTIONAL as a loss tolerance mechanism.
6.1.5. Temporary Maximum Media Stream Bit Rate Request
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.
7.2. RTP Header Extensions 6.2. RTP 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
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
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 7.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
[I-D.ietf-avtcore-srtp-encrypted-header-ext] is implemented when the
client-to-mixer and mixer-to-client audio level indications are in
use in SRTP encrypted sessions, since the information contained in
these header extensions may be considered sensitive.
Currently the other header extensions are not recommended to be Currently the other header extensions are not recommended to be
included at this time. But we do include a list of the available included at this time. But we do include a list of the available
ones for information below: ones for information below:
Transmission Time offsets: [RFC5450] defines a format for including Transmission Time offsets: [RFC5450] defines a format for including
an RTP timestamp offset of the actual transmission time of the RTP an RTP timestamp offset of the actual transmission time of the RTP
packet in relation to capture/display timestamp present in the RTP packet in relation to capture/display timestamp present in the RTP
header. This can be used to improve jitter determination and header. This can be used to improve jitter determination and
buffer management. buffer management.
Associating Time-Codes with RTP Streams: [RFC5484] defines how to Associating Time-Codes with RTP Streams: [RFC5484] defines how to
associate SMPTE times codes with the RTP streams. associate SMPTE times codes with the RTP streams.
7.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.
7.4. Client to Mixer Audio Level 6.4. 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.
7.5. Mixer to Client Audio Level 6.5. 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.
8. Improving RTP Transport Robustness 7. Improving RTP 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.
8.1. RTP Retransmission 7.1. RTP 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
skipping to change at page 31, line 5 skipping to change at page 15, line 19
the importance of the requested media, the probability that the the importance of the requested media, the probability that the
packet will reach the receiver in time for being usable, the packet will reach the receiver in time for being usable, the
consumption of available bit-rate and the impact of the media quality consumption of available bit-rate and the impact of the media quality
for new encodings. for new encodings.
To conclude, the issues raised are implementation concerns that an To conclude, the issues raised are implementation concerns that an
implementation needs to take into consideration, they are not implementation needs to take into consideration, they are not
arguments against including a highly versatile and efficient packet arguments against including a highly versatile and efficient packet
loss repair mechanism. loss repair mechanism.
8.2. Forward Error Correction (FEC) 7.2. Forward Error Correction (FEC)
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 are also highly dynamically and
depends on two main factors, the amount and pattern of lost packets depends on two main factors, the amount and pattern of lost packets
to be recovered and the mechanism one use to derive repair data. The to be recovered and the mechanism one use to derive repair data. The
later choice also effects the the additional delay required to both later choice also effects the the additional delay required to both
encode the repair packets and in the receiver to be able to recover encode the repair packets and in the receiver to be able to recover
the lost packet(s). the lost packet(s).
8.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 an
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.
skipping to change at page 32, line 26 skipping to change at page 16, line 40
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.
8.2.2. Block Based 7.2.2. Block Based
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 33, line 24 skipping to change at page 17, line 38
multiple close losses a scheme of hierarchical encodings are need. multiple close losses a scheme of hierarchical encodings are need.
Thus increasing the overhead significantly. Thus increasing the overhead significantly.
Forward Error Correction (FEC) Framework: This framework Forward Error Correction (FEC) Framework: This framework
[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.
8.2.3. Recommendations for FEC 7.2.3. Recommendations for FEC
(tbd) (tbd)
9. RTP Rate Control and Media Adaptation 8. RTP Rate Control and Media Adaptation
It is REQUIRED to have an RTP Rate Control mechanism using Media It is REQUIRED to have an RTP Rate Control mechanism using Media
adaptation to ensure that the generated RTP flows are network adaptation to ensure that the generated RTP flows are network
friendly, and maintain the user experience in the presence of network friendly, and maintain the user experience in the presence of network
problems. problems.
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 RTC-Web. Thus there will be
need for the IETF to produce such a specification. A potential need for the IETF to produce such a specification. A potential
starting point for defining a solution is "RTP with TCP Friendly Rate starting point for defining a solution is "RTP with TCP Friendly Rate
Control" [rtp-tfrc]. Control" [rtp-tfrc].
10. RTP Performance Monitoring 9. 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.
11. 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.
12. 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 will provide protection or mitigation properties. The use of SRTP [RFC3711] will provide protection or
against all the fundamental issues by offering confidentiality, mitigation against all the fundamental issues by offering
integrity and partial source authentication. We don't discuss the confidentiality, integrity and partial source authentication. The
key-management aspect of SRTP in this memo, that needs to be done guidelines in [I-D.ietf-avtcore-srtp-vbr-audio] apply when using
taking the RTC-Web communication model into account. variable bit rate (VBR) audio codecs, for example Opus.
We don't discuss the key-management aspect of SRTP in this memo, that
needs to be done taking the RTC-Web communication model into account.
In the context of RTC-Web the actual security properties required In the context of RTC-Web the actual security properties required
from RTP are currently not fully understood. Until security goals from RTP are currently not fully understood. Until security goals
and requirements are specified it will be difficult to determine what and requirements are specified it will be difficult to determine what
security features in addition to SRTP and a suitable key-management, security features in addition to SRTP and a suitable key-management,
if any, that are needed. if any, that are needed.
13. Acknowledgements 12. Acknowledgements
13. References
14. References 13.1. Normative References
14.1. Normative References [I-D.ietf-avtcore-srtp-encrypted-header-ext]
Lennox, J., "Encryption of Header Extensions in the Secure
Real-Time Transport Protocol (SRTP)",
draft-ietf-avtcore-srtp-encrypted-header-ext-00 (work in
progress), June 2011.
[I-D.ietf-avtcore-srtp-vbr-audio]
Perkins, C. and J. Valin, "Guidelines for the use of
Variable Bit Rate Audio with Secure RTP",
draft-ietf-avtcore-srtp-vbr-audio-03 (work in progress),
July 2011.
[I-D.ietf-avtext-client-to-mixer-audio-level] [I-D.ietf-avtext-client-to-mixer-audio-level]
Lennox, J., Ivov, E., and E. Marocco, "A Real-Time Lennox, J., Ivov, E., and E. Marocco, "A Real-Time
Transport Protocol (RTP) Header Extension for Client-to- Transport Protocol (RTP) Header Extension for Client-to-
Mixer Audio Level Indication", Mixer Audio Level Indication",
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-avtext-multiple-clock-rates]
Petit-Huguenin, M., "Support for multiple clock rates in
an RTP session", draft-ietf-avtext-multiple-clock-rates-00
(work in progress), June 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 36, line 28 skipping to change at page 21, line 5
[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.
[RFC6222] Begen, A., Perkins, C., and D. Wing, "Guidelines for [RFC6222] Begen, A., Perkins, C., and D. Wing, "Guidelines for
Choosing RTP Control Protocol (RTCP) Canonical Names Choosing RTP Control Protocol (RTCP) Canonical Names
(CNAMEs)", RFC 6222, April 2011. (CNAMEs)", RFC 6222, April 2011.
14.2. Informative References 13.2. Informative References
[I-D.begen-mmusic-redundancy-grouping] [I-D.begen-mmusic-redundancy-grouping]
Begen, A., Cai, Y., and H. Ou, "Duplication Grouping Begen, A., Cai, Y., and H. Ou, "Duplication Grouping
Semantics in the Session Description Protocol", Semantics in the Session Description Protocol",
draft-begen-mmusic-redundancy-grouping-01 (work in draft-begen-mmusic-redundancy-grouping-01 (work in
progress), June 2011. progress), June 2011.
[I-D.cbran-rtcweb-data] [I-D.cbran-rtcweb-data]
Bran, C. and C. Jennings, "RTC-Web Non-Media Data Bran, C. and C. Jennings, "RTC-Web Non-Media Data
Transport Requirements", draft-cbran-rtcweb-data-00 (work Transport Requirements", draft-cbran-rtcweb-data-00 (work
in progress), July 2011. in progress), July 2011.
[I-D.ietf-fecframe-framework] [I-D.ietf-fecframe-framework]
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.
[I-D.ietf-hybi-thewebsocketprotocol]
Fette, I. and A. Melnikov, "The WebSocket protocol",
draft-ietf-hybi-thewebsocketprotocol-10 (work in
progress), July 2011.
[I-D.rosenberg-rtcweb-rtpmux]
Rosenberg, J., Jennings, C., Peterson, J., Kaufman, M.,
Rescorla, E., and T. Terriberry, "Multiplexing of Real-
Time Transport Protocol (RTP) Traffic for Browser based
Real-Time Communications (RTC)",
draft-rosenberg-rtcweb-rtpmux-00 (work in progress),
July 2011.
[I-D.westerlund-avtcore-multistream-and-simulcast]
Westerlund, M. and B. Burman, "RTP Multiple Stream
Sessions and Simulcast",
draft-westerlund-avtcore-multistream-and-simulcast-00
(work in progress), July 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.
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
[RFC2733] Rosenberg, J. and H. Schulzrinne, "An RTP Payload Format
for Generic Forward Error Correction", RFC 2733,
December 1999.
[RFC5117] Westerlund, M. and S. Wenger, "RTP Topologies", RFC 5117, [RFC5117] Westerlund, M. and S. Wenger, "RTP Topologies", RFC 5117,
January 2008. January 2008.
[RFC5245] Rosenberg, J., "Interactive Connectivity Establishment
(ICE): A Protocol for Network Address Translator (NAT)
Traversal for Offer/Answer Protocols", RFC 5245,
April 2010.
[RFC5389] Rosenberg, J., Mahy, R., Matthews, P., and D. Wing,
"Session Traversal Utilities for NAT (STUN)", RFC 5389,
October 2008.
[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] [rtp-tfrc]
Gharai, L., "RTP with TCP Friendly Rate Control Gharai, L., "RTP with TCP Friendly Rate Control
(draft-gharai-avtcore-rtp-tfrc-00)", March 2011. (draft-gharai-avtcore-rtp-tfrc-00)", March 2011.
Authors' Addresses Authors' Addresses
Colin Perkins Colin Perkins
 End of changes. 47 change blocks. 
867 lines changed or deleted 127 lines changed or added

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