<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-michel-quic-fec-00" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.1 -->
  <front>
    <title abbrev="FEC for QUIC">Forward Erasure Correction for QUIC loss recovery</title>
    <seriesInfo name="Internet-Draft" value="draft-michel-quic-fec-00"/>
    <author fullname="François Michel">
      <organization>UCLouvain</organization>
      <address>
        <email>francois.michel@uclouvain.be</email>
      </address>
    </author>
    <author fullname="Olivier Bonaventure">
      <organization>UCLouvain</organization>
      <address>
        <email>olivier.bonaventure@uclouvain.be</email>
      </address>
    </author>
    <date year="2022" month="October" day="21"/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <keyword>FEC</keyword>
    <keyword>network coding</keyword>
    <keyword>QUIC</keyword>
    <abstract>
      <t>This documents lays down the QUIC protocol design considerations
needed for QUIC to apply Forward Erasure Correction on the data sent
through the network.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://francoismichel.github.io/i-d-quic-fec/draft-michel-quic-fec.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-michel-quic-fec/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        QUIC Working Group mailing list (<eref target="mailto:quic@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/quic/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/francoismichel/i-d-quic-fec"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The QUIC protocol <xref target="QUICv1"/> relies on retransmissions to ensure
the reliable delivery of stream data. Retransmitting the lost
information requires the loss recovery mechanism to identify lost
packets which may take up to several hundreds of milliseconds
<xref target="QUIC-RECOVERY"/>. Depending on their delay-sensitivity, some
applications using QUIC could not afford such a waiting time to
ensure a good quality of experience to their users.</t>
      <t>Works has already been done to consider the use of
Forward Erasure Correction (FEC) for the QUIC protocol to ensure timely
data delivery for delay-sensitive applications <xref target="QUIC-FEC"/> <xref target="FlEC"/>
        <xref target="rQUIC"/> <xref target="I-D.swett-nwcrg-coding-for-quic"/>.
This document defines additions to the QUIC protocol to extend its
loss recovery mechanism and make it able to recover from packet
losses prior to retransmission using FEC.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<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"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <section anchor="fec-related-definitions">
        <name>FEC-related definitions</name>
        <t>Source symbol: piece of information exchanged by two endpoints. This document considers QUIC packets payloads as source symbols.</t>
        <t>Repair symbol: redundant information constructed from the combination
of several source symbols.</t>
        <t>Erasure: loss of one or more symbols</t>
        <t>Erasure correction code: algorithm generating repair symbols and
reconstructing missing source symbols from a set of source and
repair symbols.</t>
        <t>Forward Erasure Correction: process of recovering erased symbols
before the detection of their erasure.</t>
        <t>FEC scheme: the conjunction of an erasure correction code and the
specific protocol elements required to use it with the design
described in this document.</t>
        <t>Encoder: entity producing repair symbols using an erasure correction code.
The encoder can be a library used by the protocol implementation or a
program running in a separate process or machine.</t>
        <t>Decoder: entity reconstructing missing source symbols using an erasure
correction code. The decoder can be a library used by the protocol
implementation or a program running in a separate process or machine.</t>
        <t>Coding window: window of source symbols that are required to decode a
repair symbol.</t>
      </section>
    </section>
    <section anchor="the-network-channel-and-the-coding-channel">
      <name>The network channel and the coding channel</name>
      <t>QUIC endpoints exchange information over a network channel. Adding
