Session Description Protocol Elements for the Forward Error Correction (FEC) Framework
Extracted elements (20)
Specifying the repair window size as an absolute time value does not necessarily correspond to an integer number of packets or exactly match the RTP clock rate, causing mismatches among subsequent repair windows. However, this mismatch does not break anything in the FEC decoding process in practice.
Using the same integer values for SDP media stream identifiers ('mid') and source flow identifiers is NOT RECOMMENDED, even though both may be integers, to avoid ambiguity in association between the two identifier spaces.
The 'group' attribute and FEC grouping semantics from RFC 5888 and RFC 5956 respectively are used to associate source and repair flows. RFC 5956 handles backward compatibility in the Offer/Answer Model.
A repair flow MUST contain only repair packets for a single FEC Framework instance; packets from source flows or other repair flows belonging to a different FEC Framework instance cannot be sent within this flow.
For bandwidth specification, it is RECOMMENDED to use the TIAS bandwidth modifier (RFC 3890) with 'a=maxprate', unless the AS bandwidth modifier is used. The use of AS is NOT RECOMMENDED because TIAS accounts for IP version and transport protocol differences.
In multicast-based applications, receivers SHOULD NOT send an answer back to the sender specifying their FEC protection choices, since this can overwhelm the sender in large-scale multicast applications.
In TIAS-based bitrate calculations, packet size SHALL include all headers and payload excluding IP and UDP headers. In AS-based calculations, packet size SHALL include all headers and payload plus IP and UDP headers.
Individual source flows MUST be identified with unique integer identifiers using the 'fec-source-flow' attribute. The 'id' parameter MUST be an integer. If an Explicit Source FEC Payload ID is used, the 'tag-len' parameter MUST exist; otherwise it MUST NOT exist.
Sender-Side FEC-Scheme-Specific Information (SS-FSSI) MUST be communicated in the 'ss-fssi' container; any other FSSI MUST be communicated in the 'fssi' container. If the FEC scheme does not require any specific information, the 'ss-fssi' and 'fssi' parameters MUST NOT exist.
The FEC decoder SHOULD NOT register a FEC decoding failure until it has waited at least for the duration of the repair window after receiving the first packet in a FEC block.
The integer identifier for each source flow definition MUST be unique among all source flows protected by the same FEC repair flow. Any FSSI other than that solely required by the sender MUST be communicated via the FSSI container (not SS-FSSI).
When a FEC scheme uses an Explicit Source FEC Payload ID, the 'FEC/<proto>' transport protocol identifier MUST be registered with IANA. If a FEC scheme does not use the Explicit Source FEC Payload ID, the original transport protocol identifier MUST be used to support backward compatibility with receivers that do not support FEC.
FEC Framework Configuration Information includes: identification of repair flows, per-source-flow definition and unique integer identifier, FEC Encoding ID, length of Explicit Source FEC Payload ID, and zero or more FSSI elements consisting of name-value pairs defined by the FEC scheme.
RFC 6364 defines two new SDP transport protocol identifiers: 'FEC/UDP' for source flows that append an Explicit Source FEC Payload ID to a UDP-formatted input stream, and 'UDP/FEC' for FEC repair packet flows as defined in RFC 6363.
The 'fec-repair-flow' SDP attribute (media-level) describes FEC repair flows. Its ABNF syntax includes required 'encoding-id' and optional 'preference-lvl', 'ss-fssi' (sender-side FSSI), and 'fssi' (general FSSI) parameters, each consisting of name:value element lists.
The 'fec-source-flow' SDP attribute (media-level) identifies a source flow within the FEC Framework. Its ABNF syntax is: "a=fec-source-flow:" SP "id=" src-id [";" SP "tag-len=" tlen], where src-id is a 32-bit non-negative integer and tlen is the Explicit Source FEC Payload ID length in octets.
The 'repair-window' SDP attribute (media-level) specifies the size of the FEC repair window in either milliseconds ('ms') or microseconds ('us'). Its ABNF syntax is: "a=repair-window:" window-size unit, where window-size is a 32-bit non-negative integer.
This document registers three new SDP media-level attributes: 'fec-source-flow' (parameters for a FEC source flow), 'fec-repair-flow' (parameters for a FEC repair flow), and 'repair-window' (size of the FEC repair window). All are not subject to charset and reference RFC 6364.
This document updates the SDP Parameters registry ('proto' field) to add two new transport protocol identifiers: 'FEC/UDP' (source flows with Explicit Source FEC Payload ID appended to UDP) and 'UDP/FEC' (FEC repair packet format), both referencing RFC 6364.
Modification of SDP to show incorrect associations or groupings of source and repair flows can cause FEC protection failures or mishandling of media streams. Receivers are RECOMMENDED to perform an integrity check on SDP and only trust SDP from trusted sources; receivers MUST also follow RFC 4566 security considerations.