RFC 5576 PROPOSED STANDARD APPLICATIONS · SDP · MULTIMEDIA

SDP source attributes: Source-Specific Media Attributes in the Session Description Protocol (SDP)

Adds SDP attributes that describe the individual media sources inside one media stream, not just the stream as a whole.

On rfc-editor.org ↗
PUBLISHED
June 2009
AUTHORS
J. Lennox, J. Ott, T. Schierl
STREAM
IETF
SSRC IDENTIFIER SIZE
32 bits
SSRC ATTRIBUTE FORM
a=ssrc: then the id, then the attribute
SSRC-GROUP SEMANTICS DEFINED
FID and FEC
REQUIRED SOURCE ATTRIBUTE
cname
SSRC-ID RANGE IN THE GRAMMAR
0 .. 2**32 - 1
SOURCE ATTRIBUTE REGISTRATION POLICY
Specification Required
DOI
10.17487/RFC5576
ERRATA
Reported errata

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                          J. Lennox
Request for Comments: 5576                                         Vidyo
Category: Standards Track                                         J. Ott
                                       Helsinki University of Technology
                                                              T. Schierl
                                                          Fraunhofer HHI
                                                               June 2009


                Source-Specific Media Attributes in the
                   Session Description Protocol (SDP)

Status of This Memo

   This document specifies an Internet standards track protocol for the
   Internet community, and requests discussion and suggestions for
   improvements.  Please refer to the current edition of the "Internet
   Official Protocol Standards" (STD 1) for the standardization state
   and status of this protocol.  Distribution of this memo is unlimited.