Forward Erasure Correction to QUIC enables an endpoint to receive information
over a coding channel.  A coding channel can be seen as a communication
channel between a QUIC receiver and a FEC decoder. The decoder often
runs on the same machine as the QUIC receiver and can even be part of the
protocol implementation itself. A source symbol is received through the coding
channel when it is recovered by the FEC decoder instead of being explicitly
received through the network. Only the data sent on the network channel is
really transmitted on the wire between the two QUIC endpoints.
<xref target="fig-network-and-coding-channels"/> illustrates how symbols can be received
from both channels.</t>
      <figure anchor="fig-network-and-coding-channels">
        <name>Receiving symbols through the network channel</name>
        <artwork><![CDATA[
            Network Channel              Coding Channel

Sender                       Receiver             Decoder    Application
  |                              |                    |              |
  |  PACKET(1)[SOURCE_SYMBOL(1)] |                    |              |
  |----------------------------->|  SOURCE_SYMBOL(1)  |  APP_DATA(1) |
  |                              |------------------->|------------->|
  |  PACKET(2)[SOURCE_SYMBOL(2)] |                    |              |
  |--------------x               |                    |              |
  |                              |                    |              |
  |  PACKET(3)[REPAIR_SYMBOL]    |                    |              |
  |----------------------------->|    REPAIR_SYMBOL   |              |
  |                              |------------------->|              |
  |                              |                    |(recomputes)  |
  |                              |                    |(the source)  |
  |                              |                    |(symbol    )  |
  |                              |                    |              |
  |                              |                    |  APP_DATA(2) |
  |                              |                    |------------->|
  |                              |                    |              |
  |                              |                    |              |
]]></artwork>
      </figure>
      <t>In this illustration, the sender sends three QUIC packets through the
network channel. Packets 1 and 2 carry one source symbol each
and packet 3 carries one repair symbol protecting the
two source symbols. The source symbols each carry application data
(APP_DATA), e.g. through STREAM frames Packet 2 is lost due to network
imperfection preventing SOURCE_SYMBOL(2) from being received through
the network channel. The FEC decoder reconstructs SOURCE_SYMBOL(2) by
combining SOURCE_SYMBOL(1) and REPAIR_SYMBOL. SOURCE_SYMBOL(2) is thus
received through the coding channel. Note that SOURCE_SYMBOL(2) is not
received as a packet since QUIC packets are only exchanged through the
network channel. On the other hand, source symbols are carried by QUIC
packets through the network channel and sent directly to the decoder
through the coding channel..</t>
    </section>
    <section anchor="fec-and-the-loss-recovery-mechanism">
      <name>FEC and the loss recovery mechanism</name>
      <t>The FEC mechanism described in this document is an enhancement of the
classical QUIC loss recovery mechanism <xref target="QUIC-RECOVERY"/>. It does
not replace it by any means. A QUIC endpoint <bcp14>MAY</bcp14> ignore every received
repair symbol and <bcp14>MAY</bcp14> not perform any symbol recovery at all. The FEC
mechanism is only intended to allow a receiver recovering faster from
packet losses on the network channel if it values the timeliness of
data delivery.</t>
    </section>
    <section anchor="protocol-requirements-for-protecting-information-through-fec">
      <name>Protocol requirements for protecting information through FEC</name>
      <t>In this section, we list the points that must be defined by the protocol
for allowing QUIC endpoints to protect information using FEC.</t>
      <section anchor="defining-the-fec-protected-parts-of-a-quic-payload">
        <name>Defining the FEC-protected parts of a QUIC payload</name>
        <t>There is no need to protect every piece information sent on the wire by
QUIC. Some pieces of information are already sent redundantly (e.g. ACKs)
and some data are not delay sensitive and can be retransmitted later with
no harm (e.g. background download on a separate stream). Endpoints need
to agree on which parts of the packets are part of the protected source
symbols and how to compose a source symbol from what is sent on the wire.</t>
        <t>Versions 01 and 02 of <xref target="I-D.swett-nwcrg-coding-for-quic"/> only protect
streams payload. The idea is simple when using a single stream but becomes
complicated and requires more signaling in a multi-stream scenario. It also
cannot protect DATAGRAM frames.
In this document, we propose to consider whole frames as part of the source
symbols. Source symbols are thus the counterpart to QUIC packets for the
coding channel. Packets carry frames through the network channel and
source symbols allow receiving frames from the coding channel.
In order to reduce signalling between the peers, a single source symbol
<bcp14>MUST NOT</bcp14> contain the frames of several QUIC packets at the same time.</t>
      </section>
      <section anchor="identifying-the-source-symbols-from-quic-packets">
        <name>Identifying the source symbols from QUIC packets</name>
        <t>Upon reception of a QUIC packet, a receiver needs to identify the source
