| rfc8680xml2.original.xml | rfc8680.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='utf-8'?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" conse | |||
| <!ENTITY rfc2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | nsus="true" docName="draft-ietf-tsvwg-fecframe-ext-08" indexInclude="true" ipr=" | |||
| .2119.xml"> | trust200902" number="8680" prepTime="2020-01-08T15:18:32" scripts="Common,Latin" | |||
| <!-- <!ENTITY rfc3095 SYSTEM "http://xml.resource.org/public/rfc/bibxml/referenc | sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="t | |||
| e.RFC.3095.xml"> --> | rue" updates="6363" xml:lang="en"> | |||
| <!ENTITY rfc5052 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | <link href="https://datatracker.ietf.org/doc/draft-ietf-tsvwg-fecframe-ext-08" | |||
| .5052.xml"> | rel="prev"/> | |||
| <!-- <!ENTITY rfc3550 SYSTEM "http://xml.resource.org/public/rfc/bibxml/referenc | <link href="https://dx.doi.org/10.17487/rfc8680" rel="alternate"/> | |||
| e.RFC.3550.xml"> --> | <link href="urn:issn:2070-1721" rel="alternate"/> | |||
| <!-- <!ENTITY rfc5725 SYSTEM "http://xml.resource.org/public/rfc/bibxml/referenc | ||||
| e.RFC.5725.xml"> --> | ||||
| <!-- <!ENTITY rfc4588 SYSTEM "http://xml.resource.org/public/rfc/bibxml/referenc | ||||
| e.RFC.4588.xml"> --> | ||||
| <!ENTITY rfc2736 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .2736.xml"> | ||||
| <!-- <!ENTITY rfc4566 SYSTEM "http://xml.resource.org/public/rfc/bibxml/referenc | ||||
| e.RFC.4566.xml"> --> | ||||
| <!-- <!ENTITY rfc5226 SYSTEM "http://xml.resource.org/public/rfc/bibxml/referenc | ||||
| e.RFC.5226.xml"> --> | ||||
| <!-- <!ENTITY rfc5234 SYSTEM "http://xml.resource.org/public/rfc/bibxml/referenc | ||||
| e.RFC.5234.xml"> --> | ||||
| <!-- <!ENTITY rfc3711 SYSTEM "http://xml.resource.org/public/rfc/bibxml/referenc | ||||
| e.RFC.3711.xml"> --> | ||||
| <!-- <!ENTITY rfc5740 SYSTEM "http://xml.resource.org/public/rfc/bibxml/referenc | ||||
| e.RFC.5740.xml"> --> | ||||
| <!-- <!ENTITY rfc4303 SYSTEM "http://xml.resource.org/public/rfc/bibxml/referenc | ||||
| e.RFC.4303.xml"> --> | ||||
| <!-- <!ENTITY rfc4383 SYSTEM "http://xml.resource.org/public/rfc/bibxml/referenc | ||||
| e.RFC.4383.xml"> --> | ||||
| <!-- <!ENTITY rfc5775 SYSTEM "http://xml.resource.org/public/rfc/bibxml/referenc | ||||
| e.RFC.5775.xml"> --> | ||||
| <!-- <!ENTITY rfc5424 SYSTEM "http://xml.resource.org/public/rfc/bibxml/referenc | ||||
| e.RFC.5424.xml"> --> | ||||
| <!-- <!ENTITY rfc3411 SYSTEM "http://xml.resource.org/public/rfc/bibxml/referenc | ||||
| e.RFC.3411.xml"> --> | ||||
| <!-- <!ENTITY rfc5675 SYSTEM "http://xml.resource.org/public/rfc/bibxml/referenc | ||||
| e.RFC.5675.xml"> --> | ||||
| <!-- <!ENTITY rfc5676 SYSTEM "http://xml.resource.org/public/rfc/bibxml/referenc | ||||
| e.RFC.5676.xml"> --> | ||||
| <!ENTITY rfc6363 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .6363.xml"> | ||||
| <!ENTITY rfc6364 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .6364.xml"> | ||||
| <!ENTITY rfc6681 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .6681.xml"> | ||||
| <!-- <!ENTITY rfc6773 SYSTEM "http://xml.resource.org/public/rfc/bibxml/referenc | ||||
| e.RFC.6773.xml"> --> | ||||
| <!ENTITY rfc6816 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .6816.xml"> | ||||
| <!ENTITY rfc6865 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .6865.xml"> | ||||
| <!ENTITY rfc8174 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .8174.xml"> | ||||
| <!ENTITY rfc8406 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .8406.xml"> | ||||
| ]> | ||||
| <?rfc toc="yes" ?> | ||||
| <?rfc compact="yes" ?> | ||||
| <?rfc subcompact="no" ?> | ||||
| <?rfc symrefs="yes" ?> | ||||
| <?rfc sortrefs="yes" ?> | ||||
| <?rfc rfcedstyle="yes" ?> | ||||
| <!-- <rfc category="std" number="6363" | ||||
| ipr="pre5378Trust200902" submissionType="IETF" consensus="yes"> --> | ||||
| <rfc category="std" docName="draft-ietf-tsvwg-fecframe-ext-08" ipr="trust200902" | ||||
| updates="6363"> | ||||
| <front> | <front> | |||
| <title abbrev="FEC Framework Extension">Forward Error Correction (FEC) Frame work Extension to Sliding Window Codes</title> | <title abbrev="FEC Framework Extension">Forward Error Correction (FEC) Frame work Extension to Sliding Window Codes</title> | |||
| <seriesInfo name="RFC" value="8680" stream="IETF"/> | ||||
| <author fullname="Vincent Roca" initials="V" surname="Roca"> | <author fullname="Vincent Roca" initials="V" surname="Roca"> | |||
| <organization>INRIA</organization> | <organization showOnFrontPage="true">INRIA</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <!-- | <street/> | |||
| <street>655, av. de l'Europe</street> | <city/> | |||
| <street>Inovallee; Montbonnot</street> | <extaddr>Univ. Grenoble Alpes</extaddr> | |||
| <city>ST ISMIER cedex</city> | ||||
| <code>38334</code> | ||||
| --> | ||||
| <street></street> | ||||
| <city>Univ. Grenoble Alpes</city> | ||||
| <country>France</country> | <country>France</country> | |||
| </postal> | </postal> | |||
| <email>vincent.roca@inria.fr</email> | <email>vincent.roca@inria.fr</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Ali Begen" initials="A." surname="Begen"> | <author fullname="Ali Begen" initials="A." surname="Begen"> | |||
| <organization>Networked Media</organization> | <organization showOnFrontPage="true">Networked Media</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street></street> | <street/> | |||
| <city>Konya</city> | <city>Konya</city> | |||
| <region></region> | <region/> | |||
| <code></code> | <code/> | |||
| <country>Turkey</country> | <country>Turkey</country> | |||
| </postal> | </postal> | |||
| <email>ali.begen@networked.media</email> | <email>ali.begen@networked.media</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date month="01" year="2020"/> | ||||
| <!-- <date month="July" year="2017" /> --> | ||||
| <date/> | ||||
| <workgroup>TSVWG</workgroup> | <workgroup>TSVWG</workgroup> | |||
| <keyword>FEC</keyword> | ||||
| <abstract> | <keyword>FECFRAME</keyword> | |||
| <t> | <keyword>packet loss recovery</keyword> | |||
| <keyword>RLC</keyword> | ||||
| <keyword>Sliding Window FEC Codes</keyword> | ||||
| <abstract pn="section-abstract"> | ||||
| <t pn="section-abstract-1"> | ||||
| RFC 6363 describes a framework for using Forward Error Correction (FEC) | RFC 6363 describes a framework for using Forward Error Correction (FEC) | |||
| codes to provide protection against packet loss. The framework | codes to provide protection against packet loss. The framework | |||
| supports applying FEC to arbitrary packet flows over unreliable | supports applying FEC to arbitrary packet flows over unreliable | |||
| transport and is primarily intended for real-time, or streaming, media. | transport and is primarily intended for real-time, or streaming, media. | |||
| However, FECFRAME as per RFC 6363 is restricted to block FEC codes. | However, FECFRAME as per RFC 6363 is restricted to block FEC codes. | |||
| This document updates RFC 6363 to support FEC Codes based on a | This document updates RFC 6363 to support FEC codes based on a | |||
| sliding encoding window, in addition to Block FEC Codes, in a | sliding encoding window, in addition to block FEC codes, in a | |||
| backward-compatible way. | backward-compatible way. | |||
| During multicast/broadcast real-time content delivery, the use of | During multicast/broadcast real-time content delivery, the use of | |||
| sliding window codes significantly improves robustness in harsh | sliding window codes significantly improves robustness in harsh | |||
| environments, with less repair traffic and lower FEC-related added latency. | environments, with less repair traffic and lower FEC-related added latency. | |||
| </t> | </t> | |||
| </abstract> | </abstract> | |||
| <boilerplate> | ||||
| <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc= | ||||
| "exclude" pn="section-boilerplate.1"> | ||||
| <name slugifiedName="name-status-of-this-memo">Status of This Memo</name | ||||
| > | ||||
| <t pn="section-boilerplate.1-1"> | ||||
| This is an Internet Standards Track document. | ||||
| </t> | ||||
| <t pn="section-boilerplate.1-2"> | ||||
| This document is a product of the Internet Engineering Task Force | ||||
| (IETF). It represents the consensus of the IETF community. It has | ||||
| received public review and has been approved for publication by | ||||
| the Internet Engineering Steering Group (IESG). Further | ||||
| information on Internet Standards is available in Section 2 of | ||||
| RFC 7841. | ||||
| </t> | ||||
| <t pn="section-boilerplate.1-3"> | ||||
| Information about the current status of this document, any | ||||
| errata, and how to provide feedback on it may be obtained at | ||||
| <eref target="https://www.rfc-editor.org/info/rfc8680" brackets="non | ||||
| e"/>. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="copyright" numbered="false" removeInRFC="false" toc="excl | ||||
| ude" pn="section-boilerplate.2"> | ||||
| <name slugifiedName="name-copyright-notice">Copyright Notice</name> | ||||
| <t pn="section-boilerplate.2-1"> | ||||
| Copyright (c) 2020 IETF Trust and the persons identified as the | ||||
| document authors. All rights reserved. | ||||
| </t> | ||||
| <t pn="section-boilerplate.2-2"> | ||||
| This document is subject to BCP 78 and the IETF Trust's Legal | ||||
| Provisions Relating to IETF Documents | ||||
| (<eref target="https://trustee.ietf.org/license-info" brackets="none | ||||
| "/>) in effect on the date of | ||||
| publication of this document. Please review these documents | ||||
| carefully, as they describe your rights and restrictions with | ||||
| respect to this document. Code Components extracted from this | ||||
| document must include Simplified BSD License text as described in | ||||
| Section 4.e of the Trust Legal Provisions and are provided without | ||||
| warranty as described in the Simplified BSD License. | ||||
| </t> | ||||
| </section> | ||||
| </boilerplate> | ||||
| <toc> | ||||
| <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" p | ||||
| n="section-toc.1"> | ||||
| <name slugifiedName="name-table-of-contents">Table of Contents</name> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-to | ||||
| c.1-1"> | ||||
| <li pn="section-toc.1-1.1"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent | ||||
| ="1" format="counter" sectionFormat="of" target="section-1"/>. <xref derivedCon | ||||
| tent="" format="title" sectionFormat="of" target="name-introduction">Introductio | ||||
| n</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.2"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent | ||||
| ="2" format="counter" sectionFormat="of" target="section-2"/>. <xref derivedCon | ||||
| tent="" format="title" sectionFormat="of" target="name-terminology">Terminology< | ||||
| /xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.2.2"> | ||||
| <li pn="section-toc.1-1.2.2.1"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.2.2.1.1"><xref derive | ||||
| dContent="2.1" format="counter" sectionFormat="of" target="section-2.1"/>. <xre | ||||
| f derivedContent="" format="title" sectionFormat="of" target="name-definitions-a | ||||
| nd-abbreviatio">Definitions and Abbreviations</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.2.2.2"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.2.2.2.1"><xref derive | ||||
| dContent="2.2" format="counter" sectionFormat="of" target="section-2.2"/>. <xre | ||||
| f derivedContent="" format="title" sectionFormat="of" target="name-requirements- | ||||
| language">Requirements Language</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.3"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.3.1"><xref derivedContent | ||||
| ="3" format="counter" sectionFormat="of" target="section-3"/>. <xref derivedCon | ||||
| tent="" format="title" sectionFormat="of" target="name-summary-of-architecture-o | ||||
| ve">Summary of Architecture Overview</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.4.1"><xref derivedContent | ||||
| ="4" format="counter" sectionFormat="of" target="section-4"/>. <xref derivedCon | ||||
| tent="" format="title" sectionFormat="of" target="name-procedural-overview">Proc | ||||
| edural Overview</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.4.2"> | ||||
| <li pn="section-toc.1-1.4.2.1"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.4.2.1.1"><xref derive | ||||
| dContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>. <xre | ||||
| f derivedContent="" format="title" sectionFormat="of" target="name-general">Gene | ||||
| ral</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.2"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.4.2.2.1"><xref derive | ||||
| dContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>. <xre | ||||
| f derivedContent="" format="title" sectionFormat="of" target="name-sender-operat | ||||
| ion-with-slidi">Sender Operation with Sliding Window FEC Codes</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.3"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.4.2.3.1"><xref derive | ||||
| dContent="4.3" format="counter" sectionFormat="of" target="section-4.3"/>. <xre | ||||
| f derivedContent="" format="title" sectionFormat="of" target="name-receiver-oper | ||||
| ation-with-sli">Receiver Operation with Sliding Window FEC Codes</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.5.1"><xref derivedContent | ||||
| ="5" format="counter" sectionFormat="of" target="section-5"/>. <xref derivedCon | ||||
| tent="" format="title" sectionFormat="of" target="name-protocol-specification">P | ||||
| rotocol Specification</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.5.2"> | ||||
| <li pn="section-toc.1-1.5.2.1"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.5.2.1.1"><xref derive | ||||
| dContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>. <xre | ||||
| f derivedContent="" format="title" sectionFormat="of" target="name-general-2">Ge | ||||
| neral</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.2"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.5.2.2.1"><xref derive | ||||
| dContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>. <xre | ||||
| f derivedContent="" format="title" sectionFormat="of" target="name-fec-framework | ||||
| -configuration">FEC Framework Configuration Information</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.5.2.3.1"><xref derive | ||||
| dContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>. <xre | ||||
| f derivedContent="" format="title" sectionFormat="of" target="name-fec-scheme-re | ||||
| quirements">FEC Scheme Requirements</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.6"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.6.1"><xref derivedContent | ||||
| ="6" format="counter" sectionFormat="of" target="section-6"/>. <xref derivedCon | ||||
| tent="" format="title" sectionFormat="of" target="name-feedback">Feedback</xref> | ||||
| </t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.7.1"><xref derivedContent | ||||
| ="7" format="counter" sectionFormat="of" target="section-7"/>. <xref derivedCon | ||||
| tent="" format="title" sectionFormat="of" target="name-transport-protocols">Tran | ||||
| sport Protocols</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.8"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.8.1"><xref derivedContent | ||||
| ="8" format="counter" sectionFormat="of" target="section-8"/>. <xref derivedCon | ||||
| tent="" format="title" sectionFormat="of" target="name-congestion-control">Conge | ||||
| stion Control</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.9.1"><xref derivedContent | ||||
| ="9" format="counter" sectionFormat="of" target="section-9"/>. <xref derivedCon | ||||
| tent="" format="title" sectionFormat="of" target="name-security-considerations"> | ||||
| Security Considerations</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.10"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.10.1"><xref derivedConten | ||||
| t="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedC | ||||
| ontent="" format="title" sectionFormat="of" target="name-operations-and-manageme | ||||
| nt-c">Operations and Management Considerations</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.11"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.11.1"><xref derivedConten | ||||
| t="11" format="counter" sectionFormat="of" target="section-11"/>. <xref derivedC | ||||
| ontent="" format="title" sectionFormat="of" target="name-iana-considerations">IA | ||||
| NA Considerations</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.12"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.12.1"><xref derivedConten | ||||
| t="12" format="counter" sectionFormat="of" target="section-12"/>. <xref derivedC | ||||
| ontent="" format="title" sectionFormat="of" target="name-references">References< | ||||
| /xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.12.2"> | ||||
| <li pn="section-toc.1-1.12.2.1"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.12.2.1.1"><xref deriv | ||||
| edContent="12.1" format="counter" sectionFormat="of" target="section-12.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-normative- | ||||
| references">Normative References</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.12.2.2"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.12.2.2.1"><xref deriv | ||||
| edContent="12.2" format="counter" sectionFormat="of" target="section-12.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-informativ | ||||
| e-references">Informative References</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.13"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.13.1"><xref derivedConten | ||||
| t="Appendix A" format="default" sectionFormat="of" target="section-appendix.a"/> | ||||
| . <xref derivedContent="" format="title" sectionFormat="of" target="name-about- | ||||
| sliding-encoding-wind">About Sliding Encoding Window Management (Informational)< | ||||
| /xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.14"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.14.1"><xref derivedConten | ||||
| t="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-acknowledgments">Ackno | ||||
| wledgments</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.15"> | ||||
| <t keepWithNext="true" pn="section-toc.1-1.15.1"><xref derivedConten | ||||
| t="" format="none" sectionFormat="of" target="section-appendix.c"/><xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-authors-addresses">Aut | ||||
| hors' Addresses</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | ||||
| </toc> | ||||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="introduction" title="Introduction"> | <section anchor="introduction" numbered="true" toc="include" removeInRFC="fa | |||
| <!-- ====================== --> | lse" pn="section-1"> | |||
| <name slugifiedName="name-introduction">Introduction</name> | ||||
| <t> Many applications need to transport a continuous stream | <t pn="section-1-1"> Many applications need to transport a continuous stre | |||
| am | ||||
| of packetized data from a source (sender) to one or more destinations | of packetized data from a source (sender) to one or more destinations | |||
| (receivers) over networks that do not provide guaranteed packet delivery. | (receivers) over networks that do not provide guaranteed packet delivery. | |||
| In particular packets may be lost, which is strictly the focus of this | In particular, packets may be lost, which is strictly the focus of this | |||
| document: we assume that transmitted packets are either lost (e.g., | document: we assume that transmitted packets are either lost (e.g., | |||
| because of a congested router, of a poor signal-to-noise ratio in a | because of a congested router, a poor signal-to-noise ratio in a | |||
| wireless network, or because the number of bit errors exceeds the | wireless network, or because the number of bit errors exceeds the | |||
| correction capabilities of the physical-layer error correcting code) or received | correction capabilities of the physical-layer error-correcting code) or | |||
| by the transport protocol without any corruption (i.e., the bit-errors, | were received by the transport protocol without any corruption (i.e., the bit er | |||
| if any, have been fixed by the physical-layer error correcting code and therefor | rors, | |||
| e | if any, have been fixed by the physical-layer error-correcting code and therefor | |||
| e | ||||
| are hidden to the upper layers). | are hidden to the upper layers). | |||
| </t> | </t> | |||
| <t pn="section-1-2">For these use cases, Forward Error Correction (FEC) ap | ||||
| <t>For these use-cases, Forward Error Correction (FEC) applied within | plied within | |||
| the transport or application layer is an efficient | the transport or application layer is an efficient | |||
| technique to improve packet transmission robustness in presence of packet | technique to improve packet transmission robustness in the presence of packet | |||
| losses (or "erasures"), without going through packet retransmissions that | losses (or "erasures") without going through packet retransmissions that | |||
| create a delay often incompatible with real-time constraints. | create a delay often incompatible with real-time constraints. | |||
| The FEC Building Block defined in <xref target="RFC5052"/> provides a | The FEC Building Block defined in <xref target="RFC5052" format="default" sectio nFormat="of" derivedContent="RFC5052"/> provides a | |||
| framework for the definition of Content Delivery Protocols (CDPs) | framework for the definition of Content Delivery Protocols (CDPs) | |||
| that make use of separately-defined FEC schemes. Any CDP | that make use of separately defined FEC schemes. Any CDP | |||
| defined according to the requirements of the FEC Building Block can then | defined according to the requirements of the FEC Building Block can then | |||
| easily be used with any FEC Scheme that is also defined according to | easily be used with any FEC scheme that is also defined according to | |||
| the requirements of the FEC Building Block. | the requirements of the FEC Building Block. | |||
| </t> | </t> | |||
| <t pn="section-1-3"> | ||||
| <t> | Then, FECFRAME <xref target="RFC6363" format="default" sectionFormat="of" derive | |||
| Then FECFRAME <xref target="RFC6363"/> provides a framework to define | dContent="RFC6363"/> provides a framework to define | |||
| Content Delivery Protocols (CDPs) that provide FEC protection for arbitrary | Content Delivery Protocols (CDPs) that provide FEC protection for arbitrary | |||
| packet flows over an unreliable datagram service transport such as UDP. | packet flows over an unreliable datagram service transport, such as UDP. | |||
| It is primarily intended for real-time or streaming media applications, | It is primarily intended for real-time or streaming media applications | |||
| using broadcast, multicast, or on-demand delivery. | that are using broadcast, multicast, or on-demand delivery. A subset of | |||
| FECFRAME is currently part of the 3GPP Evolved Multimedia Broadcast/Multicast Se | ||||
| rvice | ||||
| (eMBMS) standard <xref target="MBMSTS" format="default" sectionFormat="of" deriv | ||||
| edContent="MBMSTS"/>. | ||||
| </t> | </t> | |||
| <t pn="section-1-4"> | ||||
| <t> | However, <xref target="RFC6363" format="default" sectionFormat="of" derivedConte | |||
| However, <xref target="RFC6363"/> only considers block FEC schemes defined in | nt="RFC6363"/> only considers block FEC schemes defined in | |||
| accordance with the FEC Building Block <xref target="RFC5052"/> | accordance with the FEC Building Block <xref target="RFC5052" format="default" s | |||
| (e.g., <xref target="RFC6681"/>, <xref target="RFC6816"/> or <xref target="RFC68 | ectionFormat="of" derivedContent="RFC5052"/> | |||
| 65"/>). | (e.g., <xref target="RFC6681" format="default" sectionFormat="of" derivedContent | |||
| ="RFC6681"/>, <xref target="RFC6816" format="default" sectionFormat="of" derived | ||||
| Content="RFC6816"/>, or <xref target="RFC6865" format="default" sectionFormat="o | ||||
| f" derivedContent="RFC6865"/>). | ||||
| These codes require the input flow(s) to be segmented into a sequence of blocks. | These codes require the input flow(s) to be segmented into a sequence of blocks. | |||
| Then FEC encoding (at a sender or an encoding middlebox) and decoding (at a rece iver | Then, FEC encoding (at a sender or an encoding middlebox) and decoding (at a rec eiver | |||
| or a decoding middlebox) are both performed on a per-block basis. | or a decoding middlebox) are both performed on a per-block basis. | |||
| For instance, if the current block encompasses the 100's to 119's source symbols | For instance, if the current block encompasses the 100's to 119's source symbols | |||
| (i.e., a block of size 20 symbols) of an input flow, encoding (and decoding) wil l | (i.e., a block of size 20 symbols) of an input flow, encoding (and decoding) wil l | |||
| be performed on this block independently of other blocks. | be performed on this block independently of other blocks. | |||
| This approach has major impacts on FEC encoding and decoding delays. | This approach has major impacts on FEC encoding and decoding delays. | |||
| The data packets of continuous media flow(s) may be passed to the transport laye r | The data packets of continuous media flow(s) may be passed to the transport laye r | |||
| immediately, without delay. | immediately, without delay. | |||
| But the block creation time, that depends on the number of source symbols in | But the block creation time, which depends on the number of source symbols in | |||
| this block, impacts both the FEC encoding delay (since encoding requires that al l | this block, impacts both the FEC encoding delay (since encoding requires that al l | |||
| source symbols be known), and mechanically the packet loss recovery delay at a | source symbols be known) and, mechanically, the packet loss recovery delay at a | |||
| receiver (since no repair symbol for the current block can be generated and | receiver (since no repair symbol for the current block can be generated and | |||
| therefore received before that time). | therefore received before that time). | |||
| Therefore a good value for the block size is necessarily a balance between the | Therefore, a good value for the block size is necessarily a balance between the | |||
| maximum FEC decoding latency at the receivers (which must be in line with the mo st | maximum FEC decoding latency at the receivers (which must be in line with the mo st | |||
| stringent real-time requirement of the protected flow(s), hence an incentive to | stringent real-time requirement of the protected flow(s), hence an incentive to | |||
| reduce the block size), and the desired robustness against long loss bursts (whi ch | reduce the block size) and the desired robustness against long loss bursts (whic h | |||
| increases with the block size, hence an incentive to increase this size). | increases with the block size, hence an incentive to increase this size). | |||
| </t> | </t> | |||
| <t pn="section-1-5"> | ||||
| <t> | This document updates <xref target="RFC6363" format="default" sectionFormat="of" | |||
| This document updates <xref target="RFC6363"/> in order to also support FEC code | derivedContent="RFC6363"/> in order to also support FEC codes | |||
| s | based on a sliding encoding window (a.k.a., convolutional codes) <xref target="R | |||
| based on a sliding encoding window (A.K.A. convolutional codes) <xref target="RF | FC8406" format="default" sectionFormat="of" derivedContent="RFC8406"/>. | |||
| C8406"/>. | This encoding window, either fixed or variable size, slides over the set of | |||
| This encoding window, either of fixed or variable size, slides over the set of | ||||
| source symbols. | source symbols. | |||
| FEC encoding is launched whenever needed, from the set of source symbols present | FEC encoding is launched whenever needed from the set of source symbols present | |||
| in the sliding encoding window at that time. | in the sliding encoding window at that time. | |||
| This approach significantly reduces FEC-related latency, since repair symbols ca n | This approach significantly reduces FEC-related latency, since repair symbols ca n | |||
| be generated and passed to the transport layer on-the-fly, at any time, and can be | be generated and passed to the transport layer on the fly at any time and can be | |||
| regularly received by receivers to quickly recover packet losses. | regularly received by receivers to quickly recover packet losses. | |||
| Using sliding window FEC codes is therefore highly beneficial to real-time flows , | Using sliding window FEC codes is therefore highly beneficial to real-time flows , | |||
| one of the primary targets of FECFRAME. | one of the primary targets of FECFRAME. | |||
| <xref target="RLC-ID"/> provides an example of such FEC Scheme for FECFRAME, | <xref target="RFC8681" format="default" sectionFormat="of" derivedContent="RFC86 | |||
| built upon the simple sliding window Random Linear Codes (RLC). | 81"/> provides an example of such a FEC scheme for FECFRAME, | |||
| which is built upon the simple sliding window Random Linear Code (RLC). | ||||
| </t> | </t> | |||
| <t pn="section-1-6"> | ||||
| <t> | This document is fully backward compatible with <xref target="RFC6363" format="d | |||
| This document is fully backward compatible with <xref target="RFC6363"/>. Indeed | efault" sectionFormat="of" derivedContent="RFC6363"/>. Indeed: | |||
| : | </t> | |||
| <list style="symbols"> | <ul spacing="normal" bare="false" empty="false" pn="section-1-7"> | |||
| <t> this FECFRAME update does not prevent nor compromise in any way the s | <li pn="section-1-7.1"> This FECFRAME update does not prevent or comprom | |||
| upport | ise in any way the support | |||
| of block FEC codes. Both types of codes can nicely co-exist, just like di | of block FEC codes. Both types of codes can nicely coexist, just like dif | |||
| fferent | ferent | |||
| block FEC schemes can co-exist;</t> | block FEC schemes can coexist.</li> | |||
| <li pn="section-1-7.2"> Each sliding window FEC scheme is associated wit | ||||
| <t> each sliding window FEC Scheme is associated to a specific FEC Encodi | h a specific FEC Encoding ID subject | |||
| ng ID subject | to IANA registration, just like block FEC schemes.</li> | |||
| to IANA registration, just like block FEC Schemes;</t> | <li pn="section-1-7.3"> Any receiver -- for instance, a legacy receiver | |||
| that only supports | ||||
| <t> any receiver, for instance a legacy receiver that only supports block | block FEC schemes -- can easily identify the FEC scheme used in a FECFRAM | |||
| FEC schemes, | E session. | |||
| can easily identify the FEC Scheme used in a FECFRAME session. | Indeed, the FEC Encoding ID that identifies the FEC scheme is carried in | |||
| Indeed, the FEC Encoding ID that identifies the FEC Scheme is carried in | FEC Framework Configuration Information (see <xref target="RFC6363" forma | |||
| the | t="default" sectionFormat="of" section="5.5" derivedLink="https://rfc-editor.org | |||
| FEC Framework Configuration Information (see section 5.5 of <xref target= | /rfc/rfc6363#section-5.5" derivedContent="RFC6363"/>). | |||
| "RFC6363"/>). | ||||
| For instance, when the Session Description Protocol (SDP) is used to carr y the | For instance, when the Session Description Protocol (SDP) is used to carr y the | |||
| FEC Framework Configuration Information, the FEC Encoding ID can be commu nicated | FEC Framework Configuration Information, the FEC Encoding ID can be commu nicated | |||
| in the "encoding-id=" parameter of a "fec-repair-flow" attribute <xref ta rget="RFC6364"/>. | in the "encoding-id=" parameter of a "fec-repair-flow" attribute <xref ta rget="RFC6364" format="default" sectionFormat="of" derivedContent="RFC6364"/>. | |||
| This mechanism is the basic approach for a FECFRAME receiver to determine | This mechanism is the basic approach for a FECFRAME receiver to determine | |||
| whether or not it supports the FEC Scheme used in a given FECFRAME sessio | whether or not it supports the FEC scheme used in a given FECFRAME sessio | |||
| n; </t> | n. </li> | |||
| </ul> | ||||
| </list> | <t pn="section-1-8"> | |||
| This document leverages on <xref target="RFC6363"></xref> and re-uses its struct | This document leverages on <xref target="RFC6363" format="default" sectionFormat | |||
| ure. | ="of" derivedContent="RFC6363"/> and reuses its structure. | |||
| It proposes new sections specific to sliding window FEC codes whenever required. | It proposes new sections specific to sliding window FEC codes whenever required. | |||
| The only exception is <xref target="ArchitectureOverview"/> that provides a quic k | The only exception is <xref target="ArchitectureOverview" format="default" secti onFormat="of" derivedContent="Section 3"/>, which provides a quick | |||
| summary of FECFRAME in order to facilitate the understanding of this document to readers | summary of FECFRAME in order to facilitate the understanding of this document to readers | |||
| not familiar with the concepts and terminology. | not familiar with the concepts and terminology. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-2"> | ||||
| <section anchor="definitionsAndAbbreviations" title="Definitions and Abbrevi | <name slugifiedName="name-terminology">Terminology</name> | |||
| ations"> | <section anchor="definitionsAndAbbreviations" numbered="true" toc="include | |||
| <!-- ====================== --> | " removeInRFC="false" pn="section-2.1"> | |||
| <name slugifiedName="name-definitions-and-abbreviatio">Definitions and A | ||||
| <t>The following list of definitions and abbreviations is copied from <xref targ | bbreviations</name> | |||
| et="RFC6363"/>, | <t pn="section-2.1-1">The following list of definitions and abbreviation | |||
| adding only the Block/sliding window FEC Code and Encoding/Decoding Window defin | s is copied from <xref target="RFC6363" format="default" sectionFormat="of" deri | |||
| itions (tagged | vedContent="RFC6363"/>, | |||
| adding only the Block FEC Code, Sliding Window FEC Code, and Encoding/Decoding W | ||||
| indow definitions (tagged | ||||
| with "ADDED"): | with "ADDED"): | |||
| <list hangIndent="4" style="hanging"> | ||||
| <t hangText="Application Data Unit (ADU):"> The unit of source data provided as | ||||
| payload to the transport layer. | ||||
| For instance, it can be a payload containing the result of the RTP packetization | ||||
| of a compressed video frame. | ||||
| </t> | </t> | |||
| <dl newline="true" spacing="normal" pn="section-2.1-2"> | ||||
| <t hangText="ADU Flow:"> A sequence of ADUs associated with a transport-la | <dt pn="section-2.1-2.1">Application Data Unit (ADU):</dt> | |||
| yer flow | <dd pn="section-2.1-2.2"> The unit of source data provided as | |||
| a payload to the transport layer. | ||||
| For instance, it can be a payload containing the result of the RTP packetization | ||||
| of a compressed video frame. | ||||
| </dd> | ||||
| <dt pn="section-2.1-2.3">ADU Flow:</dt> | ||||
| <dd pn="section-2.1-2.4"> A sequence of ADUs associated with a transpo | ||||
| rt-layer flow | ||||
| identifier (such as the standard 5-tuple {source IP address, source | identifier (such as the standard 5-tuple {source IP address, source | |||
| port, destination IP address, destination port, transport | port, destination IP address, destination port, transport | |||
| protocol}).</t> | protocol}).</dd> | |||
| <dt pn="section-2.1-2.5">AL-FEC:</dt> | ||||
| <t hangText="AL-FEC:"> Application-layer Forward Error Correction.</t> | <dd pn="section-2.1-2.6"> Application-Layer Forward Error Correction.< | |||
| /dd> | ||||
| <t hangText="Application Protocol:"> Control protocol used to establish an | <dt pn="section-2.1-2.7">Application Protocol:</dt> | |||
| d control | <dd pn="section-2.1-2.8"> Control protocol used to establish and contr | |||
| ol | ||||
| the source flow being protected, e.g., the Real-Time Streaming Protocol | the source flow being protected, e.g., the Real-Time Streaming Protocol | |||
| (RTSP).</t> | (RTSP).</dd> | |||
| <dt pn="section-2.1-2.9">Content Delivery Protocol (CDP):</dt> | ||||
| <t hangText="Content Delivery Protocol (CDP):"> A complete application pro | <dd pn="section-2.1-2.10"> A complete application protocol | |||
| tocol | ||||
| specification that, through the use of the framework defined in this | specification that, through the use of the framework defined in this | |||
| document, is able to make use of FEC schemes to provide FEC | document, is able to make use of FEC schemes to provide FEC | |||
| capabilities.</t> | capabilities.</dd> | |||
| <dt pn="section-2.1-2.11">FEC Code:</dt> | ||||
| <t hangText="FEC Code:"> An algorithm for encoding data such that the enco | <dd pn="section-2.1-2.12"> An algorithm for encoding data such that th | |||
| ded data | e encoded data | |||
| flow is resilient to data loss. Note that, in general, FEC codes may also | 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 that is not | be used to make a data flow resilient to corruption, but that is not | |||
| considered in this document.</t> | considered in this document.</dd> | |||
| <dt pn="section-2.1-2.13">Block FEC Code: (ADDED)</dt> | ||||
| <t hangText="Block FEC Code: (ADDED)"> An FEC Code that operates on blocks, i.e. | <dd pn="section-2.1-2.14"> A FEC code that operates on blocks, i.e., f | |||
| , for | or | |||
| which the input flow MUST be segmented into a sequence of blocks, | which the input flow <bcp14>MUST</bcp14> be segmented into a sequence of blocks, | |||
| FEC encoding and decoding being performed independently on a | with FEC encoding and decoding being performed independently on a | |||
| per-block basis.</t> | per-block basis.</dd> | |||
| <dt pn="section-2.1-2.15">Sliding Window FEC Code: (ADDED)</dt> | ||||
| <t hangText="Sliding Window FEC Code: (ADDED)"> An FEC Code that can generate re | <dd pn="section-2.1-2.16"> A FEC code that can generate repair symbols | |||
| pair symbols | on the fly, at any time, from the set of source symbols present in the sliding | |||
| on-the-fly, at any time, from the set of source symbols present in the sliding | ||||
| encoding window at that time. | encoding window at that time. | |||
| These codes are also known as convolutional codes.</t> | These codes are also known as convolutional codes.</dd> | |||
| <dt pn="section-2.1-2.17">FEC Framework:</dt> | ||||
| <t hangText="FEC Framework:"> A protocol framework for the definition of C | <dd pn="section-2.1-2.18"> A protocol framework for the definition of | |||
| ontent | Content | |||
| Delivery Protocols using FEC, such as the framework defined in this | Delivery Protocols using FEC, such as the framework defined in this | |||
| document.</t> | document.</dd> | |||
| <dt pn="section-2.1-2.19">FEC Framework Configuration Information:</dt | ||||
| <t hangText="FEC Framework Configuration Information:"> Information that c | > | |||
| ontrols | <dd pn="section-2.1-2.20"> Information that controls | |||
| the operation of the FEC Framework.</t> | the operation of the FEC Framework.</dd> | |||
| <dt pn="section-2.1-2.21">FEC Payload ID:</dt> | ||||
| <t hangText="FEC Payload ID:"> Information that identifies the contents and prov | <dd pn="section-2.1-2.22"> Information that identifies the contents an | |||
| ides positional information of a packet | d provides positional information of a packet | |||
| with respect to the FEC Scheme.</t> | with respect to the FEC scheme.</dd> | |||
| <dt pn="section-2.1-2.23">FEC Repair Packet:</dt> | ||||
| <t hangText="FEC Repair Packet:"> At a sender (respectively, at a receiver | <dd pn="section-2.1-2.24"> At a sender (respectively, at a receiver), | |||
| ), a | a | |||
| payload submitted to (respectively, received from) the transport | payload submitted to (respectively, received from) the transport | |||
| protocol containing one or more repair symbols along with a Repair FEC | protocol containing one or more repair symbols along with a Repair FEC | |||
| Payload ID and possibly an RTP header.</t> | Payload ID and possibly an RTP header.</dd> | |||
| <dt pn="section-2.1-2.25">FEC Scheme:</dt> | ||||
| <t hangText="FEC Scheme:"> A specification that defines the additional pro | <dd pn="section-2.1-2.26"> A specification that defines the additional | |||
| tocol | protocol | |||
| aspects required to use a particular FEC code with the FEC | aspects required to use a particular FEC code with the FEC | |||
| Framework.</t> | Framework.</dd> | |||
| <dt pn="section-2.1-2.27">FEC Source Packet:</dt> | ||||
| <t hangText="FEC Source Packet:"> At a sender (respectively, at a receiver | <dd pn="section-2.1-2.28"> At a sender (respectively, at a receiver), | |||
| ), a | a | |||
| payload submitted to (respectively, received from) the transport | payload submitted to (respectively, received from) the transport | |||
| protocol containing an ADU along with an optional Explicit Source FEC | protocol containing an ADU along with an optional Explicit Source FEC | |||
| Payload ID.</t> | Payload ID.</dd> | |||
| <dt pn="section-2.1-2.29">Repair Flow:</dt> | ||||
| <!-- | <dd pn="section-2.1-2.30"> The packet flow carrying FEC data.</dd> | |||
| <t hangText="Protection Amount:"> The relative increase in data sent due t | <dt pn="section-2.1-2.31">Repair FEC Payload ID:</dt> | |||
| o the use | <dd pn="section-2.1-2.32"> A FEC Payload ID specifically for use with | |||
| of FEC.</t> | repair packets.</dd> | |||
| <dt pn="section-2.1-2.33">Source Flow:</dt> | ||||
| <t hangText="Repair Flow:"> The packet flow carrying FEC data.</t> | <dd pn="section-2.1-2.34"> The packet flow to which FEC protection is | |||
| to be | ||||
| <t hangText="Repair FEC Payload ID:"> A FEC Payload ID specifically for us | applied. A source flow consists of ADUs.</dd> | |||
| e with | <dt pn="section-2.1-2.35">Source FEC Payload ID:</dt> | |||
| repair packets.</t> | <dd pn="section-2.1-2.36"> A FEC Payload ID specifically for use with | |||
| source packets.</dd> | ||||
| <t hangText="Source Flow:"> The packet flow to which FEC protection is to | <dt pn="section-2.1-2.37">Source Protocol:</dt> | |||
| be | <dd pn="section-2.1-2.38"> A protocol used for the source flow being p | |||
| applied. A source flow consists of ADUs.</t> | rotected, | |||
| e.g., RTP.</dd> | ||||
| <t hangText="Source FEC Payload ID:"> A FEC Payload ID specifically for us | <dt pn="section-2.1-2.39">Transport Protocol:</dt> | |||
| e with | <dd pn="section-2.1-2.40"> The protocol used for the transport of the | |||
| source packets.</t> | source and | |||
| repair flows. This protocol needs to provide an unreliable datagram | ||||
| <t hangText="Source Protocol:"> A protocol used for the source flow being | service, as UDP does (<xref target="RFC6363" sectionFormat="comma" section | |||
| protected, | ="7" format="default" derivedLink="https://rfc-editor.org/rfc/rfc6363#section-7" | |||
| e.g., RTP.</t> | derivedContent="RFC6363"/>). | |||
| </dd> | ||||
| <t hangText="Transport Protocol:"> The protocol used for the transport of | <dt pn="section-2.1-2.41">Encoding Window: (ADDED)</dt> | |||
| the source and | <dd pn="section-2.1-2.42"> Set of source symbols available at the send | |||
| repair flows, using an unreliable datagram service such as UDP. | er/coding node | |||
| <!-- and the Datagram Congestion Control Protocol (DCCP) (either DCCP-STD | that are used (with a Sliding Window FEC code) to generate a repair symbol | |||
| or DCCP-UDP <xref target="RFC6773"/>).--> | .</dd> | |||
| </t> | <dt pn="section-2.1-2.43">Decoding Window: (ADDED)</dt> | |||
| <dd pn="section-2.1-2.44"> Set of received or decoded source and repai | ||||
| <t hangText="Encoding Window: (ADDED)"> Set of Source Symbols available at the s | r symbols available | |||
| ender/coding node | at a receiver that are used (with a Sliding Window FEC code) to | |||
| that are used to generate a repair symbol, with a Sliding Window FEC Code. | decode lost source symbols.</dd> | |||
| </t> | <dt pn="section-2.1-2.45">Code Rate:</dt> | |||
| <dd pn="section-2.1-2.46"> The ratio between the number of source symb | ||||
| <t hangText="Decoding Window: (ADDED)"> Set of received or decoded source and re | ols and the | |||
| pair symbols available | ||||
| at a receiver that are used to decode erased source symbols, with a Slidin | ||||
| g Window FEC Code.</t> | ||||
| <t hangText="Code Rate:"> The ratio between the number of source symbols a | ||||
| nd the | ||||
| number of encoding symbols. By definition, the code rate is such that 0 | number of encoding symbols. By definition, the code rate is such that 0 | |||
| < code rate <= 1. A code rate close to 1 indicates that a small | < code rate <= 1. A code rate close to 1 indicates that a small | |||
| number of repair symbols have been produced during the encoding | number of repair symbols have been produced during the encoding | |||
| process.</t> | process.</dd> | |||
| <dt pn="section-2.1-2.47">Encoding Symbol:</dt> | ||||
| <t hangText="Encoding Symbol:"> Unit of data generated by the encoding pro | <dd pn="section-2.1-2.48"> Unit of data generated by the encoding proc | |||
| cess. With | ess. With | |||
| systematic codes, source symbols are part of the encoding symbols.</t> | systematic codes, source symbols are part of the encoding symbols.</dd> | |||
| <dt pn="section-2.1-2.49">Packet Erasure Channel:</dt> | ||||
| <t hangText="Packet Erasure Channel:"> A communication path where packets | <dd pn="section-2.1-2.50"> A communication path where packets are eith | |||
| are either | er | |||
| lost (e.g., in our case, by a congested router, or because the number of | lost (e.g., in our case, by a congested router, or because the number of | |||
| transmission errors exceeds the correction capabilities of the | transmission errors exceeds the correction capabilities of the | |||
| physical-layer code) or received. When a packet is received, it is | physical-layer code) or received. When a packet is received, it is | |||
| assumed that this packet is not corrupted (i.e., in our case, the bit-erro | assumed that this packet is not corrupted (i.e., in our case, the bit erro | |||
| rs, | rs, | |||
| if any, are fixed by the physical-layer code and therefore hidden to | if any, are fixed by the physical-layer code and are therefore hidden to | |||
| the upper layers). </t> | the upper layers). </dd> | |||
| <dt pn="section-2.1-2.51">Repair Symbol:</dt> | ||||
| <t hangText="Repair Symbol:"> Encoding symbol that is not a source symbol. | <dd pn="section-2.1-2.52"> Encoding symbol that is not a source symbol | |||
| </t> | .</dd> | |||
| <dt pn="section-2.1-2.53">Source Block:</dt> | ||||
| <t hangText="Source Block:"> Group of ADUs that are to be FEC protected as | <dd pn="section-2.1-2.54"> Group of ADUs that are to be FEC protected | |||
| a single | as a single | |||
| block. | block. | |||
| This notion is restricted to Block FEC Codes.</t> | This notion is restricted to Block FEC codes.</dd> | |||
| <dt pn="section-2.1-2.55">Source Symbol:</dt> | ||||
| <t hangText="Source Symbol:"> Unit of data used during the encoding proces | <dd pn="section-2.1-2.56"> Unit of data used during the encoding proce | |||
| s.</t> | ss.</dd> | |||
| <dt pn="section-2.1-2.57">Systematic Code:</dt> | ||||
| <t hangText="Systematic Code:"> FEC code in which the source symbols are p | <dd pn="section-2.1-2.58"> FEC code in which the source symbols are pa | |||
| art of the | rt of the | |||
| encoding symbols.</t> | encoding symbols.</dd> | |||
| </list></t> | </dl> | |||
| </section> | ||||
| <t> | <section numbered="true" toc="include" removeInRFC="false" pn="section-2.2 | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | "> | |||
| NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | <name slugifiedName="name-requirements-language">Requirements Language</ | |||
| "MAY", and "OPTIONAL" in this document are to be interpreted as | name> | |||
| described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | <t pn="section-2.2-1"> | |||
| when, and only when, they appear in all capitals, as shown here. | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
| </t> | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | |||
| ", | ||||
| "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | ||||
| "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
| "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
| be | ||||
| interpreted as described in BCP 14 <xref target="RFC2119" format="default" s | ||||
| ectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="defa | ||||
| ult" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they app | ||||
| ear in all capitals, as | ||||
| shown here. | ||||
| </t> | ||||
| </section> | ||||
| </section> | </section> | |||
| <section anchor="ArchitectureOverview" numbered="true" toc="include" removeI | ||||
| <section anchor="ArchitectureOverview" title="Summary of Architecture Overvi | nRFC="false" pn="section-3"> | |||
| ew"> | <name slugifiedName="name-summary-of-architecture-ove">Summary of Architec | |||
| <!-- ====================== --> | ture Overview</name> | |||
| <t pn="section-3-1"> | ||||
| <t> | The architecture of <xref target="RFC6363" format="default" sectionFormat="of" s | |||
| The architecture of <xref target="RFC6363"/>, Section 3, equally applies to this | ection="3" derivedLink="https://rfc-editor.org/rfc/rfc6363#section-3" derivedCon | |||
| tent="RFC6363"/> equally applies to this | ||||
| FECFRAME extension and is not repeated here. | FECFRAME extension and is not repeated here. | |||
| However, we provide hereafter a quick summary to facilitate the understanding of this | However, this section includes a quick summary to facilitate the understanding o f this | |||
| document to readers not familiar with the concepts and terminology. | document to readers not familiar with the concepts and terminology. | |||
| </t> | </t> | |||
| <figure anchor="fig_archi" align="left" suppress-title="false" pn="figure- | ||||
| <figure anchor="fig_archi" title="FECFRAME architecture at a sender."> | 1"> | |||
| <artwork><![CDATA[ | <name slugifiedName="name-fecframe-architecture-at-a-">FECFRAME Architec | |||
| ture at a Sender</name> | ||||
| <artwork name="" type="" align="left" alt="" pn="section-3-2.1"> | ||||
| +----------------------+ | +----------------------+ | |||
| | Application | | | Application | | |||
| +----------------------+ | +----------------------+ | |||
| | | | | |||
| | (1) Application Data Units (ADUs) | | (1) Application Data Units (ADUs) | |||
| | | | | |||
| v | v | |||
| +----------------------+ +----------------+ | +----------------------+ +----------------+ | |||
| | FEC Framework | | | | | FEC Framework | | | | |||
| | |-------------------------->| FEC Scheme | | | |-------------------------->| FEC Scheme | | |||
| |(2) Construct source |(3) Source Block | | | |(2) Construct source |(3) Source Block | | | |||
| | blocks | |(4) FEC Encoding| | | blocks | |(4) FEC Encoding| | |||
| |(6) Construct FEC |<--------------------------| | | |(6) Construct FEC |<--------------------------| | | |||
| | Source and Repair | | | | | Source and Repair | | | | |||
| | Packets |(5) Explicit Source FEC | | | | Packets |(5) Explicit Source FEC | | | |||
| +----------------------+ Payload IDs +----------------+ | +----------------------+ Payload IDs +----------------+ | |||
| | Repair FEC Payload IDs | | Repair FEC Payload IDs | |||
| | Repair symbols | | Repair symbols | |||
| | | | | |||
| |(7) FEC Source and Repair Packets | |(7) FEC Source and Repair Packets | |||
| v | v | |||
| +----------------------+ | +----------------------+ | |||
| | Transport Protocol | | | Transport Protocol | | |||
| +----------------------+ | +----------------------+ | |||
| ]]></artwork> | </artwork> | |||
| </figure> | </figure> | |||
| <t pn="section-3-3"> | ||||
| <t> | The FECFRAME architecture is illustrated in <xref target="fig_archi" format="def | |||
| The FECFRAME architecture is illustrated in <xref target="fig_archi"/> from the | ault" sectionFormat="of" derivedContent="Figure 1"/> for a block FEC scheme from | |||
| sender's | the sender's | |||
| point of view, in case of a block FEC Scheme. | point of view. | |||
| It shows an application generating an ADU flow (other flows, from other applicat | It shows an application generating an ADU flow (other flows from other applicati | |||
| ions, may co-exist). | ons may coexist). | |||
| These ADUs, of variable size, must be somehow mapped to source symbols of fixed | These ADUs of variable size must be somehow mapped to source symbols of a fixed | |||
| size (this fixed size | size (this fixed size | |||
| is a requirement of all FEC Schemes that comes from the way mathematical operati | is a requirement of all FEC schemes, which comes from the way mathematical | |||
| ons are applied to symbols content). | operations are applied to the symbols' content). | |||
| This is the goal of an ADU-to-symbols mapping process that is FEC-Scheme specifi | This is the goal of an ADU-to-symbols mapping process that is FEC scheme specifi | |||
| c (see below). | c (see below). | |||
| Once the source block is built, taking into account both the FEC Scheme constrai | Once the source block is built, taking into account both the FEC scheme constrai | |||
| nts (e.g., in terms | nts (e.g., in terms | |||
| of maximum source block size) and the application's flow constraints (e.g., in t erms of real-time constraints), | of maximum source block size) and the application's flow constraints (e.g., in t erms of real-time constraints), | |||
| the associated source symbols are handed to the FEC Scheme in order to produce a n appropriate number | the associated source symbols are handed to the FEC scheme in order to produce a n appropriate number | |||
| of repair symbols. | of repair symbols. | |||
| FEC Source Packets (containing ADUs) and FEC Repair Packets (containing one or m ore repair symbols each) | FEC Source Packets (containing ADUs) and FEC Repair Packets (containing one or m ore repair symbols each) | |||
| are then generated and sent using an appropriate transport protocol (more precis | are then generated and sent using an appropriate transport protocol (more | |||
| ely <xref target="RFC6363"/>, Section 7, requires a | precisely, <xref target="RFC6363" format="default" sectionFormat="of" section="7 | |||
| transport protocol providing an unreliable datagram service, such as UDP<!-- or | " derivedLink="https://rfc-editor.org/rfc/rfc6363#section-7" derivedContent="RFC | |||
| DCCP-->). | 6363"/> requires a | |||
| In practice FEC Source Packets may be passed to the transport layer as soon as a | transport protocol providing an unreliable datagram service, such as UDP). | |||
| vailable, without having to wait for | In practice, FEC Source Packets may be passed to the transport layer as soon | |||
| as available without having to wait for | ||||
| FEC encoding to take place. | FEC encoding to take place. | |||
| In that case a copy of the associated source symbols needs to be kept within FEC FRAME for future | In that case, a copy of the associated source symbols needs to be kept within FE CFRAME for future | |||
| FEC encoding purposes. | FEC encoding purposes. | |||
| </t> | </t> | |||
| <t pn="section-3-4"> | ||||
| <t> | At a receiver (not shown), FECFRAME processing operates in a similar way, | |||
| At a receiver (not shown), FECFRAME processing operates in a similar way, taking | taking as input the incoming FEC Source and Repair Packets received. In case | |||
| as input the incoming | of FEC Source Packet losses, the FEC decoding of the associated block may | |||
| FEC Source and Repair Packets received. | recover all (in case of successful decoding) or a subset that is potentially emp | |||
| In case of FEC Source Packet losses, the FEC decoding of the associated block ma | ty | |||
| y recover all (in case | (if decoding fails) of the missing source symbols. After source-symbol-to-ADU | |||
| of successful decoding) or a subset potentially empty (otherwise) of the missing | mapping, when lost ADUs are recovered, they are then assigned to their | |||
| source symbols. | ||||
| After source-symbol-to-ADU mapping, when lost ADUs are recovered, they are then | ||||
| assigned to their | ||||
| respective flow (see below). | respective flow (see below). | |||
| ADUs are returned to the application(s), either in their initial transmission or | ||||
| der (in that case ADUs | ||||
| received after an erased one will be delayed until FEC decoding has taken place) | ||||
| or not (in that case | ||||
| each ADU is returned as soon as it is received or recovered), depending on the a | ||||
| pplication requirements. | ||||
| </t> | ||||
| <t> | ADUs are returned to the application(s), either in their initial transmission | |||
| FECFRAME features two subtle mechanisms: | order (in which case all ADUs received after a lost ADU will be delayed until | |||
| <list style="symbols"> | FEC decoding has taken place) or not (in which case each ADU is returned as | |||
| <t> ADUs-to-source-symbols mapping: | soon as it is received or recovered), depending on the application | |||
| in order to manage variable size ADUs, FECFRAME and FEC Schemes c | requirements. | |||
| an use small, fixed size | </t> | |||
| <t pn="section-3-5"> | ||||
| FECFRAME features two subtle mechanisms whose details are FEC scheme dependent: | ||||
| </t> | ||||
| <ul spacing="normal" bare="false" empty="false" pn="section-3-6"> | ||||
| <li pn="section-3-6.1"> ADUs-to-source-symbols mapping: | ||||
| in order to manage variable size ADUs, FECFRAME and FEC schemes c | ||||
| an use small, fixed-size | ||||
| symbols and create a mapping between ADUs and symbols. | symbols and create a mapping between ADUs and symbols. | |||
| To each ADU this mechanism prepends a length field (plus a flow i | The mapping details are | |||
| dentifier, see below) and | FEC scheme dependent and must be defined in the associated document. | |||
| For instance, with certain FEC schemes, to each ADU, this mechanism prepen | ||||
| ds a length field (plus a flow identifier; see below) and | ||||
| pads the result to a multiple of the symbol size. | pads the result to a multiple of the symbol size. | |||
| A small ADU may be mapped to a single source symbol while a large one may be mapped to | A small ADU may be mapped to a single source symbol, while a larg e one may be mapped to | |||
| multiple symbols. | multiple symbols. | |||
| The mapping details are FEC-Scheme-dependent and must be defined | </li> | |||
| in the associated document; | <li pn="section-3-6.2"> Assignment of decoded ADUs to flows in multi-flo | |||
| </t> | w configurations: | |||
| <t> Assignment of decoded ADUs to flows in multi-flow configurations: | when multiple flows are multiplexed over the same FECFRAME instance, a | |||
| when multiple flows are multiplexed over the same FECFRAME instan | problem is to assign a decoded ADU to the right flow (UDP port numbers | |||
| ce, a problem is to assign | and IP addresses traditionally used to map incoming ADUs to flows are | |||
| a decoded ADU to the right flow (UDP port numbers and IP addresse | not recovered during FEC decoding). The mapping details are FEC | |||
| s traditionally used to map | scheme dependent and must be | |||
| incoming ADUs to flows are not recovered during FEC decoding). | defined in the associated document. For instance, with certain FEC | |||
| To make it possible, at the FECFRAME sending instance, each ADU i | schemes, to make it possible, at the | |||
| s prepended with a flow | FECFRAME sending instance, each ADU is prepended with a flow | |||
| identifier (1 byte) during the ADU-to-source-symbols mapping (see | identifier (1 byte) during the ADU-to-source-symbols mapping (see | |||
| above). | above). The flow identifiers are also shared between all FECFRAME | |||
| The flow identifiers are also shared between all FECFRAME instanc | instances as part of the FEC Framework Configuration Information. | |||
| es as part of the FEC Framework | ||||
| Configuration Information. | ||||
| This (flow identifier + length + application payload + padding), | ||||
| called ADUI, is then FEC protected. | ||||
| Therefore a decoded ADUI contains enough information to assign th | ||||
| e ADU to the right flow. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | The ADU Information (ADUI), which includes the flow identifier, length, | |||
| application payload, and padding, is then FEC protected. Therefore, a | ||||
| decoded ADUI contains enough information to assign the ADU to the right | ||||
| flow. Note that a FEC scheme may also be restricted to the particular | ||||
| case of a single flow over a FECFRAME instance; that would make | ||||
| the above mechanism pointless. | ||||
| </li> | ||||
| </ul> | ||||
| <t pn="section-3-7"> | ||||
| A few aspects are not covered by FECFRAME, namely: | A few aspects are not covered by FECFRAME, namely: | |||
| <list style="symbols"> | ||||
| <t> <xref target="RFC6363"/> section 8 does not detail any congestion con | ||||
| trol mechanism, | ||||
| but only provides high level normative requirements; </t> | ||||
| <t> the possibility of having feedbacks from receiver(s) is considered ou | ||||
| t of scope, although | ||||
| such a mechanism may exist within the application (e.g., through | ||||
| RTCP control messages); </t> | ||||
| <t> flow adaptation at a FECFRAME sender (e.g., how to set the FEC code r | ||||
| ate based on transmission | ||||
| conditions) is not detailed, but it needs to comply with the cong | ||||
| estion control normative | ||||
| requirements (see above). </t> | ||||
| </list> | ||||
| </t> | </t> | |||
| <ul spacing="normal" bare="false" empty="false" pn="section-3-8"> | ||||
| <li pn="section-3-8.1"> | ||||
| <xref target="RFC6363" format="default" sectionFormat="of" section="8" | ||||
| derivedLink="https://rfc-editor.org/rfc/rfc6363#section-8" derivedContent="RFC6 | ||||
| 363"/> does not detail any congestion control mechanisms and | ||||
| only provides high-level normative requirements. </li> | ||||
| <li pn="section-3-8.2"> The possibility of having feedback from receiver | ||||
| (s) is considered | ||||
| out of scope, although such a mechanism may exist within the | ||||
| application (e.g., through RTP Control Protocol (RTCP) | ||||
| messages). </li> | ||||
| <li pn="section-3-8.3"> Flow adaptation at a FECFRAME sender (e.g., how | ||||
| to set the FEC | ||||
| code rate based on transmission conditions) is not detailed, but it | ||||
| needs to comply with the congestion control normative requirements | ||||
| (see above). </li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-4"> | ||||
| <section title="Procedural Overview"> | <name slugifiedName="name-procedural-overview">Procedural Overview</name> | |||
| <!-- ====================== --> | <section anchor="generalProceduralOverview" numbered="true" toc="include" | |||
| <section anchor="generalProceduralOverview" title="General"> | removeInRFC="false" pn="section-4.1"> | |||
| <!-- ====================== --> | <name slugifiedName="name-general">General</name> | |||
| <t pn="section-4.1-1"> | ||||
| <t> | The general considerations of <xref target="RFC6363" format="default" sectionFor | |||
| The general considerations of <xref target="RFC6363"/>, Section 4.1, that | mat="of" section="4.1" derivedLink="https://rfc-editor.org/rfc/rfc6363#section-4 | |||
| .1" derivedContent="RFC6363"/> that | ||||
| are specific to block FEC codes are not repeated here. | are specific to block FEC codes are not repeated here. | |||
| </t> | </t> | |||
| <t pn="section-4.1-2"> | ||||
| <t> | With a Sliding Window FEC code, the FEC Source Packet <bcp14>MUST</bcp14> | |||
| With a Sliding Window FEC Code, the FEC Source Packet MUST | ||||
| contain information to identify the position occupied by | contain information to identify the position occupied by | |||
| the ADU within the source flow, in terms specific to the | the ADU within the source flow in terms specific to the | |||
| FEC Scheme. | FEC scheme. | |||
| This information is known as the Source FEC Payload ID, and | This information is known as the Source FEC Payload ID, and | |||
| the FEC Scheme is responsible for defining and interpreting it. | the FEC scheme is responsible for defining and interpreting it. | |||
| <!-- | ||||
| This information MAY be | ||||
| encoded into a specific field within the FEC source packet format | ||||
| defined in this specification, called the Explicit Source FEC Payload | ||||
| ID field. The exact contents and format of the Explicit Source FEC | ||||
| Payload ID field are defined by the FEC schemes. Alternatively, the | ||||
| FEC Scheme MAY define how the Source FEC Payload ID is derived from | ||||
| other fields within the source packets. | ||||
| </t> | </t> | |||
| <t pn="section-4.1-3"> | ||||
| <t> | With a Sliding Window FEC code, the FEC Repair | |||
| With a Sliding Window FEC Code, the FEC Repair | Packets <bcp14>MUST</bcp14> contain information that identifies the relationship | |||
| Packets MUST contain information that identifies the relationship | ||||
| between the contained repair payloads and the original source symbols | between the contained repair payloads and the original source symbols | |||
| used during encoding. | used during encoding. | |||
| This information is known as the Repair FEC Payload ID, and | This information is known as the Repair FEC Payload ID, and | |||
| the FEC Scheme is responsible for defining and interpreting it. | the FEC scheme is responsible for defining and interpreting it. | |||
| </t> | </t> | |||
| <t pn="section-4.1-4"> | ||||
| <t> | The sender operation (<xref target="RFC6363" format="default" sectionFormat="com | |||
| The Sender Operation (<xref target="RFC6363"/>, Section 4.2.) | ma" section="4.2" derivedLink="https://rfc-editor.org/rfc/rfc6363#section-4.2" d | |||
| and Receiver Operation (<xref target="RFC6363"/>, Section 4.3) are | erivedContent="RFC6363"/>) | |||
| both specific to block FEC codes and therefore omitted below. | and receiver operation (<xref target="RFC6363" format="default" sectionFormat="c | |||
| omma" section="4.3" derivedLink="https://rfc-editor.org/rfc/rfc6363#section-4.3" | ||||
| derivedContent="RFC6363"/>) are | ||||
| both specific to block FEC codes and are therefore omitted below. | ||||
| The following two sections detail similar operations for Sliding Window | The following two sections detail similar operations for Sliding Window | |||
| FEC codes. | FEC codes. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="senderoperation-convolutional" numbered="true" toc="inclu | ||||
| <section anchor="senderoperation-convolutional" title="Sender Operation with Sli | de" removeInRFC="false" pn="section-4.2"> | |||
| ding Window FEC Codes"> | <name slugifiedName="name-sender-operation-with-slidi">Sender Operation | |||
| <!-- ====================== --> | with Sliding Window FEC Codes</name> | |||
| <t pn="section-4.2-1"> | ||||
| <t> | With a Sliding Window FEC scheme, the following operations, illustrated in | |||
| With a Sliding Window FEC Scheme, the following operations, illustrated in | <xref target="senderfigure-convolutional" format="default" sectionFormat="of" de | |||
| Figure <xref target="senderfigure-convolutional" format="counter"></xref> | rivedContent="Figure 2"/> | |||
| for the generic case (non-RTP repair flows), and in | for the generic case (non-RTP repair flows) and in | |||
| Figure <xref target="senderfigurertp-convolutional" format="counter"></xref> | <xref target="senderfigurertp-convolutional" format="default" sectionFormat="of" | |||
| derivedContent="Figure 3"/> | ||||
| for the case of RTP repair flows, describe a possible way to generate compliant source and repair flows: | for the case of RTP repair flows, describe a possible way to generate compliant source and repair flows: | |||
| <list style="numbers"> | </t> | |||
| <t>A new ADU is provided by the application.</t> | <ol spacing="normal" type="1" start="1" pn="section-4.2-2"> | |||
| <li pn="section-4.2-2.1" derivedCounter="1.">A new ADU is provided by | ||||
| <t>The FEC Framework communicates this ADU to the FEC Scheme.</t> | the application.</li> | |||
| <li pn="section-4.2-2.2" derivedCounter="2.">The FEC Framework communi | ||||
| <t>The sliding encoding window is updated by the FEC Scheme. | cates this ADU to the FEC scheme.</li> | |||
| The ADU-to-source-symbols mapping as well as the encoding window management | <li pn="section-4.2-2.3" derivedCounter="3.">The sliding encoding wind | |||
| details | ow is updated by the FEC scheme. | |||
| are both the responsibility of the FEC Scheme and MUST be detailed there. | The ADU-to-source-symbol mapping as well as the encoding window management d | |||
| <xref target="codingwindow-possibleManagement"></xref> provides non-normativ | etails | |||
| e hints about what | are both the responsibility of the FEC scheme and <bcp14>MUST</bcp14> be det | |||
| FEC Scheme designers need to consider;</t> | ailed there. | |||
| <xref target="codingwindow-possibleManagement" format="default" sectionForma | ||||
| <t>The Source FEC Payload ID information of the source packet is | t="of" derivedContent="Appendix A"/> provides non-normative hints about what | |||
| determined by the FEC Scheme. If required by the FEC Scheme, the | FEC scheme designers need to consider.</li> | |||
| <li pn="section-4.2-2.4" derivedCounter="4.">The Source FEC Payload ID | ||||
| information of the source packet is | ||||
| determined by the FEC scheme. If required by the FEC scheme, the | ||||
| Source FEC Payload ID is encoded into the Explicit Source FEC | Source FEC Payload ID is encoded into the Explicit Source FEC | |||
| Payload ID field and returned to the FEC Framework.</t> | Payload ID field and returned to the FEC Framework.</li> | |||
| <li pn="section-4.2-2.5" derivedCounter="5.">The FEC Framework constru | ||||
| <t>The FEC Framework constructs the FEC Source Packet according to | cts the FEC Source Packet according to | |||
| <!-- REMOVED: <xref target="sourcepackets"></xref>, --> | Figure 6 in <xref target="RFC6363" format="default" sectionFormat="of" derivedCo | |||
| <xref target="RFC6363"></xref> Figure 6, | ntent="RFC6363"/>, | |||
| using the Explicit Source FEC Payload ID | using the Explicit Source FEC Payload ID | |||
| provided by the FEC Scheme if applicable.</t> | provided by the FEC scheme if applicable.</li> | |||
| <li pn="section-4.2-2.6" derivedCounter="6.">The FEC Source Packet is | ||||
| <t>The FEC Source Packet is sent using normal transport-layer procedures. | sent using normal transport-layer procedures. | |||
| This packet is sent using | This packet is sent using | |||
| the same ADU flow identification information as would have been | the same ADU flow identification information as would have been | |||
| used for the original source packet if the FEC Framework were not | used for the original source packet if the FEC Framework were not | |||
| present (e.g., the source and destination addresses and UDP port numbers on the IP datagram carrying the | present (e.g., the source and destination addresses and UDP port numbers on the IP datagram carrying the | |||
| source packet will be the same whether or not the FEC Framework is applied). | source packet will be the same whether or not the FEC Framework is applied). | |||
| </t> | </li> | |||
| <li pn="section-4.2-2.7" derivedCounter="7.">When the FEC Framework ne | ||||
| <t>When the FEC Framework needs to send one or several FEC Repair Packets (e | eds to send one or several FEC Repair Packets (e.g., according | |||
| .g., according | to the target code rate), it asks the FEC scheme to create one | |||
| to the target Code Rate), it asks the FEC Scheme to create one | ||||
| or several repair packet payloads from the current sliding encoding window | or several repair packet payloads from the current sliding encoding window | |||
| along with their Repair FEC Payload ID.</t> | along with their Repair FEC Payload ID.</li> | |||
| <li pn="section-4.2-2.8" derivedCounter="8.">The Repair FEC Payload ID | ||||
| <t>The Repair FEC Payload IDs and repair packet payloads are provided back b | s and repair packet payloads are provided back by the | |||
| y the | FEC scheme to the FEC Framework.</li> | |||
| FEC Scheme to the FEC Framework.</t> | <li pn="section-4.2-2.9" derivedCounter="9.">The FEC Framework constru | |||
| cts FEC Repair Packets | ||||
| <t>The FEC Framework constructs FEC Repair Packets | according to Figure 7 in <xref target="RFC6363" format="default" sectionForm | |||
| according to <xref target="RFC6363"></xref> Figure 7, <!-- REMOVED: <xref ta | at="of" derivedContent="RFC6363"/>, | |||
| rget="repairpackets"></xref>, --> | using the FEC Payload IDs and repair packet payloads provided by the FEC sch | |||
| using the FEC Payload IDs and repair packet payloads provided by the FEC Sch | eme.</li> | |||
| eme.</t> | <li pn="section-4.2-2.10" derivedCounter="10.">The FEC Repair Packets | |||
| are sent using normal transport-layer procedures. | ||||
| <t>The FEC Repair Packets are sent using normal transport-layer procedures. | ||||
| The port(s) and multicast group(s) to be used for FEC Repair Packets are def ined | The port(s) and multicast group(s) to be used for FEC Repair Packets are def ined | |||
| in the FEC Framework Configuration Information.</t> | in the FEC Framework Configuration Information.</li> | |||
| </list></t> | </ol> | |||
| <figure anchor="senderfigure-convolutional" align="left" suppress-title= | ||||
| <figure align="center" anchor="senderfigure-convolutional" title="Sender | "false" pn="figure-2"> | |||
| Operation with Sliding Window FEC Codes"> | <name slugifiedName="name-sender-operation-with-slidin">Sender Operati | |||
| <artwork><![CDATA[ | on with Sliding Window FEC Codes</name> | |||
| <artwork name="" type="" align="left" alt="" pn="section-4.2-3.1"> | ||||
| +----------------------+ | +----------------------+ | |||
| | Application | | | Application | | |||
| +----------------------+ | +----------------------+ | |||
| | | | | |||
| | (1) New Application Data Unit (ADU) | | (1) New Application Data Unit (ADU) | |||
| v | v | |||
| +---------------------+ +----------------+ | +---------------------+ +----------------+ | |||
| | FEC Framework | | FEC Scheme | | | FEC Framework | | FEC Scheme | | |||
| | |-------------------------->| | | | |-------------------------->| | | |||
| | | (2) New ADU |(3) Update of | | | | (2) New ADU |(3) Update of | | |||
| | | | encoding | | | | | encoding | | |||
| | |<--------------------------| window | | | |<--------------------------| window | | |||
| |(5) Construct FEC | (4) Explicit Source | | | |(5) Construct FEC | (4) Explicit Source | | | |||
| | Source Packet | FEC Payload ID(s) |(7) FEC | | | Source Packet | FEC Payload ID(s) |(7) FEC | | |||
| | |<--------------------------| encoding | | | |<--------------------------| encoding | | |||
| |(9) Construct FEC | (8) Repair FEC Payload ID | | | |(9) Construct FEC | (8) Repair FEC Payload ID | | | |||
| | Repair Packet(s) | + Repair symbol(s) +----------------+ | | Repair Packet(s) | + Repair symbol(s) +----------------+ | |||
| +---------------------+ | +---------------------+ | |||
| | | | | |||
| | (6) FEC Source Packet | | (6) FEC Source Packet | |||
| | (10) FEC Repair Packets | | (10) FEC Repair Packets | |||
| v | v | |||
| +----------------------+ | +----------------------+ | |||
| | Transport Protocol | | | Transport Protocol | | |||
| +----------------------+ | +----------------------+ | |||
| ]]></artwork> | </artwork> | |||
| </figure> | </figure> | |||
| <figure anchor="senderfigurertp-convolutional" align="left" suppress-tit | ||||
| <figure align="center" anchor="senderfigurertp-convolutional" title="Sen | le="false" pn="figure-3"> | |||
| der Operation with Sliding Window FEC Codes and RTP Repair Flows"> | <name slugifiedName="name-sender-operation-with-sliding">Sender Operat | |||
| <artwork><![CDATA[ | ion with Sliding Window FEC Codes and RTP Repair Flows</name> | |||
| <artwork name="" type="" align="left" alt="" pn="section-4.2-4.1"> | ||||
| +----------------------+ | +----------------------+ | |||
| | Application | | | Application | | |||
| +----------------------+ | +----------------------+ | |||
| | | | | |||
| | (1) New Application Data Unit (ADU) | | (1) New Application Data Unit (ADU) | |||
| v | v | |||
| +---------------------+ +----------------+ | +---------------------+ +----------------+ | |||
| | FEC Framework | | FEC Scheme | | | FEC Framework | | FEC Scheme | | |||
| | |-------------------------->| | | | |-------------------------->| | | |||
| | | (2) New ADU |(3) Update of | | | | (2) New ADU |(3) Update of | | |||
| | | | encoding | | | | | encoding | | |||
| | |<--------------------------| window | | | |<--------------------------| window | | |||
| |(5) Construct FEC | (4) Explicit Source | | | |(5) Construct FEC | (4) Explicit Source | | | |||
| | Source Packet | FEC Payload ID(s) |(7) FEC | | | Source Packet | FEC Payload ID(s) |(7) FEC | | |||
| | |<--------------------------| encoding | | | |<--------------------------| encoding | | |||
| |(9) Construct FEC | (8) Repair FEC Payload ID | | | |(9) Construct FEC | (8) Repair FEC Payload ID | | | |||
| | Repair Packet(s) | + Repair symbol(s) +----------------+ | | Repair Packet(s) | + Repair symbol(s) +----------------+ | |||
| +---------------------+ | +---------------------+ | |||
| | | | | | | |||
| |(6) Source |(10) Repair payloads | |(6) Source |(10) Repair payloads | |||
| | packets | | | packets | | |||
| | + -- -- -- -- -+ | | + -- -- -- -- -+ | |||
| | | RTP | | | | RTP | | |||
| | +-- -- -- -- --+ | | +-- -- -- -- --+ | |||
| v v | v v | |||
| +----------------------+ | +----------------------+ | |||
| | Transport Protocol | | | Transport Protocol | | |||
| +----------------------+ | +----------------------+ | |||
| ]]></artwork> | </artwork> | |||
| </figure> | </figure> | |||
| </section> | ||||
| </section> | <section anchor="receiveroperation-convolutional" numbered="true" toc="inc | |||
| lude" removeInRFC="false" pn="section-4.3"> | ||||
| <section anchor="receiveroperation-convolutional" title="Receiver Operation with | <name slugifiedName="name-receiver-operation-with-sli">Receiver Operatio | |||
| Sliding Window FEC Codes"> | n with Sliding Window FEC Codes</name> | |||
| <!-- ====================== --> | <t pn="section-4.3-1"> | |||
| With a Sliding Window FEC scheme, the following operations are illustrated in | ||||
| <t> | <xref target="receiverfigure" format="default" sectionFormat="of" derivedContent | |||
| With a Sliding Window FEC Scheme, the following operations, illustrated in | ="Figure 4"/> | |||
| Figure <xref target="receiverfigure" format="counter"/> | for the generic case (non-RTP repair flows) and in | |||
| for the generic case (non-RTP repair flows), and in | <xref target="receiverfigurertp" format="default" sectionFormat="of" derivedCont | |||
| Figure <xref target="receiverfigurertp" format="counter"></xref> | ent="Figure 5"/> | |||
| for the case of RTP repair flows. | for the case of RTP repair flows. | |||
| The only differences with respect to block FEC codes lie in steps (4) and (5). | The only differences with respect to block FEC codes lie in steps (4) and (5). | |||
| Therefore this section does not repeat the other steps of | Therefore, this section does not repeat the other steps of | |||
| <xref target="RFC6363"/>, Section 4.3, "Receiver Operation". | <xref target="RFC6363" format="default" sectionFormat="of" section="4.3" derived | |||
| Link="https://rfc-editor.org/rfc/rfc6363#section-4.3" derivedContent="RFC6363"/> | ||||
| ("Receiver Operation"). | ||||
| The new steps (4) and (5) are: | The new steps (4) and (5) are: | |||
| <!-- <list style="empty"> --> | </t> | |||
| <list hangIndent="4" style="hanging"> | <ol type="1" start="4" spacing="normal" pn="section-4.3-2"> | |||
| <t hangText="4."> The FEC Scheme uses the received FEC Payload IDs (and d | <li pn="section-4.3-2.1" derivedCounter="4."> The FEC scheme uses the | |||
| erived | received FEC Payload IDs (and derived | |||
| FEC Source Payload IDs when the Explicit Source FEC Payload ID field is n ot used) | FEC Source Payload IDs when the Explicit Source FEC Payload ID field is n ot used) | |||
| to insert source and repair packets into the decoding window in the right way. | to insert source and repair packets into the decoding window in the right way. | |||
| If at least one source packet is missing and at least one repair packet | If at least one source packet is missing and at least one repair packet | |||
| has been received, then FEC decoding is attempted to recover missing sou | has been received, then FEC decoding is attempted to recover the missing | |||
| rce payloads. | source payloads. | |||
| The FEC Scheme determines whether source packets have been lost and wheth | The FEC scheme determines whether source packets have been lost and wheth | |||
| er | er | |||
| enough repair packets have been received to decode any or all of the miss ing | enough repair packets have been received to decode any or all of the miss ing | |||
| source payloads.</t> | source payloads.</li> | |||
| <li pn="section-4.3-2.2" derivedCounter="5."> The FEC scheme returns t | ||||
| <t hangText="5."> The FEC Scheme returns the received and decoded ADUs to | he received and decoded ADUs to the | |||
| the | ||||
| FEC Framework, along with indications of any ADUs that were missing and c ould | FEC Framework, along with indications of any ADUs that were missing and c ould | |||
| not be decoded.</t> | not be decoded.</li> | |||
| </list> | </ol> | |||
| </t> | <figure anchor="receiverfigure" align="left" suppress-title="false" pn=" | |||
| figure-4"> | ||||
| <figure align="center" anchor="receiverfigure" | <name slugifiedName="name-receiver-operation-with-slid">Receiver Opera | |||
| title="Receiver Operation with Sliding Window FEC Codes"> | tion with Sliding Window FEC Codes</name> | |||
| <preamble></preamble> | <artwork name="" type="" align="left" alt="" pn="section-4.3-3.1"> | |||
| <artwork><![CDATA[ | ||||
| +----------------------+ | +----------------------+ | |||
| | Application | | | Application | | |||
| +----------------------+ | +----------------------+ | |||
| ^ | ^ | |||
| |(6) ADUs | |(6) ADUs | |||
| | | | | |||
| +----------------------+ +----------------+ | +----------------------+ +----------------+ | |||
| | FEC Framework | | FEC Scheme | | | FEC Framework | | FEC Scheme | | |||
| | |<--------------------------| | | | |<--------------------------| | | |||
| |(2)Extract FEC Payload|(5) ADUs |(4) FEC Decoding | |(2)Extract FEC Payload|(5) ADUs |(4) FEC Decoding| | |||
| | IDs and pass IDs & |-------------------------->| | | | IDs and pass IDs & |-------------------------->| | | |||
| | payloads to FEC |(3) Explicit Source FEC +----------------+ | | payloads to FEC |(3) Explicit Source FEC +----------------+ | |||
| | scheme | Payload IDs | | scheme | Payload IDs | |||
| +----------------------+ Repair FEC Payload IDs | +----------------------+ Repair FEC Payload IDs | |||
| ^ Source payloads | ^ Source payloads | |||
| | Repair payloads | | Repair payloads | |||
| |(1) FEC Source | |(1) FEC Source | |||
| | and Repair Packets | | and Repair Packets | |||
| +----------------------+ | +----------------------+ | |||
| | Transport Protocol | | | Transport Protocol | | |||
| +----------------------+ | +----------------------+ | |||
| ]]></artwork> | </artwork> | |||
| </figure> | </figure> | |||
| <figure anchor="receiverfigurertp" align="left" suppress-title="false" p | ||||
| <figure align="center" anchor="receiverfigurertp" | n="figure-5"> | |||
| title="Receiver Operation with Sliding Window FEC Codes and RTP | <name slugifiedName="name-receiver-operation-with-slidi">Receiver Oper | |||
| Repair Flows"> | ation with Sliding Window FEC Codes and RTP Repair Flows</name> | |||
| <preamble></preamble> | <artwork name="" type="" align="left" alt="" pn="section-4.3-4.1"> | |||
| <artwork><![CDATA[ | ||||
| +----------------------+ | +----------------------+ | |||
| | Application | | | Application | | |||
| +----------------------+ | +----------------------+ | |||
| ^ | ^ | |||
| |(6) ADUs | |(6) ADUs | |||
| | | | | |||
| +----------------------+ +----------------+ | +----------------------+ +----------------+ | |||
| | FEC Framework | | FEC Scheme | | | FEC Framework | | FEC Scheme | | |||
| | |<--------------------------| | | | |<--------------------------| | | |||
| |(2)Extract FEC Payload|(5) ADUs |(4) FEC Decoding| | |(2)Extract FEC Payload|(5) ADUs |(4) FEC Decoding| | |||
| | IDs and pass IDs & |-------------------------->| | | | IDs and pass IDs & |-------------------------->| | | |||
| | payloads to FEC |(3) Explicit Source FEC +----------------+ | | payloads to FEC |(3) Explicit Source FEC +----------------+ | |||
| | scheme | Payload IDs | | scheme | Payload IDs | |||
| +----------------------+ Repair FEC Payload IDs | +----------------------+ Repair FEC Payload IDs | |||
| ^ ^ Source payloads | ^ ^ Source payloads | |||
| | | Repair payloads | | | Repair payloads | |||
| |Source pkts |Repair payloads | |Source pkts |Repair payloads | |||
| | | | | | | |||
| +-- |- -- -- -- -- -- -+ | +-- |- -- -- -- -- -- -+ | |||
| |RTP| | RTP Processing | | |RTP| | RTP Processing | | |||
| | | +-- -- -- --|-- -+ | | | +-- -- -- --|-- -+ | |||
| | +-- -- -- -- -- |--+ | | | +-- -- -- -- -- |--+ | | |||
| | | RTP Demux | | | | | RTP Demux | | | |||
| +-- -- -- -- -- -- -- -+ | +-- -- -- -- -- -- -- -+ | |||
| ^ | ^ | |||
| |(1) FEC Source and Repair Packets | |(1) FEC Source and Repair Packets | |||
| | | | | |||
| +----------------------+ | +----------------------+ | |||
| | Transport Protocol | | | Transport Protocol | | |||
| +----------------------+ | +----------------------+ | |||
| ]]></artwork> | </artwork> | |||
| </figure> | </figure> | |||
| </section> | ||||
| </section> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-5"> | ||||
| <section title="Protocol Specification"> | <name slugifiedName="name-protocol-specification">Protocol Specification</ | |||
| <!-- ====================== --> | name> | |||
| <section anchor="generalProtocolSpecification" title="General"> | <section anchor="generalProtocolSpecification" numbered="true" toc="includ | |||
| <!-- ====================== --> | e" removeInRFC="false" pn="section-5.1"> | |||
| <name slugifiedName="name-general-2">General</name> | ||||
| <t> | <t pn="section-5.1-1"> | |||
| This section discusses the protocol elements for the FEC Framework specific to S liding Window FEC schemes. | This section discusses the protocol elements for the FEC Framework specific to S liding Window FEC schemes. | |||
| The global formats of source data packets (i.e., <xref target="RFC6363"/>, Figur e 6) and repair data packets (i.e., <xref target="RFC6363"/>, Figures 7 and 8) r emain the same with Sliding Window FEC codes. | The global formats of source data packets (i.e., <xref target="RFC6363" format=" default" sectionFormat="of" derivedContent="RFC6363"/>, Figure 6) and repair dat a packets (i.e., <xref target="RFC6363" format="default" sectionFormat="of" deri vedContent="RFC6363"/>, Figures 7 and 8) remain the same with Sliding Window FEC codes. | |||
| They are not repeated here. | They are not repeated here. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="config" numbered="true" toc="include" removeInRFC="false" | ||||
| <section anchor="config" title="FEC Framework Configuration Information"> | pn="section-5.2"> | |||
| <!-- ====================== --> | <name slugifiedName="name-fec-framework-configuration">FEC Framework Con | |||
| figuration Information</name> | ||||
| <t> | <t pn="section-5.2-1"> | |||
| The FEC Framework Configuration Information considerations of <xref target="RFC6 | The FEC Framework Configuration Information considerations of <xref target="RFC6 | |||
| 363"/>, Section 5.5, equally applies to this | 363" format="default" sectionFormat="of" section="5.5" derivedLink="https://rfc- | |||
| FECFRAME extension and is not repeated here. | editor.org/rfc/rfc6363#section-5.5" derivedContent="RFC6363"/> equally | |||
| apply to this FECFRAME extension and are not repeated here. | ||||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="fecscheme" numbered="true" toc="include" removeInRFC="fal | ||||
| <section anchor="fecscheme" title="FEC Scheme Requirements"> | se" pn="section-5.3"> | |||
| <!-- ====================== --> | <name slugifiedName="name-fec-scheme-requirements">FEC Scheme Requiremen | |||
| ts</name> | ||||
| <t> | <t pn="section-5.3-1"> | |||
| The FEC Scheme requirements of <xref target="RFC6363"/>, Section 5.6, mostly app | The FEC scheme requirements of <xref target="RFC6363" format="default" sectionFo | |||
| ly to this | rmat="of" section="5.6" derivedLink="https://rfc-editor.org/rfc/rfc6363#section- | |||
| FECFRAME extension and are not repeated here. | 5.6" derivedContent="RFC6363"/> mostly apply to this FECFRAME extension and | |||
| An exception though is the "full specification of the FEC code", item (4), that | are not repeated here. An exception, though, is the "full specification of | |||
| is specific to block FEC codes. | the FEC code", item (4), which is specific to block FEC codes. | |||
| The following item (4-bis) applies in case of Sliding Window FEC schemes: | In case of a Sliding Window FEC scheme, then the | |||
| <list hangIndent="4" style="hanging"> | following item (4-bis) applies: | |||
| <t hangText="4-bis. A full specification of the Sliding Window FEC code"> | ||||
| <vspace blankLines="1" /> | ||||
| This specification MUST precisely define the | ||||
| valid FEC-Scheme-Specific Information values, the valid FEC | ||||
| Payload ID values, and the valid packet payload sizes (where packet | ||||
| payload refers to the space within a packet dedicated to carrying | ||||
| encoding symbols). | ||||
| <vspace blankLines="1" /> | ||||
| Furthermore, given valid values of the FEC-Scheme-Specific Information, a | ||||
| valid | ||||
| Repair FEC Payload ID value, a valid packet payload size, and | ||||
| a valid encoding window (i.e., a set of source symbols), | ||||
| the specification MUST uniquely define the values of the encoding | ||||
| symbol (or symbols) to be included in the repair packet payload with the | ||||
| given Repair FEC Payload ID value. | ||||
| <!-- | ||||
| <vspace blankLines="1" /> | ||||
| A common and simple way to specify the FEC code | ||||
| to the required level of detail is to provide a precise | ||||
| specification of an encoding algorithm that - given | ||||
| valid values of the FEC-Scheme-Specific Information, a | ||||
| valid Repair FEC Payload ID value, a valid packet payload size, | ||||
| and in case of a Block FEC Code a source block | ||||
| as input - produces the exact value of the encoding symbols as | ||||
| output. | ||||
| --> | ||||
| </t> | ||||
| </list> | ||||
| </t> | </t> | |||
| <dl newline="true" spacing="normal" indent="4" pn="section-5.3-2"> | ||||
| <t> | <dt pn="section-5.3-2.1">4-bis.</dt> | |||
| Additionally, the FEC Scheme associated to a Sliding Window FEC Code: | <dd pn="section-5.3-2.2"> | |||
| <list style="symbols"> | <t pn="section-5.3-2.2.1">A full specification of the Sliding Window | |||
| <t> MUST define the relationships between ADUs and the associated source | FEC code. | |||
| symbols (mapping);</t> | </t> | |||
| <t> MUST define the management of the encoding window that slides over th | <t pn="section-5.3-2.2.2"> | |||
| e set of ADUs. | This specification <bcp14>MUST</bcp14> precisely define the | |||
| <xref target="codingwindow-possibleManagement"/> provides non nor | valid FEC-Scheme-Specific Information values, the valid FEC | |||
| mative hints about what | Payload ID values, and the valid packet payload sizes (where "packet | |||
| FEC Scheme designers need to consider;</t> | payload" refers to the space within a packet dedicated to carrying | |||
| <t> MUST define the management of the decoding window. | encoding symbols). | |||
| This usually consists in managing a system of linear equations (in case o | </t> | |||
| f a linear FEC code);</t> | <t pn="section-5.3-2.2.3"> | |||
| </list> | Furthermore, given valid values of the FEC-Scheme-Specific Information, a | |||
| valid Repair FEC Payload ID value, a valid packet payload size, and a vali | ||||
| d | ||||
| encoding window (i.e., a set of source symbols), the specification | ||||
| <bcp14>MUST</bcp14> uniquely define the values of the encoding symbol (or | ||||
| symbols) to be included in the repair packet payload with the given Repair | ||||
| FEC Payload ID value. | ||||
| </t> | ||||
| </dd> | ||||
| </dl> | ||||
| <t pn="section-5.3-3"> | ||||
| Additionally, the FEC scheme associated with a Sliding Window FEC code: | ||||
| </t> | </t> | |||
| <ul spacing="normal" bare="false" empty="false" pn="section-5.3-4"> | ||||
| <li pn="section-5.3-4.1"> | ||||
| <bcp14>MUST</bcp14> define the relationships between ADUs and the as | ||||
| sociated source symbols (mapping).</li> | ||||
| <li pn="section-5.3-4.2"> | ||||
| <bcp14>MUST</bcp14> define the management of the encoding window tha | ||||
| t slides over the set of ADUs. | ||||
| <xref target="codingwindow-possibleManagement" format="default" s | ||||
| ectionFormat="of" derivedContent="Appendix A"/> provides non-normative hints abo | ||||
| ut what | ||||
| FEC scheme designers need to consider.</li> | ||||
| <li pn="section-5.3-4.3"> | ||||
| <bcp14>MUST</bcp14> define the management of the decoding window. | ||||
| This usually consists of managing a system of linear equations (for a lin | ||||
| ear FEC code).</li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-6"> | ||||
| <section title="Feedback"> | <name slugifiedName="name-feedback">Feedback</name> | |||
| <!-- ====================== --> | <t pn="section-6-1"> | |||
| The discussion in <xref target="RFC6363" format="default" sectionFormat="of" sec | ||||
| <t> | tion="6" derivedLink="https://rfc-editor.org/rfc/rfc6363#section-6" derivedConte | |||
| The discussion of <xref target="RFC6363"/>, Section 6, equally applies to this | nt="RFC6363"/> equally applies to this FECFRAME extension and is not repeated | |||
| FECFRAME extension and is not repeated here. | here. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="TransportProtocols" numbered="true" toc="include" removeInR | ||||
| <section anchor="TransportProtocols" title="Transport Protocols"> | FC="false" pn="section-7"> | |||
| <!-- ====================== --> | <name slugifiedName="name-transport-protocols">Transport Protocols</name> | |||
| <t pn="section-7-1"> | ||||
| <t> | The discussion in <xref target="RFC6363" format="default" sectionFormat="of" sec | |||
| The discussion of <xref target="RFC6363"/>, Section 7, equally applies to this | tion="7" derivedLink="https://rfc-editor.org/rfc/rfc6363#section-7" derivedConte | |||
| nt="RFC6363"/> equally applies to this | ||||
| FECFRAME extension and is not repeated here. | FECFRAME extension and is not repeated here. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="sec_congestion" numbered="true" toc="include" removeInRFC=" | ||||
| <section anchor="sec_congestion" title="Congestion Control"> | false" pn="section-8"> | |||
| <!-- ====================== --> | <name slugifiedName="name-congestion-control">Congestion Control</name> | |||
| <t> | <t pn="section-8-1"> | |||
| The discussion of <xref target="RFC6363"/>, Section 8, equally applies to this | The discussion in <xref target="RFC6363" format="default" sectionFormat="of" sec | |||
| tion="8" derivedLink="https://rfc-editor.org/rfc/rfc6363#section-8" derivedConte | ||||
| nt="RFC6363"/> equally applies to this | ||||
| FECFRAME extension and is not repeated here. | FECFRAME extension and is not repeated here. | |||
| </t> | </t> | |||
| </section> | ||||
| <section anchor="implementationStatus" title="Implementation Status"> | ||||
| <!-- ====================== --> | ||||
| <t> | ||||
| Editor's notes: RFC Editor, please remove this section motivated by RFC 7942 bef | ||||
| ore publishing the RFC. Thanks! | ||||
| </t> | ||||
| <t>An implementation of FECFRAME extended to Sliding Window codes exists: | ||||
| <list style="symbols"> | ||||
| <t>Organisation: Inria</t> | ||||
| <t>Description: This is an implementation of FECFRAME extended to Sliding | ||||
| Window codes and supporting the RLC FEC Scheme <xref target="RLC-ID"/>. | ||||
| It is based on: (1) a proprietary implementation of FECFRAME, made by Inr | ||||
| ia and Expway for which interoperability tests have been conducted; | ||||
| and (2) a proprietary implementation of RLC Sliding Window FEC Codes.</t> | ||||
| <t>Maturity: the basic FECFRAME maturity is "production", the FECFRAME ex | ||||
| tension maturity is "under progress".</t> | ||||
| <t>Coverage: the software implements a subset of <xref target="RFC6363"/> | ||||
| , as specialized by the 3GPP eMBMS standard <xref target="MBMSTS"/>. | ||||
| This software also covers the additional features of FECFRAME extended to | ||||
| Sliding Window codes, in particular the RLC FEC Scheme.</t> | ||||
| <t>Licensing: proprietary.</t> | ||||
| <t>Implementation experience: maximum.</t> | ||||
| <t>Information update date: March 2018.</t> | ||||
| <t>Contact: vincent.roca@inria.fr</t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-9"> | ||||
| <section title="Security Considerations"> | <name slugifiedName="name-security-considerations">Security Considerations | |||
| <!-- ====================== --> | </name> | |||
| <t pn="section-9-1"> | ||||
| <t> | This FECFRAME extension does not add any new security considerations. All the | |||
| This FECFRAME extension does not add any new security consideration. | considerations of <xref target="RFC6363" format="default" sectionFormat="of" sec | |||
| All the considerations of <xref target="RFC6363"/>, Section 9, apply to this doc | tion="9" derivedLink="https://rfc-editor.org/rfc/rfc6363#section-9" derivedConte | |||
| ument as well. | nt="RFC6363"/> apply to this document as well. However, for the sake of | |||
| However, for the sake of completeness, the following goal can be added to the li | completeness, the following goal can be added to the list provided in <xref targ | |||
| st provided in Section 9.1 "Problem Statement" of <xref target="RFC6363"/>: | et="RFC6363" format="default" sectionFormat="of" section="9.1" derivedLink="http | |||
| <list style="symbols"> | s://rfc-editor.org/rfc/rfc6363#section-9.1" derivedContent="RFC6363"/> ("Problem | |||
| <t> Attacks can try to corrupt source flows in order to modify the receiv | Statement"): | |||
| er application's behavior | ||||
| (as opposed to just denying service).</t> | ||||
| </list> | ||||
| </t> | </t> | |||
| <ul spacing="normal" bare="false" empty="false" pn="section-9-2"> | ||||
| <li pn="section-9-2.1"> Attacks can try to corrupt source flows in order | ||||
| to modify the receiver application's behavior | ||||
| (as opposed to just denying service).</li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-10"> | ||||
| <section title="Operations and Management Considerations"> | <name slugifiedName="name-operations-and-management-c">Operations and Mana | |||
| <!-- ====================== --> | gement Considerations</name> | |||
| <t> | <t pn="section-10-1"> | |||
| This FECFRAME extension does not add any new Operations and Management Considera | This FECFRAME extension does not add any new Operations and Management Considera | |||
| tion. | tions. | |||
| All the considerations of <xref target="RFC6363"/>, Section 10, apply to this do | All the considerations of <xref target="RFC6363" format="default" sectionFormat= | |||
| cument as well. | "of" section="10" derivedLink="https://rfc-editor.org/rfc/rfc6363#section-10" de | |||
| rivedContent="RFC6363"/> apply to this document as well. | ||||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="iana" numbered="true" toc="include" removeInRFC="false" pn= | ||||
| <section anchor="iana" title="IANA Considerations"> | "section-11"> | |||
| <!-- ====================== --> | <name slugifiedName="name-iana-considerations">IANA Considerations</name> | |||
| <t pn="section-11-1"> | ||||
| <t> | This document has no IANA actions. | |||
| No IANA actions are required for this document. | ||||
| </t> | </t> | |||
| <t pn="section-11-2">A FEC scheme for use with this FEC Framework is ident | ||||
| <t>A FEC Scheme for use with this FEC Framework is identified via its FEC Encodi | ified via its FEC Encoding ID. | |||
| ng ID. | ||||
| It is subject to IANA registration in the "FEC Framework (FECFRAME) FEC Encoding IDs" registry. | It is subject to IANA registration in the "FEC Framework (FECFRAME) FEC Encoding IDs" registry. | |||
| All the rules of <xref target="RFC6363"/>, Section 11, apply and are not repeate d here. | All the rules of <xref target="RFC6363" format="default" sectionFormat="of" sect ion="11" derivedLink="https://rfc-editor.org/rfc/rfc6363#section-11" derivedCont ent="RFC6363"/> apply and are not repeated here. | |||
| </t> | </t> | |||
| </section> | ||||
| <section title="Acknowledgments"> | ||||
| <!-- ====================== --> | ||||
| <t> | ||||
| The authors would like to thank Christer Holmberg, David Black, Gorry Fairhurst, | ||||
| and Emmanuel Lochin, Spencer Dawkins, Ben Campbell, Benjamin Kaduk, Eric Rescor | ||||
| la, Adam Roach, and Greg Skinner for their valuable feedback on this document. | ||||
| This document being an extension to <xref target="RFC6363"/>, the authors would | ||||
| also like to thank Mark Watson as the main author of that RFC.</t> | ||||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references title="Normative References"> | <references pn="section-12"> | |||
| <name slugifiedName="name-references">References</name> | ||||
| &rfc2119; | <references pn="section-12.1"> | |||
| &rfc8174; | <name slugifiedName="name-normative-references">Normative References</na | |||
| &rfc6363; | me> | |||
| <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 | ||||
| </references> | 119" quoteTitle="true" derivedAnchor="RFC2119"> | |||
| <front> | ||||
| <references title="Informative References"> | <title>Key words for use in RFCs to Indicate Requirement Levels</tit | |||
| le> | ||||
| &rfc5052; | <author initials="S." surname="Bradner" fullname="S. Bradner"> | |||
| &rfc6364; | <organization showOnFrontPage="true"/> | |||
| &rfc6681; | </author> | |||
| <!-- &rfc6773; --> | <date year="1997" month="March"/> | |||
| &rfc6816; | <abstract> | |||
| &rfc6865; | <t>In many standards track documents several words are used to sig | |||
| &rfc8406; | nify the requirements in the specification. These words are often capitalized. | |||
| This document defines these words as they should be interpreted in IETF document | ||||
| <reference anchor="MBMSTS" target="http://ftp.3gpp.org/specs/html-info/263 | s. This document specifies an Internet Best Current Practices for the Internet | |||
| 46.htm"> | Community, and requests discussion and suggestions for improvements.</t> | |||
| <front> | </abstract> | |||
| <title>Multimedia Broadcast/Multicast Service (MBMS); Protocols and co | </front> | |||
| decs</title> | <seriesInfo name="BCP" value="14"/> | |||
| <author> | <seriesInfo name="RFC" value="2119"/> | |||
| <organization>3GPP</organization> | <seriesInfo name="DOI" value="10.17487/RFC2119"/> | |||
| </author> | </reference> | |||
| <date month="March" year="2009" /> | <reference anchor="RFC6363" target="https://www.rfc-editor.org/info/rfc6 | |||
| </front> | 363" quoteTitle="true" derivedAnchor="RFC6363"> | |||
| <seriesInfo name="3GPP TS" value="26.346" /> | <front> | |||
| </reference> | <title>Forward Error Correction (FEC) Framework</title> | |||
| <author initials="M." surname="Watson" fullname="M. Watson"> | ||||
| <reference anchor="RLC-ID" target="https://tools.ietf.org/html/draft-ietf- | <organization showOnFrontPage="true"/> | |||
| tsvwg-rlc-fec-scheme"> | </author> | |||
| <front> | <author initials="A." surname="Begen" fullname="A. Begen"> | |||
| <title>Sliding Window Random Linear Code (RLC) Forward Erasure Correct | <organization showOnFrontPage="true"/> | |||
| ion (FEC) Scheme for FECFRAME</title> | </author> | |||
| <author initials="V" surname="Roca" fullname="Vincent Roca"> <organiza | <author initials="V." surname="Roca" fullname="V. Roca"> | |||
| tion /> </author> | <organization showOnFrontPage="true"/> | |||
| <author initials="B" surname="Teibi" fullname="Belkacem Teibi"> <organ | </author> | |||
| ization /> </author> | <date year="2011" month="October"/> | |||
| <date month="September" year="2018" /> | <abstract> | |||
| </front> | <t>This document describes a framework for using Forward Error Cor | |||
| <seriesInfo name='Work in' value='Progress' /> | rection (FEC) codes with applications in public and private IP networks to provi | |||
| <seriesInfo name='Transport Area Working Group (TSVWG)' value='draft-iet | de protection against packet loss. The framework supports applying FEC to arbit | |||
| f-tsvwg-rlc-fec-scheme (Work in Progress)' /> | rary packet flows over unreliable transport and is primarily intended for real-t | |||
| </reference> | ime, or streaming, media. This framework can be used to define Content Delivery | |||
| Protocols that provide FEC for streaming media delivery or other packet flows. | ||||
| Content Delivery Protocols defined using this framework can support any FEC sch | ||||
| eme (and associated FEC codes) that is compliant with various requirements defin | ||||
| ed in this document. Thus, Content Delivery Protocols can be defined that are no | ||||
| t specific to a particular FEC scheme, and FEC schemes can be defined that are n | ||||
| ot specific to a particular Content Delivery Protocol. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6363"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6363"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 174" quoteTitle="true" derivedAnchor="RFC8174"> | ||||
| <front> | ||||
| <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | ||||
| tle> | ||||
| <author initials="B." surname="Leiba" fullname="B. Leiba"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2017" month="May"/> | ||||
| <abstract> | ||||
| <t>RFC 2119 specifies common key words that may be used in protoco | ||||
| l specifications. This document aims to reduce the ambiguity by clarifying tha | ||||
| t only UPPERCASE usage of the key words have the defined special meanings.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="14"/> | ||||
| <seriesInfo name="RFC" value="8174"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
| </reference> | ||||
| </references> | ||||
| <references pn="section-12.2"> | ||||
| <name slugifiedName="name-informative-references">Informative References | ||||
| </name> | ||||
| <reference anchor="MBMSTS" target="http://ftp.3gpp.org/specs/html-info/2 | ||||
| 6346.htm" quoteTitle="true" derivedAnchor="MBMSTS"> | ||||
| <front> | ||||
| <title>Multimedia Broadcast/Multicast Service (MBMS); Protocols and | ||||
| codecs</title> | ||||
| <seriesInfo name="3GPP TS" value="26.346"/> | ||||
| <author> | ||||
| <organization showOnFrontPage="true">3GPP</organization> | ||||
| </author> | ||||
| <date month="March" year="2009"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="RFC5052" target="https://www.rfc-editor.org/info/rfc5 | ||||
| 052" quoteTitle="true" derivedAnchor="RFC5052"> | ||||
| <front> | ||||
| <title>Forward Error Correction (FEC) Building Block</title> | ||||
| <author initials="M." surname="Watson" fullname="M. Watson"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M." surname="Luby" fullname="M. Luby"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="L." surname="Vicisano" fullname="L. Vicisano"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2007" month="August"/> | ||||
| <abstract> | ||||
| <t>This document describes how to use Forward Error Correction (FE | ||||
| C) codes to efficiently provide and/or augment reliability for bulk data transfe | ||||
| r over IP multicast. This document defines a framework for the definition of th | ||||
| e information that needs to be communicated in order to use an FEC code for bulk | ||||
| data transfer, in addition to the encoded data itself, and for definition of fo | ||||
| rmats and codes for communication of that information. Both information communi | ||||
| cated with the encoded data itself and information that needs to be communicated | ||||
| 'out-of-band' are considered. The procedures for specifying new FEC codes, def | ||||
| ining the information communication requirements associated with those codes and | ||||
| registering them with the Internet Assigned Numbers Authority (IANA) are also d | ||||
| escribed. The requirements on Content Delivery Protocols that wish to use FEC c | ||||
| odes defined within this framework are also defined. The companion document tit | ||||
| led "The Use of Forward Error Correction (FEC) in Reliable Multicast" describes | ||||
| some applications of FEC codes for delivering content. This document obsoletes R | ||||
| FC 3452. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5052"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5052"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6364" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 364" quoteTitle="true" derivedAnchor="RFC6364"> | ||||
| <front> | ||||
| <title>Session Description Protocol Elements for the Forward Error C | ||||
| orrection (FEC) Framework</title> | ||||
| <author initials="A." surname="Begen" fullname="A. Begen"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2011" month="October"/> | ||||
| <abstract> | ||||
| <t>This document specifies the use of the Session Description Prot | ||||
| ocol (SDP) to describe the parameters required to signal the Forward Error Corre | ||||
| ction (FEC) Framework Configuration Information between the sender(s) and receiv | ||||
| er(s). This document also provides examples that show the semantics for groupin | ||||
| g multiple source and repair flows together for the applications that simultaneo | ||||
| usly use multiple instances of the FEC Framework. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6364"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6364"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6681" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 681" quoteTitle="true" derivedAnchor="RFC6681"> | ||||
| <front> | ||||
| <title>Raptor Forward Error Correction (FEC) Schemes for FECFRAME</t | ||||
| itle> | ||||
| <author initials="M." surname="Watson" fullname="M. Watson"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="T." surname="Stockhammer" fullname="T. Stockhammer | ||||
| "> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M." surname="Luby" fullname="M. Luby"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2012" month="August"/> | ||||
| <abstract> | ||||
| <t>This document describes Fully-Specified Forward Error Correctio | ||||
| n (FEC) Schemes for the Raptor and RaptorQ codes and their application to reliab | ||||
| le delivery of media streams in the context of the FEC Framework. The Raptor an | ||||
| d RaptorQ codes are systematic codes, where a number of repair symbols are gener | ||||
| ated from a set of source symbols and sent in one or more repair flows in additi | ||||
| on to the source symbols that are sent to the receiver(s) within a source flow. | ||||
| The Raptor and RaptorQ codes offer close to optimal protection against arbitrar | ||||
| y packet losses at a low computational complexity. Six FEC Schemes are defined: | ||||
| two for the protection of arbitrary packet flows, two that are optimized for sm | ||||
| all source blocks, and two for the protection of a single flow that already cont | ||||
| ains a sequence number. Repair data may be sent over arbitrary datagram transpor | ||||
| t (e.g., UDP) or using RTP. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6681"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6681"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6816" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 816" quoteTitle="true" derivedAnchor="RFC6816"> | ||||
| <front> | ||||
| <title>Simple Low-Density Parity Check (LDPC) Staircase Forward Erro | ||||
| r Correction (FEC) Scheme for FECFRAME</title> | ||||
| <author initials="V." surname="Roca" fullname="V. Roca"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M." surname="Cunche" fullname="M. Cunche"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="J." surname="Lacan" fullname="J. Lacan"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2012" month="December"/> | ||||
| <abstract> | ||||
| <t>This document describes a fully specified simple Forward Error | ||||
| Correction (FEC) scheme for Low-Density Parity Check (LDPC) Staircase codes that | ||||
| can be used to protect media streams along the lines defined by FECFRAME. Thes | ||||
| e codes have many interesting properties: they are systematic codes, they perfor | ||||
| m close to ideal codes in many use-cases, and they also feature very high encodi | ||||
| ng and decoding throughputs. LDPC-Staircase codes are therefore a good solution | ||||
| to protect a single high bitrate source flow or to protect globally several mid | ||||
| -rate flows within a single FECFRAME instance. They are also a good solution wh | ||||
| enever the processing load of a software encoder or decoder must be kept to a mi | ||||
| nimum.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6816"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6816"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6865" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 865" quoteTitle="true" derivedAnchor="RFC6865"> | ||||
| <front> | ||||
| <title>Simple Reed-Solomon Forward Error Correction (FEC) Scheme for | ||||
| FECFRAME</title> | ||||
| <author initials="V." surname="Roca" fullname="V. Roca"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M." surname="Cunche" fullname="M. Cunche"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="J." surname="Lacan" fullname="J. Lacan"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="A." surname="Bouabdallah" fullname="A. Bouabdallah | ||||
| "> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="K." surname="Matsuzono" fullname="K. Matsuzono"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2013" month="February"/> | ||||
| <abstract> | ||||
| <t>This document describes a fully-specified simple Forward Error | ||||
| Correction (FEC) scheme for Reed-Solomon codes over the finite field (also known | ||||
| as the Galois Field) GF(2^^m), with 2 <= m <= 16, that can be used to pro | ||||
| tect arbitrary media streams along the lines defined by FECFRAME. The Reed-Solo | ||||
| mon codes considered have attractive properties, since they offer optimal protec | ||||
| tion against packet erasures and the source symbols are part of the encoding sym | ||||
| bols, which can greatly simplify decoding. However, the price to pay is a limit | ||||
| on the maximum source block size, on the maximum number of encoding symbols, an | ||||
| d a computational complexity higher than that of the Low-Density Parity Check (L | ||||
| DPC) codes, for instance.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6865"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6865"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8406" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 406" quoteTitle="true" derivedAnchor="RFC8406"> | ||||
| <front> | ||||
| <title>Taxonomy of Coding Techniques for Efficient Network Communica | ||||
| tions</title> | ||||
| <author initials="B." surname="Adamson" fullname="B. Adamson"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="C." surname="Adjih" fullname="C. Adjih"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="J." surname="Bilbao" fullname="J. Bilbao"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="V." surname="Firoiu" fullname="V. Firoiu"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="F." surname="Fitzek" fullname="F. Fitzek"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="S." surname="Ghanem" fullname="S. Ghanem"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="E." surname="Lochin" fullname="E. Lochin"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="A." surname="Masucci" fullname="A. Masucci"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M-J." surname="Montpetit" fullname="M-J. Montpetit | ||||
| "> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M." surname="Pedersen" fullname="M. Pedersen"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="G." surname="Peralta" fullname="G. Peralta"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="V." surname="Roca" fullname="V. Roca" role="editor | ||||
| "> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="P." surname="Saxena" fullname="P. Saxena"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="S." surname="Sivakumar" fullname="S. Sivakumar"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2018" month="June"/> | ||||
| <abstract> | ||||
| <t>This document summarizes recommended terminology for Network Co | ||||
| ding concepts and constructs. It provides a comprehensive set of terms in order | ||||
| to avoid ambiguities in future IRTF and IETF documents on Network Coding. This | ||||
| document is the product of the Coding for Efficient Network Communications Rese | ||||
| arch Group (NWCRG), and it is in line with the terminology used by the RFCs prod | ||||
| uced by the Reliable Multicast Transport (RMT) and FEC Framework (FECFRAME) IETF | ||||
| working groups.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8406"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8406"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8681" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 681" quoteTitle="true" derivedAnchor="RFC8681"> | ||||
| <front> | ||||
| <title>Sliding Window Random Linear Code (RLC) Forward Erasure Corre | ||||
| ction (FEC) Schemes for FECFRAME</title> | ||||
| <seriesInfo name="RFC" value="8681"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8681"/> | ||||
| <author initials="V" surname="Roca" fullname="Vincent Roca"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="B" surname="Teibi" fullname="Belkacem Teibi"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date month="January" year="2020"/> | ||||
| </front> | ||||
| </reference> | ||||
| </references> | ||||
| </references> | </references> | |||
| <section anchor="codingwindow-possibleManagement" numbered="true" toc="inclu | ||||
| <section anchor="codingwindow-possibleManagement" title="About Sliding Encoding | de" removeInRFC="false" pn="section-appendix.a"> | |||
| Window Management (informational)"> | <name slugifiedName="name-about-sliding-encoding-wind">About Sliding Encod | |||
| <!-- ====================== --> | ing Window Management (Informational)</name> | |||
| <t pn="section-appendix.a-1"> | ||||
| <t> | The FEC Framework does not specify the management of the sliding encoding window | |||
| The FEC Framework does not specify the management of the sliding encoding window | , which is the responsibility of the FEC scheme. | |||
| which is the responsibility of the FEC Scheme. | ||||
| This annex only provides a few informational hints. | This annex only provides a few informational hints. | |||
| </t> | </t> | |||
| <t pn="section-appendix.a-2"> | ||||
| <t> | 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 a | new ADU is available at the sender after the ADU-to-source-symbol | |||
| vailable at the sender, after the ADU-to-source-symbol mapping specific to the F | mapping specific to the FEC scheme has been done. | |||
| EC Scheme. | ||||
| </t> | ||||
| <t> | ||||
| Source symbols are removed from the sliding encoding window, for instance: | ||||
| <list style="symbols"> | ||||
| <t> after a certain delay, when an "old" ADU of a real-time flow times ou | ||||
| t. | ||||
| The source symbol retention delay in the sliding encoding window | ||||
| should therefore be initialized according to the real-time features of incoming | ||||
| flow(s) when applicable; </t> | ||||
| <t> once the sliding encoding window has reached its maximum size (there | ||||
| is usually an upper limit to the sliding encoding window size). | ||||
| In that case the oldest symbol is removed each time a new source | ||||
| symbol is added. </t> | ||||
| </list> | ||||
| </t> | </t> | |||
| <t pn="section-appendix.a-3"> | ||||
| <t> | Source symbols are removed from the sliding encoding window. For instance: | |||
| </t> | ||||
| <ul spacing="normal" bare="false" empty="false" pn="section-appendix.a-4"> | ||||
| <li pn="section-appendix.a-4.1"> After a certain delay, when an "old" AD | ||||
| U of a real-time flow times out. | ||||
| The source symbol retention delay in the sliding encoding window | ||||
| should therefore be initialized according to the real-time features of incoming | ||||
| flow(s) when applicable. </li> | ||||
| <li pn="section-appendix.a-4.2"> Once the sliding encoding window has re | ||||
| ached its maximum size (there is usually an upper limit to the sliding encoding | ||||
| window size). | ||||
| In that case, the oldest symbol is removed each time a new source | ||||
| symbol is added. </li> | ||||
| </ul> | ||||
| <t pn="section-appendix.a-5"> | ||||
| Several considerations can impact the management of this sliding encoding window : | Several considerations can impact the management of this sliding encoding window : | |||
| <list style="symbols"> | ||||
| <t> at the source flows level: real-time constraints can limit the total | ||||
| time source symbols can remain in the encoding window; </t> | ||||
| <t> at the FEC code level: theoretical or practical limitations (e.g., be | ||||
| cause of computational complexity) can limit the number of source symbols in the | ||||
| encoding window; </t> | ||||
| <t> at the FEC Scheme level: signaling and window management are intrinsi | ||||
| cally related. | ||||
| For instance, an encoding window composed of a non-sequential set | ||||
| of source symbols requires an appropriate signaling to inform a receiver of the | ||||
| composition of the encoding window, and the associated transmission overhead ca | ||||
| n limit the maximum encoding window size. | ||||
| On the opposite, an encoding window always composed of a sequenti | ||||
| al set of source symbols simplifies signaling: providing the identity of the fir | ||||
| st source symbol plus their number is sufficient, which creates a fixed and rela | ||||
| tively small transmission overhead. | ||||
| </t> | ||||
| </list> | ||||
| <!-- The most stringent limitation defines the maximum encoding window size, eit | ||||
| her in terms of number of source symbols or number of ADUs, whichever applies. - | ||||
| -> | ||||
| </t> | </t> | |||
| </section> | <ul spacing="normal" bare="false" empty="false" pn="section-appendix.a-6"> | |||
| <li pn="section-appendix.a-6.1"> At the source flows level: real-time co | ||||
| nstraints can limit the | ||||
| total time during which source symbols can remain in the encoding window. | ||||
| </li> | ||||
| <li pn="section-appendix.a-6.2"> At the FEC code level: theoretical or p | ||||
| ractical limitations (e.g., because of computational complexity) can limit the n | ||||
| umber of source symbols in the encoding window. </li> | ||||
| <li pn="section-appendix.a-6.3"> At the FEC scheme level: signaling and | ||||
| window management are intrinsically related. | ||||
| For instance, an encoding window composed of a nonsequential set | ||||
| of source symbols requires appropriate signaling to inform a receiver of the com | ||||
| position of the encoding window, and the associated transmission overhead can li | ||||
| mit the maximum encoding window size. | ||||
| On the contrary, an encoding window always composed of a sequenti | ||||
| al set of source symbols simplifies signaling: providing the identity of the fir | ||||
| st source symbol plus its number is sufficient, which creates a fixed and relati | ||||
| vely small transmission overhead. | ||||
| </li> | ||||
| </ul> | ||||
| </section> | ||||
| <section numbered="false" toc="include" removeInRFC="false" pn="section-appe | ||||
| ndix.b"> | ||||
| <name slugifiedName="name-acknowledgments">Acknowledgments</name> | ||||
| <t pn="section-appendix.b-1"> | ||||
| The authors would like to thank Christer Holmberg, David Black, Gorry | ||||
| Fairhurst, Emmanuel Lochin, Spencer Dawkins, Ben Campbell, Benjamin Kaduk, | ||||
| Eric Rescorla, Adam Roach, and Greg Skinner for their valuable feedback on | ||||
| this document. This document being an extension of <xref target="RFC6363" forma | ||||
| t="default" sectionFormat="of" derivedContent="RFC6363"/>, the authors would als | ||||
| o like to thank Mark Watson as the | ||||
| main author of that RFC.</t> | ||||
| </section> | ||||
| <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc | ||||
| ="include" pn="section-appendix.c"> | ||||
| <name slugifiedName="name-authors-addresses">Authors' Addresses</name> | ||||
| <author fullname="Vincent Roca" initials="V" surname="Roca"> | ||||
| <organization showOnFrontPage="true">INRIA</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street/> | ||||
| <city/> | ||||
| <extaddr>Univ. Grenoble Alpes</extaddr> | ||||
| <country>France</country> | ||||
| </postal> | ||||
| <email>vincent.roca@inria.fr</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Ali Begen" initials="A." surname="Begen"> | ||||
| <organization showOnFrontPage="true">Networked Media</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street/> | ||||
| <city>Konya</city> | ||||
| <region/> | ||||
| <code/> | ||||
| <country>Turkey</country> | ||||
| </postal> | ||||
| <email>ali.begen@networked.media</email> | ||||
| </address> | ||||
| </author> | ||||
| </section> | ||||
| </back> | </back> | |||
| </rfc> | </rfc> | |||
| End of changes. 138 change blocks. | ||||
| 849 lines changed or deleted | 1283 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||