Copyright Notice

   Copyright (c) 2009 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents in effect on the date of
   publication of this document (http://trustee.ietf.org/license-info).
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.

   This document may contain material from IETF Documents or IETF
   Contributions published or made publicly available before November
   10, 2008.  The person(s) controlling the copyright in some of this
   material may not have granted the IETF Trust the right to allow
   modifications of such material outside the IETF Standards Process.
   Without obtaining an adequate license from the person(s) controlling
   the copyright in such materials, this document may not be modified
   outside the IETF Standards Process, and derivative works of it may
   not be created outside the IETF Standards Process, except to format
   it for publication as an RFC or to translate it into languages other
   than English.

Abstract

   The Session Description Protocol (SDP) provides mechanisms to
   describe attributes of multimedia sessions and of individual media
   streams (e.g., Real-time Transport Protocol (RTP) sessions) within a
   multimedia session, but does not provide any mechanism to describe
   individual media sources within a media stream.  This document
   defines a mechanism to describe RTP media sources, which are
   identified by their synchronization source (SSRC) identifiers, in
   SDP, to associate attributes with these sources, and to express
   relationships among sources.  It also defines several source-level
   attributes that can be used to describe properties of media sources.

Table of Contents

   1. Introduction ....................................................2
   2. Terminology .....................................................3
   3. Overview ........................................................3
   4. Media Attributes ................................................4
      4.1. The "ssrc" Media Attribute .................................5
      4.2. The "ssrc-group" Media Attribute ...........................6
   5. Usage of Identified Source Identifiers in RTP ...................7
   6. Source Attributes ...............................................8
      6.1. The "cname" Source Attribute ...............................8
      6.2. The "previous-ssrc" Source Attribute .......................9
      6.3. The "fmtp" Source Attribute ................................9
      6.4. Other Source Attributes ...................................10
   7. Examples .......................................................10
   8. Usage With the Offer/Answer Model ..............................11
   9. Backward Compatibility .........................................11
   10. Formal Grammar ................................................12
   11. Security Considerations .......................................13
   12. IANA Considerations ...........................................14
      12.1. New SDP Media-Level Attributes ...........................14
      12.2. Registry for Source-Level Attributes .....................14
      12.3. Registry for Source Grouping Semantics ...................15
   13. References ....................................................16
      13.1. Normative References .....................................16
      13.2. Informative References ...................................16

1.  Introduction

   The Session Description Protocol (SDP) [RFC4566] provides mechanisms
   to describe attributes of multimedia sessions and of media streams
   (e.g., Real-time Transport Protocol (RTP) [RFC3550] sessions) within
   a multimedia session, but does not provide any mechanism to describe
   individual media sources within a media stream.

   Several recently proposed protocols, notably RTP single-source
   multicast [EXT-SSM], have found it useful to describe specific media
   sources in SDP messages.  Single-source multicast, in particular,
   needs to ensure that receivers' RTP synchronization source (SSRC)
   identifiers do not collide with those of media senders, as the RTP
   specification [RFC3550] requires that colliding sources change their
   SSRC values after a collision has been detected.  Earlier work has
   used mechanisms specific to each protocol to describe the individual
   sources of an RTP session.

   Moreover, whereas the Real-time Transport Protocol (RTP) [RFC3550] is
   defined as allowing multiple sources in an RTP session (for example,
   if a user has more than one camera), SDP has no existing mechanism
   for an endpoint to indicate that it will be using multiple sources or
   to describe their characteristics individually.

   To address all these problems, this document defines a mechanism to
   describe RTP sources, identified by their synchronization source
   (SSRC) identifier, in SDP, to associate attributes with these
   sources, and to express relationships among individual sources.  It
   also defines a number of new SDP attributes that apply to individual
   sources ("source-level" attributes), describes how a number of
   existing media stream ("media-level") attributes can also be applied
   at the source level, and establishes IANA registries for source-level
   attributes and source grouping semantics.

2.  Terminology

   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 RFC 2119 [RFC2119] and
   indicate requirement levels for compliant implementations.

3.  Overview

   In the Real-time Transport Protocol (RTP) [RFC3550], an association
   among a group of communicating participants is known as an RTP
   Session.  An RTP session is typically associated with a single
   transport address (in the case of multicast) or communication flow
   (in the case of unicast), though RTP translators and single-source
   multicast [EXT-SSM] can make the situation more complex.  RTP
   topologies are discussed in more detail in [RFC5117].

   Within an RTP session, the source of a single stream of RTP packets
   is known as a synchronization source (SSRC).  Every synchronization
   source is identified by a 32-bit numeric identifier.  In addition,
   receivers (who may never send RTP packets) also have source
   identifiers, which are used to identify their RTP Control Protocol
   (RTCP) receiver reports and other feedback messages.

   Messages of the Session Description Protocol (SDP) [RFC4566], known
   as session descriptions, describe multimedia sessions.  A multimedia
   session is a set of multimedia senders and receivers as well as the
   data streams flowing from senders to receivers.  A multimedia session
   contains a number of media streams, which are the individual RTP
   sessions or other media paths over which one type of multimedia data
   is carried.  Information that applies to an entire multimedia session
   is called session-level information, while information pertaining to
   one media stream is called media-level information.  The collection
   of all the information describing a media stream is known as a media
   description.  (Media descriptions are also sometimes known informally
   as SDP "m"-lines, after the SDP syntax that begins a media
   description.)  Several standard information elements are defined at
   both the session level and the media level.  Extended information can
   be included at both levels through the use of attributes.

   (The term "media stream" does not appear in the SDP specification
   itself, but is used by a number of SDP extensions, for instance,
   Interactive Connectivity Establishment (ICE) [ICE], to denote the
   object described by an SDP media description.  This term is
   unfortunately rather confusing, as the RTP specification [RFC3550]
   uses the term "media stream" to refer to an individual media source
   or RTP packet stream, identified by an SSRC, whereas an SDP media
   stream describes an entire RTP session, which can contain any number
   of RTP sources.  In this document, the term "media stream" means an
   SDP media stream, i.e., the thing described by an SDP media
   description, whereas "media source" is used for a single source of
   media packets, i.e., an RTP media stream.)

   The core SDP specification does not have any way of describing
   individual media sources, particularly RTP synchronization sources,
   within a media stream.  To address this problem, in this document we
   introduce a third level of information, called source-level
   information.  Syntactically, source-level information is described by
   a new SDP media-level attribute, "ssrc", which identifies specific
   synchronization sources within an RTP session and acts as a meta-
   attribute mapping source-level attribute information to these
   sources.

   This document also defines an SDP media-level attribute, "ssrc-
   group", which can represent relationships among media sources within
   an RTP session in much the same way as the "group" attribute
   [RFC3388] represents relationships among media streams within a
   multimedia session.

4.  Media Attributes

   This section defines two media-level attributes, "ssrc" and "ssrc-
   group".

4.1.  The "ssrc" Media Attribute

   a=ssrc:<ssrc-id> <attribute>
   a=ssrc:<ssrc-id> <attribute>:<value>

   The SDP media attribute "ssrc" indicates a property (known as a
   "source-level attribute") of a media source (RTP stream) within an
   RTP session. <ssrc-id> is the synchronization source (SSRC) ID of the
   source being described, interpreted as a 32-bit unsigned integer in
   network byte order and represented in decimal. <attribute> or
   <attribute>:<value> represents the source-level attribute specific to
   the given media source.  The source-level attribute follows the
   syntax of the SDP "a=" line.  It thus consists of either a single
   attribute name (a flag) or an attribute name and value, e.g.,
   "cname:user@example.com".  No attributes of the former type are
   defined by this document.

   Within a media stream, "ssrc" attributes with the same value of
   <ssrc-id> describe different attributes of the same media sources.
   Across media streams, <ssrc-id> values are not correlated (unless
   correlation is indicated by media-stream grouping or some other
   mechanism) and MAY be repeated.

   Each "ssrc" media attribute specifies a single source-level attribute
   for the given <ssrc-id>.  For each source mentioned in SDP, the
   source-level attribute "cname", defined in Section 6.1, MUST be
   provided.  Any number of other source-level attributes for the source
   MAY also be provided.

   The "ssrc" media attribute MAY be used for any RTP-based media
   transport.  It is not defined for other transports.

   If any other SDP attributes also mention RTP SSRC values (for
   example, Multimedia Internet KEYing (MIKEY) [RFC3830] [RFC4567]), the
   values used MUST be consistent.  (These attributes MAY provide
   additional information about a source described by an "ssrc"
   attribute or MAY describe additional sources.)

   Though the source-level attributes specified by the ssrc property
   follow the same syntax as session-level and media-level attributes,
   they are defined independently.  All source-level attributes MUST be
   registered with IANA, using the registry defined in Section 12.2.

   Figure 4 in Section 10 gives a formal Augmented Backus-Naur Form
   (ABNF) [RFC5234] grammar for the "ssrc" attribute.

   The "ssrc" media attribute is not dependent on charset.

4.2.  The "ssrc-group" Media Attribute

   a=ssrc-group:<semantics> <ssrc-id> ...

   The SDP media attribute "ssrc-group" expresses a relationship among
   several sources of an RTP session.  It is analogous to the "group"
   session-level attribute [RFC3388], which expresses a relationship
   among media streams in an SDP multimedia session (i.e., a
   relationship among several logically related RTP sessions).  As
   sources are already identified by their SSRC IDs, no analogous
   property to the "mid" attribute is necessary; groups of sources are
   identified by their SSRC IDs directly.

   The <semantics> parameter is taken from the specification of the
   "group" attribute [RFC3388].  The initial semantic values defined for
   the "ssrc-group" attribute are FID (Flow Identification) [RFC3388]
   and FEC (Forward Error Correction) [RFC4756].  In each case, the
   relationship among the grouped sources is the same as the
   relationship among corresponding sources in media streams grouped
   using the SDP "group" attribute.

   Though the "ssrc-group" semantic values follow the same syntax as
   "group" semantic values, they are defined independently.  All "ssrc-
   group" semantic values MUST be registered with IANA, using the
   registry defined in Section 12.3.

   (The other "group" semantics registered with IANA as of this writing
   are not useful for source grouping.  LS (Lip Synchronization)
   [RFC3388] is redundant for sources within a media stream as RTP
   sources with the same CNAME are implicitly synchronized in RTP.  SRF
   (Single Reservation Flow) [RFC3524] and ANAT (Alternative Network
   Address Types) [RFC4091] refer specifically to the media stream's
   transport characteristics.  CS (Composite Session) [FLUTE] is used to
   group FLUTE sessions, and so is not applicable to RTP.)

   The "ssrc-group" attribute indicates the sources in a group by
   listing the <ssrc-id>s of the sources in the group.  It MUST list at
   least one <ssrc-id> for a group and MAY list any number of additional
   ones.  Every <ssrc-id> listed in an "ssrc-group" attribute MUST be
   defined by a corresponding "ssrc:" line in the same media
   description.

   The "ssrc-group" media attribute is not dependent on charset.

   Figure 5 in Section 10 gives a formal Augmented Backus-Naur Form
   (ABNF) [RFC5234] grammar for the "ssrc-group" attribute.

5.  Usage of Identified Source Identifiers in RTP

   The synchronization source identifiers used in an RTP session are
   chosen randomly and independently by endpoints.  As such, it is
   possible for two RTP endpoints to choose the same SSRC identifier.
   Though the probability of this is low, the RTP specification
   [RFC3550] requires that all RTP endpoints MUST be prepared to detect
   and resolve collisions.

   As a result, all endpoints MUST be prepared for the fact that
   information about specific sources identified in a media stream might
   be out of date.  The actual binding between SSRCs and source CNAMEs
   can only be identified by the source description (SDES) RTCP packets
   transmitted on the RTP session.

   When endpoints are choosing their own local SSRC values for media
   streams for which source-level attributes have been specified, they
   MUST NOT use for themselves any SSRC identifiers mentioned in media
   descriptions they have received for the media stream.

   However, sources identified by SDP source-level attributes do not
   otherwise affect RTP transport logic.  Specifically, sources that are
   only known through SDP, for which neither RTP nor RTCP packets have
   been received, MUST NOT be counted for RTP group size estimation, and
   report blocks MUST NOT be sent for them in SR or RR RTCP messages.

   Endpoints MUST NOT assume that only the sources mentioned in SDP will
   be present in an RTP session; additional sources, with previously
   unmentioned SSRC IDs, can be added at any time, and endpoints MUST be
   prepared to receive packets from these sources.  (How endpoints
   handle such packets is not specified here; they SHOULD be handled in
   the same manner as packets from additional sources would be handled
   had the endpoint not received any a=ssrc: attributes at all.)

   An endpoint that observes an SSRC collision between its explicitly
   signaled source and another entity that has not explicitly signaled
   an SSRC MAY delay its RTP collision-resolution actions [RFC3550] by
   5*1.5*Td, where Td is the deterministic, calculated, reporting
   interval for receivers defined in Section 6.3.1 of the RTP
   specification [RFC3550], to see whether the conflict still exists.
   (This gives precedence to explicitly signaled sources and places the
   burden of collision resolution on non-signaled sources.)  SSRC
   collisions between multiple explicitly-signaled sources, however,
   MUST be acted upon immediately.

   If, following RTP's collision-resolution procedures [RFC3550], a
   source identified by source-level attributes has been forced to
   change its SSRC identifier, the author of the SDP containing the
   source-level attributes for these sources SHOULD send out an updated
   SDP session description with the new SSRC if the mechanism by which
   SDP is being distributed for the multimedia session has a mechanism
   to distribute updated SDP.  This updated SDP MUST include a
   "previous-ssrc" source-level attribute, described in Section 6.2,
   listing the source's previous SSRC ID.  (If only a single source with
   a given CNAME has collided, the other RTP session members can infer a
   correspondence between the source's old and new SSRC IDs without
   requiring an updated session description.  However, if more than one
   source collides at once, or if sources are leaving and re-joining,
   this inference is not possible.  To avoid confusion, therefore,
   sending updated SDP messages is always RECOMMENDED.)

   Endpoints MUST NOT reuse the same SSRC ID for identified sources with
   the same CNAME for at least the duration of the RTP session's
   participant timeout interval (see Section 6.3.5 of [RFC3550]).  They
   SHOULD NOT reuse any SSRC ID ever mentioned in SDP (either by
   themselves or by other endpoints) for the entire lifetime of the RTP
   session.

   Endpoints MUST be prepared for the possibility that other parties in
   the session do not understand SDP source-level attributes, unless
   some higher-level mechanism normatively requires them.  See Section 9
   for more discussion of this.

