RFC 4756

Forward Error Correction Grouping Semantics in Session Description Protocol

๐Ÿ“… published November 2006, from ietf

RFC 4756: Forward Error Correction Grouping Semantics in Session Description Protocol ๐ŸŽ€โœจ

Okay bestie, let's get into it! ๐Ÿ’– This is RFC 4756, a Standards Track document from the IETF Trust era, dated November 2006. It was written by A. Li (Adam H. Li, HyerVision), and it doesn't obsolete or update any other RFCs. Iconic, right? ๐Ÿฆ‹

Quick vibe check on the title block: it's giving "official standards doc with a cute new feature," and the whole point is to tell SDP (Session Description Protocol) how FEC streams and the payload streams they protect are related. ๐Ÿงš


Status of This Memo ๐Ÿ“‹

This document is an Internet standards track protocol for the Internet community, and it's asking everyone to share discussion and suggestions for improvements. ๐Ÿ’… For the current standardization state and status, check the current edition of the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited! ๐ŸŒธ

Copyright (C) The IETF Trust (2006). โœจ

Abstract ๐ŸŒˆ

So this doc defines the semantics that let you group Forward Error Correction (FEC) streams together with the protected payload streams in SDP. ๐Ÿ’œ You use these semantics together with "Grouping of Media Lines in the Session Description Protocol" (RFC 3388) so that you can group together "m" lines in the same session. Main character energy! ๐Ÿ‘‘

Table of Contents ๐Ÿ“š

1. Introduction ....................................................2
2. Terminology .....................................................2
3. Forward Error Correction (FEC) ..................................2
4. FEC Grouping ....................................................3
   4.1. FEC Group ..................................................3
   4.2. Offer / Answer Consideration ...............................3
   4.3. Example of FEC Grouping ....................................3
5. Security Considerations .........................................4
6. IANA Considerations .............................................4
7. Acknowledgments .................................................5
8. References ......................................................5
   8.1. Normative References .......................................5
   8.2. Informative References .....................................5

1. Introduction ๐Ÿฆ‹

Okay so SDP [3] media lines can be associated with each other in all kinds of ways, but SDP on its own doesn't give you a way to say how they relate. ๐Ÿ™ˆ That's what the extension in RFC 3388 [2] is for. RFC 3388 defines two types of semantics: Lip Synchronization and Flow Identification. ๐ŸŽ€

FEC is a super common technique for robust communication in error-prone environments, so this document adds semantics that let you group FEC streams with the protected payload streams in SDP, building on RFC 3388. ๐Ÿ”ฅ

2. Terminology ๐Ÿ“–

Here's the key word rule, fr fr: 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 [1]. ๐Ÿ’…

3. Forward Error Correction (FEC) ๐Ÿ’–

FEC is a common technique for robust communication in error-prone environments, and it's giving "send a little extra so you can fix the mess." โœจ Communication uses a bandwidth that is more than payload, so it can send redundantly coded payload information. ๐Ÿงš Receivers can readily recover the original payload even when some of the communication gets lost in transmission. ๐Ÿซถ

Compared to other error correction techniques (like retransmission), FEC can achieve much lower transmission delay, and it doesn't have the problem of implosion from retransmission requests in various multicast scenarios. ๐Ÿ˜ญ Honestly iconic.

The FEC data can be sent in two different ways: (1) multiplexed together with the original payload stream, or (2) as a separate stream. ๐ŸŒˆ So you need mechanisms to indicate the association relationship between the FEC data and the payload data they protect. ๐Ÿ“

When FEC data are multiplexed with the original payload stream, the association relationship may, for example, be indicated as specified in "An RTP Payload for Redundant Audio Data" (RFC 2198) [4]. The generic RTP payload format for FEC [5] uses that method. ๐Ÿฆ‹

When FEC data are sent as a separate stream from the payload data, the association relationship can be indicated in various ways. This document specifies a mechanism for indicating those relationships in the FEC media line grouping. ๐Ÿ’œ

4. FEC Grouping ๐ŸŽ€

4.1. FEC Group ๐ŸŒธ

Each "a=group" line is used to indicate an association relationship between the FEC streams and the payload streams. ๐Ÿ’– The streams included in one "a=group" line are called a "FEC Group". โœจ

Each FEC group MAY have one or more than one FEC stream, and one or more than one payload stream. For example, one payload stream can be protected by more than one FEC stream, or multiple payload streams can share one FEC stream. ๐Ÿซถ

Grouping streams in a FEC group only indicates the association relationship between streams. The detailed FEC protection scheme and parameters are conveyed through the mechanism of the particular FEC algorithm used. ๐Ÿงš For example, FEC grouping is used for the generic RTP payload for FEC [5] to indicate the association relationship between the FEC stream and the payload stream. The detailed protection level and length information for the Unequal Loss Protection (ULP) algorithm is communicated in band within the FEC stream. ๐Ÿ”ฅ

4.2. Offer / Answer Consideration ๐Ÿ’…