symbols contained in the packet to forward to the FEC decoder.
The decoder also needs to know which source symbols were lost. Since QUIC
does not enforce sending contiguously increasing packet numbers, it is not
possible for a receiver to distinguish a lost packet from a packet that
has never been sent. Furthermore, a QUIC sender may not want to protect
the payload of some packets if they do not carry latency-sensitive
information. Source symbols are thus attributed a Symbol ID (SID). The
SID of the first source symbol <bcp14>MUST</bcp14> be zero and the SIDs are contiguously
increasing. When a FEC decoder notes gaps in the received SIDs,
the missing SIDs correspond to lost source symbols that can be
recovered using FEC.</t>
        <t>As the QUIC packet number cannot be used to carry the SID, it must
be transmitted using either a dedicated QUIC frame or a dedicated
header field. The second solution being incompatible with <xref target="QUICv1"/>,
it is not discussed in this document. The source
symbol payload can either be put inside a dedicated frame
(<xref target="sec-source-symbol-frame"/>) or infered when handling a specific frame
(<xref target="sec-sid-frame"/>). Both alternatives lead to the exact same packet
wire format and outcome.</t>
        <section anchor="sec-source-symbol-frame">
          <name>Alternative 1: sending the source symbol inside a frame</name>
          <t>This alternative is compatible with <xref target="QUICv1"/>. It defines a new
SOURCE_SYMBOL frame as shown in <xref target="fig-source-symbol"/>.</t>
          <figure anchor="fig-source-symbol">
            <name>SOURCE_SYMBOL frame format</name>
            <artwork><![CDATA[
SOURCE_SYMBOL {
  SID (i),
  FEC Protected Payload (..)
}
]]></artwork>
          </figure>
          <t>The frame explicitly represents a source symbol. The FEC Protected Payload