6.  Source Attributes

   This section describes specific source attributes that can be applied
   to RTP sources.

6.1.  The "cname" Source Attribute

   a=ssrc:<ssrc-id> cname:<cname>

   The "cname" source attribute associates a media source with its
   Canonical End-Point Identifier (CNAME) source description (SDES)
   item.  This MUST be the CNAME value that the media sender will place
   in its RTCP SDES packets; it therefore MUST follow the syntax
   conventions of CNAME defined in the RTP specification [RFC3550].  If
   a session participant receives an RTCP SDES packet associating this
   SSRC with a different CNAME, it SHOULD assume there has been an SSRC
   collision and that the description of the source that was carried in
   the SDP description is not applicable to the actual source being
   received.  This source attribute is REQUIRED to be present if any
   source attributes are present for a source.  The "cname" attribute
   MUST NOT occur more than once for the same ssrc-id within a given
   media stream.

   The "cname" source attribute is not dependent on charset.

   Figure 6 in Section 10 gives a formal Augmented Backus-Naur Form
   (ABNF) [RFC5234] grammar for the "cname" attribute.

6.2.  The "previous-ssrc" Source Attribute

   a=ssrc:<ssrc-id> previous-ssrc:<ssrc-id> ...

   The "previous-ssrc" source attribute associates a media source with
   previous source identifiers used for the same media source.
   Following an SSRC change due to an SSRC collision involving a media
   source described in SDP, the updated session description describing
   the source's new SSRC (described in Section 5) MUST include the
   "previous-ssrc" attribute associating the new SSRC with the old one.
   If further updated SDP descriptions are published describing the
   media source, the "previous-ssrc" attribute SHOULD be included if the
   session description was generated before the participant timeout of
   the old SSRC, and MAY be included after that point.  This attribute,
   if present, MUST list at least one previous SSRC and MAY list any
   number of additional SSRCs for the source if the source has collided
   more than once.  This attribute MUST be present only once for each
   source.

   The "previous-ssrc" source attribute is not dependent on charset.

   Figure 7 in Section 10 gives a formal Augmented Backus-Naur Form
   (ABNF) [RFC5234] grammar for the previous-ssrc attribute.

