Skip to main content

Forward Error Correction (FEC) Framework
RFC 6363

Document Type RFC - Proposed Standard (October 2011) IPR
Updated by RFC 8680
Authors Vincent Roca , Mark Watson , Ali C. Begen
Last updated 2015-10-14
RFC stream Internet Engineering Task Force (IETF)
Formats
Additional resources Mailing list discussion
IESG Responsible AD David Harrington
Send notices to (None)
RFC 6363
RFC 6363                      FEC Framework                 October 2011

   at the sending side (i.e., below the FEC Framework), it means that
   FEC decoding MUST take place in the protected environment.  With
   certain use cases, this MAY be complicated or even impossible.  In
   such cases, applying encryption before FEC protection is preferred.

   When the FEC Framework endpoint is a middlebox, the recovered source
   flow, after FEC decoding, SHOULD NOT be sent in plaintext to the
   final destination(s) if the threat model includes the possibility
   that an attacker eavesdrops on the traffic.  In that case, it is
   preferable to apply encryption before FEC protection.

   In some cases, encryption could be applied both before and after the
   FEC protection.  The considerations described above still apply in
   such cases.

9.2.2.  Content Corruption

   Protection against corruptions (e.g., against forged FEC source/
   repair packets) is achieved by means of a content integrity
   verification/source authentication scheme.  This service is usually
   provided at the packet level.  In this case, after removing all the
   forged packets, the source flow might sometimes be recovered.
   Several techniques can provide this content integrity/source
   authentication service:

   o  At the application layer, SRTP [RFC3711] provides several
      solutions to check the integrity and authenticate the source of
      RTP and RTCP messages, among other services.  For instance, when
      associated with the Timed Efficient Stream Loss-Tolerant
      Authentication (TESLA) [RFC4383], SRTP is an attractive solution
      that is robust to losses, provides a true authentication/integrity
      service, and does not create any prohibitive processing load or
      transmission overhead.  Yet, with TESLA, checking a packet
      requires a small delay (a second or more) after its reception.
      Whether or not this extra delay, both in terms of startup delay at
      the client and end-to-end delay, is appropriate depends on the
      target use case.  In some situations, this might degrade the user
      experience.  In other situations, this will not be an issue.
      Other building blocks can be used within SRTP to provide content
      integrity/authentication services.

   o  At the network layer, IPsec/ESP [RFC4303] offers (among other
      services) an integrity verification mechanism that can be used to
      provide authentication/content integrity services.

Watson, et al.               Standards Track                   [Page 32]
RFC 6363                      FEC Framework                 October 2011

   It is up to the developer and the person in charge of deployment, who
   know the security requirements and features of the target application
   area, to define which solution is the most appropriate.  Nonetheless,
   it is RECOMMENDED that at least one of these techniques be used.

   Note that when integrity protection is applied, it is RECOMMENDED
   that it take place on both FEC source and repair packets.  The
   motivation is to keep corrupted packets from being considered during
   decoding, as such packets would often lead to a decoding failure or
   result in a corrupted decoded source flow.

9.3.  Attacks against the FEC Parameters

   Attacks on these FEC parameters can prevent the decoding of the
   associated object.  For instance, modifying the finite field size of
   a Reed-Solomon FEC scheme (when applicable) will lead a receiver to
   consider a different FEC code.

   Therefore, it is RECOMMENDED that security measures be taken to
   guarantee the integrity of the FEC Framework Configuration
   Information.  Since the FEC Framework does not define how the FEC
   Framework Configuration Information is communicated from sender to
   receiver, we cannot provide further recommendations on how to
   guarantee its integrity.  However, any complete CDP specification
   MUST give recommendations on how to achieve it.  When the FEC
   Framework Configuration Information is sent out-of-band, e.g., in a
   session description, it SHOULD be protected, for instance, by
   digitally signing it.

   Attacks are also possible against some FEC parameters included in the
   Explicit Source FEC Payload ID and Repair FEC Payload ID.  For
   instance, modifying the Source Block Number of a FEC source or repair
   packet will lead a receiver to assign this packet to a wrong block.

   Therefore, it is RECOMMENDED that security measures be taken to
   guarantee the integrity of the Explicit Source FEC Payload ID and
   Repair FEC Payload ID.  To that purpose, one of the packet-level
   source authentication/content integrity techniques described in
   Section 9.2.2 can be used.

