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