6.3.  The "fmtp" Source Attribute

   a=ssrc:<ssrc> fmtp:<format> <format specific parameters>

   The "fmtp" source attribute allows format-specific parameters to be
   conveyed about a given source.  The <format> parameter MUST be one of
   the media formats (i.e., RTP payload types) specified for the media
   stream.  The meaning of the <format specific parameters> is unique
   for each media type.  This parameter MUST only be used for media
   types for which source-level format parameters have explicitly been
   specified; media-level format parameters MUST NOT be carried over
   blindly.

   The "fmtp" source attribute is not dependent on charset.

6.4.  Other Source Attributes

   This document only defines source attributes that are necessary or
   useful for an endpoint to decode and render the sources in a media
   stream.  It does not include any attributes that would contribute to
   an endpoint's decision to accept or reject a stream, e.g., in an
   offer/answer exchange.  Such attributes are for future consideration.

7.  Examples

   This section gives several examples of SDP descriptions of media
   sessions containing source attributes.  For brevity, only the media
   sections of the descriptions are given.

   m=audio 49168 RTP/AVP 0
   a=ssrc:314159 cname:user@example.com

   Figure 1: Example of a declaration of a single synchronization source

   The example in Figure 1 shows an audio stream advertising a single
   source.

   m=video 49170 RTP/AVP 96
   a=rtpmap:96 H264/90000
   a=ssrc:12345 cname:another-user@example.com
   a=ssrc:67890 cname:another-user@example.com

    Figure 2: Example of a media stream containing several independent
                   sources from a single session member

   The example in Figure 2 shows a video stream where one participant
   (identified by a single CNAME) has several cameras.  The sources
   could be further distinguished by RTCP Source Description (SDES)
   information.

   m=video 49174 RTP/AVPF 96 98
   a=rtpmap:96 H.264/90000
   a=rtpmap:98 rtx/90000
   a=fmtp:98 apt=96;rtx-time=3000
   a=ssrc-group:FID 11111 22222
   a=ssrc:11111 cname:user3@example.com
   a=ssrc:22222 cname:user3@example.com
   a=ssrc-group:FID 33333 44444
   a=ssrc:33333 cname:user3@example.com
   a=ssrc:44444 cname:user3@example.com

               Figure 3: Example of the relationships among
                      several retransmission sources

   The example in Figure 3 shows how the relationships among sources
   used for RTP retransmission [RFC4588] can be explicitly signaled.
   This prevents the complexity of associating original sources with
   retransmission sources when SSRC multiplexing is used for RTP
   retransmission, as is described in Section 5.3 of [RFC4588].

8.  Usage With the Offer/Answer Model

   When used with the SDP Offer/Answer Model [RFC3264], SDP source-
   specific attributes describe only the sources that each party is
   willing to send (whether it is sending RTP data or RTCP report
   blocks).  No mechanism is provided by which an answer can accept or
   reject individual sources within a media stream; if the set of
   sources in a media stream is unacceptable, the answerer's only option
   is to reject the media stream or the entire multimedia session.

   The SSRC IDs for sources described by an SDP answer MUST be distinct
   from the SSRC IDs for sources of that media stream in the offer.
   Similarly, new SSRC IDs in an updated offer MUST be distinct from the
   SSRC IDs for that media stream established in the most recent offer/
   answer exchange for the session and SHOULD be distinct from any SSRC
   ID ever used by either party within the multimedia session (whether
   or not it is still being used).

9.  Backward Compatibility

   According to the definition of SDP, interpreters of SDP session
   descriptions ignore unknown attributes.  Thus, endpoints MUST be
   prepared that recipients of their RTP media session may not
   understand their explicit source descriptions, unless some external
   mechanism indicates that they were understood.  In some cases (such
   as RTP Retransmission [RFC4588]), this may constrain some choices
   about the bitstreams that are transmitted.

   Source descriptions are specified in this document such that RTP
   endpoints that are compliant with the RTP specification [RFC3550]
   will be able to decode the media streams they describe whether or not
   they support explicit source descriptions.  However, some deployed
   RTP implementations may not actually support multiple media sources
   in a media stream.  Media senders MAY wish to restrict themselves to
   a single source at a time unless they have some means of concluding
   that the receivers of the media stream support source multiplexing.

10.  Formal Grammar

   This section gives a formal Augmented Backus-Naur Form (ABNF)
   [RFC5234] grammar for each of the new media and source attributes
   defined in this document.  Grammars for existing session or media
   attributes that have been extended to be source attributes are not
   included.

   Copyright (c) 2009 IETF Trust and the persons identified as authors
   of the code.  All rights reserved.

   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions
   are met:

   o  Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.

   o  Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in
      the documentation and/or other materials provided with the
      distribution.

   o  Neither the name of Internet Society, IETF or IETF Trust, nor the
      names of specific contributors, may be used to endorse or promote
      products derived from this software without specific prior written
      permission.

   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT
   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

   ssrc-attr = "ssrc:" ssrc-id SP attribute
   ; The base definition of "attribute" is in RFC 4566.
   ; (It is the content of "a=" lines.)

   ssrc-id = integer ; 0 .. 2**32 - 1

   attribute =/ ssrc-attr

              Figure 4: Syntax of the "ssrc" media attribute


   ssrc-group-attr = "ssrc-group:" semantics *(SP ssrc-id)

   semantics       = "FEC" / "FID" / token
                    ; Matches RFC 3388 definition and
                    ; IANA registration rules in this doc.

   token           = <as defined in RFC 4566>

   attribute       =/ ssrc-group-attr

           Figure 5: Syntax of the "ssrc-group" media attribute


   cname-attr = "cname:" cname

   cname = byte-string
   ; Following the syntax conventions for CNAME as defined in RFC 3550.
   ; The definition of "byte-string" is in RFC 4566.

   attribute =/ cname-attr

             Figure 6: Syntax of the "cname" source attribute


   previous-ssrc-attr = "previous-ssrc:" ssrc-id *(SP ssrc-id)

   attribute =/ previous-ssrc-attr

         Figure 7: Syntax of the "previous-ssrc" source attribute