9.4.  When Several Source Flows Are to Be Protected Together

   When several source flows, with different security requirements, need
   to be FEC protected jointly, within a single FEC Framework instance,
   then each flow MAY be processed appropriately, before the protection.
   For instance, source flows that require access control MAY be
   encrypted before they are FEC protected.

Watson, et al.               Standards Track                   [Page 33]
RFC 6363                      FEC Framework                 October 2011

   There are also situations where the only insecure domain is the one
   over which the FEC Framework operates.  In that case, this situation
   MAY be addressed at the network layer, using IPsec/ESP (see
   Section 9.5), even if only a subset of the source flows has strict
   security requirements.

   Since the use of the FEC Framework should not add any additional
   threat, it is RECOMMENDED that the FEC Framework aggregate flow be in
   line with the maximum security requirements of the individual source
   flows.  For instance, if denial-of-service (DoS) protection is
   required, an integrity protection SHOULD be provided below the FEC
   Framework, using, for instance, IPsec/ESP.

   Generally speaking, whenever feasible, it is RECOMMENDED that FEC
   protecting flows with totally different security requirements be
   avoided.  Otherwise, significant processing overhead would be added
   to protect source flows that do not need it.

9.5.  Baseline Secure FEC Framework Operation

   The FEC Framework has been defined in such a way to be independent
   from the application that generates source flows.  Some applications
   might use purely unidirectional flows, while other applications might
   also use unicast feedback from the receivers.  For instance, this is
   the case when considering RTP/RTCP-based source flows.

   This section describes a baseline mode of secure FEC Framework
   operation based on the application of the IPsec protocol, which is
   one possible solution to solve or mitigate the security threats
   introduced by the use of the FEC Framework.

   Two related documents are of interest.  First, Section 5.1 of
   [RFC5775] defines a baseline secure Asynchronous Layered Coding (ALC)
   operation for sender-to-group transmissions, assuming the presence of
   a single sender and a source-specific multicast (SSM) or SSM-like
   operation.  The proposed solution, based on IPsec/ESP, can be used to
   provide a baseline FEC Framework secure operation, for the downstream
   source flow.

   Second, Section 7.1 of [RFC5740] defines a baseline secure NACK-
   Oriented Reliable Multicast (NORM) operation, for sender-to-group
   transmissions as well as unicast feedback from receivers.  Here, it
   is also assumed there is a single sender.  The proposed solution is
   also based on IPsec/ESP.  However, the difference with respect to
   [RFC5775] relies on the management of IPsec Security Associations
   (SAs) and corresponding Security Policy Database (SPD) entries, since
   NORM requires a second set of SAs and SPD entries to be defined to
   protect unicast feedback from receivers.

Watson, et al.               Standards Track                   [Page 34]
RFC 6363                      FEC Framework                 October 2011

   Note that the IPsec/ESP requirement profiles outlined in [RFC5775]
   and [RFC5740] are commonly available on many potential hosts.  They
   can form the basis of a secure mode of operation.  Configuration and
   operation of IPsec typically require privileged user authorization.
   Automated key management implementations are typically configured
   with the privileges necessary to allow the needed system IPsec
   configuration.

10.  Operations and Management Considerations

   The question of operating and managing the FEC Framework and the
   associated FEC scheme(s) is of high practical importance.  The goals
   of this section are to discuss aspects and recommendations related to
   specific deployments and solutions.

   In particular, this section discusses the questions of
   interoperability across vendors/use cases and whether defining
   mandatory-to-implement (but not mandatory-to-use) solutions is
   beneficial.