Backward compatibility in offer/answer is generally handled as specified in RFC 3388 [2]. ๐ŸŒˆ

Depending on the implementation, a node that doesn't understand FEC grouping (either it doesn't understand line grouping at all, or it just doesn't understand the FEC semantics) SHOULD respond to an offer containing FEC grouping either (1) with an answer that ignores the grouping attribute, or (2) with a refusal to the request (e.g., 488 Not acceptable here or 606 Not acceptable in SIP). ๐Ÿ™ˆ

In the first case, the original sender of the offer MUST establish the connection without FEC. In the second case, if the sender of the offer still wants to establish the session, it SHOULD retry the request with an offer without FEC. ๐Ÿ˜ญ

4.3. Example of FEC Grouping ๐Ÿ“

This example shows a session description of a multicast conference. ๐ŸŽ€ The first media stream (mid:1) contains the audio stream. The second media stream (mid:2) contains the Generic FEC [5] protection for the audio stream. These two streams form an FEC group, and the relationship between them is indicated by the a=group:FEC 1 2 line. ๐Ÿ’–

The FEC stream is sent to the same multicast group and has the same Time to Live (TTL) as the audio, but on a port number two higher. โœจ Likewise, the video stream (mid:3) and its Generic FEC protection stream (mid:4) form another FEC group, indicated by the a=group:FEC 3 4 line. ๐Ÿฆ‹ That FEC stream is sent to a different multicast address, but it has the same port number (30004) as the payload video stream. ๐Ÿงš

    v=0
    o=adam 289083124 289083124 IN IP4 host.example.com
    s=ULP FEC Seminar
    t=0 0
    c=IN IP4 224.2.17.12/127
    a=group:FEC 1 2
    a=group:FEC 3 4
    m=audio 30000 RTP/AVP 0
    a=mid:1
    m=audio 30002 RTP/AVP 100
    a=rtpmap:100 ulpfec/8000
    a=mid:2
    m=video 30004 RTP/AVP 31
    a=mid:3
    m=video 30004 RTP/AVP 101
    c=IN IP4 224.2.17.13/127
    a=rtpmap:101 ulpfec/8000
    a=mid:4

5. Security Considerations ๐Ÿ”’

Okay, this part is serious, bestie. ๐Ÿ˜ญ There is a weak threat for the receiver: the FEC grouping can be modified to indicate FEC relationships that don't exist. ๐Ÿ’€ Such attacks may result in failure of FEC to protect, and/or mishandling of other media payload streams. ๐Ÿ™ˆ It is recommended that the receiver SHOULD do an integrity check on SDP and follow the security considerations of SDP [3] so it only trusts SDP from trusted sources. ๐Ÿซถ Protect your SDP, periodt! ๐Ÿ›ก๏ธ

6. IANA Considerations ๐Ÿ“

This document defines the semantics to be used with grouping of media lines in SDP as defined in RFC 3388. โœจ The semantics defined in this document are to be registered by IANA when they're published in standards track RFCs. ๐ŸŒธ

The following semantics have been registered by IANA in the Semantics for the "group" SDP Attribute under SDP Parameters. ๐Ÿฆ‹

Semantics                  Token   Reference
------------------------   -----   ----------
Forward Error Correction   FEC     RFC 4756

7. Acknowledgments ๐Ÿ’œ

The author would like to thank Magnus Westerlund, Colin Perkins, Joerg Ott, and Cullen Jennings for their feedback on this document. ๐Ÿซถ๐Ÿ‘‘

8. References ๐Ÿ“š

8.1. Normative References ๐Ÿ’–

[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[2] Camarillo, G., Eriksson, G., Holler, J., and H. Schulzrinne, "Grouping of Media Lines in the Session Description Protocol (SDP)", RFC 3388, December 2002.

[3] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session Description Protocol", RFC 4566, July 2006.

8.2. Informative References ๐ŸŒˆ

[4] Perkins, C., Kouvelas, I., Hodson, O., Hardman, V., Handley, M., Bolot, J., Vega-Garcia, A., and S. Fosse-Parisis, "RTP Payload for Redundant Audio Data", RFC 2198, September 1997.

[5] Li, A., "An RFC Payload Format for Generic FEC", Work in Progress.

Author's Address ๐Ÿ“ฎ

Adam H. Li HyerVision 10194 Wateridge Circle #152 San Diego, CA 92121 U.S.A.

Tel: +1 858 622 9038 EMail: adamli@hyervision.com

Copyright (C) The IETF Trust (2006). ๐ŸŒธ

This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights. ๐Ÿ’…

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST, AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. ๐Ÿ˜ญ

Intellectual Property ๐Ÿ”

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document, or the extent to which any license under such rights might or might not be available. Nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79. ๐Ÿงš

Copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr. ๐ŸŒˆ

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org. ๐Ÿ’œ

Acknowledgement ๐ŸŽ€

Funding for the RFC Editor function is currently provided by the Internet Society. ๐Ÿ’–

๐Ÿ“ฆ where this page comes from