ietf-corpus

rfc-5888

The Session Description Protocol (SDP) Grouping Framework

G. Camarillo, H. Schulzrinne
date2010-06 streamIETF areaart wgmmusic statusPROPOSED STANDARD pages21 canonicalhttps://www.rfc-editor.org/rfc/rfc5888 doi10.17487/RFC5888 errataview
In this specification, we define a framework to group "m" lines in the Session Description Protocol (SDP) for different purposes. This framework uses the "group" and "mid" SDP attributes, both of which are defined in this specification. Additionally, we specify how to use the framework for two different purposes: for lip synchronization and for receiving a media flow consisting of several media streams on different transport addresses. This document obsoletes RFC 3388. [STANDARDS-TRACK]

obsoletes

updated by

Extracted elements (24)

design-rationale §9.1

Media alignment in SIP offer/answer is deliberately kept based on matching nth 'm' lines rather than 'mid' labels, because using 'mid' for alignment would not bring any gain but would add complexity to implementations.

sip, realtime

design-rationale §8.5.2

No new group semantics were defined for layered encoding because the existing SDP multicast address grouping mechanism (multiple 'c' lines or the /ttl/numaddresses syntax) already covers the most useful scenarios, avoiding unnecessary complexity.

realtime, multicast

design-rationale §10

The restriction from RFC 3388 that an 'm' line identifier could only appear in a single group using a given semantics was lifted in RFC 5888. Legacy implementations enforced this only for supported semantics, so lifting it does not cause backward-compatibility issues when new semantics are introduced.

realtime, sip

interoperability-note §9.4

For backward compatibility, if a SIP user agent does not understand the 'group' attribute, it simply ignores it per standard SDP fall-back; no 'Require' header is defined. An answerer not supporting 'group' may incorrectly treat FID-grouped streams as independent parallel streams.

sip, realtime

interoperability-note §9.3

For capability negotiation, a client that understands 'group' and 'mid' but does not want to use them can indicate support by including empty 'a=group' lines for each supported semantics value. A server receiving such an offer SHOULD add its capabilities in the same form in the answer.

sip, realtime

normative-requirement §9.2 MUST NOT

'a=group' lines MUST NOT contain identification-tags that correspond to 'm' lines with the port set to zero. When identification-tags in the answer are a subset of those in the offer, the 'group' value to be used in the session MUST be the one present in the answer.

sip, realtime

normative-requirement §6 MUST

'a=group' lines that contain identification-tags that do not correspond to any 'm' line within the session description MUST be ignored; the application acts as if the 'a=group' line did not exist.

realtime, sip

normative-requirement §8.4 MUST

A media agent handling a media flow that comprises several 'm' lines MUST send a copy of the media to every 'm' line that is part of the flow, as long as the codecs and the direction attribute present in a particular 'm' line allow it.

realtime, rtp

normative-requirement §9.2 MUST

A SIP entity that receives an offer with an 'a=group' line with semantics it does not understand MUST return an answer without the 'group' line, but 'mid' lines MUST still be present. A SIP entity that understands the semantics MUST return an answer containing an 'a=group' line with the same semantics.

sip, realtime

normative-requirement §6 MUST

All 'm' lines in a session description that uses 'group' MUST be identified with a 'mid' attribute, whether they appear in the group line(s) or not. If any 'm' line lacks a 'mid' identification, the application MUST NOT perform any grouping.

realtime, sip

normative-requirement §8.5.1 MUST NOT

An application that encodes the same media using different codecs simultaneously MUST NOT use FID to group those media lines, since FID is only appropriate when one codec is used at a time (alternative codecs, not parallel encodings).

realtime, rtp

normative-requirement §7 MUST

An application that receives a session description with 'm' lines grouped using LS semantics MUST synchronize the playout of the corresponding media streams. If non-RTP streams are involved, the application MUST recover the original timing relationship using whatever mechanism is available.

realtime, rtp

normative-requirement §8.5.2 MUST NOT

FID MUST NOT be used to group 'm' lines that do not represent the same information; specifically, FID MUST NOT be used to group the different layers of layered encoding schemes.

realtime, rtp

normative-requirement §9.2 MUST

Grouping of 'm' lines MUST always be requested by the offerer, never by the answerer, because an answerer that requested grouping would not know whether the 'group' attribute was accepted.

sip, realtime

normative-requirement §8.5.3 MUST NOT

If media streams using several different codecs have to be sent to the same IP address and port, the traditional SDP syntax of listing several codecs in the same 'm' line MUST be used. FID MUST NOT be used to group 'm' lines with the same IP address/port; two 'm' lines grouped using FID MUST differ in their transport addresses.

realtime, rtp

normative-requirement §9.1 MUST

In SIP offer/answer, the 'mid' value in the offer MUST be the same as the 'mid' value in the answer. Subsequent offers SHOULD use the same 'mid' value for already existing media streams.

sip, realtime

normative-requirement §9.1 MUST

SIP systems MUST perform media alignment by matching nth 'm' lines regardless of the presence of 'group' or 'mid' attributes. If a 'mid' identifier in the offer differs from the 'mid' in the answer, all 'mid' and 'group' lines must be ignored.

sip, realtime

normative-requirement §4 MUST

The identification-tag in a 'mid' attribute MUST be unique within an SDP session description.

realtime, sip

protocol-element §8.3

Flow Identification (FID) semantics: several 'm' lines grouped together using FID form a media flow, defined as a single media instance (e.g., audio or video stream) that may comprise one or more RTP sessions.

realtime, rtp, sip

protocol-element §7

Lip Synchronization (LS) semantics: 'm' lines grouped with LS indicate that their corresponding media streams must be played out in a synchronized manner. Synchronization for RTP streams is typically performed using RTCP.

realtime, rtp

protocol-element §5

The 'group' session-level attribute groups together different media streams. Its ABNF syntax is: group-attribute = "a=group:" semantics *(SP identification-tag), where semantics is "LS" / "FID" / semantics-extension.

realtime, sip

protocol-element §4

The 'mid' (media stream identification) attribute identifies individual media streams within an SDP session description. Its ABNF syntax is: mid-attribute = "a=mid:" identification-tag, where identification-tag is a token as defined in RFC 4566.

realtime, sip

registry §12

IANA maintains a registry of SDP grouping semantics. Values are registered following the Standards Action policy. Current entries include LS (RFC 5888), FID (RFC 5888), SRF (RFC 3524), ANAT (RFC 4091), FEC (RFC 4756), and DDP (RFC 5583). Each entry requires a brief description, a token (SHOULD be ≤4 characters), and a reference to a standards track RFC.

registry, realtime, sip

security-consideration §11

Using 'group' with FID semantics, an attacker who can modify exchanged session descriptions could force participants to send media copies to an arbitrary destination. Integrity mechanisms such as S/MIME (end-to-end) or TLS (hop-by-hop) in SIP MUST be used to prevent this attack.

security, sip, realtime