11.  Security Considerations

   All the security implications of RTP [RFC3550] and of SDP [RFC4566]
   apply.  Explicitly describing the multiplexed sources of an RTP media
   stream does not appear to add any further security issues.

12.  IANA Considerations

12.1.  New SDP Media-Level Attributes

   This document defines two SDP media-level attributes: "ssrc" and
   "ssrc-group".  These attributes have been registered by IANA under
   "Session Description Protocol (SDP) Parameters" under "att-field
   (media level only)".

   The "ssrc" attribute is used to identify characteristics of media
   sources within a media stream.  Its format is defined in Section 4.1.

   The "ssrc-group" attribute is used to identify relationships among
   media sources within a media stream.  Its format is defined in
   Section 4.2.

12.2.  Registry for Source-Level Attributes

   This specification creates a new IANA registry named "att-field
   (source level)" within the SDP parameters registry.  Source
   attributes MUST be registered with IANA and documented under the same
   rules as for SDP session-level and media-level attributes as
   specified in [RFC4566].

   New attribute registrations are accepted according to the
   "Specification Required" policy of [RFC5226], provided that the
   specification includes the following information:

   o  contact name, email address, and telephone number

   o  attribute name (as it will appear in SDP)

   o  long-form attribute name in English

   o  whether the attribute value is subject to the charset attribute

   o  a one-paragraph explanation of the purpose of the attribute

   o  a specification of appropriate attribute values for this attribute

   The above is the minimum that IANA will accept.  The Expert Reviewer
   will determine if the proposed attributes are expected to see
   widespread use and interoperability; in that case, the attributes
   MUST be specified in a Standards Track RFC.

   Submitters of registrations should ensure that the specification is
   in the spirit of SDP attributes, most notably that the attribute is
   platform independent in the sense that it makes no implicit
   assumptions about operating systems and does not name specific pieces
   of software in a manner that might inhibit interoperability.

   Source-level attributes that are substantially similar in semantics
   to existing session-level or media-level attributes SHOULD reuse the
   same attribute name as those session-level or media-level attributes.
   Source-level attributes SHOULD NOT reuse attribute names of session-
   level or media-level attributes that are unrelated or substantially
   different.

   The initial set of source attribute names, with definitions in
   Section 6 of this document, is in Figure 8.

   Type            SDP Name                     Reference
   ----            ------------------           ---------
   att-field (source level)
                   cname                        [RFC5576]
                   previous-ssrc                [RFC5576]
                   fmtp                         [RFC5576]

     Figure 8: Initial contents of the IANA Source Attribute Registry

12.3.  Registry for Source Grouping Semantics

   This specification creates a new IANA registry named 'Semantics for
   the "ssrc-group" SDP Attribute' within the SDP parameters registry.
   Source group semantics MUST be defined in Standards Track RFCs, under
   the same rules as [RFC3388].

   The IANA Considerations section of the RFC MUST include the following
   information, which appears in the IANA registry along with the RFC
   number of the publication:

   o  A brief description of the semantics.

   o  Token to be used within the group attribute.  This token may be of
      any length, but SHOULD be no more than four characters long.

   o  Reference to a Standards Track RFC.

   Source grouping semantic values that are substantially similar to
   existing media grouping semantic values SHOULD reuse the same
   semantics name as those media grouping semantics.  Source grouping
   semantics SHOULD NOT reuse source grouping semantic names that are
   unrelated or substantially different.

   The initial set of source grouping semantic values, for the semantics
   specified in Section 4.2 of this document, is in Figure 9.

   Semantics                           Token     Reference
   -------------------                 -----     ---------
   Flow Identification                 FID       [RFC5576]
   Forward Error Correction            FEC       [RFC5576]

    Figure 9: Initial Contents of IANA Source Group Semantics Registry

13.  References

13.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC3264]  Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
              with Session Description Protocol (SDP)", RFC 3264,
              June 2002.

   [RFC3388]  Camarillo, G., Eriksson, G., Holler, J., and H.
              Schulzrinne, "Grouping of Media Lines in the Session
              Description Protocol (SDP)", RFC 3388, December 2002.

   [RFC3550]  Schulzrinne, H., Casner, S., Frederick, R., and V.
              Jacobson, "RTP: A Transport Protocol for Real-Time
              Applications", STD 64, RFC 3550, July 2003.

   [RFC4566]  Handley, M., Jacobson, V., and C. Perkins, "SDP: Session
              Description Protocol", RFC 4566, July 2006.

   [RFC4756]  Li, A., "Forward Error Correction Grouping Semantics in
              Session Description Protocol", RFC 4756, November 2006.

   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
              IANA Considerations Section in RFCs", BCP 26, RFC 5226,
              May 2008.

   [RFC5234]  Crocker, D. and P. Overell, "Augmented BNF for Syntax
              Specifications: ABNF", STD 68, RFC 5234, January 2008.

