rfc-5956

Forward Error Correction Grouping Semantics in the Session Description Protocol

A. Begen
date2010-09 streamIETF areaart wgmmusic statusPROPOSED STANDARD pages14 canonicalhttps://www.rfc-editor.org/rfc/rfc5956 doi10.17487/RFC5956
This document defines the semantics for grouping the associated source and FEC-based (Forward Error Correction) repair flows in the Session Description Protocol (SDP). The semantics defined in this document are to be used with the SDP Grouping Framework (RFC 5888). These semantics allow the description of grouping relationships between the source and repair flows when one or more source and/or repair flows are associated in the same group, and they provide support for additive repair flows. SSRC-level (Synchronization Source) grouping semantics are also defined in this document for Real-time Transport Protocol (RTP) streams using SSRC multiplexing. [STANDARDS-TRACK]

obsoletes

Extracted elements (23)

design-rationale §4.1

Additivity among repair flows is not defined as transitive: each set of additive repair flows must be explicitly grouped, because two repair flows additive in one FEC group are not necessarily additive in another group.

realtime, rtp

design-rationale §4.3

SSRC-level grouping semantics are defined separately from session-level grouping because SSRC-multiplexed streams share the same 'm' line and cannot use the 'group' attribute, which operates on 'mid' identifiers across 'm' lines.

realtime, rtp

design-rationale §3.1

The 'FEC-FR' semantics were introduced to replace 'FEC' because the original RFC 4756 'FEC' semantics could not express specific associations between source and repair flows in multi-flow scenarios, leading to ambiguous SDP descriptions.

realtime, rtp

design-rationale §1

The FEC Framework requires source and repair flows to be carried in separate streams, and recommends separate RTP sessions for flexibility and backward compatibility, though SSRC multiplexing is supported to reduce port usage.

realtime, rtp

interoperability-note §3.2

RFC 5888 obsoleted RFC 3388 to allow an 'm' line to appear in more than one 'a=group' line with the same semantics; this change is required for the FEC-FR semantics to work correctly.

realtime, rtp

interoperability-note §4.5

When a node receiving an offer with 'FEC-FR' semantics does not understand line grouping or the FEC grouping semantics, it responds either by ignoring the grouping attribute or refusing the request; the offerer must handle both cases per Section 4.5.

realtime, rtp

normative-requirement §4.1 MUST

Each set of additive repair flows MUST be stated explicitly in SDP; additivity is not necessarily a transitive relationship.

realtime, rtp

normative-requirement §4.1 MUST

If there is more than one repair flow included in an FEC group, these repair flows MUST be considered to be additive. Repair flows that are not additive MUST be indicated in separate FEC groups.

realtime, rtp

normative-requirement §3.2 RECOMMENDED

Implementations are RECOMMENDED to support the 'FEC' semantics specified in Section 4.4 for backward-compatibility reasons.

realtime, rtp

normative-requirement §3.2 MUST

Implementations compliant with this document MUST use the 'FEC-FR' semantics introduced in Sections 4.1 and 4.3 for associating source and repair flows.

realtime, rtp

normative-requirement §4.4 MUST

Sessions negotiated between two endpoints implementing this specification MUST use the 'FEC-FR' semantics and not the deprecated 'FEC' semantics.

realtime, rtp

normative-requirement §4.1 MUST

The 'a=group:FEC-FR' semantics MUST be used to associate the source and repair flows except when the source and repair flows are specified in the same media description (same 'm' line).

realtime, rtp

normative-requirement §4.3 MUST

The SSRC identifiers for RTP streams carried in the same RTP session MUST be unique per RFC 3550, and the 'ssrc-group' attribute MUST only be used at the media level.

realtime, rtp

normative-requirement §4.5 MUST

When a sender does not support 'FEC' semantics and 'FEC-FR' is not understood by the peer, it MUST send a new offer without FEC.

realtime, rtp

normative-requirement §4.5 MUST

When the answer ignores the 'FEC-FR' grouping attribute and using 'FEC' semantics would create ambiguity, the sender MUST send a new offer without FEC.

realtime, rtp

normative-requirement §4.4 SHOULD

When the 'FEC-FR' semantics are not understood by the node, the offering implementation SHOULD initiate a new offer using the 'FEC' semantics.

realtime, rtp

protocol-element §4.1

'FEC-FR' is defined as the SDP grouping semantics token used with 'a=group' to associate source and repair flows in the FEC Framework. Each 'a=group:FEC-FR' line defines one FEC group; multiple repair flows in the same group are additive.

realtime, rtp

protocol-element §4.4

The deprecated 'FEC' grouping semantics (originally from RFC 4756) require a source or repair flow to appear in only a single 'a=group:FEC' line, limiting expressiveness for complex multi-flow scenarios.

realtime, rtp

protocol-element §4.3

The 'ssrc-group' attribute with 'FEC-FR' semantics (a=ssrc-group:FEC-FR *(SP ssrc-id)) is used to express FEC grouping for SSRC-multiplexed RTP streams within a single RTP session.

realtime, rtp

registry §6

This document registers 'FEC-FR' in the IANA 'Semantics for the ssrc-group SDP Attribute' registry under SDP Parameters, for Forward Error Correction FR grouping of SSRC-multiplexed streams.

registry, realtime

registry §6

This document registers two tokens in the IANA 'Semantics for the group SDP Attribute' registry: 'FEC' (Forward Error Correction, Deprecated) and 'FEC-FR' (Forward Error Correction FR), both referencing RFC 5956.

registry, realtime

security-consideration §5 SHOULD

There is a weak threat that FEC grouping in SDP can be modified to indicate FEC relationships that do not exist, potentially causing FEC to fail to protect or mishandle media payload streams. The receiver SHOULD perform an integrity check on SDP and only trust SDP from trusted sources.

security, realtime

wire-format §4.1

FEC grouping uses the SDP 'a=group:FEC-FR' line with space-separated 'mid' identifiers listing source flows followed by repair flows. For SSRC multiplexing, 'a=ssrc-group:FEC-FR' uses space-separated SSRC numeric identifiers.

realtime, rtp