10.1.  What Are the Key Aspects to Consider?

   Several aspects need to be considered, since they will directly
   impact the way the FEC Framework and the associated FEC schemes can
   be operated and managed.

   This section lists them as follows:

   1.  A Single Small Generic Component within a Larger (and Often
       Legacy) Solution: The FEC Framework is one component within a
       larger solution that includes one or several upper-layer
       applications (that generate one or several ADU flows) and an
       underlying protocol stack.  A key design principle is that the
       FEC Framework should be able to work without making any
       assumption with respect to either the upper-layer application(s)
       or the underlying protocol stack, even if there are special cases
       where assumptions are made.

   2.  One-to-One with Feedback vs. One-to-Many with Feedback vs. One-
       to-Many without Feedback Scenarios: The FEC Framework can be used
       in use cases that completely differ from one another.  Some use
       cases are one-way (e.g., in broadcast networks), with either a
       one-to-one, one-to-many, or many-to-many transmission model, and
       the receiver(s) cannot send any feedback to the sender(s).  Other
       use cases follow a bidirectional one-to-one, one-to-many, or
       many-to-many scenario, and the receiver(s) can send feedback to
       the sender(s).

Watson, et al.               Standards Track                   [Page 35]
RFC 6363                      FEC Framework                 October 2011

   3.  Non-FEC Framework Capable Receivers: With the one-to-many and
       many-to-many use cases, the receiver population might have
       different capabilities with respect to the FEC Framework itself
       and the supported FEC schemes.  Some receivers might not be
       capable of decoding the repair packets belonging to a particular
       FEC scheme, while some other receivers might not support the FEC
       Framework at all.

   4.  Internet vs. Non-Internet Networks: The FEC Framework can be
       useful in many use cases that use a transport network that is not
       the public Internet (e.g., with IPTV or Mobile TV).  In such
       networks, the operational and management considerations can be
       achieved through an open or proprietary solution, which is
       specified outside of the IETF.

   5.  Congestion Control Considerations: See Section 8 for a discussion
       on whether or not congestion control is needed, and its
       relationships with the FEC Framework.

   6.  Within End-Systems vs. within Middleboxes: The FEC Framework can
       be used within end-systems, very close to the upper-layer
       application, or within dedicated middleboxes (for instance, when
       it is desired to protect one or several flows while they cross a
       lossy channel between two or more remote sites).

   7.  Protecting a Single Flow vs. Several Flows Globally: The FEC
       Framework can be used to protect a single flow or several flows
       globally.

10.2.  Operational and Management Recommendations

   Overall, from the discussion in Section 10.1, it is clear that the
   CDPs and FEC schemes compatible with the FEC Framework differ widely
   in their capabilities, application, and deployment scenarios such
   that a common operation and management method or protocol that works
   well for all of them would be too complex to define.  Thus, as a
   design choice, the FEC Framework does not dictate the use of any
   particular technology or protocol for transporting FEC data, managing
   the hosts, signaling the configuration information, or encoding the
   configuration information.  This provides flexibility and is one of
   the main goals of the FEC Framework.  However, this section gives
   some RECOMMENDED guidelines.

