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/ |