| < draft-ietf-tsvwg-ecn-l4s-id-27.txt | draft-ietf-tsvwg-ecn-l4s-id-28a.txt > | |||
|---|---|---|---|---|
| Transport Services (tsv) K. De Schepper | Transport Services (tsv) K. De Schepper | |||
| Internet-Draft Nokia Bell Labs | Internet-Draft Nokia Bell Labs | |||
| Intended status: Experimental B. Briscoe, Ed. | Intended status: Experimental B. Briscoe, Ed. | |||
| Expires: 28 January 2023 Independent | Expires: 5 February 2023 Independent | |||
| 27 July 2022 | 4 August 2022 | |||
| Explicit Congestion Notification (ECN) Protocol for Very Low Queuing | Explicit Congestion Notification (ECN) Protocol for Very Low Queuing | |||
| Delay (L4S) | Delay (L4S) | |||
| draft-ietf-tsvwg-ecn-l4s-id-27 | draft-ietf-tsvwg-ecn-l4s-id-28 | |||
| Abstract | Abstract | |||
| This specification defines the protocol to be used for a new network | This specification defines the protocol to be used for a new network | |||
| service called low latency, low loss and scalable throughput (L4S). | service called low latency, low loss and scalable throughput (L4S). | |||
| L4S uses an Explicit Congestion Notification (ECN) scheme at the IP | L4S uses an Explicit Congestion Notification (ECN) scheme at the IP | |||
| layer that is similar to the original (or 'Classic') ECN approach, | layer that is similar to the original (or 'Classic') ECN approach, | |||
| except as specified within. L4S uses 'scalable' congestion control, | except as specified within. L4S uses 'scalable' congestion control, | |||
| which induces much more frequent control signals from the network and | which induces much more frequent control signals from the network and | |||
| it responds to them with much more fine-grained adjustments, so that | it responds to them with much more fine-grained adjustments, so that | |||
| very low (typically sub-millisecond on average) and consistently low | very low (typically sub-millisecond on average) and consistently low | |||
| queuing delay becomes possible for L4S traffic without compromising | queuing delay becomes possible for L4S traffic without compromising | |||
| link utilization. Thus even capacity-seeking (TCP-like) traffic can | link utilization. Thus even capacity-seeking (TCP-like) traffic can | |||
| have high bandwidth and very low delay at the same time, even during | have high bandwidth and very low delay at the same time, even during | |||
| periods of high traffic load. | periods of high traffic load. The L4S identifier defined in this | |||
| document distinguishes L4S from 'Classic' (e.g. TCP-Reno-friendly) | ||||
| The L4S identifier defined in this document distinguishes L4S from | traffic. Then, network bottlenecks can be incrementally modified to | |||
| 'Classic' (e.g. TCP-Reno-friendly) traffic. It gives an incremental | ||||
| migration path so that suitably modified network bottlenecks can | ||||
| distinguish and isolate existing traffic that still follows the | distinguish and isolate existing traffic that still follows the | |||
| Classic behaviour, to prevent it degrading the low queuing delay and | Classic behaviour, to prevent it degrading the low queuing delay and | |||
| low loss of L4S traffic. This specification defines the rules that | low loss of L4S traffic. This experimental track specification | |||
| L4S transports and network elements need to follow with the intention | defines the rules that L4S transports and network elements need to | |||
| that L4S flows neither harm each other's performance nor that of | follow, with the intention that L4S flows neither harm each other's | |||
| Classic traffic. Examples of new active queue management (AQM) | performance nor that of Classic traffic. It also suggests open | |||
| marking algorithms and examples of new transports (whether TCP-like | questions to be investigated during experimentation. Examples of new | |||
| or real-time) are specified separately. | active queue management (AQM) marking algorithms and examples of new | |||
| transports (whether TCP-like or real-time) are specified separately. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on 28 January 2023. | This Internet-Draft will expire on 5 February 2023. | |||
| 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 (https://trustee.ietf.org/ | |||
| license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
| Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
| skipping to change at page 2, line 32 ¶ | skipping to change at page 2, line 32 ¶ | |||
| extracted from this document must include Revised BSD License text as | extracted from this document must include Revised BSD License text as | |||
| described in Section 4.e of the Trust Legal Provisions and are | described in Section 4.e of the Trust Legal Provisions and are | |||
| provided without warranty as described in the Revised BSD License. | provided without warranty as described in the Revised BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 1.1. Latency, Loss and Scaling Problems . . . . . . . . . . . 5 | 1.1. Latency, Loss and Scaling Problems . . . . . . . . . . . 5 | |||
| 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 7 | 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 1.3. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 1.3. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 2. Choice of L4S Packet Identifier: Requirements . . . . . . . . 10 | 2. L4S Packet Identification: Document Roadmap . . . . . . . . . 10 | |||
| 3. L4S Packet Identification . . . . . . . . . . . . . . . . . . 11 | 3. Choice of L4S Packet Identifier: Requirements . . . . . . . . 11 | |||
| 4. Transport Layer Behaviour (the 'Prague Requirements') . . . . 11 | 4. Transport Layer Behaviour (the 'Prague Requirements') . . . . 12 | |||
| 4.1. Codepoint Setting . . . . . . . . . . . . . . . . . . . . 12 | 4.1. Codepoint Setting . . . . . . . . . . . . . . . . . . . . 12 | |||
| 4.2. Prerequisite Transport Feedback . . . . . . . . . . . . . 12 | 4.2. Prerequisite Transport Feedback . . . . . . . . . . . . . 13 | |||
| 4.3. Prerequisite Congestion Response . . . . . . . . . . . . 13 | 4.3. Prerequisite Congestion Response . . . . . . . . . . . . 14 | |||
| 4.3.1. Guidance on Congestion Response in the RFC Series . . 16 | 4.3.1. Guidance on Congestion Response in the RFC Series . . 17 | |||
| 4.4. Filtering or Smoothing of ECN Feedback . . . . . . . . . 19 | 4.4. Filtering or Smoothing of ECN Feedback . . . . . . . . . 20 | |||
| 5. Network Node Behaviour . . . . . . . . . . . . . . . . . . . 19 | 5. Network Node Behaviour . . . . . . . . . . . . . . . . . . . 20 | |||
| 5.1. Classification and Re-Marking Behaviour . . . . . . . . . 19 | 5.1. Classification and Re-Marking Behaviour . . . . . . . . . 20 | |||
| 5.2. The Strength of L4S CE Marking Relative to Drop . . . . . 21 | 5.2. The Strength of L4S CE Marking Relative to Drop . . . . . 22 | |||
| 5.3. Exception for L4S Packet Identification by Network Nodes | 5.3. Exception for L4S Packet Identification by Network Nodes | |||
| with Transport-Layer Awareness . . . . . . . . . . . . . 22 | with Transport-Layer Awareness . . . . . . . . . . . . . 23 | |||
| 5.4. Interaction of the L4S Identifier with other | 5.4. Interaction of the L4S Identifier with other | |||
| Identifiers . . . . . . . . . . . . . . . . . . . . . . . 22 | Identifiers . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 5.4.1. DualQ Examples of Other Identifiers Complementing L4S | 5.4.1. DualQ Examples of Other Identifiers Complementing L4S | |||
| Identifiers . . . . . . . . . . . . . . . . . . . . . 22 | Identifiers . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 5.4.1.1. Inclusion of Additional Traffic with L4S . . . . 22 | 5.4.1.1. Inclusion of Additional Traffic with L4S . . . . 23 | |||
| 5.4.1.2. Exclusion of Traffic From L4S Treatment . . . . . 24 | 5.4.1.2. Exclusion of Traffic From L4S Treatment . . . . . 25 | |||
| 5.4.1.3. Generalized Combination of L4S and Other | 5.4.1.3. Generalized Combination of L4S and Other | |||
| Identifiers . . . . . . . . . . . . . . . . . . . . 25 | Identifiers . . . . . . . . . . . . . . . . . . . . 26 | |||
| 5.4.2. Per-Flow Queuing Examples of Other Identifiers | 5.4.2. Per-Flow Queuing Examples of Other Identifiers | |||
| Complementing L4S Identifiers . . . . . . . . . . . . 27 | Complementing L4S Identifiers . . . . . . . . . . . . 28 | |||
| 5.5. Limiting Packet Bursts from Links . . . . . . . . . . . . 27 | 5.5. Limiting Packet Bursts from Links . . . . . . . . . . . . 28 | |||
| 5.5.1. Limiting Packet Bursts from Links Fed by an L4S | 5.5.1. Limiting Packet Bursts from Links Fed by an L4S | |||
| AQM . . . . . . . . . . . . . . . . . . . . . . . . . 27 | ||||
| 5.5.2. Limiting Packet Bursts from Links Upstream of an L4S | ||||
| AQM . . . . . . . . . . . . . . . . . . . . . . . . . 28 | AQM . . . . . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 6. Behaviour of Tunnels and Encapsulations . . . . . . . . . . . 28 | 5.5.2. Limiting Packet Bursts from Links Upstream of an L4S | |||
| 6.1. No Change to ECN Tunnels and Encapsulations in General . 28 | AQM . . . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 6.2. VPN Behaviour to Avoid Limitations of Anti-Replay . . . . 29 | 6. Behaviour of Tunnels and Encapsulations . . . . . . . . . . . 29 | |||
| 7. L4S Experiments . . . . . . . . . . . . . . . . . . . . . . . 30 | 6.1. No Change to ECN Tunnels and Encapsulations in General . 29 | |||
| 7.1. Open Questions . . . . . . . . . . . . . . . . . . . . . 30 | 6.2. VPN Behaviour to Avoid Limitations of Anti-Replay . . . . 30 | |||
| 7.2. Open Issues . . . . . . . . . . . . . . . . . . . . . . . 32 | 7. L4S Experiments . . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 7.3. Future Potential . . . . . . . . . . . . . . . . . . . . 32 | 7.1. Open Questions . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33 | 7.2. Open Issues . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 33 | 7.3. Future Potential . . . . . . . . . . . . . . . . . . . . 33 | |||
| 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 34 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34 | |||
| 10.1. Normative References . . . . . . . . . . . . . . . . . . 34 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 34 | |||
| 10.2. Informative References . . . . . . . . . . . . . . . . . 35 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 35 | |||
| Appendix A. Rationale for the 'Prague L4S Requirements' . . . . 44 | 10.1. Normative References . . . . . . . . . . . . . . . . . . 35 | |||
| 10.2. Informative References . . . . . . . . . . . . . . . . . 36 | ||||
| Appendix A. Rationale for the 'Prague L4S Requirements' . . . . 45 | ||||
| A.1. Rationale for the Requirements for Scalable Transport | A.1. Rationale for the Requirements for Scalable Transport | |||
| Protocols . . . . . . . . . . . . . . . . . . . . . . . . 45 | Protocols . . . . . . . . . . . . . . . . . . . . . . . . 46 | |||
| A.1.1. Use of L4S Packet Identifier . . . . . . . . . . . . 45 | A.1.1. Use of L4S Packet Identifier . . . . . . . . . . . . 46 | |||
| A.1.2. Accurate ECN Feedback . . . . . . . . . . . . . . . . 45 | A.1.2. Accurate ECN Feedback . . . . . . . . . . . . . . . . 46 | |||
| A.1.3. Capable of Replacement by Classic Congestion | A.1.3. Capable of Replacement by Classic Congestion | |||
| Control . . . . . . . . . . . . . . . . . . . . . . . 46 | Control . . . . . . . . . . . . . . . . . . . . . . . 47 | |||
| A.1.4. Fall back to Classic Congestion Control on Packet | A.1.4. Fall back to Classic Congestion Control on Packet | |||
| Loss . . . . . . . . . . . . . . . . . . . . . . . . 46 | Loss . . . . . . . . . . . . . . . . . . . . . . . . 47 | |||
| A.1.5. Coexistence with Classic Congestion Control at Classic | A.1.5. Coexistence with Classic Congestion Control at Classic | |||
| ECN bottlenecks . . . . . . . . . . . . . . . . . . . 47 | ECN bottlenecks . . . . . . . . . . . . . . . . . . . 48 | |||
| A.1.6. Reduce RTT dependence . . . . . . . . . . . . . . . . 51 | A.1.6. Reduce RTT dependence . . . . . . . . . . . . . . . . 51 | |||
| A.1.7. Scaling down to fractional congestion windows . . . . 52 | A.1.7. Scaling down to fractional congestion windows . . . . 53 | |||
| A.1.8. Measuring Reordering Tolerance in Time Units . . . . 53 | A.1.8. Measuring Reordering Tolerance in Time Units . . . . 54 | |||
| A.2. Scalable Transport Protocol Optimizations . . . . . . . . 56 | A.2. Scalable Transport Protocol Optimizations . . . . . . . . 57 | |||
| A.2.1. Setting ECT in Control Packets and Retransmissions . 56 | A.2.1. Setting ECT in Control Packets and Retransmissions . 57 | |||
| A.2.2. Faster than Additive Increase . . . . . . . . . . . . 57 | A.2.2. Faster than Additive Increase . . . . . . . . . . . . 57 | |||
| A.2.3. Faster Convergence at Flow Start . . . . . . . . . . 57 | A.2.3. Faster Convergence at Flow Start . . . . . . . . . . 58 | |||
| Appendix B. Compromises in the Choice of L4S Identifier . . . . 58 | Appendix B. Compromises in the Choice of L4S Identifier . . . . 58 | |||
| Appendix C. Potential Competing Uses for the ECT(1) Codepoint . 63 | Appendix C. Potential Competing Uses for the ECT(1) Codepoint . 63 | |||
| C.1. Integrity of Congestion Feedback . . . . . . . . . . . . 63 | C.1. Integrity of Congestion Feedback . . . . . . . . . . . . 63 | |||
| C.2. Notification of Less Severe Congestion than CE . . . . . 64 | C.2. Notification of Less Severe Congestion than CE . . . . . 65 | |||
| Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 65 | Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 65 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 65 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 66 | |||
| 1. Introduction | 1. Introduction | |||
| This specification defines the protocol to be used for a new network | This specification defines the protocol to be used for a new network | |||
| service called low latency, low loss and scalable throughput (L4S). | service called low latency, low loss and scalable throughput (L4S). | |||
| L4S uses an Explicit Congestion Notification (ECN) scheme at the IP | L4S uses an Explicit Congestion Notification (ECN) scheme at the IP | |||
| layer with the same set of codepoint transitions as the original (or | layer with the same set of codepoint transitions as the original (or | |||
| 'Classic') Explicit Congestion Notification (ECN [RFC3168]). | 'Classic') Explicit Congestion Notification (ECN [RFC3168]). | |||
| RFC 3168 required an ECN mark to be equivalent to a drop, both when | RFC 3168 required an ECN mark to be equivalent to a drop, both when | |||
| applied in the network and when responded to by a transport. Unlike | applied in the network and when responded to by a transport. Unlike | |||
| Classic ECN marking, the network applies L4S marking more immediately | Classic ECN marking: i) the network applies L4S marking more | |||
| and more aggressively than drop, and the transport response to each | immediately and more frequently than drop; and ii) the transport | |||
| mark is reduced and smoothed relative to that for drop. The two | response to each mark is reduced and smoothed relative to that for | |||
| changes counterbalance each other so that the throughput of an L4S | drop. The two changes counterbalance each other so that the | |||
| flow will be roughly the same as a comparable non-L4S flow under the | throughput of an L4S flow will be roughly the same as a comparable | |||
| same conditions. Nonetheless, the much more frequent ECN control | non-L4S flow under the same conditions. Nonetheless, the much more | |||
| signals and the finer responses to these signals result in very low | frequent ECN control signals and the finer responses to these signals | |||
| queuing delay without compromising link utilization, and this low | result in very low queuing delay without compromising link | |||
| delay can be maintained during high load. For instance, queuing | utilization, and this low delay can be maintained during high load. | |||
| delay under heavy and highly varying load with the example DCTCP/ | For instance, queuing delay under heavy and highly varying load with | |||
| DualQ solution cited below on a DSL or Ethernet link is sub- | the example DCTCP/DualQ solution described below on a DSL or Ethernet | |||
| millisecond on average and roughly 1 to 2 milliseconds at the 99th | link is sub-millisecond on average and roughly 1 to 2 milliseconds at | |||
| percentile without losing link utilization [DualPI2Linux], [DCttH19]. | the 99th percentile without losing link utilization [DualPI2Linux], | |||
| Note that the inherent queuing delay while waiting to acquire a | [DCttH19]. Note that the queuing delay while waiting to acquire a | |||
| discontinuous medium such as WiFi has to be minimized in its own | shared medium such as wireless has to be added to the above. It is a | |||
| right, so it would be additional to the above (see section 6.3 of the | different issue that needs to be addressed, but separately (see | |||
| L4S architecture [I-D.ietf-tsvwg-l4s-arch]). | section 6.3 of the L4S architecture [I-D.ietf-tsvwg-l4s-arch]). | |||
| L4S relies on 'scalable' congestion controls for these delay | L4S relies on 'scalable' congestion controls for these delay | |||
| properties and for preserving low delay as flow rate scales, hence | properties and for preserving low delay as flow rate scales, hence | |||
| the name. The congestion control used in Data Center TCP (DCTCP) is | the name. The congestion control used in Data Center TCP (DCTCP) is | |||
| an example of a scalable congestion control, but DCTCP is applicable | an example of a scalable congestion control, but DCTCP is applicable | |||
| solely to controlled environments like data centres [RFC8257], | solely to controlled environments like data centres [RFC8257], | |||
| because it is too aggressive to co-exist with existing TCP-Reno- | because it is too aggressive to co-exist with existing TCP-Reno- | |||
| friendly traffic. The DualQ Coupled AQM, which is defined in a | friendly traffic. The DualQ Coupled AQM, which is defined in a | |||
| complementary experimental | complementary experimental | |||
| specification [I-D.ietf-tsvwg-aqm-dualq-coupled], is an AQM framework | specification [I-D.ietf-tsvwg-aqm-dualq-coupled], is an AQM framework | |||
| that enables scalable congestion controls derived from DCTCP to co- | that enables scalable congestion controls derived from DCTCP to co- | |||
| exist with existing traffic, each getting roughly the same flow rate | exist with existing traffic, each getting roughly the same flow rate | |||
| when they compete under similar conditions. Note that a scalable | when they compete under similar conditions. Note that a scalable | |||
| congestion control is still not safe to deploy on the Internet unless | congestion control is still not safe to deploy on the Internet unless | |||
| it satisfies the requirements listed in Section 4. | it satisfies the requirements listed in Section 4. | |||
| L4S is not only for elastic (TCP-like) traffic - there are scalable | L4S is not only for elastic (TCP-like) traffic - there are scalable | |||
| congestion controls for real-time media, such as the L4S variant of | congestion controls for real-time media, such as the L4S variant | |||
| the SCReAM [RFC8298] real-time media congestion avoidance technique | [SCReAM-L4S] of the SCReAM [RFC8298] real-time media congestion | |||
| (RMCAT). The factor that distinguishes L4S from Classic traffic is | avoidance technique (RMCAT). The factor that distinguishes L4S from | |||
| its behaviour in response to congestion. The transport wire | Classic traffic is its behaviour in response to congestion. The | |||
| protocol, e.g. TCP, QUIC, SCTP, DCCP, RTP/RTCP, is orthogonal (and | transport wire protocol, e.g. TCP, QUIC, SCTP, DCCP, RTP/RTCP, is | |||
| therefore not suitable for distinguishing L4S from Classic packets). | orthogonal (and therefore not suitable for distinguishing L4S from | |||
| Classic packets). | ||||
| The L4S identifier defined in this document is the key piece that | The L4S identifier defined in this document is the key piece that | |||
| distinguishes L4S from 'Classic' (e.g. Reno-friendly) traffic. It | distinguishes L4S from 'Classic' (e.g. Reno-friendly) traffic. Then, | |||
| gives an incremental migration path so that suitably modified network | network bottlenecks can be incrementally modified to distinguish and | |||
| bottlenecks can distinguish and isolate existing Classic traffic from | isolate existing Classic traffic from L4S traffic, to prevent the | |||
| L4S traffic to prevent the former from degrading the very low delay | former from degrading the very low queuing delay and loss of the new | |||
| and loss of the new scalable transports, without harming Classic | scalable transports, without harming Classic performance at these | |||
| performance at these bottlenecks. Initial implementation of the | bottlenecks. Although both sender and network deployment are | |||
| separate parts of the system has been motivated by the performance | required before any benefit, initial implementations of the separate | |||
| parts of the system have been motivated by the potential performance | ||||
| benefits. | benefits. | |||
| 1.1. Latency, Loss and Scaling Problems | 1.1. Latency, Loss and Scaling Problems | |||
| Latency is becoming the critical performance factor for many (most?) | Latency is becoming the critical performance factor for many (most?) | |||
| applications on the public Internet, e.g. interactive Web, Web | Internet applications, e.g. interactive web, web services, voice, | |||
| services, voice, conversational video, interactive video, interactive | conversational video, interactive video, interactive remote presence, | |||
| remote presence, instant messaging, online gaming, remote desktop, | instant messaging, online gaming, remote desktop, cloud-based | |||
| cloud-based applications, and video-assisted remote control of | applications & services, and remote control of machinery and | |||
| machinery and industrial processes. In the 'developed' world, | industrial processes. In many parts of the world, further increases | |||
| further increases in access network bit-rate offer diminishing | in access network bit rate offer diminishing returns [Dukkipati06], | |||
| returns, whereas latency is still a multi-faceted problem. In the | whereas latency is still a multi-faceted problem. As a result, much | |||
| last decade or so, much has been done to reduce propagation time by | has been done to reduce propagation time by placing caches or servers | |||
| placing caches or servers closer to users. However, queuing remains | closer to users. However, queuing remains a major, albeit | |||
| a major intermittent component of latency. | intermittent, component of latency. | |||
| The Diffserv architecture provides Expedited Forwarding [RFC3246], so | The Diffserv architecture provides Expedited Forwarding [RFC3246], so | |||
| that low latency traffic can jump the queue of other traffic. If | that low latency traffic can jump the queue of other traffic. If | |||
| growth in high-throughput latency-sensitive applications continues, | growth in latency-sensitive applications continues, periods with | |||
| periods with solely latency-sensitive traffic will become | solely latency-sensitive traffic will become increasingly common on | |||
| increasingly common on links where traffic aggregation is low. For | links where traffic aggregation is low. During these periods, if all | |||
| instance, on the access links dedicated to individual sites (homes, | the traffic were marked for the same treatment, Diffserv would make | |||
| small enterprises or mobile devices). These links also tend to | no difference. The links with low aggregation also tend to become | |||
| become the path bottleneck under load. During these periods, if all | the path bottleneck under load, for instance, the access links | |||
| the traffic were marked for the same treatment, at these bottlenecks | dedicated to individual sites (homes, small enterprises or mobile | |||
| Diffserv would make no difference. Instead, it becomes imperative to | devices). So, instead of differentiation, it becomes imperative to | |||
| remove the underlying causes of any unnecessary delay. | remove the underlying causes of any unnecessary delay. | |||
| The bufferbloat project has shown that excessively-large buffering | The bufferbloat project has shown that excessively-large buffering | |||
| ('bufferbloat') has been introducing significantly more delay than | ('bufferbloat') has been introducing significantly more delay than | |||
| the underlying propagation time. These delays appear only | the underlying propagation time. These delays appear only | |||
| intermittently -- only when a capacity-seeking (e.g. TCP) flow is | intermittently -- only when a capacity-seeking (e.g. TCP) flow is | |||
| long enough for the queue to fill the buffer, making every packet in | long enough for the queue to fill the buffer, causing every packet in | |||
| other flows sharing the buffer sit through the queue. | other flows sharing the buffer to have to work its way through the | |||
| queue. | ||||
| Active queue management (AQM) was originally developed to solve this | Active queue management (AQM) was originally developed to solve this | |||
| problem (and others). Unlike Diffserv, which gives low latency to | problem (and others). Unlike Diffserv, which gives low latency to | |||
| some traffic at the expense of others, AQM controls latency for _all_ | some traffic at the expense of others, AQM controls latency for _all_ | |||
| traffic in a class. In general, AQM methods introduce an increasing | traffic in a class. In general, AQM methods introduce an increasing | |||
| level of discard from the buffer the longer the queue persists above | level of discard from the buffer the longer the queue persists above | |||
| a shallow threshold. This gives sufficient signals to capacity- | a shallow threshold. This gives sufficient signals to capacity- | |||
| seeking (aka. greedy) flows to keep the buffer empty for its intended | seeking (aka. greedy) flows to keep the buffer empty for its intended | |||
| purpose: absorbing bursts. However, RED [RFC2309] and other | purpose: absorbing bursts. However, RED [RFC2309] and other | |||
| algorithms from the 1990s were sensitive to their configuration and | algorithms from the 1990s were sensitive to their configuration and | |||
| hard to set correctly. So, this form of AQM was not widely deployed. | hard to set correctly. So, this form of AQM was not widely deployed. | |||
| More recent state-of-the-art AQM methods, e.g. FQ-CoDel [RFC8290], | More recent state-of-the-art AQM methods, such as FQ-CoDel [RFC8290], | |||
| PIE [RFC8033], Adaptive RED [ARED01], are easier to configure, | PIE [RFC8033] or Adaptive RED [ARED01], are easier to configure, | |||
| because they define the queuing threshold in time not bytes, so it is | because they define the queuing threshold in time not bytes, so | |||
| invariant for different link rates. However, no matter how good the | configuration is invariant whatever the link rate. However, the | |||
| AQM, the sawtoothing sending window of a Classic congestion control | sawtoothing window of a Classic congestion control creates a dilemma | |||
| will either cause queuing delay to vary or cause the link to be | for the operator: i) either configure a shallow AQM operating point, | |||
| underutilized. Even with a perfectly tuned AQM, the additional | so the tips of the sawteeth cause minimal queue delay but the troughs | |||
| queuing delay will be of the same order as the underlying speed-of- | underutilize the link, or ii) configure the operating point deeper | |||
| light delay across the network, thereby roughly doubling the total | into the buffer, so the troughs utilize the link better but then the | |||
| round-trip time. | tips cause more delay variation. Even with a perfectly tuned AQM, | |||
| the additional queuing delay at the tips of the sawteeth will be of | ||||
| the same order as the underlying speed-of-light delay across the | ||||
| network, thereby roughly doubling the total round-trip time. | ||||
| If a sender's own behaviour is introducing queuing delay variation, | If a sender's own behaviour is introducing queuing delay variation, | |||
| no AQM in the network can 'un-vary' the delay without significantly | no AQM in the network can 'un-vary' the delay without significantly | |||
| compromising link utilization. Even flow-queuing (e.g. [RFC8290]), | compromising link utilization. Even flow-queuing (e.g. [RFC8290]), | |||
| which isolates one flow from another, cannot isolate a flow from the | which isolates one flow from another, cannot isolate a flow from the | |||
| delay variations it inflicts on itself. Therefore those applications | delay variations it inflicts on itself. Therefore those applications | |||
| that need to seek out high bandwidth but also need low latency will | that need to seek out high bandwidth but also need low latency will | |||
| have to migrate to scalable congestion control. | have to migrate to scalable congestion control, which uses much | |||
| smaller sawtooth variations. | ||||
| Altering host behaviour is not enough on its own though. Even if | Altering host behaviour is not enough on its own though. Even if | |||
| hosts adopt low latency behaviour (scalable congestion controls), | hosts adopt low latency scalable congestion controls, they need to be | |||
| they need to be isolated from the behaviour of existing Classic | isolated from the large queue variations induced by existing Classic | |||
| congestion controls that induce large queue variations. L4S enables | congestion controls. L4S AQMs provide that latency isolation in the | |||
| that migration by providing latency isolation in the network and | network and the L4S identifier enables the AQMs to distinguish the | |||
| distinguishing the two types of packets that need to be isolated: L4S | two types of packet that need to be isolated: L4S and Classic. L4S | |||
| and Classic. L4S isolation can be achieved with a queue per flow | isolation can be achieved with a queue per flow (e.g. [RFC8290]) but | |||
| (e.g. [RFC8290]) but a DualQ [I-D.ietf-tsvwg-aqm-dualq-coupled] is | a DualQ [I-D.ietf-tsvwg-aqm-dualq-coupled] is sufficient, and | |||
| sufficient, and actually gives better tail latency. Both approaches | actually gives better tail latency. Both approaches are addressed in | |||
| are addressed in this document. | this document. | |||
| The DualQ solution was developed to make very low latency available | The DualQ solution was developed to make very low latency available | |||
| without requiring per-flow queues at every bottleneck. This was | without requiring per-flow queues at every bottleneck. This was | |||
| because per-flow-queuing (FQ) has well-known downsides - not least | useful because per-flow-queuing (FQ) has well-known downsides - not | |||
| the need to inspect transport layer headers in the network, which | least the need to inspect transport layer headers in the network, | |||
| makes it incompatible with privacy approaches such as IPSec VPN | which makes it incompatible with privacy approaches such as IPSec VPN | |||
| tunnels, and incompatible with link layer queue management, where | tunnels, and incompatible with link layer queue management, where | |||
| transport layer headers can be hidden, e.g. 5G. | transport layer headers can be hidden, e.g. 5G. | |||
| Latency is not the only concern addressed by L4S: It was known when | Latency is not the only concern addressed by L4S. It was known when | |||
| TCP congestion avoidance was first developed that it would not scale | TCP congestion avoidance was first developed that it would not scale | |||
| to high bandwidth-delay products (footnote 6 of Jacobson and | to high bandwidth-delay products (footnote 6 of Jacobson and | |||
| Karels [TCP-CA]). Given regular broadband bit-rates over WAN | Karels [TCP-CA]). Given regular broadband bit-rates over WAN | |||
| distances are already [RFC3649] beyond the scaling range of Reno | distances are already [RFC3649] beyond the scaling range of Reno | |||
| congestion control, 'less unscalable' Cubic [RFC8312] and | congestion control, 'less unscalable' Cubic [RFC8312] and | |||
| Compound [I-D.sridharan-tcpm-ctcp] variants of TCP have been | Compound [I-D.sridharan-tcpm-ctcp] variants of TCP have been | |||
| successfully deployed. However, these are now approaching their | successfully deployed. However, these are now approaching their | |||
| scaling limits. Unfortunately, fully scalable congestion controls | scaling limits. Unfortunately, fully scalable congestion controls | |||
| such as DCTCP [RFC8257] outcompete Classic ECN congestion controls | such as DCTCP [RFC8257] outcompete Classic ECN congestion controls | |||
| sharing the same queue, which is why they have been confined to | sharing the same queue, which is why they have been confined to | |||
| skipping to change at page 7, line 36 ¶ | skipping to change at page 7, line 40 ¶ | |||
| It turns out that these scalable congestion control algorithms that | It turns out that these scalable congestion control algorithms that | |||
| solve the latency problem can also solve the scalability problem of | solve the latency problem can also solve the scalability problem of | |||
| Classic congestion controls. The finer sawteeth in the congestion | Classic congestion controls. The finer sawteeth in the congestion | |||
| window have low amplitude, so they cause very little queuing delay | window have low amplitude, so they cause very little queuing delay | |||
| variation and the average time to recover from one congestion signal | variation and the average time to recover from one congestion signal | |||
| to the next (the average duration of each sawtooth) remains | to the next (the average duration of each sawtooth) remains | |||
| invariant, which maintains constant tight control as flow-rate | invariant, which maintains constant tight control as flow-rate | |||
| scales. A background paper [DCttH19] gives the full explanation of | scales. A background paper [DCttH19] gives the full explanation of | |||
| why the design solves both the latency and the scaling problems, both | why the design solves both the latency and the scaling problems, both | |||
| in plain English and in more precise mathematical form. The | in plain English and in more precise mathematical form. The | |||
| explanation is summarised without the maths in Section 4 of the L4S | explanation is summarised without the mathematics in Section 4 of the | |||
| architecture [I-D.ietf-tsvwg-l4s-arch]. | L4S architecture [I-D.ietf-tsvwg-l4s-arch]. | |||
| 1.2. Terminology | 1.2. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
| [RFC2119]. In this document, these words will appear with that | [RFC2119]. In this document, these words will appear with that | |||
| interpretation only when in ALL CAPS. Lower case uses of these words | interpretation only when in ALL CAPS. Lower case uses of these words | |||
| are not to be interpreted as carrying RFC-2119 significance. | are not to be interpreted as carrying RFC-2119 significance. | |||
| skipping to change at page 8, line 27 ¶ | skipping to change at page 8, line 33 ¶ | |||
| time from one congestion signal to the next (the recovery time) | time from one congestion signal to the next (the recovery time) | |||
| remains invariant as the flow rate scales, all other factors being | remains invariant as the flow rate scales, all other factors being | |||
| equal. This maintains the same degree of control over queueing | equal. This maintains the same degree of control over queueing | |||
| and utilization whatever the flow rate, as well as ensuring that | and utilization whatever the flow rate, as well as ensuring that | |||
| high throughput is robust to disturbances. For instance, DCTCP | high throughput is robust to disturbances. For instance, DCTCP | |||
| averages 2 congestion signals per round-trip whatever the flow | averages 2 congestion signals per round-trip whatever the flow | |||
| rate, as do other recently developed scalable congestion controls, | rate, as do other recently developed scalable congestion controls, | |||
| e.g. Relentless TCP [Mathis09], TCP Prague | e.g. Relentless TCP [Mathis09], TCP Prague | |||
| [I-D.briscoe-iccrg-prague-congestion-control], [PragueLinux], | [I-D.briscoe-iccrg-prague-congestion-control], [PragueLinux], | |||
| BBRv2 [BBRv2], [I-D.cardwell-iccrg-bbr-congestion-control] and the | BBRv2 [BBRv2], [I-D.cardwell-iccrg-bbr-congestion-control] and the | |||
| L4S variant of SCREAM for real-time media [SCReAM], [RFC8298]). | L4S variant of SCREAM for real-time media [SCReAM-L4S], [RFC8298]. | |||
| See Section 4.3 for more explanation. | See Section 4.3 for more explanation. | |||
| Classic service: The Classic service is intended for all the | Classic service: The Classic service is intended for all the | |||
| congestion control behaviours that co-exist with Reno [RFC5681] | congestion control behaviours that co-exist with Reno [RFC5681] | |||
| (e.g. Reno itself, Cubic [RFC8312], | (e.g. Reno itself, Cubic [RFC8312], | |||
| Compound [I-D.sridharan-tcpm-ctcp], TFRC [RFC5348]). The term | Compound [I-D.sridharan-tcpm-ctcp], TFRC [RFC5348]). The term | |||
| 'Classic queue' means a queue providing the Classic service. | 'Classic queue' means a queue providing the Classic service. | |||
| Low-Latency, Low-Loss Scalable throughput (L4S) service: The 'L4S' | Low-Latency, Low-Loss Scalable throughput (L4S) service: The 'L4S' | |||
| service is intended for traffic from scalable congestion control | service is intended for traffic from scalable congestion control | |||
| algorithms, such as TCP Prague | algorithms, such as TCP Prague | |||
| [I-D.briscoe-iccrg-prague-congestion-control], which was derived | [I-D.briscoe-iccrg-prague-congestion-control], which was derived | |||
| from DCTCP [RFC8257]. The L4S service is for more general traffic | from DCTCP [RFC8257]. The L4S service is for more general traffic | |||
| than just TCP Prague -- it allows the set of congestion controls | than just TCP Prague -- it allows the set of congestion controls | |||
| with similar scaling properties to Prague to evolve, such as the | with similar scaling properties to Prague to evolve, such as the | |||
| examples listed above (Relentless, SCReAM). The term 'L4S queue' | examples listed above (Relentless, SCReAM, etc.). The term 'L4S | |||
| means a queue providing the L4S service. | queue' means a queue providing the L4S service. | |||
| The terms Classic or L4S can also qualify other nouns, such as | The terms Classic or L4S can also qualify other nouns, such as | |||
| 'queue', 'codepoint', 'identifier', 'classification', 'packet', | 'queue', 'codepoint', 'identifier', 'classification', 'packet', | |||
| 'flow'. For example: an L4S packet means a packet with an L4S | 'flow'. For example: an L4S packet means a packet with an L4S | |||
| identifier sent from an L4S congestion control. | identifier sent from an L4S congestion control. | |||
| Both Classic and L4S services can cope with a proportion of | Both Classic and L4S services can cope with a proportion of | |||
| unresponsive or less-responsive traffic as well, but in the L4S | unresponsive or less-responsive traffic as well, but in the L4S | |||
| case its rate has to be smooth enough or low enough not to build a | case its rate has to be smooth enough or low enough not to build a | |||
| queue (e.g. DNS, VoIP, game sync datagrams, etc). | queue (e.g. DNS, VoIP, game sync datagrams, etc). | |||
| Reno-friendly: The subset of Classic traffic that is friendly to the | Reno-friendly: The subset of Classic traffic that is friendly to the | |||
| standard Reno congestion control defined for TCP in [RFC5681]. | standard Reno congestion control defined for TCP in [RFC5681]. | |||
| The TFRC spec. [RFC5348] indirectly implies that 'friendly' is | The TFRC spec [RFC5348] indirectly implies that 'friendly' is | |||
| defined as "generally within a factor of two of the sending rate | defined as "generally within a factor of two of the sending rate | |||
| of a TCP flow under the same conditions". Reno-friendly is used | of a TCP flow under the same conditions". Reno-friendly is used | |||
| here in place of 'TCP-friendly', given the latter has become | here in place of 'TCP-friendly', given the latter has become | |||
| imprecise, because the TCP protocol is now used with so many | imprecise, because the TCP protocol is now used with so many | |||
| different congestion control behaviours, and Reno is used in non- | different congestion control behaviours, and Reno can be used in | |||
| TCP transports such as QUIC [RFC9000]. | non-TCP transports such as QUIC [RFC9000]. | |||
| Classic ECN: The original Explicit Congestion Notification (ECN) | Classic ECN: The original Explicit Congestion Notification (ECN) | |||
| protocol [RFC3168], which requires ECN signals to be treated the | protocol [RFC3168], which requires ECN signals to be treated the | |||
| same as drops, both when generated in the network and when | same as drops, both when generated in the network and when | |||
| responded to by the sender. For L4S, the names used for the four | responded to by the sender. For L4S, the names used for the four | |||
| codepoints of the 2-bit IP-ECN field are unchanged from those | codepoints of the 2-bit IP-ECN field are unchanged from those | |||
| defined in [RFC3168]: Not ECT, ECT(0), ECT(1) and CE, where ECT | defined in [RFC3168]: Not ECT, ECT(0), ECT(1) and CE, where ECT | |||
| stands for ECN-Capable Transport and CE stands for Congestion | stands for ECN-Capable Transport and CE stands for Congestion | |||
| Experienced. A packet marked with the CE codepoint is termed | Experienced. A packet marked with the CE codepoint is termed | |||
| 'ECN-marked' or sometimes just 'marked' where the context makes | 'ECN-marked' or sometimes just 'marked' where the context makes | |||
| skipping to change at page 10, line 26 ¶ | skipping to change at page 10, line 34 ¶ | |||
| - the congestion control specifications of various DCCP | - the congestion control specifications of various DCCP | |||
| congestion control identifier (CCID) profiles [RFC4341], | congestion control identifier (CCID) profiles [RFC4341], | |||
| [RFC4342], [RFC5622]. | [RFC4342], [RFC5622]. | |||
| This document is about identifiers that are used for interoperation | This document is about identifiers that are used for interoperation | |||
| between hosts and networks. So the audience is broad, covering | between hosts and networks. So the audience is broad, covering | |||
| developers of host transports and network AQMs, as well as covering | developers of host transports and network AQMs, as well as covering | |||
| how operators might wish to combine various identifiers, which would | how operators might wish to combine various identifiers, which would | |||
| require flexibility from equipment developers. | require flexibility from equipment developers. | |||
| 2. Choice of L4S Packet Identifier: Requirements | 2. L4S Packet Identification: Document Roadmap | |||
| The L4S treatment is an experimental track alternative packet marking | ||||
| treatment to the Classic ECN treatment in [RFC3168], which has been | ||||
| updated by [RFC8311] to allow experiments such as the one defined in | ||||
| the present specification. [RFC4774] discusses some of the issues | ||||
| and evaluation criteria when defining alternative ECN semantics, | ||||
| which are further discussed in Section 4.3.1. | ||||
| The L4S architecture [I-D.ietf-tsvwg-l4s-arch] describes the three | ||||
| main components of L4S: the sending host behaviour, the marking | ||||
| behaviour in the network and the L4S ECN protocol that identifies L4S | ||||
| packets as they flow between the two. | ||||
| The next section of the present document (Section 3) records the | ||||
| requirements that informed the choice of L4S identifier. Then | ||||
| subsequent sections specify the L4S ECN protocol, which i) identifies | ||||
| packets that have been sent from hosts that are expected to comply | ||||
| with a broad type of sending behaviour; and ii) identifies the | ||||
| marking treatment that network nodes are expected to apply to L4S | ||||
| packets. | ||||
| For a packet to receive L4S treatment as it is forwarded, the sender | ||||
| sets the ECN field in the IP header to the ECT(1) codepoint. See | ||||
| Section 4 for full transport layer behaviour requirements, including | ||||
| feedback and congestion response. | ||||
| A network node that implements the L4S service always classifies | ||||
| arriving ECT(1) packets for L4S treatment and by default classifies | ||||
| CE packets for L4S treatment unless the heuristics described in | ||||
| Section 5.3 are employed. See Section 5 for full network element | ||||
| behaviour requirements, including classification, ECN-marking and | ||||
| interaction of the L4S identifier with other identifiers and per-hop | ||||
| behaviours. | ||||
| L4S ECN works with ECN tunnelling and encapsulation behaviour as is, | ||||
| except there is one known case where careful attention to | ||||
| configuration is required, which is detailed in Section 6. | ||||
| L4S ECN is currently on the experimental track. So Section 7 | ||||
| collects together the general questions and issues that remain open | ||||
| for investigation during L4S experimentation. Open issues or | ||||
| questions specific to particular components are called out in the | ||||
| specifications of each component part, such as the DualQ | ||||
| [I-D.ietf-tsvwg-aqm-dualq-coupled]. | ||||
| The IANA assignment of the L4S identifier is specified in Section 8. | ||||
| And Section 9 covers security considerations specific to the L4S | ||||
| identifier. System security aspects, such as policing and privacy, | ||||
| are covered in the L4S architecture [I-D.ietf-tsvwg-l4s-arch]. | ||||
| 3. Choice of L4S Packet Identifier: Requirements | ||||
| This subsection briefly records the process that led to the chosen | This subsection briefly records the process that led to the chosen | |||
| L4S identifier. | L4S identifier. | |||
| The identifier for packets using the Low Latency, Low Loss, Scalable | The identifier for packets using the Low Latency, Low Loss, Scalable | |||
| throughput (L4S) service needs to meet the following requirements: | throughput (L4S) service needs to meet the following requirements: | |||
| * it SHOULD survive end-to-end between source and destination end- | * it SHOULD survive end-to-end between source and destination end- | |||
| points: across the boundary between host and network, between | points: across the boundary between host and network, between | |||
| interconnected networks, and through middleboxes; | interconnected networks, and through middleboxes; | |||
| skipping to change at page 11, line 21 ¶ | skipping to change at page 12, line 36 ¶ | |||
| all these requirements, particularly given the limited space left in | all these requirements, particularly given the limited space left in | |||
| the IP header. Therefore a compromise will always be necessary, | the IP header. Therefore a compromise will always be necessary, | |||
| which is why all the above requirements are expressed with the word | which is why all the above requirements are expressed with the word | |||
| 'SHOULD' not 'MUST'. | 'SHOULD' not 'MUST'. | |||
| After extensive assessment of alternative schemes, "ECT(1) and CE | After extensive assessment of alternative schemes, "ECT(1) and CE | |||
| codepoints" was chosen as the best compromise. Therefore this scheme | codepoints" was chosen as the best compromise. Therefore this scheme | |||
| is defined in detail in the following sections, while Appendix B | is defined in detail in the following sections, while Appendix B | |||
| records its pros and cons against the above requirements. | records its pros and cons against the above requirements. | |||
| 3. L4S Packet Identification | 4. Transport Layer Behaviour (the 'Prague Requirements') | |||
| The L4S treatment is an experimental track alternative packet marking | ||||
| treatment to the Classic ECN treatment in [RFC3168], which has been | ||||
| updated by [RFC8311] to allow experiments such as the one defined in | ||||
| the present specification. [RFC4774] discusses some of the issues | ||||
| and evaluation criteria when defining alternative ECN semantics. | ||||
| Like Classic ECN, L4S ECN identifies both network and host behaviour: | ||||
| it identifies the marking treatment that network nodes are expected | ||||
| to apply to L4S packets, and it identifies packets that have been | ||||
| sent from hosts that are expected to comply with a broad type of | ||||
| sending behaviour. | ||||
| For a packet to receive L4S treatment as it is forwarded, the sender | ||||
| sets the ECN field in the IP header to the ECT(1) codepoint. See | ||||
| Section 4 for full transport layer behaviour requirements, including | ||||
| feedback and congestion response. | ||||
| A network node that implements the L4S service always classifies | This section defines L4S behaviour at the transport layer, also known | |||
| arriving ECT(1) packets for L4S treatment and by default classifies | as the Prague L4S Requirements (see Appendix A for the origin of the | |||
| CE packets for L4S treatment unless the heuristics described in | name). | |||
| Section 5.3 are employed. See Section 5 for full network element | ||||
| behaviour requirements, including classification, ECN-marking and | ||||
| interaction of the L4S identifier with other identifiers and per-hop | ||||
| behaviours. | ||||
| 4. Transport Layer Behaviour (the 'Prague Requirements') | ||||
| 4.1. Codepoint Setting | 4.1. Codepoint Setting | |||
| A sender that wishes a packet to receive L4S treatment as it is | A sender that wishes a packet to receive L4S treatment as it is | |||
| forwarded, MUST set the ECN field in the IP header (v4 or v6) to the | forwarded, MUST set the ECN field in the IP header (v4 or v6) to the | |||
| ECT(1) codepoint. | ECT(1) codepoint. | |||
| 4.2. Prerequisite Transport Feedback | 4.2. Prerequisite Transport Feedback | |||
| For a transport protocol to provide scalable congestion control | For a transport protocol to provide scalable congestion control | |||
| (Section 4.3) it MUST provide feedback of the extent of CE marking on | (Section 4.3) it MUST provide feedback of the extent of CE marking on | |||
| skipping to change at page 13, line 27 ¶ | skipping to change at page 14, line 25 ¶ | |||
| without having to sacrifice utilization. | without having to sacrifice utilization. | |||
| With a congestion control that sawtooths to probe capacity, this | With a congestion control that sawtooths to probe capacity, this | |||
| duration is called the recovery time, because each time the sawtooth | duration is called the recovery time, because each time the sawtooth | |||
| yields, on average it take this time to recover to its previous high | yields, on average it take this time to recover to its previous high | |||
| point. A scalable congestion control does not have to sawtooth, but | point. A scalable congestion control does not have to sawtooth, but | |||
| it has to coexist with scalable congestion controls that do. | it has to coexist with scalable congestion controls that do. | |||
| For instance, for DCTCP [RFC8257], TCP Prague | For instance, for DCTCP [RFC8257], TCP Prague | |||
| [I-D.briscoe-iccrg-prague-congestion-control], [PragueLinux] and the | [I-D.briscoe-iccrg-prague-congestion-control], [PragueLinux] and the | |||
| L4S variant of SCReAM [RFC8298], the average recovery time is always | L4S variant of SCReAM [SCReAM-L4S], [RFC8298], the average recovery | |||
| half a round trip (or half a reference round trip), whatever the flow | time is always half a round trip (or half a reference round trip), | |||
| rate. | whatever the flow rate. | |||
| As with all transport behaviours, a detailed specification (probably | As with all transport behaviours, a detailed specification (probably | |||
| an experimental RFC) is expected for each congestion control, | an experimental RFC) is expected for each congestion control, | |||
| following the guidelines for specifying new congestion control | following the guidelines for specifying new congestion control | |||
| algorithms in [RFC5033]. In addition it is expected to document | algorithms in [RFC5033]. In addition it is expected to document | |||
| these L4S-specific matters, specifically the timescale over which the | these L4S-specific matters, specifically the timescale over which the | |||
| proportionality is averaged, and control of burstiness. The recovery | proportionality is averaged, and control of burstiness. The recovery | |||
| time requirement above is worded as a 'SHOULD' rather than a 'MUST' | time requirement above is worded as a 'SHOULD' rather than a 'MUST' | |||
| to allow reasonable flexibility for such implementations. | to allow reasonable flexibility for such implementations. | |||
| skipping to change at page 18, line 10 ¶ | skipping to change at page 19, line 5 ¶ | |||
| To summarize, the coexistence problem is confined to cases of | To summarize, the coexistence problem is confined to cases of | |||
| imperfect flow isolation in an FQ, or in potential cases where a | imperfect flow isolation in an FQ, or in potential cases where a | |||
| Classic ECN AQM has been deployed in a shared queue (see the L4S | Classic ECN AQM has been deployed in a shared queue (see the L4S | |||
| operational guidance [I-D.ietf-tsvwg-l4sops] for further details | operational guidance [I-D.ietf-tsvwg-l4sops] for further details | |||
| including recent surveys attempting to quantify prevalence). | including recent surveys attempting to quantify prevalence). | |||
| Further, if one of these cases does occur, the coexistence problem | Further, if one of these cases does occur, the coexistence problem | |||
| does not arise unless sources of Classic and L4S flows are | does not arise unless sources of Classic and L4S flows are | |||
| simultaneously sharing the same bottleneck queue (e.g. different | simultaneously sharing the same bottleneck queue (e.g. different | |||
| applications in the same household) and flows of each type have to | applications in the same household) and flows of each type have to | |||
| be large enough to coincide for long enough for any throughput | be large enough to coincide for long enough for any throughput | |||
| imbalance to have developed. | imbalance to have developed. Therefore, how often the coexistence | |||
| problem arises in practice is listed in Section 7 as an open | ||||
| question that L4S experiments will need to answer. | ||||
| Severity: Where long-running L4S and Classic flows coincide in a | Severity: Where long-running L4S and Classic flows coincide in a | |||
| shared queue, testing of one L4S congestion control (TCP Prague) | shared queue, testing of one L4S congestion control (TCP Prague) | |||
| has found that the imbalance in average throughput between an L4S | has found that the imbalance in average throughput between an L4S | |||
| and a Classic flow can reach 25:1 in favour of L4S in the worst | and a Classic flow can reach 25:1 in favour of L4S in the worst | |||
| case [ecn-fallback]. However, when capacity is most scarce, the | case [ecn-fallback]. However, when capacity is most scarce, the | |||
| Classic flow gets a higher proportion of the link, for instance | Classic flow gets a higher proportion of the link, for instance | |||
| over a 4 Mb/s link the throughput ratio is below ~10:1 over paths | over a 4 Mb/s link the throughput ratio is below ~10:1 over paths | |||
| with a base RTT below 100 ms, and falls below ~5:1 for base RTTs | with a base RTT below 100 ms, and falls below ~5:1 for base RTTs | |||
| below 20ms. | below 20ms. | |||
| skipping to change at page 36, line 8 ¶ | skipping to change at page 37, line 8 ¶ | |||
| All", Updated RITE project Technical Report , July 2019, | All", Updated RITE project Technical Report , July 2019, | |||
| <https://bobbriscoe.net/pubs.html#DCttH_TR>. | <https://bobbriscoe.net/pubs.html#DCttH_TR>. | |||
| [DualPI2Linux] | [DualPI2Linux] | |||
| Albisser, O., De Schepper, K., Briscoe, B., Tilmans, O., | Albisser, O., De Schepper, K., Briscoe, B., Tilmans, O., | |||
| and H. Steen, "DUALPI2 - Low Latency, Low Loss and | and H. Steen, "DUALPI2 - Low Latency, Low Loss and | |||
| Scalable (L4S) AQM", Proc. Linux Netdev 0x13 , March 2019, | Scalable (L4S) AQM", Proc. Linux Netdev 0x13 , March 2019, | |||
| <https://www.netdevconf.org/0x13/session.html?talk- | <https://www.netdevconf.org/0x13/session.html?talk- | |||
| DUALPI2-AQM>. | DUALPI2-AQM>. | |||
| [Dukkipati06] | ||||
| Dukkipati, N. and N. McKeown, "Why Flow-Completion Time is | ||||
| the Right Metric for Congestion Control", ACM CCR | ||||
| 36(1):59--62, January 2006, | ||||
| <https://dl.acm.org/doi/10.1145/1111322.1111336>. | ||||
| [ecn-fallback] | [ecn-fallback] | |||
| Briscoe, B. and A.S. Ahmed, "TCP Prague Fall-back on | Briscoe, B. and A.S. Ahmed, "TCP Prague Fall-back on | |||
| Detection of a Classic ECN AQM", bobbriscoe.net Technical | Detection of a Classic ECN AQM", bobbriscoe.net Technical | |||
| Report TR-BB-2019-002, April 2020, | Report TR-BB-2019-002, April 2020, | |||
| <https://arxiv.org/abs/1911.00710>. | <https://arxiv.org/abs/1911.00710>. | |||
| [Heist21] Heist, P. and J. Morton, "L4S Tests", github README, May | [Heist21] Heist, P. and J. Morton, "L4S Tests", github README, May | |||
| 2021, <https://github.com/heistp/l4s-tests/>. | 2021, <https://github.com/heistp/l4s-tests/>. | |||
| [I-D.briscoe-docsis-q-protection] | [I-D.briscoe-docsis-q-protection] | |||
| Briscoe, B. and G. White, "The DOCSIS(r) Queue Protection | Briscoe, B. and G. White, "The DOCSIS(r) Queue Protection | |||
| Algorithm to Preserve Low Latency", Work in Progress, | Algorithm to Preserve Low Latency", Work in Progress, | |||
| Internet-Draft, draft-briscoe-docsis-q-protection-06, 13 | Internet-Draft, draft-briscoe-docsis-q-protection-06, 13 | |||
| May 2022, <https://datatracker.ietf.org/doc/html/draft- | May 2022, <https://www.ietf.org/archive/id/draft-briscoe- | |||
| briscoe-docsis-q-protection-06>. | docsis-q-protection-06.txt>. | |||
| [I-D.briscoe-iccrg-prague-congestion-control] | [I-D.briscoe-iccrg-prague-congestion-control] | |||
| Schepper, K. D., Tilmans, O., and B. Briscoe, "Prague | Schepper, K. D., Tilmans, O., and B. Briscoe, "Prague | |||
| Congestion Control", Work in Progress, Internet-Draft, | Congestion Control", Work in Progress, Internet-Draft, | |||
| draft-briscoe-iccrg-prague-congestion-control-01, 11 July | draft-briscoe-iccrg-prague-congestion-control-01, 11 July | |||
| 2022, <https://datatracker.ietf.org/doc/html/draft- | 2022, <https://www.ietf.org/archive/id/draft-briscoe- | |||
| briscoe-iccrg-prague-congestion-control-01>. | iccrg-prague-congestion-control-01.txt>. | |||
| [I-D.briscoe-tsvwg-l4s-diffserv] | [I-D.briscoe-tsvwg-l4s-diffserv] | |||
| Briscoe, B., "Interactions between Low Latency, Low Loss, | Briscoe, B., "Interactions between Low Latency, Low Loss, | |||
| Scalable Throughput (L4S) and Differentiated Services", | Scalable Throughput (L4S) and Differentiated Services", | |||
| Work in Progress, Internet-Draft, draft-briscoe-tsvwg-l4s- | Work in Progress, Internet-Draft, draft-briscoe-tsvwg-l4s- | |||
| diffserv-02, 4 November 2018, | diffserv-02, November 2018, | |||
| <https://datatracker.ietf.org/doc/html/draft-briscoe- | <https://www.ietf.org/archive/id/draft-briscoe-tsvwg-l4s- | |||
| tsvwg-l4s-diffserv-02>. | diffserv-02.txt>. | |||
| [I-D.cardwell-iccrg-bbr-congestion-control] | [I-D.cardwell-iccrg-bbr-congestion-control] | |||
| Cardwell, N., Cheng, Y., Yeganeh, S. H., Swett, I., and V. | Cardwell, N., Cheng, Y., Yeganeh, S. H., Swett, I., and V. | |||
| Jacobson, "BBR Congestion Control", Work in Progress, | Jacobson, "BBR Congestion Control", Work in Progress, | |||
| Internet-Draft, draft-cardwell-iccrg-bbr-congestion- | Internet-Draft, draft-cardwell-iccrg-bbr-congestion- | |||
| control-02, 7 March 2022, | control-02, March 2022, <https://www.ietf.org/archive/id/ | |||
| <https://datatracker.ietf.org/doc/html/draft-cardwell- | draft-cardwell-iccrg-bbr-congestion-control-02.txt>. | |||
| iccrg-bbr-congestion-control-02>. | ||||
| [I-D.ietf-tcpm-accurate-ecn] | [I-D.ietf-tcpm-accurate-ecn] | |||
| Briscoe, B., Kühlewind, M., and R. Scheffenegger, "More | Briscoe, B., Kühlewind, M., and R. Scheffenegger, "More | |||
| Accurate ECN Feedback in TCP", Work in Progress, Internet- | Accurate ECN Feedback in TCP", Work in Progress, Internet- | |||
| Draft, draft-ietf-tcpm-accurate-ecn-20, 25 July 2022, | Draft, draft-ietf-tcpm-accurate-ecn-20, 25 July 2022, | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-tcpm- | <https://www.ietf.org/archive/id/draft-ietf-tcpm-accurate- | |||
| accurate-ecn-20>. | ecn-20.txt>. | |||
| [I-D.ietf-tcpm-generalized-ecn] | [I-D.ietf-tcpm-generalized-ecn] | |||
| Bagnulo, M. and B. Briscoe, "ECN++: Adding Explicit | Bagnulo, M. and B. Briscoe, "ECN++: Adding Explicit | |||
| Congestion Notification (ECN) to TCP Control Packets", | Congestion Notification (ECN) to TCP Control Packets", | |||
| Work in Progress, Internet-Draft, draft-ietf-tcpm- | Work in Progress, Internet-Draft, draft-ietf-tcpm- | |||
| generalized-ecn-10, 27 July 2022, | generalized-ecn-10, 27 July 2022, | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-tcpm- | <https://www.ietf.org/archive/id/draft-ietf-tcpm- | |||
| generalized-ecn-10>. | generalized-ecn-10.txt>. | |||
| [I-D.ietf-tls-dtls13] | [I-D.ietf-tls-dtls13] | |||
| Rescorla, E., Tschofenig, H., and N. Modadugu, "The | Rescorla, E., Tschofenig, H., and N. Modadugu, "The | |||
| Datagram Transport Layer Security (DTLS) Protocol Version | Datagram Transport Layer Security (DTLS) Protocol Version | |||
| 1.3", Work in Progress, Internet-Draft, draft-ietf-tls- | 1.3", Work in Progress, Internet-Draft, draft-ietf-tls- | |||
| dtls13-43, 30 April 2021, | dtls13-43, 30 April 2021, | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-tls- | <https://www.ietf.org/archive/id/draft-ietf-tls- | |||
| dtls13-43>. | dtls13-43.txt>. | |||
| [I-D.ietf-trill-ecn-support] | [I-D.ietf-trill-ecn-support] | |||
| Eastlake, D. E. and B. Briscoe, "TRILL (TRansparent | Eastlake, D. E. and B. Briscoe, "TRILL (TRansparent | |||
| Interconnection of Lots of Links): ECN (Explicit | Interconnection of Lots of Links): ECN (Explicit | |||
| Congestion Notification) Support", Work in Progress, | Congestion Notification) Support", Work in Progress, | |||
| Internet-Draft, draft-ietf-trill-ecn-support-07, 25 | Internet-Draft, draft-ietf-trill-ecn-support-07, 25 | |||
| February 2018, <https://datatracker.ietf.org/doc/html/ | February 2018, <https://www.ietf.org/archive/id/draft- | |||
| draft-ietf-trill-ecn-support-07>. | ietf-trill-ecn-support-07.txt>. | |||
| [I-D.ietf-tsvwg-aqm-dualq-coupled] | [I-D.ietf-tsvwg-aqm-dualq-coupled] | |||
| Schepper, K. D., Briscoe, B., and G. White, "DualQ Coupled | Schepper, K. D., Briscoe, B., and G. White, "DualQ Coupled | |||
| AQMs for Low Latency, Low Loss and Scalable Throughput | AQMs for Low Latency, Low Loss and Scalable Throughput | |||
| (L4S)", Work in Progress, Internet-Draft, draft-ietf- | (L4S)", Work in Progress, Internet-Draft, draft-ietf- | |||
| tsvwg-aqm-dualq-coupled-24, 7 July 2022, | tsvwg-aqm-dualq-coupled-24, July 2022, | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-tsvwg- | <https://www.ietf.org/archive/id/draft-ietf-tsvwg-aqm- | |||
| aqm-dualq-coupled-24>. | dualq-coupled-24.txt>. | |||
| [I-D.ietf-tsvwg-ecn-encap-guidelines] | [I-D.ietf-tsvwg-ecn-encap-guidelines] | |||
| Briscoe, B. and J. Kaippallimalil, "Guidelines for Adding | Briscoe, B. and J. Kaippallimalil, "Guidelines for Adding | |||
| Congestion Notification to Protocols that Encapsulate IP", | Congestion Notification to Protocols that Encapsulate IP", | |||
| Work in Progress, Internet-Draft, draft-ietf-tsvwg-ecn- | Work in Progress, Internet-Draft, draft-ietf-tsvwg-ecn- | |||
| encap-guidelines-17, 11 July 2022, | encap-guidelines-17, 11 July 2022, | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-tsvwg- | <https://www.ietf.org/archive/id/draft-ietf-tsvwg-ecn- | |||
| ecn-encap-guidelines-17>. | encap-guidelines-17.txt>. | |||
| [I-D.ietf-tsvwg-l4s-arch] | [I-D.ietf-tsvwg-l4s-arch] | |||
| Briscoe, B., Schepper, K. D., Bagnulo, M., and G. White, | Briscoe, B., Schepper, K. D., Bagnulo, M., and G. White, | |||
| "Low Latency, Low Loss, Scalable Throughput (L4S) Internet | "Low Latency, Low Loss, Scalable Throughput (L4S) Internet | |||
| Service: Architecture", Work in Progress, Internet-Draft, | Service: Architecture", Work in Progress, Internet-Draft, | |||
| draft-ietf-tsvwg-l4s-arch-18, 7 July 2022, | draft-ietf-tsvwg-l4s-arch-19, 27 July 2022, | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-tsvwg- | <https://www.ietf.org/archive/id/draft-ietf-tsvwg-l4s- | |||
| l4s-arch-18>. | arch-19.txt>. | |||
| [I-D.ietf-tsvwg-l4sops] | [I-D.ietf-tsvwg-l4sops] | |||
| White, G., "Operational Guidance for Deployment of L4S in | White, G., "Operational Guidance for Deployment of L4S in | |||
| the Internet", Work in Progress, Internet-Draft, draft- | the Internet", Work in Progress, Internet-Draft, draft- | |||
| ietf-tsvwg-l4sops-03, 28 April 2022, | ietf-tsvwg-l4sops-03, 28 April 2022, | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-tsvwg- | <https://www.ietf.org/archive/id/draft-ietf-tsvwg-l4sops- | |||
| l4sops-03>. | 03.txt>. | |||
| [I-D.ietf-tsvwg-nqb] | [I-D.ietf-tsvwg-nqb] | |||
| White, G. and T. Fossati, "A Non-Queue-Building Per-Hop | White, G. and T. Fossati, "A Non-Queue-Building Per-Hop | |||
| Behavior (NQB PHB) for Differentiated Services", Work in | Behavior (NQB PHB) for Differentiated Services", Work in | |||
| Progress, Internet-Draft, draft-ietf-tsvwg-nqb-10, 4 March | Progress, Internet-Draft, draft-ietf-tsvwg-nqb-10, March | |||
| 2022, <https://datatracker.ietf.org/doc/html/draft-ietf- | 2022, <https://www.ietf.org/archive/id/draft-ietf-tsvwg- | |||
| tsvwg-nqb-10>. | nqb-10.txt>. | |||
| [I-D.ietf-tsvwg-rfc6040update-shim] | [I-D.ietf-tsvwg-rfc6040update-shim] | |||
| Briscoe, B., "Propagating Explicit Congestion Notification | Briscoe, B., "Propagating Explicit Congestion Notification | |||
| Across IP Tunnel Headers Separated by a Shim", Work in | Across IP Tunnel Headers Separated by a Shim", Work in | |||
| Progress, Internet-Draft, draft-ietf-tsvwg-rfc6040update- | Progress, Internet-Draft, draft-ietf-tsvwg-rfc6040update- | |||
| shim-15, 11 July 2022, | shim-15, 11 July 2022, <https://www.ietf.org/archive/id/ | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-tsvwg- | draft-ietf-tsvwg-rfc6040update-shim-15.txt>. | |||
| rfc6040update-shim-15>. | ||||
| [I-D.sridharan-tcpm-ctcp] | [I-D.sridharan-tcpm-ctcp] | |||
| Sridharan, M., Tan, K., Bansal, D., and D. Thaler, | Sridharan, M., Tan, K., Bansal, D., and D. Thaler, | |||
| "Compound TCP: A New TCP Congestion Control for High-Speed | "Compound TCP: A New TCP Congestion Control for High-Speed | |||
| and Long Distance Networks", Work in Progress, Internet- | and Long Distance Networks", Work in Progress, Internet- | |||
| Draft, draft-sridharan-tcpm-ctcp-02, 11 November 2008, | Draft, draft-sridharan-tcpm-ctcp-02, 11 November 2008, | |||
| <https://datatracker.ietf.org/doc/html/draft-sridharan- | <https://www.ietf.org/archive/id/draft-sridharan-tcpm- | |||
| tcpm-ctcp-02>. | ctcp-02.txt>. | |||
| [I-D.stewart-tsvwg-sctpecn] | [I-D.stewart-tsvwg-sctpecn] | |||
| Stewart, R. R., Tuexen, M., and X. Dong, "ECN for Stream | Stewart, R. R., Tuexen, M., and X. Dong, "ECN for Stream | |||
| Control Transmission Protocol (SCTP)", Work in Progress, | Control Transmission Protocol (SCTP)", Work in Progress, | |||
| Internet-Draft, draft-stewart-tsvwg-sctpecn-05, 15 January | Internet-Draft, draft-stewart-tsvwg-sctpecn-05, 15 January | |||
| 2014, <https://datatracker.ietf.org/doc/html/draft- | 2014, <https://www.ietf.org/archive/id/draft-stewart- | |||
| stewart-tsvwg-sctpecn-05>. | tsvwg-sctpecn-05.txt>. | |||
| [LinuxPacedChirping] | [LinuxPacedChirping] | |||
| Misund, J. and B. Briscoe, "Paced Chirping - Rethinking | Misund, J. and B. Briscoe, "Paced Chirping - Rethinking | |||
| TCP start-up", Proc. Linux Netdev 0x13 , March 2019, | TCP start-up", Proc. Linux Netdev 0x13 , March 2019, | |||
| <https://www.netdevconf.org/0x13/session.html?talk-chirp>. | <https://www.netdevconf.org/0x13/session.html?talk-chirp>. | |||
| [Mathis09] Mathis, M., "Relentless Congestion Control", PFLDNeT'09 , | [Mathis09] Mathis, M., "Relentless Congestion Control", PFLDNeT'09 , | |||
| May 2009, <http://www.hpcc.jp/pfldnet2009/ | May 2009, <http://www.hpcc.jp/pfldnet2009/ | |||
| Program_files/1569198525.pdf>. | Program_files/1569198525.pdf>. | |||
| skipping to change at page 40, line 5 ¶ | skipping to change at page 40, line 48 ¶ | |||
| Queue Management and Congestion Avoidance in the | Queue Management and Congestion Avoidance in the | |||
| Internet", RFC 2309, DOI 10.17487/RFC2309, April 1998, | Internet", RFC 2309, DOI 10.17487/RFC2309, April 1998, | |||
| <https://www.rfc-editor.org/info/rfc2309>. | <https://www.rfc-editor.org/info/rfc2309>. | |||
| [RFC2474] Nichols, K., Blake, S., Baker, F., and D. Black, | [RFC2474] Nichols, K., Blake, S., Baker, F., and D. Black, | |||
| "Definition of the Differentiated Services Field (DS | "Definition of the Differentiated Services Field (DS | |||
| Field) in the IPv4 and IPv6 Headers", RFC 2474, | Field) in the IPv4 and IPv6 Headers", RFC 2474, | |||
| DOI 10.17487/RFC2474, December 1998, | DOI 10.17487/RFC2474, December 1998, | |||
| <https://www.rfc-editor.org/info/rfc2474>. | <https://www.rfc-editor.org/info/rfc2474>. | |||
| [RFC3246] Davie, B., Charny, A., Bennet, J.C.R., Benson, K., Le | [RFC3246] Davie, B., Charny, A., Bennet, J C R., Benson, K., Le | |||
| Boudec, J.Y., Courtney, W., Davari, S., Firoiu, V., and D. | Boudec, J Y., Courtney, W., Davari, S., Firoiu, V., and D. | |||
| Stiliadis, "An Expedited Forwarding PHB (Per-Hop | Stiliadis, "An Expedited Forwarding PHB (Per-Hop | |||
| Behavior)", RFC 3246, DOI 10.17487/RFC3246, March 2002, | Behavior)", RFC 3246, DOI 10.17487/RFC3246, March 2002, | |||
| <https://www.rfc-editor.org/info/rfc3246>. | <https://www.rfc-editor.org/info/rfc3246>. | |||
| [RFC3540] Spring, N., Wetherall, D., and D. Ely, "Robust Explicit | [RFC3540] Spring, N., Wetherall, D., and D. Ely, "Robust Explicit | |||
| Congestion Notification (ECN) Signaling with Nonces", | Congestion Notification (ECN) Signaling with Nonces", | |||
| RFC 3540, DOI 10.17487/RFC3540, June 2003, | RFC 3540, DOI 10.17487/RFC3540, June 2003, | |||
| <https://www.rfc-editor.org/info/rfc3540>. | <https://www.rfc-editor.org/info/rfc3540>. | |||
| [RFC3649] Floyd, S., "HighSpeed TCP for Large Congestion Windows", | [RFC3649] Floyd, S., "HighSpeed TCP for Large Congestion Windows", | |||
| skipping to change at page 44, line 15 ¶ | skipping to change at page 45, line 11 ¶ | |||
| [RFC9001] Thomson, M., Ed. and S. Turner, Ed., "Using TLS to Secure | [RFC9001] Thomson, M., Ed. and S. Turner, Ed., "Using TLS to Secure | |||
| QUIC", RFC 9001, DOI 10.17487/RFC9001, May 2021, | QUIC", RFC 9001, DOI 10.17487/RFC9001, May 2021, | |||
| <https://www.rfc-editor.org/info/rfc9001>. | <https://www.rfc-editor.org/info/rfc9001>. | |||
| [Savage-TCP] | [Savage-TCP] | |||
| Savage, S., Cardwell, N., Wetherall, D., and T. Anderson, | Savage, S., Cardwell, N., Wetherall, D., and T. Anderson, | |||
| "TCP Congestion Control with a Misbehaving Receiver", ACM | "TCP Congestion Control with a Misbehaving Receiver", ACM | |||
| SIGCOMM Computer Communication Review 29(5):71--78, | SIGCOMM Computer Communication Review 29(5):71--78, | |||
| October 1999. | October 1999. | |||
| [SCReAM] Johansson, I., "SCReAM", github repository; , | [SCReAM-L4S] | |||
| Johansson, I., "SCReAM", github repository; , | ||||
| <https://github.com/EricssonResearch/scream/blob/master/ | <https://github.com/EricssonResearch/scream/blob/master/ | |||
| README.md>. | README.md>. | |||
| [sub-mss-prob] | [sub-mss-prob] | |||
| Briscoe, B. and K. De Schepper, "Scaling TCP's Congestion | Briscoe, B. and K. De Schepper, "Scaling TCP's Congestion | |||
| Window for Small Round Trip Times", BT Technical Report | Window for Small Round Trip Times", BT Technical Report | |||
| TR-TUB8-2015-002, May 2015, | TR-TUB8-2015-002, May 2015, | |||
| <https://arxiv.org/abs/1904.07598>. | <https://arxiv.org/abs/1904.07598>. | |||
| [TCP-CA] Jacobson, V. and M.J. Karels, "Congestion Avoidance and | [TCP-CA] Jacobson, V. and M.J. Karels, "Congestion Avoidance and | |||
| skipping to change at page 58, line 14 ¶ | skipping to change at page 58, line 45 ¶ | |||
| favourable [Paced-Chirping] due to the shallow ECN marking threshold | favourable [Paced-Chirping] due to the shallow ECN marking threshold | |||
| needed for L4S. It is exacerbated by the typically greater mismatch | needed for L4S. It is exacerbated by the typically greater mismatch | |||
| between the link rate of the sending host and typical Internet access | between the link rate of the sending host and typical Internet access | |||
| bottlenecks. This problem is detrimental in general, but would | bottlenecks. This problem is detrimental in general, but would | |||
| particularly harm the performance of short flows relative to Classic | particularly harm the performance of short flows relative to Classic | |||
| congestion controls. | congestion controls. | |||
| Appendix B. Compromises in the Choice of L4S Identifier | Appendix B. Compromises in the Choice of L4S Identifier | |||
| This appendix is informative, not normative. As explained in | This appendix is informative, not normative. As explained in | |||
| Section 2, there is insufficient space in the IP header (v4 or v6) to | Section 3, there is insufficient space in the IP header (v4 or v6) to | |||
| fully accommodate every requirement. So the choice of L4S identifier | fully accommodate every requirement. So the choice of L4S identifier | |||
| involves tradeoffs. This appendix records the pros and cons of the | involves tradeoffs. This appendix records the pros and cons of the | |||
| choice that was made. | choice that was made. | |||
| Non-normative recap of the chosen codepoint scheme: | Non-normative recap of the chosen codepoint scheme: | |||
| Packets with ECT(1) and conditionally packets with CE signify L4S | Packets with ECT(1) and conditionally packets with CE signify L4S | |||
| semantics as an alternative to the semantics of Classic | semantics as an alternative to the semantics of Classic | |||
| ECN [RFC3168], specifically: | ECN [RFC3168], specifically: | |||
| skipping to change at page 64, line 47 ¶ | skipping to change at page 65, line 30 ¶ | |||
| Pre-Congestion Notification (PCN) is another scheme that assigns | Pre-Congestion Notification (PCN) is another scheme that assigns | |||
| alternative semantics to the ECN field. It uses ECT(1) to signify a | alternative semantics to the ECN field. It uses ECT(1) to signify a | |||
| less severe level of pre-congestion notification than CE [RFC6660]. | less severe level of pre-congestion notification than CE [RFC6660]. | |||
| However, the ECN field only takes on the PCN semantics if packets | However, the ECN field only takes on the PCN semantics if packets | |||
| carry a Diffserv codepoint defined to indicate PCN marking within a | carry a Diffserv codepoint defined to indicate PCN marking within a | |||
| controlled environment. PCN is required to be applied solely to the | controlled environment. PCN is required to be applied solely to the | |||
| outer header of a tunnel across the controlled region in order not to | outer header of a tunnel across the controlled region in order not to | |||
| interfere with any end-to-end use of the ECN field. Therefore a PCN | interfere with any end-to-end use of the ECN field. Therefore a PCN | |||
| region on the path would not interfere with the L4S service | region on the path would not interfere with the L4S service | |||
| identifier defined in Section 3. | identifier defined in Section 2. | |||
| Acknowledgements | Acknowledgements | |||
| Thanks to Richard Scheffenegger, John Leslie, David Taeht, Jonathan | Thanks to Richard Scheffenegger, John Leslie, David Taeht, Jonathan | |||
| Morton, Gorry Fairhurst, Michael Welzl, Mikael Abrahamsson and Andrew | Morton, Gorry Fairhurst, Michael Welzl, Mikael Abrahamsson and Andrew | |||
| McGregor for the discussions that led to this specification. Ing-jyh | McGregor for the discussions that led to this specification. Ing-jyh | |||
| (Inton) Tsang was a contributor to the early drafts of this document. | (Inton) Tsang was a contributor to the early drafts of this document. | |||
| And thanks to Mikael Abrahamsson, Lloyd Wood, Nicolas Kuhn, Greg | And thanks to Mikael Abrahamsson, Lloyd Wood, Nicolas Kuhn, Greg | |||
| White, Tom Henderson, David Black, Gorry Fairhurst, Brian Carpenter, | White, Tom Henderson, David Black, Gorry Fairhurst, Brian Carpenter, | |||
| Jake Holland, Rod Grimes, Richard Scheffenegger, Sebastian Moeller, | Jake Holland, Rod Grimes, Richard Scheffenegger, Sebastian Moeller, | |||
| End of changes. 66 change blocks. | ||||
| 217 lines changed or deleted | 260 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||