Watson, et al.               Standards Track                   [Page 36]
RFC 6363                      FEC Framework                 October 2011

   1.  A Single Small Generic Component within a Larger (and Often
       Legacy) Solution: It is anticipated that the FEC Framework will
       often be used to protect one or several RTP streams.  Therefore,
       implementations SHOULD make feedback information accessible via
       RTCP to enable users to take advantage of the tools using (or
       used by) RTCP to operate and manage the FEC Framework instance
       along with the associated FEC schemes.

   2.  One-to-One with Feedback vs. One-to-Many with Feedback vs. One-
       to-Many without Feedback Scenarios: With use cases that are
       one-way, the FEC Framework sender does not have any way to gather
       feedback from receivers.  With use cases that are bidirectional,
       the FEC Framework sender can collect detailed feedback (e.g., in
       the case of a one-to-one scenario) or at least occasional
       feedback (e.g., in the case of a multicast, one-to-many
       scenario).  All these applications have naturally different
       operational and management aspects.  They also have different
       requirements or features, if any, for collecting feedback,
       processing it, and acting on it.  The data structures for
       carrying the feedback also vary.

       Implementers SHOULD make feedback available using either an
       in-band or out-of-band asynchronous reporting mechanism.  When an
       out-of-band solution is preferred, a standardized reporting
       mechanism, such as Syslog [RFC5424] or Simple Network Management
       Protocol (SNMP) notifications [RFC3411], is RECOMMENDED.  When
       required, a mapping mechanism between the Syslog and SNMP
       reporting mechanisms could be used, as described in [RFC5675] and
       [RFC5676].

   3.  Non-FEC Framework Capable Receivers: Section 5.3 gives
       recommendations on how to provide backward compatibility in the
       presence of receivers that cannot support the FEC scheme being
       used or the FEC Framework itself: basically, the use of Explicit
       Source FEC Payload ID is banned.  Additionally, a non-FEC
       Framework capable receiver MUST also have a means not to receive
       the repair packets that it will not be able to decode in the
       first place or a means to identify and discard them appropriately
       upon receiving them.  This SHOULD be achieved by sending repair
       packets on a different transport-layer flow.  In the case of RTP
       transport, and if both source and repair packets will be sent on
       the same transport-layer flow, this SHOULD be achieved by using
       an RTP framing for FEC repair packets with a different payload
       type.  It is the responsibility of the sender to select the
       appropriate mechanism when needed.

Watson, et al.               Standards Track                   [Page 37]
RFC 6363                      FEC Framework                 October 2011

   4.  Within End-Systems vs. within Middleboxes: When the FEC Framework
       is used within middleboxes, it is RECOMMENDED that the paths
       between the hosts where the sending applications run and the
       middlebox that performs FEC encoding be as reliable as possible,
       i.e., not be prone to packet loss, packet reordering, or varying
       delays in delivering packets.

       Similarly, when the FEC Framework is used within middleboxes, it
       is RECOMMENDED that the paths be as reliable as possible between
       the middleboxes that perform FEC decoding and the end-systems
       where the receiving applications operate.

   5.  Management of Communication Issues before Reaching the Sending
       FECFRAME Instance: Let us consider situations where the FEC
       Framework is used within middleboxes.  At the sending side, the
       general reliability recommendation for the path between the
       sending applications and the middlebox is important, but it may
       not guarantee that a loss, reordering, or long delivery delay
       cannot happen, for whatever reason.  If such a rare event
       happens, this event SHOULD NOT compromise the operation of the
       FECFRAME instances, at either the sending side or the receiving
       side.  This is particularly important with FEC schemes that do
       not modify the ADU for backward-compatibility purposes (i.e., do
       not use any Explicit Source FEC Payload ID) and rely on, for
       instance, the RTP sequence number field to identify FEC source
       packets within their source block.  In this case, packet loss or
       packet reordering leads to a gap in the RTP sequence number space
       seen by the FECFRAME instance.  Similarly, varying delay in
       delivering packets over this path can lead to significant timing
       issues.  With FEC schemes that indicate in the Repair FEC Payload
       ID, for each source block, the base RTP sequence number and
       number of consecutive RTP packets that belong to this source
       block, a missing ADU or an ADU delivered out of order could cause
       the FECFRAME sender to switch to a new source block.  However,
       some FEC schemes and/or receivers may not necessarily handle such
       varying source block sizes.  In this case, one could consider
       duplicating the last ADU received before the loss, or inserting
       zeroed ADU(s), depending on the nature of the ADU flow.
       Implementers SHOULD consider the consequences of such alternative
       approaches, based on their use cases.

   6.  Protecting a Single Flow vs. Several Flows Globally: In the
       general case, the various ADU flows that are globally protected
       can have different features, and in particular different real-
       time requirements (in the case of real-time flows).  The process
       of globally protecting these flows SHOULD take into account the
       requirements of each individual flow.  In particular, it would be
       counterproductive to add repair traffic to a real-time flow for

