| < draft-ietf-tsvwg-l4s-arch-19.txt | draft-ietf-tsvwg-l4s-arch-20d.txt > | |||
|---|---|---|---|---|
| Transport Area Working Group B. Briscoe, Ed. | Transport Area Working Group B. Briscoe, Ed. | |||
| Internet-Draft Independent | Internet-Draft Independent | |||
| Intended status: Informational K. De Schepper | Intended status: Informational K. De Schepper | |||
| Expires: 28 January 2023 Nokia Bell Labs | Expires: 28 February 2023 Nokia Bell Labs | |||
| M. Bagnulo Braun | M. Bagnulo Braun | |||
| Universidad Carlos III de Madrid | Universidad Carlos III de Madrid | |||
| G. White | G. White | |||
| CableLabs | CableLabs | |||
| 27 July 2022 | 27 August 2022 | |||
| Low Latency, Low Loss, Scalable Throughput (L4S) Internet Service: | Low Latency, Low Loss, Scalable Throughput (L4S) Internet Service: | |||
| Architecture | Architecture | |||
| draft-ietf-tsvwg-l4s-arch-19 | draft-ietf-tsvwg-l4s-arch-20 | |||
| Abstract | Abstract | |||
| This document describes the L4S architecture, which enables Internet | This document describes the L4S architecture, which enables Internet | |||
| applications to achieve Low queuing Latency, Low Loss, and Scalable | applications to achieve Low queuing Latency, Low Loss, and Scalable | |||
| throughput (L4S). The insight on which L4S is based is that the root | throughput (L4S). L4S is based on the insight that the root cause of | |||
| cause of queuing delay is in the congestion controllers of senders, | queuing delay is in the capacity-seeking congestion controllers of | |||
| not in the queue itself. With the L4S architecture all Internet | senders, not in the queue itself. With the L4S architecture all | |||
| applications could (but do not have to) transition away from | Internet applications could (but do not have to) transition away from | |||
| congestion control algorithms that cause substantial queuing delay, | congestion control algorithms that cause substantial queuing delay, | |||
| to a new class of congestion controls that induce very little | to a new class of congestion controls that can seek capacity with | |||
| queuing, aided by explicit congestion signalling from the network. | very little queuing. These are aided by a modified form of explicit | |||
| This new class of congestion controls can provide low latency for | congestion notification (ECN) from the network. With this new | |||
| capacity-seeking flows, so applications can achieve both high | architecture, applications can have both low latency and high | |||
| bandwidth and low latency. | throughput. | |||
| The architecture primarily concerns incremental deployment. It | The architecture primarily concerns incremental deployment. It | |||
| defines mechanisms that allow the new class of L4S congestion | defines mechanisms that allow the new class of L4S congestion | |||
| controls to coexist with 'Classic' congestion controls in a shared | controls to coexist with 'Classic' congestion controls in a shared | |||
| network. These mechanisms aim to ensure that the latency and | network. The aim is for L4S latency and throughput to be usually | |||
| throughput performance using an L4S-compliant congestion controller | much better (and rarely worse), while typically not impacting Classic | |||
| is usually much better (and rarely worse) than performance would have | performance. | |||
| been using a 'Classic' congestion controller, and that competing | ||||
| flows continuing to use 'Classic' controllers are typically not | ||||
| impacted by the presence of L4S. These characteristics are important | ||||
| to encourage adoption of L4S congestion control algorithms and L4S | ||||
| compliant network elements. | ||||
| The L4S architecture consists of three components: network support to | ||||
| isolate L4S traffic from classic traffic; protocol features that | ||||
| allow network elements to identify L4S traffic; and host support for | ||||
| L4S congestion controls. The protocol is defined separately as an | ||||
| experimental change to Explicit Congestion Notification (ECN). | ||||
| 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 28 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 3, line 4 ¶ | skipping to change at page 2, line 43 ¶ | |||
| 4.1. Protocol Mechanisms . . . . . . . . . . . . . . . . . . . 9 | 4.1. Protocol Mechanisms . . . . . . . . . . . . . . . . . . . 9 | |||
| 4.2. Network Components . . . . . . . . . . . . . . . . . . . 10 | 4.2. Network Components . . . . . . . . . . . . . . . . . . . 10 | |||
| 4.3. Host Mechanisms . . . . . . . . . . . . . . . . . . . . . 13 | 4.3. Host Mechanisms . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 5. Rationale . . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 5. Rationale . . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 5.1. Why These Primary Components? . . . . . . . . . . . . . . 15 | 5.1. Why These Primary Components? . . . . . . . . . . . . . . 15 | |||
| 5.2. What L4S adds to Existing Approaches . . . . . . . . . . 18 | 5.2. What L4S adds to Existing Approaches . . . . . . . . . . 18 | |||
| 6. Applicability . . . . . . . . . . . . . . . . . . . . . . . . 21 | 6. Applicability . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 6.1. Applications . . . . . . . . . . . . . . . . . . . . . . 21 | 6.1. Applications . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 6.2. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . 22 | 6.2. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 6.3. Applicability with Specific Link Technologies . . . . . . 24 | 6.3. Applicability with Specific Link Technologies . . . . . . 24 | |||
| 6.4. Deployment Considerations . . . . . . . . . . . . . . . . 24 | 6.4. Deployment Considerations . . . . . . . . . . . . . . . . 25 | |||
| 6.4.1. Deployment Topology . . . . . . . . . . . . . . . . . 25 | 6.4.1. Deployment Topology . . . . . . . . . . . . . . . . . 25 | |||
| 6.4.2. Deployment Sequences . . . . . . . . . . . . . . . . 26 | 6.4.2. Deployment Sequences . . . . . . . . . . . . . . . . 26 | |||
| 6.4.3. L4S Flow but Non-ECN Bottleneck . . . . . . . . . . . 29 | 6.4.3. L4S Flow but Non-ECN Bottleneck . . . . . . . . . . . 29 | |||
| 6.4.4. L4S Flow but Classic ECN Bottleneck . . . . . . . . . 30 | 6.4.4. L4S Flow but Classic ECN Bottleneck . . . . . . . . . 30 | |||
| 6.4.5. L4S AQM Deployment within Tunnels . . . . . . . . . . 30 | 6.4.5. L4S AQM Deployment within Tunnels . . . . . . . . . . 30 | |||
| 7. IANA Considerations (to be removed by RFC Editor) . . . . . . 30 | 7. IANA Considerations (to be removed by RFC Editor) . . . . . . 30 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 30 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 31 | |||
| 8.1. Traffic Rate (Non-)Policing . . . . . . . . . . . . . . . 30 | 8.1. Traffic Rate (Non-)Policing . . . . . . . . . . . . . . . 31 | |||
| 8.1.1. (Non-)Policing Rate per Flow . . . . . . . . . . . . 31 | ||||
| 8.1.2. (Non-)Policing L4S Service Rate . . . . . . . . . . . 31 | ||||
| 8.2. 'Latency Friendliness' . . . . . . . . . . . . . . . . . 32 | 8.2. 'Latency Friendliness' . . . . . . . . . . . . . . . . . 32 | |||
| 8.3. Interaction between Rate Policing and L4S . . . . . . . . 34 | 8.3. Interaction between Rate Policing and L4S . . . . . . . . 34 | |||
| 8.4. ECN Integrity . . . . . . . . . . . . . . . . . . . . . . 34 | 8.4. ECN Integrity . . . . . . . . . . . . . . . . . . . . . . 35 | |||
| 8.5. Privacy Considerations . . . . . . . . . . . . . . . . . 35 | 8.5. Privacy Considerations . . . . . . . . . . . . . . . . . 35 | |||
| 9. Informative References . . . . . . . . . . . . . . . . . . . 36 | 9. Informative References . . . . . . . . . . . . . . . . . . . 36 | |||
| Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 45 | Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 45 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 45 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 46 | |||
| 1. Introduction | 1. Introduction | |||
| At any one time, it is increasingly common for all of the traffic in | At any one time, it is increasingly common for all of the traffic in | |||
| a bottleneck link (e.g. a household's Internet access) to come from | a bottleneck link (e.g. a household's Internet access) to come from | |||
| applications that prefer low delay: interactive Web, Web services, | applications that prefer low delay: interactive Web, Web services, | |||
| voice, conversational video, interactive video, interactive remote | voice, conversational video, interactive video, interactive remote | |||
| presence, instant messaging, online gaming, remote desktop, cloud- | presence, instant messaging, online gaming, remote desktop, cloud- | |||
| based applications and video-assisted remote control of machinery and | based applications and video-assisted remote control of machinery and | |||
| industrial processes. In the last decade or so, much has been done | industrial processes. In the last decade or so, much has been done | |||
| skipping to change at page 3, line 48 ¶ | skipping to change at page 3, line 40 ¶ | |||
| important because, for interactive applications, losses translate | important because, for interactive applications, losses translate | |||
| into even longer retransmission delays. | into even longer retransmission delays. | |||
| It has been demonstrated that, once access network bit rates reach | It has been demonstrated that, once access network bit rates reach | |||
| levels now common in the developed world, increasing link capacity | levels now common in the developed world, increasing link capacity | |||
| offers diminishing returns if latency (delay) is not addressed | offers diminishing returns if latency (delay) is not addressed | |||
| [Dukkipati06], [Rajiullah15]. Therefore, the goal is an Internet | [Dukkipati06], [Rajiullah15]. Therefore, the goal is an Internet | |||
| service with very Low queueing Latency, very Low Loss and Scalable | service with very Low queueing Latency, very Low Loss and Scalable | |||
| throughput (L4S). Very low queuing latency means less than | throughput (L4S). Very low queuing latency means less than | |||
| 1 millisecond (ms) on average and less than about 2 ms at the 99th | 1 millisecond (ms) on average and less than about 2 ms at the 99th | |||
| percentile. This document describes the L4S architecture for | percentile. End-to-end delay above 50 ms [Raaen14] or even above | |||
| achieving these goals. | 20 ms [NASA04] starts to feel unnatural for more demanding | |||
| interactive applications. So removing unnecessary delay variability | ||||
| increases the reach of these applications (the distance over which | ||||
| they are comfortable to use). This document describes the L4S | ||||
| architecture for achieving these goals. | ||||
| Differentiated services (Diffserv) offers Expedited Forwarding | Differentiated services (Diffserv) offers Expedited Forwarding | |||
| (EF [RFC3246]) for some packets at the expense of others, but this | (EF [RFC3246]) for some packets at the expense of others, but this | |||
| makes no difference when all (or most) of the traffic at a bottleneck | makes no difference when all (or most) of the traffic at a bottleneck | |||
| at any one time requires low latency. In contrast, L4S still works | at any one time requires low latency. In contrast, L4S still works | |||
| well when all traffic is L4S - a service that gives without taking | well when all traffic is L4S - a service that gives without taking | |||
| needs none of the configuration or management baggage (traffic | needs none of the configuration or management baggage (traffic | |||
| policing, traffic contracts) associated with favouring some traffic | policing, traffic contracts) associated with favouring some traffic | |||
| flows over others. | flows over others. | |||
| skipping to change at page 4, line 28 ¶ | skipping to change at page 4, line 22 ¶ | |||
| is itself a large capacity-seeking or adaptive rate (e.g. interactive | is itself a large capacity-seeking or adaptive rate (e.g. interactive | |||
| video) flow. At these times, the performance improvement from L4S | video) flow. At these times, the performance improvement from L4S | |||
| must be sufficient that network operators will be motivated to deploy | must be sufficient that network operators will be motivated to deploy | |||
| it. | it. | |||
| Active Queue Management (AQM) is part of the solution to queuing | Active Queue Management (AQM) is part of the solution to queuing | |||
| under load. AQM improves performance for all traffic, but there is a | under load. AQM improves performance for all traffic, but there is a | |||
| limit to how much queuing delay can be reduced by solely changing the | limit to how much queuing delay can be reduced by solely changing the | |||
| network; without addressing the root of the problem. | network; without addressing the root of the problem. | |||
| The root of the problem is the presence of standard TCP congestion | The root of the problem is the presence of standard congestion | |||
| control (Reno [RFC5681]) or compatible variants (e.g. TCP | control (Reno [RFC5681]) or compatible variants | |||
| Cubic [RFC8312]). We shall use the term 'Classic' for these Reno- | (e.g. CUBIC [RFC8312]) that are used in TCP and in other transports | |||
| friendly congestion controls. Classic congestion controls induce | such as QUIC [RFC9000]. We shall use the term 'Classic' for these | |||
| relatively large saw-tooth-shaped excursions up the queue and down | Reno-friendly congestion controls. Classic congestion controls | |||
| again, which have been growing as flow rate scales [RFC3649]. So if | induce relatively large saw-tooth-shaped excursions up the queue and | |||
| a network operator naively attempts to reduce queuing delay by | down again, which have been growing as flow rate scales [RFC3649]. | |||
| So if a network operator naively attempts to reduce queuing delay by | ||||
| configuring an AQM to operate at a shallower queue, a Classic | configuring an AQM to operate at a shallower queue, a Classic | |||
| congestion control will significantly underutilize the link at the | congestion control will significantly underutilize the link at the | |||
| bottom of every saw-tooth. | bottom of every saw-tooth. | |||
| It has been demonstrated that if the sending host replaces a Classic | It has been demonstrated that if the sending host replaces a Classic | |||
| congestion control with a 'Scalable' alternative, when a suitable AQM | congestion control with a 'Scalable' alternative, when a suitable AQM | |||
| is deployed in the network the performance under load of all the | is deployed in the network the performance under load of all the | |||
| above interactive applications can be significantly improved. For | above interactive applications can be significantly improved. For | |||
| instance, queuing delay under heavy load with the example DCTCP/DualQ | instance, queuing delay under heavy load with the example DCTCP/DualQ | |||
| solution cited below on a DSL or Ethernet link is roughly 1 to 2 | solution cited below on a DSL or Ethernet link is roughly 1 to 2 | |||
| skipping to change at page 5, line 18 ¶ | skipping to change at page 5, line 12 ¶ | |||
| start using it as soon as the sender's stack is updated. Access | start using it as soon as the sender's stack is updated. Access | |||
| networks are typically designed with one link as the bottleneck for | networks are typically designed with one link as the bottleneck for | |||
| each site (which might be a home, small enterprise or mobile device), | each site (which might be a home, small enterprise or mobile device), | |||
| so deployment at either or both ends of this link should give nearly | so deployment at either or both ends of this link should give nearly | |||
| all the benefit in the respective direction. With some transport | all the benefit in the respective direction. With some transport | |||
| protocols, namely TCP and SCTP, the sender has to check that the | protocols, namely TCP and SCTP, the sender has to check that the | |||
| receiver has been suitably updated to give more accurate feedback, | receiver has been suitably updated to give more accurate feedback, | |||
| whereas with more recent transport protocols such as QUIC and DCCP, | whereas with more recent transport protocols such as QUIC and DCCP, | |||
| all receivers have always been suitable. | all receivers have always been suitable. | |||
| This document presents the L4S architecture, by describing and | This document presents the L4S architecture. It consists of three | |||
| justifying the component parts and how they interact to provide the | components: network support to isolate L4S traffic from classic | |||
| scalable, low latency, low loss Internet service. It also details | traffic; protocol features that allow network elements to identify | |||
| the approach to incremental deployment, as briefly summarized above. | L4S traffic; and host support for L4S congestion controls. The | |||
| protocol is defined separately [I-D.ietf-tsvwg-ecn-l4s-id] as an | ||||
| experimental change to Explicit Congestion Notification (ECN). This | ||||
| document describes and justifies the component parts and how they | ||||
| interact to provide the scalable, low latency, low loss Internet | ||||
| service. It also details the approach to incremental deployment, as | ||||
| briefly summarized above. | ||||
| 1.1. Document Roadmap | 1.1. Document Roadmap | |||
| This document describes the L4S architecture in three passes. First | This document describes the L4S architecture in three passes. First | |||
| this brief overview gives the very high level idea and states the | this brief overview gives the very high level idea and states the | |||
| main components with minimal rationale. This is only intended to | main components with minimal rationale. This is only intended to | |||
| give some context for the terminology definitions that follow in | give some context for the terminology definitions that follow in | |||
| Section 3, and to explain the structure of the rest of the document. | Section 3, and to explain the structure of the rest of the document. | |||
| Then Section 4 goes into more detail on each component with some | Then Section 4 goes into more detail on each component with some | |||
| rationale, but still mostly stating what the architecture is, rather | rationale, but still mostly stating what the architecture is, rather | |||
| than why. Finally Section 5 justifies why each element of the | than why. Finally, Section 5 justifies why each element of the | |||
| solution was chosen (Section 5.1) and why these choices were | solution was chosen (Section 5.1) and why these choices were | |||
| different from other solutions (Section 5.2). | different from other solutions (Section 5.2). | |||
| Having described the architecture, Section 6 clarifies its | Having described the architecture, Section 6 clarifies its | |||
| applicability; that is, the applications and use-cases that motivated | applicability; that is, the applications and use-cases that motivated | |||
| the design, the challenges applying the architecture to various link | the design, the challenges applying the architecture to various link | |||
| technologies, and various incremental deployment models: including | technologies, and various incremental deployment models: including | |||
| the two main deployment topologies, different sequences for | the two main deployment topologies, different sequences for | |||
| incremental deployment and various interactions with pre-existing | incremental deployment and various interactions with pre-existing | |||
| approaches. The document ends with the usual tail pieces, including | approaches. The document ends with the usual tailpieces, including | |||
| extensive discussion of traffic policing and other security | extensive discussion of traffic policing and other security | |||
| considerations in Section 8. | considerations in Section 8. | |||
| 2. L4S Architecture Overview | 2. L4S Architecture Overview | |||
| Below we outline the three main components to the L4S architecture; | Below we outline the three main components to the L4S architecture; | |||
| 1) the scalable congestion control on the sending host; 2) the AQM at | 1) the scalable congestion control on the sending host; 2) the AQM at | |||
| the network bottleneck; and 3) the protocol between them. | the network bottleneck; and 3) the protocol between them. | |||
| But first, the main point to grasp is that low latency is not | But first, the main point to grasp is that low latency is not | |||
| skipping to change at page 6, line 25 ¶ | skipping to change at page 6, line 25 ¶ | |||
| essential for L4S, senders use the ECN field as the protocol that | essential for L4S, senders use the ECN field as the protocol that | |||
| allows the network to identify which packets are L4S and which are | allows the network to identify which packets are L4S and which are | |||
| Classic. | Classic. | |||
| 1) Host: Scalable congestion controls already exist. They solve the | 1) Host: Scalable congestion controls already exist. They solve the | |||
| scaling problem with Classic congestion controls, such as Reno or | scaling problem with Classic congestion controls, such as Reno or | |||
| Cubic. Because flow rate has scaled since TCP congestion control | Cubic. Because flow rate has scaled since TCP congestion control | |||
| was first designed in 1988, assuming the flow lasts long enough, | was first designed in 1988, assuming the flow lasts long enough, | |||
| it now takes hundreds of round trips (and growing) to recover | it now takes hundreds of round trips (and growing) to recover | |||
| after a congestion signal (whether a loss or an ECN mark) as shown | after a congestion signal (whether a loss or an ECN mark) as shown | |||
| in the examples in Section 5.1 and [RFC3649]. Therefore control | in the examples in Section 5.1 and [RFC3649]. Therefore, control | |||
| of queuing and utilization becomes very slack, and the slightest | of queuing and utilization becomes very slack, and the slightest | |||
| disturbances (e.g. from new flows starting) prevent a high rate | disturbances (e.g. from new flows starting) prevent a high rate | |||
| from being attained. | from being attained. | |||
| With a scalable congestion control, the average time from one | With a scalable congestion control, the average time from one | |||
| congestion signal to the next (the recovery time) remains | congestion signal to the next (the recovery time) remains | |||
| invariant as the flow rate scales, all other factors being equal. | invariant as the flow rate scales, all other factors being equal. | |||
| This maintains the same degree of control over queueing and | This maintains the same degree of control over queueing and | |||
| utilization whatever the flow rate, as well as ensuring that high | utilization whatever the flow rate, as well as ensuring that high | |||
| throughput is more robust to disturbances. The scalable control | throughput is more robust to disturbances. The scalable control | |||
| skipping to change at page 7, line 6 ¶ | skipping to change at page 7, line 6 ¶ | |||
| (QUIC, SCTP, RTP/RTCP, RMCAT, etc.). Indeed, between the present | (QUIC, SCTP, RTP/RTCP, RMCAT, etc.). Indeed, between the present | |||
| document being drafted and published, the following scalable | document being drafted and published, the following scalable | |||
| congestion controls were implemented: TCP Prague [PragueLinux], | congestion controls were implemented: TCP Prague [PragueLinux], | |||
| QUIC Prague, an L4S variant of the RMCAT SCReAM | QUIC Prague, an L4S variant of the RMCAT SCReAM | |||
| controller [SCReAM] and the L4S ECN part of BBRv2 [BBRv2] intended | controller [SCReAM] and the L4S ECN part of BBRv2 [BBRv2] intended | |||
| for TCP and QUIC transports. | for TCP and QUIC transports. | |||
| 2) Network: L4S traffic needs to be isolated from the queuing | 2) Network: L4S traffic needs to be isolated from the queuing | |||
| latency of Classic traffic. One queue per application flow (FQ) | latency of Classic traffic. One queue per application flow (FQ) | |||
| is one way to achieve this, e.g. FQ-CoDel [RFC8290]. However, | is one way to achieve this, e.g. FQ-CoDel [RFC8290]. However, | |||
| just two queues is sufficient and does not require inspection of | using just two queues is sufficient and does not require | |||
| transport layer headers in the network, which is not always | inspection of transport layer headers in the network, which is not | |||
| possible (see Section 5.2). With just two queues, it might seem | always possible (see Section 5.2). With just two queues, it might | |||
| impossible to know how much capacity to schedule for each queue | seem impossible to know how much capacity to schedule for each | |||
| without inspecting how many flows at any one time are using each. | queue without inspecting how many flows at any one time are using | |||
| And it would be undesirable to arbitrarily divide access network | each. And it would be undesirable to arbitrarily divide access | |||
| capacity into two partitions. The Dual Queue Coupled AQM was | network capacity into two partitions. The Dual Queue Coupled AQM | |||
| developed as a minimal complexity solution to this problem. It | was developed as a minimal complexity solution to this problem. | |||
| acts like a 'semi-permeable' membrane that partitions latency but | It acts like a 'semi-permeable' membrane that partitions latency | |||
| not bandwidth. As such, the two queues are for transition from | but not bandwidth. As such, the two queues are for transition | |||
| Classic to L4S behaviour, not bandwidth prioritization. | from Classic to L4S behaviour, not bandwidth prioritization. | |||
| Section 4 gives a high level explanation of how the per-flow-queue | Section 4 gives a high level explanation of how the per-flow-queue | |||
| (FQ) and DualQ variants of L4S work, and | (FQ) and DualQ variants of L4S work, and | |||
| [I-D.ietf-tsvwg-aqm-dualq-coupled] gives a full explanation of the | [I-D.ietf-tsvwg-aqm-dualq-coupled] gives a full explanation of the | |||
| DualQ Coupled AQM framework. A specific marking algorithm is not | DualQ Coupled AQM framework. A specific marking algorithm is not | |||
| mandated for L4S AQMs. Appendices of | mandated for L4S AQMs. Appendices of | |||
| [I-D.ietf-tsvwg-aqm-dualq-coupled] give non-normative examples | [I-D.ietf-tsvwg-aqm-dualq-coupled] give non-normative examples | |||
| that have been implemented and evaluated, and give recommended | that have been implemented and evaluated, and give recommended | |||
| default parameter settings. It is expected that L4S experiments | default parameter settings. It is expected that L4S experiments | |||
| will improve knowledge of parameter settings and whether the set | will improve knowledge of parameter settings and whether the set | |||
| of marking algorithms needs to be limited. | of marking algorithms needs to be limited. | |||
| 3) Protocol: A host needs to distinguish L4S and Classic packets | 3) Protocol: A sending host needs to distinguish L4S and Classic | |||
| with an identifier so that the network can classify them into | packets with an identifier so that the network can classify them | |||
| their separate treatments. The L4S identifier | into their separate treatments. The L4S identifier | |||
| spec. [I-D.ietf-tsvwg-ecn-l4s-id] concludes that all alternatives | spec. [I-D.ietf-tsvwg-ecn-l4s-id] concludes that all alternatives | |||
| involve compromises, but the ECT(1) and CE codepoints of the ECN | involve compromises, but the ECT(1) and CE codepoints of the ECN | |||
| field represent a workable solution. As already explained, the | field represent a workable solution. As already explained, the | |||
| network also uses ECN to immediately signal the very start of | network also uses ECN to immediately signal the very start of | |||
| queue growth to the transport. | queue growth to the transport. | |||
| 3. Terminology | 3. Terminology | |||
| Note: The following definitions are copied from the L4S ECN | [Note to the RFC Editor (to be removed before publication as an RFC): | |||
| spec [I-D.ietf-tsvwg-ecn-l4s-id] for convenience. If there are | The following definitions are copied from the L4S ECN | |||
| accidental differences, those in [I-D.ietf-tsvwg-ecn-l4s-id] take | spec [I-D.ietf-tsvwg-ecn-l4s-id] for the reader's convenience. | |||
| precedence. | Except, here, Classic CC and Scalable CC are condensed because they | |||
| refer to Section 5.1 later. Also the definition of Traffic Policing | ||||
| is not needed in [I-D.ietf-tsvwg-ecn-l4s-id].] | ||||
| Classic Congestion Control: A congestion control behaviour that can | Classic Congestion Control: A congestion control behaviour that can | |||
| co-exist with standard Reno [RFC5681] without causing | co-exist with standard Reno [RFC5681] without causing | |||
| significantly negative impact on its flow rate [RFC5033]. The | significantly negative impact on its flow rate [RFC5033]. The | |||
| scaling problem with Classic congestion control is explained, with | scaling problem with Classic congestion control is explained, with | |||
| examples, in Section 5.1 and in [RFC3649]. | examples, in Section 5.1 and in [RFC3649]. | |||
| Scalable Congestion Control: A congestion control where the average | Scalable Congestion Control: A congestion control where the average | |||
| 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 | |||
| skipping to change at page 8, line 26 ¶ | skipping to change at page 8, line 28 ¶ | |||
| 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 the Prague congestion | algorithms, such as the Prague congestion | |||
| control [I-D.briscoe-iccrg-prague-congestion-control], which was | control [I-D.briscoe-iccrg-prague-congestion-control], which was | |||
| derived from DCTCP [RFC8257]. The L4S service is for more | derived from DCTCP [RFC8257]. The L4S service is for more | |||
| general traffic than just TCP Prague -- it allows the set of | general traffic than just Prague -- it allows the set of | |||
| congestion controls with similar scaling properties to Prague to | congestion controls with similar scaling properties to Prague to | |||
| evolve, such as the examples listed above (Relentless, SCReAM). | evolve, such as the examples listed above (Relentless, SCReAM). | |||
| The term 'L4S queue' means a queue providing the L4S service. | The term 'L4S 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 to not build a | case its rate has to be smooth enough or low enough to not 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 is used in non- | |||
| TCP transports such as QUIC [RFC9000]. | TCP transports such as QUIC [RFC9000]. | |||
| skipping to change at page 9, line 28 ¶ | skipping to change at page 9, line 30 ¶ | |||
| network bottleneck is typically the access link to the site. Not | network bottleneck is typically the access link to the site. Not | |||
| all network arrangements fit this model but it is a useful, widely | all network arrangements fit this model but it is a useful, widely | |||
| applicable generalization. | applicable generalization. | |||
| Traffic policing: Limiting traffic by dropping packets or shifting | Traffic policing: Limiting traffic by dropping packets or shifting | |||
| them to lower service class (as opposed to introducing delay, | them to lower service class (as opposed to introducing delay, | |||
| which is termed traffic shaping). Policing can involve limiting | which is termed traffic shaping). Policing can involve limiting | |||
| average rate and/or burst size. Policing focused on limiting | average rate and/or burst size. Policing focused on limiting | |||
| queuing but not average flow rate is termed congestion policing, | queuing but not average flow rate is termed congestion policing, | |||
| latency policing, burst policing or queue protection in this | latency policing, burst policing or queue protection in this | |||
| document. Otherwise the term rate policing is used. | document. Otherwise, the term rate policing is used. | |||
| 4. L4S Architecture Components | 4. L4S Architecture Components | |||
| The L4S architecture is composed of the elements in the following | The L4S architecture is composed of the elements in the following | |||
| three subsections. | three subsections. | |||
| 4.1. Protocol Mechanisms | 4.1. Protocol Mechanisms | |||
| The L4S architecture involves: a) unassignment of an identifier; b) | The L4S architecture involves: a) unassignment of the previous use of | |||
| reassignment of the same identifier; and c) optional further | the identifier; b) reassignment of the same identifier; and c) | |||
| identifiers: | optional further identifiers: | |||
| a. An essential aspect of a scalable congestion control is the use | a. An essential aspect of a scalable congestion control is the use | |||
| of explicit congestion signals. 'Classic' ECN [RFC3168] requires | of explicit congestion signals. 'Classic' ECN [RFC3168] requires | |||
| an ECN signal to be treated as equivalent to drop, both when it | an ECN signal to be treated as equivalent to drop, both when it | |||
| is generated in the network and when it is responded to by hosts. | is generated in the network and when it is responded to by hosts. | |||
| L4S needs networks and hosts to support a more fine-grained | L4S needs networks and hosts to support a more fine-grained | |||
| meaning for each ECN signal that is less severe than a drop, so | meaning for each ECN signal that is less severe than a drop, so | |||
| that the L4S signals: | that the L4S signals: | |||
| * can be much more frequent; | * can be much more frequent; | |||
| * can be signalled immediately, without the significant delay | * can be signalled immediately, without the significant delay | |||
| required to smooth out fluctuations in the queue. | required to smooth out fluctuations in the queue. | |||
| To enable L4S, the standards track Classic ECN spec. [RFC3168] | To enable L4S, the standards track Classic ECN spec. [RFC3168] | |||
| has had to be updated to allow L4S packets to depart from the | has had to be updated to allow L4S packets to depart from the | |||
| 'equivalent to drop' constraint. [RFC8311] is a standards track | 'equivalent to drop' constraint. [RFC8311] is a standards track | |||
| update to relax specific requirements in RFC 3168 (and certain | update to relax specific requirements in RFC 3168 (and certain | |||
| other standards track RFCs), which clears the way for the | other standards track RFCs), which clears the way for the | |||
| experimental changes proposed for L4S. [RFC8311] also | experimental changes proposed for L4S. Also, the ECT(1) | |||
| reclassifies the original experimental assignment of the ECT(1) | codepoint was previously assigned as the experimental ECN | |||
| codepoint as an ECN nonce [RFC3540] as historic. | nonce [RFC3540], which RFC 8311 recategorizes as historic to make | |||
| the codepoint available again. | ||||
| b. [I-D.ietf-tsvwg-ecn-l4s-id] specifies that ECT(1) is used as the | b. [I-D.ietf-tsvwg-ecn-l4s-id] specifies that ECT(1) is used as the | |||
| identifier to classify L4S packets into a separate treatment from | identifier to classify L4S packets into a separate treatment from | |||
| Classic packets. This satisfies the requirement for identifying | Classic packets. This satisfies the requirement for identifying | |||
| an alternative ECN treatment in [RFC4774]. | an alternative ECN treatment in [RFC4774]. | |||
| The CE codepoint is used to indicate Congestion Experienced by | The CE codepoint is used to indicate Congestion Experienced by | |||
| both L4S and Classic treatments. This raises the concern that a | both L4S and Classic treatments. This raises the concern that a | |||
| Classic AQM earlier on the path might have marked some ECT(0) | Classic AQM earlier on the path might have marked some ECT(0) | |||
| packets as CE. Then these packets will be erroneously classified | packets as CE. Then these packets will be erroneously classified | |||
| skipping to change at page 13, line 12 ¶ | skipping to change at page 13, line 12 ¶ | |||
| Scalable Sending Host; 2) Isolation in separate network | Scalable Sending Host; 2) Isolation in separate network | |||
| queues; and 3) Packet Identification Protocol | queues; and 3) Packet Identification Protocol | |||
| b. Per-Flow Queues and AQMs: A scheduler with per-flow queues such | b. Per-Flow Queues and AQMs: A scheduler with per-flow queues such | |||
| as FQ-CoDel or FQ-PIE can be used for L4S. For instance within | as FQ-CoDel or FQ-PIE can be used for L4S. For instance within | |||
| each queue of an FQ-CoDel system, as well as a CoDel AQM, there | each queue of an FQ-CoDel system, as well as a CoDel AQM, there | |||
| is typically also the option of ECN marking at an immediate | is typically also the option of ECN marking at an immediate | |||
| (unsmoothed) shallow threshold to support use in data centres | (unsmoothed) shallow threshold to support use in data centres | |||
| (see Sec.5.2.7 of the FQ-CoDel spec [RFC8290]). In Linux, this | (see Sec.5.2.7 of the FQ-CoDel spec [RFC8290]). In Linux, this | |||
| has been modified so that the shallow threshold can be solely | has been modified so that the shallow threshold can be solely | |||
| applied to ECT(1) packets [FQ_CoDel_Thresh]. Then if there is a | applied to ECT(1) packets [FQ_CoDel_Thresh]. Then, if there is a | |||
| flow of non-ECN or ECT(0) packets in the per-flow-queue, the | flow of non-ECN or ECT(0) packets in the per-flow-queue, the | |||
| Classic AQM (e.g. CoDel) is applied; while if there is a flow of | Classic AQM (e.g. CoDel) is applied; while if there is a flow of | |||
| ECT(1) packets in the queue, the shallower (typically sub- | ECT(1) packets in the queue, the shallower (typically sub- | |||
| millisecond) threshold is applied. In addition, ECT(0) and not- | millisecond) threshold is applied. In addition, ECT(0) and not- | |||
| ECT packets could potentially be classified into a separate flow- | ECT packets could potentially be classified into a separate flow- | |||
| queue from ECT(1) and CE packets to avoid them mixing if they | queue from ECT(1) and CE packets to avoid them mixing if they | |||
| share a common flow-identifier (e.g. in a VPN). | share a common flow-identifier (e.g. in a VPN). | |||
| c. Dual-queues, but per-flow AQMs: It should also be possible to use | c. Dual-queues, but per-flow AQMs: It should also be possible to use | |||
| dual queues for isolation, but with per-flow marking to control | dual queues for isolation, but with per-flow marking to control | |||
| skipping to change at page 14, line 21 ¶ | skipping to change at page 14, line 21 ¶ | |||
| Transport protocols other than TCP use various congestion | Transport protocols other than TCP use various congestion | |||
| controls that are designed to be friendly with Reno. Before they | controls that are designed to be friendly with Reno. Before they | |||
| can use the L4S service, they will need to be updated to | can use the L4S service, they will need to be updated to | |||
| implement a scalable congestion response, which they will have to | implement a scalable congestion response, which they will have to | |||
| indicate by using the ECT(1) codepoint. Scalable variants are | indicate by using the ECT(1) codepoint. Scalable variants are | |||
| under consideration for more recent transport protocols, | under consideration for more recent transport protocols, | |||
| e.g. QUIC, and the L4S ECN part of BBRv2 [BBRv2], | e.g. QUIC, and the L4S ECN part of BBRv2 [BBRv2], | |||
| [I-D.cardwell-iccrg-bbr-congestion-control] is a scalable | [I-D.cardwell-iccrg-bbr-congestion-control] is a scalable | |||
| congestion control intended for the TCP and QUIC transports, | congestion control intended for the TCP and QUIC transports, | |||
| amongst others. Also an L4S variant of the RMCAT SCReAM | amongst others. Also, an L4S variant of the RMCAT SCReAM | |||
| controller [RFC8298] has been implemented [SCReAM] for media | controller [RFC8298] has been implemented [SCReAM] for media | |||
| transported over RTP. | transported over RTP. | |||
| Section 4.3 of the L4S ECN spec [I-D.ietf-tsvwg-ecn-l4s-id] | Section 4.3 of the L4S ECN spec [I-D.ietf-tsvwg-ecn-l4s-id] | |||
| defines scalable congestion control in more detail, and specifies | defines scalable congestion control in more detail, and specifies | |||
| the requirements that an L4S scalable congestion control has to | the requirements that an L4S scalable congestion control has to | |||
| comply with. | comply with. | |||
| b. The ECN feedback in some transport protocols is already | b. The ECN feedback in some transport protocols is already | |||
| sufficiently fine-grained for L4S (specifically DCCP [RFC4340] | sufficiently fine-grained for L4S (specifically DCCP [RFC4340] | |||
| skipping to change at page 14, line 43 ¶ | skipping to change at page 14, line 43 ¶ | |||
| the process of being updated: | the process of being updated: | |||
| * For the case of TCP, the feedback protocol for ECN embeds the | * For the case of TCP, the feedback protocol for ECN embeds the | |||
| assumption from Classic ECN [RFC3168] that an ECN mark is | assumption from Classic ECN [RFC3168] that an ECN mark is | |||
| equivalent to a drop, making it unusable for a scalable TCP. | equivalent to a drop, making it unusable for a scalable TCP. | |||
| Therefore, the implementation of TCP receivers will have to be | Therefore, the implementation of TCP receivers will have to be | |||
| upgraded [RFC7560]. Work to standardize and implement more | upgraded [RFC7560]. Work to standardize and implement more | |||
| accurate ECN feedback for TCP (AccECN) is in | accurate ECN feedback for TCP (AccECN) is in | |||
| progress [I-D.ietf-tcpm-accurate-ecn], [PragueLinux]. | progress [I-D.ietf-tcpm-accurate-ecn], [PragueLinux]. | |||
| * ECN feedback is only roughly sketched in an appendix of the | * ECN feedback was only roughly sketched in an appendix of the | |||
| SCTP specification [RFC4960]. A fuller specification has been | now obsoleted second specification of SCTP [RFC4960], while a | |||
| proposed in a long-expired draft [I-D.stewart-tsvwg-sctpecn], | fuller specification was proposed in a long-expired | |||
| which would need to be implemented and deployed before SCTP | draft [I-D.stewart-tsvwg-sctpecn]. A new design would need to | |||
| could support L4S. | be implemented and deployed before SCTP could support L4S. | |||
| * For RTP, sufficient ECN feedback was defined in [RFC6679], but | * For RTP, sufficient ECN feedback was defined in [RFC6679], but | |||
| [RFC8888] defines the latest standards track improvements. | [RFC8888] defines the latest standards track improvements. | |||
| 5. Rationale | 5. Rationale | |||
| 5.1. Why These Primary Components? | 5.1. Why These Primary Components? | |||
| Explicit congestion signalling (protocol): Explicit congestion | Explicit congestion signalling (protocol): Explicit congestion | |||
| signalling is a key part of the L4S approach. In contrast, use of | signalling is a key part of the L4S approach. In contrast, use of | |||
| drop as a congestion signal creates a tension because drop is both | drop as a congestion signal creates a tension because drop is both | |||
| an impairment (less would be better) and a useful signal (more | an impairment (less would be better) and a useful signal (more | |||
| would be better): | would be better): | |||
| * Explicit congestion signals can be used many times per round | * Explicit congestion signals can be used many times per round | |||
| trip, to keep tight control, without any impairment. Under | trip, to keep tight control, without any impairment. Under | |||
| heavy load, even more explicit signals can be applied so the | heavy load, even more explicit signals can be applied, so that | |||
| queue can be kept short whatever the load. In contrast, | the queue can be kept short whatever the load. In contrast, | |||
| Classic AQMs have to introduce very high packet drop at high | Classic AQMs have to introduce very high packet drop at high | |||
| load to keep the queue short. By using ECN, an L4S congestion | load to keep the queue short. By using ECN, an L4S congestion | |||
| control's sawtooth reduction can be smaller and therefore | control's sawtooth reduction can be smaller and therefore | |||
| return to the operating point more often, without worrying that | return to the operating point more often, without worrying that | |||
| more sawteeth will cause more signals. The consequent smaller | more sawteeth will cause more signals. The consequent smaller | |||
| amplitude sawteeth fit between an empty queue and a very | amplitude sawteeth fit between an empty queue and a very | |||
| shallow marking threshold (~1 ms in the public Internet), so | shallow marking threshold (~1 ms in the public Internet), so | |||
| queue delay variation can be very low, without risk of under- | queue delay variation can be very low, without risk of under- | |||
| utilization. | utilization. | |||
| skipping to change at page 17, line 30 ¶ | skipping to change at page 17, line 30 ¶ | |||
| proportionately by 8x as well, from 422 ms to 3.38 s. It is | proportionately by 8x as well, from 422 ms to 3.38 s. It is | |||
| clearly problematic for a congestion control to take multiple | clearly problematic for a congestion control to take multiple | |||
| seconds to recover from each congestion event. Cubic [RFC8312] | seconds to recover from each congestion event. Cubic [RFC8312] | |||
| was developed to be less unscalable, but it is approaching its | was developed to be less unscalable, but it is approaching its | |||
| scaling limit; with the same max RTT of 30 ms, at 120 Mb/s Cubic | scaling limit; with the same max RTT of 30 ms, at 120 Mb/s Cubic | |||
| is still fully in its Reno-friendly mode, so it takes about 4.3 s | is still fully in its Reno-friendly mode, so it takes about 4.3 s | |||
| to recover. However, once the flow rate scales by 8x again to | to recover. However, once the flow rate scales by 8x again to | |||
| 960 Mb/s it enters true Cubic mode, with a recovery time of | 960 Mb/s it enters true Cubic mode, with a recovery time of | |||
| 12.2 s. From then on, each further scaling by 8x doubles Cubic's | 12.2 s. From then on, each further scaling by 8x doubles Cubic's | |||
| recovery time (because the cube root of 8 is 2), e.g. at 7.68 Gb/s | recovery time (because the cube root of 8 is 2), e.g. at 7.68 Gb/s | |||
| the recovery time is 24.3 s. In contrast a scalable congestion | the recovery time is 24.3 s. In contrast, a scalable congestion | |||
| control like DCTCP or TCP Prague induces 2 congestion signals per | control like DCTCP or TCP Prague induces 2 congestion signals per | |||
| round trip on average, which remains invariant for any flow rate, | round trip on average, which remains invariant for any flow rate, | |||
| keeping dynamic control very tight. | keeping dynamic control very tight. | |||
| For a feel of where the global average lone-flow download sits on | For a feel of where the global average lone-flow download sits on | |||
| this scale at the time of writing (2021), according to [BDPdata] | this scale at the time of writing (2021), according to [BDPdata] | |||
| globally averaged fixed access capacity was 103 Mb/s in 2020 and | globally averaged fixed access capacity was 103 Mb/s in 2020 and | |||
| averaged base RTT to a CDN was 25-34ms in 2019. Averaging of per- | averaged base RTT to a CDN was 25-34ms in 2019. Averaging of per- | |||
| country data was weighted by Internet user population (data | country data was weighted by Internet user population (data | |||
| collected globally is necessarily of variable quality, but the | collected globally is necessarily of variable quality, but the | |||
| skipping to change at page 20, line 33 ¶ | skipping to change at page 20, line 33 ¶ | |||
| control. Then, flow rate policing can be added separately if | control. Then, flow rate policing can be added separately if | |||
| desired. This allows application control up to a point, but | desired. This allows application control up to a point, but | |||
| the network can still choose to set the point at which it | the network can still choose to set the point at which it | |||
| intervenes to prevent one flow completely starving another. | intervenes to prevent one flow completely starving another. | |||
| Note: | Note: | |||
| 1. It might seem that self-inflicted queuing delay within a per- | 1. It might seem that self-inflicted queuing delay within a per- | |||
| flow queue should not be counted, because if the delay wasn't | flow queue should not be counted, because if the delay wasn't | |||
| in the network it would just shift to the sender. However, | in the network it would just shift to the sender. However, | |||
| modern adaptive applications, e.g. HTTP/2 [RFC7540] or some | modern adaptive applications, e.g. HTTP/2 [RFC9113] or some | |||
| interactive media applications (see Section 6.1), can keep low | interactive media applications (see Section 6.1), can keep low | |||
| latency objects at the front of their local send queue by | latency objects at the front of their local send queue by | |||
| shuffling priorities of other objects dependent on the | shuffling priorities of other objects dependent on the | |||
| progress of other transfers (for example see [lowat]). They | progress of other transfers (for example see [lowat]). They | |||
| cannot shuffle objects once they have released them into the | cannot shuffle objects once they have released them into the | |||
| network. | network. | |||
| Alternative Back-off ECN (ABE): Here again, L4S is not an | Alternative Back-off ECN (ABE): Here again, L4S is not an | |||
| alternative to ABE but a complement that introduces much lower | alternative to ABE but a complement that introduces much lower | |||
| queuing delay. ABE [RFC8511] alters the host behaviour in | queuing delay. ABE [RFC8511] alters the host behaviour in | |||
| response to ECN marking to utilize a link better and give ECN | response to ECN marking to utilize a link better and give ECN | |||
| flows faster throughput. It uses ECT(0) and assumes the network | flows faster throughput. It uses ECT(0) and assumes the network | |||
| still treats ECN and drop the same. Therefore ABE exploits any | still treats ECN and drop the same. Therefore, ABE exploits any | |||
| lower queuing delay that AQMs can provide. But as explained | lower queuing delay that AQMs can provide. But, as explained | |||
| above, AQMs still cannot reduce queuing delay too far without | above, AQMs still cannot reduce queuing delay too far without | |||
| losing link utilization (to allow for other, non-ABE, flows). | losing link utilization (to allow for other, non-ABE, flows). | |||
| BBR: Bottleneck Bandwidth and Round-trip propagation time | BBR: Bottleneck Bandwidth and Round-trip propagation time | |||
| (BBR [I-D.cardwell-iccrg-bbr-congestion-control]) controls queuing | (BBR [I-D.cardwell-iccrg-bbr-congestion-control]) controls queuing | |||
| delay end-to-end without needing any special logic in the network, | delay end-to-end without needing any special logic in the network, | |||
| such as an AQM. So it works pretty-much on any path. BBR keeps | such as an AQM. So it works pretty-much on any path. BBR keeps | |||
| queuing delay reasonably low, but perhaps not quite as low as with | queuing delay reasonably low, but perhaps not quite as low as with | |||
| state-of-the-art AQMs such as PIE or FQ-CoDel, and certainly | state-of-the-art AQMs such as PIE or FQ-CoDel, and certainly | |||
| nowhere near as low as with L4S. Queuing delay is also not | nowhere near as low as with L4S. Queuing delay is also not | |||
| consistently low, due to BBR's regular bandwidth probing spikes | consistently low, due to BBR's regular bandwidth probing spikes | |||
| and its aggressive flow start-up phase. | and its aggressive flow start-up phase. | |||
| L4S complements BBR. Indeed BBRv2 can use L4S ECN where available | L4S complements BBR. Indeed, BBRv2 can use L4S ECN where | |||
| and a scalable L4S congestion control behaviour in response to any | available and a scalable L4S congestion control behaviour in | |||
| ECN signalling from the path [BBRv2]. The L4S ECN signal | response to any ECN signalling from the path [BBRv2]. The L4S ECN | |||
| complements the delay based congestion control aspects of BBR with | signal complements the delay based congestion control aspects of | |||
| an explicit indication that hosts can use, both to converge on a | BBR with an explicit indication that hosts can use, both to | |||
| fair rate and to keep below a shallow queue target set by the | converge on a fair rate and to keep below a shallow queue target | |||
| network. Without L4S ECN, both these aspects need to be assumed | set by the network. Without L4S ECN, both these aspects need to | |||
| or estimated. | be assumed or estimated. | |||
| 6. Applicability | 6. Applicability | |||
| 6.1. Applications | 6.1. Applications | |||
| A transport layer that solves the current latency issues will provide | A transport layer that solves the current latency issues will provide | |||
| new service, product and application opportunities. | new service, product and application opportunities. | |||
| With the L4S approach, the following existing applications also | With the L4S approach, the following existing applications also | |||
| experience significantly better quality of experience under load: | experience significantly better quality of experience under load: | |||
| skipping to change at page 22, line 14 ¶ | skipping to change at page 22, line 14 ¶ | |||
| The above two applications have been successfully demonstrated with | The above two applications have been successfully demonstrated with | |||
| L4S, both running together over a 40 Mb/s broadband access link | L4S, both running together over a 40 Mb/s broadband access link | |||
| loaded up with the numerous other latency sensitive applications in | loaded up with the numerous other latency sensitive applications in | |||
| the previous list as well as numerous downloads - all sharing the | the previous list as well as numerous downloads - all sharing the | |||
| same bottleneck queue simultaneously [L4Sdemo16]. For the former, a | same bottleneck queue simultaneously [L4Sdemo16]. For the former, a | |||
| panoramic video of a football stadium could be swiped and pinched so | panoramic video of a football stadium could be swiped and pinched so | |||
| that, on the fly, a proxy in the cloud could generate a sub-window of | that, on the fly, a proxy in the cloud could generate a sub-window of | |||
| the match video under the finger-gesture control of each user. For | the match video under the finger-gesture control of each user. For | |||
| the latter, a virtual reality headset displayed a viewport taken from | the latter, a virtual reality headset displayed a viewport taken from | |||
| a 360 degree camera in a racing car. The user's head movements | a 360-degree camera in a racing car. The user's head movements | |||
| controlled the viewport extracted by a cloud-based proxy. In both | controlled the viewport extracted by a cloud-based proxy. In both | |||
| cases, with 7 ms end-to-end base delay, the additional queuing delay | cases, with 7 ms end-to-end base delay, the additional queuing delay | |||
| of roughly 1 ms was so low that it seemed the video was generated | of roughly 1 ms was so low that it seemed the video was generated | |||
| locally. | locally. | |||
| Using a swiping finger gesture or head movement to pan a video are | Using a swiping finger gesture or head movement to pan a video are | |||
| extremely latency-demanding actions -- far more demanding than VoIP. | extremely latency-demanding actions -- far more demanding than VoIP. | |||
| Because human vision can detect extremely low delays of the order of | Because human vision can detect extremely low delays of the order of | |||
| single milliseconds when delay is translated into a visual lag | single milliseconds when delay is translated into a visual lag | |||
| between a video and a reference point (the finger or the orientation | between a video and a reference point (the finger or the orientation | |||
| of the head sensed by the balance system in the inner ear -- the | of the head sensed by the balance system in the inner ear -- the | |||
| vestibular system). | vestibular system). With an alternative AQM, the video noticeably | |||
| lagged behind the finger gestures and head movements. | ||||
| Without the low queuing delay of L4S, cloud-based applications like | Without the low queuing delay of L4S, cloud-based applications like | |||
| these would not be credible without significantly more access | these would not be credible without significantly more access | |||
| bandwidth (to deliver all possible video that might be viewed) and | bandwidth (to deliver all possible video that might be viewed) and | |||
| more local processing, which would increase the weight and power | more local processing, which would increase the weight and power | |||
| consumption of head-mounted displays. When all interactive | consumption of head-mounted displays. When all interactive | |||
| processing can be done in the cloud, only the data to be rendered for | processing can be done in the cloud, only the data to be rendered for | |||
| the end user needs to be sent. | the end user needs to be sent. | |||
| Other low latency high bandwidth applications such as: | Other low latency high bandwidth applications such as: | |||
| skipping to change at page 24, line 8 ¶ | skipping to change at page 24, line 8 ¶ | |||
| budget can communicate over longer distances, or via a longer | budget can communicate over longer distances, or via a longer | |||
| chain of service functions [RFC7665] or onion routers. | chain of service functions [RFC7665] or onion routers. | |||
| * If delay jitter is minimized, it is possible to reduce the | * If delay jitter is minimized, it is possible to reduce the | |||
| dejitter buffers on the receive end of video streaming, which | dejitter buffers on the receive end of video streaming, which | |||
| should improve the interactive experience | should improve the interactive experience | |||
| 6.3. Applicability with Specific Link Technologies | 6.3. Applicability with Specific Link Technologies | |||
| Certain link technologies aggregate data from multiple packets into | Certain link technologies aggregate data from multiple packets into | |||
| bursts, and buffer incoming packets while building each burst. WiFi, | bursts, and buffer incoming packets while building each burst. Wi- | |||
| PON and cable all involve such packet aggregation, whereas fixed | Fi, PON and cable all involve such packet aggregation, whereas fixed | |||
| Ethernet and DSL do not. No sender, whether L4S or not, can do | Ethernet and DSL do not. No sender, whether L4S or not, can do | |||
| anything to reduce the buffering needed for packet aggregation. So | anything to reduce the buffering needed for packet aggregation. So | |||
| an AQM should not count this buffering as part of the queue that it | an AQM should not count this buffering as part of the queue that it | |||
| controls, given no amount of congestion signals will reduce it. | controls, given no amount of congestion signals will reduce it. | |||
| Certain link technologies also add buffering for other reasons, | Certain link technologies also add buffering for other reasons, | |||
| specifically: | specifically: | |||
| * Radio links (cellular, WiFi, satellite) that are distant from the | * Radio links (cellular, Wi-Fi, satellite) that are distant from the | |||
| source are particularly challenging. The radio link capacity can | source are particularly challenging. The radio link capacity can | |||
| vary rapidly by orders of magnitude, so it is considered desirable | vary rapidly by orders of magnitude, so it is considered desirable | |||
| to hold a standing queue that can utilize sudden increases of | to hold a standing queue that can utilize sudden increases of | |||
| capacity; | capacity; | |||
| * Cellular networks are further complicated by a perceived need to | * Cellular networks are further complicated by a perceived need to | |||
| buffer in order to make hand-overs imperceptible; | buffer in order to make hand-overs imperceptible; | |||
| L4S cannot remove the need for all these different forms of | L4S cannot remove the need for all these different forms of | |||
| buffering. However, by removing 'the longest pole in the tent' | buffering. However, by removing 'the longest pole in the tent' | |||
| (buffering for the large sawteeth of Classic congestion controls), | (buffering for the large sawteeth of Classic congestion controls), | |||
| L4S exposes all these 'shorter poles' to greater scrutiny. | L4S exposes all these 'shorter poles' to greater scrutiny. | |||
| Until now, the buffering needed for these additional reasons tended | Until now, the buffering needed for these additional reasons tended | |||
| to be over-specified - with the excuse that none were 'the longest | to be over-specified - with the excuse that none were 'the longest | |||
| pole in the tent'. But having removed the 'longest pole', it becomes | pole in the tent'. But having removed the 'longest pole', it becomes | |||
| worthwhile to minimize them, for instance reducing packet aggregation | worthwhile to minimize them, for instance reducing packet aggregation | |||
| burst sizes and MAC scheduling intervals. | burst sizes and MAC scheduling intervals. | |||
| Also certain link types, particularly radio-based links, are far more | ||||
| prone to transmission losses. Section 6.4.3 explains how an L4S | ||||
| response to loss has to be as drastic as a Classic response. | ||||
| Nonetheless, research referred to in the same section has | ||||
| demonstrated potential for considerably more effective loss repair at | ||||
| the link layer, due to the relaxed ordering constraints of L4S | ||||
| packets. | ||||
| 6.4. Deployment Considerations | 6.4. Deployment Considerations | |||
| L4S AQMs, whether DualQ [I-D.ietf-tsvwg-aqm-dualq-coupled] or FQ, | L4S AQMs, whether DualQ [I-D.ietf-tsvwg-aqm-dualq-coupled] or FQ, | |||
| e.g. [RFC8290] are, in themselves, an incremental deployment | e.g. [RFC8290] are, in themselves, an incremental deployment | |||
| mechanism for L4S - so that L4S traffic can coexist with existing | mechanism for L4S - so that L4S traffic can coexist with existing | |||
| Classic (Reno-friendly) traffic. Section 6.4.1 explains why only | Classic (Reno-friendly) traffic. Section 6.4.1 explains why only | |||
| deploying an L4S AQM in one node at each end of the access link will | deploying an L4S AQM in one node at each end of the access link will | |||
| realize nearly all the benefit of L4S. | realize nearly all the benefit of L4S. | |||
| L4S involves both end systems and the network, so Section 6.4.2 | L4S involves both end systems and the network, so Section 6.4.2 | |||
| skipping to change at page 26, line 14 ¶ | skipping to change at page 26, line 33 ¶ | |||
| Deployment in mesh topologies depends on how overbooked the core is. | Deployment in mesh topologies depends on how overbooked the core is. | |||
| If the core is non-blocking, or at least generously provisioned so | If the core is non-blocking, or at least generously provisioned so | |||
| that the edges are nearly always the bottlenecks, it would only be | that the edges are nearly always the bottlenecks, it would only be | |||
| necessary to deploy an L4S AQM at the edge bottlenecks. For example, | necessary to deploy an L4S AQM at the edge bottlenecks. For example, | |||
| some data-centre networks are designed with the bottleneck in the | some data-centre networks are designed with the bottleneck in the | |||
| hypervisor or host NICs, while others bottleneck at the top-of-rack | hypervisor or host NICs, while others bottleneck at the top-of-rack | |||
| switch (both the output ports facing hosts and those facing the | switch (both the output ports facing hosts and those facing the | |||
| core). | core). | |||
| An L4S AQM would often next be needed where the WiFi links in a home | An L4S AQM would often next be needed where the Wi-Fi links in a home | |||
| sometimes become the bottleneck. And an L4S AQM would eventually | sometimes become the bottleneck. And an L4S AQM would eventually | |||
| also need to be deployed at any other persistent bottlenecks such as | also need to be deployed at any other persistent bottlenecks such as | |||
| network interconnections, e.g. some public Internet exchange points | network interconnections, e.g. some public Internet exchange points | |||
| and the ingress and egress to WAN links interconnecting data-centres. | and the ingress and egress to WAN links interconnecting data-centres. | |||
| 6.4.2. Deployment Sequences | 6.4.2. Deployment Sequences | |||
| For any one L4S flow to provide benefit, it requires three (or | For any one L4S flow to provide benefit, it requires three (or | |||
| sometimes two) parts to have been deployed: i) the congestion control | sometimes two) parts to have been deployed: i) the congestion control | |||
| at the sender; ii) the AQM at the bottleneck; and iii) older | at the sender; ii) the AQM at the bottleneck; and iii) older | |||
| skipping to change at page 27, line 31 ¶ | skipping to change at page 28, line 4 ¶ | |||
| +-+--------------------+----------------------+---------------------+ | +-+--------------------+----------------------+---------------------+ | |||
| |2| Upgrade DCTCP to | |Replace DCTCP feedb'k| | |2| Upgrade DCTCP to | |Replace DCTCP feedb'k| | |||
| | | TCP Prague | | with AccECN | | | | TCP Prague | | with AccECN | | |||
| | | FULLY WORKS DOWNSTREAM | | | | FULLY WORKS DOWNSTREAM | | |||
| +-+--------------------+----------------------+---------------------+ | +-+--------------------+----------------------+---------------------+ | |||
| | | | | Upgrade DCTCP to | | | | | | Upgrade DCTCP to | | |||
| |3| | Add L4S AQM upstream | TCP Prague | | |3| | Add L4S AQM upstream | TCP Prague | | |||
| | | | | | | | | | | | | |||
| | | FULLY WORKS UPSTREAM AND DOWNSTREAM | | | | FULLY WORKS UPSTREAM AND DOWNSTREAM | | |||
| +-+--------------------+----------------------+---------------------+ | +-+--------------------+----------------------+---------------------+ | |||
| Figure 3: Example L4S Deployment Sequence | Figure 3: Example L4S Deployment Sequence | |||
| Figure 3 illustrates some example sequences in which the parts of L4S | Figure 3 illustrates some example sequences in which the parts of L4S | |||
| might be deployed. It consists of the following stages: | might be deployed. It consists of the following stages, preceded by | |||
| a presumption that DCTCP is already installed at both ends: | ||||
| 1. Here, the immediate benefit of a single AQM deployment can be | 1. DCTCP is not applicable for use over the public Internet, so it | |||
| seen, but limited to a controlled trial or controlled deployment. | is emphasized here that any DCTCP flow has to be completely | |||
| In this example downstream deployment is first, but in other | contained within a controlled trial environment. | |||
| scenarios the upstream might be deployed first. If no AQM at all | ||||
| was previously deployed for the downstream access, an L4S AQM | Within this trial environment, once an L4S AQM has been deployed, | |||
| greatly improves the Classic service (as well as adding the L4S | the trial DCTCP flow will experience immediate benefit, without | |||
| service). If an AQM was already deployed, the Classic service | any other deployment being needed. In this example downstream | |||
| will be unchanged (and L4S will add an improvement on top). | deployment is first, but in other scenarios the upstream might be | |||
| deployed first. If no AQM at all was previously deployed for the | ||||
| downstream access, an L4S AQM greatly improves the Classic | ||||
| service (as well as adding the L4S service). If an AQM was | ||||
| already deployed, the Classic service will be unchanged (and L4S | ||||
| will add an improvement on top). | ||||
| 2. In this stage, the name 'TCP | 2. In this stage, the name 'TCP | |||
| Prague' [I-D.briscoe-iccrg-prague-congestion-control] is used to | Prague' [I-D.briscoe-iccrg-prague-congestion-control] is used to | |||
| represent a variant of DCTCP that is designed to be used in a | represent a variant of DCTCP that is designed to be used in a | |||
| production Internet environment (assuming it complies with the | production Internet environment (that is, it has to comply with | |||
| requirements in Section 4 of the L4S ECN | all the requirements in Section 4 of the L4S ECN | |||
| spec [I-D.ietf-tsvwg-ecn-l4s-id]). If the application is | spec [I-D.ietf-tsvwg-ecn-l4s-id], which then means it can be used | |||
| primarily unidirectional, 'TCP Prague' at one end will provide | over the public Internet). If the application is primarily | |||
| all the benefit needed. | unidirectional, 'TCP Prague' at one end will provide all the | |||
| benefit needed. | ||||
| For TCP transports, Accurate ECN feedback | For TCP transports, Accurate ECN feedback | |||
| (AccECN) [I-D.ietf-tcpm-accurate-ecn] is needed at the other end, | (AccECN) [I-D.ietf-tcpm-accurate-ecn] is needed at the other end, | |||
| but it is a generic ECN feedback facility that is already planned | but it is a generic ECN feedback facility that is already planned | |||
| to be deployed for other purposes, e.g. DCTCP, BBR. The two ends | to be deployed for other purposes, e.g. DCTCP, BBR. The two ends | |||
| can be deployed in either order, because, in TCP, an L4S | can be deployed in either order, because, in TCP, an L4S | |||
| congestion control only enables itself if it has negotiated the | congestion control only enables itself if it has negotiated the | |||
| use of AccECN feedback with the other end during the connection | use of AccECN feedback with the other end during the connection | |||
| handshake. Thus, deployment of TCP Prague on a server enables | handshake. Thus, deployment of TCP Prague on a server enables | |||
| L4S trials to move to a production service in one direction, | L4S trials to move to a production service in one direction, | |||
| skipping to change at page 28, line 35 ¶ | skipping to change at page 29, line 7 ¶ | |||
| Prague relative to DCTCP (see Appendix A.2 of the L4S ECN | Prague relative to DCTCP (see Appendix A.2 of the L4S ECN | |||
| spec [I-D.ietf-tsvwg-ecn-l4s-id]). | spec [I-D.ietf-tsvwg-ecn-l4s-id]). | |||
| Unlike TCP, from the outset, QUIC ECN feedback [RFC9000] has | Unlike TCP, from the outset, QUIC ECN feedback [RFC9000] has | |||
| supported L4S. Therefore, if the transport is QUIC, one-ended | supported L4S. Therefore, if the transport is QUIC, one-ended | |||
| deployment of a Prague congestion control at this stage is simple | deployment of a Prague congestion control at this stage is simple | |||
| and sufficient. | and sufficient. | |||
| For QUIC, if a proxy sits in the path between multiple origin | For QUIC, if a proxy sits in the path between multiple origin | |||
| servers and the access bottlenecks to multiple clients, then | servers and the access bottlenecks to multiple clients, then | |||
| upgrading the proxy to a Scalable CC would provide the benefits | upgrading the proxy with a Scalable congestion control would | |||
| of L4S over all the clients' downstream bottlenecks in one go --- | provide the benefits of L4S over all the clients' downstream | |||
| whether or not all the origin servers were upgraded. Conversely, | bottlenecks in one go --- whether or not all the origin servers | |||
| where a proxy has not been upgraded, the clients served by it | were upgraded. Conversely, where a proxy has not been upgraded, | |||
| will not benefit from L4S at all in the downstream, even when any | the clients served by it will not benefit from L4S at all in the | |||
| origin server behind the proxy has been upgraded to support L4S. | downstream, even when any origin server behind the proxy has been | |||
| upgraded to support L4S. | ||||
| For TCP, a proxy upgraded to support 'TCP Prague' would provide | For TCP, a proxy upgraded to support 'TCP Prague' would provide | |||
| the benefits of L4S downstream to all clients that support AccECN | the benefits of L4S downstream to all clients that support AccECN | |||
| (whether or not they support L4S as well). And in the upstream, | (whether or not they support L4S as well). And in the upstream, | |||
| the proxy would also support AccECN as a receiver, so that any | the proxy would also support AccECN as a receiver, so that any | |||
| client deploying its own L4S support would benefit in the | client deploying its own L4S support would benefit in the | |||
| upstream direction, irrespective of whether any origin server | upstream direction, irrespective of whether any origin server | |||
| beyond the proxy supported AccECN. | beyond the proxy supported AccECN. | |||
| 3. This is a two-move stage to enable L4S upstream. An L4S AQM or | 3. This is a two-move stage to enable L4S upstream. An L4S AQM or | |||
| skipping to change at page 30, line 39 ¶ | skipping to change at page 31, line 9 ¶ | |||
| [I-D.ietf-tsvwg-ecn-encap-guidelines]. | [I-D.ietf-tsvwg-ecn-encap-guidelines]. | |||
| 7. IANA Considerations (to be removed by RFC Editor) | 7. IANA Considerations (to be removed by RFC Editor) | |||
| This specification contains no IANA considerations. | This specification contains no IANA considerations. | |||
| 8. Security Considerations | 8. Security Considerations | |||
| 8.1. Traffic Rate (Non-)Policing | 8.1. Traffic Rate (Non-)Policing | |||
| In the current Internet, scheduling usually enforces separation | 8.1.1. (Non-)Policing Rate per Flow | |||
| between 'sites' (e.g. households, businesses or mobile | ||||
| users [RFC0970]) and various techniques like redirection to traffic | ||||
| scrubbing facilities deal with flooding attacks. However, there has | ||||
| never been a universal need to police the rate of individual | ||||
| application flows - the Internet has generally always relied on self- | ||||
| restraint of congestion controls at senders for sharing intra-'site' | ||||
| capacity. | ||||
| As explained in Section 5.2, the DualQ variant of L4S provides low | In the current Internet, ISPs usually enforce separation between the | |||
| delay without prejudging the issue of flow-rate control. Then, if | capacity of shared links assigned to different 'sites' | |||
| flow-rate control is needed, per-flow-queuing (FQ) can be used | (e.g. households, businesses or mobile users - see terminology in | |||
| instead, or flow rate policing can be added as a modular addition to | Section 3) using some form of scheduler [RFC0970]. And they use | |||
| a DualQ. | various techniques like redirection to traffic scrubbing facilities | |||
| to deal with flooding attacks. However, there has never been a | ||||
| universal need to police the rate of individual application flows - | ||||
| the Internet has generally always relied on self-restraint of | ||||
| congestion controls at senders for sharing intra-'site' capacity. | ||||
| Because the L4S service reduces delay without increasing the delay of | L4S has been designed not to upset this status quo. If a DualQ is | |||
| Classic traffic, it should not be necessary to rate-police access to | used to provide L4S service, section 4.2 of | |||
| the L4S service. In contrast, Section 5.2 explains how Diffserv only | [I-D.ietf-tsvwg-aqm-dualq-coupled] explains how it is designed to | |||
| makes a difference if some packets get less favourable treatment than | give no more rate advantage to unresponsive flows than a single-queue | |||
| others, which typically requires traffic rate policing, which can, in | AQM would, whether or not there is traffic overload. | |||
| turn, lead to further complexity such as traffic contracts at trust | ||||
| boundaries. Because L4S avoids this management complexity, it is | Also, in case per-flow rate policing is ever required, it can be | |||
| more likely to work end-to-end. | added because it is orthogonal to the distinction between L4S and | |||
| Classic. As explained in Section 5.2, the DualQ variant of L4S | ||||
| provides low delay without prejudging the issue of flow-rate control. | ||||
| So, if flow-rate control is needed, per-flow-queuing (FQ) with L4S | ||||
| support can be used instead, or flow rate policing can be added as a | ||||
| modular addition to a DualQ. However, per-flow rate control is not | ||||
| usually deployed as a security mechanism, because an active attacker | ||||
| can just shard its traffic over more flow IDs if the rate of each is | ||||
| restricted. | ||||
| 8.1.2. (Non-)Policing L4S Service Rate | ||||
| Section 5.2 explains how Diffserv only makes a difference if some | ||||
| packets get less favourable treatment than others, which typically | ||||
| requires traffic rate policing for a low latency class. In contrast, | ||||
| it should not be necessary to rate-police access to the L4S service | ||||
| to protect the Classic service, because L4S is designed to reduce | ||||
| delay without harming the delay or rate of any Classic traffic. | ||||
| During early deployment (and perhaps always), some networks will not | During early deployment (and perhaps always), some networks will not | |||
| offer the L4S service. In general, these networks should not need to | offer the L4S service. In general, these networks should not need to | |||
| police L4S traffic. They are required (by both the ECN | police L4S traffic. They are required (by both the ECN | |||
| spec [RFC3168] and the L4S ECN spec [I-D.ietf-tsvwg-ecn-l4s-id]) not | spec [RFC3168] and the L4S ECN spec [I-D.ietf-tsvwg-ecn-l4s-id]) not | |||
| to change the L4S identifier, which would interfere with end-to-end | to change the L4S identifier, which would interfere with end-to-end | |||
| congestion control. If they already treat ECN traffic as Not-ECT, | congestion control. If they already treat ECN traffic as Not-ECT, | |||
| they can merely treat L4S traffic as Not-ECT too. At a bottleneck, | they can merely treat L4S traffic as Not-ECT too. At a bottleneck, | |||
| such networks will introduce some queuing and dropping. When a | such networks will introduce some queuing and dropping. When a | |||
| scalable congestion control detects a drop it will have to respond | scalable congestion control detects a drop it will have to respond | |||
| skipping to change at page 32, line 6 ¶ | skipping to change at page 32, line 24 ¶ | |||
| In cases that are expected to be rare, networks that solely support | In cases that are expected to be rare, networks that solely support | |||
| Classic ECN [RFC3168] in a single queue bottleneck might opt to | Classic ECN [RFC3168] in a single queue bottleneck might opt to | |||
| police L4S traffic so as to protect competing Classic ECN traffic | police L4S traffic so as to protect competing Classic ECN traffic | |||
| (for instance, see Section 6.1.3 of the L4S operational | (for instance, see Section 6.1.3 of the L4S operational | |||
| guidance [I-D.ietf-tsvwg-l4sops]). However, Section 4.3 of the L4S | guidance [I-D.ietf-tsvwg-l4sops]). However, Section 4.3 of the L4S | |||
| ECN spec [I-D.ietf-tsvwg-ecn-l4s-id] recommends that the sender | ECN spec [I-D.ietf-tsvwg-ecn-l4s-id] recommends that the sender | |||
| adapts its congestion response to properly coexist with Classic ECN | adapts its congestion response to properly coexist with Classic ECN | |||
| flows, i.e. reverting to the self-restraint approach. | flows, i.e. reverting to the self-restraint approach. | |||
| Certain network operators might choose to restrict access to the L4S | Certain network operators might choose to restrict access to the L4S | |||
| class, perhaps only to selected premium customers as a value-added | service, perhaps only to selected premium customers as a value-added | |||
| service. Their packet classifier (item 2 in Figure 1) could identify | service. Their packet classifier (item 2 in Figure 1) could identify | |||
| such customers against some other field (e.g. source address range) | such customers against some other field (e.g. source address range) | |||
| as well as classifying on the ECN field. If only the ECN L4S | as well as classifying on the ECN field. If only the ECN L4S | |||
| identifier matched, but not the source address (say), the classifier | identifier matched, but not the source address (say), the classifier | |||
| could direct these packets (from non-premium customers) into the | could direct these packets (from non-premium customers) into the | |||
| Classic queue. Explaining clearly how operators can use an | Classic queue. Explaining clearly how operators can use additional | |||
| additional local classifiers (see section 5.4 of the L4S ECN | local classifiers (see section 5.4 of the L4S ECN | |||
| spec [I-D.ietf-tsvwg-ecn-l4s-id]) is intended to remove any | spec [I-D.ietf-tsvwg-ecn-l4s-id]) is intended to remove any | |||
| motivation to clear the L4S identifier. Then at least the L4S ECN | motivation to clear the L4S identifier. Then at least the L4S ECN | |||
| identifier will be more likely to survive end-to-end even though the | identifier will be more likely to survive end-to-end even though the | |||
| service may not be supported at every hop. Such local arrangements | service may not be supported at every hop. Such local arrangements | |||
| would only require simple registered/not-registered packet | would only require simple registered/not-registered packet | |||
| classification, rather than the managed, application-specific traffic | classification, rather than the managed, application-specific traffic | |||
| policing against customer-specific traffic contracts that Diffserv | policing against customer-specific traffic contracts that Diffserv | |||
| uses. | uses. | |||
| 8.2. 'Latency Friendliness' | 8.2. 'Latency Friendliness' | |||
| Like the Classic service, the L4S service relies on self-restraint - | Like the Classic service, the L4S service relies on self-restraint - | |||
| limiting rate in response to congestion. In addition, the L4S | limiting rate in response to congestion. In addition, the L4S | |||
| service requires self-restraint in terms of limiting latency | service requires self-restraint in terms of limiting latency | |||
| (burstiness). It is hoped that self-interest and guidance on dynamic | (burstiness). It is hoped that self-interest and guidance on dynamic | |||
| behaviour (especially flow start-up, which might need to be | behaviour (especially flow start-up, which might need to be | |||
| standardized) will be sufficient to prevent transports from sending | standardized) will be sufficient to prevent transports from sending | |||
| excessive bursts of L4S traffic, given the application's own latency | excessive bursts of L4S traffic, given the application's own latency | |||
| will suffer most from such behaviour. | will suffer most from such behaviour. | |||
| Whether burst policing becomes necessary remains to be seen. Without | Because the L4S service can reduce delay without discernibly | |||
| it, there will be potential for attacks on the low latency of the L4S | increasing the delay of any Classic traffic, it should not be | |||
| service. | necessary to police L4S traffic to protect the delay of Classic. | |||
| However, whether burst policing becomes necessary to protect other | ||||
| L4S traffic remains to be seen. Without it, there will be potential | ||||
| for attacks on the low latency of the L4S service. | ||||
| If needed, various arrangements could be used to address this | If needed, various arrangements could be used to address this | |||
| concern: | concern: | |||
| Local bottleneck queue protection: A per-flow (5-tuple) queue | Local bottleneck queue protection: A per-flow (5-tuple) queue | |||
| protection function [I-D.briscoe-docsis-q-protection] has been | protection function [I-D.briscoe-docsis-q-protection] has been | |||
| developed for the low latency queue in DOCSIS, which has adopted | developed for the low latency queue in DOCSIS, which has adopted | |||
| the DualQ L4S architecture. It protects the low latency service | the DualQ L4S architecture. It protects the low latency service | |||
| from any queue-building flows that accidentally or maliciously | from any queue-building flows that accidentally or maliciously | |||
| classify themselves into the low latency queue. It is designed to | classify themselves into the low latency queue. It is designed to | |||
| skipping to change at page 33, line 18 ¶ | skipping to change at page 33, line 40 ¶ | |||
| malware, in a similar way to how traffic from flooding attack | malware, in a similar way to how traffic from flooding attack | |||
| sources is rerouted via scrubbing facilities. | sources is rerouted via scrubbing facilities. | |||
| Local bottleneck per-flow scheduling: Per-flow scheduling should | Local bottleneck per-flow scheduling: Per-flow scheduling should | |||
| inherently isolate non-bursty flows from bursty (see Section 5.2 | inherently isolate non-bursty flows from bursty (see Section 5.2 | |||
| for discussion of the merits of per-flow scheduling relative to | for discussion of the merits of per-flow scheduling relative to | |||
| per-flow policing). | per-flow policing). | |||
| Distributed access subnet queue protection: Per-flow queue | Distributed access subnet queue protection: Per-flow queue | |||
| protection could be arranged for a queue structure distributed | protection could be arranged for a queue structure distributed | |||
| across a subnet inter-communicating using lower layer control | across a subnet intercommunicating using lower layer control | |||
| messages (see Section 2.1.4 of [QDyn]). For instance, in a radio | messages (see Section 2.1.4 of [QDyn]). For instance, in a radio | |||
| access network, user equipment already sends regular buffer status | access network, user equipment already sends regular buffer status | |||
| reports to a radio network controller, which could use this | reports to a radio network controller, which could use this | |||
| information to remotely police individual flows. | information to remotely police individual flows. | |||
| Distributed Congestion Exposure to Ingress Policers: The Congestion | Distributed Congestion Exposure to Ingress Policers: The Congestion | |||
| Exposure (ConEx) architecture [RFC7713] uses egress audit to | Exposure (ConEx) architecture [RFC7713] uses egress audit to | |||
| motivate senders to truthfully signal path congestion in-band | motivate senders to truthfully signal path congestion in-band | |||
| where it can be used by ingress policers. An edge-to-edge variant | where it can be used by ingress policers. An edge-to-edge variant | |||
| of this architecture is also possible. | of this architecture is also possible. | |||
| skipping to change at page 33, line 45 ¶ | skipping to change at page 34, line 18 ¶ | |||
| Distributed core network queue protection: The policing function | Distributed core network queue protection: The policing function | |||
| could be divided between per-flow mechanisms at the network | could be divided between per-flow mechanisms at the network | |||
| ingress that characterize the burstiness of each flow into a | ingress that characterize the burstiness of each flow into a | |||
| signal carried with the traffic, and per-class mechanisms at | signal carried with the traffic, and per-class mechanisms at | |||
| bottlenecks that act on these signals if queuing actually occurs | bottlenecks that act on these signals if queuing actually occurs | |||
| once the traffic converges. This would be somewhat similar to | once the traffic converges. This would be somewhat similar to | |||
| [Nadas20], which is in turn similar to the idea behind core | [Nadas20], which is in turn similar to the idea behind core | |||
| stateless fair queuing. | stateless fair queuing. | |||
| None of these possible queue protection capabilities are considered a | No single one of these possible queue protection capabilities is | |||
| necessary part of the L4S architecture, which works without them (in | considered an essential part of the L4S architecture, which works | |||
| a similar way to how the Internet works without per-flow rate | without any of them under non-attack conditions (much as the Internet | |||
| policing). Indeed, even where latency policers are deployed, under | normally works without per-flow rate policing). Indeed, even where | |||
| normal circumstances they would not intervene, and if operators found | latency policers are deployed, under normal circumstances they would | |||
| they were not necessary they could disable them. Part of the L4S | not intervene, and if operators found they were not necessary they | |||
| experiment will be to see whether such a function is necessary, and | could disable them. Part of the L4S experiment will be to see | |||
| which arrangements are most appropriate to the size of the problem. | whether such a function is necessary, and which arrangements are most | |||
| appropriate to the size of the problem. | ||||
| 8.3. Interaction between Rate Policing and L4S | 8.3. Interaction between Rate Policing and L4S | |||
| As mentioned in Section 5.2, L4S should remove the need for low | As mentioned in Section 5.2, L4S should remove the need for low | |||
| latency Diffserv classes. However, those Diffserv classes that give | latency Diffserv classes. However, those Diffserv classes that give | |||
| certain applications or users priority over capacity, would still be | certain applications or users priority over capacity, would still be | |||
| applicable in certain scenarios (e.g. corporate networks). Then, | applicable in certain scenarios (e.g. corporate networks). Then, | |||
| within such Diffserv classes, L4S would often be applicable to give | within such Diffserv classes, L4S would often be applicable to give | |||
| traffic low latency and low loss as well. Within such a Diffserv | traffic low latency and low loss as well. Within such a Diffserv | |||
| class, the bandwidth available to a user or application is often | class, the bandwidth available to a user or application is often | |||
| limited by a rate policer. Similarly, in the default Diffserv class, | limited by a rate policer. Similarly, in the default Diffserv class, | |||
| rate policers are used to partition shared capacity. | rate policers are sometimes used to partition shared capacity. | |||
| A classic rate policer drops any packets exceeding a set rate, | A classic rate policer drops any packets exceeding a set rate, | |||
| usually also giving a burst allowance (variants exist where the | usually also giving a burst allowance (variants exist where the | |||
| policer re-marks non-compliant traffic to a discard-eligible Diffserv | policer re-marks non-compliant traffic to a discard-eligible Diffserv | |||
| codepoint, so they can be dropped elsewhere during contention). | codepoint, so they can be dropped elsewhere during contention). | |||
| Whenever L4S traffic encounters one of these rate policers, it will | Whenever L4S traffic encounters one of these rate policers, it will | |||
| experience drops and the source will have to fall back to a Classic | experience drops and the source will have to fall back to a Classic | |||
| congestion control, thus losing the benefits of L4S (Section 6.4.3). | congestion control, thus losing the benefits of L4S (Section 6.4.3). | |||
| So, in networks that already use rate policers and plan to deploy | So, in networks that already use rate policers and plan to deploy | |||
| L4S, it will be preferable to redesign these rate policers to be more | L4S, it will be preferable to redesign these rate policers to be more | |||
| skipping to change at page 34, line 48 ¶ | skipping to change at page 35, line 25 ¶ | |||
| possible to design scalable congestion controls to respond less | possible to design scalable congestion controls to respond less | |||
| catastrophically to loss that has not been preceded by a period of | catastrophically to loss that has not been preceded by a period of | |||
| increasing delay. | increasing delay. | |||
| The design of L4S-friendly rate policers will require a separate | The design of L4S-friendly rate policers will require a separate | |||
| dedicated document. For further discussion of the interaction | dedicated document. For further discussion of the interaction | |||
| between L4S and Diffserv, see [I-D.briscoe-tsvwg-l4s-diffserv]. | between L4S and Diffserv, see [I-D.briscoe-tsvwg-l4s-diffserv]. | |||
| 8.4. ECN Integrity | 8.4. ECN Integrity | |||
| Receiving hosts can fool a sender into downloading faster by | Various ways have been developed to protect the integrity of the | |||
| suppressing feedback of ECN marks (or of losses if retransmissions | congestion feedback loop (whether signalled by loss, Classic ECN or | |||
| are not necessary or available otherwise). Various ways to protect | L4S ECN) against misbehaviour by the receiver, sender or network (or | |||
| transport feedback integrity have been developed. For instance: | all three). Brief details of each including applicability, pros and | |||
| cons is given in Appendix C.1 of the L4S ECN | ||||
| * The sender can test the integrity of the receiver's feedback by | spec [I-D.ietf-tsvwg-ecn-l4s-id]. | |||
| occasionally setting the IP-ECN field to the congestion | ||||
| experienced (CE) codepoint, which is normally only set by a | ||||
| congested link. Then the sender can test whether the receiver's | ||||
| feedback faithfully reports what it expects (see 2nd para of | ||||
| Section 20.2 of the Classic ECN spec [RFC3168]). | ||||
| * A network can enforce a congestion response to its ECN markings | ||||
| (or packet losses) by auditing congestion exposure | ||||
| (ConEx) [RFC7713]. | ||||
| * Transport layer authentication such as the TCP authentication | ||||
| option (TCP-AO [RFC5925]) or QUIC's use of TLS [RFC9001] can | ||||
| detect any tampering with congestion feedback. | ||||
| * The ECN Nonce [RFC3540] was proposed to detect tampering with | ||||
| congestion feedback, but it has been reclassified as | ||||
| historic [RFC8311]. | ||||
| Appendix C.1 of the L4S ECN spec [I-D.ietf-tsvwg-ecn-l4s-id] gives | ||||
| more details of these techniques including their applicability and | ||||
| pros and cons. | ||||
| 8.5. Privacy Considerations | 8.5. Privacy Considerations | |||
| As discussed in Section 5.2, the L4S architecture does not preclude | As discussed in Section 5.2, the L4S architecture does not preclude | |||
| approaches that inspect end-to-end transport layer identifiers. For | approaches that inspect end-to-end transport layer identifiers. For | |||
| instance, L4S support has been added to FQ-CoDel, which classifies by | instance, L4S support has been added to FQ-CoDel, which classifies by | |||
| application flow ID in the network. However, the main innovation of | application flow ID in the network. However, the main innovation of | |||
| L4S is the DualQ AQM framework that does not need to inspect any | L4S is the DualQ AQM framework that does not need to inspect any | |||
| deeper than the outermost IP header, because the L4S identifier is in | deeper than the outermost IP header, because the L4S identifier is in | |||
| the IP-ECN field. | the IP-ECN field. | |||
| skipping to change at page 36, line 13 ¶ | skipping to change at page 36, line 17 ¶ | |||
| privacy. | privacy. | |||
| 9. Informative References | 9. Informative References | |||
| [AFCD] Xue, L., Kumar, S., Cui, C., Kondikoppa, P., Chiu, C-H., | [AFCD] Xue, L., Kumar, S., Cui, C., Kondikoppa, P., Chiu, C-H., | |||
| and S-J. Park, "Towards fair and low latency next | and S-J. Park, "Towards fair and low latency next | |||
| generation high speed networks: AFCD queuing", Journal of | generation high speed networks: AFCD queuing", Journal of | |||
| Network and Computer Applications 70:183--193, July 2016, | Network and Computer Applications 70:183--193, July 2016, | |||
| <https://doi.org/10.1016/j.jnca.2016.03.021>. | <https://doi.org/10.1016/j.jnca.2016.03.021>. | |||
| [BBRv2] Cardwell, N., "TCP BBR v2 Alpha/Preview Release", github | [BBRv2] Cardwell, N., "TCP BBR v2 Alpha/Preview Release", GitHub | |||
| repository; Linux congestion control module, | repository; Linux congestion control module, | |||
| <https://github.com/google/bbr/blob/v2alpha/README.md>. | <https://github.com/google/bbr/blob/v2alpha/README.md>. | |||
| [BDPdata] Briscoe, B., "PI2 Parameters", Technical Report TR-BB- | [BDPdata] Briscoe, B., "PI2 Parameters", Technical Report TR-BB- | |||
| 2021-001 arXiv:2107.01003 [cs.NI], July 2021, | 2021-001 arXiv:2107.01003 [cs.NI], July 2021, | |||
| <https://arxiv.org/abs/2107.01003>. | <https://arxiv.org/abs/2107.01003>. | |||
| [BufferSize] | [BufferSize] | |||
| Appenzeller, G., Keslassy, I., and N. McKeown, "Sizing | Appenzeller, G., Keslassy, I., and N. McKeown, "Sizing | |||
| Router Buffers", In Proc. SIGCOMM'04 34(4):281--292, | Router Buffers", In Proc. SIGCOMM'04 34(4):281--292, | |||
| skipping to change at page 36, line 49 ¶ | skipping to change at page 37, line 5 ¶ | |||
| CableLabs, "MAC and Upper Layer Protocols Interface | CableLabs, "MAC and Upper Layer Protocols Interface | |||
| (MULPI) Specification, CM-SP-MULPIv3.1", Data-Over-Cable | (MULPI) Specification, CM-SP-MULPIv3.1", Data-Over-Cable | |||
| Service Interface Specifications DOCSIS® 3.1 Version i17 | Service Interface Specifications DOCSIS® 3.1 Version i17 | |||
| or later, 21 January 2019, <https://specification- | or later, 21 January 2019, <https://specification- | |||
| search.cablelabs.com/CM-SP-MULPIv3.1>. | search.cablelabs.com/CM-SP-MULPIv3.1>. | |||
| [DOCSIS3AQM] | [DOCSIS3AQM] | |||
| White, G., "Active Queue Management Algorithms for DOCSIS | White, G., "Active Queue Management Algorithms for DOCSIS | |||
| 3.0; A Simulation Study of CoDel, SFQ-CoDel and PIE in | 3.0; A Simulation Study of CoDel, SFQ-CoDel and PIE in | |||
| DOCSIS 3.0 Networks", CableLabs Technical Report , April | DOCSIS 3.0 Networks", CableLabs Technical Report , April | |||
| 2013, <{http://www.cablelabs.com/wp- | 2013, <{https://www.cablelabs.com/wp- | |||
| content/uploads/2013/11/ | content/uploads/2013/11/ | |||
| Active_Queue_Management_Algorithms_DOCSIS_3_0.pdf>. | Active_Queue_Management_Algorithms_DOCSIS_3_0.pdf>. | |||
| [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>. | |||
| skipping to change at page 37, line 29 ¶ | skipping to change at page 37, line 33 ¶ | |||
| Høiland-Jørgensen, T., "fq_codel: generalise ce_threshold | Høiland-Jørgensen, T., "fq_codel: generalise ce_threshold | |||
| marking for subset of traffic", Linux Patch Commit ID: | marking for subset of traffic", Linux Patch Commit ID: | |||
| dfcb63ce1de6b10b, 20 October 2021, | dfcb63ce1de6b10b, 20 October 2021, | |||
| <https://git.kernel.org/pub/scm/linux/kernel/git/netdev/ | <https://git.kernel.org/pub/scm/linux/kernel/git/netdev/ | |||
| net-next.git/commit/?id=dfcb63ce1de6b10b>. | net-next.git/commit/?id=dfcb63ce1de6b10b>. | |||
| [Hohlfeld14] | [Hohlfeld14] | |||
| Hohlfeld, O., Pujol, E., Ciucu, F., Feldmann, A., and P. | Hohlfeld, O., Pujol, E., Ciucu, F., Feldmann, A., and P. | |||
| Barford, "A QoE Perspective on Sizing Network Buffers", | Barford, "A QoE Perspective on Sizing Network Buffers", | |||
| Proc. ACM Internet Measurement Conf (IMC'14) hmm, November | Proc. ACM Internet Measurement Conf (IMC'14) hmm, November | |||
| 2014, <http://doi.acm.org/10.1145/2663716.2663730>. | 2014, <https://doi.acm.org/10.1145/2663716.2663730>. | |||
| [I-D.briscoe-conex-policing] | [I-D.briscoe-conex-policing] | |||
| Briscoe, B., "Network Performance Isolation using | Briscoe, B., "Network Performance Isolation using | |||
| Congestion Policing", Work in Progress, Internet-Draft, | Congestion Policing", Work in Progress, Internet-Draft, | |||
| draft-briscoe-conex-policing-01, 14 February 2014, | draft-briscoe-conex-policing-01, 14 February 2014, | |||
| <https://datatracker.ietf.org/doc/html/draft-briscoe- | <https://www.ietf.org/archive/id/draft-briscoe-conex- | |||
| conex-policing-01>. | policing-01.txt>. | |||
| [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, | |||
| briscoe-docsis-q-protection-06>. | <https://datatracker.ietf.org/api/v1/doc/document/draft- | |||
| briscoe-docsis-q-protection/>. | ||||
| [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://datatracker.ietf.org/api/v1/doc/document/ | |||
| briscoe-iccrg-prague-congestion-control-01>. | draft-briscoe-iccrg-prague-congestion-control/>. | |||
| [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, 2 July 2018, | |||
| <https://datatracker.ietf.org/doc/html/draft-briscoe- | <https://datatracker.ietf.org/api/v1/doc/document/draft- | |||
| tsvwg-l4s-diffserv-02>. | briscoe-tsvwg-l4s-diffserv/>. | |||
| [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, 7 March 2022, | |||
| <https://datatracker.ietf.org/doc/html/draft-cardwell- | <https://datatracker.ietf.org/api/v1/doc/document/draft- | |||
| iccrg-bbr-congestion-control-02>. | cardwell-iccrg-bbr-congestion-control/>. | |||
| [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://datatracker.ietf.org/api/v1/doc/document/draft- | |||
| accurate-ecn-20>. | ietf-tcpm-accurate-ecn/>. | |||
| [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, 7 July 2022, | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-tsvwg- | <https://datatracker.ietf.org/api/v1/doc/document/draft- | |||
| aqm-dualq-coupled-24>. | ietf-tsvwg-aqm-dualq-coupled/>. | |||
| [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://datatracker.ietf.org/api/v1/doc/document/draft- | |||
| ecn-encap-guidelines-17>. | ietf-tsvwg-ecn-encap-guidelines/>. | |||
| [I-D.ietf-tsvwg-ecn-l4s-id] | [I-D.ietf-tsvwg-ecn-l4s-id] | |||
| Schepper, K. D. and B. Briscoe, "Explicit Congestion | Schepper, K. D. and B. Briscoe, "Explicit Congestion | |||
| Notification (ECN) Protocol for Very Low Queuing Delay | Notification (ECN) Protocol for Very Low Queuing Delay | |||
| (L4S)", Work in Progress, Internet-Draft, draft-ietf- | (L4S)", Work in Progress, Internet-Draft, draft-ietf- | |||
| tsvwg-ecn-l4s-id-26, 7 July 2022, | tsvwg-ecn-l4s-id-28, 8 August 2022, | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-tsvwg- | <https://datatracker.ietf.org/api/v1/doc/document/draft- | |||
| ecn-l4s-id-26>. | ietf-tsvwg-ecn-l4s-id/>. | |||
| [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://datatracker.ietf.org/api/v1/doc/document/draft- | |||
| l4sops-03>. | ietf-tsvwg-l4sops/>. | |||
| [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, 4 March | |||
| 2022, <https://datatracker.ietf.org/doc/html/draft-ietf- | 2022, <https://datatracker.ietf.org/api/v1/doc/document/ | |||
| tsvwg-nqb-10>. | draft-ietf-tsvwg-nqb/>. | |||
| [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://datatracker.ietf.org/doc/html/draft-ietf-tsvwg- | <https://datatracker.ietf.org/api/v1/doc/document/draft- | |||
| rfc6040update-shim-15>. | ietf-tsvwg-rfc6040update-shim/>. | |||
| [I-D.morton-tsvwg-codel-approx-fair] | [I-D.morton-tsvwg-codel-approx-fair] | |||
| Morton, J. and P. G. Heist, "Controlled Delay Approximate | Morton, J. and P. G. Heist, "Controlled Delay Approximate | |||
| Fairness AQM", Work in Progress, Internet-Draft, draft- | Fairness AQM", Work in Progress, Internet-Draft, draft- | |||
| morton-tsvwg-codel-approx-fair-01, 9 March 2020, | morton-tsvwg-codel-approx-fair-01, 9 March 2020, | |||
| <https://datatracker.ietf.org/doc/html/draft-morton-tsvwg- | <https://www.ietf.org/archive/id/draft-morton-tsvwg-codel- | |||
| codel-approx-fair-01>. | approx-fair-01.txt>. | |||
| [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, 29 October 2007, | |||
| <https://datatracker.ietf.org/doc/html/draft-sridharan- | <https://datatracker.ietf.org/api/v1/doc/document/draft- | |||
| tcpm-ctcp-02>. | sridharan-tcpm-ctcp/>. | |||
| [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>. | |||
| [L4Sdemo16] | [L4Sdemo16] | |||
| Bondarenko, O., De Schepper, K., Tsang, I., and B. | Bondarenko, O., De Schepper, K., Tsang, I., and B. | |||
| Briscoe, "Ultra-Low Delay for All: Live Experience, Live | Briscoe, "Ultra-Low Delay for All: Live Experience, Live | |||
| Analysis", Proc. MMSYS'16 pp33:1--33:4, May 2016, | Analysis", Proc. MMSYS'16 pp33:1--33:4, May 2016, | |||
| <http://dl.acm.org/citation.cfm?doid=2910017.2910633 | <https://dl.acm.org/citation.cfm?doid=2910017.2910633 | |||
| (videos of demos: | (videos of demos: | |||
| https://riteproject.eu/dctth/#1511dispatchwg )>. | https://riteproject.eu/dctth/#1511dispatchwg )>. | |||
| [LEDBAT_AQM] | [LEDBAT_AQM] | |||
| Al-Saadi, R., Armitage, G., and J. But, "Characterising | Al-Saadi, R., Armitage, G., and J. But, "Characterising | |||
| LEDBAT Performance Through Bottlenecks Using PIE, FQ-CoDel | LEDBAT Performance Through Bottlenecks Using PIE, FQ-CoDel | |||
| and FQ-PIE Active Queue Management", Proc. IEEE 42nd | and FQ-PIE Active Queue Management", Proc. IEEE 42nd | |||
| Conference on Local Computer Networks (LCN) 278--285, | Conference on Local Computer Networks (LCN) 278--285, | |||
| 2017, <https://ieeexplore.ieee.org/document/8109367>. | 2017, <https://ieeexplore.ieee.org/document/8109367>. | |||
| skipping to change at page 40, line 37 ¶ | skipping to change at page 40, line 45 ¶ | |||
| McIlroy, M.D., Pinson, E. N., and B. A. Tague, "UNIX Time- | McIlroy, M.D., Pinson, E. N., and B. A. Tague, "UNIX Time- | |||
| Sharing System: Foreword", The Bell System Technical | Sharing System: Foreword", The Bell System Technical | |||
| Journal 57:6(1902--1903), July 1978, | Journal 57:6(1902--1903), July 1978, | |||
| <https://archive.org/details/bstj57-6-1899>. | <https://archive.org/details/bstj57-6-1899>. | |||
| [Nadas20] Nádas, S., Gombos, G., Fejes, F., and S. Laki, "A | [Nadas20] Nádas, S., Gombos, G., Fejes, F., and S. Laki, "A | |||
| Congestion Control Independent L4S Scheduler", Proc. | Congestion Control Independent L4S Scheduler", Proc. | |||
| Applied Networking Research Workshop (ANRW '20) 45--51, | Applied Networking Research Workshop (ANRW '20) 45--51, | |||
| July 2020, <https://doi.org/10.1145/3404868.3406669>. | July 2020, <https://doi.org/10.1145/3404868.3406669>. | |||
| [NASA04] Bailey, R.R., Trey Arthur III, J.J., and S.P. Williams, | ||||
| "Latency Requirements for Head-Worn Display S/EVS | ||||
| Applications", SPIE Defense and Security | ||||
| Symposium LF99-1955, April 2004, | ||||
| <https://ntrs.nasa.gov/api/citations/20120009198/ | ||||
| downloads/20120009198.pdf?attachment=true>. | ||||
| [PragueLinux] | [PragueLinux] | |||
| Briscoe, B., De Schepper, K., Albisser, O., Misund, J., | Briscoe, B., De Schepper, K., Albisser, O., Misund, J., | |||
| Tilmans, O., Kühlewind, M., and A.S. Ahmed, "Implementing | Tilmans, O., Kühlewind, M., and A.S. Ahmed, "Implementing | |||
| the `TCP Prague' Requirements for Low Latency Low Loss | the `TCP Prague' Requirements for Low Latency Low Loss | |||
| Scalable Throughput (L4S)", Proc. Linux Netdev 0x13 , | Scalable Throughput (L4S)", Proc. Linux Netdev 0x13 , | |||
| March 2019, <https://www.netdevconf.org/0x13/ | March 2019, <https://www.netdevconf.org/0x13/ | |||
| session.html?talk-tcp-prague-l4s>. | session.html?talk-tcp-prague-l4s>. | |||
| [QDyn] Briscoe, B., "Rapid Signalling of Queue Dynamics", | [QDyn] Briscoe, B., "Rapid Signalling of Queue Dynamics", | |||
| bobbriscoe.net Technical Report TR-BB-2017-001; | bobbriscoe.net Technical Report TR-BB-2017-001; | |||
| arXiv:1904.07044 [cs.NI], September 2017, | arXiv:1904.07044 [cs.NI], September 2017, | |||
| <https://arxiv.org/abs/1904.07044>. | <https://arxiv.org/abs/1904.07044>. | |||
| [Raaen14] Raaen, K. and T-M. Grønli, "Latency thresholds for | ||||
| usability in games: A survey", Norsk IKT-konferanse for | ||||
| forskning og utdanning , 2014, | ||||
| <http://ojs.bibsys.no/index.php/NIK/article/view/9/6>. | ||||
| [Rajiullah15] | [Rajiullah15] | |||
| Rajiullah, M., "Towards a Low Latency Internet: | Rajiullah, M., "Towards a Low Latency Internet: | |||
| Understanding and Solutions", Masters Thesis; Karlstad | Understanding and Solutions", Master's Thesis; Karlstad | |||
| Uni, Dept of Maths & CS 2015:41, 2015, <https://www.diva- | Uni, Dept of Maths & CS 2015:41, 2015, <https://www.diva- | |||
| portal.org/smash/get/diva2:846109/FULLTEXT01.pdf>. | portal.org/smash/get/diva2:846109/FULLTEXT01.pdf>. | |||
| [RFC0970] Nagle, J., "On Packet Switches With Infinite Storage", | [RFC0970] Nagle, J., "On Packet Switches With Infinite Storage", | |||
| RFC 970, DOI 10.17487/RFC0970, December 1985, | RFC 970, DOI 10.17487/RFC0970, December 1985, | |||
| <https://www.rfc-editor.org/info/rfc970>. | <https://www.rfc-editor.org/info/rfc970>. | |||
| [RFC2475] Blake, S., Black, D., Carlson, M., Davies, E., Wang, Z., | [RFC2475] Blake, S., Black, D., Carlson, M., Davies, E., Wang, Z., | |||
| and W. Weiss, "An Architecture for Differentiated | and W. Weiss, "An Architecture for Differentiated | |||
| Services", RFC 2475, DOI 10.17487/RFC2475, December 1998, | Services", RFC 2475, DOI 10.17487/RFC2475, December 1998, | |||
| skipping to change at page 43, line 11 ¶ | skipping to change at page 43, line 29 ¶ | |||
| "Low Extra Delay Background Transport (LEDBAT)", RFC 6817, | "Low Extra Delay Background Transport (LEDBAT)", RFC 6817, | |||
| DOI 10.17487/RFC6817, December 2012, | DOI 10.17487/RFC6817, December 2012, | |||
| <https://www.rfc-editor.org/info/rfc6817>. | <https://www.rfc-editor.org/info/rfc6817>. | |||
| [RFC6973] Cooper, A., Tschofenig, H., Aboba, B., Peterson, J., | [RFC6973] Cooper, A., Tschofenig, H., Aboba, B., Peterson, J., | |||
| Morris, J., Hansen, M., and R. Smith, "Privacy | Morris, J., Hansen, M., and R. Smith, "Privacy | |||
| Considerations for Internet Protocols", RFC 6973, | Considerations for Internet Protocols", RFC 6973, | |||
| DOI 10.17487/RFC6973, July 2013, | DOI 10.17487/RFC6973, July 2013, | |||
| <https://www.rfc-editor.org/info/rfc6973>. | <https://www.rfc-editor.org/info/rfc6973>. | |||
| [RFC7540] Belshe, M., Peon, R., and M. Thomson, Ed., "Hypertext | ||||
| Transfer Protocol Version 2 (HTTP/2)", RFC 7540, | ||||
| DOI 10.17487/RFC7540, May 2015, | ||||
| <https://www.rfc-editor.org/info/rfc7540>. | ||||
| [RFC7560] Kuehlewind, M., Ed., Scheffenegger, R., and B. Briscoe, | [RFC7560] Kuehlewind, M., Ed., Scheffenegger, R., and B. Briscoe, | |||
| "Problem Statement and Requirements for Increased Accuracy | "Problem Statement and Requirements for Increased Accuracy | |||
| in Explicit Congestion Notification (ECN) Feedback", | in Explicit Congestion Notification (ECN) Feedback", | |||
| RFC 7560, DOI 10.17487/RFC7560, August 2015, | RFC 7560, DOI 10.17487/RFC7560, August 2015, | |||
| <https://www.rfc-editor.org/info/rfc7560>. | <https://www.rfc-editor.org/info/rfc7560>. | |||
| [RFC7567] Baker, F., Ed. and G. Fairhurst, Ed., "IETF | [RFC7567] Baker, F., Ed. and G. Fairhurst, Ed., "IETF | |||
| Recommendations Regarding Active Queue Management", | Recommendations Regarding Active Queue Management", | |||
| BCP 197, RFC 7567, DOI 10.17487/RFC7567, July 2015, | BCP 197, RFC 7567, DOI 10.17487/RFC7567, July 2015, | |||
| <https://www.rfc-editor.org/info/rfc7567>. | <https://www.rfc-editor.org/info/rfc7567>. | |||
| skipping to change at page 45, line 5 ¶ | skipping to change at page 45, line 24 ¶ | |||
| [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | |||
| Multiplexed and Secure Transport", RFC 9000, | Multiplexed and Secure Transport", RFC 9000, | |||
| DOI 10.17487/RFC9000, May 2021, | DOI 10.17487/RFC9000, May 2021, | |||
| <https://www.rfc-editor.org/info/rfc9000>. | <https://www.rfc-editor.org/info/rfc9000>. | |||
| [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>. | |||
| [SCReAM] Johansson, I., "SCReAM", github repository; , | [RFC9113] Thomson, M., Ed. and C. Benfield, Ed., "HTTP/2", RFC 9113, | |||
| DOI 10.17487/RFC9113, June 2022, | ||||
| <https://www.rfc-editor.org/info/rfc9113>. | ||||
| [SCReAM] Johansson, I., "SCReAM", GitHub repository; , | ||||
| <https://github.com/EricssonResearch/scream/blob/master/ | <https://github.com/EricssonResearch/scream/blob/master/ | |||
| README.md>. | README.md>. | |||
| [TCP-CA] Jacobson, V. and M.J. Karels, "Congestion Avoidance and | [TCP-CA] Jacobson, V. and M.J. Karels, "Congestion Avoidance and | |||
| Control", Laurence Berkeley Labs Technical Report , | Control", Laurence Berkeley Labs Technical Report , | |||
| November 1988, <http://ee.lbl.gov/papers/congavoid.pdf>. | November 1988, <https://ee.lbl.gov/papers/congavoid.pdf>. | |||
| [UnorderedLTE] | [UnorderedLTE] | |||
| Austrheim, M.V., "Implementing immediate forwarding for 4G | Austrheim, M.V., "Implementing immediate forwarding for 4G | |||
| in a network simulator", Masters Thesis, Uni Oslo , June | in a network simulator", Master's Thesis, Uni Oslo , June | |||
| 2019. | 2019. | |||
| Acknowledgements | Acknowledgements | |||
| Thanks to Richard Scheffenegger, Wes Eddy, Karen Nielsen, David | Thanks to Richard Scheffenegger, Wes Eddy, Karen Nielsen, David | |||
| Black, Jake Holland, Vidhi Goel, Ermin Sakic, Praveen | Black, Jake Holland, Vidhi Goel, Ermin Sakic, Praveen | |||
| Balasubramanian, Gorry Fairhurst, Mirja Kuehlewind, Philip Eardley, | Balasubramanian, Gorry Fairhurst, Mirja Kuehlewind, Philip Eardley, | |||
| Neal Cardwell, Pete Heist and Martin Duke for their useful review | Neal Cardwell, Pete Heist and Martin Duke for their useful review | |||
| comments. Thanks also to the area reviewers: Marco Tiloca. | comments. Thanks also to the area reviewers: Marco Tiloca, Lars | |||
| Eggert, Roman Danyliw and Eric Vyncke. | ||||
| Bob Briscoe and Koen De Schepper were part-funded by the European | Bob Briscoe and Koen De Schepper were part-funded by the European | |||
| Community under its Seventh Framework Programme through the Reducing | Community under its Seventh Framework Programme through the Reducing | |||
| Internet Transport Latency (RITE) project (ICT-317700). The | Internet Transport Latency (RITE) project (ICT-317700). The | |||
| contribution of Koen De Schepper was also part-funded by the 5Growth | contribution of Koen De Schepper was also part-funded by the 5Growth | |||
| and DAEMON EU H2020 projects. Bob Briscoe was also part-funded by | and DAEMON EU H2020 projects. Bob Briscoe was also part-funded by | |||
| the Research Council of Norway through the TimeIn project, partly by | the Research Council of Norway through the TimeIn project, partly by | |||
| CableLabs and partly by the Comcast Innovation Fund. The views | CableLabs and partly by the Comcast Innovation Fund. The views | |||
| expressed here are solely those of the authors. | expressed here are solely those of the authors. | |||
| Authors' Addresses | Authors' Addresses | |||
| Bob Briscoe (editor) | Bob Briscoe (editor) | |||
| Independent | Independent | |||
| United Kingdom | United Kingdom | |||
| Email: ietf@bobbriscoe.net | Email: ietf@bobbriscoe.net | |||
| URI: http://bobbriscoe.net/ | URI: https://bobbriscoe.net/ | |||
| Koen De Schepper | Koen De Schepper | |||
| Nokia Bell Labs | Nokia Bell Labs | |||
| Antwerp | Antwerp | |||
| Belgium | Belgium | |||
| Email: koen.de_schepper@nokia.com | Email: koen.de_schepper@nokia.com | |||
| URI: https://www.bell-labs.com/usr/koen.de_schepper | URI: https://www.bell-labs.com/about/researcher-profiles/ | |||
| koende_schepper/ | ||||
| Marcelo Bagnulo | Marcelo Bagnulo | |||
| Universidad Carlos III de Madrid | Universidad Carlos III de Madrid | |||
| Av. Universidad 30 | Av. Universidad 30 | |||
| Leganes, Madrid 28911 | Leganes, Madrid 28911 | |||
| Spain | Spain | |||
| Phone: 34 91 6249500 | Phone: 34 91 6249500 | |||
| Email: marcelo@it.uc3m.es | Email: marcelo@it.uc3m.es | |||
| URI: http://www.it.uc3m.es | URI: https://www.it.uc3m.es | |||
| Greg White | Greg White | |||
| CableLabs | CableLabs | |||
| United States of America | United States of America | |||
| Email: G.White@CableLabs.com | Email: G.White@CableLabs.com | |||
| End of changes. 84 change blocks. | ||||
| 237 lines changed or deleted | 270 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/ | ||||