Source-Specific Media Attributes in the Session Description Protocol (SDP)
Extracted elements (28)
Explicit SSRC collision resolution delay (5*1.5*Td) is designed to give precedence to explicitly signaled sources and place the burden of collision resolution on non-signaled sources, reducing disruption to sessions using source-level attributes.
Source-level information is introduced as a third level below session-level and media-level SDP information. The 'ssrc' attribute acts as a meta-attribute mapping source-level attributes to specific SSRC identifiers, enabling per-source description without changing the SDP core syntax.
The 'ssrc-group' attribute deliberately reuses semantics tokens from the 'group' attribute (FID, FEC) because source grouping relationships are analogous to media-stream grouping relationships. Other 'group' semantics (LS, SRF, ANAT, CS) are explicitly excluded as inapplicable to per-source grouping.
SDP interpreters ignore unknown attributes, so endpoints MUST be prepared that recipients may not understand explicit source descriptions unless an external mechanism confirms they were. Some deployed RTP implementations may not support multiple media sources in a media stream.
All endpoints MUST be prepared for the fact that information about specific sources identified in a media stream might be out of date, as SSRC bindings can only be authoritatively confirmed via RTCP SDES packets.
All source-level attributes MUST be registered with IANA using the registry defined in Section 12.2.
All 'ssrc-group' semantic values MUST be registered with IANA using the registry defined in Section 12.3.
Endpoints MUST NOT assume that only the sources mentioned in SDP will be present in an RTP session; additional sources with unmentioned SSRC IDs can be added at any time.
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, and SHOULD NOT reuse any SSRC ID ever mentioned in SDP for the entire lifetime of the session.
Every <ssrc-id> listed in an 'ssrc-group' attribute MUST be defined by a corresponding 'ssrc:' line in the same media description. The group MUST list at least one <ssrc-id>.
For each source mentioned in SDP, the source-level attribute 'cname' MUST be provided. Any number of other source-level attributes MAY also be provided.
If a source identified by source-level attributes is forced to change its SSRC, the SDP author SHOULD send an updated session description including a 'previous-ssrc' attribute listing the old SSRC ID.
In offer/answer, SSRC IDs for sources described in an SDP answer MUST be distinct from SSRC IDs for sources of that media stream in the offer. New SSRC IDs in an updated offer MUST also be distinct from those established in the most recent offer/answer exchange.
Sources known only 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.
SSRC collisions between multiple explicitly-signaled sources MUST be acted upon immediately. An endpoint observing a collision between its explicitly signaled source and a non-signaled source MAY delay collision-resolution by 5*1.5*Td.
The 'cname' value specified in SDP MUST be the CNAME that the media sender will place in its RTCP SDES packets. If a mismatched CNAME is received in RTCP, the receiver SHOULD assume an SSRC collision has occurred.
When choosing local SSRC values, endpoints MUST NOT use any SSRC identifiers mentioned in media descriptions they have received for that media stream.
The 'cname' source attribute (a=ssrc:<ssrc-id> cname:<cname>) associates a media source with its RTCP CNAME SDES item. It MUST follow RFC 3550 CNAME syntax conventions and MUST NOT occur more than once for the same ssrc-id within a media stream.
The 'fmtp' source attribute (a=ssrc:<ssrc> fmtp:<format> <format specific parameters>) conveys format-specific parameters for a given source. The <format> MUST be one of the media formats specified for the media stream, and MUST only be used for media types that explicitly specify source-level format parameters.
The 'previous-ssrc' source attribute (a=ssrc:<ssrc-id> previous-ssrc:<ssrc-id> ...) associates a media source with previous SSRC identifiers used after a collision-induced SSRC change. It lists one or more old SSRC IDs and MUST be present only once per source.
The 'ssrc-group' SDP media-level attribute expresses a relationship among several RTP sources within a session, analogous to the 'group' attribute for media streams. Initial semantics are FID (Flow Identification) and FEC (Forward Error Correction).
The 'ssrc' SDP media-level attribute identifies a property (source-level attribute) of a specific RTP media source within an RTP session. The <ssrc-id> is the 32-bit unsigned SSRC identifier represented in decimal, followed by an attribute name and optional value.
A new IANA registry 'att-field (source level)' is created under SDP Parameters for source-level attributes. New registrations require 'Specification Required' policy per RFC 5226. Initial entries: cname, previous-ssrc, fmtp (all from RFC 5576).
A new IANA registry 'Semantics for the ssrc-group SDP Attribute' is created under SDP Parameters. New semantics must be defined in Standards Track RFCs. Initial entries: FID (Flow Identification) and FEC (Forward Error Correction), both from RFC 5576.
Two new SDP media-level attributes ('ssrc' and 'ssrc-group') are registered under 'Session Description Protocol (SDP) Parameters' in the 'att-field (media level only)' registry.
All security implications of RTP (RFC 3550) and SDP (RFC 4566) apply to this specification. Explicitly describing the multiplexed sources of an RTP media stream does not appear to add any further security issues beyond those already present in the underlying protocols.
The 'ssrc' attribute syntax is: a=ssrc:<ssrc-id> <attribute> or a=ssrc:<ssrc-id> <attribute>:<value>. The ssrc-id is a 32-bit unsigned integer (0..2^32-1) in decimal. The ABNF is: ssrc-attr = 'ssrc:' ssrc-id SP attribute.
The 'ssrc-group' attribute syntax is: a=ssrc-group:<semantics> <ssrc-id> ... The semantics token is 'FEC', 'FID', or a registered token. ABNF: ssrc-group-attr = 'ssrc-group:' semantics *(SP ssrc-id).