13.2.  Informative References

   [EXT-SSM]  Schooler, E., Ott, J., and J. Chesterfield, "RTCP
              Extensions for Single-Source Multicast Sessions with
              Unicast Feedback", Work in Progress, March 2009.

   [FLUTE]    Mehta, H., "SDP Descriptors for FLUTE", Work in Progress,
              January 2006.

   [ICE]      Rosenberg, J., "Interactive Connectivity Establishment
              (ICE): A Protocol for Network Address Translator (NAT)
              Traversal for Offer/Answer Protocols", Work in Progress,
              October 2007.

   [RFC3524]  Camarillo, G. and A. Monrad, "Mapping of Media Streams to
              Resource Reservation Flows", RFC 3524, April 2003.

   [RFC3830]  Arkko, J., Carrara, E., Lindholm, F., Naslund, M., and K.
              Norrman, "MIKEY: Multimedia Internet KEYing", RFC 3830,
              August 2004.

   [RFC4091]  Camarillo, G. and J. Rosenberg, "The Alternative Network
              Address Types (ANAT) Semantics for the Session Description
              Protocol (SDP) Grouping Framework", RFC 4091, June 2005.

   [RFC4567]  Arkko, J., Lindholm, F., Naslund, M., Norrman, K., and E.
              Carrara, "Key Management Extensions for Session
              Description Protocol (SDP) and Real Time Streaming
              Protocol (RTSP)", RFC 4567, July 2006.

   [RFC4588]  Rey, J., Leon, D., Miyazaki, A., Varsa, V., and R.
              Hakenberg, "RTP Retransmission Payload Format", RFC 4588,
              July 2006.

   [RFC5117]  Westerlund, M. and S. Wenger, "RTP Topologies", RFC 5117,
              January 2008.

Authors' Addresses

   Jonathan Lennox
   Vidyo, Inc.
   433 Hackensack Avenue
   Sixth Floor
   Hackensack, NJ  07601
   US

   EMail: jonathan@vidyo.com


   Joerg Ott
   Helsinki University of Technology (TKK)
   Department of Communications and Networking
   PO Box 3000
   FIN-02015 TKK
   Finland

   EMail: jo@acm.org


   Thomas Schierl
   Fraunhofer HHI
   Einsteinufer 37
   D-10587 Berlin
   Germany

   Phone: +49-30-31002-227
   EMail: ts@thomas-schierl.de

ISO Plain Language

On this page
PROBLEMSDP describes a multimedia session and the media streams inside it, but it has no way to describe the individual sources inside one media stream. RTP allows several sources in a session, for example a user with more than one camera, and single-source multicast needs to name them so that identifiers do not collide.
MECHANISMTwo new media-level attributes are defined. The ssrc attribute names a source by its 32-bit synchronization source identifier and attaches a source-level attribute to it, such as cname. The ssrc-group attribute lists several source identifiers that stand in a defined relationship, such as FID for retransmission.
WHAT IT ADDSReceivers learn which sources exist, how they relate and which canonical name each one uses, and the rules for SSRC collisions and for reusing identifiers are tightened. Because SDP readers ignore unknown attributes, endpoints must assume a receiver may not understand the new lines.

§1Why Sources Need Their Own Description

The Session Description Protocol of RFC 4566 provides mechanisms to describe attributes of multimedia sessions and of individual media streams, for example Real-time Transport Protocol sessions within a multimedia session, but it provides no mechanism to describe individual media sources within a media stream.

Several recently proposed protocols, notably RTP single-source multicast, have found it useful to describe specific media sources in SDP messages. Single-source multicast in particular needs to ensure that the receiver's RTP synchronization source identifiers do not collide with those of the media senders, as the RTP specification requires that colliding sources change their identifier after a collision has been detected. Earlier work has used mechanisms specific to each protocol to describe the individual sources of an RTP session.

Moreover, whereas RTP is defined as allowing multiple sources in an RTP session, for example if a user has more than one camera, SDP has no existing mechanism for an endpoint to indicate that it will be using multiple sources or to describe their characteristics individually.

This document defines a mechanism to describe RTP sources, identified by their synchronization source identifier, in SDP, to associate attributes with these sources, and to express relationships among individual sources. It also defines a number of new SDP attributes that apply to individual sources, which the RFC calls source-level attributes, describes how a number of existing media-level attributes can also be applied at the source level, and establishes IANA registries for source-level attributes and for source grouping semantics.

RTP lets one session carry several separate sources, such as two cameras from the same person. SDP could not say so. This document fills that gap and adds a way to say that two sources are related, for example that one is a retransmission of the other.

§3Session Level, Media Level and Source Level

In RTP, an association among a group of communicating participants is known as an RTP session. An RTP session is typically associated with a single transport address, in the case of multicast, or communication flow, in the case of unicast, though RTP translators and single-source multicast can make the situation more complex.

Within an RTP session, the source of a single stream of RTP packets is known as a synchronization source, and every synchronization source is identified by a 32-bit numeric identifier. Receivers, who may never send RTP packets, also have source identifiers, used to identify their RTCP receiver reports and other feedback messages.

An SDP session description describes a multimedia session, which is a set of multimedia senders and receivers along with the data streams flowing from senders to receivers. A multimedia session contains a number of media streams, the individual RTP sessions or other media paths over which one type of multimedia data is carried. Information that applies to an entire multimedia session is session-level information, while information pertaining to one media stream is media-level information. The collection of all the information describing a media stream is a media description, sometimes known informally as an SDP m-line. Several standard information elements are defined at both the session level and the media level, and extended information can be included at both levels through the use of attributes.

The core SDP specification has no way of describing individual media sources, particularly RTP synchronization sources, within a media stream. This document introduces a third level of information, called source-level information. Syntactically, source-level information is described by a new SDP media-level attribute, ssrc, which identifies specific synchronization sources within an RTP session and acts as a meta-attribute mapping source-level attribute information to these sources. A second new media-level attribute, ssrc-group, represents relationships among media sources within an RTP session in much the same way as the group attribute represents relationships among media streams within a multimedia session.

There are three levels of description. The session level covers everything in the call, the media level covers one stream of media, and this document adds a source level below that for each individual sender inside a stream.

THE THREE LEVELS OF SDP DESCRIPTION
  • SDP session description Session-level information
    • Media stream (m= line) Media-level information
      • Media source (SSRC) Source-level information, added by this RFC

