draft-ietf-tsvwg-fecframe-ext-02.txt   draft-ietf-tsvwg-fecframe-ext-03.txt 
TSVWG V. Roca TSVWG V. Roca
Internet-Draft INRIA Internet-Draft INRIA
Intended status: Standards Track A. Begen Intended status: Standards Track A. Begen
Expires: November 2, 2018 Networked Media Expires: January 26, 2019 Networked Media
May 1, 2018 July 25, 2018
Forward Error Correction (FEC) Framework Extension to Sliding Window Forward Error Correction (FEC) Framework Extension to Sliding Window
Codes Codes
draft-ietf-tsvwg-fecframe-ext-02 draft-ietf-tsvwg-fecframe-ext-03
Abstract Abstract
RFC 6363 describes a framework for using Forward Error Correction RFC 6363 describes a framework for using Forward Error Correction
(FEC) codes with applications in public and private IP networks to (FEC) codes to provide protection against packet loss. The framework
provide protection against packet loss. The framework supports supports applying FEC to arbitrary packet flows over unreliable
applying FEC to arbitrary packet flows over unreliable transport and transport and is primarily intended for real-time, or streaming,
is primarily intended for real-time, or streaming, media. However media. However FECFRAME as per RFC 6363 is restricted to block FEC
FECFRAME as per RFC 6363 is restricted to block FEC codes. The codes. The present document extends FECFRAME to support FEC Codes
present document extends FECFRAME to support FEC Codes based on a based on a sliding encoding window, in addition to Block FEC Codes,
sliding encoding window, in addition to Block FEC Codes, in a in a backward compatible way. During multicast/broadcast real-time
backward compatible way. During multicast/broadcast real-time
content delivery, the use of sliding window codes significantly content delivery, the use of sliding window codes significantly
improves robustness in harsh environments, with less repair traffic improves robustness in harsh environments, with less repair traffic
and lower FEC-related added latency. and lower FEC-related added latency.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on November 2, 2018. This Internet-Draft will expire on January 26, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 4, line 15 skipping to change at page 4, line 15
transport layer on-the-fly, at any time, and can be regularly transport layer on-the-fly, at any time, and can be regularly
received by receivers to quickly recover packet losses. Using received by receivers to quickly recover packet losses. Using
sliding window FEC codes is therefore highly beneficial to real-time sliding window FEC codes is therefore highly beneficial to real-time
flows, one of the primary targets of FECFRAME. [RLC-ID] provides an flows, one of the primary targets of FECFRAME. [RLC-ID] provides an
example of such FEC Scheme for FECFRAME, built upon the simple example of such FEC Scheme for FECFRAME, built upon the simple
sliding window Random Linear Codes (RLC). sliding window Random Linear Codes (RLC).
This document is fully backward compatible with [RFC6363] that it This document is fully backward compatible with [RFC6363] that it
extends but does not replace. Indeed: extends but does not replace. Indeed:
o this extension does not prevent nor compromize in any way the o this extension does not prevent nor compromise in any way the
support of block FEC codes. Both types of codes can nicely co- support of block FEC codes. Both types of codes can nicely co-
exist, just like different block FEC schemes can co-exist; exist, just like different block FEC schemes can co-exist;
o any receiver, for instance a legacy receiver that only supports o any receiver, for instance a legacy receiver that only supports
block FEC schemes, can easily identify the FEC Scheme used in a block FEC schemes, can easily identify the FEC Scheme used in a
FECFRAME session thanks to the associated SDP file and its FEC FECFRAME session thanks to the associated SDP file and its FEC
Encoding ID information (i.e., the "encoding-id=" parameter of a Encoding ID information (i.e., the "encoding-id=" parameter of a
"fec-repair-flow" attribute, [RFC6364]). This mechanism is not "fec-repair-flow" attribute, [RFC6364]). This mechanism is not
specific to this extension but is the basic approach for a specific to this extension but is the basic approach for a
FECFRAME receiver to determine whether or not it supports the FEC FECFRAME receiver to determine whether or not it supports the FEC
skipping to change at page 5, line 19 skipping to change at page 5, line 19
Content Delivery Protocol (CDP): A complete application protocol Content Delivery Protocol (CDP): A complete application protocol
specification that, through the use of the framework defined in specification that, through the use of the framework defined in
this document, is able to make use of FEC schemes to provide FEC this document, is able to make use of FEC schemes to provide FEC
capabilities. capabilities.
FEC Code: An algorithm for encoding data such that the encoded data FEC Code: An algorithm for encoding data such that the encoded data
flow is resilient to data loss. Note that, in general, FEC codes flow is resilient to data loss. Note that, in general, FEC codes
may also be used to make a data flow resilient to corruption, but may also be used to make a data flow resilient to corruption, but
that is not considered in this document. that is not considered in this document.
Block FEC Code: (ADDED) An FEC Code that operates in a block manner, Block FEC Code: (ADDED) An FEC Code that operates on blocks, i.e.,
i.e., for which the input flow MUST be segmented into a sequence for which the input flow MUST be segmented into a sequence of
of blocks, FEC encoding and decoding being performed blocks, FEC encoding and decoding being performed independently
independently on a per-block basis. on a per-block basis.
Sliding Window (or Convolutional) FEC Code: (ADDED) An FEC Code that Sliding Window FEC Code: (ADDED) An FEC Code that can generate
can generate repair symbols on-the-fly, at any time, from the set repair symbols on-the-fly, at any time, from the set of source
of source symbols present in the sliding encoding window at that symbols present in the sliding encoding window at that time.
time. These codes are also known as convolutional codes.
FEC Framework: A protocol framework for the definition of Content FEC Framework: A protocol framework for the definition of Content
Delivery Protocols using FEC, such as the framework defined in Delivery Protocols using FEC, such as the framework defined in
this document. this document.
FEC Framework Configuration Information: Information that controls FEC Framework Configuration Information: Information that controls
the operation of the FEC Framework. the operation of the FEC Framework.
FEC Payload ID: Information that identifies the contents of a packet FEC Payload ID: Information that identifies the contents of a packet
with respect to the FEC Scheme. with respect to the FEC Scheme.
skipping to change at page 11, line 37 skipping to change at page 11, line 37
+---------------------+ +---------------------+
| |
| (6) FEC Source Packet | (6) FEC Source Packet
| (10) FEC Repair Packets | (10) FEC Repair Packets
v v
+----------------------+ +----------------------+
| Transport Layer | | Transport Layer |
| (e.g., UDP) | | (e.g., UDP) |
+----------------------+ +----------------------+
Figure 2: Sender Operation with Convolutional FEC Codes Figure 2: Sender Operation with Sliding Window FEC Codes
+----------------------+ +----------------------+
| Application | | Application |
+----------------------+ +----------------------+
| |
| (1) New Application Data Unit (ADU) | (1) New Application Data Unit (ADU)
v v
+---------------------+ +----------------+ +---------------------+ +----------------+
| FEC Framework | | FEC Scheme | | FEC Framework | | FEC Scheme |
| |-------------------------->| | | |-------------------------->| |
skipping to change at page 15, line 16 skipping to change at page 15, line 16
The FEC Framework Configuration Information considerations of The FEC Framework Configuration Information considerations of
[RFC6363], Section 5.5, equally applies to this FECFRAME extension [RFC6363], Section 5.5, equally applies to this FECFRAME extension
and is not repeated here. and is not repeated here.
5.3. FEC Scheme Requirements 5.3. FEC Scheme Requirements
The FEC Scheme requirements of [RFC6363], Section 5.6, mostly apply The FEC Scheme requirements of [RFC6363], Section 5.6, mostly apply
to this FECFRAME extension and are not repeated here. An exception to this FECFRAME extension and are not repeated here. An exception
though is the "full specification of the FEC code", item (4), that is though is the "full specification of the FEC code", item (4), that is
specific to block FEC codes. The following item (4) applies instead: specific to block FEC codes. The following item (4) applies in case
of Sliding Window FEC schemes:
4. A full specification of the Sliding Window FEC code 4. A full specification of the Sliding Window FEC code
This specification MUST precisely define the valid FEC-Scheme- This specification MUST precisely define the valid FEC-Scheme-
Specific Information values, the valid FEC Payload ID values, and Specific Information values, the valid FEC Payload ID values, and
the valid packet payload sizes (where packet payload refers to the valid packet payload sizes (where packet payload refers to
the space within a packet dedicated to carrying encoding the space within a packet dedicated to carrying encoding
symbols). symbols).
Furthermore, given valid values of the FEC-Scheme-Specific Furthermore, given valid values of the FEC-Scheme-Specific
Information, a valid Repair FEC Payload ID value, a valid packet Information, a valid Repair FEC Payload ID value, a valid packet
payload size, and a valid encoding window (i.e., a set of source payload size, and a valid encoding window (i.e., a set of source
symbols), the specification MUST uniquely define the values of symbols), the specification MUST uniquely define the values of
the encoding symbols to be included in the repair packet payload the encoding symbol (or symbols) to be included in the repair
with the given Repair FEC Payload ID value. packet payload with the given Repair FEC Payload ID value.
Additionally, the FEC Scheme associated to a Sliding Window FEC Code: Additionally, the FEC Scheme associated to a Sliding Window FEC Code:
o MUST define the relationships between ADUs and the associated o MUST define the relationships between ADUs and the associated
source symbols (mapping); source symbols (mapping);
o MUST define the management of the encoding window that slides over o MUST define the management of the encoding window that slides over
the set of ADUs. Appendix A provides a non normative example; the set of ADUs. Appendix A provides a non normative example;
o MUST define the management of the decoding window, consisting of a o MUST define the management of the decoding window, consisting of a
skipping to change at page 17, line 20 skipping to change at page 17, line 20
12. IANA Considerations 12. IANA Considerations
A FEC Scheme for use with this FEC Framework is identified via its A FEC Scheme for use with this FEC Framework is identified via its
FEC Encoding ID. It is subject to IANA registration in the "FEC FEC Encoding ID. It is subject to IANA registration in the "FEC
Framework (FECFRAME) FEC Encoding IDs" registry. All the rules of Framework (FECFRAME) FEC Encoding IDs" registry. All the rules of
[RFC6363], Section 11, apply and are not repeated here. [RFC6363], Section 11, apply and are not repeated here.
13. Acknowledgments 13. Acknowledgments
TBD The authors would like to thank David Black, Gorry Fairhurst, and
Emmanuel Lochin for their valuable feedbacks on this document. This
document being an extension to [RFC6363], the authors would also like
to thank Mark Watson as the main author this RFC.
14. References 14. References
14.1. Normative References 14.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
skipping to change at page 18, line 22 skipping to change at page 18, line 27
(FEC) Scheme for FECFRAME", RFC 6816, (FEC) Scheme for FECFRAME", RFC 6816,
DOI 10.17487/RFC6816, December 2012, DOI 10.17487/RFC6816, December 2012,
<https://www.rfc-editor.org/info/rfc6816>. <https://www.rfc-editor.org/info/rfc6816>.
[RFC6865] Roca, V., Cunche, M., Lacan, J., Bouabdallah, A., and K. [RFC6865] Roca, V., Cunche, M., Lacan, J., Bouabdallah, A., and K.
Matsuzono, "Simple Reed-Solomon Forward Error Correction Matsuzono, "Simple Reed-Solomon Forward Error Correction
(FEC) Scheme for FECFRAME", RFC 6865, (FEC) Scheme for FECFRAME", RFC 6865,
DOI 10.17487/RFC6865, February 2013, DOI 10.17487/RFC6865, February 2013,
<https://www.rfc-editor.org/info/rfc6865>. <https://www.rfc-editor.org/info/rfc6865>.
[RLC-ID] Roca, V., "Sliding Window Random Linear Code (RLC) Forward [RLC-ID] Roca, V. and B. Teibi, "Sliding Window Random Linear Code
Erasure Correction (FEC) Scheme for FECFRAME", Work (RLC) Forward Erasure Correction (FEC) Scheme for
in Progress, Transport Area Working Group (TSVWG) draft- FECFRAME", Work in Progress, Transport Area Working Group
ietf-tsvwg-rlc-fec-scheme (Work in Progress), March 2018, (TSVWG) draft-ietf-tsvwg-rlc-fec-scheme (Work in
<https://tools.ietf.org/html/ Progress), July 2018, <https://tools.ietf.org/html/
draft-ietf-tsvwg-rlc-fec-scheme>. draft-ietf-tsvwg-rlc-fec-scheme>.
Appendix A. About Sliding Encoding Window Management (non Normative) Appendix A. About Sliding Encoding Window Management (non Normative)
The FEC Framework does not specify the management of the sliding The FEC Framework does not specify the management of the sliding
encoding window which is the responsibility of the FEC Scheme. This encoding window which is the responsibility of the FEC Scheme. This
annex only provides a few non normative hints. annex only provides a few non normative hints.
Source symbols are added to the sliding encoding window each time a Source symbols are added to the sliding encoding window each time a
new ADU is available at the sender, after the ADU to source symbol new ADU is available at the sender, after the ADU to source symbol
mapping specific to the FEC Scheme. mapping specific to the FEC Scheme.
Source symbols are removed from the sliding encoding window, for Source symbols are removed from the sliding encoding window, for
instance: instance:
o after a certain delay, when an "old" ADU of a real-time flow times o after a certain delay, when an "old" ADU of a real-time flow times
out. The source symbol retention delay in the sliding encoding out. The source symbol retention delay in the sliding encoding
window should therefore be initialized according to the real-time window should therefore be initialized according to the real-time
features of incoming flow(s); features of incoming flow(s) when applicable;
o once the sliding encoding window has reached its maximum size o once the sliding encoding window has reached its maximum size
(there is usually an upper limit to the sliding encoding window (there is usually an upper limit to the sliding encoding window
size). In that case the oldest symbol is removed each time a new size). In that case the oldest symbol is removed each time a new
source symbol is added. source symbol is added.
Several considerations can impact the management of this sliding Several considerations can impact the management of this sliding
encoding: encoding window:
o at the source flows level: real-time constraints can limit the o at the source flows level: real-time constraints can limit the
total time source symbols can remain in the encoding window; total time source symbols can remain in the encoding window;
o at the FEC code level: theoretical or practical limitations (e.g., o at the FEC code level: theoretical or practical limitations (e.g.,
because of computational complexity) can limit the number of because of computational complexity) can limit the number of
source symbols in the encoding window; source symbols in the encoding window;
o at the FEC Scheme level: signaling and window management are o at the FEC Scheme level: signaling and window management are
intrinsically related. For instance, an encoding window composed intrinsically related. For instance, an encoding window composed
skipping to change at page 20, line 9 skipping to change at page 20, line 9
maximum encoding window size. On the opposite, an encoding window maximum encoding window size. On the opposite, an encoding window
always composed of a sequential set of source symbols simplifies always composed of a sequential set of source symbols simplifies
signaling: providing the identity of the first source symbol plus signaling: providing the identity of the first source symbol plus
their number is sufficient, which creates a fixed and relatively their number is sufficient, which creates a fixed and relatively
small transmission overhead. small transmission overhead.
Authors' Addresses Authors' Addresses
Vincent Roca Vincent Roca
INRIA INRIA
Grenoble Univ. Grenoble Alpes
France France
EMail: vincent.roca@inria.fr EMail: vincent.roca@inria.fr
Ali Begen Ali Begen
Networked Media Networked Media
Konya Konya
Turkey Turkey
EMail: ali.begen@networked.media EMail: ali.begen@networked.media
 End of changes. 15 change blocks. 
34 lines changed or deleted 37 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/