One document matched: draft-westerlund-avtext-rtcp-sdes-srcname-03.xml
<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-westerlund-avtext-rtcp-sdes-srcname-03"
ipr="trust200902">
<front>
<title abbrev="RTCP SDES SRCNAME">RTCP Source Description Item SRCNAME to
Label Individual Media Sources</title>
<author fullname="Magnus Westerlund" initials="M." surname="Westerlund">
<organization>Ericsson</organization>
<address>
<postal>
<street>Farogatan 6</street>
<city>SE-164 80 Kista</city>
<country>Sweden</country>
</postal>
<phone>+46 10 714 82 87</phone>
<email>magnus.westerlund@ericsson.com</email>
</address>
</author>
<author fullname="Bo Burman" initials="B." surname="Burman">
<organization>Ericsson</organization>
<address>
<postal>
<street>Farogatan 6</street>
<city>SE-164 80 Kista</city>
<country>Sweden</country>
</postal>
<phone>+46 10 714 13 11</phone>
<email>bo.burman@ericsson.com</email>
</address>
</author>
<date day="21" month="October" year="2013"/>
<abstract>
<t>This document defines a new Source Description (SDES) item called
SRCNAME, which uniquely identifies a single media source, like a camera
or a microphone. It also enables identification of the encoding to
support when multiple ones are produced. That way anyone receiving the
SDES information from a set of interlinked RTP sessions can determine
which SSRCs are logically related to the same media source and encoding.
In addition the new SDES item is also defined for usage with both a
header extension and with the SDP source specific media attribute
("a=ssrc"). Enabling an end-point to receive the SRCNAME with the
relevant RTP packets, as well as RTCP, or learn the source bindings
through signalling, ahead of receiving RTP and RTCP packets.</t>
</abstract>
</front>
<middle>
<section title="Introduction">
<t>This specification defines a new <xref
target="RFC3550">RTP/RTCP</xref> Source Description (SDES) item called
Source Name (SRCNAME). There exist different use cases, including
simulcast and scalable encoding, where a sender transmit multiple RTP
packet streams containing full or partial encodings of the same media
source. This include multiple independent encodings, where it is
desirable to identify the different encodings. These different packet
streams needs to be correctly associated with media sources and
encodings in an receiver so that they correctly use the packet
streams.</t>
<t>The proposed solution provides the RTP packet streams (SSRCs) with
identities for both the media source and the specific encoding. The
identification is done by creating a RTCP SDES item, SRCNAME, by combing
a media source identifier and an encoding identifier separated by a full
stop ("."). The SRCNAME can be sent periodically in RTCP SDES packets to
enable joiners to receive the information within some time period from
when they join. The SRCNAME is also proposed to be sent in an <xref
target="I-D.westerlund-avtext-sdes-hdr-ext">RTP header extension for
SDES items</xref> when it is desirable to speed up reception. For
example by transmitting the SRCNAME in the first N RTP packets when a
new SSRC joins an RTP session. Finally the SRCNAME can be associated
with the SSRC in signalling, and source specific attribute is provided
for this purpose.</t>
</section>
<section title="Definitions">
<t/>
<section title="Requirements Language">
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in <xref
target="RFC2119">RFC 2119</xref>.</t>
</section>
<section title="Terminology">
<t>This document uses terminology defined in <xref
target="I-D.lennox-raiarea-rtp-grouping-taxonomy">"A Taxonomy of
Grouping Semantics and Mechanisms for Real-Time Transport Protocol
(RTP) Sources"</xref> . In particular the following definitions:<list
style="symbols">
<t>Media Source</t>
<t>Packet Stream</t>
<t>Media Encoder</t>
<t>Encoded Stream</t>
<t>Dependent Stream</t>
<t>Participant</t>
<t>End point</t>
</list></t>
<t/>
</section>
</section>
<section title="Motivation">
<t>In RTP Applications where an end-point has more than one Media Source
in a particular RTP session there can exist need to provide these media
sources with an identifier. One reason is to be able to explicitly track
it across any SSRC collisions with resulting SSRC changes. Another
reason is when there exist multiple RTP Packet Streams (SSRC) associated
with that particular media source. Especially in RTP sessions where
multiple media sources are simultaneously transmitted. This document
focus on the cases that results in multiple packet streams due to the
encoding process.</t>
<t><xref target="I-D.westerlund-avtcore-rtp-simulcast">Simulcast</xref>
as referred to in this document is the process when communication
participant provides a media source in multiple encodings using multiple
media encoders with different configurations. These different encoded
streams are then simultaneously transmitted using RTP to a receiver or a
group of receivers. The receiver(s) need two things; First to determine
which of the received packet streams (SSRCs) carries which media source,
and thus determining the different media sources and secondly what
alternative representations of each media source that exist. This can be
accomplished using an identifier to refer to a particular encoding of a
media source.</t>
<t>Scalable encoding is performed by some few media encoders, with the
prime example being <xref target="RFC6190">H.264 Scalable Video
Codec</xref>. A scalable media codec produces one or more base layers,
i.e. an encoded stream, and additionally one or more enhancement layers
that are dependent on the base layer as well as selected other
enhancement layers, these called dependent streams. The encoded and
dependent streams can be sent using multiple RTP packet streams, called
multi-stream transmission (MST). Thus explicit information are required
for which media source a particular packet stream (SSRC) are containing,
independent if it is the encoded or dependent stream. In cases where one
uses multiple base layers, the encoding identifier can be used to
provide RTP/RTCP level identification of the sub-groups of packet
streams that form an independent dependency tree. The detailed
dependency information between the encoded streams and dependent streams
are present in meta data information objects (SEI messages) that are
included inside the RTP payloads for <xref
target="RFC6190">SVC</xref>.</t>
<t>By providing media source and encoding identity information on RTP
and RTCP level we enable or improve usages that prior has been
impractical or sub-optimal:<list style="letters">
<t>A multi-party sessions where the media sources dynamically join
and leave and the central media node is source projection mixer. A
large conference with some participant churn, in this case to rely
solely on a signalling based solution can be problematic, as each
signalling session between the conference and all the participants
needs to be updated, for example using SIP, each time a participant
joins or leaves. Thus enabling RTP/RTCP level information enables
the joining participant's flows to be explicitly indicated as new
media sources and alternative representations on RTP/RTCP level and
thus correctly handled.</t>
<t>Multicast or broadcast situations where session configuration
information is provided ahead of the session, and the exact set of
media sources and their identifies can't be determined and assigned
ahead of time.</t>
<t>To optimize the away the need for buffering or holding
transmission in centralized mixer cases when there is some delay on
the signalling channel. When a media source is added and the
information is provided using signalling only, then a receiver that
hasn't gotten the signalling yet, needs to either buffer or discard
received media until the signalling arrives, alternatively, the
sender needs to hold the transmission until the receiver have
confirmed reception of signalling.</t>
<t>By providing this information in the RTP/RTCP also enables third
party monitoring of the RTP/RTCP streams to work better as the
stream relations are made clear.</t>
</list></t>
<t>It is important to note that a particular RTP packet stream's role in
a communication application can be quite independent to which media
source and the particular encoding the packet stream is. Although the
media source and encoding is sufficient information in some use cases,
there are other cases where additional information about the current
role of packet stream or set of streams are required. Further discussion
of this in <xref target="sec-appid"/>.</t>
<t>SRCNAME extends and complement the existing solutions using <xref
target="RFC5888">SDP Media Description grouping</xref>, or <xref
target="RFC5576">SSRC grouping within a Media Description in SDP</xref>
or implicit or heuristic based mapping of packet streams between or
within RTP sessions. SRCNAME enables explicit identity information at
RTP/RTCP level in a form that are unique across the whole communication
session, usable to create relationships on RTP/RTCP level independent if
one or more RTP session is used, independent on how the packet streams
are distributed over those RTP sessions and how many media sources an
end-point have.</t>
</section>
<section title="Solution">
<t>This section defines the SRCNAME identifier format and its usage as
<xref target="RFC3550">RTCP SDES item</xref>, registers it as an SDES
item possible to use in the <xref
target="I-D.westerlund-avtext-sdes-hdr-ext">RTP header extension for
SDES items</xref>, and in a <xref target="RFC5576">source specific SDP
attribute</xref> as well.</t>
<t/>
<section anchor="sec-format" title="SRCNAME Format">
<t>The SRCNAME MUST fulfill the requirements Section 6.5 in <xref
target="RFC3550">RTP</xref> puts on SDES item values in general. These
requirements is that it is a <xref target="RFC3629">UTF-8</xref> text
string that have a maximum length of 255 bytes.</t>
<t>In addition, there are format restrictions to accommodate the
separation of the Media Source ID and the encoding ID part, as
described by the following <xref target="RFC5234">ABNF</xref>:</t>
<figure anchor="fig-format-abnf" title="SRCNAME Format ABNF">
<artwork><![CDATA[
media-source-id = 1*(%x01-09 / %x0B-0C / %x0E-1F / %x21-2D / %x2F-FF)
encoding-id = media-source-id *(%x2E media-source-id)
; Same as RFC 4566 "byte-string"
; except for space and the "." separator
srcname-content = media-source %x2E encoding-id
]]></artwork>
</figure>
<t>Note, the format do allow multiple "." separators, but only as part
of the encoding ID.</t>
<t>The media source identifier is identifying a media source (as
defined by section 2.1.4 of <xref
target="I-D.lennox-raiarea-rtp-grouping-taxonomy"/>). Each media
source ID MUST be unique when combined with the CNAME. Note that if
one intended to byte compare the combination of CNAME and
media-source-id then one need to pad the CNAME to full 255 bytes with
a common pattern prior to concatenation and comparison.</t>
<t>The encoding-id identifies a particular media encoder (Section
2.1.6 in <xref target="I-D.lennox-raiarea-rtp-grouping-taxonomy"/>)
and its set of produced encoded or dependent streams (as defined per
section 2.1.7 and 2.1.8 in <xref
target="I-D.lennox-raiarea-rtp-grouping-taxonomy"/> respectively). The
encoding-id MUST be unique in the context of the CNAME and the media
source ID.</t>
<t>By require uniqueness scoped by CNAME we simplify the creation of
unique identifiers and reduce the overhead for the inclusion of
SRCNAME. As the CNAME defines the scope of a single synchronization
context, commonly a single host will be responsible for assigning
media source and encoding ID to media sources and their encodings. A
common case will be for having a single character media source ID
followed by stop and then another single character encoding ID, e.g.
"a.2".</t>
</section>
<section anchor="sec-sdes" title="SDES Item SRCNAME">
<t>Distributing the SRCNAME using a RTCP Source Descriptions (SDES)
item are a method that should work with all RTP topologies (assuming
that any intermediary node is supporting this item) and existing RTP
extensions. Thus, a new SDES item called SRCNAME are defined. That
way, anyone receiving the SDES information from a set of interlinked
RTP sessions or SSRCs in a single session can determine the SRCNAME
associated with each SSRC.</t>
<t>The SDES SRCNAME item follows the same format as the other SDES
items defined in <xref target="RFC3550">RTP</xref>:</t>
<figure anchor="fig-sdes-format" title="SDES SRCNAME Format">
<artwork><![CDATA[
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SRCNAME=TBA1 | length | source name ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
<!--TBA1 will replaced with a number assigned by IANA. -->
</figure>
<t>The source name field MUST follow the <xref
target="sec-format">above</xref> srcname-content definition.</t>
<t>When using the SRCNAME SDES item, it is of equally importance with
CNAME. Thus, SRCNAME is RECOMMENDED to be included in all full
compound RTCP packets being sent. It MAY also be included in
non-compound packets in cases where the implementation believes that
there might be new receivers needing the information.</t>
</section>
<section anchor="sec-3" title="SRCNAME in SDP">
<t><xref target="RFC5576">"Source-Specific Media Attributes in the
Session Description Protocol (SDP)"</xref> defines a way of declaring
attributes for SSRC in each RTP session in SDP. With a new SDES item,
it is possible to use this framework to define how SRCNAME can also be
provided in the SDP for each SSRC in each RTP session, thus enabling
an end-point to declare and learn the source bindings ahead of
receiving RTP/RTCP packets.</t>
<t>Hence, we define a new SDP source attribute called srcname with the
following structure:</t>
<figure>
<artwork><![CDATA[
a=ssrc:<ssrc-id> srcname:<srcname>
]]></artwork>
</figure>
<t>The srcname value MUST be identical to the SRCNAME value the media
sender will send in the SDES SRCNAME item in the SDES RTCP
packets.</t>
<t>Formal <xref target="RFC5234">ABNF syntax</xref> for the "srcname"
attribute:</t>
<figure anchor="fig-attribute-abnf" title="SRCNAME Attribute ABNF">
<artwork><![CDATA[
srcname-attr = "srcname:" srcname
srcname = srcname-content
attribute =/ srcname-attr
; The definition of "attribute" is in RFC 4566.
]]></artwork>
</figure>
<t>When used in SDP, srcname-content MUST use ISO 10646 in UTF-8
encoding, and MUST be independent of any "a=charset".</t>
</section>
<section anchor="sec-header-extension"
title="SRCNAME as RTP Header Extension">
<t>In cases when timely deliver of the SRCNAME is required, for
example when adding a new SSRC to an RTP session, or when new receiver
joins a multiparty RTP session, then the SRCNAME can be included in
the <xref target="I-D.westerlund-avtext-sdes-hdr-ext">RTP header
extension for SDES items</xref>.</t>
<t>The <xref target="I-D.westerlund-avtext-sdes-hdr-ext">RTP header
extension for SDES items</xref> is functioning for any SDES item, but
do require new SDES items to register its URN identifier. This is done
below in the <xref target="IANA">IANA section</xref>.</t>
</section>
</section>
<section title="Usage with the Offer/Answer Model">
<t>The SDP offer/answer procedures for a=ssrc are specified in <xref
target="RFC5576">Source-Specific Media Attributes in the Session
Description Protocol (SDP)</xref>. The SDP offer/answer procedures for
a=exthdr are specified in <xref target="RFC5285">A General Mechanism for
RTP Header Extensions</xref>.</t>
</section>
<section title="Backward Compatibility">
<t>Clients not supporting SRCNAME will not have the possibility to bind
different streams to a specific media source, since they will not
understand the SRCNAME SDES item or the RTP header extension. However,
sending SRCNAME SDES items to a client not supporting it should not
impose any problems since all clients should be prepared that new SDES
items may be specified according to <xref
target="RFC3550">RTP</xref>.</t>
<t>According to the definition of SDP attributes in <xref
target="RFC4566">SDP: Session Description Protocol</xref>, if an
attribute is received that is not understood, it MUST be ignored by the
receiver. So a receiver not supporting the a=ssrc attribute will simply
ignore it.</t>
<t><xref target="RFC5576">Source-Specific Media Attributes in the
Session Description Protocol (SDP)</xref> defines rules of how new
source attributes should be registered, which means that a receiver
supporting RFC 5576 should be prepared that new source attributes may be
defined. This means that a user supporting some of the source attributes
should not have any problems when the user receives an SDP with unknown
source attributes.</t>
<t>RTP header extension will only be used when successfully negotiated
in SDP, which requires support in both sender and receiver.</t>
</section>
<section anchor="sec-appid" title="Relation to Application Token">
<t>There exists a proposal for an <xref
target="I-D.even-mmusic-application-token">application token SDES
item</xref>, who's purpose is to map SSRCs to application purposes or
usages of the RTP packet stream. In this section the similarities and
differences are discussed to arrive at the conclusion that for a number
of cases both will be required to enable powerful applications.</t>
<t>The APPID is flexible in that it allows applications or specific
usage of RTP to define how they map the APPID tokens to particular
purpose or usages of the streams. This is clearly intended to provide
flexibility. For example one APPID tokens can have meanings such as
Presentation stream, main talker, video thumbnail number 3, FEC stream
for Audio etc. Such roles can be transient in their behavior. For
example main talker is a role that moves around in a multiparty
communication session based on who is the current speaker, based on
voice activity, or a conference management interface. Thus, the APPID
token for this role will be moved between different SSRCs. This is in
strong contrast with SRCNAME which identifies a particular media source
and encoding. That is not expected to move around, other than in cases
of SSRC collisions, when they enable tracking across this event. RTP
Mixers that perform mixes or switching between input sources, are them
selves having conceptual media sources, which will have stable
identities.</t>
<t>A case that makes it clear that SRCNAME identification may benefit
from having additional role tokens is the case of having a source
projection mixer using simulcast from clients to mixers. From the
perspective of a receiver, there will be multiple SSRCs visible for a
particular media source, but the source projection mixer will select a
sub-set of all potential streams to deliver. A given sub-setting is to
only deliver one representation of each media source to the receiver.
During a multiparty conference where a main speaker is shown larger at
the receiver, and other participants are shown smaller, the mixer may
due to congestion be forced to switch representation of the main
speaker. If the role would be strictly associated with the encoding
representation then main speakers video may for example be reduced in
display size. If instead it is explicitly indicated using APPID the
receiving application would continue to show the main speaker as a
larger display area, despite the reduced quality to ensure the user
continuous to understand that this is still the main talker.</t>
<t>Where SRCNAME provides stable identification that a SSRC is
associated with a media source and particular encoding of that media
source, the APPID can function as a complement when needed to provide
explicit indication of the current role and intended of application
usage of a SSRC.</t>
</section>
<section anchor="IANA" title="IANA Considerations">
<t>Following the guidelines in <xref target="RFC4566">SDP</xref>, in
<xref target="RFC5888">The Session Description Protocol (SDP) Grouping
Framework</xref>, and in <xref target="RFC3550">RTP</xref>, the IANA is
requested to register:</t>
<t><list style="numbers">
<t>A new SDES item named SRCNAME, as defined in <xref
target="sec-sdes"/>. This item needs to be assigned an identifier
TBA1.</t>
<t>A new SDP source attribute named srcname, as defined in <xref
target="sec-3"/>.</t>
<t>New RTP header extension URN identifiers for SRCNAME, as defined
in <xref target="sec-header-extension"/>.</t>
</list></t>
</section>
<section anchor="Security" title="Security Considerations">
<t>The SDES item or header extension SRCNAMEs being close to opaque
identifiers could potentially carry additional meanings or function as
overt channel. If the SRCNAME would be permanent between sessions, they
have the potential for compromising the users’ privacy as they can
be tracked between sessions. See <xref target="RFC7022">Guidelines for
Choosing RTP Control Protocol (RTCP) Canonical Names (CNAMEs)</xref> for
more discussion.</t>
<t>A third party modification of the srcname labels either in the RTCP
SDES items, in the SDP a=ssrc attribute, or in the RTP header extension
can cause service disruption. By modifying labels the wrong streams
could be associated, with potentially serious effects including media
disruptions. If streams that are to be associated aren't associated,
then another type of failures occur. To prevent modification, insertion
or deletion of the srcname labels, the carrying channel needs to be
protected by integrity protection and source authentication. For RTCP
and RTP header extension, various solutions exist, such as <xref
target="RFC3711">SRTP</xref>, <xref target="RFC6347">DTLS</xref>, or
<xref target="RFC4301">IPsec</xref>. For protecting the SDP, the
signalling channel needs to provide protection. For <xref
target="RFC3261">SIP S/MIME</xref> are the ideal, and hop by hop <xref
target="RFC5246">TLS</xref> provides at least some protection, although
not perfect. For SDPs retrieved using <xref target="RFC2326">RTSP
DESCRIBE</xref>, TLS would be the RECOMMENDED solution.</t>
</section>
</middle>
<back>
<references title="Normative References">
<?rfc include="reference.RFC.2119"?>
<?rfc include='reference.RFC.3629'?>
<?rfc include='reference.RFC.3550'?>
<?rfc include='reference.RFC.5234'?>
<?rfc include='reference.RFC.5576'?>
<?rfc include='reference.RFC.7022'?>
</references>
<references title="Informative References">
<?rfc include='reference.I-D.westerlund-avtcore-rtp-simulcast'?>
<?rfc include='reference.I-D.lennox-raiarea-rtp-grouping-taxonomy'?>
<?rfc include='reference.I-D.westerlund-avtext-sdes-hdr-ext'?>
<?rfc include='reference.I-D.even-mmusic-application-token'?>
<?rfc include='reference.RFC.4566'?>
<?rfc include='reference.RFC.4301'?>
<?rfc include='reference.RFC.2326'?>
<?rfc include='reference.RFC.3261'?>
<?rfc include='reference.RFC.3711'?>
<?rfc include='reference.RFC.5246'?>
<?rfc include='reference.RFC.5285'?>
<?rfc include='reference.RFC.5888'?>
<?rfc include='reference.RFC.6190'?>
<?rfc include='reference.RFC.6347'?>
</references>
</back>
</rfc>
| PAFTECH AB 2003-2026 | 2026-04-23 14:21:18 |