RFC 5576
Source-Specific Media Attributes in the Session Description Protocol (SDP)
RFC 5576: Source-Specific Media Attributes in SDP ๐
okay bestie, so this is RFC 5576 โจ, a Standards Track doc from the Network Working Group, dated June 2009. It's called Source-Specific Media Attributes in the Session Description Protocol (SDP) and it was written by J. Lennox (Vidyo), J. Ott (Helsinki University of Technology), and T. Schierl (Fraunhofer HHI) ๐ซถ. The header doesn't list anything it obsoletes or updates, so it's a fresh start ๐ธ.
Status of This Memo ๐
this one is a standards track protocol spec for the Internet community, and it's asking people to talk about it and suggest improvements ๐ฌ. If you want to know where this protocol stands in the official standardization process, check the current edition of the "Internet Official Protocol Standards" (STD 1) ๐ง. Distribution is unlimited, so share away ๐ฆ.
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, as they stood on the date it was published (http://trustee.ietf.org/license-info). Please actually read those, bestie, because they spell out your rights and restrictions ๐.
It's also possible that this document includes material from IETF Documents or IETF Contributions that were published or made publicly available before November 10, 2008. Some of the copyright holders for that older material may never have given the IETF Trust permission to let it be modified outside the IETF Standards Process ๐. So unless you get a proper license from whoever controls that copyright, this document can't be modified outside the IETF Standards Process, and you can't make derivative works of it outside that process either. The exceptions are formatting it for publication as an RFC or translating it into languages other than English ๐.
Abstract ๐ฅ
The Session Description Protocol (SDP) lets you describe the attributes of whole multimedia sessions and of individual media streams inside them, like Real-time Transport Protocol (RTP) sessions ๐ฌ. What it can't do is describe the individual media sources within a media stream, and that's the gap we're fixing ๐ . This document introduces a way to describe RTP media sources, which are identified by their synchronization source (SSRC) identifiers. It shows how to attach attributes to those sources in SDP and how to express relationships between them. It also defines several source-level attributes for describing the properties of media sources โจ.
Table of Contents ๐
here's the full table of contents, exactly as it appears in the original:
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 ๐ธ
okay so SDP [RFC4566] is great at describing the attributes of multimedia sessions and of media streams (like RTP [RFC3550] sessions) inside them. But it has zero way to describe the individual media sources inside a media stream ๐ญ.
Some newer protocols, especially RTP single-source multicast [EXT-SSM], really wanted to describe specific media sources in SDP messages ๐ง. Single-source multicast in particular has to make sure receivers' RTP synchronization source (SSRC) identifiers don't collide with the ones used by media senders. That matters because the RTP specification [RFC3550] says sources that collide have to change their SSRC values once a collision is detected ๐. Earlier work handled this with mechanisms specific to each protocol, which is very much a mess ๐.
Then there's the fact that RTP [RFC3550] allows multiple sources in one RTP session. Think of a user with more than one camera ๐ท. SDP has no existing way for an endpoint to say it's going to use multiple sources, or to describe each of them separately ๐ฅบ.
So this document fixes all of that. It defines a way to describe RTP sources, identified by their synchronization source (SSRC) identifier, in SDP. It lets you attach attributes to those sources and express relationships between individual sources ๐. It also defines a bunch of new SDP attributes that apply to individual sources (the "source-level" attributes), explains how a number of existing media stream ("media-level") attributes can also be applied at the source level, and sets up 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]. They're how this doc signals requirement levels for compliant implementations ๐ .
3. Overview ๐ฆ
in RTP [RFC3550], a group of communicating participants is called an RTP Session ๐ซ. An RTP session is usually tied to a single transport address (for multicast) or a single communication flow (for unicast). RTP translators and single-source multicast [EXT-SSM] can make things messier ๐. RTP topologies get a deeper dive in [RFC5117] ๐บ๏ธ.
Inside an RTP session, the source of one stream of RTP packets is called a synchronization source (SSRC) ๐ค. Every SSRC is identified by a 32-bit numeric identifier ๐ข. Receivers are also a thing: they may never send any RTP packets, but they still have source identifiers, which are used for their RTP Control Protocol (RTCP) receiver reports and other feedback messages ๐.
Messages of the Session Description Protocol (SDP) [RFC4566] are called session descriptions, and they describe multimedia sessions ๐๏ธ. A multimedia session is a set of multimedia senders and receivers plus the data streams flowing from senders to receivers ๐. A multimedia session holds a number of media streams, which are the individual RTP sessions or other media paths that carry one type of multimedia data ๐ถ. Info that applies to the whole session is called session-level information, and info about one media stream is called media-level information ๐ง. All the info describing one media stream is a media description. (Media descriptions are sometimes informally called SDP "m"-lines, after the SDP syntax that starts a media description ๐.) Both levels have a set of standard info elements, and you can add extended info at either level using attributes ๐งฉ.
(Quick side note: the term "media stream" isn't in the SDP spec itself. A bunch of SDP extensions use it anyway, like Interactive Connectivity Establishment (ICE) [ICE], to mean the thing described by an SDP media description. It's honestly confusing ๐ตโ๐ซ. The RTP specification [RFC3550] uses "media stream" for a single media source or RTP packet stream, identified by an SSRC, while an SDP media stream covers an entire RTP session, which can hold any number of RTP sources. So in this document, "media stream" means an SDP media stream, the thing described by an SDP media description, and "media source" means a single source of media packets, which is an RTP media stream ๐ง .)
The core SDP spec has no way to describe individual media sources, especially RTP synchronization sources, inside a media stream ๐ค. To fix that, this document adds a third level of info called source-level information โญ. Syntactically, source-level info is described by a new SDP media-level attribute called ssrc. It identifies specific synchronization sources within an RTP session and acts as a meta-attribute that maps source-level attribute info onto those sources ๐ฏ.
This document also defines an SDP media-level attribute called ssrc-group. It can represent relationships among media sources within an RTP session, kind of like how 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 ๐.
(Part 1 of 4. More to come, bestie, so stay tuned ๐งโจ)
4.1. The "ssrc" Media Attribute ๐
Okay so this is the ssrc attribute, and it's giving property drop ๐
. Its syntax looks like this:
a=ssrc:<ssrc-id> <attribute>
a=ssrc:<ssrc-id> <attribute>:<value>
It describes a property (a "source-level attribute") of one media source, which is an RTP stream inside an RTP session ๐ฆ. The <ssrc-id> is the synchronization source (SSRC) ID of the source being described. It's a 32-bit unsigned integer in network byte order, written out in decimal. The <attribute> (or <attribute>:<value>) is the source-level attribute for that particular source. It follows the same syntax as an SDP a= line, so it's either a single attribute name (a flag) or a name plus a value, like cname:user@example.com ๐. No flag-style attributes are defined in this document, so for now every one you see will have a value.
Within one media stream, every ssrc line that uses the same <ssrc-id> is describing a different attribute of that same source ๐ง. Across media streams, though, the <ssrc-id> values aren't connected to each other (unless media-stream grouping or some other mechanism says they are), so they MAY be repeated ๐ธ.
Each ssrc line gives you exactly one source-level attribute for its <ssrc-id>. Every source mentioned in SDP MUST come with the cname source-level attribute, which is defined in Section 6.1 ๐ซถ. You're free to add any number of other source-level attributes for that source too, because they MAY also be provided โจ.
The ssrc attribute MAY be used for any RTP-based media transport. It isn't defined for anything else ๐.
If other SDP attributes also mention RTP SSRC values (Multimedia Internet KEYing (MIKEY) [RFC3830] [RFC4567] is one example), those values MUST be consistent with each other ๐. Those attributes MAY give extra info about a source that an ssrc attribute describes, or MAY describe extra sources entirely ๐ฅ.
Source-level attributes follow the same syntax as session-level and media-level attributes, but they're defined separately, so don't mix them up ๐ . Every source-level attribute MUST be registered with IANA, using the registry defined in Section 12.2 ๐.
Figure 4 in Section 10 has the formal Augmented Backus-Naur Form (ABNF) [RFC5234] grammar for ssrc, so go there if you want the full spec ๐.
The ssrc media attribute doesn't depend on charset ๐.
4.2. The "ssrc-group" Media Attribute ๐
a=ssrc-group:<semantics> <ssrc-id> ...
This one is the ssrc-group attribute, and it shows how several sources in one RTP session are related to each other ๐. It's kind of like the session-level "group" attribute [RFC3388], which relates media streams inside an SDP multimedia session (in other words, related RTP sessions). Sources already have SSRC IDs, so there's no need for a "mid"-style attribute here. Groups of sources are identified straight from their SSRC IDs ๐ฆ.
The <semantics> value comes from the "group" attribute's spec [RFC3388]. The first semantic values defined for ssrc-group are FID (Flow Identification) [RFC3388] and FEC (Forward Error Correction) [RFC4756]. In both cases, the relationship between the grouped sources is the same as the relationship between matching sources in media streams grouped with the SDP "group" attribute โจ.
ssrc-group semantic values use the same syntax as "group" semantic values, but they're defined separately. Every ssrc-group semantic value MUST be registered with IANA, using the registry defined in Section 12.3 ๐ธ.
(Heads up: the other "group" semantics registered with IANA at the time of writing aren't much use for grouping sources ๐. LS (Lip Synchronization) [RFC3388] is redundant for sources inside one media stream, since RTP sources with the same CNAME are already implicitly synchronized in RTP. SRF (Single Reservation Flow) [RFC3524] and ANAT (Alternative Network Address Types) [RFC4091] are about the media stream's transport characteristics. CS (Composite Session) [FLUTE] groups FLUTE sessions, so it doesn't apply to RTP at all ๐.)
The ssrc-group attribute lists the sources in a group by their <ssrc-id>s. It MUST list at least one <ssrc-id> for each group, and it MAY list as many more as it wants ๐ง. Every <ssrc-id> listed in an ssrc-group attribute MUST be defined by a matching ssrc: line in that same media description ๐.
The ssrc-group media attribute doesn't depend on charset ๐.
Figure 5 in Section 10 has the formal Augmented Backus-Naur Form (ABNF) [RFC5234] grammar for ssrc-group ๐.
5. Usage of Identified Source Identifiers in RTP โจ
Okay, this part is the drama ๐ญ. The SSRC identifiers in an RTP session are picked randomly and independently by each endpoint, which means two endpoints can end up picking the same one ๐. The chance is low, but the RTP specification [RFC3550] says every RTP endpoint MUST be ready to detect and resolve collisions ๐ฅ.
Because of that, every endpoint MUST be ready for the fact that the info about specific sources in a media stream might be outdated ๐ซถ. The only thing that actually ties SSRCs to source CNAMEs is the source description (SDES) RTCP packets sent on the RTP session ๐.
When endpoints choose their own local SSRC values for media streams that have source-level attributes, they MUST NOT use any SSRC IDs that are mentioned in media descriptions they've received for that media stream ๐ โโ๏ธ.
That said, sources identified by SDP source-level attributes don't change anything about RTP transport logic ๐ฆ. Sources that only show up in SDP, where no RTP or RTCP packets have arrived yet, 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 in SDP will show up in an RTP session ๐. New sources with SSRC IDs nobody mentioned can be added at any time, and endpoints MUST be ready to receive packets from them ๐ง. (The spec doesn't say how endpoints should handle those packets. They SHOULD be handled the same way packets from extra sources would be if the endpoint had never received any a=ssrc: attributes at all ๐ธ.)
If an endpoint sees an SSRC collision between its explicitly signaled source and another entity that hasn't explicitly signaled an SSRC, it MAY hold off on RTP collision-resolution actions [RFC3550] for 5*1.5*Td. Td is the deterministic, calculated reporting interval for receivers defined in Section 6.3.1 of the RTP specification [RFC3550]. The point is to see whether the conflict is still there ๐. (This gives explicitly signaled sources the win and puts the collision-resolution work on the sources that never signaled ๐.) SSRC collisions between multiple explicitly signaled sources, though, MUST be acted on immediately ๐ฅ.
If a source identified by source-level attributes gets forced to change its SSRC after RTP's collision-resolution procedures [RFC3550], the author of the SDP containing those source-level attributes SHOULD send out an updated SDP session description with the new SSRC, as long as the way SDP gets distributed for the multimedia session can distribute updated SDP ๐ฆ. That updated SDP MUST include a "previous-ssrc" source-level attribute, which is described in Section 6.2, listing the source's previous SSRC ID โจ. (If only one source with a given CNAME collided, the other RTP session members can work out which old SSRC matches which new one without needing an updated session description ๐ง. But if more than one source collides at once, or sources are leaving and rejoining, they can't work it out. So to avoid confusion, 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 length of the RTP session's participant timeout interval (see Section 6.3.5 of [RFC3550]) ๐ . They SHOULD NOT reuse any SSRC ID that was ever mentioned in SDP (whether they mentioned it themselves or another endpoint did) for the whole lifetime of the RTP session ๐.
Endpoints MUST be ready for the chance that other parties in the session don't understand SDP source-level attributes, unless some higher-level mechanism normatively requires them to ๐ซถ. Section 9 has more on this ๐.
6. Source Attributes ๐
This section covers the specific source attributes you can apply to RTP sources ๐.
6.1. The "cname" Source Attribute ๐ฆ
a=ssrc:<ssrc-id> cname:<cname>
The cname source attribute ties a media source to its Canonical End-Point Identifier (CNAME) source description (SDES) item ๐. This MUST be the CNAME value the media sender will put in its RTCP SDES packets, so it MUST follow the CNAME syntax rules defined in the RTP specification [RFC3550] โจ. If a session participant gets an RTCP SDES packet that links this SSRC to a different CNAME, it SHOULD assume there's been an SSRC collision, and that the source description in the SDP doesn't apply to the actual source it's receiving ๐ญ. This source attribute is REQUIRED to be present whenever any source attributes are present for a source ๐
. The cname attribute MUST NOT show up more than once for the same ssrc-id within a given media stream ๐
โโ๏ธ.
The cname source attribute doesn't depend on charset ๐.
Figure 6 in Section 10 has the formal Augmented Backus-Naur Form (ABNF) [RFC5234] grammar for cname ๐.
6.2. The "previous-ssrc" Source Attribute ๐ธ
a=ssrc:<ssrc-id> previous-ssrc:<ssrc-id> ...
The previous-ssrc source attribute links a media source to the source identifiers it used before ๐ง. When an SSRC changes because of a collision involving a media source described in SDP, the updated session description for the source's new SSRC (see Section 5) MUST include a previous-ssrc attribute that links the new SSRC to the old one ๐. If more updated SDP descriptions get published for that media source, the previous-ssrc attribute SHOULD be included when the session description was generated before the old SSRC's participant timeout, and MAY be included after that point ๐ฅ. If it's present, this attribute MUST list at least one previous SSRC, and MAY list as many more as needed if the source has collided more than once ๐ฆ. This attribute MUST be present only once for each source ๐
.
The previous-ssrc source attribute doesn't depend on charset ๐.
Figure 7 in Section 10 has the formal Augmented Backus-Naur Form (ABNF) [RFC5234] grammar for previous-ssrc ๐.
6.3. The "fmtp" Source Attribute โจ
a=ssrc:<ssrc> fmtp:<format> <format specific parameters>
The fmtp source attribute lets you send format-specific parameters about a given source ๐. The <format> MUST be one of the media formats (in other words, RTP payload types) specified for the media stream ๐. What the <format specific parameters> mean is different for each media type ๐ธ. This parameter MUST only be used for media types where source-level format parameters have been explicitly specified ๐ซถ. Media-level format parameters MUST NOT be carried over blindly ๐
โโ๏ธ.
The fmtp source attribute doesn't depend on charset ๐.
6.4. Other Source Attributes ๐
okay so this doc only defines the 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 affect whether an endpoint accepts or rejects a stream, like in an offer/answer exchange. those are for future consideration ๐ฎ (bestie, that's a whole other era)
7. Examples โจ
this section gives a bunch of examples of SDP descriptions of media sessions with source attributes ๐ง. for brevity, only the media sections are shown, so no session-level stuff ๐
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 is an audio stream advertising one 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 is a video stream where ONE participant (identified by a single CNAME) has several cameras ๐ธ the main character is multitasking. the sources could be told apart further 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 between sources used for RTP retransmission [RFC4588] can be explicitly signaled ๐ this avoids the mess of figuring out which original source goes with which retransmission source when SSRC multiplexing is used for RTP retransmission, as described in Section 5.3 of [RFC4588] ๐
8. Usage With the Offer/Answer Model ๐
when you use this with the SDP Offer/Answer Model [RFC3264], the source-specific SDP attributes only describe the sources that each party is willing to send (whether that's RTP data or RTCP report blocks) ๐จ. there's no mechanism for an answer to accept or reject individual sources inside a media stream ๐ โโ๏ธ. so if the set of sources in a media stream is unacceptable, the answerer's ONLY option is to reject the media stream or the whole 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's still in use) ๐ฆ
9. Backward Compatibility ๐
okay so according to the SDP definition, interpreters of SDP session descriptions ignore unknown attributes ๐ which means endpoints MUST be prepared for the possibility 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 (like RTP Retransmission [RFC4588]), this can constrain some choices about the bitstreams being transmitted ๐ง
source descriptions are specified in this document so that RTP endpoints compliant with the RTP specification [RFC3550] can decode the media streams they describe whether or not they support explicit source descriptions โจ the vibe is backwards compatibility, iconic however, some deployed RTP implementations may not actually support multiple media sources in a media stream ๐ฌ. so media senders MAY wish to stick to a single source at a time, unless they have some way 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 were extended to be source attributes are NOT included here, so don't go looking for them ๐
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 ๐จ
โ ๏ธ this part is serious, bestie. all the security implications of RTP [RFC3550] and of SDP [RFC4566] apply here, full stop ๐
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" ๐. IANA registered these under "Session Description Protocol (SDP) Parameters" under "att-field (media level only)".
the "ssrc" attribute identifies characteristics of media sources within a media stream ๐ค. its format is defined in Section 4.1.
the "ssrc-group" attribute identifies relationships among media sources within a media stream ๐. its format is defined in Section 4.2.
12.2. Registry for Source-Level Attributes ๐
this spec creates a new IANA registry named "att-field (source level)" inside the SDP parameters registry ๐. source attributes MUST be registered with IANA and documented under the same rules as SDP session-level and media-level attributes, as specified in [RFC4566].
new attribute registrations are accepted under the "Specification Required" policy of [RFC5226], as long as the specification includes the following information ๐:
- contact name, email address, and telephone number
- attribute name (as it will appear in SDP)
- long-form attribute name in English
- whether the attribute value is subject to the charset attribute
- a one-paragraph explanation of the purpose of the attribute
- a specification of appropriate attribute values for this attribute
that's the minimum IANA will accept ๐. the Expert Reviewer will decide whether the proposed attributes are expected to see widespread use and interoperability ๐. if so, the attributes MUST be specified in a Standards Track RFC ๐.
submitters should make sure the spec is in the spirit of SDP attributes ๐ซ. most notably, the attribute should be platform independent, meaning it makes no implicit assumptions about operating systems and doesn't name specific pieces of software in a way that could get in the way of 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 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 spec creates a new IANA registry named 'Semantics for the "ssrc-group" SDP Attribute' inside 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 shows up in the IANA registry along with the RFC number of the publication ๐:
- a brief description of the semantics.
- token to be used within the group attribute. this token may be of any length, but SHOULD be no more than four characters long.
- 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 ๐
okay so bestie, these are the docs this RFC leans on for its core rules ๐ we're talking the BCP 14 key words, the offer/answer model, grouping media lines, RTP, SDP itself, FEC grouping, IANA guidelines, and ABNF ๐ง literally the whole support squad ๐ซถ
[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 ๐
these ones are the "good to know" crew ๐ not required reading, but they give you the full picture (and some of them are still works in progress, so the vibes are evolving ๐)
[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
๐ฆ where this page comes from
- ietf: rfc5576 2009-06
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms