summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc9265.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc9265.txt')
-rw-r--r--doc/rfc/rfc9265.txt1058
1 files changed, 1058 insertions, 0 deletions
diff --git a/doc/rfc/rfc9265.txt b/doc/rfc/rfc9265.txt
new file mode 100644
index 0000000..1e24846
--- /dev/null
+++ b/doc/rfc/rfc9265.txt
@@ -0,0 +1,1058 @@
+
+
+
+
+Internet Research Task Force (IRTF) N. Kuhn
+Request for Comments: 9265 CNES
+Category: Informational E. Lochin
+ISSN: 2070-1721 ENAC
+ F. Michel
+ UCLouvain
+ M. Welzl
+ University of Oslo
+ July 2022
+
+
+ Forward Erasure Correction (FEC) Coding and Congestion Control in
+ Transport
+
+Abstract
+
+ 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.
+
+ 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.
+
+Status of This Memo
+
+ This document is not an Internet Standards Track specification; it is
+ published for informational purposes.
+
+ This document is a product of the Internet Research Task Force
+ (IRTF). The IRTF publishes the results of Internet-related research
+ and development activities. These results might not be suitable for
+ deployment. This RFC represents the consensus of the Network Coding
+ for Efficient Network Communications Research Group of the Internet
+ Research Task Force (IRTF). Documents approved for publication by
+ the IRSG are not candidates for any level of Internet Standard; see
+ Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc9265.
+
+Copyright Notice
+
+ Copyright (c) 2022 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (https://trustee.ietf.org/license-info) 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.
+
+Table of Contents
+
+ 1. Introduction
+ 2. Context
+ 2.1. Fairness, Quantifying and Limiting Harm, and Policy
+ Concerns
+ 2.2. Separate Channels, Separate Entities
+ 2.3. Relation between Transport Layer and Application
+ Requirements
+ 2.4. Scope of the Document Concerning Transport Multipath and
+ Multistream Applications
+ 2.5. Types of Coding
+ 3. FEC above the Transport
+ 3.1. Fairness and Impact on Non-coded Flows
+ 3.2. Congestion Control and Recovered Symbols
+ 3.3. Interactions between Congestion Control and Coding Rates
+ 3.4. On Useless Repair Symbols
+ 3.5. On Partial Ordering at FEC Level
+ 3.6. On Partial Reliability at FEC Level
+ 3.7. On Multipath Transport and FEC Mechanism
+ 4. FEC within the Transport
+ 4.1. Fairness and Impact on Non-coded Flows
+ 4.2. Interactions between Congestion Control and Coding Rates
+ 4.3. On Useless Repair Symbols
+ 4.4. On Partial Ordering at FEC and/or Transport Level
+ 4.5. On Partial Reliability at FEC Level
+ 4.6. On Transport Multipath and Subpath FEC Coding Rate
+ 5. FEC below the Transport
+ 5.1. Fairness and Impact on Non-coded Flows
+ 5.2. Congestion Control and Recovered Symbols
+ 5.3. Interactions between Congestion Control and Coding Rates
+ 5.4. On Useless Repair Symbols
+ 5.5. On Partial Ordering at FEC Level with In-Order Delivery
+ Transport
+ 5.6. On Partial Reliability at FEC Level
+ 5.7. FEC Not Aware of Transport Multipath
+ 6. Research Recommendations and Questions
+ 6.1. Activities Related to Congestion Control and Coding
+ 6.2. Open Research Questions
+ 6.2.1. Parameter Derivation
+ 6.2.2. New Signaling Methods and Fairness
+ 6.3. Recommendations and Advice for Evaluating Coding Mechanisms
+ 7. IANA Considerations
+ 8. Security Considerations
+ 9. Informative References
+ Acknowledgements
+ Authors' Addresses
+
+1. Introduction
+
+ There are cases where deploying FEC coding improves the performance
+ of a transmission. As an example, it may take time for a sender to
+ detect transfer tail losses (losses that occur at the end of a
+ transfer where, e.g., TCP obtains no more ACKs that would enable it
+ to quickly repair the loss via retransmission). Allowing the
+ receiver to recover such losses instead of having to rely on a
+ retransmission could improve the experience of applications using
+ short flows. Another example is a network where non-congestion
+ losses are persistent and prevent a sender from exploiting the link
+ capacity.
+
+ Coding and the loss detection of congestion controls are two distinct
+ and separate reliability mechanisms. Since FEC coding repairs
+ losses, blindly applying FEC may easily lead to an implementation
+ that also hides a congestion signal from the sender. It is important
+ to ensure that such hiding of information does not occur, because
+ loss may be the only congestion signal available to the sender (e.g.,
+ TCP [RFC5681]).
+
+ FEC coding and congestion control can be seen as two separate
+ channels. In practice, implementations may mix the signals that are
+ exchanged on these channels. This memo offers a discussion of how
+ FEC coding and congestion control 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. This document does not aim to propose
+ guidelines for characterizing FEC coding solutions.
+
+ We consider three architectures for end-to-end unicast data transfer:
+
+ * with FEC coding in the application (above the transport)
+ (Section 3),
+
+ * within the transport (Section 4), or
+
+ * directly below the transport (Section 5).
+
+ A typical scenario for the considerations in this document is a
+ client browsing the Web or watching a live video.
+
+ This document represents the collaborative work and consensus of the
+ Coding for Efficient Network Communications Research Group (NWCRG);
+ it is not an IETF product nor a standard. The document follows the
+ terminology proposed in the taxonomy document [RFC8406].
+
+2. Context
+
+2.1. Fairness, Quantifying and Limiting Harm, and Policy Concerns
+
+ Traffic from or to different end users may share various types of
+ bottlenecks. When such a shared bottleneck does not implement some
+ form of flow protection, the share of the available capacity between
+ single flows can help assess when one flow starves the other.
+
+ As one example, for residential accesses, the data rate can be
+ guaranteed for the customer premises equipment but not necessarily
+ for the end user. The quality of service that guarantees fairness
+ between the different clients can be seen as a policy concern
+ [FLOW-RATE-FAIRNESS].
+
+ While past efforts have focused on achieving fairness, quantifying
+ and limiting harm caused by new algorithms (or algorithms with
+ coding) is more practical [BEYONDJAIN]. This document considers
+ fairness as the impact of the addition of coded flows on non-coded
+ flows when they share the same bottleneck. It is assumed that the
+ non-coded flows respond to congestion signals from the network. This
+ document does not contribute to the definition of fairness at a wider
+ scale.
+
+2.2. Separate Channels, Separate Entities
+
+ Figures 1 and 2 present the notations that will be used in this
+ document and introduce the Forward Erasure Correction (FEC) and
+ Congestion Control (CC) channels. The FEC channel carries repair
+ symbols (from the sender to the receiver) and information from the
+ receiver to the sender (e.g., signaling which symbols have been
+ recovered, loss rate prior and/or after decoding, etc.). The CC
+ channel carries network packets from a sender to a receiver and
+ packets signaling information about the network (number of packets
+ received vs. lost, Explicit Congestion Notification (ECN) marks
+ [RFC3168], etc.) from the receiver to the sender. The network
+ packets that are sent by the CC channel may be composed of source
+ packets and/or repair symbols.
+
+ SENDER RECEIVER
+
+ +------+ +------+
+ | | ----- network packets ---->| |
+ | CC | | CC |
+ | | <--- network information ---| |
+ +------+ +------+
+
+ Figure 1: Congestion Control (CC) Channel
+
+ SENDER RECEIVER
+
+ +------+ +------+
+ | | source and/or | |
+ | | ----- repair symbols ---->| |
+ | FEC | | FEC |
+ | | signaling | |
+ | | <--- recovered symbols ----| |
+ +------+ +------+
+
+ Figure 2: Forward Erasure Correction (FEC) Channel
+
+ Inside a host, the CC and FEC entities can be regarded as
+ conceptually separate:
+
+ | ^ | ^
+ | source | coding |packets | sending
+ | packets | rate |requirements | rate (or
+ v | v | window)
+ +---------------+source +-----------------+
+ | FEC |and/or | CC |
+ | |repair | |network
+ | |symbols | |packets
+ +---------------+==> +-----------------+==>
+ ^ ^
+ | signaling | network
+ | recovered symbols | information
+
+ Figure 3: Separate Entities (Sender-Side)
+
+ | |
+ | source and/or | network
+ | repair symbols | packets
+ v v
+ +---------------+ +-----------------+
+ | FEC |signaling | CC |
+ | |recovered | |network
+ | |symbols | |information
+ +---------------+==> +-----------------+==>
+
+ Figure 4: Separate Entities (Receiver-Side)
+
+ Figures 3 and 4 provide more details than Figures 1 and 2. Some
+ elements are introduced:
+
+ 'network information' (input control plane for the transport
+ including CC):
+ refers not only to the network information that is explicitly
+ signaled from the receiver but all the information a congestion
+ control obtains from a network.
+
+ 'requirements' (input control plane for the transport including
+ CC):
+ refers to application requirements such as upper/lower rate
+ bounds, periods of quiescence, or a priority.
+
+ 'sending rate (or window)' (output control plane for the transport
+ including CC):
+ refers to the rate at which a congestion control decides to
+ transmit packets based on 'network information'.
+
+ 'signaling recovered symbols' (input control plane for the FEC):
+ refers to the information a FEC sender can obtain from a FEC
+ receiver about the performance of the FEC solution as seen by the
+ receiver.
+
+ 'coding rate' (output control plane for the FEC):
+ refers to the coding rate that is used by the FEC solution (i.e.,
+ proportion of transmitted symbols that carry useful data).
+
+ 'network packets' (output data plane for the CC):
+ refers to the data that is transmitted by a CC sender to a CC
+ receiver. The network packets may contain source and/or repair
+ symbols.
+
+ 'source and/or repair symbols' (data plane for the FEC):
+ refers to the data that is transmitted by a FEC sender to a FEC
+ receiver. The sender can decide to send source symbols only
+ (meaning that the coding rate is 0), repair symbols only (if the
+ solution decides not to send the original source symbols), or a
+ mix of both.
+
+ The inputs to FEC (incoming data packets without repair symbols and
+ signaling from the receiver about losses and/or recovered symbols)
+ are distinct from the inputs to CC. The latter calculates a sending
+ rate or window from network information, and it takes the packet to
+ send as input, sometimes along with application requirements such as
+ upper/lower rate bounds, periods of quiescence, or a priority. It is
+ not clear that the ACK signals feeding into a congestion control
+ algorithm are useful to FEC in their raw form, and vice versa;
+ information about recovered blocks may be quite irrelevant to a CC
+ algorithm.
+
+2.3. Relation between Transport Layer and Application Requirements
+
+ The choice of the adequate transport layer may be related to
+ application requirements and the services offered by a transport
+ protocol [RFC8095]:
+
+ The transport layer may implement a retransmission mechanism to
+ guarantee the reliability of a data transfer (e.g., TCP).
+ Depending on how the FEC and CC functions are scheduled (FEC above
+ CC (Section 3), FEC in CC (Section 4), and FEC below CC
+ (Section 5)), the impact of reliable transport on the FEC
+ reliability mechanisms is different.
+
+ The transport layer may provide an unreliable transport service
+ (e.g., UDP or the Datagram Congestion Control Protocol (DCCP)
+ [RFC4340]) or a partially reliable transport service (e.g., the
+ Stream Control Transmission Protocol (SCTP) with the partial
+ reliability extension [RFC3758] or QUIC with the unreliable datagram
+ extension [RFC9221]). Depending on the amount of redundancy and
+ network conditions, there could be cases where it becomes impossible
+ to carry traffic. This is further discussed in Section 3 where a
+ "FEC above CC" case is assessed and in Sections 4 and 5 where "FEC in
+ CC" and "FEC below CC" are assessed, respectively.
+
+2.4. Scope of the Document Concerning Transport Multipath and
+ Multistream Applications
+
+ The application layer can be composed of several streams above FEC
+ and transport-layer instances. The transport layer can exploit a
+ multipath mechanism. The different streams could exploit different
+ paths between the sender and the receiver. Moreover, a single-stream
+ application could also exploit a multipath transport mechanism. This
+ section describes what is in the scope of this document with regard
+ to multistream applications and multipath transport protocols.
+
+ The different combinations between multistream applications and
+ multipath transport are the following: (1) one application-layer
+ stream as input packets above a combination of FEC and multipath
+ (Mpath) transport layers (Figure 5) and (2) multiple application-
+ layer streams as input packets above a combination of FEC and
+ multipath (Mpath) or single path (Spath) transport layers (Figure 6).
+ This document further details cases I (in Section 3.7), II (in
+ Section 4.6), and III (in Section 5.7) as illustrated in Figure 5.
+ Cases IV, V, and VI of Figure 6 are related to how multiple streams
+ are managed by a single transport or FEC layer; this does not
+ directly concern the interaction between FEC and the transport and is
+ out of the scope of this document.
+
+ CASE I CASE II CASE III
+ +---------------+ +---------------+ +---------------+
+ | Stream 1 | | Stream 2 | | Stream 3 |
+ +---------------+ +---------------+ +---------------+
+
+ +---------------+ +---------------+ +---------------+
+ | FEC | | FEC | |Mpath Transport|
+ +---------------+ | in | +---------------+
+ |Mpath Transport|
+ +---------------+ | | +-----+ +-----+
+ |Mpath Transport| | | |Flow1|...|FlowM|
+ +---------------+ +---------------+ +-----+ +-----+
+
+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+
+ |Flow1|...|FlowM| |Flow1|...|FlowM| | FEC |...| FEC |
+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+
+
+ Figure 5: Transport Multipath and Single-Stream Applications - in
+ the Scope of the Document
+
+ CASE IV CASE V CASE VI
+ +-------+ +-------+ +-------+ +-------+ +-------+ +-------+
+ |Stream1|...|StreamM| |Stream1|...|StreamM| |Stream1|...|StreamM|
+ +-------+ +-------+ +-------+ +-------+ +-------+ +-------+
+
+ +-------------------+ +-------------------+ +-------------------+
+ | | | FEC | | Mpath Transport |
+ | FEC | +-------------------+ +-------------------+
+ | above/in/below |
+ | Spath Transport | +-------------------+ +-------------------+
+ | | | Mpath Transport | | FEC |
+ +-------------------+ +-------------------+ +-------------------+
+
+ +-------------------+ +-----+ +-----+ +-----+ +-----+
+ | Flow | |Flow1| ... |FlowM| |Flow1| ... |FlowM|
+ +-------------------+ +-----+ +-----+ +-----+ +-----+
+
+ Figure 6: Transport Single Path, Transport Multipath, and Multistream
+ Applications - out of the Scope of the Document
+
+2.5. Types of Coding
+
+ [RFC8406] summarizes recommended terminology for Network Coding
+ concepts and constructs. In particular, the document identifies the
+ following coding types (among many others):
+
+ Block Coding: Coding technique where the input Flow must first be
+ segmented into a sequence of blocks; FEC encoding and decoding are
+ performed independently on a per-block basis.
+
+ Sliding Window Coding: General class of coding techniques that rely
+ on a sliding encoding window.
+
+ The decoding scheme may not be able to decode all the symbols. The
+ chance of decoding the erased packets depends on the size of the
+ encoding window, the coding rate, and the distribution of erasure in
+ the transmission channel. The FEC channel may let the client
+ transmit information related to the need of supplementary symbols to
+ adapt the level of reliability. Partial and full reliability could
+ be envisioned.
+
+ Full reliability: The receiver may hold symbols until the decoding
+ of source symbols is possible. In particular, if the codec does
+ not enable a subset of the system to be inverted, the receiver
+ would have to wait for a certain minimum amount of repair packets
+ before it can recover all the source symbols.
+
+ Partial reliability: The receiver cannot deliver source symbols that
+ could not have been decoded to the upper layer. For a fixed size
+ of encoding window (for Sliding Window Coding) or of blocks (for
+ Block Coding) containing the source symbols, increasing the amount
+ of repair symbols would increase the chances of recovering the
+ erased symbols. However, this would have an impact on memory
+ requirements, the cost of encoding and decoding processes, and the
+ network overhead.
+
+3. FEC above the Transport
+
+ | source ^ source
+ | packets | packets
+ v |
+ +-------------+ +-------------+
+ |FEC | signaling|FEC |
+ | | recovered| |
+ | | symbols| |
+ | | <==| |
+ +-------------+ +-------------+
+ | source ^ ^ source
+ | and/or | sending | and/or
+ | repair | rate | repair
+ | symbols | (or window) | symbols
+ v | |
+ +-------------+ +-------------+
+ |Transport | network|Transport |
+ |(incl. CC) | information| |
+ | |network <==| |
+ | |packets | |
+ +-------------+==> +-------------+
+
+ SENDER RECEIVER
+
+ Figure 7: FEC above the Transport
+
+ Figure 7 presents an architecture where FEC operates on top of the
+ transport.
+
+ The advantage of this approach is that the FEC overhead does not
+ contribute to congestion in the network when congestion control is
+ implemented at the transport layer, because the repair symbols are
+ sent following the congestion window or rate determined by the CC
+ mechanism. This can result in an improved quality of experience for
+ latency-sensitive applications such as Voice over IP (VoIP) or any
+ not-fully reliable services.
+
+ This approach requires that the transport protocol does not implement
+ a fully reliable in-order data transfer service (e.g., like TCP).
+ QUIC with the unreliable datagram extension [RFC9221] is an example
+ of a protocol for which this is relevant. In cases where the
+ partially reliable transport is blocked and a fallback to a reliable
+ transport is proposed, there is a risk for bad interactions between
+ reliability at the transport level and coding schemes. For reliable
+ transfers, coding usage does not guarantee better performance;
+ instead, it would mainly reduce goodput.
+
+3.1. Fairness and Impact on Non-coded Flows
+
+ The addition of coding within the flow does not influence the
+ interaction between coded and non-coded flows. This interaction
+ would mainly depend on the congestion controls associated with each
+ flow.
+
+3.2. Congestion Control and Recovered Symbols
+
+ The congestion control mechanism receives network packets and may not
+ be able to differentiate repair symbols from actual source ones.
+ This differentiation requires a transport protocol to provide more
+ than the services described in [RFC8095], such as specifically
+ indicating what information has been repaired. The relevance of
+ adding coding at the application layer is related to the needs of the
+ application. For real-time applications using an unreliable or
+ partially reliable transport, this approach may reduce the number of
+ losses perceived by the application.
+
+3.3. Interactions between Congestion Control and Coding Rates
+
+ The coding rate applied at the application layer mainly depends on
+ the available rate or congestion window given by the congestion
+ control underneath. The coding rate could be adapted to avoid adding
+ overhead when the minimum required data rate of the application is
+ not provided by the congestion control underneath. When the
+ congestion control allows sending faster than the application needs,
+ adding coding can reduce packet losses and improve the quality of
+ experience (provided that an unreliable or partially reliable
+ transport is used).
+
+3.4. On Useless Repair Symbols
+
+ The only case where adding useless repair symbols does not obviously
+ result in reduced goodput is when the application rate is limited
+ (e.g., VoIP traffic). In this case, useless repair symbols would
+ only impact the amount of data generated in the network. Extra data
+ in the network can, however, increase the likelihood of increasing
+ delay and/or packet loss, which could provoke a congestion control
+ reaction that would degrade goodput.
+
+3.5. On Partial Ordering at FEC Level
+
+ Irrespective of the transport protocol, a FEC mechanism does not
+ require implementing a reordering mechanism if the application does
+ not need it. However, if the application needs in-order delivery of
+ packets, a reordering mechanism at the receiver is required.
+
+3.6. On Partial Reliability at FEC Level
+
+ The application may require partial reliability. In this case, the
+ coding rate of a FEC mechanism could be adapted based on inputs from
+ the application and the trade-off between latency and packet loss.
+ Partial reliability impacts the type of FEC and type of codec that
+ can be used, such as discussed in Section 2.5.
+
+3.7. On Multipath Transport and FEC Mechanism
+
+ Whether the transport protocol exploits multiple paths or not does
+ not have an impact on the FEC mechanism.
+
+4. FEC within the Transport
+
+ | source ^ source
+ | packets | packets
+ v |
+ +------------+ +------------+
+ | Transport | | Transport |
+ | | | |
+ | +---+ +--+ | signaling| +---+ +--+ |
+ | |FEC| |CC| | recovered| |FEC| |CC| |
+ | +---+ +--+ | symbols| +---+ +--+ |
+ | | <==| |
+ | |network network| |
+ | |packets information| |
+ +------------+ ==> <==+------------+
+
+ SENDER RECEIVER
+
+ Figure 8: FEC in the Transport
+
+ Figure 8 presents an architecture where FEC operates within the
+ transport. The repair symbols are sent within what the congestion
+ window or calculated rate allows, such as in [CTCP].
+
+ The advantage of this approach is that it allows a joint optimization
+ of CC and FEC. Moreover, the transmission of repair symbols does not
+ add congestion in potentially congested networks but helps repair
+ lost packets (such as tail losses). This joint optimization is the
+ key to prevent flows to consume the whole available capacity. The
+ amount of repair traffic injected should not lead to congestion. As
+ denoted in [FEC-CONGESTION-CONTROL], an increase of the repair ratio
+ should be done conjointly with a decrease of the source sending rate.
+
+ The drawback of this approach is that it may require specific
+ signaling and transport services that may not be described in
+ [RFC8095]. Therefore, development and maintenance may require
+ specific efforts at both the transport and the coding levels, and the
+ design of the solution may end up being complex to suit different
+ deployment needs.
+
+ For reliable transfers, including redundancy reduces goodput for long
+ transfers, but the amount of repair symbols can be adapted, e.g.,
+ depending on the congestion window size. There is a trade-off
+ between 1) the capacity that could have been exploited by application
+ data instead of transmitting source packets and 2) the benefits
+ derived from transmitting repair symbols (e.g., unlocking the receive
+ buffer if it is limiting). The coding ratio needs to be carefully
+ designed. For small files, sending repair symbols when there is no
+ more data to transmit could help to reduce the transfer time.
+ Sending repair symbols can avoid the silence period between the
+ transmission of the last packet in the send buffer and 1) firing a
+ retransmission of lost packets or 2) the transmission of new packets.
+
+ Examples of the solution could be to add a given percentage of the
+ congestion window or rate as supplementary symbols or to send a fixed
+ amount of repair symbols at a fixed rate. The redundancy flow can be
+ decorrelated from the congestion control that manages source packets;
+ a separate congestion control entity could be introduced to manage
+ the amount of recovered symbols to transmit on the FEC channel. The
+ separate congestion control instances could be made to work together
+ while adhering to priorities, as in coupled congestion control for
+ RTP media [RFC8699] in case all traffic can be assumed to take the
+ same path, or otherwise with a multipath congestion window coupling
+ mechanism as in Multipath TCP [RFC6356]. Another possibility would
+ be to exploit a lower-than-best-effort congestion control [RFC6297]
+ for repair symbols.
+
+4.1. Fairness and Impact on Non-coded Flows
+
+ Specific interaction between congestion controls and coding schemes
+ can be proposed (see Sections 4.2 and 4.3). If no specific
+ interaction is introduced, the coding scheme may hide congestion
+ losses from the congestion controller, and the description of
+ Section 5 may apply.
+
+4.2. Interactions between Congestion Control and Coding Rates
+
+ The receiver can differentiate between source packets and repair
+ symbols. The receiver may indicate both the number of source packets
+ received and the repair symbols that were actually useful in the
+ recovery process of packets. The congestion control at the sender
+ can then exploit this information to tune congestion control
+ behavior.
+
+ There is an important flexibility in the trade-off, inherent to the
+ use of coding, between (1) reducing goodput when useless repair
+ symbols are transmitted and (2) helping to recover from losses
+ earlier than with retransmissions. The receiver may indicate to the
+ sender the number of packets that have been received or recovered.
+ The sender may use this information to tune the coding ratio. For
+ example, coupling an increased transmission rate with an increasing
+ or decreasing coding rate could be envisioned. A server may use a
+ decreasing coding rate as a probe of the channel capacity and adapt
+ the congestion control transmission rate.
+
+4.3. On Useless Repair Symbols
+
+ The sender may exploit the information given by the receiver to
+ reduce the number of useless repair symbols and improve goodput.
+
+4.4. On Partial Ordering at FEC and/or Transport Level
+
+ The application may require in-order delivery of packets. In this
+ case, both FEC and transport-layer mechanisms should guarantee that
+ packets are delivered in order. If partial ordering is requested by
+ the application, both the FEC and transport could relax the
+ constraints related to in-order delivery; partial ordering impacts
+ both the congestion control and the type of FEC and type of codec
+ that can be used.
+
+4.5. On Partial Reliability at FEC Level
+
+ The application may require partial reliability. The reliability
+ offered by FEC may be sufficient with no retransmission required.
+ This depends on application needs and the trade-off between latency
+ and loss. Partial reliability impacts the type of FEC and type of
+ codec that can be used, such as discussed in Section 2.5.
+
+4.6. On Transport Multipath and Subpath FEC Coding Rate
+
+ The sender may adapt the coding rate of each of the single subpaths
+ whether the congestion control is coupled or not. There is an
+ important flexibility on how the coding rate is tuned depending on
+ the characteristics of each subpath.
+
+5. FEC below the Transport
+
+ | source ^ source
+ | packets | packets
+ v |
+ +--------------+ +--------------+
+ |Transport | network|Transport |
+ |(including CC)| information| |
+ | | <==| |
+ +--------------+ +--------------+
+ | network packets ^ network packets
+ v |
+ +--------------+ +--------------+
+ | FEC |source | FEC |
+ | |and/or signaling| |
+ | |repair recovered| |
+ | |symbols symbols| |
+ | |==> <==| |
+ +--------------+ +--------------+
+
+ SENDER RECEIVER
+
+ Figure 9: FEC below the Transport
+
+ Figure 9 presents an architecture where FEC is applied end to end
+ below the transport layer but above the link layer. Note that it is
+ common to apply FEC at the link layer on one or more of the links
+ that make up the end-to-end path. The application of FEC at the link
+ layer contributes to the total capacity that a link exposes to upper
+ layers, but it may not be visible to either the end-to-end sender or
+ the receiver, if the end-to-end sender and receiver are separated by
+ more than one link; this is therefore out of scope for this document.
+ This includes the use of FEC on top of a link layer in scenarios
+ where the link is known by configuration. In the scenario considered
+ here, the repair symbols are not visible to the end-to-end congestion
+ controller and may be sent on top of what is allowed by the
+ congestion control.
+
+ Including redundancy adds traffic without reducing goodput but incurs
+ potential fairness issues. The effective bit rate is higher than the
+ CC's computed fair share due to the transmission of repair symbols,
+ and losses are hidden from the transport. This may cause a problem
+ for loss-based congestion detection, but it is not a problem for
+ delay-based congestion detection.
+
+ The advantage of this approach is that it can result in performance
+ gains when there are persistent transmission losses along the path.
+
+ The drawback of this approach is that it can induce congestion in
+ already congested networks. The coding ratio needs to be carefully
+ designed.
+
+ Examples of the solution could be to add a given percentage of the
+ congestion window or rate as supplementary symbols or to send a fixed
+ amount of repair symbols at a fixed rate. The redundancy flow can be
+ decorrelated from the congestion control that manages source packets;
+ a separate congestion control entity could be introduced to manage
+ the amount of recovered symbols to transmit on the FEC channel. The
+ separate congestion control instances could be made to work together
+ while adhering to priorities, as in coupled congestion control for
+ RTP media [RFC8699] in case all traffic can be assumed to take the
+ same path, or otherwise with a multipath congestion window coupling
+ mechanism as in Multipath TCP [RFC6356]. Another possibility would
+ be to exploit a lower-than-best-effort congestion control [RFC6297]
+ for repair symbols.
+
+5.1. Fairness and Impact on Non-coded Flows
+
+ The coding scheme may hide congestion losses from the congestion
+ controller. There are cases where this can drastically reduce the
+ goodput of non-coded flows. Depending on the congestion control, it
+ may be possible to signal to the congestion control mechanism that
+ there was congestion (loss) even when a packet has been recovered,
+ e.g., using ECN, to reduce the impact on the non-coded flows (see
+ Section 5.2 and [TENTET]).
+
+5.2. Congestion Control and Recovered Symbols
+
+ The congestion control may not be aware of the existence of a coding
+ scheme underneath it. The congestion control may behave as if no
+ coding scheme had been introduced. The only way for a coding channel
+ to indicate that symbols have been lost but recovered is to exploit
+ existing signaling that is understood by the congestion control
+ mechanism. An example would be to indicate to a TCP sender that a
+ packet has been received, yet congestion has occurred, by using ECN
+ signaling [TENTET].
+
+5.3. Interactions between Congestion Control and Coding Rates
+
+ The coding rate can be tuned depending on the number of recovered
+ symbols and the rate at which the sender transmits data. If the
+ coding scheme is not aware of the congestion control implementation,
+ it is hard for the coding scheme to apply the relevant coding rate.
+
+5.4. On Useless Repair Symbols
+
+ Useless repair symbols only impact the load on the network without
+ actual gain for the coded flow. Using feedback signaling, FEC
+ mechanisms can measure the ratio between the number of symbols that
+ were actually used and the number of symbols that were useless, and
+ adjust the coding rate.
+
+5.5. On Partial Ordering at FEC Level with In-Order Delivery Transport
+
+ The transport above the FEC channel may support out-of-order delivery
+ of packets; reordering mechanisms at the receiver may not be
+ necessary. In cases where the transport requires in-order delivery,
+ the FEC channel may need to implement a reordering mechanism.
+ Otherwise, spurious retransmissions may occur at the transport level.
+
+5.6. On Partial Reliability at FEC Level
+
+ The transport or application layer above the FEC channel may require
+ partial reliability only. FEC may provide an unnecessary service
+ unless it is aware of the reliability requirements. Partial
+ reliability impacts the type of FEC and codec that can be used, such
+ as discussed in Section 2.5.
+
+5.7. FEC Not Aware of Transport Multipath
+
+ The transport may exploit multiple paths without the FEC channel
+ being aware of it. If FEC is aware that multiple paths are in use,
+ FEC can be applied to all subflows as an aggregate, or to each of the
+ subflows individually. If FEC is not aware that multiple paths are
+ in use, FEC can only be applied to each subflow individually. When
+ FEC is applied to all the flows as an aggregate, the varying
+ characteristics of the individual paths may lead to a risk for the
+ coding rate to be inadequate for the characteristics of the
+ individual paths.
+
+6. Research Recommendations and Questions
+
+ This section provides a short state-of-the art overview of activities
+ related to congestion control and coding. The objective is to
+ identify open research questions and contribute to advice when
+ evaluating coding mechanisms.
+
+6.1. Activities Related to Congestion Control and Coding
+
+ We map activities related to congestion control and coding with the
+ organization presented in this document:
+
+ For the FEC above transport case: [RFC8680]
+
+ For the FEC within transport case: [CODING-FOR-QUIC], [QUIC-FEC],
+ and [RFC5109]
+
+ For the FEC below transport case: [NCTCP] and [TETRYS]
+
+6.2. Open Research Questions
+
+ There is a general trade-off, inherent to the use of coding, between
+ (1) reducing goodput when useless repair symbols are transmitted and
+ (2) helping to recover from transmission and congestion losses.
+
+6.2.1. Parameter Derivation
+
+ There is a trade-off related to the amount of redundancy to add as a
+ function of the transport-layer protocol and application
+ requirements.
+
+ [RFC8095] describes the mechanisms provided by existing IETF
+ protocols such as TCP, SCTP, or RTP. [RFC8406] describes the variety
+ of coding techniques. The number of combinations makes the
+ determination of an optimum parameters derivation very complex. This
+ depends on application requirements and deployment context.
+
+ Appendix C of [RFC8681] describes how to tune the parameters for a
+ target use case. However, this discussion does not integrate
+ congestion-controlled end points.
+
+ Research question 1: "Is there a way to dynamically adjust the codec
+ characteristics depending on the transmission channel, the
+ transport protocol, and application requirements?"
+
+ Research question 2: "Should we apply specific per-stream FEC
+ mechanisms when multiple streams with different reliability needs
+ are carried out?"
+
+6.2.2. New Signaling Methods and Fairness
+
+ Recovering lost symbols may hide congestion losses from the
+ congestion control. Disambiguating ACKed packets from rebuilt
+ packets would help the sender adapt its sending rate accordingly.
+ There are opportunities for introducing interaction between
+ congestion control and coding schemes to improve the quality of
+ experience while guaranteeing fairness with other flows.
+
+ Some existing solutions already propose to disambiguate ACKed packets
+ from rebuilt packets [QUIC-FEC]. New signaling methods and FEC-
+ recovery-aware congestion controls could be proposed. This would
+ allow the design of adaptive coding rates.
+
+ Research question 3: "Should we quantify the harm that a coded flow
+ would induce on a non-coded flow? How can this be reduced while
+ still benefiting from advantages brought by FEC?"
+
+ Research question 4: "If transport and FEC senders are collocated
+ and close to the client, and FEC is applied only on the last mile,
+ e.g., to ignore losses on a noisy wireless link, would this raise
+ fairness issues?"
+
+ Research question 5: "Should we propose a generic API to allow
+ dynamic interactions between a transport protocol and a coding
+ scheme? This should consider existing APIs between application
+ and transport layers."
+
+6.3. Recommendations and Advice for Evaluating Coding Mechanisms
+
+ Research Recommendation 1: "From a congestion control point of view,
+ a recovered packet must be considered as a lost packet. This does
+ not apply to the usage of FEC on a path that is known to be
+ lossy."
+
+ Research Recommendation 2: "New research contributions should be
+ mapped following the organization of this document (above, below,
+ and in the congestion control) and should consider congestion
+ control aspects when proposing and comparing FEC coding solutions
+ in communication systems."
+
+ Research Recommendation 3: "When a research work aims at improving
+ throughput by hiding the packet loss signal from congestion
+ control (e.g., because the path between the sender and receiver is
+ known to consist of a noisy wireless link), the authors should 1)
+ discuss the advantages of using the proposed FEC solution compared
+ to replacing the congestion control by one that ignores a portion
+ of the encountered losses and 2) critically discuss the impact of
+ hiding packet loss from the congestion control mechanism."
+
+7. IANA Considerations
+
+ This document has no IANA actions.
+
+8. Security Considerations
+
+ FEC and CC schemes can contribute to DoS attacks. Moreover, the
+ transmission of signaling messages from the client to the server
+ should be protected and reliable; otherwise, an attacker may
+ compromise FEC rate adaptation. Indeed, an attacker could either
+ modify the values indicated by the client or drop signaling messages.
+
+ In case of FEC below the transport, the aggregate rate of source and
+ repair packets may exceed the rate at which a congestion control
+ mechanism allows an application to send. This could result in an
+ application obtaining more than its fair share of the network
+ capacity.
+
+9. Informative References
+
+ [BEYONDJAIN]
+ Ware, R., Mukerjee, M. K., Seshan, S., and J. Sherry,
+ "Beyond Jain's Fairness Index: Setting the Bar For The
+ Deployment of Congestion Control Algorithms", HotNets '19:
+ Proceedings of the 18th ACM Workshop on Hot Topics in
+ Networks, DOI 10.1145/3365609.3365855, November 2019,
+ <https://doi.org/10.1145/3365609.3365855>.
+
+ [CODING-FOR-QUIC]
+ Swett, I., Montpetit, M., Roca, V., and F. Michel, "Coding
+ for QUIC", Work in Progress, Internet-Draft, draft-swett-
+ nwcrg-coding-for-quic-04, 9 March 2020,
+ <https://datatracker.ietf.org/doc/html/draft-swett-nwcrg-
+ coding-for-quic-04>.
+
+ [CTCP] Kim, M., Cloud, J., ParandehGheibi, A., Urbina, L., Fouli,
+ K., Leith, D., and M. Medard, "Network Coded TCP (CTCP)",
+ arXiv: 1212.2291v3, DOI 10.48550/arXiv.1212.2291, April
+ 2013, <https://doi.org/10.48550/arXiv.1212.2291>.
+
+ [FEC-CONGESTION-CONTROL]
+ Singh, V., Nagy, M., Ott, J., and L. Eggert, "Congestion
+ Control Using FEC for Conversational Media", Work in
+ Progress, Internet-Draft, draft-singh-rmcat-adaptive-fec-
+ 03, 20 March 2016, <https://datatracker.ietf.org/doc/html/
+ draft-singh-rmcat-adaptive-fec-03>.
+
+ [FLOW-RATE-FAIRNESS]
+ Briscoe, B., "Flow Rate Fairness: Dismantling a Religion",
+ Work in Progress, Internet-Draft, draft-briscoe-tsvarea-
+ fair-02, 11 July 2007,
+ <https://datatracker.ietf.org/doc/html/draft-briscoe-
+ tsvarea-fair-02>.
+
+ [NCTCP] Sundararajan, J., Shah, D., Médard, M., Jakubczak, S.,
+ Mitzenmacher, M., and J. Barros, "Network Coding Meets
+ TCP: Theory and Implementation", Proceedings of the IEEE
+ (Volume: 99, Issue: 3), DOI 10.1109/JPROC.2010.2093850,
+ March 2011, <https://doi.org/10.1109/JPROC.2010.2093850>.
+
+ [QUIC-FEC] Michel, F., De Coninck, Q., and O. Bonaventure, "QUIC-FEC:
+ Bringing the benefits of Forward Erasure Correction to
+ QUIC", DOI 10.23919/IFIPNetworking.2019.8816838, May 2019,
+ <https://doi.org/10.23919/IFIPNetworking.2019.8816838>.
+
+ [RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition
+ of Explicit Congestion Notification (ECN) to IP",
+ RFC 3168, DOI 10.17487/RFC3168, September 2001,
+ <https://www.rfc-editor.org/info/rfc3168>.
+
+ [RFC3758] Stewart, R., Ramalho, M., Xie, Q., Tuexen, M., and P.
+ Conrad, "Stream Control Transmission Protocol (SCTP)
+ Partial Reliability Extension", RFC 3758,
+ DOI 10.17487/RFC3758, May 2004,
+ <https://www.rfc-editor.org/info/rfc3758>.
+
+ [RFC4340] Kohler, E., Handley, M., and S. Floyd, "Datagram
+ Congestion Control Protocol (DCCP)", RFC 4340,
+ DOI 10.17487/RFC4340, March 2006,
+ <https://www.rfc-editor.org/info/rfc4340>.
+
+ [RFC5109] Li, A., Ed., "RTP Payload Format for Generic Forward Error
+ Correction", RFC 5109, DOI 10.17487/RFC5109, December
+ 2007, <https://www.rfc-editor.org/info/rfc5109>.
+
+ [RFC5681] Allman, M., Paxson, V., and E. Blanton, "TCP Congestion
+ Control", RFC 5681, DOI 10.17487/RFC5681, September 2009,
+ <https://www.rfc-editor.org/info/rfc5681>.
+
+ [RFC6297] Welzl, M. and D. Ros, "A Survey of Lower-than-Best-Effort
+ Transport Protocols", RFC 6297, DOI 10.17487/RFC6297, June
+ 2011, <https://www.rfc-editor.org/info/rfc6297>.
+
+ [RFC6356] Raiciu, C., Handley, M., and D. Wischik, "Coupled
+ Congestion Control for Multipath Transport Protocols",
+ RFC 6356, DOI 10.17487/RFC6356, October 2011,
+ <https://www.rfc-editor.org/info/rfc6356>.
+
+ [RFC8095] Fairhurst, G., Ed., Trammell, B., Ed., and M. Kuehlewind,
+ Ed., "Services Provided by IETF Transport Protocols and
+ Congestion Control Mechanisms", RFC 8095,
+ DOI 10.17487/RFC8095, March 2017,
+ <https://www.rfc-editor.org/info/rfc8095>.
+
+ [RFC8406] Adamson, B., Adjih, C., Bilbao, J., Firoiu, V., Fitzek,
+ F., Ghanem, S., Lochin, E., Masucci, A., Montpetit, M-J.,
+ Pedersen, M., Peralta, G., Roca, V., Ed., Saxena, P., and
+ S. Sivakumar, "Taxonomy of Coding Techniques for Efficient
+ Network Communications", RFC 8406, DOI 10.17487/RFC8406,
+ June 2018, <https://www.rfc-editor.org/info/rfc8406>.
+
+ [RFC8680] Roca, V. and A. Begen, "Forward Error Correction (FEC)
+ Framework Extension to Sliding Window Codes", RFC 8680,
+ DOI 10.17487/RFC8680, January 2020,
+ <https://www.rfc-editor.org/info/rfc8680>.
+
+ [RFC8681] Roca, V. and B. Teibi, "Sliding Window Random Linear Code
+ (RLC) Forward Erasure Correction (FEC) Schemes for
+ FECFRAME", RFC 8681, DOI 10.17487/RFC8681, January 2020,
+ <https://www.rfc-editor.org/info/rfc8681>.
+
+ [RFC8699] Islam, S., Welzl, M., and S. Gjessing, "Coupled Congestion
+ Control for RTP Media", RFC 8699, DOI 10.17487/RFC8699,
+ January 2020, <https://www.rfc-editor.org/info/rfc8699>.
+
+ [RFC9221] Pauly, T., Kinnear, E., and D. Schinazi, "An Unreliable
+ Datagram Extension to QUIC", RFC 9221,
+ DOI 10.17487/RFC9221, March 2022,
+ <https://www.rfc-editor.org/info/rfc9221>.
+
+ [TENTET] Lochin, E., "On the joint use of TCP and Network Coding",
+ NWCRG Session, IETF 100, November 2017,
+ <https://datatracker.ietf.org/meeting/100/materials/
+ slides-100-nwcrg-07-lochin-on-the-joint-use-of-tcp-and-
+ network-coding-00>.
+
+ [TETRYS] Detchart, J., Lochin, E., Lacan, J., and V. Roca, "Tetrys,
+ an On-the-Fly Network Coding protocol", Work in Progress,
+ Internet-Draft, draft-detchart-nwcrg-tetrys-08, 17 October
+ 2021, <https://datatracker.ietf.org/doc/html/draft-
+ detchart-nwcrg-tetrys-08>.
+
+Acknowledgements
+
+ Many thanks to Spencer Dawkins, Dave Oran, Carsten Bormann, Vincent
+ Roca, and Marie-Jose Montpetit for their useful comments that helped
+ improve the document.
+
+Authors' Addresses
+
+ Nicolas Kuhn
+ CNES
+ Email: nicolas.kuhn.ietf@gmail.com
+
+
+ Emmanuel Lochin
+ ENAC
+ Email: emmanuel.lochin@enac.fr
+
+
+ François Michel
+ UCLouvain
+ Email: francois.michel@uclouvain.be
+
+
+ Michael Welzl
+ University of Oslo
+ Email: michawe@ifi.uio.no