§4The ssrc and ssrc-group Media Attributes

The ssrc media attribute has the form a=ssrc:<ssrc-id> <attribute> or a=ssrc:<ssrc-id> <attribute>:<value>. It indicates a property of a media source within an RTP session. The ssrc-id is the synchronization source identifier of the source being described, interpreted as a 32-bit unsigned integer in network byte order and represented in decimal. The attribute or attribute:value is the source-level attribute specific to that source, and it follows the syntax of the SDP a= line, so it consists of either a single attribute name acting as a flag, or an attribute name and value such as cname:user@example.com. No attributes of the flag-only type are defined by this document.

Within a media stream, ssrc attributes with the same ssrc-id describe different attributes of the same media source. Across media streams, ssrc-id values are not correlated, unless correlation is indicated by media-stream grouping or some other mechanism, and MAY be repeated. For each source mentioned in SDP, the source-level attribute cname MUST be provided, and any number of other source-level attributes MAY also be provided. The attribute MAY be used for any RTP-based media transport and is not defined for other transports. If other SDP attributes also mention RTP SSRC values, for example in the MIKEY attribute, the values used MUST be consistent.

The formal grammar is ssrc-attr = "ssrc:" ssrc-id SP attribute, where ssrc-id = integer covers 0 to 2**32 - 1. The ssrc media attribute is not dependent on charset.

The ssrc-group media attribute has the form a=ssrc-group:<semantics> <ssrc-id> .... It expresses a relationship among several sources of an RTP session, and is analogous to the group session-level attribute, which expresses a relationship among media streams in a multimedia session. As sources are already identified by their SSRC identifiers, no analogous property to the mid attribute is necessary; groups of sources are identified by their SSRC identifiers directly.

The semantics parameter is taken from the specification of the group attribute. The initial semantic values defined for ssrc-group are FID, Flow Identification, and FEC, Forward Error Correction. In each case, the relationship among the grouped sources is the same as the relationship among corresponding sources in media streams grouped using the SDP group attribute. The other group semantics registered with IANA are not useful for source grouping: LS, Lip Synchronization, is redundant for sources within a media stream, as RTP sources with the same CNAME are implicitly synchronized in RTP; SRF, Single Reservation Flow, and ANAT, Alternative Network Address Types, refer specifically to the media stream's transport characteristics; and CS, Composite Session, is used to group FLUTE sessions, so it is not applicable to RTP.

The attribute indicates the sources in a group by listing their ssrc-ids. It MUST list at least one ssrc-id for a group and MAY list any number of additional ones, and every ssrc-id listed MUST be defined by a corresponding ssrc line in the same media description. The formal grammar is ssrc-group-attr = "ssrc-group:" semantics *(SP ssrc-id) with semantics = "FEC" / "FID" / token. The ssrc-group media attribute is not dependent on charset.

The ssrc line names one source and says something about it. The ssrc-group line lists several sources and names the way they relate, for example that one is a retransmission copy of another. Every source listed in a group must also have its own ssrc line in the same part of the description.

§5Using the Identified Sources in RTP

The synchronization source identifiers used in an RTP session are chosen randomly and independently by endpoints, so it is possible for two endpoints to choose the same identifier. The probability is low, but the RTP specification requires that all endpoints MUST be prepared to detect and resolve collisions. All endpoints MUST therefore be prepared for the fact that information about specific sources identified in a media stream might be out of date; the actual binding between SSRCs and source CNAMEs can only be identified by the source description RTCP packets transmitted on the RTP session.

When endpoints choose their own local SSRC values for media streams for which source-level attributes have been specified, they MUST NOT use for themselves any SSRC identifiers mentioned in media descriptions they have received for that media stream. Sources identified by SDP source-level attributes do not otherwise affect RTP transport logic: sources that are only known through SDP, for which neither RTP nor RTCP packets have been received, MUST NOT be counted for RTP group size estimation, and report blocks MUST NOT be sent for them in SR or RR RTCP messages. Endpoints MUST NOT assume that only the sources mentioned in SDP will be present in an RTP session, because additional sources with previously unmentioned SSRC identifiers can be added at any time.

An endpoint that observes an SSRC collision between its explicitly signaled source and another entity that has not explicitly signaled an SSRC MAY delay its RTP collision-resolution actions by 5*1.5*Td, where Td is the deterministic calculated reporting interval for receivers, to see whether the conflict still exists. This gives precedence to explicitly signaled sources and places the burden of collision resolution on non-signaled sources. Collisions between multiple explicitly signaled sources, however, MUST be acted upon immediately.

If a source identified by source-level attributes has been forced to change its SSRC identifier, the author of the SDP SHOULD send out an updated session description with the new SSRC if the mechanism distributing the SDP can distribute updates. That updated description MUST include a previous-ssrc source-level attribute listing the source's previous identifier. If only a single source with a given CNAME has collided, the other session members can infer a correspondence between the old and new identifiers without an updated description, but if more than one source collides at once, or if sources are leaving and rejoining, that inference is not possible. Sending updated descriptions is therefore always RECOMMENDED.

Endpoints MUST NOT reuse the same SSRC identifier for identified sources with the same CNAME for at least the duration of the RTP session's participant timeout interval, and SHOULD NOT reuse any SSRC identifier ever mentioned in SDP for the entire lifetime of the RTP session.

Because the numbers that name sources are picked at random, two devices can pick the same one. The rules here make sure a device does not steal a number that somebody else has already advertised, and that it notices when the description it holds has gone out of date.

When a source really does have to change its number, the description is sent again with the new number and a note of the old one.

§6The Source-Level Attributes