Watson, et al.               Standards Track                   [Page 38]
RFC 6363                      FEC Framework                 October 2011

       which the FEC decoding delay at a receiver makes decoded ADUs for
       this flow useless because they do not satisfy the associated
       real-time constraints.  From a practical point of view, this
       means that the source block creation process at the sending FEC
       Framework instance SHOULD consider the most stringent real-time
       requirements of the ADU flows being globally protected.

   7.  ADU Flow Bundle Definition and Flow Delivery: By design, a repair
       flow might enable a receiver to recover the ADU flow(s) that it
       protects even if none of the associated FEC source packets are
       received.  Therefore, when defining the bundle of ADU flows that
       are globally protected and when defining which receiver receives
       which flow, the sender SHOULD make sure that the ADU flow(s) and
       repair flow(s) of that bundle will only be received by receivers
       that are authorized to receive all the ADU flows of that bundle.
       See Section 9.4 for additional recommendations for situations
       where strict access control for ADU flows is needed.

       Additionally, when multiple ADU flows are globally protected, a
       receiver that wants to benefit from FECFRAME loss protection
       SHOULD receive all the ADU flows of the bundle.  Otherwise, the
       missing FEC source packets would be considered lost, which might
       significantly reduce the efficiency of the FEC scheme.

11.  IANA Considerations

   FEC schemes for use with this framework are identified in protocols
   using FEC Encoding IDs.  Values of FEC Encoding IDs are subject to
   IANA registration.  For this purpose, this document creates a new
   registry called the "FEC Framework (FECFRAME) FEC Encoding IDs".

   The values that can be assigned within the "FEC Framework (FECFRAME)
   FEC Encoding IDs" registry are numeric indexes in the range (0, 255).
   Values of 0 and 255 are reserved.  Assignment requests are granted on
   an IETF Review basis as defined in [RFC5226].  Section 5.6 defines
   explicit requirements that documents defining new FEC Encoding IDs
   should meet.

12.  Acknowledgments

   This document is based in part on [FEC-SF], and so thanks are due to
   the additional authors of that document: Mike Luby, Magnus
   Westerlund, and Stephan Wenger.  That document was in turn based on
   the FEC Streaming Protocol defined by 3GPP in [MBMSTS], and thus,
   thanks are also due to the participants in 3GPP SA Working Group 4.
   Further thanks are due to the members of the FECFRAME Working Group
   for their comments and reviews.

Watson, et al.               Standards Track                   [Page 39]
RFC 6363                      FEC Framework                 October 2011

13.  References

13.1.  Normative References

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

   [RFC3411]  Harrington, D., Presuhn, R., and B. Wijnen, "An
              Architecture for Describing Simple Network Management
              Protocol (SNMP) Management Frameworks", STD 62, RFC 3411,
              December 2002.

   [RFC5052]  Watson, M., Luby, M., and L. Vicisano, "Forward Error
              Correction (FEC) Building Block", RFC 5052, August 2007.

   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
              IANA Considerations Section in RFCs", BCP 26, RFC 5226,
              May 2008.

   [RFC5234]  Crocker, D., Ed., and P. Overell, "Augmented BNF for
              Syntax Specifications: ABNF", STD 68, RFC 5234,
              January 2008.

   [RFC5424]  Gerhards, R., "The Syslog Protocol", RFC 5424, March 2009.