field is analogous to the payload of a QUIC packet: it contains a
sequence of frames that are protected by FEC. The SOURCE_SYMBOL frame
is idempotent and explicit: it exactly describes the frames inside the
source symbol. The main drawback is that existing QUIC implementations
are not used to write frames inside other frames which may increase
the implementation cost of the approach. An example of the use of the
SOURCE_SYMBOL frame is shown in <xref target="fig-source-symbol-frame-example"/>.</t>
          <figure anchor="fig-source-symbol-frame-example">
            <name>SID Alternative 1</name>
            <artwork><![CDATA[
Sender                                                       Receiver
  |                                                             |
  | Pkt(5)[ACK[..], SOURCE_SYMBOL(0, { STREAM(4, "abc") }]      |
  |------------------------------------------------------------>|
  |                                                             |
  | Pkt(6)[STREAM(2, "xyz"),                                    |
  |        SOURCE_SYMBOL(1, { STREAM(8, "def"),                 |
  |                           DATAGRAM("msg") }]                |
  |------------------------------------------------------------>|
  |                                                             |
  |                                            Pkt(1)[ACK[..]]  |
  |<------------------------------------------------------------|
  |                                                             |

]]></artwork>
          </figure>
          <t>The two SOURCE_SYMBOL frames contain the source symbols with
SID 0 and 1. The first source symbol contains a frame for stream 4 while
the second one contains a frame for stream 8 and a DATAGRAM frame. The ACK
frame of packet 5 and the STREAM frame for stream 2 of packet 6 are not part
of the source symbol and are thus not protected by FEC. In this scenario,
every source symbol is correctly received and their reception can be deduced
from the acknowledgements of packets 5 and 6.</t>
        </section>
        <section anchor="sec-sid-frame">
          <name>Alternative 2: only sending the SID inside a frame</name>
          <t>This alternative is compatible with <xref target="QUICv1"/>. It defines a new SID frame
as shown in <xref target="fig-sid-frame"/>.</t>
          <figure anchor="fig-sid-frame">
            <name>SID frame format</name>
            <artwork><![CDATA[
SID {
  SID (i),
}
]]></artwork>
          </figure>
          <t>A QUIC packet carrying an SID frame means that the frames following the SID
frames in the packet payload are part of a FEC source symbol. The SID of
this symbol is represented by the only field of the SID frame. A packet
<bcp14>MUST NOT</bcp14> contain more than one SID frame. A packet whose payload is
FEC-protected <bcp14>MUST</bcp14> contain a SID frame whose SID field is the SID of
the related source symbol. This alternative has one drawback: the SID frame
is not idempotent since it is related to its containing packet.
An example of the use of the SID frame is shown in <xref target="fig-sid-frame-example"/>.</t>
          <figure anchor="fig-sid-frame-example">
            <name>SID Alternative 2</name>
            <artwork><![CDATA[
Sender                                       Receiver
  |                                            |
  | Pkt(5)[ACK[..], SID(0), STREAM(4, "abc")]  |
  |------------------------------------------->|
  |                                            |
  | Pkt(6)[STREAM(2, "xyz"),                   |
  |        SID(1), STREAM(8, "def"),           |
  |        DATAGRAM("msg")]                    |
  |------------------------------------------->|
  |                                            |
  |                            Pkt(1)[ACK[..]] |
  |<-------------------------------------------|
  |                                            |

]]></artwork>
          </figure>
          <t>The source symbols carried by the packets in this example are the same as for
<xref target="fig-source-symbol-frame-example"/> and the outcome and wire
format are the same.</t>
        </section>
      </section>
      <section anchor="sec-repair-frame">
        <name>Sending the repair symbols</name>
        <t>The repair symbols and the metadata attached to them are transferred using
the REPAIR frame shown in <xref target="fig-fec-repair-frame"/>.</t>
        <figure anchor="fig-fec-repair-frame">
          <name>REPAIR frame format</name>
          <artwork><![CDATA[
REPAIR {
  FEC Scheme Specific Repair Payload (1..),
}
]]></artwork>
        </figure>
        <t>The payload of the REPAIR frame is specific to the underlying
FEC scheme. In addition to the repair symbol itself, it may
contain any metadata needed by the erasure-correcting code (e.g. identifying
the source symbols protected by the repair symbol carried by the frame).
Depending on the FEC scheme, the REPAIR frame <bcp14>MAY</bcp14> contain
only a part of a repair symbol.</t>
      </section>
      <section anchor="sec-fec-window-frame">
        <name>Announcing the coding window size</name>
        <t>The receiver needs to store the received symbols in order to recover the
lost source symbols. The FEC_WINDOW frame is sent by the receiver
to announce the number of symbols  that can be stored simultaneously by
the receiver at a given point of time. The format of the FEC_WINDOW frame
is described in <xref target="fig-fec-window-frame"/>.</t>
        <figure anchor="fig-fec-window-frame">
          <name>FEC_WINDOW frame format</name>
          <artwork><![CDATA[
FEC_WINDOW {
  FEC Window Epoch (i),
  FEC Window Size (i),
}
]]></artwork>
        </figure>
        <t>The FEC Window Epoch field is a unique identifier for the announced window.
The first epoch is set to 0. Each time a new FEC_WINDOW frame is sent,
the FEC Window Epoch field is increased by exactly one.</t>
        <t>The Window Size field indicates the number of symbols that can be stored
simultaneously by the receiver. The Window Size value overrides the
window sizes received for smaller window epochs.</t>
      </section>
      <section anchor="sec-symbol-ack-frame">
        <name>Announcing the recovered symbols</name>
        <t>The FEC receiver <bcp14>MAY</bcp14> advertise the source symbols that have been received
either through the network or coding channels to avoid the sender
retransmitting the data of the recovered source symbols. This can be
done using the SYMBOL_ACK frame as shown in <xref target="fig-symbol-ack-frame"/>.</t>
        <figure anchor="fig-symbol-ack-frame">
          <name>SYMBOL_ACK frame format</name>
          <artwork><![CDATA[
SYMBOL_ACK {
  Largest Acknowledged (i),
  ACK Range Count (i),
  First ACK Range (i),
  ACK Range (..) ...,
}
]]></artwork>
        </figure>
        <t>The frame has a similar format as the ACK frame, announcing the reception
of SIDs instead of packet numbers. In addition to symbols
recovered by FEC, this frame <bcp14>MAY</bcp14> also announce symbols received regularly
through the network to avoid gaps in the ACK ranges and reduce the frame
size. There is no obligation for a FEC receiver to send SYMBOL_ACK frames.
The FEC receiver <bcp14>MAY</bcp14> decide to only advertize a subset of the received
source symbols. The SYMBOL_ACK frame <bcp14>MUST NOT</bcp14> be used to infer any congestion
state on the network (see <xref target="sec-coding-and-congestion"/>).</t>
      </section>
    </section>
    <section anchor="sec-coding-and-congestion">
      <name>Coding channel and congestion control</name>
      <t>The coding and network channels being unrelated, receiving symbols
through the coding channel <bcp14>MUST NOT</bcp14> be used to infer any congestion state on
the network channel. More specifically, receiving a symbol through the coding
channel <bcp14>MUST NOT</bcp14> be used to hide the network loss event of the corresponding
packet to the congestion control, applying Recommandation 1 of <xref target="RFC9265"/>.</t>
    </section>
    <section anchor="negociating-the-fec-extension-using-transport-parameters">
      <name>Negociating the FEC extension using transport parameters</name>
      <t>This section defines the new transport parameters used to negociate and
parametrize the FEC extension described in this document.</t>
      <section anchor="sec-enable-fec-tp">
        <name>enable_fec</name>
        <t>The use of the FEC extension is negociated using the enable_fec transport
parameter defined in <xref target="enable-fec-transport-parameter"/> :</t>
        <table anchor="enable-fec-transport-parameter">
          <name>Values for enable_fec</name>
          <thead>
            <tr>
              <th align="left">Option</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0</td>
              <td align="left">don't support FEC</td>
            </tr>
            <tr>
              <td align="left">0x1</td>
              <td align="left">supports FEC as defined in this document</td>
            </tr>
          </tbody>
        </table>
        <t>When the enable_fec value is 0 or is not advertized by the peer,
the QUIC endpoint <bcp14>MUST NOT</bcp14> use any frame or mechanism described in this
document.</t>
      </section>
      <section anchor="sec-decoder-fec-scheme-tp">
        <name>decoder_fec_scheme</name>
        <t>Each QUIC endpoint uses the decoder_fec_scheme transport parameter to
define the FEC scheme used to decode the received repair symbols. The
QUIC sender <bcp14>MUST</bcp14> use the specified FEC scheme to generate repair symbols.
The decoder_fec_scheme parameter is an integer value representing the
identifier of the desired FEC scheme.
For instance, a FEC scheme using Reed Solomon could be identified by the
ID 0x0 and a FEC scheme using LDPC could be identified by 0x1.</t>
        <t>This document does not specify nor identify any FEC scheme yet.
Several FEC schemes have been proposed
<xref target="I-D.roca-nwcrg-rlc-fec-scheme-for-quic"/> <xref target="RFC6865"/>
          <xref target="I-D.irtf-nwcrg-tetrys"/>. The next version of this
document will detail how some of these schemes can be directly integrated
in QUIC.</t>
        <t>Future
versions of this document will provide ways to format FEC scheme-specific
payload for REPAIR frames.
When the decoder_fec_scheme parameter is not advertized by the peer,
the QUIC sender <bcp14>MUST NOT</bcp14> send any repair symbol.</t>
      </section>
      <section anchor="sec-initial-coding-window-tp">
        <name>initial_coding_window</name>
        <t>Each QUIC endpoint uses the initial_coding_window transport parameter to
define the initial coding window size it uses to store source and repair
symbols (see <xref target="sec-fec-window-frame"/>).
When the initial_coding_window parameter is not advertized by the peer,
the QUIC sender <bcp14>MUST</bcp14> consider a default value of 0 and <bcp14>MUST NOT</bcp14> send
any repair symbol.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The FEC mechanism for QUIC only runs under 0-RTT and 1-RTT encryption levels and
only operates inside the encrypted payload.</t>
      <section anchor="dos-due-to-difficult-symbols-recoveries">
        <name>DoS due to difficult symbols recoveries</name>
        <t>An attacker could try to cause a DoS of a receiver by selectively sending source
and repair symbols to trigger intensive erasure correction operations on the
receiver. A QUIC receiver is never forced to perform any erasure correction
and may ignore any received repair symbol if it has doubts in its capabilities
to decode it in a reasonable amount of time.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t><em>Disclaimer: the IDs defined in this section are present for experimental</em>
        <em>purposes only. They are not requested codepoints and are subject to change</em>
        <em>in the next versions of this document.</em></t>
      <t>This document defines three new transport parameters and five new frames. The
SID and SOURCE_SYMBOL frames serve the same purpose. One of them will be
removed in next versions of this document. The values present in the tables
are used for experiments.</t>
      <section anchor="new-transport-parameters">
        <name>New transport parameters</name>
        <table anchor="iana-transport-parameters">
          <name>New transport parameters</name>
          <thead>
            <tr>
              <th align="left">Parameter ID</th>
              <th align="left">Parameter name</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x238ffeceXX</td>
              <td align="left">enable_fec</td>
              <td align="left">
                <xref target="sec-enable-fec-tp"/></td>
            </tr>
            <tr>
              <td align="left">0x238ffecd</td>
              <td align="left">decoder_fec_scheme</td>
              <td align="left">
                <xref target="sec-decoder-fec-scheme-tp"/></td>
            </tr>
            <tr>
              <td align="left">0x238ffecc</td>
              <td align="left">initial_coding_window</td>
              <td align="left">
                <xref target="sec-initial-coding-window-tp"/></td>
            </tr>
          </tbody>
        </table>
        <t>The XX in 0x238ffeceXX are to be replaced by the version of this document
that is implemented by the QUIC endpoint (e.g. the parameter ID for the
version 00 of this document is 0x238ffece00).</t>
      </section>
      <section anchor="new-frames">
        <name>New frames</name>
        <table anchor="iana-frames">
          <name>New frames</name>
          <thead>
            <tr>
              <th align="left">Frame ID</th>
              <th align="left">Frame name</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x32a80fec</td>
              <td align="left">REPAIR</td>
              <td align="left">
                <xref target="sec-repair-frame"/></td>
            </tr>
            <tr>
              <td align="left">0x32a80fec55</td>
              <td align="left">SOURCE_SYMBOL</td>
              <td align="left">
                <xref target="sec-source-symbol-frame"/></td>
            </tr>
            <tr>
              <td align="left">0x32a80fec1d</td>
              <td align="left">SID</td>
              <td align="left">
                <xref target="sec-sid-frame"/></td>
            </tr>
            <tr>
              <td align="left">0x32a80fecac</td>
              <td align="left">SYMBOL_ACK</td>
              <td align="left">
                <xref target="sec-symbol-ack-frame"/></td>
            </tr>
            <tr>
              <td align="left">0x32a80fecc0</td>
              <td align="left">FEC_WINDOW</td>
              <td align="left">
                <xref target="sec-fec-window-frame"/></td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Maxime Piraux, Olivier Bonaventure and all the authors of
<xref target="I-D.swett-nwcrg-coding-for-quic"/>.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="QUICv1">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="QUIC-RECOVERY">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </reference>
        <reference anchor="RFC9265">
          <front>
            <title>Forward Erasure Correction (FEC) Coding and Congestion Control in Transport</title>
            <author fullname="N. Kuhn" initials="N." surname="Kuhn">
              <organization/>
            </author>
            <author fullname="E. Lochin" initials="E." surname="Lochin">
              <organization/>
            </author>
            <author fullname="F. Michel" initials="F." surname="Michel">
              <organization/>
            </author>
            <author fullname="M. Welzl" initials="M." surname="Welzl">
              <organization/>
            </author>
            <date month="July" year="2022"/>
            <abstract>
              <t>Forward Erasure Correction (FEC) is a reliability mechanism that is distinct and separate from the retransmission logic in reliable transfer protocols such as TCP. FEC coding can help deal with losses at the end of transfers or with networks having non-congestion losses. However, FEC coding mechanisms should not hide congestion signals. This memo offers a discussion of how FEC coding and congestion control can coexist. Another objective is to encourage the research community to also consider congestion control aspects when proposing and comparing FEC coding solutions in communication systems.</t>
              <t>This document is the product of the Coding for Efficient Network Communications Research Group (NWCRG). The scope of the document is end-to-end communications; FEC coding for tunnels is out of the scope of the document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9265"/>
          <seriesInfo name="DOI" value="10.17487/RFC9265"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that 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>
        <name>Informative References</name>
        <reference anchor="QUIC-FEC">
          <front>
            <title>QUIC-FEC: Bringing the benefits of Forward Erasure Correction to QUIC</title>
            <author fullname="Francois Michel" initials="F." surname="Michel">
              <organization/>
            </author>
            <author fullname="Quentin De Coninck" initials="Q." surname="De Coninck">
              <organization/>
            </author>
            <author fullname="Olivier Bonaventure" initials="O." surname="Bonaventure">
              <organization/>
            </author>
            <date month="May" year="2019"/>
          </front>
          <seriesInfo name="2019 IFIP Networking Conference (IFIP" value="Networking)"/>
          <seriesInfo name="DOI" value="10.23919/ifipnetworking.2019.8816838"/>
        </reference>
        <reference anchor="rQUIC">
          <front>
            <title>rQUIC: Integrating FEC with QUIC for Robust Wireless Communications</title>
            <author fullname="Pablo Garrido" initials="P." surname="Garrido">
              <organization/>
            </author>
            <author fullname="Isabel Sanchez" initials="I." surname="Sanchez">
              <organization/>
            </author>
            <author fullname="Simone Ferlin" initials="S." surname="Ferlin">
              <organization/>
            </author>
            <author fullname="Ramon Aguero" initials="R." surname="Aguero">
              <organization/>
            </author>
            <author fullname="Ozgu Alay" initials="O." surname="Alay">
              <organization/>
            </author>
            <date month="December" year="2019"/>
          </front>
          <seriesInfo name="2019 IEEE Global Communications Conference" value="(GLOBECOM)"/>
          <seriesInfo name="DOI" value="10.1109/globecom38437.2019.9013401"/>
        </reference>
        <reference anchor="FlEC">
          <front>
            <title>FlEC: Enhancing QUIC With Application-Tailored Reliability Mechanisms</title>
            <author fullname="Francois Michel" initials="F." surname="Michel">
              <organization>Department of INGI, Universit&amp;#x00E9; Catholique de Louvain (UCLouvain), Ottignies-Louvain-la-Neuve, Belgium</organization>
            </author>
            <author fullname="Alejandro Cohen" initials="A." surname="Cohen">
              <organization>Technion&amp;#x2014;Israel Institute of Technology, Haifa, Israel</organization>
            </author>
            <author fullname="Derya Malak" initials="D." surname="Malak">
              <organization>Rensselaer Polytechnic Institute, Troy, NY, USA</organization>
            </author>
            <author fullname="Quentin De Coninck" initials="Q." surname="Coninck">
              <organization>Department of INGI, Universit&amp;#x00E9; Catholique de Louvain (UCLouvain), Ottignies-Louvain-la-Neuve, Belgium</organization>
            </author>
            <author fullname="Muriel Medard" initials="M." surname="Medard">
              <organization>Massachusetts Institute of Technology, Cambridge, MA, USA</organization>
            </author>
            <author fullname="Olivier Bonaventure" initials="O." surname="Bonaventure">
              <organization>Department of INGI, Universit&amp;#x00E9; Catholique de Louvain (UCLouvain), Ottignies-Louvain-la-Neuve, Belgium</organization>
            </author>
            <date year="2022"/>
          </front>
          <seriesInfo name="IEEE/ACM Transactions on Networking" value="pp. 1-14"/>
          <seriesInfo name="DOI" value="10.1109/tnet.2022.3195611"/>
        </reference>
        <reference anchor="I-D.swett-nwcrg-coding-for-quic">
          <front>
            <title>Coding for QUIC</title>
            <author fullname="Ian Swett" initials="I." surname="Swett">
              <organization>Google</organization>
            </author>
            <author fullname="Marie-Jose Montpetit" initials="M." surname="Montpetit">
              <organization>Triangle Video</organization>
            </author>
            <author fullname="Vincent Roca" initials="V." surname="Roca">
              <organization>INRIA</organization>
            </author>
            <author fullname="François Michel" initials="F." surname="Michel">
              <organization>UCLouvain</organization>
            </author>
            <date day="9" month="March" year="2020"/>
            <abstract>
              <t>   This document focuses on the integration of FEC coding in the QUIC
   transport protocol, in order to recover from packet losses.  This
   document does not specify any FEC code but defines mechanisms to
   negotiate and integrate FEC Schemes in QUIC.  By using proactive loss
   recovery, it is expected to improve QUIC performance in sessions
   impacted by packet losses.  More precisely it is expected to improve
   QUIC performance with real-time sessions (since FEC coding makes
   packet loss recovery insensitive to the round trip time), with short
   sessions (since FEC coding can help recovering from tail losses more
   rapidely than through retransmissions), with multicast sessions
   (since the same repair packet can recover several different losses at
   several receivers), and with multipath sessions (since repair packets
   add diversity and flexibility).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-swett-nwcrg-coding-for-quic-04"/>
        </reference>
        <reference anchor="I-D.roca-nwcrg-rlc-fec-scheme-for-quic">
          <front>
            <title>Sliding Window Random Linear Code (RLC) Forward Erasure Correction (FEC) Schemes for QUIC</title>
            <author fullname="Vincent Roca" initials="V." surname="Roca">
              <organization>INRIA</organization>
            </author>
            <author fullname="François Michel" initials="F." surname="Michel">
              <organization>UCLouvain</organization>
            </author>
            <author fullname="Ian Swett" initials="I." surname="Swett">
              <organization>Google</organization>
            </author>
            <author fullname="Marie-Jose Montpetit" initials="M." surname="Montpetit">
              <organization>Triangle Video</organization>
            </author>
            <date day="9" month="March" year="2020"/>
            <abstract>
              <t>   This document specifies Sliding Window Random Linear Code (RLC)
   Forward Erasure Correction (FEC) Schemes for the QUIC transport
   protocol, in order to recover from packet losses.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-roca-nwcrg-rlc-fec-scheme-for-quic-03"/>
        </reference>
        <reference anchor="I-D.irtf-nwcrg-tetrys">
          <front>
            <title>Tetrys, an On-the-Fly Network Coding Protocol</title>
            <author fullname="Jonathan Detchart" initials="J." surname="Detchart">
              <organization>ISAE-SUPAERO</organization>
            </author>
            <author fullname="Emmanuel Lochin" initials="E." surname="Lochin">
              <organization>ENAC</organization>
            </author>
            <author fullname="Jerome Lacan" initials="J." surname="Lacan">
              <organization>ISAE-SUPAERO</organization>
            </author>
            <author fullname="Vincent Roca" initials="V." surname="Roca">
              <organization>INRIA</organization>
            </author>
            <date day="6" month="September" year="2022"/>
            <abstract>
              <t>   This document describes Tetrys, an On-The-Fly Network Coding (NC)
   protocol that can be used to transport delay and loss-sensitive data
   over a lossy network.  Tetrys may recover from erasures within an
   RTT-independent delay, thanks to the transmission of Coded Packets.
   This document is a record of the experience gained by the authors
   while developing and testing in real conditions the Tetrys protocol.

   This document is a product of the Coding for Efficient Network
   Communications Research Group (NWCRG).  It conforms to the NWCRG
   taxonomy[RFC8406].

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-nwcrg-tetrys-03"/>
        </reference>
        <reference anchor="RFC6865">
          <front>
            <title>Simple Reed-Solomon Forward Error Correction (FEC) Scheme for FECFRAME</title>
            <author fullname="V. Roca" initials="V." surname="Roca">
              <organization/>
            </author>
            <author fullname="M. Cunche" initials="M." surname="Cunche">
              <organization/>
            </author>
            <author fullname="J. Lacan" initials="J." surname="Lacan">
              <organization/>
            </author>
            <author fullname="A. Bouabdallah" initials="A." surname="Bouabdallah">
              <organization/>
            </author>
            <author fullname="K. Matsuzono" initials="K." surname="Matsuzono">
              <organization/>
            </author>
            <date month="February" year="2013"/>
            <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 &lt;= m &lt;= 16, that can be used to protect arbitrary media streams along the lines defined by FECFRAME.  The Reed-Solomon codes considered have attractive properties, since they offer optimal protection against packet erasures and the source symbols are part of the encoding symbols, 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, and a computational complexity higher than that of the Low-Density Parity Check (LDPC) codes, for instance.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6865"/>
          <seriesInfo name="DOI" value="10.17487/RFC6865"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