The cname source attribute, written a=ssrc:<ssrc-id> cname:<cname>, associates a media source with its Canonical End-Point Identifier source description item. This MUST be the CNAME value that the media sender will place in its RTCP source description packets, and it therefore MUST follow the syntax conventions of CNAME defined in the RTP specification. If a session participant receives an RTCP source description packet associating this SSRC with a different CNAME, it SHOULD assume there has been an SSRC collision and that the description of the source carried in the SDP is not applicable to the actual source being received. This attribute is REQUIRED to be present if any source attributes are present for a source, and MUST NOT occur more than once for the same ssrc-id within a given media stream. Its grammar is cname-attr = "cname:" cname, and it is not dependent on charset.

The previous-ssrc source attribute, written a=ssrc:<ssrc-id> previous-ssrc:<ssrc-id> ..., associates a media source with previous source identifiers used for the same media source. Following an SSRC change due to a collision involving a source described in SDP, the updated session description MUST include it, associating the new SSRC with the old one. If further updated descriptions are published, it SHOULD be included if the description was generated before the participant timeout of the old SSRC, and MAY be included after that point. If present, it MUST list at least one previous SSRC and MAY list any number of additional ones if the source has collided more than once, and it MUST be present only once for each source. Its grammar is previous-ssrc-attr = "previous-ssrc:" ssrc-id *(SP ssrc-id), and it is not dependent on charset.

The fmtp source attribute, written a=ssrc:<ssrc> fmtp:<format> <format specific parameters>, allows format-specific parameters to be conveyed about a given source. The format parameter MUST be one of the media formats, that is, the RTP payload types, specified for the media stream, and the meaning of the format-specific parameters is unique for each media type. This parameter MUST only be used for media types for which source-level format parameters have explicitly been specified; media-level format parameters MUST NOT be carried over blindly. It is not dependent on charset.

The document defines only source attributes that are necessary or useful for an endpoint to decode and render the sources in a media stream. It does not include attributes that would contribute to a decision to accept or reject a stream, for example in an offer/answer exchange; those are left for future consideration. All source-level attributes MUST be registered with IANA in the new registry for source-level attributes, and the initial contents of that registry are cname, previous-ssrc and fmtp.

Three attributes are defined for a source. The cname gives the canonical name the sender will use for itself, which must be present whenever any source attribute is present. The previous-ssrc records identifiers the source has used before, after a collision. The fmtp carries codec parameters that apply to one source only.

§7Examples

The first example shows an audio stream advertising a single source:

m=audio 49168 RTP/AVP 0
a=ssrc:314159 cname:user@example.com

The second example shows a video stream where one participant, identified by a single CNAME, has several cameras:

m=video 49170 RTP/AVP 96
a=rtpmap:96 H264/90000
a=ssrc:12345 cname:another-user@example.com
a=ssrc:67890 cname:another-user@example.com

The sources could be further distinguished by RTCP source description information.

The third example shows how the relationships among sources used for RTP retransmission can be explicitly signalled, with two groups of two sources, each marked FID:

m=video 49174 RTP/AVPF 96 98
a=rtpmap:96 H.264/90000
a=rtpmap:98 rtx/90000
a=fmtp:98 apt=96;rtx-time=3000
a=ssrc-group:FID 11111 22222
a=ssrc:11111 cname:user3@example.com
a=ssrc:22222 cname:user3@example.com
a=ssrc-group:FID 33333 44444
a=ssrc:33333 cname:user3@example.com
a=ssrc:44444 cname:user3@example.com

That prevents the complexity of associating original sources with retransmission sources when SSRC multiplexing is used for RTP retransmission.

The three examples go from the simplest case, one source in an audio stream, through one participant sending two cameras from the same stream, to two pairs of sources where each pair is marked as a retransmission relationship.

TWO FID GROUPS OF SOURCES (RFC 5576, FIGURE 3)
Figure 3
m=video 49174 RTP/AVPF 96 98
a=rtpmap:96 H.264/90000
a=rtpmap:98 rtx/90000
a=fmtp:98 apt=96;rtx-time=3000
a=ssrc-group:FID 11111 22222
a=ssrc:11111 cname:user3@example.com
a=ssrc:22222 cname:user3@example.com
a=ssrc-group:FID 33333 44444
a=ssrc:33333 cname:user3@example.com
a=ssrc:44444 cname:user3@example.com

§9Offer/Answer and Older Receivers

When used with the SDP offer/answer model, source-specific attributes describe only the sources that each party is willing to send, whether it is sending RTP data or RTCP report blocks. No mechanism is provided by which an answer can accept or reject individual sources within a media stream; if the set of sources in a media stream is unacceptable, the answerer's only option is to reject the media stream or the entire multimedia session.

The SSRC identifiers for sources described by an SDP answer MUST be distinct from the identifiers for sources of that media stream in the offer. Similarly, new SSRC identifiers in an updated offer MUST be distinct from the identifiers for that media stream established in the most recent offer/answer exchange, and SHOULD be distinct from any identifier ever used by either party within the multimedia session, whether or not it is still being used.

According to the definition of SDP, interpreters of session descriptions ignore unknown attributes. Endpoints MUST therefore be prepared for the fact that recipients of their RTP media session may not understand their explicit source descriptions, unless some external mechanism indicates that they were understood. In some cases, such as RTP retransmission, this may constrain some choices about the bitstreams that are transmitted.

Source descriptions are specified in this document such that RTP endpoints that are compliant with the RTP specification will be able to decode the media streams they describe whether or not they support explicit source descriptions. However, some deployed RTP implementations may not actually support multiple media sources in a media stream. Media senders MAY therefore wish to restrict themselves to a single source at a time unless they have some means of concluding that the receivers of the media stream support source multiplexing.

In an offer and answer, the source lines only say what each side is willing to send. There is no way to accept some sources and refuse others, so a receiver that dislikes the list has to refuse the whole stream.

And because SDP readers skip lines they do not recognise, a sender cannot count on its source lines being read. It should keep to one source unless it has some other way of knowing the receiver can handle several.

§11Security Considerations

All the security implications of RTP and of SDP apply. Explicitly describing the multiplexed sources of an RTP media stream does not appear to add any further security issues.

Describing the sources inside a stream does not add anything new to the security picture; the same rules that apply to RTP and to SDP already cover it.

§9References