13.2.  Informative References

   [FEC-SF]   Watson, M., Luby, M., Westerlund, M., and S. Wenger,
              "Forward Error Correction (FEC) Streaming Framework", Work
              in Progress, July 2005.

   [MBMSTS]   3GPP, "Multimedia Broadcast/Multicast Service (MBMS);
              Protocols and codecs", 3GPP TS 26.346, March 2009,
              <http://ftp.3gpp.org/specs/html-info/26346.htm>.

   [RFC3095]  Bormann, C., Burmeister, C., Degermark, M., Fukushima, H.,
              Hannu, H., Jonsson, L-E., Hakenberg, R., Koren, T., Le,
              K., Liu, Z., Martensson, A., Miyazaki, A., Svanbro, K.,
              Wiebke, T., Yoshimura, T., and H. Zheng, "RObust Header
              Compression (ROHC): Framework and four profiles: RTP, UDP,
              ESP, and uncompressed", RFC 3095, July 2001.

   [RFC3550]  Schulzrinne, H., Casner, S., Frederick, R., and V.
              Jacobson, "RTP: A Transport Protocol for Real-Time
              Applications", STD 64, RFC 3550, July 2003.

Watson, et al.               Standards Track                   [Page 40]
RFC 6363                      FEC Framework                 October 2011

   [RFC3711]  Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K.
              Norrman, "The Secure Real-time Transport Protocol (SRTP)",
              RFC 3711, March 2004.

   [RFC4303]  Kent, S., "IP Encapsulating Security Payload (ESP)",
              RFC 4303, December 2005.

   [RFC4383]  Baugher, M. and E. Carrara, "The Use of Timed Efficient
              Stream Loss-Tolerant Authentication (TESLA) in the Secure
              Real-time Transport Protocol (SRTP)", RFC 4383,
              February 2006.

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

   [RFC4588]  Rey, J., Leon, D., Miyazaki, A., Varsa, V., and R.
              Hakenberg, "RTP Retransmission Payload Format", RFC 4588,
              July 2006.

   [RFC5675]  Marinov, V. and J. Schoenwaelder, "Mapping Simple Network
              Management Protocol (SNMP) Notifications to SYSLOG
              Messages", RFC 5675, October 2009.

   [RFC5676]  Schoenwaelder, J., Clemm, A., and A. Karmakar,
              "Definitions of Managed Objects for Mapping SYSLOG
              Messages to Simple Network Management Protocol (SNMP)
              Notifications", RFC 5676, October 2009.

   [RFC5725]  Begen, A., Hsu, D., and M. Lague, "Post-Repair Loss RLE
              Report Block Type for RTP Control Protocol (RTCP) Extended
              Reports (XRs)", RFC 5725, February 2010.

   [RFC5740]  Adamson, B., Bormann, C., Handley, M., and J. Macker,
              "NACK-Oriented Reliable Multicast (NORM) Transport
              Protocol", RFC 5740, November 2009.

   [RFC5775]  Luby, M., Watson, M., and L. Vicisano, "Asynchronous
              Layered Coding (ALC) Protocol Instantiation", RFC 5775,
              April 2010.

   [RFC6364]  Begen, A., "Session Description Protocol Elements for FEC
              Framework", RFC 6364, October 2011.

Watson, et al.               Standards Track                   [Page 41]
RFC 6363                      FEC Framework                 October 2011

Authors' Addresses

   Mark Watson
   Netflix, Inc.
   100 Winchester Circle
   Los Gatos, CA  95032
   USA

   EMail: watsonm@netflix.com

   Ali Begen
   Cisco
   181 Bay Street
   Toronto, ON  M5J 2T3
   Canada

   EMail: abegen@cisco.com

   Vincent Roca
   INRIA
   655, av. de l'Europe
   Inovallee; Montbonnot
   ST ISMIER cedex  38334
   France

   EMail: vincent.roca@inria.fr
   URI:   http://planete.inrialpes.fr/people/roca/

Watson, et al.               Standards Track                   [Page 42]