rfc9330.original.xml | rfc9330.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE rfc [ | <!DOCTYPE rfc [ | |||
<!ENTITY nbsp " "> | <!ENTITY nbsp " "> | |||
<!ENTITY zwsp "​"> | <!ENTITY zwsp "​"> | |||
<!ENTITY nbhy "‑"> | <!ENTITY nbhy "‑"> | |||
<!ENTITY wj "⁠"> | <!ENTITY wj "⁠"> | |||
]> | ]> | |||
<!-- This template is for creating an Internet Draft using xml2rfc, | ||||
which is available here: http://xml.resource.org. --> | ||||
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
<!-- used by XSLT processors --> | ||||
<!-- For a complete list and description of processing instructions (PIs), | ||||
please see http://xml.resource.org/authoring/README.html. --> | ||||
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds | ||||
might want to use. | ||||
(Here they are set differently than their defaults in xml2rfc v1.32) --> | ||||
<?rfc strict="yes" ?> | ||||
<!-- give errors regarding ID-nits and DTD validation --> | ||||
<!-- control the table of contents (ToC) --> | ||||
<?rfc toc="yes"?> | ||||
<!-- generate a ToC --> | ||||
<?rfc tocdepth="4"?> | ||||
<!-- the number of levels of subsections in ToC. default: 3 --> | ||||
<!-- control references --> | ||||
<?rfc symrefs="yes"?> | ||||
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] --> | ||||
<?rfc sortrefs="yes" ?> | ||||
<!-- sort the reference entries alphabetically --> | ||||
<!-- control vertical white space | ||||
(using these PIs as follows is recommended by the RFC Editor) --> | ||||
<?rfc compact="yes" ?> | ||||
<!-- do not start each main section on a new page --> | ||||
<?rfc subcompact="no" ?> | ||||
<!-- keep one blank line between list items --> | ||||
<!-- end of list of popular I-D processing instructions --> | ||||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="info" docName="draft-i | ||||
etf-tsvwg-l4s-arch-20" ipr="trust200902" obsoletes="" updates="" submissionType= | ||||
"IETF" xml:lang="en" tocInclude="true" tocDepth="4" symRefs="true" sortRefs="tru | ||||
e" version="3"> | ||||
<!-- xml2rfc v2v3 conversion 3.14.1 --> | ||||
<!-- category values: std, bcp, info, exp, and historic | ||||
ipr values: trust200902, noModificationTrust200902, noDerivativesTrust200902 | ||||
, | ||||
or pre5378Trust200902 | ||||
you can add the attributes updates="NNNN" and obsoletes="NNNN" | ||||
they will automatically be output with "(if approved)" --> | ||||
<!-- ***** FRONT MATTER ***** --> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category=" info" consensus="true" docName="draft-ietf-tsvwg-l4s-arch-20" number="9330" ipr= "trust200902" obsoletes="" updates="" xml:lang="en" tocInclude="true" tocDepth=" 4" symRefs="true" sortRefs="true" version="3"> | |||
<front> | <front> | |||
<!-- The abbreviated title is used in the page header - it is only necessary | <title abbrev="L4S Architecture">Low Latency, Low Loss, and Scalable | |||
if the | Throughput (L4S) Internet Service: Architecture</title> | |||
full title is longer than 39 characters --> | <seriesInfo name="RFC" value="9330"/> | |||
<author fullname="Bob Briscoe" initials="B." surname="Briscoe" role="editor"> | ||||
<organization>Independent</organization> | ||||
<address> | ||||
<postal> | ||||
<street/> | ||||
<country>United Kingdom</country> | ||||
</postal> | ||||
<email>ietf@bobbriscoe.net</email> | ||||
<uri>https://bobbriscoe.net/</uri> | ||||
</address> | ||||
</author> | ||||
<author fullname="Koen De Schepper" initials="K." surname="De Schepper"> | ||||
<organization>Nokia Bell Labs</organization> | ||||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city>Antwerp</city> | ||||
<country>Belgium</country> | ||||
</postal> | ||||
<email>koen.de_schepper@nokia.com</email> | ||||
<uri>https://www.bell-labs.com/about/researcher-profiles/koende_schepper/< | ||||
/uri> | ||||
</address> | ||||
</author> | ||||
<author fullname="Marcelo Bagnulo" initials="M." surname="Bagnulo"> | ||||
<organization>Universidad Carlos III de Madrid</organization> | ||||
<address> | ||||
<postal> | ||||
<street>Av. Universidad 30</street> | ||||
<city>Madrid</city> | ||||
<code>28911</code> | ||||
<country>Spain</country> | ||||
</postal> | ||||
<phone>34 91 6249500</phone> | ||||
<email>marcelo@it.uc3m.es</email> | ||||
<uri>https://www.it.uc3m.es</uri> | ||||
</address> | ||||
</author> | ||||
<author fullname="Greg White" initials="G." surname="White"> | ||||
<organization>CableLabs</organization> | ||||
<address> | ||||
<postal> | ||||
<street/> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>G.White@CableLabs.com</email> | ||||
</address> | ||||
</author> | ||||
<date year="2023" month="January"/> | ||||
<area>tsv</area> | ||||
<workgroup>tsvwg</workgroup> | ||||
<keyword>Performance</keyword> | ||||
<keyword>Queuing Delay</keyword> | ||||
<keyword>One Way Delay</keyword> | ||||
<keyword>Round-Trip Time</keyword> | ||||
<keyword>RTT</keyword> | ||||
<keyword>Jitter</keyword> | ||||
<keyword>Congestion Control</keyword> | ||||
<keyword>Congestion Avoidance</keyword> | ||||
<keyword>Quality of Service</keyword> | ||||
<keyword>QoS</keyword> | ||||
<keyword>Quality of Experience</keyword> | ||||
<keyword>QoE</keyword> | ||||
<keyword>Active Queue Management</keyword> | ||||
<keyword>AQM</keyword> | ||||
<keyword>Explicit Congestion Notification</keyword> | ||||
<keyword>ECN</keyword> | ||||
<keyword>Pacing</keyword> | ||||
<keyword>Burstiness</keyword> | ||||
<title abbrev="L4S Architecture">Low Latency, Low Loss, Scalable | <abstract> | |||
Throughput (L4S) Internet Service: Architecture</title> | <t>This document describes the L4S architecture, which enables Internet | |||
<seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-l4s-arch-20"/> | applications to achieve low queuing latency, low congestion loss, and scalab | |||
<author fullname="Bob Briscoe" initials="B." role="editor" surname="Briscoe" | le | |||
> | throughput control. L4S is based on the insight that the root cause of | |||
<organization>Independent</organization> | queuing delay is in the capacity-seeking congestion controllers of | |||
<address> | senders, not in the queue itself. With the L4S architecture, all Internet | |||
<postal> | applications could (but do not have to) transition away from congestion | |||
<street/> | control algorithms that cause substantial queuing delay and instead adopt a | |||
<country>UK</country> | new class | |||
</postal> | of congestion controls that can seek capacity with very little queuing. | |||
<email>ietf@bobbriscoe.net</email> | These are aided by a modified form of Explicit Congestion Notification | |||
<uri>https://bobbriscoe.net/</uri> | (ECN) from the network. With this new architecture, applications can | |||
</address> | have both low latency and high throughput.</t> | |||
</author> | <t>The architecture primarily concerns incremental deployment. It | |||
<author fullname="Koen De Schepper" initials="K." surname="De Schepper"> | defines mechanisms that allow the new class of L4S congestion controls | |||
<organization>Nokia Bell Labs</organization> | to coexist with 'Classic' congestion controls in a shared network. The | |||
<address> | aim is for L4S latency and throughput to be usually much better (and | |||
<postal> | rarely worse) while typically not impacting Classic performance.</t> | |||
<street/> | </abstract> | |||
<city>Antwerp</city> | </front> | |||
<country>Belgium</country> | <middle> | |||
</postal> | <section anchor="l4sps_intro" numbered="true" toc="default"> | |||
<email>koen.de_schepper@nokia.com</email> | <name>Introduction</name> | |||
<uri>https://www.bell-labs.com/about/researcher-profiles/koende_schepper | <t>At any one time, it is increasingly common for all of the traffic in | |||
/</uri> | a bottleneck link (e.g., a household's Internet access or Wi-Fi) to come fro | |||
</address> | m | |||
</author> | applications that prefer low delay: interactive web, web services, | |||
<author fullname="Marcelo Bagnulo" initials="M." surname="Bagnulo Braun"> | voice, conversational video, interactive video, interactive remote | |||
<organization>Universidad Carlos III de Madrid</organization> | presence, instant messaging, online and cloud-rendered gaming, remote deskto | |||
<address> | p, cloud-based | |||
<postal> | applications, cloud-rendered virtual reality or augmented reality, and video | |||
<street>Av. Universidad 30</street> | -assisted remote control of machinery and | |||
<city>Leganes, Madrid 28911</city> | industrial processes. In the last decade or so, much has been done to | |||
<country>Spain</country> | reduce propagation delay by placing caches or servers closer to users. | |||
</postal> | However, queuing remains a major, albeit intermittent, component of | |||
<phone>34 91 6249500</phone> | latency. For instance, spikes of hundreds of milliseconds are not | |||
<email>marcelo@it.uc3m.es</email> | uncommon, even with state-of-the-art Active Queue Management | |||
<uri>https://www.it.uc3m.es</uri> | (AQM) <xref target="COBALT" format="default"/> <xref target="DOCSIS3AQM" for | |||
</address> | mat="default"/>. A Classic AQM in an | |||
</author> | access network bottleneck is typically configured to buffer the sawteeth of | |||
<author fullname="Greg White" initials="G." surname="White"> | lone flows, which can cause peak overall | |||
<organization>CableLabs</organization> | network delay to roughly double during a long-running flow, relative to | |||
<address> | expected base (unloaded) path delay <xref target="BufferSize" format="defaul | |||
<postal> | t"/>. | |||
<street/> | Low loss is also important because, for interactive applications, losses | |||
<country>US</country> | translate into even longer retransmission delays.</t> | |||
</postal> | <t>It has been demonstrated that, once access network bit rates reach | |||
<email>G.White@CableLabs.com</email> | levels now common in the developed world, increasing link capacity | |||
</address> | offers diminishing returns if latency (delay) is not addressed <xref target= | |||
</author> | "Dukkipati06" format="default"/> <xref target="Rajiullah15" format="default"/>. | |||
<date month="" year=""/> | Therefore, the | |||
<area>Transport</area> | goal is an Internet service with very low queuing latency, very low | |||
<workgroup>Transport Area Working Group</workgroup> | loss, and scalable throughput. Very low queuing latency means less | |||
<keyword>Internet-Draft</keyword> | than 1 millisecond (ms) on average and less than about 2 ms at | |||
<keyword>I-D</keyword> | the 99th percentile. End-to-end delay above 50 ms <xref target="Raaen14" for | |||
<abstract> | mat="default"/>, or even above 20 ms <xref target="NASA04" format="default"/>, | |||
<t>This document describes the L4S architecture, which enables Internet | starts to feel unnatural for more demanding interactive applications. Theref | |||
applications to achieve Low queuing Latency, Low Loss, and Scalable | ore, | |||
throughput (L4S). L4S is based on the insight that the root cause of | removing unnecessary delay variability increases the reach of these | |||
queuing delay is in the capacity-seeking congestion controllers of | applications (the distance over which they are comfortable to use) and/or | |||
senders, not in the queue itself. With the L4S architecture all Internet | provides additional latency budget that can be used for enhanced processing. | |||
applications could (but do not have to) transition away from congestion | This | |||
control algorithms that cause substantial queuing delay, to a new class | document describes the L4S architecture for achieving these goals.</t> | |||
of congestion controls that can seek capacity with very little queuing. | <t>Differentiated services (Diffserv) offers Expedited Forwarding | |||
These are aided by a modified form of explicit congestion notification | (EF) <xref target="RFC3246" format="default"/> for some packets at the expen | |||
(ECN) from the network. With this new architecture, applications can | se of | |||
have both low latency and high throughput.</t> | others, but this makes no difference when all (or most) of the traffic | |||
<t>The architecture primarily concerns incremental deployment. It | at a bottleneck at any one time requires low latency. In contrast, L4S | |||
defines mechanisms that allow the new class of L4S congestion controls | still works well when all traffic is L4S -- a service that gives without | |||
to coexist with 'Classic' congestion controls in a shared network. The | taking needs none of the configuration or management baggage (traffic | |||
aim is for L4S latency and throughput to be usually much better (and | policing or traffic contracts) associated with favouring some traffic | |||
rarely worse), while typically not impacting Classic performance.</t> | flows over others.</t> | |||
</abstract> | <t>Queuing delay degrades performance intermittently <xref target="Hohlfeld1 | |||
</front> | 4" format="default"/>. | |||
<middle> | It occurs i) when a large enough capacity-seeking | |||
<section anchor="l4sps_intro" numbered="true" toc="default"> | (e.g., TCP) flow is running alongside the user's traffic in the | |||
<name>Introduction</name> | bottleneck link, which is typically in the access network, or ii) when the | |||
<t>At any one time, it is increasingly common for all of the traffic in | low latency application is itself a large capacity-seeking or adaptive | |||
a bottleneck link (e.g. a household's Internet access) to come from | rate flow (e.g., interactive video). | |||
applications that prefer low delay: interactive Web, Web services, | At these times, the performance | |||
voice, conversational video, interactive video, interactive remote | improvement from L4S must be sufficient for network operators to be motivate | |||
presence, instant messaging, online gaming, remote desktop, cloud-based | d | |||
applications and video-assisted remote control of machinery and | to deploy it.</t> | |||
industrial processes. In the last decade or so, much has been done to | <t>Active Queue Management (AQM) is part of the solution to queuing | |||
reduce propagation delay by placing caches or servers closer to users. | under load. AQM improves performance for all traffic, but there is a | |||
However, queuing remains a major, albeit intermittent, component of | limit to how much queuing delay can be reduced by solely changing the | |||
latency. For instance spikes of hundreds of milliseconds are not | network without addressing the root of the problem.</t> | |||
uncommon, even with state-of-the-art active queue management | <t>The root of the problem is the presence of standard congestion | |||
(AQM) <xref target="COBALT" format="default"/>, <xref target="DOCSIS3AQM" | control (Reno <xref target="RFC5681" format="default"/>) or compatible varia | |||
format="default"/>. Queuing | nts | |||
in access network bottlenecks is typically configured to cause overall | (e.g., CUBIC <xref target="RFC8312" format="default"/>) that are used in TCP | |||
network delay to roughly double during a long-running flow, relative to | and | |||
expected base (unloaded) path delay <xref target="BufferSize" format="defa | in other transports, such as QUIC <xref target="RFC9000" format="default"/>. | |||
ult"/>. | We shall use | |||
Low loss is also important because, for interactive applications, losses | the term 'Classic' for these Reno-friendly congestion controls. | |||
translate into even longer retransmission delays.</t> | Classic | |||
<t>It has been demonstrated that, once access network bit rates reach | congestion controls induce relatively large sawtooth-shaped excursions | |||
levels now common in the developed world, increasing link capacity | of queue occupancy. So if a network operator naively | |||
offers diminishing returns if latency (delay) is not addressed <xref targe | attempts to reduce queuing delay by configuring an AQM to operate at a | |||
t="Dukkipati06" format="default"/>, <xref target="Rajiullah15" format="default"/ | shallower queue, a Classic congestion control will significantly | |||
>. Therefore, the | underutilize the link at the bottom of every sawtooth. These sawteeth have | |||
goal is an Internet service with very Low queueing Latency, very Low | also been growing in duration as flow rate scales (see <xref target="l4sps_w | |||
Loss and Scalable throughput (L4S). Very low queuing latency means less | hy_primary_components" format="default"/> | |||
than 1 millisecond (ms) on average and less than about 2 ms at | and <xref target="RFC3649" format="default"/>).</t> | |||
the 99th percentile. End-to-end delay above 50 ms <xref target="Raaen14" f | <t>It has been demonstrated that, if the sending host replaces a Classic | |||
ormat="default"/> or even above 20 ms <xref target="NASA04" format="default"/> | congestion control with a 'Scalable' alternative, the performance under load | |||
starts to feel unnatural for more demanding interactive applications. So | of all the above | |||
removing unnecessary delay variability increases the reach of these | interactive applications can be significantly improved once a suitable AQM i | |||
applications (the distance over which they are comfortable to use). This | s | |||
document describes the L4S architecture for achieving these goals.</t> | deployed in the network. | |||
<t>Differentiated services (Diffserv) offers Expedited Forwarding | Taking the example solution cited below that uses Data Center TCP (DCTCP) | |||
(EF <xref target="RFC3246" format="default"/>) for some packets at the exp | <xref target="RFC8257" format="default"/> and a Dual-Queue Coupled AQM <xref | |||
ense of | target="RFC9332" | |||
others, but this makes no difference when all (or most) of the traffic | format="default"/> on a DSL or Ethernet link, | |||
at a bottleneck at any one time requires low latency. In contrast, L4S | queuing delay under heavy load is roughly 1-2 ms at | |||
still works well when all traffic is L4S - a service that gives without | the 99th percentile without losing link utilization <xref target="L4Seval22" | |||
taking needs none of the configuration or management baggage (traffic | format="default"/> <xref target="DualPI2Linux" format="default"/> (for other li | |||
policing, traffic contracts) associated with favouring some traffic | nk types, | |||
flows over others.</t> | see <xref target="l4sarch_link-specifics" format="default"/>). | |||
<t>Queuing delay degrades performance intermittently <xref target="Hohlfel | This compares with | |||
d14" format="default"/>. It occurs when a large enough capacity-seeking | 5-20 ms on <em>average</em> with a Classic | |||
(e.g. TCP) flow is running alongside the user's traffic in the | congestion control and current state-of-the-art AQMs, such as | |||
bottleneck link, which is typically in the access network. Or when the | Flow Queue CoDel <xref target="RFC8290" format="default"/>, Proportional Int | |||
low latency application is itself a large capacity-seeking or adaptive | egral controller Enhanced (PIE) <xref target="RFC8033" format="default"/>, or DO | |||
rate (e.g. interactive video) flow. At these times, the performance | CSIS PIE <xref target="RFC8034" format="default"/> and about | |||
improvement from L4S must be sufficient that network operators will be | 20-30 ms at the 99th percentile <xref target="DualPI2Linux" format="default" | |||
motivated to deploy it.</t> | />.</t> | |||
<t>Active Queue Management (AQM) is part of the solution to queuing | <t>L4S is designed for incremental deployment. It is possible to deploy | |||
under load. AQM improves performance for all traffic, but there is a | the L4S service at a bottleneck link alongside the existing best efforts | |||
limit to how much queuing delay can be reduced by solely changing the | service <xref target="DualPI2Linux" format="default"/> so that unmodified | |||
network; without addressing the root of the problem.</t> | applications can start using it as soon as the sender's stack is | |||
<t>The root of the problem is the presence of standard congestion | updated. Access networks are typically designed with one link as the | |||
control (Reno <xref target="RFC5681" format="default"/>) or compatible var | bottleneck for each site (which might be a home, small enterprise, or | |||
iants | mobile device), so deployment at either or both ends of this link should | |||
(e.g. CUBIC <xref target="RFC8312" format="default"/>) that are used in TC | give nearly all the benefit in the respective direction. | |||
P and | With some | |||
in other transports such as QUIC <xref target="RFC9000" format="default"/> | transport protocols, namely TCP <xref target="I-D.ietf-tcpm-accurate-ecn" fo | |||
. We shall use | rmat="default"/>, the sender has to check that | |||
the term 'Classic' for these Reno-friendly congestion controls. Classic | the receiver has been suitably updated to give more accurate feedback, | |||
congestion controls induce relatively large saw-tooth-shaped excursions | whereas with more recent transport protocols, such as QUIC <xref target="RFC | |||
up the queue and down again, which have been growing as flow rate | 9000" format="default"/> and Datagram Congestion Control Protocol (DCCP) <xref t | |||
scales <xref target="RFC3649" format="default"/>. So if a network operator | arget="RFC4340" format="default"/>, all | |||
naively | receivers have always been suitable.</t> | |||
attempts to reduce queuing delay by configuring an AQM to operate at a | <t>This document presents the L4S architecture. It consists of three | |||
shallower queue, a Classic congestion control will significantly | components: network support to isolate L4S traffic from Classic traffic; | |||
underutilize the link at the bottom of every saw-tooth.</t> | protocol features that allow network elements to identify L4S traffic; | |||
<t>It has been demonstrated that if the sending host replaces a Classic | and host support for L4S congestion controls. The protocol is defined | |||
congestion control with a 'Scalable' alternative, when a suitable AQM is | separately in <xref target="RFC9331" format="default"/> as an experimental | |||
deployed in the network the performance under load of all the above | change to Explicit Congestion Notification (ECN). This document | |||
interactive applications can be significantly improved. For instance, | describes and justifies the component parts and how they interact to | |||
queuing delay under heavy load with the example DCTCP/DualQ solution | provide the low latency, low loss, and scalable Internet service. It also | |||
cited below on a DSL or Ethernet link is roughly 1 to 2 milliseconds at | details the approach to incremental deployment, as briefly summarized | |||
the 99th percentile without losing link utilization <xref target="DualPI2L | above.</t> | |||
inux" format="default"/>, <xref target="DCttH19" format="default"/> (for other l | <section numbered="true" toc="default"> | |||
ink types, | <name>Document Roadmap</name> | |||
see <xref target="l4sarch_link-specifics" format="default"/>). This compar | <t>This document describes the L4S architecture in three passes. First, | |||
es with | the brief overview in <xref target="l4s-arch_arch_overview" format="defaul | |||
5-20 ms on <em>average</em> with a Classic | t"/> gives the very high-level idea and states the main | |||
congestion control and current state-of-the-art AQMs such as | components with minimal rationale. This is only intended to give some | |||
FQ-CoDel <xref target="RFC8290" format="default"/>, PIE <xref target="RFC8 | context for the terminology definitions that follow in <xref target="l4sps | |||
033" format="default"/> or DOCSIS PIE <xref target="RFC8034" format="default"/> | _Terminology" format="default"/> and to explain the structure of the rest | |||
and about | of the document. Then, <xref target="l4sps_components" format="default"/> | |||
20-30 ms at the 99th percentile <xref target="DualPI2Linux" format="defaul | goes into more | |||
t"/>.</t> | detail on each component with some rationale but still mostly stating | |||
<t>L4S is designed for incremental deployment. It is possible to deploy | what the architecture is, rather than why. Finally, <xref target="l4sps_ra | |||
the L4S service at a bottleneck link alongside the existing best efforts | tionale" format="default"/> justifies why each element of the solution | |||
service <xref target="DualPI2Linux" format="default"/> so that unmodified | was chosen (<xref target="l4sps_why_primary_components" format="default"/> | |||
applications can start using it as soon as the sender's stack is | ) and why | |||
updated. Access networks are typically designed with one link as the | these choices were different from other solutions (<xref target="l4sps_why | |||
bottleneck for each site (which might be a home, small enterprise or | -not" format="default"/>).</t> | |||
mobile device), so deployment at either or both ends of this link should | <t>After the architecture has been described, <xref target="l4sarch_applic | |||
give nearly all the benefit in the respective direction. With some | ability" format="default"/> | |||
transport protocols, namely TCP and SCTP, the sender has to check that | clarifies its applicability by describing the applications and use cases | |||
the receiver has been suitably updated to give more accurate feedback, | that motivated the design, the challenges applying the architecture to | |||
whereas with more recent transport protocols such as QUIC and DCCP, all | various link technologies, and various incremental deployment models | |||
receivers have always been suitable.</t> | (including the two main deployment topologies, different sequences for | |||
<t>This document presents the L4S architecture. It consists of three | incremental deployment, and various interactions with preexisting | |||
components: network support to isolate L4S traffic from classic traffic; | approaches). The document | |||
protocol features that allow network elements to identify L4S traffic; | ends with the usual tailpieces, including extensive discussion of | |||
and host support for L4S congestion controls. The protocol is defined | traffic policing and other security considerations in <xref target="l4sps_ | |||
separately <xref target="I-D.ietf-tsvwg-ecn-l4s-id" format="default"/> as | Security_Considerations" format="default"/>.</t> | |||
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.</t> | ||||
<section numbered="true" toc="default"> | ||||
<name>Document Roadmap</name> | ||||
<t>This document describes the L4S architecture in three passes. First | ||||
this brief overview gives the very high level idea and states the main | ||||
components with minimal rationale. This is only intended to give some | ||||
context for the terminology definitions that follow in <xref target="l4s | ||||
ps_Terminology" format="default"/>, and to explain the structure of the rest | ||||
of the document. Then <xref target="l4sps_components" format="default"/> | ||||
goes into more | ||||
detail on each component with some rationale, but still mostly stating | ||||
what the architecture is, rather than why. Finally, <xref target="l4sps_ | ||||
rationale" format="default"/> justifies why each element of the solution | ||||
was chosen (<xref target="l4sps_why_primary_components" format="default" | ||||
/>) and why | ||||
these choices were different from other solutions (<xref target="l4sps_w | ||||
hy-not" format="default"/>).</t> | ||||
<t>Having described the architecture, <xref target="l4sarch_applicabilit | ||||
y" format="default"/> clarifies its applicability; that is, | ||||
the applications and use-cases that motivated the design, the | ||||
challenges applying the architecture to various link technologies, and | ||||
various incremental deployment models: including the two main | ||||
deployment topologies, different sequences for incremental deployment | ||||
and various interactions with pre-existing approaches. The document | ||||
ends with the usual tailpieces, including extensive discussion of | ||||
traffic policing and other security considerations in <xref target="l4sp | ||||
s_Security_Considerations" format="default"/>.</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="l4s-arch_arch_overview" numbered="true" toc="default"> | ||||
<name>L4S Architecture Overview</name> | ||||
<t>Below we outline the three main components to the L4S architecture; | ||||
1) the scalable congestion control on the sending host; 2) the AQM at | ||||
the network bottleneck; and 3) the protocol between them.</t> | ||||
<t>But first, the main point to grasp is that low latency is not | ||||
provided by the network - low latency results from the careful behaviour | ||||
of the scalable congestion controllers used by L4S senders. The network | ||||
does have a role - primarily to isolate the low latency of the carefully | ||||
behaving L4S traffic from the higher queuing delay needed by traffic | ||||
with pre-existing Classic behaviour. The network also alters the way it | ||||
signals queue growth to the transport - It uses the Explicit Congestion | ||||
Notification (ECN) protocol, but it signals the very start of queue | ||||
growth - immediately without the smoothing delay typical of Classic | ||||
AQMs. Because ECN support is essential for L4S, senders use the ECN | ||||
field as the protocol that allows the network to identify which packets | ||||
are L4S and which are Classic.</t> | ||||
<dl newline="false" spacing="normal"> | ||||
<dt>1) Host:</dt> | ||||
<dd> | ||||
<t>Scalable congestion controls already exist. | ||||
They solve the scaling problem with Classic congestion controls, | ||||
such as Reno or Cubic. Because flow rate has scaled since TCP | ||||
congestion control was first designed in 1988, assuming the flow | ||||
lasts long enough, it now takes hundreds of round trips (and | ||||
growing) to recover after a congestion signal (whether a loss or an | ||||
ECN mark) as shown in the examples in <xref target="l4sps_why_primary_ | ||||
components" format="default"/> and <xref target="RFC3649" format="default"/>. Th | ||||
erefore, control of queuing and utilization | ||||
becomes very slack, and the slightest disturbances (e.g. from | ||||
new flows starting) prevent a high rate from being attained.</t> | ||||
<t>With a scalable congestion control, the average time | ||||
from one congestion signal to the next (the recovery time) remains | ||||
invariant as the flow rate scales, all other factors being equal. | ||||
This maintains the same degree of control over queueing and | ||||
utilization whatever the flow rate, as well as ensuring that high | ||||
throughput is more robust to disturbances. The scalable control used | ||||
most widely (in controlled environments) is Data Center TCP | ||||
(DCTCP <xref target="RFC8257" format="default"/>), which has been impl | ||||
emented | ||||
and deployed in Windows Server Editions (since 2012), in Linux and | ||||
in FreeBSD. Although DCTCP as-is functions well over wide-area round | ||||
trip times, most implementations lack certain safety features that | ||||
would be necessary for use outside controlled environments like data | ||||
centres (see <xref target="l4sarch_sec_non-l4s-neck" format="default"/ | ||||
>). So scalable | ||||
congestion control needs to be implemented in TCP and other | ||||
transport protocols (QUIC, SCTP, RTP/RTCP, RMCAT, etc.). Indeed, | ||||
between the present document being drafted and published, the | ||||
following scalable congestion controls were implemented: TCP | ||||
Prague <xref target="PragueLinux" format="default"/>, QUIC Prague, an | ||||
L4S | ||||
variant of the RMCAT SCReAM controller <xref target="SCReAM" format="d | ||||
efault"/> | ||||
and the L4S ECN part of BBRv2 <xref target="BBRv2" format="default"/> | ||||
intended | ||||
for TCP and QUIC transports.</t> | ||||
</dd> | ||||
<dt>2) Network:</dt> | ||||
<dd> | ||||
<t>L4S traffic needs to be isolated from the | ||||
queuing latency of Classic traffic. One queue per application flow | ||||
(FQ) is one way to achieve this, e.g. FQ-CoDel <xref target="RFC8290" | ||||
format="default"/>. However, using just two queues is sufficient and | ||||
does not require inspection of transport layer headers in the | ||||
network, which is not always possible (see <xref target="l4sps_why-not | ||||
" format="default"/>). With just two queues, it might seem | ||||
impossible to know how much capacity to schedule for each queue | ||||
without inspecting how many flows at any one time are using each. | ||||
And it would be undesirable to arbitrarily divide access network | ||||
capacity into two partitions. The Dual Queue Coupled AQM was | ||||
developed as a minimal complexity solution to this problem. It acts | ||||
like a 'semi-permeable' membrane that partitions latency but not | ||||
bandwidth. As such, the two queues are for transition from Classic | ||||
to L4S behaviour, not bandwidth prioritization.</t> | ||||
<t><xref target="l4sps_components" format="default"/> gives a high lev | ||||
el | ||||
explanation of how the per-flow-queue (FQ) and DualQ variants of L4S | ||||
work, and <xref target="I-D.ietf-tsvwg-aqm-dualq-coupled" format="defa | ||||
ult"/> gives a | ||||
full explanation of the DualQ Coupled AQM framework. A specific | ||||
marking algorithm is not mandated for L4S AQMs. Appendices of <xref ta | ||||
rget="I-D.ietf-tsvwg-aqm-dualq-coupled" format="default"/> give non-normative | ||||
examples that have been implemented and evaluated, and give | ||||
recommended default parameter settings. It is expected that L4S | ||||
experiments will improve knowledge of parameter settings and whether | ||||
the set of marking algorithms needs to be limited.<!--{ToDo: Add ref t | ||||
o Mohit's draft re L4S FQ, once available.}--> | ||||
</t> | ||||
</dd> | ||||
<dt>3) Protocol:</dt> | ||||
<dd>A sending host needs to distinguish L4S | ||||
and Classic packets with an identifier so that the network can | ||||
classify them into their separate treatments. The L4S identifier | ||||
spec. <xref target="I-D.ietf-tsvwg-ecn-l4s-id" format="default"/> conc | ||||
ludes that | ||||
all alternatives involve compromises, but the ECT(1) and CE | ||||
codepoints of the ECN field represent a workable solution. As | ||||
already explained, the network also uses ECN to immediately signal | ||||
the very start of queue growth to the transport.</dd> | ||||
</dl> | ||||
</section> | </section> | |||
<section anchor="l4sps_Terminology" numbered="true" toc="default"> | </section> | |||
<name>Terminology</name> | <section anchor="l4s-arch_arch_overview" numbered="true" toc="default"> | |||
<t>[Note to the RFC Editor (to be removed before publication as an RFC): | <name>L4S Architecture Overview</name> | |||
The following definitions are copied from the L4S ECN spec <xref target="I | <t>Below, we outline the three main components to the L4S architecture: | |||
-D.ietf-tsvwg-ecn-l4s-id" format="default"/> for the reader's convenience. | 1) the Scalable congestion control on the sending host; 2) the AQM at | |||
Except, here, Classic CC and Scalable CC are condensed because they | the network bottleneck; and 3) the protocol between them.</t> | |||
refer to <xref target="l4sps_why_primary_components" format="default"/> la | <t>But first, the main point to grasp is that low latency is not | |||
ter. Also the | provided by the network; low latency results from the careful behaviour | |||
definition of Traffic Policing is not needed in <xref target="I-D.ietf-tsv | of the Scalable congestion controllers used by L4S senders. The network | |||
wg-ecn-l4s-id" format="default"/>.]</t> | does have a role, primarily to isolate the low latency of the carefully | |||
<dl newline="false" spacing="normal"> | behaving L4S traffic from the higher queuing delay needed by traffic | |||
<dt>Classic Congestion Control:</dt> | with preexisting Classic behaviour. The network also alters the way it | |||
<dd>A congestion control | signals queue growth to the transport. It uses the Explicit Congestion | |||
behaviour that can co-exist with standard Reno <xref target="RFC5681" | Notification (ECN) protocol, but it signals the very start of queue | |||
format="default"/> without causing significantly negative impact on | growth immediately, without the smoothing delay typical of Classic | |||
its flow rate <xref target="RFC5033" format="default"/>. The scaling p | AQMs. Because ECN support is essential for L4S, senders use the ECN | |||
roblem | field as the protocol that allows the network to identify which packets | |||
with Classic congestion control is explained, with examples, in | are L4S and which are Classic.</t> | |||
<xref target="l4sps_why_primary_components" format="default"/> and in | <ol spacing="normal" type="%d)"> | |||
<xref target="RFC3649" format="default"/>.</dd> | <li><t>Host:</t> | |||
<dt>Scalable Congestion Control:</dt> | <t>Scalable congestion controls already exist. They solve the scaling | |||
<dd>A congestion control | problem with Classic congestion controls, such as Reno or | |||
where the average time from one congestion signal to the next (the | CUBIC. Because flow rate has scaled since TCP congestion control was | |||
recovery time) remains invariant as the flow rate scales, all other | first designed in 1988, assuming the flow lasts long enough, it now | |||
factors being equal. For instance, DCTCP averages 2 congestion | takes hundreds of round trips (and growing) to recover after a | |||
signals per round-trip whatever the flow rate, as do other recently | congestion signal (whether a loss or an ECN mark), as shown in the | |||
developed scalable congestion controls, e.g. Relentless | examples in <xref target="l4sps_why_primary_components" | |||
TCP <xref target="Mathis09" format="default"/>, TCP Prague <xref targe | format="default"/> and <xref target="RFC3649" | |||
t="I-D.briscoe-iccrg-prague-congestion-control" format="default"/>, <xref target | format="default"/>. Therefore, control of queuing and utilization | |||
="PragueLinux" format="default"/>, BBRv2 <xref target="BBRv2" format="default"/> | becomes very slack, and the slightest disturbances (e.g., from new | |||
, <xref target="I-D.cardwell-iccrg-bbr-congestion-control" format="default"/> an | flows starting) prevent a high rate from being attained.</t> | |||
d the L4S | <t>With a Scalable congestion control, the average time from one | |||
variant of SCReAM for real-time media <xref target="SCReAM" format="de | congestion signal to the next (the recovery time) remains invariant as | |||
fault"/>, <xref target="RFC8298" format="default"/>). See Section 4.3 | flow rate scales, all other factors being equal. This maintains | |||
of <xref target="I-D.ietf-tsvwg-ecn-l4s-id" format="default"/> for mor | the same degree of control over queuing and utilization, whatever the | |||
e | flow rate, as well as ensuring that high throughput is more robust to | |||
explanation.</dd> | disturbances. The Scalable control used most widely (in controlled | |||
<dt>Classic service:</dt> | environments) is DCTCP <xref target="RFC8257" | |||
<dd>The Classic service is intended for | format="default"/>, which has been implemented and deployed in | |||
all the congestion control behaviours that co-exist with | Windows Server Editions (since 2012), in Linux, and in | |||
Reno <xref target="RFC5681" format="default"/> (e.g. Reno itself, | FreeBSD. | |||
Cubic <xref target="RFC8312" format="default"/>, Compound <xref target | Although DCTCP as-is functions well over wide-area round-trip | |||
="I-D.sridharan-tcpm-ctcp" format="default"/>, TFRC <xref target="RFC5348" forma | times (RTTs), most implementations lack certain safety features that would | |||
t="default"/>). The term 'Classic queue' means a queue | be | |||
necessary for use outside controlled environments, like data centres | ||||
(see <xref target="l4sarch_sec_non-l4s-neck" format="default"/>). Therefor | ||||
e, | ||||
Scalable congestion control needs to be implemented in TCP and other | ||||
transport protocols (QUIC, Stream Control Transmission Protocol (SCTP), RT | ||||
P/RTCP, RTP Media Congestion Avoidance Techniques (RMCAT), etc.). | ||||
Indeed, | ||||
between the present document being drafted and published, the | ||||
following Scalable congestion controls were implemented: Prague over TCP a | ||||
nd QUIC | ||||
<xref target="I-D.briscoe-iccrg-prague-congestion-control" format="default | ||||
"/> <xref target="PragueLinux" format="default"/>, an L4S | ||||
variant of the RMCAT SCReAM controller <xref target="SCReAM-L4S" | ||||
format="default"/>, and the L4S ECN part of Bottleneck Bandwidth and Round | ||||
-trip propagation time (BBRv2) <xref target="BBRv2" | ||||
format="default"/> intended for TCP and QUIC transports.</t> | ||||
</li> | ||||
<li><t>Network:</t> | ||||
<t>L4S traffic needs to be isolated from the queuing latency of | ||||
Classic traffic. One queue per application flow (FQ) is one way to | ||||
achieve this, e.g., FQ-CoDel <xref target="RFC8290" | ||||
format="default"/>. However, using just two queues is sufficient and | ||||
does not require inspection of transport layer headers in the network, | ||||
which is not always possible (see <xref target="l4sps_why-not" | ||||
format="default"/>). With just two queues, it might seem impossible to | ||||
know how much capacity to schedule for each queue without inspecting | ||||
how many flows at any one time are using each. And it would be | ||||
undesirable to arbitrarily divide access network capacity into two | ||||
partitions. The Dual-Queue Coupled AQM was developed as a minimal | ||||
complexity solution to this problem. It acts like a 'semi-permeable' | ||||
membrane that partitions latency but not bandwidth. As such, the two | ||||
queues are for transitioning from Classic to L4S behaviour, not bandwidth | ||||
prioritization.</t> | ||||
<t><xref target="l4sps_components" format="default"/> gives a high-level | ||||
explanation of how the per-flow queue (FQ) and DualQ variants of | ||||
L4S work, and <xref target="RFC9332" | ||||
format="default"/> gives a full explanation of the DualQ Coupled AQM | ||||
framework. A specific marking algorithm is not mandated for L4S | ||||
AQMs. Appendices of <xref target="RFC9332" | ||||
format="default"/> give non-normative examples that have been | ||||
implemented and evaluated and give recommended default parameter | ||||
settings. It is expected that L4S experiments will improve knowledge | ||||
of parameter settings and whether the set of marking algorithms needs | ||||
to be limited. | ||||
</t> | ||||
</li> | ||||
<li><t>Protocol:</t> | ||||
<t>A sending host needs to distinguish L4S and Classic packets with an | ||||
identifier so that the network can classify them into their separate | ||||
treatments. The L4S identifier spec <xref | ||||
target="RFC9331" format="default"/> concludes that | ||||
all alternatives involve compromises, but the ECT(1) and Congestion Experi | ||||
enced (CE) codepoints | ||||
of the ECN field represent a workable solution. As already explained, | ||||
the network also uses ECN to immediately signal the very start of | ||||
queue growth to the transport.</t> | ||||
</li> | ||||
</ol> | ||||
</section> | ||||
<section anchor="l4sps_Terminology" numbered="true" toc="default"> | ||||
<name>Terminology</name> | ||||
<dl newline="false" spacing="normal"> | ||||
<dt>Classic Congestion Control:</dt> | ||||
<dd>A congestion control | ||||
behaviour that can coexist with standard Reno <xref target="RFC5681" forma | ||||
t="default"/> without causing significantly negative impact on | ||||
its flow rate <xref target="RFC5033" format="default"/>. The scaling probl | ||||
em | ||||
with Classic congestion control is explained, with examples, in | ||||
<xref target="l4sps_why_primary_components" format="default"/> and in <xre | ||||
f target="RFC3649" format="default"/>.</dd> | ||||
<dt>Scalable Congestion Control:</dt> | ||||
<dd>A congestion control | ||||
where the average time from one congestion signal to the next (the | ||||
recovery time) remains invariant as flow rate scales, all other | ||||
factors being equal. | ||||
For instance, DCTCP averages 2 congestion | ||||
signals per round trip, whatever the flow rate, as do other recently | ||||
developed Scalable congestion controls, e.g., Relentless | ||||
TCP <xref target="I-D.mathis-iccrg-relentless-tcp" format="default"/>, Pra | ||||
gue for TCP and QUIC <xref target="I-D.briscoe-iccrg-prague-congestion-control" | ||||
format="default"/> <xref target="PragueLinux" format="default"/>, BBRv2 <xref ta | ||||
rget="BBRv2" format="default"/> <xref target="I-D.cardwell-iccrg-bbr-congestion- | ||||
control" format="default"/>, and the L4S | ||||
variant of SCReAM for real-time media <xref target="SCReAM-L4S" format="de | ||||
fault"/> <xref target="RFC8298" format="default"/>. See | ||||
<xref target="RFC9331" format="default" sectionFormat="of" section="4.3"/> | ||||
for more | ||||
explanation.</dd> | ||||
<dt>Classic Service:</dt> | ||||
<dd>The Classic service is intended for | ||||
all the congestion control behaviours that coexist with | ||||
Reno <xref target="RFC5681" format="default"/> (e.g., Reno itself, | ||||
CUBIC <xref target="RFC8312" format="default"/>, Compound <xref target="I- | ||||
D.sridharan-tcpm-ctcp" format="default"/>, and TFRC <xref target="RFC5348" forma | ||||
t="default"/>). The term 'Classic queue' means a queue | ||||
providing the Classic service.</dd> | providing the Classic service.</dd> | |||
<dt>Low-Latency, Low-Loss Scalable throughput (L4S) service:</dt> | <dt>Low Latency, Low Loss, and Scalable throughput (L4S) service:</dt> | |||
<dd> | <dd> | |||
<t>The | <t>The | |||
'L4S' service is intended for traffic from scalable congestion | 'L4S' service is intended for traffic from Scalable congestion | |||
control algorithms, such as the Prague congestion control <xref target | control algorithms, such as the Prague congestion control <xref target | |||
="I-D.briscoe-iccrg-prague-congestion-control" format="default"/>, which was | ="I-D.briscoe-iccrg-prague-congestion-control" format="default"/>, which was | |||
derived from DCTCP <xref target="RFC8257" format="default"/>. The L4S | derived from DCTCP <xref target="RFC8257" format="default"/>. The L4S | |||
service | service | |||
is for more general traffic than just Prague -- it allows the | is for more general traffic than just Prague -- it allows the | |||
set of congestion controls with similar scaling properties to Prague | set of congestion controls with similar scaling properties to Prague | |||
to evolve, such as the examples listed above (Relentless, SCReAM). | to evolve, such as the examples listed above (Relentless, SCReAM, etc. ). | |||
The term 'L4S queue' means a queue providing the L4S service.</t> | The term 'L4S queue' means a queue providing the L4S service.</t> | |||
<t>The terms Classic or L4S can also qualify other | <t>The terms Classic or L4S can also qualify other | |||
nouns, such as 'queue', 'codepoint', 'identifier', 'classification', | nouns, such as 'queue', 'codepoint', 'identifier', 'classification', | |||
'packet', 'flow'. For example: an L4S packet means a packet with an | 'packet', and 'flow'. For example, an L4S packet means a packet with a n | |||
L4S identifier sent from an L4S congestion control.</t> | L4S identifier sent from an L4S congestion control.</t> | |||
<t>Both Classic and L4S services can cope with a | <t>Both Classic and L4S services can cope with a | |||
proportion of unresponsive or less-responsive traffic as well, but | proportion of unresponsive or less-responsive traffic as well but, | |||
in the L4S case its rate has to be smooth enough or low enough to | in the L4S case, its rate has to be smooth enough or low enough to | |||
not build a queue (e.g. DNS, VoIP, game sync datagrams, | not build a queue (e.g., DNS, Voice over IP (VoIP), game sync datagram | |||
s, | ||||
etc.).</t> | etc.).</t> | |||
</dd> | </dd> | |||
<dt>Reno-friendly:</dt> | <dt>Reno-friendly:</dt> | |||
<dd>The subset of Classic traffic that is | <dd>The subset of Classic traffic that is | |||
friendly to the standard Reno congestion control defined for TCP in | friendly to the standard Reno congestion control defined for TCP in | |||
<xref target="RFC5681" format="default"/>. The TFRC spec. <xref target ="RFC5348" format="default"/> indirectly implies that 'friendly' is defined as | <xref target="RFC5681" format="default"/>. The TFRC spec <xref target= "RFC5348" format="default"/> indirectly implies that 'friendly' is defined as | |||
"generally within a factor of two of the sending rate of a TCP flow | "generally within a factor of two of the sending rate of a TCP flow | |||
under the same conditions". Reno-friendly is used here in place of | under the same conditions". Reno-friendly is used here in place of | |||
'TCP-friendly', given the latter has become imprecise, because the | 'TCP-friendly', given the latter has become imprecise, because the | |||
TCP protocol is now used with so many different congestion control | TCP protocol is now used with so many different congestion control | |||
behaviours, and Reno is used in non-TCP transports such as | behaviours, and Reno is used in non-TCP transports, such as | |||
QUIC <xref target="RFC9000" format="default"/>.</dd> | QUIC <xref target="RFC9000" format="default"/>.</dd> | |||
<dt>Classic ECN:</dt> | <dt>Classic ECN:</dt> | |||
<dd> | <dd> | |||
<t>The original Explicit Congestion | <t>The original Explicit Congestion | |||
Notification (ECN) protocol <xref target="RFC3168" format="default"/>, which | Notification (ECN) protocol <xref target="RFC3168" format="default"/> that | |||
requires ECN signals to be treated as equivalent to drops, both when | requires ECN signals to be treated as equivalent to drops, both when | |||
generated in the network and when responded to by the sender.</t> | generated in the network and when responded to by the sender.</t> | |||
<t>L4S uses the ECN field as an identifier <xref target="I-D.ietf-tsvw | <t>For L4S, the names used for the four codepoints of the 2-bit | |||
g-ecn-l4s-id" format="default"/> with the names for the four | IP-ECN field are unchanged from those defined in the ECN spec | |||
codepoints of the 2-bit IP-ECN field unchanged from those defined in | <xref target="RFC3168" format="default"/>, i.e., Not-ECT, ECT(0), | |||
the ECN spec <xref target="RFC3168" format="default"/>: Not ECT, ECT(0 | ECT(1), and CE, where ECT stands for ECN-Capable Transport and CE | |||
), ECT(1) | stands for Congestion Experienced. A packet marked with the CE | |||
and CE, where ECT stands for ECN-Capable Transport and CE stands for | codepoint is termed 'ECN-marked' or sometimes just 'marked' where | |||
Congestion Experienced. A packet marked with the CE codepoint is | the context makes ECN obvious.</t> | |||
termed 'ECN-marked' or sometimes just 'marked' where the context | ||||
makes ECN obvious.</t> | ||||
</dd> | </dd> | |||
<dt>Site:</dt> | <dt>Site:</dt> | |||
<dd>A home, mobile device, small enterprise or | <dd>A home, mobile device, small enterprise, or | |||
campus, where the network bottleneck is typically the access link to | campus where the network bottleneck is typically the access link to | |||
the site. Not all network arrangements fit this model but it is a | the site. Not all network arrangements fit this model, but it is a | |||
useful, widely applicable generalization.</dd> | useful, widely applicable generalization.</dd> | |||
<dt>Traffic policing:</dt> | <dt>Traffic Policing:</dt> | |||
<dd>Limiting traffic by dropping packets | <dd>Limiting traffic by dropping packets | |||
or shifting them to lower service class (as opposed to introducing | or shifting them to a lower service class (as opposed to introducing | |||
delay, which is termed traffic shaping). Policing can involve | delay, which is termed 'traffic shaping'). Policing can involve | |||
limiting average rate and/or burst size. Policing focused on | limiting the average rate and/or burst size. Policing focused on | |||
limiting queuing but not average flow rate is termed congestion | limiting queuing but not the average flow rate is termed 'congestion | |||
policing, latency policing, burst policing or queue protection in | policing', 'latency policing', 'burst policing', or 'queue protection' | |||
in | ||||
this document. Otherwise, the term rate policing is used.</dd> | this document. Otherwise, the term rate policing is used.</dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
<section anchor="l4sps_components" numbered="true" toc="default"> | <section anchor="l4sps_components" numbered="true" toc="default"> | |||
<name>L4S Architecture Components</name> | <name>L4S Architecture Components</name> | |||
<t>The L4S architecture is composed of the elements in the following | <t>The L4S architecture is composed of the elements in the following | |||
three subsections.</t> | three subsections.</t> | |||
<section anchor="l4sps_protocol_components" numbered="true" toc="default"> | <section anchor="l4sps_protocol_components" numbered="true" toc="default"> | |||
<name>Protocol Mechanisms</name> | <name>Protocol Mechanisms</name> | |||
<t>The L4S architecture involves: a) unassignment of the previous use | <t>The L4S architecture involves: a) unassignment of the previous use | |||
of the identifier; b) reassignment of the same identifier; and c) | of the identifier; b) reassignment of the same identifier; and c) | |||
optional further identifiers:</t> | optional further identifiers:</t> | |||
<ol spacing="normal" type="a"><li> | <ol spacing="normal" type="a"><li> | |||
<t>An essential aspect of a scalable congestion control is the use | <t>An essential aspect of a Scalable congestion control is the use | |||
of explicit congestion signals. 'Classic' ECN <xref target="RFC3168" | of explicit congestion signals. Classic ECN <xref target="RFC3168" f | |||
format="default"/> requires an ECN signal to be treated as | ormat="default"/> requires an ECN signal to be treated as | |||
equivalent to drop, both when it is generated in the network and | equivalent to drop, both when it is generated in the network and | |||
when it is responded to by hosts. L4S needs networks and hosts to | when it is responded to by hosts. L4S needs networks and hosts to | |||
support a more fine-grained meaning for each ECN signal that is | support a more fine-grained meaning for each ECN signal that is | |||
less severe than a drop, so that the L4S signals:</t> | less severe than a drop, so that the L4S signals:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>can be much more frequent;</li> | <li>can be much more frequent and</li> | |||
<li>can be signalled immediately, without the significant delay | <li>can be signalled immediately, without the significant delay | |||
required to smooth out fluctuations in the queue.</li> | required to smooth out fluctuations in the queue.</li> | |||
</ul> | </ul> | |||
<t>To enable L4S, the standards track Classic ECN | <t>To enable L4S, the Standards Track Classic ECN | |||
spec. <xref target="RFC3168" format="default"/> has had to be update | spec <xref target="RFC3168" format="default"/> has had to be updated | |||
d to allow | to allow | |||
L4S packets to depart from the 'equivalent to drop' constraint. | L4S packets to depart from the 'equivalent-to-drop' constraint. | |||
<xref target="RFC8311" format="default"/> is a standards track updat | <xref target="RFC8311" format="default"/> is a Standards Track updat | |||
e to relax | e to | |||
specific requirements in RFC 3168 (and certain other standards | relax specific requirements in <xref target="RFC3168" format="default | |||
track RFCs), which clears the way for the experimental changes | "/> | |||
(and certain other Standards | ||||
Track RFCs), which clears the way for the experimental changes | ||||
proposed for L4S. Also, the ECT(1) codepoint was previously | proposed for L4S. Also, the ECT(1) codepoint was previously | |||
assigned as the experimental ECN nonce <xref target="RFC3540" format ="default"/>, which RFC 8311 recategorizes as historic to | assigned as the experimental ECN nonce <xref target="RFC3540" format ="default"/>, which <xref target="RFC8311" format="default"/> recategorizes as h istoric to | |||
make the codepoint available again.</t> | make the codepoint available again.</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t><xref target="I-D.ietf-tsvwg-ecn-l4s-id" format="default"/> speci fies that | <t><xref target="RFC9331" format="default"/> specifies that | |||
ECT(1) is used as the identifier to classify L4S packets into a | ECT(1) is used as the identifier to classify L4S packets into a | |||
separate treatment from Classic packets. This satisfies the | separate treatment from Classic packets. This satisfies the | |||
requirement for identifying an alternative ECN treatment in <xref ta rget="RFC4774" format="default"/>.</t> | requirement for identifying an alternative ECN treatment in <xref ta rget="RFC4774" format="default"/>.</t> | |||
<t>The CE codepoint is | <t>The CE codepoint is | |||
used to indicate Congestion Experienced by both L4S and Classic | used to indicate Congestion Experienced by both L4S and Classic | |||
treatments. This raises the concern that a Classic AQM earlier on | treatments. This raises the concern that a Classic AQM earlier on | |||
the path might have marked some ECT(0) packets as CE. Then these | the path might have marked some ECT(0) packets as CE. Then, these | |||
packets will be erroneously classified into the L4S queue. | packets will be erroneously classified into the L4S queue. | |||
Appendix B of the L4S ECN spec <xref target="I-D.ietf-tsvwg-ecn-l4s- id" format="default"/> explains why five unlikely | <xref target="RFC9331" format="default" section="B" sectionFormat="o f"/> explains why five unlikely | |||
eventualities all have to coincide for this to have any | eventualities all have to coincide for this to have any | |||
detrimental effect, which even then would only involve a | detrimental effect, which even then would only involve a | |||
vanishingly small likelihood of a spurious retransmission.</t> | vanishingly small likelihood of a spurious retransmission.</t> | |||
</li> | </li> | |||
<li>A network operator might wish to include certain unresponsive, | <li>A network operator might wish to include certain unresponsive, | |||
non-L4S traffic in the L4S queue if it is deemed to be smoothly | non-L4S traffic in the L4S queue if it is deemed to be paced smoothl | |||
enough paced and low enough rate not to build a queue. For | y | |||
enough and at a low enough rate not to build a queue, for | ||||
instance, VoIP, low rate datagrams to sync online games, | instance, VoIP, low rate datagrams to sync online games, | |||
relatively low rate application-limited traffic, DNS, LDAP, etc. | relatively low rate application-limited traffic, DNS, Lightweight Di rectory Access Protocol (LDAP), etc. | |||
This traffic would need to be tagged with specific identifiers, | This traffic would need to be tagged with specific identifiers, | |||
e.g. a low latency Diffserv Codepoint such as Expedited | e.g., a low-latency Diffserv codepoint such as Expedited | |||
Forwarding (EF <xref target="RFC3246" format="default"/>), Non-Queue | Forwarding (EF) <xref target="RFC3246" format="default"/>, Non-Queue | |||
-Building | -Building | |||
(NQB <xref target="I-D.ietf-tsvwg-nqb" format="default"/>), or | (NQB) <xref target="I-D.ietf-tsvwg-nqb" format="default"/>, or | |||
operator-specific identifiers.</li> | operator-specific identifiers.</li> | |||
</ol> | </ol> | |||
</section> | </section> | |||
<section anchor="l4sps_network_components" numbered="true" toc="default"> | <section anchor="l4sps_network_components" numbered="true" toc="default"> | |||
<name>Network Components</name> | <name>Network Components</name> | |||
<t>The L4S architecture aims to provide low latency without the <em>need </em> for per-flow operations in network | <t>The L4S architecture aims to provide low latency without the <em>need </em> for per-flow operations in network | |||
components. Nonetheless, the architecture does not preclude per-flow | components. Nonetheless, the architecture does not preclude per-flow | |||
solutions. The following bullets describe the known arrangements: a) | solutions. The following bullets describe the known arrangements: a) | |||
the DualQ Coupled AQM with an L4S AQM in one queue coupled from a | the DualQ Coupled AQM with an L4S AQM in one queue coupled from a | |||
Classic AQM in the other; b) Per-Flow Queues with an instance of a | Classic AQM in the other; b) per-flow queues with an instance of a | |||
Classic and an L4S AQM in each queue; c) Dual queues with per-flow | Classic and an L4S AQM in each queue; and c) Dual queues with per-flow | |||
AQMs, but no per-flow queues:</t> | AQMs but no per-flow queues:</t> | |||
<ol spacing="normal" type="a"><li> | <ol spacing="normal" type="a"><li> | |||
<t>The Dual Queue Coupled AQM (illustrated in <xref target="l4sps_fi g_components" format="default"/>) achieves the 'semi-permeable' | <t>The Dual-Queue Coupled AQM (illustrated in <xref target="l4sps_fi g_components" format="default"/>) achieves the 'semi-permeable' | |||
membrane property mentioned earlier as follows:</t> | membrane property mentioned earlier as follows:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>Latency isolation: Two separate queues are used to isolate | <li>Latency isolation: Two separate queues are used to isolate | |||
L4S queuing delay from the larger queue that Classic traffic | L4S queuing delay from the larger queue that Classic traffic | |||
needs to maintain full utilization. <!--Each has its own AQM wit | needs to maintain full utilization.</li> | |||
h the L4S AQM configured for a very shallow (sub-millisecond) target delay, and | ||||
the Classic AQM for | ||||
5-15 ms, which is needed to absorb the larger saw-toothing pattern of Classic co | ||||
ngestion controls (otherwise they under-utilize | ||||
the link). --> | ||||
</li> | ||||
<li>Bandwidth pooling: The two queues act as if they are a | <li>Bandwidth pooling: The two queues act as if they are a | |||
single pool of bandwidth in which flows of either type get | single pool of bandwidth in which flows of either type get | |||
roughly equal throughput without the scheduler needing to | roughly equal throughput without the scheduler needing to | |||
identify any flows. This is achieved by having an AQM in each | identify any flows. This is achieved by having an AQM in each | |||
queue, but the Classic AQM provides a congestion signal to | queue, but the Classic AQM provides a congestion signal to | |||
both queues in a manner that ensures a consistent response | both queues in a manner that ensures a consistent response | |||
from the two classes of congestion control. Specifically, the | from the two classes of congestion control. Specifically, the | |||
Classic AQM generates a drop/mark probability based on | Classic AQM generates a drop/mark probability based on | |||
congestion in its own queue, which it uses both to drop/mark | congestion in its own queue, which it uses both to drop/mark | |||
packets in its own queue and to affect the marking probability | packets in its own queue and to affect the marking probability | |||
in the L4S queue. The strength of the coupling of the | in the L4S queue. The strength of the coupling of the | |||
congestion signalling between the two queues is enough to make | congestion signalling between the two queues is enough to make | |||
the L4S flows slow down to leave the right amount of capacity | the L4S flows slow down to leave the right amount of capacity | |||
for the Classic flows (as they would if they were the same | for the Classic flows (as they would if they were the same | |||
type of traffic sharing the same queue).</li> | type of traffic sharing the same queue).</li> | |||
</ul> | </ul> | |||
<t>Then the scheduler can serve the L4S queue with priority | <t>Then, the scheduler can serve the L4S queue with priority | |||
(denoted by the '1' on the higher priority input), because the L4S | (denoted by the '1' on the higher priority input), because the L4S | |||
traffic isn't offering up enough traffic to use all the priority | traffic isn't offering up enough traffic to use all the priority | |||
that it is given. Therefore:</t> | that it is given. Therefore:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>for latency isolation on short time-scales (sub-round-trip) | <li>for latency isolation on short timescales (sub-round-trip), | |||
the prioritization of the L4S queue protects its low latency | the prioritization of the L4S queue protects its low latency | |||
by allowing bursts to dissipate quickly;</li> | by allowing bursts to dissipate quickly;</li> | |||
<li>but for bandwidth pooling on longer time-scales (round-trip | <li>but for bandwidth pooling on longer timescales (round-trip | |||
and longer) the Classic queue creates an equal and opposite | and longer), the Classic queue creates an equal and opposite | |||
pressure against the L4S traffic to ensure that neither has | pressure against the L4S traffic to ensure that neither has | |||
priority when it comes to bandwidth - the tension between | priority when it comes to bandwidth -- the tension between | |||
prioritizing L4S and coupling the marking from the Classic AQM | prioritizing L4S and coupling the marking from the Classic AQM | |||
results in approximate per-flow fairness.</li> | results in approximate per-flow fairness.</li> | |||
</ul> | </ul> | |||
<t>To protect against unresponsive traffic taking advantage | <t>To protect against the prioritization of persistent L4S traffic | |||
of the prioritization of the L4S queue and starving the Classic | deadlocking the Classic queue for a while in some implementations, | |||
queue, it is advisable for the priority to be conditional, not | it is advisable for the priority to be conditional, not | |||
strict (see Appendix A of the DualQ spec <xref target="I-D.ietf-tsvw | strict (see <xref target="RFC9332" format="default" section="A" sect | |||
g-aqm-dualq-coupled" format="default"/>). </t> | ionFormat="of">the DualQ spec</xref>). </t> | |||
<t>When there is no Classic traffic, the L4S | <t>When there is no Classic traffic, the L4S | |||
queue's own AQM comes into play. It starts congestion | queue's own AQM comes into play. It starts congestion | |||
marking with a very shallow queue, so L4S traffic maintains very | marking with a very shallow queue, so L4S traffic maintains very | |||
low queuing delay.</t> | low queuing delay.</t> | |||
<t>If either queue becomes | <t>If either queue becomes persistently overloaded, drop of some | |||
persistently overloaded, drop of ECN-capable packets is | ECN-capable packets is introduced, as recommended in <xref | |||
introduced, as recommended in Section 7 of the ECN spec <xref target | target="RFC3168" sectionFormat="of" section="7">the ECN | |||
="RFC3168" format="default"/> and Section 4.2.1 of the AQM | spec</xref> and <xref target="RFC7567" sectionFormat="of" | |||
recommendations <xref target="RFC7567" format="default"/>. Then both | section="4.2.1">the AQM recommendations</xref>. The trade-offs with | |||
queues | different approaches | |||
introduce the same level of drop (not shown in the figure).</t> | are discussed in <xref | |||
<t>The Dual Queue Coupled AQM has been specified as | target="RFC9332" sectionFormat="of" section="4.2.3">the DualQ | |||
generically as possible <xref target="I-D.ietf-tsvwg-aqm-dualq-coupl | spec</xref> (not shown in the figure here).</t> | |||
ed" format="default"/> without specifying the | <t>The Dual-Queue Coupled AQM has been specified as | |||
generically as possible <xref target="RFC9332" format="default"/> wi | ||||
thout specifying the | ||||
particular AQMs to use in the two queues so that designers are | particular AQMs to use in the two queues so that designers are | |||
free to implement diverse ideas. Informational appendices in that | free to implement diverse ideas. Informational appendices in that | |||
draft give pseudocode examples of two different specific AQM | document give pseudocode examples of two different specific AQM | |||
approaches: one called DualPI2 (pronounced Dual PI | approaches: one called DualPI2 (pronounced Dual PI | |||
Squared) <xref target="DualPI2Linux" format="default"/> that uses th | Squared) <xref target="DualPI2Linux" format="default"/> that uses th | |||
e PI2 | e PI2 | |||
variant of PIE, and a zero-config variant of RED called Curvy RED. | variant of PIE and a zero-config variant of Random Early Detection ( | |||
RED) called Curvy RED. | ||||
A DualQ Coupled AQM based on PIE has also been specified and | A DualQ Coupled AQM based on PIE has also been specified and | |||
implemented for Low Latency DOCSIS <xref target="DOCSIS3.1" format=" default"/>.</t> | implemented for Low Latency DOCSIS <xref target="DOCSIS3.1" format=" default"/>.</t> | |||
<figure anchor="l4sps_fig_components"> | <figure anchor="l4sps_fig_components"> | |||
<name>Components of an L4S DualQ Coupled AQM Solution: 1) Scalable | <name>Components of an L4S DualQ Coupled AQM Solution</name> | |||
Sending Host; 2) Isolation in separate network queues; and 3) Packet Identifica | <artwork align="center" name="" type="" alt=""><![CDATA[ | |||
tion Protocol</name> | (3) (2) | |||
<artwork align="center" name="" type="" alt=""><![CDATA[ | ||||
(3) (2) | ||||
.-------^------..------------^------------------. | .-------^------..------------^------------------. | |||
,-(1)-----. _____ | ,-(1)-----. _____ | |||
; ________ : L4S -------. | | | ; ________ : L4S -------. | | | |||
:|Scalable| : _\ ||__\_|mark | | :|Scalable| : _\ ||__\_|mark | | |||
:| sender | : __________ / / || / |_____|\ _________ | :| sender | : __________ / / || / |_____|\ _________ | |||
:|________|\; | |/ -------' ^ \1|condit'nl| | :|________|\; | |/ -------' ^ \1|condit'nl| | |||
`---------'\_| IP-ECN | Coupling : \|priority |_\ | `---------'\_| IP-ECN | Coupling : \|priority |_\ | |||
________ / |Classifier| : /|scheduler| / | ________ / |Classifier| : /|scheduler| / | |||
|Classic |/ |__________|\ -------. __:__ / |_________| | |Classic |/ |__________|\ -------. __:__ / |_________| | |||
| sender | \_\ || | ||__\_|mark/|/ | | sender | \_\ || | ||__\_|mark/|/ | |||
|________| / || | || / |drop | | |________| / || | || / |drop | | |||
Classic -------' |_____| | Classic -------' |_____| | |||
(1) Scalable sending host | ||||
(2) Isolation in separate network queues | ||||
(3) Packet identification protocol | ||||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
</li> | </li> | |||
<li>Per-Flow Queues and AQMs: A scheduler with per-flow queues such | <li>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 is | 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 | typically also the option of ECN marking at an immediate | |||
(unsmoothed) shallow threshold to support use in data centres (see | (unsmoothed) shallow threshold to support use in data centres (see | |||
Sec.5.2.7 of the FQ-CoDel spec <xref target="RFC8290" format="defaul t"/>). In | <xref target="RFC8290" sectionFormat="of" section="5.2.7">the FQ-CoD el spec</xref>). In | |||
Linux, this has been modified so that the shallow threshold can be | Linux, this has been modified so that the shallow threshold can be | |||
solely applied to ECT(1) packets <xref target="FQ_CoDel_Thresh" form | solely applied to ECT(1) packets <xref target="FQ_CoDel_Thresh" form | |||
at="default"/>. Then, if there is a flow of non-ECN or | at="default"/>. Then, if there is a flow of Not-ECT or | |||
ECT(0) packets in the per-flow-queue, the Classic AQM | ECT(0) packets in the per-flow queue, the Classic AQM | |||
(e.g. CoDel) is applied; while if there is a flow of ECT(1) | (e.g., CoDel) is applied; whereas, if there is a flow of ECT(1) | |||
packets in the queue, the shallower (typically sub-millisecond) | packets in the queue, the shallower (typically sub-millisecond) | |||
threshold is applied. In addition, ECT(0) and not-ECT packets | threshold is applied. | |||
could potentially be classified into a separate flow-queue from | In addition, ECT(0) and Not-ECT packets | |||
could potentially be classified into a separate flow queue from | ||||
ECT(1) and CE packets to avoid them mixing if they share a common | ECT(1) and CE packets to avoid them mixing if they share a common | |||
flow-identifier (e.g. in a VPN).</li> | flow identifier (e.g., in a VPN).</li> | |||
<li> | <li> | |||
<t>Dual-queues, but per-flow AQMs: It should also be possible to | <t>Dual queues but per-flow AQMs: It should also be possible to | |||
use dual queues for isolation, but with per-flow marking to | use dual queues for isolation but with per-flow marking to | |||
control flow-rates (instead of the coupled per-queue marking of | control flow rates (instead of the coupled per-queue marking of | |||
the Dual Queue Coupled AQM). One of the two queues would be for | the Dual-Queue Coupled AQM). One of the two queues would be for | |||
isolating L4S packets, which would be classified by the ECN | isolating L4S packets, which would be classified by the ECN | |||
codepoint. Flow rates could be controlled by flow-specific | codepoint. Flow rates could be controlled by flow-specific | |||
marking. The policy goal of the marking could be to differentiate | marking. The policy goal of the marking could be to differentiate | |||
flow rates (e.g. <xref target="Nadas20" format="default"/>, which re | flow rates (e.g., <xref target="Nadas20" format="default"/>, which r | |||
quires | equires | |||
additional signalling of a per-flow 'value'), or to equalize | additional signalling of a per-flow 'value') or to equalize | |||
flow-rates (perhaps in a similar way to Approx Fair | flow rates (perhaps in a similar way to Approx Fair | |||
CoDel <xref target="AFCD" format="default"/>, <xref target="I-D.mort | CoDel <xref target="AFCD" format="default"/> <xref target="I-D.morto | |||
on-tsvwg-codel-approx-fair" format="default"/>, but with two queues | n-tsvwg-codel-approx-fair" format="default"/> but with two queues | |||
not one).</t> | not one).</t> | |||
<t>Note that whenever the term | <t>Note that, whenever the term | |||
'DualQ' is used loosely without saying whether marking is | 'DualQ' is used loosely without saying whether marking is | |||
per-queue or per-flow, it means a dual queue AQM with per-queue | per queue or per flow, it means a dual-queue AQM with per-queue | |||
marking.</t> | marking.</t> | |||
</li> | </li> | |||
</ol> | </ol> | |||
</section> | </section> | |||
<section anchor="l4sps_host_components" numbered="true" toc="default"> | <section anchor="l4sps_host_components" numbered="true" toc="default"> | |||
<name>Host Mechanisms</name> | <name>Host Mechanisms</name> | |||
<t>The L4S architecture includes two main mechanisms in the end host | <t>The L4S architecture includes two main mechanisms in the end host | |||
that we enumerate next:</t> | that we enumerate next:</t> | |||
<ol spacing="normal" type="a"><li> | <ol spacing="normal" type="a"><li> | |||
<t>Scalable Congestion Control at the sender: <xref target="l4s-arch _arch_overview" format="default"/> defines a scalable congestion | <t>Scalable congestion control at the sender: <xref target="l4s-arch _arch_overview" format="default"/> defines a Scalable congestion | |||
control as one where the average time from one congestion signal | control as one where the average time from one congestion signal | |||
to the next (the recovery time) remains invariant as the flow rate | to the next (the recovery time) remains invariant as flow rate | |||
scales, all other factors being equal. Data Center TCP is the most | scales, all other factors being equal. DCTCP is the most | |||
widely used example. It has been documented as an informational | widely used example. It has been documented as an informational | |||
record of the protocol currently in use in controlled | record of the protocol currently in use in controlled | |||
environments <xref target="RFC8257" format="default"/>. A draft list | environments <xref target="RFC8257" format="default"/>. A list of sa | |||
of safety | fety | |||
and performance improvements for a scalable congestion control to | and performance improvements for a Scalable congestion control to | |||
be usable on the public Internet has been drawn up (the so-called | be usable on the public Internet has been drawn up (see the so-calle | |||
'Prague L4S requirements' in Appendix A of <xref target="I-D.ietf-ts | d | |||
vwg-ecn-l4s-id" format="default"/>). The subset that involve | 'Prague L4S requirements' in <xref target="RFC9331" format="default" | |||
sectionFormat="of" section="A"/>). | ||||
The subset that involve | ||||
risk of harm to others have been captured as normative | risk of harm to others have been captured as normative | |||
requirements in Section 4 of <xref target="I-D.ietf-tsvwg-ecn-l4s-id " format="default"/>. TCP Prague <xref target="I-D.briscoe-iccrg-prague-congesti on-control" format="default"/> has been | requirements in <xref target="RFC9331" format="default" sectionForma t="of" section="4"/>. TCP Prague <xref target="I-D.briscoe-iccrg-prague-congesti on-control" format="default"/> has been | |||
implemented in Linux as a reference implementation to address | implemented in Linux as a reference implementation to address | |||
these requirements <xref target="PragueLinux" format="default"/>.</t > | these requirements <xref target="PragueLinux" format="default"/>.</t > | |||
<t>Transport protocols other than TCP use various | <t>Transport protocols other than TCP use various | |||
congestion controls that are designed to be friendly with Reno. | congestion controls that are designed to be friendly with Reno. | |||
Before they can use the L4S service, they will need to be updated | Before they 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 | to 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 <xref target="BBRv2" format | (e.g., QUIC), and the L4S ECN part of BBRv2 <xref target="BBRv2" for | |||
="default"/>, <xref target="I-D.cardwell-iccrg-bbr-congestion-control" format="d | mat="default"/> <xref target="I-D.cardwell-iccrg-bbr-congestion-control" format= | |||
efault"/> is a scalable | "default"/> 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 <xref target="RFC8298" format="default"/> has been | controller <xref target="RFC8298" format="default"/> has been | |||
implemented <xref target="SCReAM" format="default"/> for media trans | implemented <xref target="SCReAM-L4S" format="default"/> for media t | |||
ported | ransported | |||
over RTP.</t> | over RTP.</t> | |||
<t>Section 4.3 of the L4S ECN | <t> <xref target="RFC9331" format="default" sectionFormat="of" secti | |||
spec <xref target="I-D.ietf-tsvwg-ecn-l4s-id" format="default"/> def | on="4.3">the L4S ECN spec</xref> defines | |||
ines | Scalable congestion control in more detail and specifies the | |||
scalable congestion control in more detail, and specifies the | requirements that an L4S Scalable congestion control has to comply | |||
requirements that an L4S scalable congestion control has to comply | ||||
with.</t> | with.</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>The ECN feedback in some transport protocols is already | <t>The ECN feedback in some transport protocols is already | |||
sufficiently fine-grained for L4S (specifically DCCP <xref target="R | sufficiently fine-grained for L4S (specifically DCCP <xref target="R | |||
FC4340" format="default"/> and QUIC <xref target="RFC9000" format="default"/>). | FC4340" format="default"/> and QUIC <xref target="RFC9000" format="default"/>). | |||
But | But | |||
others either require update or are in the process of being | others either require updates or are in the process of being | |||
updated:</t> | updated:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>For the case of TCP, the feedback protocol for ECN embeds | <li>For the case of TCP, the feedback protocol for ECN embeds | |||
the assumption from Classic ECN <xref target="RFC3168" format="d efault"/> | the assumption from Classic ECN <xref target="RFC3168" format="d efault"/> | |||
that an ECN mark is equivalent to a drop, making it unusable | that an ECN mark is equivalent to a drop, making it unusable | |||
for a scalable TCP. Therefore, the implementation of TCP | for a Scalable TCP. Therefore, the implementation of TCP | |||
receivers will have to be upgraded <xref target="RFC7560" format | receivers will have to be upgraded <xref target="RFC7560" format | |||
="default"/>. Work to standardize and implement more | ="default"/>. | |||
Work to standardize and implement more | ||||
accurate ECN feedback for TCP (AccECN) is in | accurate ECN feedback for TCP (AccECN) is in | |||
progress <xref target="I-D.ietf-tcpm-accurate-ecn" format="defau lt"/>, | progress <xref target="I-D.ietf-tcpm-accurate-ecn" format="defau lt"/> | |||
<xref target="PragueLinux" format="default"/>.</li> | <xref target="PragueLinux" format="default"/>.</li> | |||
<li>ECN feedback was only roughly sketched in an appendix of | <li>ECN feedback was only roughly sketched in the appendix of | |||
the now obsoleted second specification of SCTP <xref target="RFC 4960" format="default"/>, while a fuller specification was proposed | the now obsoleted second specification of SCTP <xref target="RFC 4960" format="default"/>, while a fuller specification was proposed | |||
in a long-expired draft <xref target="I-D.stewart-tsvwg-sctpecn" format="default"/>. A new design would need | in a long-expired document <xref target="I-D.stewart-tsvwg-sctpe cn" format="default"/>. A new design would need | |||
to be implemented and deployed before SCTP could support | to be implemented and deployed before SCTP could support | |||
L4S.</li> | L4S.</li> | |||
<li>For RTP, sufficient ECN feedback was defined in <xref target=" | <li>For RTP, sufficient ECN feedback was defined in <xref target=" | |||
RFC6679" format="default"/>, but <xref target="RFC8888" format="default"/> defin | RFC6679" format="default"/>, but <xref target="RFC8888" format="default"/> defin | |||
es the | es the | |||
latest standards track improvements.</li> | latest Standards Track improvements.</li> | |||
</ul> | </ul> | |||
</li> | </li> | |||
</ol> | </ol> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="l4sps_rationale" numbered="true" toc="default"> | <section anchor="l4sps_rationale" numbered="true" toc="default"> | |||
<name>Rationale</name> | <name>Rationale</name> | |||
<t/> | ||||
<section anchor="l4sps_why_primary_components" numbered="true" toc="defaul t"> | <section anchor="l4sps_why_primary_components" numbered="true" toc="defaul t"> | |||
<name>Why These Primary Components?</name> | <name>Why These Primary Components?</name> | |||
<dl newline="false" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
<dt>Explicit congestion signalling (protocol):</dt> | <dt>Explicit congestion signalling (protocol):</dt> | |||
<dd> | <dd> | |||
<t>Explicit | <t>Explicit | |||
congestion signalling is a key part of the L4S approach. In | congestion signalling is a key part of the L4S approach. In | |||
contrast, use of drop as a congestion signal creates a tension | contrast, use of drop as a congestion signal creates tension | |||
because drop is both an impairment (less would be better) and a | because drop is both an impairment (less would be better) and a | |||
useful signal (more would be better):</t> | useful signal (more would be better):</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>Explicit congestion signals can be used many times per | <li>Explicit congestion signals can be used many times per | |||
round trip, to keep tight control, without any impairment. | round trip to keep tight control without any impairment. | |||
Under heavy load, even more explicit signals can be applied, | Under heavy load, even more explicit signals can be applied | |||
so that the queue can be kept short whatever the load. In | so that the queue can be kept short whatever the load. In | |||
contrast, Classic AQMs have to introduce very high packet drop | contrast, Classic AQMs have to introduce very high packet drop | |||
at high load to keep the queue short. By using ECN, an L4S | at high load to keep the queue short. By using ECN, an L4S | |||
congestion control's sawtooth reduction can be smaller and | congestion control's sawtooth reduction can be smaller and | |||
therefore return to the operating point more often, without | therefore return to the operating point more often, without | |||
worrying that more sawteeth will cause more signals. The | worrying that more sawteeth will cause more signals. The | |||
consequent smaller amplitude sawteeth fit between an empty | consequent smaller amplitude sawteeth fit between an empty | |||
queue and a very shallow marking threshold (~1 ms in the | queue and a very shallow marking threshold (~1 ms in the | |||
public Internet), so queue delay variation can be very low, | public Internet), so queue delay variation can be very low, | |||
without risk of under-utilization.</li> | without risk of underutilization.</li> | |||
<li>Explicit congestion signals can be emitted immediately to | <li>Explicit congestion signals can be emitted immediately to | |||
track fluctuations of the queue. L4S shifts smoothing from the | track fluctuations of the queue. L4S shifts smoothing from the | |||
network to the host. The network doesn't know the round trip | network to the host. The network doesn't know the round-trip | |||
times of any of the flows. So if the network is responsible | times (RTTs) of any of the flows. So if the network is responsib | |||
le | ||||
for smoothing (as in the Classic approach), it has to assume a | for smoothing (as in the Classic approach), it has to assume a | |||
worst case RTT, otherwise long RTT flows would become | worst case RTT, otherwise long RTT flows would become | |||
unstable. This delays Classic congestion signals by 100-200 | unstable. This delays Classic congestion signals by 100-200 | |||
ms. In contrast, each host knows its own round trip time. So, | ms. In contrast, each host knows its own RTT. So, | |||
in the L4S approach, the host can smooth each flow over its | in the L4S approach, the host can smooth each flow over its | |||
own RTT, introducing no more smoothing delay than strictly | own RTT, introducing no more smoothing delay than strictly | |||
necessary (usually only a few milliseconds). A host can also | necessary (usually only a few milliseconds). A host can also | |||
choose not to introduce any smoothing delay if appropriate, | choose not to introduce any smoothing delay if appropriate, | |||
e.g. during flow start-up.</li> | e.g., during flow start-up.</li> | |||
</ul> | </ul> | |||
<t>Neither of the above are feasible if explicit congestion | <t>Neither of the above are feasible if explicit congestion | |||
signalling has to be considered 'equivalent to drop' (as was | signalling has to be considered 'equivalent to drop' (as was | |||
required with Classic ECN <xref target="RFC3168" format="default"/>) , because | required with Classic ECN <xref target="RFC3168" format="default"/>) , because | |||
drop is an impairment as well as a signal. So drop cannot be | drop is an impairment as well as a signal. So drop cannot be | |||
excessively frequent, and drop cannot be immediate, otherwise too | excessively frequent, and drop cannot be immediate; otherwise, too | |||
many drops would turn out to have been due to only a transient | many drops would turn out to have been due to only a transient | |||
fluctuation in the queue that would not have warranted dropping a | fluctuation in the queue that would not have warranted dropping a | |||
packet in hindsight. Therefore, in an L4S AQM, the L4S queue uses | packet in hindsight. Therefore, in an L4S AQM, the L4S queue uses | |||
a new L4S variant of ECN that is not equivalent to drop (see | a new L4S variant of ECN that is not equivalent to drop (see | |||
section 5.2 of the L4S ECN spec <xref target="I-D.ietf-tsvwg-ecn-l4s | <xref target="RFC9331" format="default" sectionFormat="of" section=" | |||
-id" format="default"/>), while the Classic queue | 5.2">the L4S ECN spec</xref>), while the Classic queue | |||
uses either Classic ECN <xref target="RFC3168" format="default"/> or | uses either Classic ECN <xref target="RFC3168" format="default"/> or | |||
drop, | drop, | |||
which are equivalent to each other.</t> | which are still equivalent to each other.</t> | |||
<t>Before | <t>Before | |||
Classic ECN was standardized, there were various proposals to give | Classic ECN was standardized, there were various proposals to give | |||
an ECN mark a different meaning from drop. However, there was no | an ECN mark a different meaning from drop. However, there was no | |||
particular reason to agree on any one of the alternative meanings, | particular reason to agree on any one of the alternative meanings, | |||
so 'equivalent to drop' was the only compromise that could be | so 'equivalent to drop' was the only compromise that could be | |||
reached. RFC 3168 contains a statement that:</t> | reached. <xref target="RFC3168" format="default"/> contains a statem | |||
<ul empty="true" spacing="normal"> | ent that:</t> | |||
<li>"An environment where all end nodes were ECN-Capable could | <ul empty="true"> | |||
allow new criteria to be developed for setting the CE | <li><t indent="1">An environment where all end nodes were | |||
codepoint, and new congestion control mechanisms for end-node | ECN-Capable could allow new criteria to be developed for | |||
reaction to CE packets. However, this is a research issue, and | setting the CE codepoint, and new congestion control | |||
as such is not addressed in this document."</li> | mechanisms for end-node reaction to CE packets. However, this | |||
</ul> | is a research issue, and as such is not addressed in this | |||
document.</t></li></ul> | ||||
</dd> | </dd> | |||
<dt>Latency isolation (network):</dt> | <dt>Latency isolation (network):</dt> | |||
<dd>L4S congestion controls | <dd>L4S congestion controls | |||
keep queue delay low whereas Classic congestion controls need a | keep queue delay low, whereas Classic congestion controls need a | |||
queue of the order of the RTT to avoid under-utilization. One | queue of the order of the RTT to avoid underutilization. One | |||
queue cannot have two lengths, therefore L4S traffic needs to be | queue cannot have two lengths; therefore, L4S traffic needs to be | |||
isolated in a separate queue (e.g. DualQ) or queues | isolated in a separate queue (e.g., DualQ) or queues | |||
(e.g. FQ).</dd> | (e.g., FQ).</dd> | |||
<dt>Coupled congestion notification:</dt> | <dt>Coupled congestion notification:</dt> | |||
<dd>Coupling the | <dd>Coupling the | |||
congestion notification between two queues as in the DualQ Coupled | congestion notification between two queues as in the DualQ Coupled | |||
AQM is not necessarily essential, but it is a simple way to allow | AQM is not necessarily essential, but it is a simple way to allow | |||
senders to determine their rate, packet by packet, rather than be | senders to determine their rate packet by packet, rather than be | |||
overridden by a network scheduler. An alternative is for a network | overridden by a network scheduler. An alternative is for a network | |||
scheduler to control the rate of each application flow (see | scheduler to control the rate of each application flow (see the | |||
discussion in <xref target="l4sps_why-not" format="default"/>).</dd> | discussion in <xref target="l4sps_why-not" format="default"/>).</dd> | |||
<dt>L4S packet identifier (protocol):</dt> | <dt>L4S packet identifier (protocol):</dt> | |||
<dd>Once there are at | <dd>Once there are at | |||
least two treatments in the network, hosts need an identifier at | least two treatments in the network, hosts need an identifier at | |||
the IP layer to distinguish which treatment they intend to | the IP layer to distinguish which treatment they intend to | |||
use.</dd> | use.</dd> | |||
<dt>Scalable congestion notification:</dt> | <dt>Scalable congestion notification:</dt> | |||
<dd>A scalable | <dd>A Scalable | |||
congestion control in the host keeps the signalling frequency from | congestion control in the host keeps the signalling frequency from | |||
the network high whatever the flow rate, so that queue delay | the network high, whatever the flow rate, so that queue delay | |||
variations can be small when conditions are stable, and rate can | variations can be small when conditions are stable, and rate can | |||
track variations in available capacity as rapidly as possible | track variations in available capacity as rapidly as possible | |||
otherwise.</dd> | otherwise.</dd> | |||
<dt>Low loss:</dt> | <dt>Low loss:</dt> | |||
<dd>Latency is not the only concern of L4S. | <dd>Latency is not the only concern of L4S. | |||
The 'Low Loss' part of the name denotes that L4S generally | The 'Low Loss' part of the name denotes that L4S generally | |||
achieves zero congestion loss due to its use of ECN. Otherwise, | achieves zero congestion loss due to its use of ECN. Otherwise, | |||
loss would itself cause delay, particularly for short flows, due | loss would itself cause delay, particularly for short flows, due | |||
to retransmission delay <xref target="RFC2884" format="default"/>.</ dd> | to retransmission delay <xref target="RFC2884" format="default"/>.</ dd> | |||
<dt>Scalable throughput:</dt> | <dt>Scalable throughput:</dt> | |||
<dd> | <dd> | |||
<t>The "Scalable throughput" part | <t>The 'Scalable throughput' part | |||
of the name denotes that the per-flow throughput of scalable | of the name denotes that the per-flow throughput of Scalable | |||
congestion controls should scale indefinitely, avoiding the | congestion controls should scale indefinitely, avoiding the | |||
imminent scaling problems with Reno-friendly congestion control | imminent scaling problems with Reno-friendly congestion control | |||
algorithms <xref target="RFC3649" format="default"/>. It was known w hen TCP | algorithms <xref target="RFC3649" format="default"/>. It was known w hen TCP | |||
congestion avoidance was first developed in 1988 that it would not | congestion avoidance was first developed in 1988 that it would not | |||
scale to high bandwidth-delay products (see footnote 6 in <xref targ et="TCP-CA" format="default"/>). Today, regular broadband flow rates over WAN | scale to high bandwidth-delay products (see footnote 6 in <xref targ et="TCP-CA" format="default"/>). Today, regular broadband flow rates over WAN | |||
distances are already beyond the scaling range of Classic Reno | distances are already beyond the scaling range of Classic Reno | |||
congestion control. So `less unscalable' Cubic <xref target="RFC8312 " format="default"/> and Compound <xref target="I-D.sridharan-tcpm-ctcp" format= "default"/> variants of TCP have been | congestion control. So 'less unscalable' CUBIC <xref target="RFC8312 " format="default"/> and Compound <xref target="I-D.sridharan-tcpm-ctcp" format= "default"/> variants of TCP have been | |||
successfully deployed. However, these are now approaching their | successfully deployed. However, these are now approaching their | |||
scaling limits. </t> | scaling limits. </t> | |||
<t>For instance, we will | <t>For instance, we will | |||
consider a scenario with a maximum RTT of 30 ms at the peak | consider a scenario with a maximum RTT of 30 ms at the peak | |||
of each sawtooth. As Reno packet rate scales 8x from 1,250 to | of each sawtooth. As Reno packet rate scales 8 times from 1,250 to | |||
10,000 packet/s (from 15 to 120 Mb/s with 1500 B | 10,000 packet/s (from 15 to 120 Mb/s with 1500 B | |||
packets), the time to recover from a congestion event rises | packets), the time to recover from a congestion event rises | |||
proportionately by 8x as well, from 422 ms to 3.38 s. It | proportionately by 8 times as well, from 422 ms to 3.38 s. It | |||
is clearly problematic for a congestion control to take multiple | is clearly problematic for a congestion control to take multiple | |||
seconds to recover from each congestion event. Cubic <xref target="R FC8312" format="default"/> was developed to be less unscalable, but it is | seconds to recover from each congestion event. CUBIC <xref target="R FC8312" format="default"/> was developed to be less unscalable, but it is | |||
approaching its scaling limit; with the same max RTT of | approaching its scaling limit; with the same max RTT of | |||
30 ms, at 120 Mb/s Cubic is still fully in its | 30 ms, at 120 Mb/s, CUBIC is still fully in its | |||
Reno-friendly mode, so it takes about 4.3 s to recover. | Reno-friendly mode, so it takes about 4.3 s to recover. | |||
However, once the flow rate scales by 8x again to 960 Mb/s it | However, once flow rate scales by 8 times again to 960 Mb/s it | |||
enters true Cubic mode, with a recovery time of 12.2 s. From | enters true CUBIC mode, with a recovery time of 12.2 s. From | |||
then on, each further scaling by 8x doubles Cubic's recovery time | then on, each further scaling by 8 times doubles CUBIC's recovery ti | |||
(because the cube root of 8 is 2), e.g. at 7.68 Gb/s the | me | |||
recovery time is 24.3 s. In contrast, a scalable congestion | (because the cube root of 8 is 2), e.g., at 7.68 Gb/s, the | |||
control like DCTCP or TCP Prague induces 2 congestion signals per | recovery time is 24.3 s. In contrast, a Scalable congestion | |||
control like DCTCP or 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.</t> | keeping dynamic control very tight.</t> | |||
<t>For a | <t>For a | |||
feel of where the global average lone-flow download sits on this | feel of where the global average lone-flow download sits on this | |||
scale at the time of writing (2021), according to <xref target="BDPd | scale at the time of writing (2021), according to <xref target="BDPd | |||
ata" format="default"/> globally averaged fixed access capacity was 103 | ata" format="default"/>, the global average fixed access capacity was 103 | |||
Mb/s in 2020 and averaged base RTT to a CDN was 25-34ms in 2019. | Mb/s in 2020 and the average base RTT to a CDN was 25 to 34 ms in 20 | |||
19. | ||||
Averaging of per-country data was weighted by Internet user | Averaging of per-country data was weighted by Internet user | |||
population (data collected globally is necessarily of variable | population (data collected globally is necessarily of variable | |||
quality, but the paper does double-check that the outcome compares | quality, but the paper does double-check that the outcome compares | |||
well against a second source). So a lone CUBIC flow would at best | well against a second source). So a lone CUBIC flow would at best | |||
take about 200 round trips (5 s) to recover from each of its | take about 200 round trips (5 s) to recover from each of its | |||
sawtooth reductions, if the flow even lasted that long. This is | sawtooth reductions, if the flow even lasted that long. This is | |||
described as 'at best' because it assumes everyone uses an AQM, | described as 'at best' because it assumes everyone uses an AQM, | |||
whereas in reality most users still have a (probably bloated) | whereas in reality, most users still have a (probably bloated) | |||
tail-drop buffer. In the tail-drop case, likely average recovery | tail-drop buffer. | |||
time would be at least 4x 5 s, if not more, because RTT under load | In the tail-drop case, the likely average recovery | |||
would be at least double that of an AQM, and recovery time depends | time would be at least 4 times 5 s, if not more, because RTT under l | |||
oad | ||||
would be at least double that of an AQM, and the recovery time of Re | ||||
no-friendly flows depends | ||||
on the square of RTT.</t> | on the square of RTT.</t> | |||
<t>Although work on | <t>Although work on | |||
scaling congestion controls tends to start with TCP as the | scaling congestion controls tends to start with TCP as the | |||
transport, the above is not intended to exclude other transports | transport, the above is not intended to exclude other transports | |||
(e.g. SCTP, QUIC) or less elastic algorithms | (e.g., SCTP and QUIC) or less elastic algorithms | |||
(e.g. RMCAT), which all tend to adopt the same or similar | (e.g., RMCAT), which all tend to adopt the same or similar | |||
developments.</t> | developments.</t> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
<section anchor="l4sps_why-not" numbered="true" toc="default"> | <section anchor="l4sps_why-not" numbered="true" toc="default"> | |||
<name>What L4S adds to Existing Approaches</name> | <name>What L4S Adds to Existing Approaches</name> | |||
<t>All the following approaches address some part of the same problem | <t>All the following approaches address some part of the same problem | |||
space as L4S. In each case, it is shown that L4S complements them or | space as L4S. In each case, it is shown that L4S complements them or | |||
improves on them, rather than being a mutually exclusive | improves on them, rather than being a mutually exclusive | |||
alternative:</t> | alternative:</t> | |||
<dl newline="false" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
<dt>Diffserv:</dt> | <dt>Diffserv:</dt> | |||
<dd> | <dd> | |||
<t>Diffserv addresses the problem of | <t>Diffserv addresses the problem of | |||
bandwidth apportionment for important traffic as well as queuing | bandwidth apportionment for important traffic as well as queuing | |||
latency for delay-sensitive traffic. Of these, L4S solely | latency for delay-sensitive traffic. Of these, L4S solely | |||
addresses the problem of queuing latency. Diffserv will still be | addresses the problem of queuing latency. Diffserv will still be | |||
necessary where important traffic requires priority (e.g. for | necessary where important traffic requires priority (e.g., for | |||
commercial reasons, or for protection of critical infrastructure | commercial reasons or for protection of critical infrastructure | |||
traffic) - see <xref target="I-D.briscoe-tsvwg-l4s-diffserv" format= | traffic) -- see <xref target="I-D.briscoe-tsvwg-l4s-diffserv" format | |||
"default"/>. | ="default"/>. | |||
Nonetheless, the L4S approach can provide low latency for all | Nonetheless, the L4S approach can provide low latency for all | |||
traffic within each Diffserv class (including the case where there | traffic within each Diffserv class (including the case where there | |||
is only the one default Diffserv class).</t> | is only the one default Diffserv class).</t> | |||
<t>Also, Diffserv can only provide a latency benefit | <t>Also, Diffserv can only provide a latency benefit | |||
if a small subset of the traffic on a bottleneck link requests low | if a small subset of the traffic on a bottleneck link requests low | |||
latency. As already explained, it has no effect when all the | latency. As already explained, it has no effect when all the | |||
applications in use at one time at a single site (home, small | applications in use at one time at a single site (e.g., a home, smal | |||
business or mobile device) require low latency. In contrast, | l | |||
business, or mobile device) require low latency. In contrast, | ||||
because L4S works for all traffic, it needs none of the management | because L4S works for all traffic, it needs none of the management | |||
baggage (traffic policing, traffic contracts) associated with | baggage (traffic policing or traffic contracts) associated with | |||
favouring some packets over others. This lack of management | favouring some packets over others. This lack of management | |||
baggage ought to give L4S a better chance of end-to-end | baggage ought to give L4S a better chance of end-to-end | |||
deployment.</t> | deployment.</t> | |||
<t>In particular, because networks | ||||
tend not to trust end systems to identify which packets should be | <t>In particular, if networks do not trust end systems to identify w | |||
favoured over others, where networks assign packets to Diffserv | hich | |||
classes they tend to use packet inspection of application flow | packets should be favoured, they assign packets to Diffserv classes | |||
identifiers or deeper inspection of application signatures. Thus, | themselves. However, the techniques available to such networks, like | |||
nowadays, Diffserv doesn't always sit well with encryption of the | inspection of flow identifiers or deeper inspection of application | |||
layers above IP <xref target="RFC8404" format="default"/>. So users | signatures, do not always sit well with encryption of the layers abo | |||
have to choose | ve | |||
between privacy and QoS.</t> | IP <xref target="RFC8404" format="default"/>. In these cases, users | |||
can have either privacy or Quality of Service (QoS), but not both.</ | ||||
t> | ||||
<t>As with Diffserv, | <t>As with Diffserv, | |||
the L4S identifier is in the IP header. But, in contrast to | the L4S identifier is in the IP header. But, in contrast to | |||
Diffserv, the L4S identifier does not convey a want or a need for | Diffserv, the L4S identifier does not convey a want or a need for | |||
a certain level of quality. Rather, it promises a certain | a certain level of quality. Rather, it promises a certain | |||
behaviour (scalable congestion response), which networks can | behaviour (Scalable congestion response), which networks can | |||
objectively verify if they need to. This is because low delay | objectively verify if they need to. This is because low delay | |||
depends on collective host behaviour, whereas bandwidth priority | depends on collective host behaviour, whereas bandwidth priority | |||
depends on network behaviour.</t> | depends on network behaviour.</t> | |||
</dd> | </dd> | |||
<dt>State-of-the-art AQMs:</dt> | <dt>State-of-the-art AQMs:</dt> | |||
<dd>AQMs such as PIE and FQ-CoDel | <dd>AQMs for Classic traffic, such as PIE and FQ-CoDel, | |||
give a significant reduction in queuing delay relative to no AQM | give a significant reduction in queuing delay relative to no AQM | |||
at all. L4S is intended to complement these AQMs, and should not | at all. L4S is intended to complement these AQMs and should not | |||
distract from the need to deploy them as widely as possible. | distract from the need to deploy them as widely as possible. | |||
Nonetheless, AQMs alone cannot reduce queuing delay too far | Nonetheless, AQMs alone cannot reduce queuing delay too far | |||
without significantly reducing link utilization, because the root | without significantly reducing link utilization, because the root | |||
cause of the problem is on the host - where Classic congestion | cause of the problem is on the host -- where Classic congestion | |||
controls use large saw-toothing rate variations. The L4S approach | controls use large sawtoothing rate variations. The L4S approach | |||
resolves this tension between delay and utilization by enabling | resolves this tension between delay and utilization by enabling | |||
hosts to minimize the amplitude of their sawteeth. A single-queue | hosts to minimize the amplitude of their sawteeth. A single-queue | |||
Classic AQM is not sufficient to allow hosts to use small sawteeth | Classic AQM is not sufficient to allow hosts to use small sawteeth | |||
for two reasons: i) smaller sawteeth would not get lower delay in | for two reasons: i) smaller sawteeth would not get lower delay in | |||
an AQM designed for larger amplitude Classic sawteeth, because a | an AQM designed for larger amplitude Classic sawteeth, because a | |||
queue can only have one length at a time; and ii) much smaller | queue can only have one length at a time and ii) much smaller | |||
sawteeth implies much more frequent sawteeth, so L4S flows would | sawteeth implies much more frequent sawteeth, so L4S flows would | |||
drive a Classic AQM into a high level of ECN-marking, which would | drive a Classic AQM into a high level of ECN-marking, which would | |||
appear as heavy congestion to Classic flows, which in turn would | appear as heavy congestion to Classic flows, which in turn would | |||
greatly reduce their rate as a result (see <xref target="l4sarch_sec _classic-ecn-neck" format="default"/>).</dd> | greatly reduce their rate as a result (see <xref target="l4sarch_sec _classic-ecn-neck" format="default"/>).</dd> | |||
<dt>Per-flow queuing or marking:</dt> | <dt>Per-flow queuing or marking:</dt> | |||
<dd> | <dd> | |||
<t>Similarly, per-flow | <t>Similarly, per-flow | |||
approaches such as FQ-CoDel or Approx Fair CoDel <xref target="AFCD" | approaches, such as FQ-CoDel or Approx Fair CoDel <xref target="AFCD | |||
format="default"/> are not incompatible with the L4S approach. | " format="default"/>, are not incompatible with the L4S approach. | |||
However, per-flow queuing alone is not enough - it only isolates | However, per-flow queuing alone is not enough -- it only isolates | |||
the queuing of one flow from others; not from itself. Per-flow | the queuing of one flow from others, not from itself. Per-flow | |||
implementations need to have support for scalable congestion | implementations need to have support for Scalable congestion | |||
control added, which has already been done for FQ-CoDel in Linux | control added, which has already been done for FQ-CoDel in Linux | |||
(see Sec.5.2.7 of <xref target="RFC8290" format="default"/> and <xre | (see <xref target="RFC8290" sectionFormat="of" section="5.2.7"/> and | |||
f target="FQ_CoDel_Thresh" format="default"/>). Without this simple modification | <xref target="FQ_CoDel_Thresh" format="default"/>). Without this simple modific | |||
, | ation, | |||
per-flow AQMs like FQ-CoDel would still not be able to support | per-flow AQMs, like FQ-CoDel, would still not be able to support | |||
applications that need both very low delay and high bandwidth, | applications that need both very low delay and high bandwidth, | |||
e.g. video-based control of remote procedures, or interactive | e.g., video-based control of remote procedures or interactive | |||
cloud-based video (see Note <xref format="counter" target="l4sarch_n | cloud-based video (see Note <xref format="counter" target="l4sarch_n | |||
ote_app_shuffle"/> below).</t> | ote_app_shuffle"/> below).</t> | |||
<t>Although per-flow techniques are not incompatible | <t>Although per-flow techniques are not incompatible | |||
with L4S, it is important to have the DualQ alternative. This is | with L4S, it is important to have the DualQ alternative. This is | |||
because handling end-to-end (layer 4) flows in the network (layer | because handling end-to-end (layer 4) flows in the network (layer | |||
3 or 2) precludes some important end-to-end functions. For | 3 or 2) precludes some important end-to-end functions. For | |||
instance:</t> | instance:</t> | |||
<ol spacing="normal" type="a"><li> | <ol spacing="normal" type="A"><li> | |||
<t>Per-flow forms of L4S like FQ-CoDel are incompatible with | <t>Per-flow forms of L4S, like FQ-CoDel, are incompatible with | |||
full end-to-end encryption of transport layer identifiers for | full end-to-end encryption of transport layer identifiers for | |||
privacy and confidentiality (e.g. IPSec or encrypted VPN | privacy and confidentiality (e.g., IPsec or encrypted VPN | |||
tunnels, as opposed to DTLS over UDP), because they require | tunnels, as opposed to DTLS over UDP), because they require | |||
packet inspection to access the end-to-end transport flow | packet inspection to access the end-to-end transport flow | |||
identifiers. </t> | identifiers. </t> | |||
<t>In contrast, the DualQ | <t>In contrast, the DualQ | |||
form of L4S requires no deeper inspection than the IP layer. | form of L4S requires no deeper inspection than the IP layer. | |||
So, as long as operators take the DualQ approach, their users | So as long as operators take the DualQ approach, their users | |||
can have both very low queuing delay and full end-to-end | can have both very low queuing delay and full end-to-end | |||
encryption <xref target="RFC8404" format="default"/>.</t> | encryption <xref target="RFC8404" format="default"/>.</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>With per-flow forms of L4S, the network takes over control | <t>With per-flow forms of L4S, the network takes over control of | |||
of the relative rates of each application flow. Some see it as | the relative rates of each application flow. Some see it as | |||
an advantage that the network will prevent some flows running | an advantage that the network will prevent some flows running | |||
faster than others. Others consider it an inherent part of the | faster than others. Others consider it an inherent part of the | |||
Internet's appeal that applications can control their rate | Internet's appeal that applications can control their rate | |||
while taking account of the needs of others via congestion | while taking account of the needs of others via congestion | |||
signals. They maintain that this has allowed applications with | signals. | |||
interesting rate behaviours to evolve, for instance, variable | They maintain that this has allowed applications with | |||
bit-rate video that varies around an equal share rather than | interesting rate behaviours to evolve, for instance: i) a variab | |||
being forced to remain equal at every instant, or e2e | le | |||
scavenger behaviours <xref target="RFC6817" format="default"/> t | bit-rate video that varies around an equal share, rather than | |||
hat use | being forced to remain equal at every instant or ii) end-to-end | |||
less than an equal share of capacity <xref target="LEDBAT_AQM" f | scavenger behaviours <xref target="RFC6817" format="default"/> t | |||
ormat="default"/>.</t> | hat use | |||
less than an equal share of capacity <xref target="LEDBAT_AQM" f | ||||
ormat="default"/>.</t> | ||||
<t>The L4S | <t>The L4S | |||
architecture does not require the IETF to commit to one | architecture does not require the IETF to commit to one | |||
approach over the other, because it supports both, so that the | approach over the other, because it supports both so that the | |||
'market' can decide. Nonetheless, in the spirit of 'Do one | 'market' can decide. Nonetheless, in the spirit of 'Do one | |||
thing and do it well' <xref target="McIlroy78" format="default"/ >, the | thing and do it well' <xref target="McIlroy78" format="default"/ >, the | |||
DualQ option provides low delay without prejudging the issue | DualQ option provides low delay without prejudging the issue | |||
of flow-rate control. Then, flow rate policing can be added | of flow-rate control. Then, flow rate policing can be added | |||
separately if desired. This allows application control up to a | separately if desired. In contrast to scheduling, a policer woul | |||
point, but the network can still choose to set the point at | d allow application control up to a | |||
which it intervenes to prevent one flow completely starving | point, but the network would still be able to set the point at | |||
which it intervened to prevent one flow completely starving | ||||
another.</t> | another.</t> | |||
</li> | </li> | |||
<!-- <t>fq prevents any one flow from consuming mor | ||||
e than 1/N of | ||||
the capacity at any instant, where N is the number of flows. | ||||
This is fine if all flows are elastic, but it does not sit | ||||
well with a variable bit rate real-time multimedia flow, which | ||||
requires wriggle room to sometimes take more and other times | ||||
less than a 1/N share.<vspace blankLines="1"/>It might seem | ||||
that an fq scheduler offers the benefit that it prevents | ||||
individual flows from hogging all the bandwidth. However, L4S | ||||
has been deliberately designed so that policing of individual | ||||
flows can be added as a policy choice, rather than requiring | ||||
one specific policy choice as the mechanism itself. {ToDo: | ||||
refer to paper on FQ+LEDBAT rather than explain it here - but | ||||
we might end up removing this whole bullet} On the other other | ||||
end of the spectrum, fq also prevent a flow from using less | ||||
than 1/N (otherwise the flow would equally underutilize the | ||||
link when N=1). In a shared queue, all flows get equal | ||||
congestion signal feedback, which allows | ||||
less-than-best-effort-flows to use a lower rate to probability | ||||
ratio than Reno-friendly traffic. With fq, the capacity is | ||||
split by N equal parts, and congestion feedback is only valid | ||||
for the 1/N capacity partition ocupied by the less-than | ||||
best-effort flow as if the flow is alone (N=1) and would then | ||||
try to fully utilize the available capacity.{/ToDo} A | ||||
scheduler (like fq) has to decide packet-by-packet which flow | ||||
to schedule without knowing application intent. Whereas a | ||||
separate policing function can be configured less strictly, so | ||||
that senders can still control the instantaneous rate of each | ||||
flow dependent on the needs of each application (e.g. variable | ||||
rate video), giving more wriggle-room before a flow is deemed | ||||
non-compliant. Also policing of queuing and of flow-rates can | ||||
be applied independently.</t> | ||||
</ol> | </ol> | |||
<t>Note: </t> | <t>Note: </t> | |||
<ol spacing="normal" type="1"><li anchor="l4sarch_note_app_shuffle"> | <ol spacing="normal" type="1"> | |||
It might seem that | <li anchor="l4sarch_note_app_shuffle">It might seem that | |||
self-inflicted queuing delay within a per-flow queue should | self-inflicted queuing delay within a per-flow queue should | |||
not be counted, because if the delay wasn't in the network it | not be counted, because if the delay wasn't in the network, it | |||
would just shift to the sender. However, modern adaptive | would just shift to the sender. However, modern adaptive | |||
applications, e.g. HTTP/2 <xref target="RFC9113" format="default "/> | applications, e.g., HTTP/2 <xref target="RFC9113" format="defaul t"/> | |||
or some interactive media applications (see <xref target="l4sarc h_apps" format="default"/>), can keep low latency objects at the | or some interactive media applications (see <xref target="l4sarc h_apps" format="default"/>), can keep low latency objects at the | |||
front of their local send queue by shuffling priorities of | front of their local send queue by shuffling priorities of | |||
other objects dependent on the progress of other transfers | other objects dependent on the progress of other transfers | |||
(for example see <xref target="lowat" format="default"/>). They cannot shuffle | (for example, see <xref target="lowat" format="default"/>). They cannot shuffle | |||
objects once they have released them into the network.</li> | objects once they have released them into the network.</li> | |||
</ol> | </ol> | |||
</dd> | </dd> | |||
<dt>Alternative Back-off ECN (ABE):</dt> | <dt>Alternative Back-off ECN (ABE):</dt> | |||
<dd>Here again, L4S is | <dd>Here again, L4S is | |||
not an alternative to ABE but a complement that introduces much | not an alternative to ABE but a complement that introduces much | |||
lower queuing delay. ABE <xref target="RFC8511" format="default"/> a lters the | lower queuing delay. ABE <xref target="RFC8511" format="default"/> a lters the | |||
host behaviour in response to ECN marking to utilize a link better | host behaviour in response to ECN marking to utilize a link better | |||
and give ECN flows faster throughput. It uses ECT(0) and assumes | and give ECN flows faster throughput. It uses ECT(0) and assumes | |||
the network still treats ECN and drop the same. Therefore, ABE | the network still treats ECN and drop the same. Therefore, ABE | |||
exploits any lower queuing delay that AQMs can provide. But, as | exploits any lower queuing delay that AQMs can provide. But, as | |||
explained above, AQMs still cannot reduce queuing delay too far | explained above, AQMs still cannot reduce queuing delay too much | |||
without losing link utilization (to allow for other, non-ABE, | without losing link utilization (to allow for other, non-ABE, | |||
flows).</dd> | flows).</dd> | |||
<dt>BBR:</dt> | <dt>BBR:</dt> | |||
<dd> | <dd> | |||
<t>Bottleneck Bandwidth and Round-trip propagation | <t>Bottleneck Bandwidth and Round-trip propagation | |||
time (BBR <xref target="I-D.cardwell-iccrg-bbr-congestion-control" f ormat="default"/>) controls | time (BBR) <xref target="I-D.cardwell-iccrg-bbr-congestion-control" format="default"/> controls | |||
queuing delay end-to-end without needing any special logic in the | queuing 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 | network, such as an AQM. So it works pretty much on any path. BBR | |||
keeps queuing delay reasonably low, but perhaps not quite as low | keeps queuing delay reasonably low, but perhaps not quite as low | |||
as with state-of-the-art AQMs such as PIE or FQ-CoDel, and | as with state-of-the-art AQMs, such as PIE or FQ-CoDel, and | |||
certainly nowhere near as low as with L4S. Queuing delay is also | certainly nowhere near as low as with L4S. Queuing delay is also | |||
not consistently low, due to BBR's regular bandwidth probing | not consistently low, due to BBR's regular bandwidth probing | |||
spikes and its aggressive flow start-up phase.</t> | spikes and its aggressive flow start-up phase.</t> | |||
<t>L4S complements BBR. Indeed, BBRv2 can use L4S ECN | <t>L4S complements BBR. Indeed, BBRv2 can use L4S ECN | |||
where available and a scalable L4S congestion control behaviour in | where available and a Scalable L4S congestion control behaviour in | |||
response to any ECN signalling from the path <xref target="BBRv2" fo | response to any ECN signalling from the path <xref target="BBRv2" fo | |||
rmat="default"/>. The L4S ECN signal complements the delay based | rmat="default"/>. The L4S ECN signal complements the delay-based | |||
congestion control aspects of BBR with an explicit indication that | congestion control aspects of BBR with an explicit indication that | |||
hosts can use, both to converge on a fair rate and to keep below a | hosts can use, both to converge on a fair rate and to keep below a | |||
shallow queue target set by the network. Without L4S ECN, both | shallow queue target set by the network. Without L4S ECN, both | |||
these aspects need to be assumed or estimated.</t> | these aspects need to be assumed or estimated.</t> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="l4sarch_applicability" numbered="true" toc="default"> | <section anchor="l4sarch_applicability" numbered="true" toc="default"> | |||
<name>Applicability</name> | <name>Applicability</name> | |||
<section anchor="l4sarch_apps" numbered="true" toc="default"> | <section anchor="l4sarch_apps" numbered="true" toc="default"> | |||
<name>Applications</name> | <name>Applications</name> | |||
<t>A transport layer that solves the current latency issues will | <t>A transport layer that solves the current latency issues will | |||
provide new service, product and application opportunities.</t> | provide new service, product, and application opportunities.</t> | |||
<t>With the L4S approach, the following existing applications also | <t>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: | |||
</t> | </t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>Gaming, including cloud based gaming;</li> | <li>gaming, including cloud-based gaming;</li> | |||
<li>VoIP;</li> | <li>VoIP;</li> | |||
<li>Video conferencing;</li> | <li>video conferencing;</li> | |||
<li>Web browsing;</li> | <li>web browsing;</li> | |||
<li>(Adaptive) video streaming;</li> | <li>(adaptive) video streaming; and</li> | |||
<li>Instant messaging.</li> | <li>instant messaging.</li> | |||
</ul> | </ul> | |||
<t>The significantly lower queuing latency also enables some | <t>The significantly lower queuing latency also enables some | |||
interactive application functions to be offloaded to the cloud that | interactive application functions to be offloaded to the cloud that | |||
would hardly even be usable today: </t> | would hardly even be usable today, including:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>Cloud based interactive video;</li> | <li>cloud-based interactive video and</li> | |||
<li>Cloud based virtual and augmented reality.</li> | <li>cloud-based virtual and augmented reality.</li> | |||
</ul> | </ul> | |||
<t>The above two applications have been successfully demonstrated with | <t>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 same | the previous list, as well as numerous downloads, with all sharing the s | |||
bottleneck queue simultaneously <xref target="L4Sdemo16" format="default | ame | |||
"/>. For | bottleneck queue simultaneously <xref target="L4Sdemo16" format="default | |||
"/> <xref target="L4Sdemo16-Video" format="default"/>. For | ||||
the former, a panoramic video of a football stadium could be swiped | the former, a panoramic video of a football stadium could be swiped | |||
and pinched so that, on the fly, a proxy in the cloud could generate a | and pinched so 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 | sub-window of the match video under the finger-gesture control of each | |||
user. For the latter, a virtual reality headset displayed a viewport | user. For the latter, a virtual reality headset displayed a viewport | |||
taken from a 360-degree camera in a racing car. The user's head | taken from a 360-degree camera in a racing car. The user's head | |||
movements controlled the viewport extracted by a cloud-based proxy. In | movements controlled the viewport extracted by a cloud-based proxy. In | |||
both cases, with 7 ms end-to-end base delay, the additional | both cases, with a 7 ms end-to-end base delay, the additional | |||
queuing delay of roughly 1 ms was so low that it seemed the video | queuing delay of roughly 1 ms was so low that it seemed the video | |||
was generated locally. </t> | was generated locally. </t> | |||
<t>Using a swiping finger gesture or head movement to pan a video are | <t>Using a swiping finger gesture or head movement to pan a video are | |||
extremely latency-demanding actions -- far more demanding than | extremely latency-demanding actions -- far more demanding than | |||
VoIP. Because human vision can detect extremely low delays of the | VoIP -- because human vision can detect extremely low delays of the | |||
order of single milliseconds when delay is translated into a visual | order of single milliseconds when delay is translated into a visual | |||
lag between a video and a reference point (the finger or the | lag between a video and a reference point (the finger or the | |||
orientation of the head sensed by the balance system in the inner ear | orientation of the head sensed by the balance system in the inner ear, | |||
-- the vestibular system). With an alternative AQM, the video | i.e., the vestibular system). With an alternative AQM, the video | |||
noticeably lagged behind the finger gestures and head movements.</t> | noticeably lagged behind the finger gestures and head movements.</t> | |||
<t>Without the low queuing delay of L4S, cloud-based applications like | <t>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-network ba | |||
bandwidth (to deliver all possible video that might be viewed) and | ndwidth | |||
(to deliver all possible areas of the 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 processing | consumption of head-mounted displays. When all interactive processing | |||
can be done in the cloud, only the data to be rendered for the end | can be done in the cloud, only the data to be rendered for the end | |||
user needs to be sent.</t> | user needs to be sent.</t> | |||
<t>Other low latency high bandwidth applications such as:</t> | <t>Other low latency high bandwidth applications, such as:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>Interactive remote presence;</li> | <li>interactive remote presence and</li> | |||
<li>Video-assisted remote control of machinery or industrial | <li>video-assisted remote control of machinery or industrial | |||
processes.</li> | processes</li> | |||
</ul> | </ul> | |||
<t>are not credible at all without very low queuing delay. No | <t>are not credible at all without very low queuing delay. No | |||
amount of extra access bandwidth or local processing can make up for | amount of extra access bandwidth or local processing can make up for | |||
lost time.</t> | lost time.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Use Cases</name> | <name>Use Cases</name> | |||
<t>The following use-cases for L4S are being considered by various | <t>The following use cases for L4S are being considered by various | |||
interested parties:</t> | interested parties:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>Where the bottleneck is one of various types of access network: | <li>where the bottleneck is one of various types of access network, | |||
e.g. DSL, Passive Optical Networks (PON), DOCSIS cable, | e.g., DSL, Passive Optical Networks (PONs), DOCSIS cable, | |||
mobile, satellite (see <xref target="l4sarch_link-specifics" format= | mobile, satellite; or where it's a Wi-Fi link (see <xref target="l4s | |||
"default"/> for | arch_link-specifics" format="default"/> for | |||
some technology-specific details)</li> | some technology-specific details)</li> | |||
<li> | <li> | |||
<t>Private networks of heterogeneous data centres, where there is | <t>private networks of heterogeneous data centres, where there is | |||
no single administrator that can arrange for all the simultaneous | no single administrator that can arrange for all the simultaneous | |||
changes to senders, receivers and network needed to deploy | changes to senders, receivers, and networks needed to deploy | |||
DCTCP:</t> | DCTCP:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>a set of private data centres interconnected over a wide | <li>a set of private data centres interconnected over a wide | |||
area with separate administrations, but within the same | area with separate administrations but within the same | |||
company</li> | company</li> | |||
<li>a set of data centres operated by separate companies | <li>a set of data centres operated by separate companies | |||
interconnected by a community of interest network | interconnected by a community of interest network | |||
(e.g. for the finance sector)</li> | (e.g., for the finance sector)</li> | |||
<li>multi-tenant (cloud) data centres where tenants choose | <li>multi-tenant (cloud) data centres where tenants choose | |||
their operating system stack (Infrastructure as a Service - | their operating system stack (Infrastructure as a Service | |||
IaaS)</li> | (IaaS))</li> | |||
</ul> | </ul> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>Different types of transport (or application) congestion | <t>different types of transport (or application) congestion | |||
control:</t> | control:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>elastic (TCP/SCTP);</li> | <li>elastic (TCP/SCTP);</li> | |||
<li>real-time (RTP, RMCAT);</li> | <li>real-time (RTP, RMCAT); and</li> | |||
<li>query (DNS/LDAP).</li> | <li>query-response (DNS/LDAP).</li> | |||
</ul> | </ul> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>Where low delay quality of service is required, but without | <t>where low delay QoS is required but without | |||
inspecting or intervening above the IP layer <xref target="RFC8404" | inspecting or intervening above the IP layer <xref target="RFC8404" | |||
format="default"/>:</t> | format="default"/>:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>mobile and other networks have tended to inspect higher | <li>Mobile and other networks have tended to inspect higher | |||
layers in order to guess application QoS requirements. | layers in order to guess application QoS requirements. | |||
However, with growing demand for support of privacy and | However, with growing demand for support of privacy and | |||
encryption, L4S offers an alternative. There is no need to | encryption, L4S offers an alternative. There is no need to | |||
select which traffic to favour for queuing, when L4S can give | select which traffic to favour for queuing when L4S can give | |||
favourable queuing to all traffic.</li> | favourable queuing to all traffic.</li> | |||
</ul> | </ul> | |||
</li> | </li> | |||
<li>If queuing delay is minimized, applications with a fixed delay | <li>If queuing delay is minimized, applications with a fixed delay | |||
budget can communicate over longer distances, or via a longer | budget can communicate over longer distances or via more circuitous | |||
chain of service functions <xref target="RFC7665" format="default"/> | paths, e.g., longer | |||
or onion | chains of service functions <xref target="RFC7665" format="default"/ | |||
> or of onion | ||||
routers.</li> | routers.</li> | |||
<li>If delay jitter is minimized, it is possible to reduce the | <li>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 receiving end of video streaming, which | |||
should improve the interactive experience</li> | should improve the interactive experience.</li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
<section anchor="l4sarch_link-specifics" numbered="true" toc="default"> | <section anchor="l4sarch_link-specifics" numbered="true" toc="default"> | |||
<name>Applicability with Specific Link Technologies</name> | <name>Applicability with Specific Link Technologies</name> | |||
<t>Certain link technologies aggregate data from multiple packets into | <t>Certain link technologies aggregate data from multiple packets into | |||
bursts, and buffer incoming packets while building each burst. Wi-Fi, | bursts and buffer incoming packets while building each burst. Wi-Fi, | |||
PON and cable all involve such packet aggregation, whereas fixed | 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 an | anything to reduce the buffering needed for packet aggregation. So an | |||
AQM should not count this buffering as part of the queue that it | AQM should not count this buffering as part of the queue that it | |||
controls, given no amount of congestion signals will reduce it.</t> | controls, given no amount of congestion signals will reduce it.</t> | |||
<t>Certain link technologies also add buffering for other reasons, | <t>Certain link technologies also add buffering for other reasons, | |||
specifically:</t> | specifically:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>Radio links (cellular, Wi-Fi, satellite) that are distant from | <li>Radio links (cellular, Wi-Fi, or satellite) that are distant from | |||
the source are particularly challenging. The radio link capacity | the source are particularly challenging. The radio link capacity | |||
can vary rapidly by orders of magnitude, so it is considered | can vary rapidly by orders of magnitude, so it is considered | |||
desirable to hold a standing queue that can utilize sudden | desirable to hold a standing queue that can utilize sudden | |||
increases of capacity;</li> | increases of capacity.</li> | |||
<li>Cellular networks are further complicated by a perceived need | <li>Cellular networks are further complicated by a perceived need | |||
to buffer in order to make hand-overs imperceptible;</li> | to buffer in order to make hand-overs imperceptible.</li> | |||
</ul> | </ul> | |||
<t>L4S cannot remove the need for all these different forms of | <t>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), L4S | (buffering for the large sawteeth of Classic congestion controls), L4S | |||
exposes all these 'shorter poles' to greater scrutiny.</t> | exposes all these 'shorter poles' to greater scrutiny.</t> | |||
<t>Until now, the buffering needed for these additional reasons tended | <t>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.</t> | burst sizes and MAC scheduling intervals.</t> | |||
<t>Also certain link types, particularly radio-based links, are far | <t>Also, certain link types, particularly radio-based links, are far | |||
more prone to transmission losses. <xref target="l4sarch_sec_non-l4s-nec k" format="default"/> explains how an L4S response to | more prone to transmission losses. <xref target="l4sarch_sec_non-l4s-nec k" format="default"/> explains how an L4S response to | |||
loss has to be as drastic as a Classic response. Nonetheless, research | loss has to be as drastic as a Classic response. Nonetheless, research | |||
referred to in the same section has demonstrated potential for | referred to in the same section has demonstrated potential for | |||
considerably more effective loss repair at the link layer, due to the | considerably more effective loss repair at the link layer, due to the | |||
relaxed ordering constraints of L4S packets.</t> | relaxed ordering constraints of L4S packets.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Deployment Considerations</name> | <name>Deployment Considerations</name> | |||
<t>L4S AQMs, whether DualQ <xref target="I-D.ietf-tsvwg-aqm-dualq-couple | <t>L4S AQMs, whether DualQ <xref target="RFC9332" format="default"/> or | |||
d" format="default"/> or FQ, e.g. <xref target="RFC8290" format="default"/> are, | FQ <xref target="RFC8290" format="default"/>, are in themselves an incremental d | |||
in themselves, an incremental deployment | eployment | |||
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. <xref target="l4sarch_deploy_top" forma t="default"/> | Classic (Reno-friendly) traffic. <xref target="l4sarch_deploy_top" forma t="default"/> | |||
explains why only deploying an L4S AQM in one node at each end of the | explains why only deploying an L4S AQM in one node at each end of the | |||
access link will realize nearly all the benefit of L4S.</t> | access link will realize nearly all the benefit of L4S.</t> | |||
<t>L4S involves both end systems and the network, so <xref target="l4s_a | <t>L4S involves both the network and end systems, so <xref target="l4s_a | |||
rch_deploy_seq" format="default"/> suggests some typical sequences to | rch_deploy_seq" format="default"/> suggests some typical sequences to | |||
deploy each part, and why there will be an immediate and significant | deploy each part and why there will be an immediate and significant | |||
benefit after deploying just one part.</t> | benefit after deploying just one part.</t> | |||
<t><xref target="l4sarch_sec_non-l4s-neck" format="default"/> and <xref target="l4sarch_sec_classic-ecn-neck" format="default"/> describe the converse | <t>Sections <xref target="l4sarch_sec_non-l4s-neck" format="counter"/> a nd <xref target="l4sarch_sec_classic-ecn-neck" format="counter"/> describe the c onverse | |||
incremental deployment case where there is no L4S AQM at the network | incremental deployment case where there is no L4S AQM at the network | |||
bottleneck, so any L4S flow traversing this bottleneck has to take | bottleneck, so any L4S flow traversing this bottleneck has to take | |||
care in case it is competing with Classic traffic.</t> | care in case it is competing with Classic traffic.</t> | |||
<section anchor="l4sarch_deploy_top" numbered="true" toc="default"> | <section anchor="l4sarch_deploy_top" numbered="true" toc="default"> | |||
<name>Deployment Topology</name> | <name>Deployment Topology</name> | |||
<t>L4S AQMs will not have to be deployed throughout the Internet | <t>L4S AQMs will not have to be deployed throughout the Internet | |||
before L4S can benefit anyone. Operators of public Internet access | before L4S can benefit anyone. Operators of public Internet access | |||
networks typically design their networks so that the bottleneck will | networks typically design their networks so that the bottleneck will | |||
nearly always occur at one known (logical) link. This confines the | nearly always occur at one known (logical) link. This confines the | |||
cost of queue management technology to one place.</t> | cost of queue management technology to one place.</t> | |||
<t>The case of mesh networks is different and will be discussed | <t>The case of mesh networks is different and will be discussed | |||
later in this section. But the known bottleneck case is generally | later in this section. | |||
However, the known-bottleneck case is generally | ||||
true for Internet access to all sorts of different 'sites', where | true for Internet access to all sorts of different 'sites', where | |||
the word 'site' includes home networks, small- to medium-sized | the word 'site' includes home networks, small- to medium-sized | |||
campus or enterprise networks and even cellular devices (<xref target= | campus or enterprise networks and even cellular devices (<xref | |||
"l4sarch_fig_access_topology" format="default"/>). Also, this known-bottleneck | target="l4sarch_fig_access_topology" format="default"/>). | |||
case tends to be applicable whatever the access link technology; | Also, this known-bottleneck | |||
whether xDSL, cable, PON, cellular, line of sight wireless or | case tends to be applicable whatever the access link technology, | |||
whether xDSL, cable, PON, cellular, line of sight wireless, or | ||||
satellite.</t> | satellite.</t> | |||
<t>Therefore, the full benefit of the L4S service should be | <t>Therefore, the full benefit of the L4S service should be | |||
available in the downstream direction when an L4S AQM is deployed at | available in the downstream direction when an L4S AQM is deployed at | |||
the ingress to this bottleneck link. And similarly, the full | the ingress to this bottleneck link. And similarly, the full | |||
upstream service will be available once an L4S AQM is deployed at | upstream service will typically be available once an L4S AQM is deploy | |||
the ingress into the upstream link. (Of course, multi-homed sites | ed at | |||
the ingress into the upstream link. (Of course, multihomed sites | ||||
would only see the full benefit once all their access links were | would only see the full benefit once all their access links were | |||
covered.)</t> | covered.)</t> | |||
<figure anchor="l4sarch_fig_access_topology"> | <figure anchor="l4sarch_fig_access_topology"> | |||
<name>Likely location of DualQ (DQ) Deployments in common access top | <name>Likely Location of DualQ (DQ) Deployments in Common Access Top | |||
ologies</name> | ologies</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
______ | ______ | |||
( ) | ( ) | |||
__ __ ( ) | __ __ ( ) | |||
|DQ\________/DQ|( enterprise ) | |DQ\________/DQ|( enterprise ) | |||
___ |__/ \__| ( /campus ) | ___ |__/ \__| ( /campus ) | |||
( ) (______) | ( ) (______) | |||
( ) ___||_ | ( ) ___||_ | |||
+----+ ( ) __ __ / \ | +----+ ( ) __ __ / \ | |||
| DC |-----( Core )|DQ\_______________/DQ|| home | | | DC |-----( Core )|DQ\_______________/DQ|| home | | |||
+----+ ( ) |__/ \__||______| | +----+ ( ) |__/ \__||______| | |||
(_____) __ | (_____) __ | |||
skipping to change at line 1236 ¶ | skipping to change at line 1213 ¶ | |||
|__/ \ ____/DQ||| ||mobile | |__/ \ ____/DQ||| ||mobile | |||
\/ \__|||_||device | \/ \__|||_||device | |||
| o | | | o | | |||
`---' | `---' | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t>Deployment in mesh topologies depends on how overbooked the core | <t>Deployment in mesh topologies depends on how overbooked the core | |||
is. If the core is non-blocking, or at least generously provisioned | is. If the core is non-blocking, or at least generously provisioned | |||
so that the edges are nearly always the bottlenecks, it would only | so that the edges are nearly always the bottlenecks, it would only | |||
be necessary to deploy an L4S AQM at the edge bottlenecks. For | be necessary to deploy an L4S AQM at the edge bottlenecks. | |||
For | ||||
example, some data-centre networks are designed with the bottleneck | example, some data-centre networks are designed with the bottleneck | |||
in the hypervisor or host NICs, while others bottleneck at the | in the hypervisor or host Network Interface Controllers (NICs), while | |||
others | ||||
bottleneck at the | ||||
top-of-rack switch (both the output ports facing hosts and those | top-of-rack switch (both the output ports facing hosts and those | |||
facing the core).</t> | facing the core).</t> | |||
<t>An L4S AQM would often next be needed where the Wi-Fi links in a | <t>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 | home sometimes become the bottleneck. Also an L4S AQM would | |||
eventually also need to be deployed at any other persistent | eventually need to be deployed at any other persistent | |||
bottlenecks such as network interconnections, e.g. some public | bottlenecks, such as network interconnections, e.g., some public | |||
Internet exchange points and the ingress and egress to WAN links | Internet exchange points and the ingress and egress to WAN links | |||
interconnecting data-centres.</t> | interconnecting data centres.</t> | |||
</section> | </section> | |||
<section anchor="l4s_arch_deploy_seq" numbered="true" toc="default"> | <section anchor="l4s_arch_deploy_seq" numbered="true" toc="default"> | |||
<name>Deployment Sequences</name> | <name>Deployment Sequences</name> | |||
<t>For any one L4S flow to provide benefit, it requires three (or | <t>For any one L4S flow to provide benefit, it requires three (or | |||
sometimes two) parts to have been deployed: i) the congestion | sometimes two) parts to have been deployed: i) the congestion | |||
control at the sender; ii) the AQM at the bottleneck; and iii) older | control at the sender; ii) the AQM at the bottleneck; and iii) older | |||
transports (namely TCP) need upgraded receiver feedback too. This | transports (namely TCP) need upgraded receiver feedback too. This | |||
was the same deployment problem that ECN faced <xref target="RFC8170" format="default"/> so we have learned from that experience.</t> | was the same deployment problem that ECN faced <xref target="RFC8170" format="default"/>, so we have learned from that experience.</t> | |||
<t>Firstly, L4S deployment exploits the fact that DCTCP already | <t>Firstly, L4S deployment exploits the fact that DCTCP already | |||
exists on many Internet hosts (Windows, FreeBSD and Linux); both | exists on many Internet hosts (e.g., Windows, FreeBSD, and Linux), bot h | |||
servers and clients. Therefore, an L4S AQM can be deployed at a | servers and clients. Therefore, an L4S AQM can be deployed at a | |||
network bottleneck to immediately give a working deployment of all | network bottleneck to immediately give a working deployment of all | |||
the L4S parts for testing, as long as the ECT(0) codepoint is | the L4S parts for testing, as long as the ECT(0) codepoint is | |||
switched to ECT(1). DCTCP needs some safety concerns to be fixed for | switched to ECT(1). DCTCP needs some safety concerns to be fixed for | |||
general use over the public Internet (see Section 4.3 of the L4S ECN | general use over the public Internet (see <xref target="RFC9331" forma | |||
spec <xref target="I-D.ietf-tsvwg-ecn-l4s-id" format="default"/>), but | t="default" sectionFormat="of" section="4.3">the L4S ECN spec</xref>), but DCTCP | |||
DCTCP is | is | |||
not on by default, so these issues can be managed within controlled | not on by default, so these issues can be managed within controlled | |||
deployments or controlled trials.</t> | deployments or controlled trials.</t> | |||
<t>Secondly, the performance improvement with L4S is so significant | <t>Secondly, the performance improvement with L4S is so significant | |||
that it enables new interactive services and products that were not | that it enables new interactive services and products that were not | |||
previously possible. It is much easier for companies to initiate new | previously possible. It is much easier for companies to initiate new | |||
work on deployment if there is budget for a new product trial. If, | work on deployment if there is budget for a new product trial. | |||
in contrast, there were only an incremental performance improvement | In contrast, if there were only an incremental performance improvement | |||
(as with Classic ECN), spending on deployment tends to be much | (as with Classic ECN), spending on deployment tends to be much | |||
harder to justify.</t> | harder to justify.</t> | |||
<t>Thirdly, the L4S identifier is defined so that initially network | <t>Thirdly, the L4S identifier is defined so that network | |||
operators can enable L4S exclusively for certain customers or | operators can initially enable L4S exclusively for certain customers o | |||
certain applications. But this is carefully defined so that it does | r | |||
certain applications. However, this is carefully defined so that it do | ||||
es | ||||
not compromise future evolution towards L4S as an Internet-wide | not compromise future evolution towards L4S as an Internet-wide | |||
service. This is because the L4S identifier is defined not only as | service. This is because the L4S identifier is defined not only as | |||
the end-to-end ECN field, but it can also optionally be combined | the end-to-end ECN field, but it can also optionally be combined | |||
with any other packet header or some status of a customer or their | with any other packet header or some status of a customer or their | |||
access link (see section 5.4 of <xref target="I-D.ietf-tsvwg-ecn-l4s-i d" format="default"/>). Operators could do this | access link (see <xref target="RFC9331" format="default" sectionFormat ="of" section="5.4"/>). Operators could do this | |||
anyway, even if it were not blessed by the IETF. However, it is best | anyway, even if it were not blessed by the IETF. However, it is best | |||
for the IETF to specify that, if they use their own local | for the IETF to specify that, if they use their own local | |||
identifier, it must be in combination with the IETF's identifier. | identifier, it must be in combination with the IETF's identifier, ECT( 1). | |||
Then, if an operator has opted for an exclusive local-use approach, | Then, if an operator has opted for an exclusive local-use approach, | |||
later they only have to remove this extra rule to make the service | they only have to remove this extra rule later to make the service | |||
work Internet-wide - it will already traverse middleboxes, peerings, | work across the Internet -- it will already traverse middleboxes, peer | |||
etc. <!--{K: Review up to here}--> | ings, | |||
etc. | ||||
</t> | </t> | |||
<figure anchor="l4s_arch_fig_deploy_seq"> | <figure anchor="l4s_arch_fig_deploy_seq"> | |||
<name>Example L4S Deployment Sequence</name> | <name>Example L4S Deployment Sequence</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[+-+----------- | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
---------+----------------------+---------------------+ | +-+--------------------+----------------------+---------------------+ | |||
| | Servers or proxies | Access link | Clients | | | | Servers or proxies | Access link | Clients | | |||
+-+--------------------+----------------------+---------------------+ | +-+--------------------+----------------------+---------------------+ | |||
|0| DCTCP (existing) | | DCTCP (existing) | | |0| DCTCP (existing) | | DCTCP (existing) | | |||
+-+--------------------+----------------------+---------------------+ | +-+--------------------+----------------------+---------------------+ | |||
|1| |Add L4S AQM downstream| | | |1| |Add L4S AQM downstream| | | |||
| | WORKS DOWNSTREAM FOR CONTROLLED DEPLOYMENTS/TRIALS | | | | WORKS DOWNSTREAM FOR CONTROLLED DEPLOYMENTS/TRIALS | | |||
+-+--------------------+----------------------+---------------------+ | +-+--------------------+----------------------+---------------------+ | |||
|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 | | |||
skipping to change at line 1321 ¶ | skipping to change at line 1300 ¶ | |||
sequences in which the parts of L4S might be deployed. It consists | sequences in which the parts of L4S might be deployed. It consists | |||
of the following stages, preceded by a presumption that DCTCP is | of the following stages, preceded by a presumption that DCTCP is | |||
already installed at both ends:</t> | already installed at both ends:</t> | |||
<ol spacing="normal" type="1"><li> | <ol spacing="normal" type="1"><li> | |||
<t>DCTCP is not applicable for use over the public Internet, so | <t>DCTCP is not applicable for use over the public Internet, so | |||
it is emphasized here that any DCTCP flow has to be completely | it is emphasized here that any DCTCP flow has to be completely | |||
contained within a controlled trial environment. </t> | contained within a controlled trial environment. </t> | |||
<t>Within this trial environment, once an L4S AQM | <t>Within this trial environment, once an L4S AQM | |||
has been deployed, the trial DCTCP flow will experience | has been deployed, the trial DCTCP flow will experience | |||
immediate benefit, without any other deployment being needed. In | immediate benefit, without any other deployment being needed. In | |||
this example downstream deployment is first, but in other | this example, downstream deployment is first, but in other | |||
scenarios the upstream might be deployed first. If no AQM at all | scenarios, the upstream might be deployed first. If no AQM at all | |||
was previously deployed for the downstream access, an L4S AQM | was previously deployed for the downstream access, an L4S AQM | |||
greatly improves the Classic service (as well as adding the L4S | greatly improves the Classic service (as well as adding the L4S | |||
service). If an AQM was already deployed, the Classic service | service). If an AQM was already deployed, the Classic service | |||
will be unchanged (and L4S will add an improvement on top).</t> | will be unchanged (and L4S will add an improvement on top).</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>In this stage, the name 'TCP Prague' <xref target="I-D.briscoe- iccrg-prague-congestion-control" format="default"/> is used | <t>In this stage, the name 'TCP Prague' <xref target="I-D.briscoe- iccrg-prague-congestion-control" format="default"/> is used | |||
to represent a variant of DCTCP that is designed to be used in a | to represent a variant of DCTCP that is designed to be used in a | |||
production Internet environment (that is, it has to comply with | production Internet environment (that is, it has to comply with | |||
all the requirements in Section 4 of the L4S ECN spec <xref target ="I-D.ietf-tsvwg-ecn-l4s-id" format="default"/>, which then means it can be | all the requirements in <xref target="RFC9331" format="default" se ction="4" sectionFormat="of">the L4S ECN spec</xref>, which then means it can be | |||
used over the public Internet). If the application is primarily | used over the public Internet). If the application is primarily | |||
unidirectional, 'TCP Prague' at one end will provide all the | unidirectional, 'TCP Prague' at the sending end will provide all | |||
benefit needed.</t> | the benefit needed, as long as the receiving end supports Accurate | |||
ECN (AccECN) | ||||
feedback <xref target="I-D.ietf-tcpm-accurate-ecn" format="default | ||||
"/>.</t> | ||||
<t>For TCP transports, | <t>For TCP transports, | |||
Accurate ECN feedback (AccECN) <xref target="I-D.ietf-tcpm-accurat e-ecn" format="default"/> is needed at the other | AccECN feedback is needed at the other | |||
end, but it is a generic ECN feedback facility that is already | end, but it is a generic ECN feedback facility that is already | |||
planned to be deployed for other purposes, e.g. DCTCP, BBR. | planned to be deployed for other purposes, e.g., DCTCP and BBR. | |||
The two ends can be deployed in either order, because, in TCP, | The two ends can be deployed in either order because, in TCP, | |||
an L4S congestion control only enables itself if it has | an L4S congestion control only enables itself if it has | |||
negotiated the use of AccECN feedback with the other end during | negotiated the use of AccECN feedback with the other end during | |||
the connection handshake. Thus, deployment of TCP Prague on a | the connection handshake. Thus, deployment of TCP Prague on a | |||
server enables L4S trials to move to a production service in one | server enables L4S trials to move to a production service in one | |||
direction, wherever AccECN is deployed at the other end. This | direction, wherever AccECN is deployed at the other end. This | |||
stage might be further motivated by the performance improvements | stage might be further motivated by the performance improvements | |||
of TCP Prague relative to DCTCP (see Appendix A.2 of the L4S ECN | of TCP Prague relative to DCTCP (see <xref target="RFC9331" forma | |||
spec <xref target="I-D.ietf-tsvwg-ecn-l4s-id" format="default"/>). | t="default" sectionFormat="of" section="A.2">the L4S ECN spec</xref>).</t> | |||
</t> | ||||
<t>Unlike TCP, from the outset, QUIC ECN | <t>Unlike TCP, from the outset, QUIC ECN | |||
feedback <xref target="RFC9000" format="default"/> has supported L 4S. | feedback <xref target="RFC9000" format="default"/> has supported L 4S. | |||
Therefore, if the transport is QUIC, one-ended deployment of a | Therefore, if the transport is QUIC, one-ended deployment of a | |||
Prague congestion control at this stage is simple and | Prague congestion control at this stage is simple and | |||
sufficient.</t> | sufficient.</t> | |||
<t>For QUIC, if a proxy sits in | <t>For QUIC, if a proxy sits in | |||
the path between multiple origin servers and the access | the path between multiple origin servers and the access | |||
bottlenecks to multiple clients, then upgrading the proxy with a | bottlenecks to multiple clients, then upgrading the proxy with a | |||
Scalable congestion control would provide the benefits of L4S | Scalable congestion control would provide the benefits of L4S | |||
over all the clients' downstream bottlenecks in one go --- | over all the clients' downstream bottlenecks in one go -- | |||
whether or not all the origin servers were upgraded. Conversely, | whether or not all the origin servers were upgraded. Conversely, | |||
where a proxy has not been upgraded, the clients served by it | where a proxy has not been upgraded, the clients served by it | |||
will not benefit from L4S at all in the downstream, even when | will not benefit from L4S at all in the downstream, even when | |||
any origin server behind the proxy has been upgraded to support | any origin server behind the proxy has been upgraded to support | |||
L4S.</t> | L4S.</t> | |||
<t>For TCP, a proxy upgraded to support | <t>For TCP, a proxy upgraded to support | |||
'TCP Prague' would provide the benefits of L4S downstream to all | 'TCP Prague' would provide the benefits of L4S downstream to all | |||
clients that support AccECN (whether or not they support L4S as | clients that support AccECN (whether or not they support L4S as | |||
well). And in the upstream, the proxy would also support AccECN | well). And in the upstream, the proxy would also support AccECN | |||
as a receiver, so that any client deploying its own L4S support | as a receiver, so that any client deploying its own L4S support | |||
would benefit in the upstream direction, irrespective of whether | would benefit in the upstream direction, irrespective of whether | |||
any origin server beyond the proxy supported AccECN.</t> | any origin server beyond the proxy supported AccECN.</t> | |||
</li> | </li> | |||
<li>This is a two-move stage to enable L4S upstream. An L4S AQM | <li>This is a two-move stage to enable L4S upstream. An L4S AQM | |||
or TCP Prague can be deployed in either order as already | or TCP Prague can be deployed in either order as already | |||
explained. To motivate the first of two independent moves, the | explained. To motivate the first of two independent moves, the | |||
deferred benefit of enabling new services after the second move | deferred benefit of enabling new services after the second move | |||
has to be worth it to cover the first mover's investment risk. | has to be worth it to cover the first mover's investment risk. | |||
As explained already, the potential for new interactive services | As explained already, the potential for new interactive services | |||
provides this motivation. An L4S AQM also improves the upstream | provides this motivation. An L4S AQM also improves the upstream | |||
Classic service - significantly if no other AQM has already been | Classic service significantly if no other AQM has already been | |||
deployed.</li> | deployed.</li> | |||
</ol> | </ol> | |||
<t>Note that other deployment sequences might occur. For | <t>Note that other deployment sequences might occur. For | |||
instance: the upstream might be deployed first; a non-TCP protocol | instance, the upstream might be deployed first; a non-TCP protocol | |||
might be used end-to-end, e.g. QUIC, RTP; a body such as the | might be used end to end, e.g., QUIC and RTP; a body, such as the | |||
3GPP might require L4S to be implemented in 5G user equipment, or | 3GPP, might require L4S to be implemented in 5G user equipment; or | |||
other random acts of kindness.</t> | other random acts of kindness might arise.</t> | |||
</section> | </section> | |||
<section anchor="l4sarch_sec_non-l4s-neck" numbered="true" toc="default" > | <section anchor="l4sarch_sec_non-l4s-neck" numbered="true" toc="default" > | |||
<name>L4S Flow but Non-ECN Bottleneck</name> | <name>L4S Flow but Non-ECN Bottleneck</name> | |||
<t>If L4S is enabled between two hosts, the L4S sender is required | <t>If L4S is enabled between two hosts, the L4S sender is required | |||
to coexist safely with Reno in response to any drop (see Section 4.3 | to coexist safely with Reno in response to any drop (see <xref target= | |||
of the L4S ECN spec <xref target="I-D.ietf-tsvwg-ecn-l4s-id" format="d | "RFC9331" format="default" sectionFormat="of" section="4.3">the L4S ECN spec</xr | |||
efault"/>).</t> | ef>).</t> | |||
<t>Unfortunately, as well as protecting Classic traffic, this rule | <t>Unfortunately, as well as protecting Classic traffic, this rule | |||
degrades the L4S service whenever there is any loss, even if the | degrades the L4S service whenever there is any loss, even if the | |||
cause is not persistent congestion at a bottleneck, e.g.:</t> | cause is not persistent congestion at a bottleneck, for example:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>congestion loss at other transient bottlenecks, e.g. due | <li>congestion loss at other transient bottlenecks, e.g., due | |||
to bursts in shallower queues;</li> | to bursts in shallower queues;</li> | |||
<li>transmission errors, e.g. due to electrical | <li>transmission errors, e.g., due to electrical | |||
interference;</li> | interference; and</li> | |||
<li>rate policing.</li> | <li>rate policing.</li> | |||
</ul> | </ul> | |||
<t>Three complementary approaches are in progress to address this | <t>Three complementary approaches are in progress to address this | |||
issue, but they are all currently research:</t> | issue, but they are all currently research:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>In Prague congestion control, ignore certain losses deemed | <li>In Prague congestion control, ignore certain losses deemed | |||
unlikely to be due to congestion (using some ideas from | unlikely to be due to congestion (using some ideas from | |||
BBR <xref target="I-D.cardwell-iccrg-bbr-congestion-control" forma t="default"/> regarding | BBR <xref target="I-D.cardwell-iccrg-bbr-congestion-control" forma t="default"/> regarding | |||
isolated losses). This could mask any of the above types of loss | isolated losses). This could mask any of the above types of loss | |||
while still coexisting with drop-based congestion controls.</li> | while still coexisting with drop-based congestion controls.</li> | |||
<li>A combination of RACK, L4S and link retransmission without | <li>A combination of Recent Acknowledgement (RACK) <xref target="RFC 8985" format="default"/>, L4S, and link retransmission without | |||
resequencing could repair transmission errors without the head | resequencing could repair transmission errors without the head | |||
of line blocking delay usually associated with link-layer | of line blocking delay usually associated with link-layer | |||
retransmission <xref target="UnorderedLTE" format="default"/>, <xr ef target="I-D.ietf-tsvwg-ecn-l4s-id" format="default"/>;</li> | retransmission <xref target="UnorderedLTE" format="default"/> <xre f target="RFC9331" format="default"/>.</li> | |||
<li>Hybrid ECN/drop rate policers (see <xref target="l4s_arch_sec_po licing" format="default"/>).</li> | <li>Hybrid ECN/drop rate policers (see <xref target="l4s_arch_sec_po licing" format="default"/>).</li> | |||
</ul> | </ul> | |||
<t>L4S deployment scenarios that minimize these issues | <t>L4S deployment scenarios that minimize these issues | |||
(e.g. over wireline networks) can proceed in parallel to this | (e.g., over wireline networks) can proceed in parallel to this | |||
research, in the expectation that research success could continually | research, in the expectation that research success could continually | |||
widen L4S applicability.</t> | widen L4S applicability.</t> | |||
</section> | </section> | |||
<section anchor="l4sarch_sec_classic-ecn-neck" numbered="true" toc="defa ult"> | <section anchor="l4sarch_sec_classic-ecn-neck" numbered="true" toc="defa ult"> | |||
<name>L4S Flow but Classic ECN Bottleneck</name> | <name>L4S Flow but Classic ECN Bottleneck</name> | |||
<t>Classic ECN support is starting to materialize on the Internet as | <t>Classic ECN support is starting to materialize on the Internet as | |||
an increased level of CE marking. It is hard to detect whether this | an increased level of CE marking. It is hard to detect whether this | |||
is all due to the addition of support for ECN in implementations of | is all due to the addition of support for ECN in implementations of | |||
FQ-CoDel and/or FQ-COBALT, which is not generally problematic, | FQ-CoDel and/or FQ-COBALT, which is not generally problematic, | |||
because flow-queue (FQ) scheduling inherently prevents a flow from | because flow queue (FQ) scheduling inherently prevents a flow from | |||
exceeding the 'fair' rate irrespective of its aggressiveness. | exceeding the 'fair' rate irrespective of its aggressiveness. | |||
However, some of this Classic ECN marking might be due to | However, some of this Classic ECN marking might be due to | |||
single-queue ECN deployment. This case is discussed in Section 4.3 | single-queue ECN deployment. This case is discussed in | |||
of the L4S ECN spec <xref target="I-D.ietf-tsvwg-ecn-l4s-id" format="d | <xref target="RFC9331" format="default" sectionFormat="of" section="4. | |||
efault"/>.</t> | 3"> the L4S ECN spec</xref>.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>L4S AQM Deployment within Tunnels</name> | <name>L4S AQM Deployment within Tunnels</name> | |||
<t>An L4S AQM uses the ECN field to signal congestion. So, in common | <t>An L4S AQM uses the ECN field to signal congestion. So in common | |||
with Classic ECN, if the AQM is within a tunnel or at a lower layer, | with Classic ECN, if the AQM is within a tunnel or at a lower layer, | |||
correct functioning of ECN signalling requires correct propagation | correct functioning of ECN signalling requires standards-compliant pro | |||
of the ECN field up the layers <xref target="RFC6040" format="default" | pagation | |||
/>, <xref target="I-D.ietf-tsvwg-rfc6040update-shim" format="default"/>, <xref t | of the ECN field up the layers <xref target="RFC6040" format="default" | |||
arget="I-D.ietf-tsvwg-ecn-encap-guidelines" format="default"/>.</t> | /> <xref target="I-D.ietf-tsvwg-rfc6040update-shim" format="default"/> <xref tar | |||
get="I-D.ietf-tsvwg-ecn-encap-guidelines" format="default"/>.</t> | ||||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="l4sps_IANA" numbered="true" toc="default"> | <section anchor="l4sps_IANA" numbered="true" toc="default"> | |||
<name>IANA Considerations (to be removed by RFC Editor)</name> | <name>IANA Considerations</name> | |||
<t>This specification contains no IANA considerations.</t> | <t>This document has no IANA actions.</t> | |||
</section> | </section> | |||
<section anchor="l4sps_Security_Considerations" numbered="true" toc="default "> | <section anchor="l4sps_Security_Considerations" numbered="true" toc="default "> | |||
<name>Security Considerations</name> | <name>Security Considerations</name> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Traffic Rate (Non-)Policing</name> | <name>Traffic Rate (Non-)Policing</name> | |||
<t/> | ||||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>(Non-)Policing Rate per Flow</name> | <name>(Non-)Policing Rate per Flow</name> | |||
<t>In the current Internet, ISPs usually enforce separation between | <t>In the current Internet, ISPs usually enforce separation between | |||
the capacity of shared links assigned to different 'sites' | the capacity of shared links assigned to different 'sites' | |||
(e.g. households, businesses or mobile users - see terminology | (e.g., households, businesses, or mobile users -- see terminology | |||
in <xref target="l4sps_Terminology" format="default"/>) using some for m of | in <xref target="l4sps_Terminology" format="default"/>) using some for m of | |||
scheduler <xref target="RFC0970" format="default"/>. And they use vari | scheduler <xref target="RFC0970" format="default"/>. And they use vari | |||
ous | ous | |||
techniques like redirection to traffic scrubbing facilities to deal | techniques, like redirection to traffic scrubbing facilities, to deal | |||
with flooding attacks. However, there has never been a universal | with flooding attacks. However, there has never been a universal | |||
need to police the rate of individual application flows - the | need to police the rate of individual application flows -- the | |||
Internet has generally always relied on self-restraint of congestion | Internet has generally always relied on self-restraint of congestion | |||
controls at senders for sharing intra-'site' capacity.</t> | controls at senders for sharing intra-'site' capacity.</t> | |||
<t>L4S has been designed not to upset this status quo. If a DualQ is | <t>L4S has been designed not to upset this status quo. If a DualQ is | |||
used to provide L4S service, section 4.2 of <xref target="I-D.ietf-tsv wg-aqm-dualq-coupled" format="default"/> explains how it is | used to provide L4S service, <xref target="RFC9332" format="default" s ectionFormat="of" section="4.2"/> explains how it is | |||
designed to give no more rate advantage to unresponsive flows than a | designed to give no more rate advantage to unresponsive flows than a | |||
single-queue AQM would, whether or not there is traffic | single-queue AQM would, whether or not there is traffic | |||
overload.</t> | overload.</t> | |||
<t>Also, in case per-flow rate policing is ever required, it can be | <t>Also, in case per-flow rate policing is ever required, it can be | |||
added because it is orthogonal to the distinction between L4S and | added because it is orthogonal to the distinction between L4S and | |||
Classic. As explained in <xref target="l4sps_why-not" format="default" />, the DualQ | Classic. As explained in <xref target="l4sps_why-not" format="default" />, the DualQ | |||
variant of L4S provides low delay without prejudging the issue of | variant of L4S provides low delay without prejudging the issue of | |||
flow-rate control. So, if flow-rate control is needed, | flow-rate control. So if flow-rate control is needed, | |||
per-flow-queuing (FQ) with L4S support can be used instead, or flow | 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. | rate policing can be added as a modular addition to a DualQ. | |||
However, per-flow rate control is not usually deployed as a security | However, per-flow rate control is not usually deployed as a security | |||
mechanism, because an active attacker can just shard its traffic | mechanism, because an active attacker can just shard its traffic | |||
over more flow IDs if the rate of each is restricted.</t> | over more flow identifiers if the rate of each is restricted.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>(Non-)Policing L4S Service Rate</name> | <name>(Non-)Policing L4S Service Rate</name> | |||
<t><xref target="l4sps_why-not" format="default"/> explains how Diffse rv only makes a | <t><xref target="l4sps_why-not" format="default"/> explains how Diffse rv only makes a | |||
difference if some packets get less favourable treatment than | difference if some packets get less favourable treatment than | |||
others, which typically requires traffic rate policing for a low | others, which typically requires traffic rate policing for a low | |||
latency class. In contrast, it should not be necessary to | latency class. In contrast, it should not be necessary to | |||
rate-police access to the L4S service to protect the Classic | rate-police access to the L4S service to protect the Classic | |||
service, because L4S is designed to reduce delay without harming the | service, because L4S is designed to reduce delay without harming the | |||
delay or rate of any Classic traffic. </t> | delay or rate of any Classic traffic. </t> | |||
<t>During early deployment (and perhaps always), some networks will | <t>During early deployment (and perhaps always), some networks will | |||
not offer the L4S service. In general, these networks should not | not offer the L4S service. In general, these networks should not | |||
need to police L4S traffic. They are required (by both the ECN | need to police L4S traffic. They are required (by both the ECN | |||
spec <xref target="RFC3168" format="default"/> and the L4S ECN spec <x ref target="I-D.ietf-tsvwg-ecn-l4s-id" format="default"/>) not to change the L4S | spec <xref target="RFC3168" format="default"/> and the L4S ECN spec <x ref target="RFC9331" format="default"/>) not to change the L4S | |||
identifier, which would interfere with end-to-end congestion | identifier, which would interfere with end-to-end congestion | |||
control. If they already treat ECN traffic as Not-ECT, they can | control. If they already treat ECN traffic as Not-ECT, they can | |||
merely treat L4S traffic as Not-ECT too. At a bottleneck, such | merely treat L4S traffic as Not-ECT too. At a bottleneck, such | |||
networks will introduce some queuing and dropping. When a scalable | networks will introduce some queuing and dropping. When a Scalable | |||
congestion control detects a drop it will have to respond safely | congestion control detects a drop, it will have to respond safely | |||
with respect to Classic congestion controls (as required in Section | with respect to Classic congestion controls (as required in | |||
4.3 of <xref target="I-D.ietf-tsvwg-ecn-l4s-id" format="default"/>). T | <xref target="RFC9331" format="default" sectionFormat="of" section="4. | |||
his will | 3"/>). This will | |||
degrade the L4S service to be no better (but never worse) than | degrade the L4S service to be no better (but never worse) than | |||
Classic best efforts, whenever a non-ECN bottleneck is encountered | Classic best efforts whenever a non-ECN bottleneck is encountered | |||
on a path (see <xref target="l4sarch_sec_non-l4s-neck" format="default "/>).</t> | on a path (see <xref target="l4sarch_sec_non-l4s-neck" format="default "/>).</t> | |||
<t>In cases that are expected to be rare, networks that solely | <t>In cases that are expected to be rare, networks that solely | |||
support Classic ECN <xref target="RFC3168" format="default"/> in a sin gle queue | support Classic ECN <xref target="RFC3168" format="default"/> in a sin gle queue | |||
bottleneck might opt to police L4S traffic so as to protect | bottleneck might opt to police L4S traffic so as to protect | |||
competing Classic ECN traffic (for instance, see Section 6.1.3 of | competing Classic ECN traffic (for instance, see | |||
the L4S operational guidance <xref target="I-D.ietf-tsvwg-l4sops" form | <xref target="I-D.ietf-tsvwg-l4sops" format="default" sectionFormat="o | |||
at="default"/>). However, Section 4.3 of the L4S | f" | |||
ECN spec <xref target="I-D.ietf-tsvwg-ecn-l4s-id" format="default"/> r | section="6.1.3">the L4S operational guidance</xref>). However, <xref | |||
ecommends | target="RFC9331" format="default" sectionFormat="of" | |||
section="4.3"> the L4S ECN spec</xref> recommends | ||||
that the sender adapts its congestion response to properly coexist | that the sender adapts its congestion response to properly coexist | |||
with Classic ECN flows, i.e. reverting to the self-restraint | with Classic ECN flows, i.e., reverting to the self-restraint | |||
approach.</t> | approach.</t> | |||
<t>Certain network operators might choose to restrict access to the | <t>Certain network operators might choose to restrict access to the | |||
L4S service, perhaps only to selected premium customers as a | L4S service, perhaps only to selected premium customers as a | |||
value-added service. Their packet classifier (item 2 in <xref target=" l4sps_fig_components" format="default"/>) could identify such customers | value-added service. Their packet classifier (item 2 in <xref target=" l4sps_fig_components" format="default"/>) could identify such customers | |||
against some other field (e.g. source address range) as well as | against some other field (e.g., source address range), as well as | |||
classifying on the ECN field. If only the ECN L4S identifier | classifying on the ECN field. If only the ECN L4S identifier | |||
matched, but not the source address (say), the classifier could | matched, but not (say) the source address, the classifier could | |||
direct these packets (from non-premium customers) into the Classic | direct these packets (from non-premium customers) into the Classic | |||
queue. Explaining clearly how operators can use additional local | queue. Explaining clearly how operators can use additional local | |||
classifiers (see section 5.4 of the L4S ECN spec <xref target="I-D.iet f-tsvwg-ecn-l4s-id" format="default"/>) is intended to remove any | classifiers (see <xref target="RFC9331" section="5.4" sectionFormat="o f"/>) 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 | classification, rather than the managed, application-specific | |||
traffic policing against customer-specific traffic contracts that | traffic policing against customer-specific traffic contracts that | |||
Diffserv uses.</t> | Diffserv uses.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>'Latency Friendliness'</name> | <name>'Latency Friendliness'</name> | |||
<t>Like the Classic service, the L4S service relies on self-restraint | <t>Like the Classic service, the L4S service relies on self-restraint to | |||
- limiting rate in response to congestion. In addition, the L4S | limit the 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.</t> | will suffer most from such behaviour.</t> | |||
<t>Because the L4S service can reduce delay without discernibly | <t>Because the L4S service can reduce delay without discernibly | |||
increasing the delay of any Classic traffic, it should not be | increasing the delay of any Classic traffic, it should not be | |||
necessary to police L4S traffic to protect the delay of Classic. | necessary to police L4S traffic to protect the delay of Classic traffic. | |||
However, whether burst policing becomes necessary to protect other L4S | However, whether burst policing becomes necessary to protect other L4S | |||
traffic remains to be seen. Without it, there will be potential for | traffic remains to be seen. Without it, there will be potential for | |||
attacks on the low latency of the L4S service.</t> | attacks on the low latency of the L4S service.</t> | |||
<t>If needed, various arrangements could be used to address this | <t>If needed, various arrangements could be used to address this | |||
concern:</t> | concern:</t> | |||
<dl newline="false" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
<dt>Local bottleneck queue protection:</dt> | <dt>Local bottleneck queue protection:</dt> | |||
<dd>A per-flow | <dd>A per-flow | |||
(5-tuple) queue protection function <xref target="I-D.briscoe-docsis -q-protection" format="default"/> has been developed for | (5-tuple) queue protection function <xref target="I-D.briscoe-docsis -q-protection" format="default"/> has been developed for | |||
the low latency queue in DOCSIS, which has adopted the DualQ L4S | the low latency queue in DOCSIS, which has adopted the DualQ L4S | |||
architecture. It protects the low latency service from any | architecture. It protects the low latency service from any | |||
queue-building flows that accidentally or maliciously classify | queue-building flows that accidentally or maliciously classify | |||
themselves into the low latency queue. It is designed to score | themselves into the low latency queue. It is designed to score | |||
flows based solely on their contribution to queuing (not flow rate | flows based solely on their contribution to queuing (not flow rate | |||
in itself). Then, if the shared low latency queue is at risk of | in itself). Then, if the shared low latency queue is at risk of | |||
exceeding a threshold, the function redirects enough packets of | exceeding a threshold, the function redirects enough packets of | |||
the highest scoring flow(s) into the Classic queue to preserve low | the highest scoring flow(s) into the Classic queue to preserve low | |||
latency.</dd> | latency.</dd> | |||
<dt>Distributed traffic scrubbing:</dt> | <dt>Distributed traffic scrubbing:</dt> | |||
<dd>Rather than policing | <dd>Rather than policing | |||
locally at each bottleneck, it may only be necessary to address | locally at each bottleneck, it may only be necessary to address | |||
problems reactively, e.g. punitively target any deployments | problems reactively, e.g., punitively target any deployments | |||
of new bursty malware, in a similar way to how traffic from | of new bursty malware, in a similar way to how traffic from | |||
flooding attack sources is rerouted via scrubbing facilities.</dd> | flooding attack sources is rerouted via scrubbing facilities.</dd> | |||
<dt>Local bottleneck per-flow scheduling:</dt> | <dt>Local bottleneck per-flow scheduling:</dt> | |||
<dd>Per-flow | <dd>Per-flow | |||
scheduling should inherently isolate non-bursty flows from bursty | scheduling should inherently isolate non-bursty flows from bursty fl ows | |||
(see <xref target="l4sps_why-not" format="default"/> for discussion of the merits | (see <xref target="l4sps_why-not" format="default"/> for discussion of the merits | |||
of per-flow scheduling relative to per-flow policing).</dd> | of per-flow scheduling relative to per-flow policing).</dd> | |||
<dt>Distributed access subnet queue protection:</dt> | <dt>Distributed access subnet queue protection:</dt> | |||
<dd>Per-flow | <dd>Per-flow | |||
queue protection could be arranged for a queue structure | queue protection could be arranged for a queue structure | |||
distributed across a subnet intercommunicating using lower layer | distributed across a subnet intercommunicating using lower layer | |||
control messages (see Section 2.1.4 of <xref target="QDyn" format="d efault"/>). For | control messages (see Section 2.1.4 of <xref target="QDyn" format="d efault"/>). For | |||
instance, in a radio access network, user equipment already sends | instance, in a radio access network, user equipment already sends | |||
regular buffer status reports to a radio network controller, which | regular buffer status reports to a radio network controller, which | |||
could use this information to remotely police individual | could use this information to remotely police individual | |||
flows.</dd> | flows.</dd> | |||
<dt>Distributed Congestion Exposure to Ingress Policers:</dt> | <dt>Distributed Congestion Exposure to ingress policers:</dt> | |||
<dd>The | <dd>The | |||
Congestion Exposure (ConEx) architecture <xref target="RFC7713" form | Congestion Exposure (ConEx) architecture <xref target="RFC7713" form | |||
at="default"/> uses egress audit to motivate senders to | at="default"/> uses an egress audit to motivate senders to | |||
truthfully signal path congestion in-band where it can be used by | truthfully signal path congestion in-band, where it can be used by | |||
ingress policers. An edge-to-edge variant of this architecture is | ingress policers. An edge-to-edge variant of this architecture is | |||
also possible.</dd> | also possible.</dd> | |||
<dt>Distributed Domain-edge traffic conditioning:</dt> | <dt>Distributed domain-edge traffic conditioning:</dt> | |||
<dd>An | <dd>An | |||
architecture similar to Diffserv <xref target="RFC2475" format="defa ult"/> may | architecture similar to Diffserv <xref target="RFC2475" format="defa ult"/> may | |||
be preferred, where traffic is proactively conditioned on entry to | be preferred, where traffic is proactively conditioned on entry to | |||
a domain, rather than reactively policed only if it leads to | a domain, rather than reactively policed only if it leads to | |||
queuing once combined with other traffic at a bottleneck.</dd> | queuing once combined with other traffic at a bottleneck.</dd> | |||
<dt>Distributed core network queue protection:</dt> | <dt>Distributed core network queue protection:</dt> | |||
<dd>The | <dd>The | |||
policing function could be divided between per-flow mechanisms at | policing function could be divided between per-flow mechanisms at | |||
the network ingress that characterize the burstiness of each flow | the network ingress that characterize the burstiness of each flow | |||
into a signal carried with the traffic, and per-class mechanisms | into a signal carried with the traffic and per-class mechanisms | |||
at bottlenecks that act on these signals if queuing actually | at bottlenecks that act on these signals if queuing actually | |||
occurs once the traffic converges. This would be somewhat similar | occurs once the traffic converges. This would be somewhat similar | |||
to <xref target="Nadas20" format="default"/>, which is in turn simil ar to the idea | to <xref target="Nadas20" format="default"/>, which is in turn simil ar to the idea | |||
behind core stateless fair queuing.</dd> | behind core stateless fair queuing.</dd> | |||
</dl> | </dl> | |||
<t>No single one of these possible queue protection capabilities is | <t>No single one of these possible queue protection capabilities is | |||
considered an essential part of the L4S architecture, which works | considered an essential part of the L4S architecture, which works | |||
without any of them under non-attack conditions (much as the Internet | without any of them under non-attack conditions (much as the Internet | |||
normally works without per-flow rate policing). Indeed, even where | normally works without per-flow rate policing). | |||
latency policers are deployed, under normal circumstances they would | Indeed, even where | |||
not intervene, and if operators found they were not necessary they | latency policers are deployed, under normal circumstances, they would | |||
not intervene, and if operators found they were not necessary, they | ||||
could disable them. Part of the L4S experiment will be to see whether | could disable them. Part of the L4S experiment will be to see whether | |||
such a function is necessary, and which arrangements are most | such a function is necessary and which arrangements are most | |||
appropriate to the size of the problem.</t> | appropriate to the size of the problem.</t> | |||
</section> | </section> | |||
<section anchor="l4s_arch_sec_policing" numbered="true" toc="default"> | <section anchor="l4s_arch_sec_policing" numbered="true" toc="default"> | |||
<name>Interaction between Rate Policing and L4S</name> | <name>Interaction between Rate Policing and L4S</name> | |||
<t>As mentioned in <xref target="l4sps_why-not" format="default"/>, L4S should remove | <t>As mentioned in <xref target="l4sps_why-not" format="default"/>, L4S should remove | |||
the need for low latency Diffserv classes. However, those Diffserv | the need for low latency Diffserv classes. However, those Diffserv | |||
classes that give certain applications or users priority over | classes that give certain applications or users priority over | |||
capacity, would still be applicable in certain scenarios | capacity would still be applicable in certain scenarios | |||
(e.g. corporate networks). Then, within such Diffserv classes, | (e.g., corporate networks). Then, within such Diffserv classes, | |||
L4S would often be applicable to give traffic low latency and low loss | L4S would often be applicable to give traffic low latency and low loss | |||
as well. Within such a Diffserv class, the bandwidth available to a | as well. Within such a Diffserv class, the bandwidth available to a | |||
user or application is often limited by a rate policer. Similarly, in | user or application is often limited by a rate policer. Similarly, in | |||
the default Diffserv class, rate policers are sometimes used to | the default Diffserv class, rate policers are sometimes used to | |||
partition shared capacity.</t> | partition shared capacity.</t> | |||
<t>A classic rate policer drops any packets exceeding a set rate, | <t>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 noncompliant 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 (<xref target="l4sar ch_sec_non-l4s-neck" format="default"/>). So, in networks that already use | congestion control, thus losing the benefits of L4S (<xref target="l4sar ch_sec_non-l4s-neck" format="default"/>). So in networks that already use | |||
rate policers and plan to deploy L4S, it will be preferable to | rate policers and plan to deploy L4S, it will be preferable to | |||
redesign these rate policers to be more friendly to the L4S | redesign these rate policers to be more friendly to the L4S | |||
service.</t> | service.</t> | |||
<t>L4S-friendly rate policing is currently a research area (note that | <t>L4S-friendly rate policing is currently a research area (note that | |||
this is not the same as latency policing). It might be achieved by | this is not the same as latency policing). It might be achieved by | |||
setting a threshold where ECN marking is introduced, such that it is | setting a threshold where ECN marking is introduced, such that it is | |||
just under the policed rate or just under the burst allowance where | just under the policed rate or just under the burst allowance where | |||
drop is introduced. For instance the two-rate three-colour | drop is introduced. For instance, the two-rate, three-colour | |||
marker <xref target="RFC2698" format="default"/> or a PCN threshold and | marker <xref target="RFC2698" format="default"/> or a PCN threshold and | |||
excess-rate marker <xref target="RFC5670" format="default"/> could mark | excess-rate marker <xref target="RFC5670" format="default"/> could mark | |||
ECN at the | ECN at the | |||
lower rate and drop at the higher. Or an existing rate policer could | lower rate and drop at the higher. Or an existing rate policer could | |||
have congestion-rate policing added, e.g. using the 'local' | have congestion-rate policing added, e.g., using the 'local' | |||
(non-ConEx) variant of the ConEx aggregate congestion | (non-ConEx) variant of the ConEx aggregate congestion | |||
policer <xref target="I-D.briscoe-conex-policing" format="default"/>. It | policer <xref target="I-D.briscoe-conex-policing" format="default"/>. It | |||
might | might | |||
also be possible to design scalable congestion controls to respond | also be possible to design Scalable congestion controls to respond | |||
less catastrophically to loss that has not been preceded by a period | less catastrophically to loss that has not been preceded by a period | |||
of increasing delay.</t> | of increasing delay.</t> | |||
<t>The design of L4S-friendly rate policers will require a separate | <t>The design of L4S-friendly rate policers will require a separate, | |||
dedicated document. For further discussion of the interaction between | dedicated document. For further discussion of the interaction between | |||
L4S and Diffserv, see <xref target="I-D.briscoe-tsvwg-l4s-diffserv" form at="default"/>.</t> | L4S and Diffserv, see <xref target="I-D.briscoe-tsvwg-l4s-diffserv" form at="default"/>.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>ECN Integrity</name> | <name>ECN Integrity</name> | |||
<t>Various ways have been developed to protect the integrity of the | <t>Various ways have been developed to protect the integrity of the | |||
congestion feedback loop (whether signalled by loss, Classic ECN or | congestion feedback loop (whether signalled by loss, Classic ECN, or | |||
L4S ECN) against misbehaviour by the receiver, sender or network (or | L4S ECN) against misbehaviour by the receiver, sender, or network (or | |||
all three). Brief details of each including applicability, pros and | all three). Brief details of each, including applicability, pros, and | |||
cons is given in Appendix C.1 of the L4S ECN spec <xref target="I-D.ietf | cons, are given in <xref target="RFC9331" format="default" sectionFormat | |||
-tsvwg-ecn-l4s-id" format="default"/>.</t> | ="of" section="C.1">the L4S ECN spec</xref>.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Privacy Considerations</name> | <name>Privacy Considerations</name> | |||
<t>As discussed in <xref target="l4sps_why-not" format="default"/>, the L4S | <t>As discussed in <xref target="l4sps_why-not" format="default"/>, the L4S | |||
architecture does not preclude approaches that inspect end-to-end | architecture does not preclude approaches that inspect end-to-end | |||
transport layer identifiers. For instance, L4S support has been added | transport layer identifiers. For instance, L4S support has been added | |||
to FQ-CoDel, which classifies by application flow ID in the network. | to FQ-CoDel, which classifies by application flow identifier in the netw ork. | |||
However, the main innovation of L4S is the DualQ AQM framework that | However, the main innovation of L4S is the DualQ AQM framework that | |||
does not need to inspect any deeper than the outermost IP header, | does not need to inspect any deeper than the outermost IP header, | |||
because the L4S identifier is in the IP-ECN field.</t> | because the L4S identifier is in the IP-ECN field.</t> | |||
<t>Thus, the L4S architecture enables very low queuing delay without | <t>Thus, the L4S architecture enables very low queuing delay without | |||
<em>requiring</em> inspection of information above | <em>requiring</em> inspection of information above | |||
the IP layer. This means that users who want to encrypt application | the IP layer. This means that users who want to encrypt application | |||
flow identifiers, e.g. in IPSec or other encrypted VPN tunnels, | flow identifiers, e.g., in IPsec or other encrypted VPN tunnels, | |||
don't have to sacrifice low delay <xref target="RFC8404" format="default | don't have to sacrifice low delay <xref target="RFC8404" format="default | |||
"/>.</t> | "/>.</t> | |||
<t>Because L4S can provide low delay for a broad set of applications | <t>Because L4S can provide low delay for a broad set of applications | |||
that choose to use it, there is no need for individual applications or | that choose to use it, there is no need for individual applications or | |||
classes within that broad set to be distinguishable in any way while | classes within that broad set to be distinguishable in any way while | |||
traversing networks. This removes much of the ability to correlate | traversing networks. This removes much of the ability to correlate | |||
between the delay requirements of traffic and other identifying | between the delay requirements of traffic and other identifying | |||
features <xref target="RFC6973" format="default"/>. There may be some ty pes of | features <xref target="RFC6973" format="default"/>. There may be some ty pes of | |||
traffic that prefer not to use L4S, but the coarse binary | traffic that prefer not to use L4S, but the coarse binary | |||
categorization of traffic reveals very little that could be exploited | categorization of traffic reveals very little that could be exploited | |||
to compromise privacy.</t> | to compromise privacy.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
</middle> | </middle> | |||
<!-- *****BACK MATTER ***** --> | ||||
<back> | <back> | |||
<displayreference target="I-D.ietf-tcpm-accurate-ecn" to="ACCECN"/> | ||||
<displayreference target="I-D.ietf-tsvwg-nqb" to="NQB-PHB"/> | ||||
<displayreference target="I-D.briscoe-conex-policing" to="CONG-POLICING"/> | ||||
<displayreference target="I-D.stewart-tsvwg-sctpecn" to="ECN-SCTP"/> | ||||
<displayreference target="I-D.sridharan-tcpm-ctcp" to="CTCP"/> | ||||
<displayreference target="I-D.ietf-tsvwg-rfc6040update-shim" to="ECN-SHIM"/> | ||||
<displayreference target="I-D.ietf-tsvwg-ecn-encap-guidelines" to="ECN-ENCAP"/> | ||||
<displayreference target="I-D.ietf-tsvwg-l4sops" to="L4SOPS"/> | ||||
<displayreference target="I-D.briscoe-tsvwg-l4s-diffserv" to="L4S-DIFFSERV"/> | ||||
<displayreference target="I-D.briscoe-docsis-q-protection" to="DOCSIS-Q-PROT"/> | ||||
<displayreference target="I-D.cardwell-iccrg-bbr-congestion-control" to="BBR-CC" | ||||
/> | ||||
<displayreference target="I-D.briscoe-iccrg-prague-congestion-control" to="PRAGU | ||||
E-CC"/> | ||||
<displayreference target="I-D.morton-tsvwg-codel-approx-fair" to="CODEL-APPROX-F | ||||
AIR"/> | ||||
<displayreference target="I-D.mathis-iccrg-relentless-tcp" to="RELENTLESS"/> | ||||
<references> | <references> | |||
<name>Informative References</name> | <name>Informative References</name> | |||
<reference anchor="RFC0970" target="https://www.rfc-editor.org/info/rfc970 | ||||
" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.0970.xml"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.0970. | |||
<front> | xml"/> | |||
<title>On Packet Switches With Infinite Storage</title> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2475. | |||
<author initials="J." surname="Nagle" fullname="J. Nagle"> | xml"/> | |||
<organization/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2698. | |||
</author> | xml"/> | |||
<date year="1985" month="December"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2884. | |||
<abstract> | xml"/> | |||
<t>The purpose of this RFC is to focus discussion on a particular pr | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3168. | |||
oblem in the ARPA-Internet and possible methods of solution. Most prior work | xml"/> | |||
on congestion in datagram systems focuses on buffer management. In this | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4774. | |||
memo the case of a packet switch with infinite storage is considered. Such a | xml"/> | |||
packet switch can never run out of buffers. It can, however, still become co | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6679. | |||
ngested. The meaning of congestion in an infinite-storage system is explored | xml"/> | |||
. An unexpected result is found that shows a datagram network with infinite | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3540. | |||
storage, first-in-first-out queuing, at least two packet switches, and a fini | xml"/> | |||
te packet lifetime will, under overload, drop all packets. By attacking the | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3246. | |||
problem of congestion for the infinite-storage case, new solutions applicable | xml"/> | |||
to switches with finite storage may be found. No proposed solutions this | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3649. | |||
document are intended as standards for the ARPA-Internet at this time.</t> | xml"/> | |||
</abstract> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4340. | |||
</front> | xml"/> | |||
<seriesInfo name="RFC" value="970"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4960. | |||
<seriesInfo name="DOI" value="10.17487/RFC0970"/> | xml"/> | |||
</reference> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5033. | |||
<reference anchor="RFC2475" target="https://www.rfc-editor.org/info/rfc247 | xml"/> | |||
5" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2475.xml"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5348. | |||
<front> | xml"/> | |||
<title>An Architecture for Differentiated Services</title> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5670. | |||
<author initials="S." surname="Blake" fullname="S. Blake"> | xml"/> | |||
<organization/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5681. | |||
</author> | xml"/> | |||
<author initials="D." surname="Black" fullname="D. Black"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6040. | |||
<organization/> | xml"/> | |||
</author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6817. | |||
<author initials="M." surname="Carlson" fullname="M. Carlson"> | xml"/> | |||
<organization/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6973. | |||
</author> | xml"/> | |||
<author initials="E." surname="Davies" fullname="E. Davies"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7560. | |||
<organization/> | xml"/> | |||
</author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7665. | |||
<author initials="Z." surname="Wang" fullname="Z. Wang"> | xml"/> | |||
<organization/> | ||||
</author> | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.ietf-tc | |||
<author initials="W." surname="Weiss" fullname="W. Weiss"> | pm-accurate-ecn.xml"/> | |||
<organization/> | ||||
</author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7713. | |||
<date year="1998" month="December"/> | xml"/> | |||
<abstract> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7567. | |||
<t>This document defines an architecture for implementing scalable s | xml"/> | |||
ervice differentiation in the Internet. This memo provides information for the | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8033. | |||
Internet community.</t> | xml"/> | |||
</abstract> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8034. | |||
</front> | xml"/> | |||
<seriesInfo name="RFC" value="2475"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8170. | |||
<seriesInfo name="DOI" value="10.17487/RFC2475"/> | xml"/> | |||
</reference> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8257. | |||
<reference anchor="RFC2698" target="https://www.rfc-editor.org/info/rfc269 | xml"/> | |||
8" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2698.xml"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8290. | |||
<front> | xml"/> | |||
<title>A Two Rate Three Color Marker</title> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8298. | |||
<author initials="J." surname="Heinanen" fullname="J. Heinanen"> | xml"/> | |||
<organization/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8311. | |||
</author> | xml"/> | |||
<author initials="R." surname="Guerin" fullname="R. Guerin"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8312. | |||
<organization/> | xml"/> | |||
</author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8404. | |||
<date year="1999" month="September"/> | xml"/> | |||
<abstract> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8511. | |||
<t>This document defines a Two Rate Three Color Marker (trTCM), whic | xml"/> | |||
h can be used as a component in a Diffserv traffic conditioner. This memo provi | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8888. | |||
des information for the Internet community.</t> | xml"/> | |||
</abstract> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8985. | |||
</front> | xml"/> | |||
<seriesInfo name="RFC" value="2698"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9000. | |||
<seriesInfo name="DOI" value="10.17487/RFC2698"/> | xml"/> | |||
</reference> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9113. | |||
<reference anchor="RFC2884" target="https://www.rfc-editor.org/info/rfc288 | xml"/> | |||
4" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2884.xml"> | ||||
<front> | <reference anchor="RFC9332" target="https://www.rfc-editor.org/info/rfc9332"> | |||
<title>Performance Evaluation of Explicit Congestion Notification (ECN | <front> | |||
) in IP Networks</title> | <title>Dual-Queue Coupled Active Queue Management (AQM) for Low Latency, Low | |||
<author initials="J." surname="Hadi Salim" fullname="J. Hadi Salim"> | Loss, and Scalable Throughput (L4S)</title> | |||
<organization/> | <author initials="K" surname="De Schepper" fullname="Koen De Schepper"> | |||
</author> | <organization>Nokia Bell Labs</organization> | |||
<author initials="U." surname="Ahmed" fullname="U. Ahmed"> | </author> | |||
<organization/> | <author initials="B" surname="Briscoe" fullname="Bob Briscoe" role="editor"> | |||
</author> | <organization>Independent</organization> | |||
<date year="2000" month="July"/> | </author> | |||
<abstract> | <author initials="G" surname="White" fullname="Greg White"> | |||
<t>This memo presents a performance study of the Explicit Congestion | <organization>CableLabs</organization> | |||
Notification (ECN) mechanism in the TCP/IP protocol using our implementation on | </author> | |||
the Linux Operating System. This memo provides information for the Internet co | <date month="January" year="2023"/> | |||
mmunity.</t> | </front> | |||
</abstract> | <seriesInfo name="RFC" value="9332"/> | |||
</front> | <seriesInfo name="DOI" value="10.17487/RFC9332"/> | |||
<seriesInfo name="RFC" value="2884"/> | </reference> | |||
<seriesInfo name="DOI" value="10.17487/RFC2884"/> | ||||
</reference> | <reference anchor="RFC9331" target="https://www.rfc-editor.org/info/rfc9331"> | |||
<reference anchor="RFC3168" target="https://www.rfc-editor.org/info/rfc316 | <front> | |||
8" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3168.xml"> | <title>The Explicit Congestion Notification (ECN) Protocol for Low Latency, | |||
<front> | Low Loss, and Scalable Throughput (L4S)</title> | |||
<title>The Addition of Explicit Congestion Notification (ECN) to IP</t | <author initials="K" surname="De Schepper" fullname="Koen De Schepper"> | |||
itle> | <organization>Nokia Bell Labs</organization> | |||
<author initials="K." surname="Ramakrishnan" fullname="K. Ramakrishnan | </author> | |||
"> | <author initials="B" surname="Briscoe" fullname="Bob Briscoe" role="editor"> | |||
<organization/> | <organization>Independent</organization> | |||
</author> | </author> | |||
<author initials="S." surname="Floyd" fullname="S. Floyd"> | <date month="January" year="2023"/> | |||
<organization/> | </front> | |||
</author> | <seriesInfo name="RFC" value="9331"/> | |||
<author initials="D." surname="Black" fullname="D. Black"> | <seriesInfo name="DOI" value="10.17487/RFC9331"/> | |||
<organization/> | </reference> | |||
</author> | ||||
<date year="2001" month="September"/> | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.ietf-ts | |||
<abstract> | vwg-nqb.xml"/> | |||
<t>This memo specifies the incorporation of ECN (Explicit Congestion | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.briscoe | |||
Notification) to TCP and IP, including ECN's use of two bits in the IP header. | -conex-policing.xml"/> | |||
[STANDARDS-TRACK]</t> | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.stewart | |||
</abstract> | -tsvwg-sctpecn.xml"/> | |||
</front> | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.sridhar | |||
<seriesInfo name="RFC" value="3168"/> | an-tcpm-ctcp.xml"/> | |||
<seriesInfo name="DOI" value="10.17487/RFC3168"/> | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.ietf-ts | |||
</reference> | vwg-rfc6040update-shim.xml"/> | |||
<reference anchor="RFC4774" target="https://www.rfc-editor.org/info/rfc477 | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.ietf-ts | |||
4" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4774.xml"> | vwg-ecn-encap-guidelines.xml"/> | |||
<front> | ||||
<title>Specifying Alternate Semantics for the Explicit Congestion Noti | <reference anchor="I-D.ietf-tsvwg-l4sops" target="https://datatracker.ietf.org/d | |||
fication (ECN) Field</title> | oc/html/draft-ietf-tsvwg-l4sops-03"> | |||
<author initials="S." surname="Floyd" fullname="S. Floyd"> | <front> | |||
<organization/> | <title> | |||
</author> | Operational Guidance for Deployment of L4S in the Internet | |||
<date year="2006" month="November"/> | </title> | |||
<abstract> | <author fullname="Greg White" initials="G." surname="White" role="editor"> | |||
<t>There have been a number of proposals for alternate semantics for | <organization>CableLabs</organization> | |||
the Explicit Congestion Notification (ECN) field in the IP header RFC 3168. Th | </author> | |||
is document discusses some of the issues in defining alternate semantics for the | <date month="April" day="28" year="2022"/> | |||
ECN field, and specifies requirements for a safe coexistence in an Internet tha | </front> | |||
t could include routers that do not understand the defined alternate semantics. | <seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-l4sops-03"/> | |||
This document evolved as a result of discussions with the authors of one recent | <format type="TXT" target="https://www.ietf.org/archive/id/draft-ietf-tsvwg-l4so | |||
proposal for such alternate semantics. This document specifies an Internet Bes | ps-03.txt"/> | |||
t Current Practices for the Internet Community, and requests discussion and sugg | </reference> | |||
estions for improvements.</t> | ||||
</abstract> | <xi:include | |||
</front> | href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.briscoe-tsvwg-l4s-d | |||
<seriesInfo name="BCP" value="124"/> | iffserv.xml"/> | |||
<seriesInfo name="RFC" value="4774"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4774"/> | <reference anchor="I-D.briscoe-docsis-q-protection" target="https://datatracker. | |||
</reference> | ietf.org/doc/html/draft-briscoe-docsis-q-protection-06"> | |||
<reference anchor="RFC6679" target="https://www.rfc-editor.org/info/rfc667 | <front> | |||
9" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6679.xml"> | <title>The DOCSIS(R) Queue Protection Algorithm to Preserve Low Latency</tit | |||
<front> | le> | |||
<title>Explicit Congestion Notification (ECN) for RTP over UDP</title> | <author initials="B" surname="Briscoe" fullname="Bob Briscoe" role="editor"> | |||
<author initials="M." surname="Westerlund" fullname="M. Westerlund"> | <organization>Independent</organization> | |||
<organization/> | </author> | |||
</author> | <author initials="G" surname="White" fullname="Greg White"> | |||
<author initials="I." surname="Johansson" fullname="I. Johansson"> | <organization>CableLabs</organization> | |||
<organization/> | </author> | |||
</author> | <date day="13" month="May" year="2022"/> | |||
<author initials="C." surname="Perkins" fullname="C. Perkins"> | </front> | |||
<organization/> | <seriesInfo name="Internet-Draft" value="draft-briscoe-docsis-q-protection-06" | |||
</author> | /> | |||
<author initials="P." surname="O'Hanlon" fullname="P. O'Hanlon"> | </reference> | |||
<organization/> | ||||
</author> | <xi:include | |||
<author initials="K." surname="Carlberg" fullname="K. Carlberg"> | href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.cardwell-iccrg-bbr- | |||
<organization/> | congestion-control.xml"/> | |||
</author> | ||||
<date year="2012" month="August"/> | <reference anchor="I-D.briscoe-iccrg-prague-congestion-control" target="https:// | |||
<abstract> | datatracker.ietf.org/doc/html/draft-briscoe-iccrg-prague-congestion-control-01"> | |||
<t>This memo specifies how Explicit Congestion Notification (ECN) ca | <front> | |||
n be used with the Real-time Transport Protocol (RTP) running over UDP, using th | <title>Prague Congestion Control</title> | |||
e RTP Control Protocol (RTCP) as a feedback mechanism. It defines a new RTCP Ex | <author initials="K" surname="De Schepper"> | |||
tended Report (XR) block for periodic ECN feedback, a new RTCP transport feedbac | <organization>Nokia Bell Labs</organization> | |||
k message for timely reporting of congestion events, and a Session Traversal Uti | </author> | |||
lities for NAT (STUN) extension used in the optional initialisation method using | <author fullname="Olivier Tilmans"> | |||
Interactive Connectivity Establishment (ICE). Signalling and procedures for ne | <organization>Nokia Bell Labs</organization> | |||
gotiation of capabilities and initialisation methods are also defined. [STANDAR | </author> | |||
DS-TRACK]</t> | <author fullname="Bob Briscoe" role="editor"> | |||
</abstract> | <organization>Independent</organization> | |||
</front> | </author> | |||
<seriesInfo name="RFC" value="6679"/> | <date day="11" month="July" year="2022"/> | |||
<seriesInfo name="DOI" value="10.17487/RFC6679"/> | </front> | |||
</reference> | <seriesInfo name="Internet-Draft" value="draft-briscoe-iccrg-prague-congestion | |||
<reference anchor="RFC3540" target="https://www.rfc-editor.org/info/rfc354 | -control-01"/> | |||
0" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3540.xml"> | </reference> | |||
<front> | ||||
<title>Robust Explicit Congestion Notification (ECN) Signaling with No | <xi:include | |||
nces</title> | href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.morton-tsvwg-codel- | |||
<author initials="N." surname="Spring" fullname="N. Spring"> | approx-fair.xml"/> | |||
<organization/> | ||||
</author> | ||||
<author initials="D." surname="Wetherall" fullname="D. Wetherall"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="D." surname="Ely" fullname="D. Ely"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2003" month="June"/> | ||||
<abstract> | ||||
<t>This note describes the Explicit Congestion Notification (ECN)-no | ||||
nce, an optional addition to ECN that protects against accidental or malicious c | ||||
oncealment of marked packets from the TCP sender. It improves the robustness of | ||||
congestion control by preventing receivers from exploiting ECN to gain an unfai | ||||
r share of network bandwidth. The ECN-nonce uses the two ECN-Capable Transport | ||||
(ECT)codepoints in the ECN field of the IP header, and requires a flag in the TC | ||||
P header. It is computationally efficient for both routers and hosts. This mem | ||||
o defines an Experimental Protocol for the Internet community.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="3540"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3540"/> | ||||
</reference> | ||||
<reference anchor="RFC3246" target="https://www.rfc-editor.org/info/rfc324 | ||||
6" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3246.xml"> | ||||
<front> | ||||
<title>An Expedited Forwarding PHB (Per-Hop Behavior)</title> | ||||
<author initials="B." surname="Davie" fullname="B. Davie"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="A." surname="Charny" fullname="A. Charny"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="J.C.R." surname="Bennet" fullname="J.C.R. Bennet"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="K." surname="Benson" fullname="K. Benson"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="J.Y." surname="Le Boudec" fullname="J.Y. Le Boudec"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="W." surname="Courtney" fullname="W. Courtney"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="S." surname="Davari" fullname="S. Davari"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="V." surname="Firoiu" fullname="V. Firoiu"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="D." surname="Stiliadis" fullname="D. Stiliadis"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2002" month="March"/> | ||||
<abstract> | ||||
<t>This document defines a PHB (per-hop behavior) called Expedited F | ||||
orwarding (EF). The PHB is a basic building block in the Differentiated Service | ||||
s architecture. EF is intended to provide a building block for low delay, low j | ||||
itter and low loss services by ensuring that the EF aggregate is served at a cer | ||||
tain configured rate. This document obsoletes RFC 2598. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="3246"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3246"/> | ||||
</reference> | ||||
<reference anchor="RFC3649" target="https://www.rfc-editor.org/info/rfc364 | ||||
9" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3649.xml"> | ||||
<front> | ||||
<title>HighSpeed TCP for Large Congestion Windows</title> | ||||
<author initials="S." surname="Floyd" fullname="S. Floyd"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2003" month="December"/> | ||||
<abstract> | ||||
<t>The proposals in this document are experimental. While they may | ||||
be deployed in the current Internet, they do not represent a consensus that this | ||||
is the best method for high-speed congestion control. In particular, we note t | ||||
hat alternative experimental proposals are likely to be forthcoming, and it is n | ||||
ot well understood how the proposals in this document will interact with such al | ||||
ternative proposals. This document proposes HighSpeed TCP, a modification to TC | ||||
P's congestion control mechanism for use with TCP connections with large congest | ||||
ion windows. The congestion control mechanisms of the current Standard TCP cons | ||||
trains the congestion windows that can be achieved by TCP in realistic environme | ||||
nts. For example, for a Standard TCP connection with 1500-byte packets and a 10 | ||||
0 ms round-trip time, achieving a steady-state throughput of 10 Gbps would requi | ||||
re an average congestion window of 83,333 segments, and a packet drop rate of at | ||||
most one congestion event every 5,000,000,000 packets (or equivalently, at most | ||||
one congestion event every 1 2/3 hours). This is widely acknowledged as an unr | ||||
ealistic constraint. To address his limitation of TCP, this document proposes H | ||||
ighSpeed TCP, and solicits experimentation and feedback from the wider community | ||||
.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="3649"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3649"/> | ||||
</reference> | ||||
<reference anchor="RFC4340" target="https://www.rfc-editor.org/info/rfc434 | ||||
0" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4340.xml"> | ||||
<front> | ||||
<title>Datagram Congestion Control Protocol (DCCP)</title> | ||||
<author initials="E." surname="Kohler" fullname="E. Kohler"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="M." surname="Handley" fullname="M. Handley"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="S." surname="Floyd" fullname="S. Floyd"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2006" month="March"/> | ||||
<abstract> | ||||
<t>The Datagram Congestion Control Protocol (DCCP) is a transport pr | ||||
otocol that provides bidirectional unicast connections of congestion-controlled | ||||
unreliable datagrams. DCCP is suitable for applications that transfer fairly la | ||||
rge amounts of data and that can benefit from control over the tradeoff between | ||||
timeliness and reliability. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="4340"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4340"/> | ||||
</reference> | ||||
<reference anchor="RFC4960" target="https://www.rfc-editor.org/info/rfc496 | ||||
0" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4960.xml"> | ||||
<front> | ||||
<title>Stream Control Transmission Protocol</title> | ||||
<author initials="R." surname="Stewart" fullname="R. Stewart" role="ed | ||||
itor"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2007" month="September"/> | ||||
<abstract> | ||||
<t>This document obsoletes RFC 2960 and RFC 3309. It describes the | ||||
Stream Control Transmission Protocol (SCTP). SCTP is designed to transport Publ | ||||
ic Switched Telephone Network (PSTN) signaling messages over IP networks, but is | ||||
capable of broader applications.</t> | ||||
<t>SCTP is a reliable transport protocol operating on top of a conne | ||||
ctionless packet network such as IP. It offers the following services to its us | ||||
ers:</t> | ||||
<t>-- acknowledged error-free non-duplicated transfer of user data, | ||||
</t> | ||||
<t>-- data fragmentation to conform to discovered path MTU size,</t | ||||
> | ||||
<t>-- sequenced delivery of user messages within multiple streams, | ||||
with an option for order-of-arrival delivery of individual user messages,</t> | ||||
<t>-- optional bundling of multiple user messages into a single SCT | ||||
P packet, and</t> | ||||
<t>-- network-level fault tolerance through supporting of multi-hom | ||||
ing at either or both ends of an association.</t> | ||||
<t> The design of SCTP includes appropriate congestion avoidance beh | ||||
avior and resistance to flooding and masquerade attacks. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="4960"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4960"/> | ||||
</reference> | ||||
<reference anchor="RFC5033" target="https://www.rfc-editor.org/info/rfc503 | ||||
3" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5033.xml"> | ||||
<front> | ||||
<title>Specifying New Congestion Control Algorithms</title> | ||||
<author initials="S." surname="Floyd" fullname="S. Floyd"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="M." surname="Allman" fullname="M. Allman"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2007" month="August"/> | ||||
<abstract> | ||||
<t>The IETF's standard congestion control schemes have been widely s | ||||
hown to be inadequate for various environments (e.g., high-speed networks). Rec | ||||
ent research has yielded many alternate congestion control schemes that signific | ||||
antly differ from the IETF's congestion control principles. Using these new con | ||||
gestion control schemes in the global Internet has possible ramifications to bot | ||||
h the traffic using the new congestion control and to traffic using the currentl | ||||
y standardized congestion control. Therefore, the IETF must proceed with cautio | ||||
n when dealing with alternate congestion control proposals. The goal of this do | ||||
cument is to provide guidance for considering alternate congestion control algor | ||||
ithms within the IETF. This document specifies an Internet Best Current Practic | ||||
es for the Internet Community, and requests discussion and suggestions for impro | ||||
vements.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="133"/> | ||||
<seriesInfo name="RFC" value="5033"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5033"/> | ||||
</reference> | ||||
<reference anchor="RFC5348" target="https://www.rfc-editor.org/info/rfc534 | ||||
8" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5348.xml"> | ||||
<front> | ||||
<title>TCP Friendly Rate Control (TFRC): Protocol Specification</title | ||||
> | ||||
<author initials="S." surname="Floyd" fullname="S. Floyd"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="M." surname="Handley" fullname="M. Handley"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="J." surname="Padhye" fullname="J. Padhye"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="J." surname="Widmer" fullname="J. Widmer"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2008" month="September"/> | ||||
<abstract> | ||||
<t>This document specifies TCP Friendly Rate Control (TFRC). TFRC i | ||||
s a congestion control mechanism for unicast flows operating in a best-effort In | ||||
ternet environment. It is reasonably fair when competing for bandwidth with TCP | ||||
flows, but has a much lower variation of throughput over time compared with TCP | ||||
, making it more suitable for applications such as streaming media where a relat | ||||
ively smooth sending rate is of importance.</t> | ||||
<t>This document obsoletes RFC 3448 and updates RFC 4342. [STANDARD | ||||
S-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5348"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5348"/> | ||||
</reference> | ||||
<reference anchor="RFC5670" target="https://www.rfc-editor.org/info/rfc567 | ||||
0" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5670.xml"> | ||||
<front> | ||||
<title>Metering and Marking Behaviour of PCN-Nodes</title> | ||||
<author initials="P." surname="Eardley" fullname="P. Eardley" role="ed | ||||
itor"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2009" month="November"/> | ||||
<abstract> | ||||
<t>The objective of Pre-Congestion Notification (PCN) is to protect | ||||
the quality of service (QoS) of inelastic flows within a Diffserv domain in a si | ||||
mple, scalable, and robust fashion. This document defines the two metering and | ||||
marking behaviours of PCN-nodes. Threshold-metering and -marking marks all PCN- | ||||
packets if the rate of PCN-traffic is greater than a configured rate ("PCN-thres | ||||
hold-rate"). Excess- traffic-metering and -marking marks a proportion of PCN-pa | ||||
ckets, such that the amount marked equals the rate of PCN-traffic in excess of a | ||||
configured rate ("PCN-excess-rate"). The level of marking allows PCN-boundary- | ||||
nodes to make decisions about whether to admit or terminate PCN-flows. [STANDAR | ||||
DS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5670"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5670"/> | ||||
</reference> | ||||
<reference anchor="RFC5681" target="https://www.rfc-editor.org/info/rfc568 | ||||
1" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5681.xml"> | ||||
<front> | ||||
<title>TCP Congestion Control</title> | ||||
<author initials="M." surname="Allman" fullname="M. Allman"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="V." surname="Paxson" fullname="V. Paxson"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="E." surname="Blanton" fullname="E. Blanton"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2009" month="September"/> | ||||
<abstract> | ||||
<t>This document defines TCP's four intertwined congestion control a | ||||
lgorithms: slow start, congestion avoidance, fast retransmit, and fast recovery. | ||||
In addition, the document specifies how TCP should begin transmission after a | ||||
relatively long idle period, as well as discussing various acknowledgment genera | ||||
tion methods. This document obsoletes RFC 2581. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5681"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5681"/> | ||||
</reference> | ||||
<reference anchor="RFC6040" target="https://www.rfc-editor.org/info/rfc604 | ||||
0" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6040.xml"> | ||||
<front> | ||||
<title>Tunnelling of Explicit Congestion Notification</title> | ||||
<author initials="B." surname="Briscoe" fullname="B. Briscoe"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2010" month="November"/> | ||||
<abstract> | ||||
<t>This document redefines how the explicit congestion notification | ||||
(ECN) field of the IP header should be constructed on entry to and exit from any | ||||
IP-in-IP tunnel. On encapsulation, it updates RFC 3168 to bring all IP-in-IP t | ||||
unnels (v4 or v6) into line with RFC 4301 IPsec ECN processing. On decapsulatio | ||||
n, it updates both RFC 3168 and RFC 4301 to add new behaviours for previously un | ||||
used combinations of inner and outer headers. The new rules ensure the ECN fiel | ||||
d is correctly propagated across a tunnel whether it is used to signal one or tw | ||||
o severity levels of congestion; whereas before, only one severity level was sup | ||||
ported. Tunnel endpoints can be updated in any order without affecting pre-exis | ||||
ting uses of the ECN field, thus ensuring backward compatibility. Nonetheless, | ||||
operators wanting to support two severity levels (e.g., for pre-congestion notif | ||||
ication -- PCN) can require compliance with this new specification. A thorough | ||||
analysis of the reasoning for these changes and the implications is included. I | ||||
n the unlikely event that the new rules do not meet a specific need, RFC 4774 gi | ||||
ves guidance on designing alternate ECN semantics, and this document extends tha | ||||
t to include tunnelling issues. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6040"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6040"/> | ||||
</reference> | ||||
<reference anchor="RFC6817" target="https://www.rfc-editor.org/info/rfc681 | ||||
7" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6817.xml"> | ||||
<front> | ||||
<title>Low Extra Delay Background Transport (LEDBAT)</title> | ||||
<author initials="S." surname="Shalunov" fullname="S. Shalunov"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="G." surname="Hazel" fullname="G. Hazel"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="J." surname="Iyengar" fullname="J. Iyengar"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="M." surname="Kuehlewind" fullname="M. Kuehlewind"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2012" month="December"/> | ||||
<abstract> | ||||
<t>Low Extra Delay Background Transport (LEDBAT) is an experimental | ||||
delay-based congestion control algorithm that seeks to utilize the available ban | ||||
dwidth on an end-to-end path while limiting the consequent increase in queueing | ||||
delay on that path. LEDBAT uses changes in one-way delay measurements to limit | ||||
congestion that the flow itself induces in the network. LEDBAT is designed for | ||||
use by background bulk-transfer applications to be no more aggressive than stand | ||||
ard TCP congestion control (as specified in RFC 5681) and to yield in the presen | ||||
ce of competing flows, thus limiting interference with the network performance o | ||||
f competing flows. This document defines an Experimental Protocol for the Inte | ||||
rnet community.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6817"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6817"/> | ||||
</reference> | ||||
<reference anchor="RFC6973" target="https://www.rfc-editor.org/info/rfc697 | ||||
3" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6973.xml"> | ||||
<front> | ||||
<title>Privacy Considerations for Internet Protocols</title> | ||||
<author initials="A." surname="Cooper" fullname="A. Cooper"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="H." surname="Tschofenig" fullname="H. Tschofenig"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="B." surname="Aboba" fullname="B. Aboba"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="J." surname="Peterson" fullname="J. Peterson"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="J." surname="Morris" fullname="J. Morris"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="M." surname="Hansen" fullname="M. Hansen"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="R." surname="Smith" fullname="R. Smith"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2013" month="July"/> | ||||
<abstract> | ||||
<t>This document offers guidance for developing privacy consideratio | ||||
ns for inclusion in protocol specifications. It aims to make designers, impleme | ||||
nters, and users of Internet protocols aware of privacy-related design choices. | ||||
It suggests that whether any individual RFC warrants a specific privacy conside | ||||
rations section will depend on the document's content.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6973"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6973"/> | ||||
</reference> | ||||
<reference anchor="RFC7560" target="https://www.rfc-editor.org/info/rfc756 | ||||
0" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7560.xml"> | ||||
<front> | ||||
<title>Problem Statement and Requirements for Increased Accuracy in Ex | ||||
plicit Congestion Notification (ECN) Feedback</title> | ||||
<author initials="M." surname="Kuehlewind" fullname="M. Kuehlewind" ro | ||||
le="editor"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="R." surname="Scheffenegger" fullname="R. Scheffenegg | ||||
er"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="B." surname="Briscoe" fullname="B. Briscoe"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2015" month="August"/> | ||||
<abstract> | ||||
<t>Explicit Congestion Notification (ECN) is a mechanism where netwo | ||||
rk nodes can mark IP packets, instead of dropping them, to indicate congestion t | ||||
o the endpoints. An ECN-capable receiver will feed this information back to the | ||||
sender. ECN is specified for TCP in such a way that it can only feed back one | ||||
congestion signal per Round-Trip Time (RTT). In contrast, ECN for other transpo | ||||
rt protocols, such as RTP/UDP and SCTP, is specified with more accurate ECN feed | ||||
back. Recent new TCP mechanisms (like Congestion Exposure (ConEx) or Data Center | ||||
TCP (DCTCP)) need more accurate ECN feedback in the case where more than one ma | ||||
rking is received in one RTT. This document specifies requirements for an updat | ||||
e to the TCP protocol to provide more accurate ECN feedback.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7560"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7560"/> | ||||
</reference> | ||||
<reference anchor="RFC7665" target="https://www.rfc-editor.org/info/rfc766 | ||||
5" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7665.xml"> | ||||
<front> | ||||
<title>Service Function Chaining (SFC) Architecture</title> | ||||
<author initials="J." surname="Halpern" fullname="J. Halpern" role="ed | ||||
itor"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="C." surname="Pignataro" fullname="C. Pignataro" role | ||||
="editor"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2015" month="October"/> | ||||
<abstract> | ||||
<t>This document describes an architecture for the specification, cr | ||||
eation, and ongoing maintenance of Service Function Chains (SFCs) in a network. | ||||
It includes architectural concepts, principles, and components used in the cons | ||||
truction of composite services through deployment of SFCs, with a focus on those | ||||
to be standardized in the IETF. This document does not propose solutions, prot | ||||
ocols, or extensions to existing protocols.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7665"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7665"/> | ||||
</reference> | ||||
<reference anchor="I-D.ietf-tcpm-accurate-ecn" target="https://datatracker | ||||
.ietf.org/api/v1/doc/document/draft-ietf-tcpm-accurate-ecn/" xml:base="https://b | ||||
ib.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-tcpm-accurate-ecn.xml"> | ||||
<front> | ||||
<title>More Accurate ECN Feedback in TCP</title> | ||||
<author fullname="Bob Briscoe"/> | ||||
<author fullname="Mirja Kühlewind"/> | ||||
<author fullname="Richard Scheffenegger"/> | ||||
<date day="25" month="July" year="2022"/> | ||||
<abstract> | ||||
<t>Explicit Congestion Notification (ECN) is a mechanism where netwo | ||||
rk | ||||
nodes can mark IP packets instead of dropping them to indicate | ||||
incipient congestion to the end-points. Receivers with an ECN- | ||||
capable transport protocol feed back this information to the sender. | ||||
ECN was originally specified for TCP in such a way that only one | ||||
feedback signal can be transmitted per Round-Trip Time (RTT). Recent | ||||
new TCP mechanisms like Congestion Exposure (ConEx), Data Center TCP | ||||
(DCTCP) or Low Latency Low Loss Scalable Throughput (L4S) need more | ||||
accurate ECN feedback information whenever more than one marking is | ||||
received in one RTT. This document updates the original ECN | ||||
specification to specify a scheme to provide more than one feedback | ||||
signal per RTT in the TCP header. Given TCP header space is scarce, | ||||
it allocates a reserved header bit previously assigned to the ECN- | ||||
Nonce. It also overloads the two existing ECN flags in the TCP | ||||
header. The resulting extra space is exploited to feed back the IP- | ||||
ECN field received during the 3-way handshake as well. Supplementary | ||||
feedback information can optionally be provided in a new TCP option, | ||||
which is never used on the TCP SYN. The document also specifies the | ||||
treatment of this updated TCP wire protocol by middleboxes.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-tcpm-accurate-ecn-20 | ||||
"/> | ||||
</reference> | ||||
<reference anchor="RFC7713" target="https://www.rfc-editor.org/info/rfc771 | ||||
3" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7713.xml"> | ||||
<front> | ||||
<title>Congestion Exposure (ConEx) Concepts, Abstract Mechanism, and R | ||||
equirements</title> | ||||
<author initials="M." surname="Mathis" fullname="M. Mathis"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="B." surname="Briscoe" fullname="B. Briscoe"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2015" month="December"/> | ||||
<abstract> | ||||
<t>This document describes an abstract mechanism by which senders in | ||||
form the network about the congestion recently encountered by packets in the sam | ||||
e flow. Today, network elements at any layer may signal congestion to the recei | ||||
ver by dropping packets or by Explicit Congestion Notification (ECN) markings, a | ||||
nd the receiver passes this information back to the sender in transport-layer fe | ||||
edback. The mechanism described here enables the sender to also relay this cong | ||||
estion information back into the network in-band at the IP layer, such that the | ||||
total amount of congestion from all elements on the path is revealed to all IP e | ||||
lements along the path, where it could, for example, be used to provide input to | ||||
traffic management. This mechanism is called Congestion Exposure, or ConEx. T | ||||
he companion document, "Congestion Exposure (ConEx) Concepts and Use Cases" (RFC | ||||
6789), provides the entry point to the set of ConEx documentation.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7713"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7713"/> | ||||
</reference> | ||||
<reference anchor="RFC7567" target="https://www.rfc-editor.org/info/rfc756 | ||||
7" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7567.xml"> | ||||
<front> | ||||
<title>IETF Recommendations Regarding Active Queue Management</title> | ||||
<author initials="F." surname="Baker" fullname="F. Baker" role="editor | ||||
"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="G." surname="Fairhurst" fullname="G. Fairhurst" role | ||||
="editor"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2015" month="July"/> | ||||
<abstract> | ||||
<t>This memo presents recommendations to the Internet community conc | ||||
erning measures to improve and preserve Internet performance. It presents a str | ||||
ong recommendation for testing, standardization, and widespread deployment of ac | ||||
tive queue management (AQM) in network devices to improve the performance of tod | ||||
ay's Internet. It also urges a concerted effort of research, measurement, and u | ||||
ltimate deployment of AQM mechanisms to protect the Internet from flows that are | ||||
not sufficiently responsive to congestion notification.</t> | ||||
<t>Based on 15 years of experience and new research, this document r | ||||
eplaces the recommendations of RFC 2309.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="197"/> | ||||
<seriesInfo name="RFC" value="7567"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7567"/> | ||||
</reference> | ||||
<reference anchor="RFC8033" target="https://www.rfc-editor.org/info/rfc803 | ||||
3" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8033.xml"> | ||||
<front> | ||||
<title>Proportional Integral Controller Enhanced (PIE): A Lightweight | ||||
Control Scheme to Address the Bufferbloat Problem</title> | ||||
<author initials="R." surname="Pan" fullname="R. Pan"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="P." surname="Natarajan" fullname="P. Natarajan"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="F." surname="Baker" fullname="F. Baker"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="G." surname="White" fullname="G. White"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2017" month="February"/> | ||||
<abstract> | ||||
<t>Bufferbloat is a phenomenon in which excess buffers in the networ | ||||
k cause high latency and latency variation. As more and more interactive applic | ||||
ations (e.g., voice over IP, real-time video streaming, and financial transactio | ||||
ns) run in the Internet, high latency and latency variation degrade application | ||||
performance. There is a pressing need to design intelligent queue management sc | ||||
hemes that can control latency and latency variation, and hence provide desirabl | ||||
e quality of service to users.</t> | ||||
<t>This document presents a lightweight active queue management desi | ||||
gn called "PIE" (Proportional Integral controller Enhanced) that can effectively | ||||
control the average queuing latency to a target value. Simulation results, theo | ||||
retical analysis, and Linux testbed results have shown that PIE can ensure low l | ||||
atency and achieve high link utilization under various congestion situations. T | ||||
he design does not require per-packet timestamps, so it incurs very little overh | ||||
ead and is simple enough to implement in both hardware and software.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8033"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8033"/> | ||||
</reference> | ||||
<reference anchor="RFC8034" target="https://www.rfc-editor.org/info/rfc803 | ||||
4" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8034.xml"> | ||||
<front> | ||||
<title>Active Queue Management (AQM) Based on Proportional Integral Co | ||||
ntroller Enhanced PIE) for Data-Over-Cable Service Interface Specifications (DOC | ||||
SIS) Cable Modems</title> | ||||
<author initials="G." surname="White" fullname="G. White"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="R." surname="Pan" fullname="R. Pan"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2017" month="February"/> | ||||
<abstract> | ||||
<t>Cable modems based on Data-Over-Cable Service Interface Specifica | ||||
tions (DOCSIS) provide broadband Internet access to over one hundred million use | ||||
rs worldwide. In some cases, the cable modem connection is the bottleneck (lowe | ||||
st speed) link between the customer and the Internet. As a result, the impact o | ||||
f buffering and bufferbloat in the cable modem can have a significant effect on | ||||
user experience. The CableLabs DOCSIS 3.1 specification introduces requirements | ||||
for cable modems to support an Active Queue Management (AQM) algorithm that is | ||||
intended to alleviate the impact that buffering has on latency-sensitive traffic | ||||
, while preserving bulk throughput performance. In addition, the CableLabs DOCS | ||||
IS 3.0 specifications have also been amended to contain similar requirements. T | ||||
his document describes the requirements on AQM that apply to DOCSIS equipment, i | ||||
ncluding a description of the "DOCSIS-PIE" algorithm that is required on DOCSIS | ||||
3.1 cable modems.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8034"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8034"/> | ||||
</reference> | ||||
<reference anchor="RFC8170" target="https://www.rfc-editor.org/info/rfc817 | ||||
0" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8170.xml"> | ||||
<front> | ||||
<title>Planning for Protocol Adoption and Subsequent Transitions</titl | ||||
e> | ||||
<author initials="D." surname="Thaler" fullname="D. Thaler" role="edit | ||||
or"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2017" month="May"/> | ||||
<abstract> | ||||
<t>Over the many years since the introduction of the Internet Protoc | ||||
ol, we have seen a number of transitions throughout the protocol stack, such as | ||||
deploying a new protocol, or updating or replacing an existing protocol. Many p | ||||
rotocols and technologies were not designed to enable smooth transition to alter | ||||
natives or to easily deploy extensions; thus, some transitions, such as the intr | ||||
oduction of IPv6, have been difficult. This document attempts to summarize some | ||||
basic principles to enable future transitions, and it also summarizes what make | ||||
s for a good transition plan.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8170"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8170"/> | ||||
</reference> | ||||
<reference anchor="RFC8257" target="https://www.rfc-editor.org/info/rfc825 | ||||
7" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8257.xml"> | ||||
<front> | ||||
<title>Data Center TCP (DCTCP): TCP Congestion Control for Data Center | ||||
s</title> | ||||
<author initials="S." surname="Bensley" fullname="S. Bensley"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="D." surname="Thaler" fullname="D. Thaler"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="P." surname="Balasubramanian" fullname="P. Balasubra | ||||
manian"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="L." surname="Eggert" fullname="L. Eggert"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="G." surname="Judd" fullname="G. Judd"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2017" month="October"/> | ||||
<abstract> | ||||
<t>This Informational RFC describes Data Center TCP (DCTCP): a TCP c | ||||
ongestion control scheme for data-center traffic. DCTCP extends the Explicit Co | ||||
ngestion Notification (ECN) processing to estimate the fraction of bytes that en | ||||
counter congestion rather than simply detecting that some congestion has occurre | ||||
d. DCTCP then scales the TCP congestion window based on this estimate. This me | ||||
thod achieves high-burst tolerance, low latency, and high throughput with shallo | ||||
w- buffered switches. This memo also discusses deployment issues related to the | ||||
coexistence of DCTCP and conventional TCP, discusses the lack of a negotiating | ||||
mechanism between sender and receiver, and presents some possible mitigations. | ||||
This memo documents DCTCP as currently implemented by several major operating sy | ||||
stems. DCTCP, as described in this specification, is applicable to deployments | ||||
in controlled environments like data centers, but it must not be deployed over t | ||||
he public Internet without additional measures.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8257"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8257"/> | ||||
</reference> | ||||
<reference anchor="RFC8290" target="https://www.rfc-editor.org/info/rfc829 | ||||
0" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8290.xml"> | ||||
<front> | ||||
<title>The Flow Queue CoDel Packet Scheduler and Active Queue Manageme | ||||
nt Algorithm</title> | ||||
<author initials="T." surname="Hoeiland-Joergensen" fullname="T. Hoeil | ||||
and-Joergensen"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="P." surname="McKenney" fullname="P. McKenney"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="D." surname="Taht" fullname="D. Taht"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="J." surname="Gettys" fullname="J. Gettys"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="E." surname="Dumazet" fullname="E. Dumazet"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2018" month="January"/> | ||||
<abstract> | ||||
<t>This memo presents the FQ-CoDel hybrid packet scheduler and Activ | ||||
e Queue Management (AQM) algorithm, a powerful tool for fighting bufferbloat and | ||||
reducing latency.</t> | ||||
<t>FQ-CoDel mixes packets from multiple flows and reduces the impact | ||||
of head-of-line blocking from bursty traffic. It provides isolation for low-ra | ||||
te traffic such as DNS, web, and videoconferencing traffic. It improves utilisa | ||||
tion across the networking fabric, especially for bidirectional traffic, by keep | ||||
ing queue lengths short, and it can be implemented in a memory- and CPU-efficien | ||||
t fashion across a wide range of hardware.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8290"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8290"/> | ||||
</reference> | ||||
<reference anchor="RFC8298" target="https://www.rfc-editor.org/info/rfc829 | ||||
8" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8298.xml"> | ||||
<front> | ||||
<title>Self-Clocked Rate Adaptation for Multimedia</title> | ||||
<author initials="I." surname="Johansson" fullname="I. Johansson"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="Z." surname="Sarker" fullname="Z. Sarker"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2017" month="December"/> | ||||
<abstract> | ||||
<t>This memo describes a rate adaptation algorithm for conversationa | ||||
l media services such as interactive video. The solution conforms to the packet | ||||
conservation principle and uses a hybrid loss-and-delay- based congestion contr | ||||
ol algorithm. The algorithm is evaluated over both simulated Internet bottlenec | ||||
k scenarios as well as in a Long Term Evolution (LTE) system simulator and is sh | ||||
own to achieve both low latency and high video throughput in these scenarios.</t | ||||
> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8298"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8298"/> | ||||
</reference> | ||||
<reference anchor="RFC8311" target="https://www.rfc-editor.org/info/rfc831 | ||||
1" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8311.xml"> | ||||
<front> | ||||
<title>Relaxing Restrictions on Explicit Congestion Notification (ECN) | ||||
Experimentation</title> | ||||
<author initials="D." surname="Black" fullname="D. Black"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2018" month="January"/> | ||||
<abstract> | ||||
<t>This memo updates RFC 3168, which specifies Explicit Congestion N | ||||
otification (ECN) as an alternative to packet drops for indicating network conge | ||||
stion to endpoints. It relaxes restrictions in RFC 3168 that hinder experimenta | ||||
tion towards benefits beyond just removal of loss. This memo summarizes the ant | ||||
icipated areas of experimentation and updates RFC 3168 to enable experimentation | ||||
in these areas. An Experimental RFC in the IETF document stream is required to | ||||
take advantage of any of these enabling updates. In addition, this memo makes | ||||
related updates to the ECN specifications for RTP in RFC 6679 and for the Datagr | ||||
am Congestion Control Protocol (DCCP) in RFCs 4341, 4342, and 5622. This memo a | ||||
lso records the conclusion of the ECN nonce experiment in RFC 3540 and provides | ||||
the rationale for reclassification of RFC 3540 from Experimental to Historic; th | ||||
is reclassification enables new experimental use of the ECT(1) codepoint.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8311"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8311"/> | ||||
</reference> | ||||
<reference anchor="RFC8312" target="https://www.rfc-editor.org/info/rfc831 | ||||
2" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8312.xml"> | ||||
<front> | ||||
<title>CUBIC for Fast Long-Distance Networks</title> | ||||
<author initials="I." surname="Rhee" fullname="I. Rhee"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="L." surname="Xu" fullname="L. Xu"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="S." surname="Ha" fullname="S. Ha"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="A." surname="Zimmermann" fullname="A. Zimmermann"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="L." surname="Eggert" fullname="L. Eggert"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="R." surname="Scheffenegger" fullname="R. Scheffenegg | ||||
er"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2018" month="February"/> | ||||
<abstract> | ||||
<t>CUBIC is an extension to the current TCP standards. It differs f | ||||
rom the current TCP standards only in the congestion control algorithm on the se | ||||
nder side. In particular, it uses a cubic function instead of a linear window i | ||||
ncrease function of the current TCP standards to improve scalability and stabili | ||||
ty under fast and long-distance networks. CUBIC and its predecessor algorithm h | ||||
ave been adopted as defaults by Linux and have been used for many years. This d | ||||
ocument provides a specification of CUBIC to enable third-party implementations | ||||
and to solicit community feedback through experimentation on the performance of | ||||
CUBIC.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8312"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8312"/> | ||||
</reference> | ||||
<reference anchor="RFC8404" target="https://www.rfc-editor.org/info/rfc840 | ||||
4" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8404.xml"> | ||||
<front> | ||||
<title>Effects of Pervasive Encryption on Operators</title> | ||||
<author initials="K." surname="Moriarty" fullname="K. Moriarty" role=" | ||||
editor"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="A." surname="Morton" fullname="A. Morton" role="edit | ||||
or"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2018" month="July"/> | ||||
<abstract> | ||||
<t>Pervasive monitoring attacks on the privacy of Internet users are | ||||
of serious concern to both user and operator communities. RFC 7258 discusses t | ||||
he critical need to protect users' privacy when developing IETF specifications a | ||||
nd also recognizes that making networks unmanageable to mitigate pervasive monit | ||||
oring is not an acceptable outcome: an appropriate balance is needed. This docu | ||||
ment discusses current security and network operations as well as management pra | ||||
ctices that may be impacted by the shift to increased use of encryption to help | ||||
guide protocol development in support of manageable and secure networks.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8404"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8404"/> | ||||
</reference> | ||||
<reference anchor="RFC8511" target="https://www.rfc-editor.org/info/rfc851 | ||||
1" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8511.xml"> | ||||
<front> | ||||
<title>TCP Alternative Backoff with ECN (ABE)</title> | ||||
<author initials="N." surname="Khademi" fullname="N. Khademi"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="M." surname="Welzl" fullname="M. Welzl"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="G." surname="Armitage" fullname="G. Armitage"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="G." surname="Fairhurst" fullname="G. Fairhurst"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2018" month="December"/> | ||||
<abstract> | ||||
<t>Active Queue Management (AQM) mechanisms allow for burst toleranc | ||||
e while enforcing short queues to minimise the time that packets spend enqueued | ||||
at a bottleneck. This can cause noticeable performance degradation for TCP conn | ||||
ections traversing such a bottleneck, especially if there are only a few flows o | ||||
r their bandwidth-delay product (BDP) is large. The reception of a Congestion E | ||||
xperienced (CE) Explicit Congestion Notification (ECN) mark indicates that an AQ | ||||
M mechanism is used at the bottleneck, and the bottleneck network queue is there | ||||
fore likely to be short. Feedback of this signal allows the TCP sender-side ECN | ||||
reaction in congestion avoidance to reduce the Congestion Window (cwnd) by a sm | ||||
aller amount than the congestion control algorithm's reaction to inferred packet | ||||
loss. Therefore, this specification defines an experimental change to the TCP r | ||||
eaction specified in RFC 3168, as permitted by RFC 8311.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8511"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8511"/> | ||||
</reference> | ||||
<reference anchor="RFC8888" target="https://www.rfc-editor.org/info/rfc888 | ||||
8" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8888.xml"> | ||||
<front> | ||||
<title>RTP Control Protocol (RTCP) Feedback for Congestion Control</ti | ||||
tle> | ||||
<author initials="Z." surname="Sarker" fullname="Z. Sarker"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="C." surname="Perkins" fullname="C. Perkins"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="V." surname="Singh" fullname="V. Singh"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="M." surname="Ramalho" fullname="M. Ramalho"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2021" month="January"/> | ||||
<abstract> | ||||
<t>An effective RTP congestion control algorithm requires more fine- | ||||
grained feedback on packet loss, timing, and Explicit Congestion Notification (E | ||||
CN) marks than is provided by the standard RTP Control Protocol (RTCP) Sender Re | ||||
port (SR) and Receiver Report (RR) packets. This document describes an RTCP feed | ||||
back message intended to enable congestion control for interactive real-time tra | ||||
ffic using RTP. The feedback message is designed for use with a sender-based con | ||||
gestion control algorithm, in which the receiver of an RTP flow sends back to th | ||||
e sender RTCP feedback packets containing the information the sender needs to pe | ||||
rform congestion control.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8888"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8888"/> | ||||
</reference> | ||||
<reference anchor="RFC9000" target="https://www.rfc-editor.org/info/rfc900 | ||||
0" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9000.xml"> | ||||
<front> | ||||
<title>QUIC: A UDP-Based Multiplexed and Secure Transport</title> | ||||
<author initials="J." surname="Iyengar" fullname="J. Iyengar" role="ed | ||||
itor"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="M." surname="Thomson" fullname="M. Thomson" role="ed | ||||
itor"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2021" month="May"/> | ||||
<abstract> | ||||
<t>This document defines the core of the QUIC transport protocol. Q | ||||
UIC provides applications with flow-controlled streams for structured communicat | ||||
ion, low-latency connection establishment, and network path migration. QUIC incl | ||||
udes security measures that ensure confidentiality, integrity, and availability | ||||
in a range of deployment circumstances. Accompanying documents describe the int | ||||
egration of TLS for key negotiation, loss detection, and an exemplary congestion | ||||
control algorithm.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="9000"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9000"/> | ||||
</reference> | ||||
<reference anchor="RFC9113" target="https://www.rfc-editor.org/info/rfc911 | ||||
3" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9113.xml"> | ||||
<front> | ||||
<title>HTTP/2</title> | ||||
<author initials="M." surname="Thomson" fullname="M. Thomson" role="ed | ||||
itor"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="C." surname="Benfield" fullname="C. Benfield" role=" | ||||
editor"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2022" month="June"/> | ||||
<abstract> | ||||
<t>This specification describes an optimized expression of the seman | ||||
tics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (H | ||||
TTP/2). HTTP/2 enables a more efficient use of network resources and a reduced l | ||||
atency by introducing field compression and allowing multiple concurrent exchang | ||||
es on the same connection.</t> | ||||
<t>This document obsoletes RFCs 7540 and 8740.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="9113"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9113"/> | ||||
</reference> | ||||
<reference anchor="I-D.ietf-tsvwg-aqm-dualq-coupled" target="https://datat | ||||
racker.ietf.org/api/v1/doc/document/draft-ietf-tsvwg-aqm-dualq-coupled/" xml:bas | ||||
e="https://bib.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-tsvwg-aqm-dualq | ||||
-coupled.xml"> | ||||
<front> | ||||
<title>DualQ Coupled AQMs for Low Latency, Low Loss and Scalable Throu | ||||
ghput (L4S)</title> | ||||
<author fullname="Koen De Schepper"/> | ||||
<author fullname="Bob Briscoe"/> | ||||
<author fullname="Greg White"/> | ||||
<date day="7" month="July" year="2022"/> | ||||
<abstract> | ||||
<t>This specification defines a framework for coupling the Active Qu | ||||
eue | ||||
Management (AQM) algorithms in two queues intended for flows with | ||||
different responses to congestion. This provides a way for the | ||||
Internet to transition from the scaling problems of standard TCP | ||||
Reno-friendly ('Classic') congestion controls to the family of | ||||
'Scalable' congestion controls. These are designed for consistently | ||||
very Low queuing Latency, very Low congestion Loss and Scaling of | ||||
per-flow throughput (L4S) by using Explicit Congestion Notification | ||||
(ECN) in a modified way. Until the Coupled DualQ, these L4S senders | ||||
could only be deployed where a clean-slate environment could be | ||||
arranged, such as in private data centres. The coupling acts like a | ||||
semi-permeable membrane: isolating the sub-millisecond average | ||||
queuing delay and zero congestion loss of L4S from Classic latency | ||||
and loss; but pooling the capacity between any combination of | ||||
Scalable and Classic flows with roughly equivalent throughput per | ||||
flow. The DualQ achieves this indirectly, without having to inspect | ||||
transport layer flow identifiers and without compromising the | ||||
performance of the Classic traffic, relative to a single queue. The | ||||
DualQ design has low complexity and requires no configuration for the | ||||
public Internet.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-aqm-dualq-coup | ||||
led-24"/> | ||||
</reference> | ||||
<reference anchor="I-D.ietf-tsvwg-ecn-l4s-id" target="https://datatracker. | ||||
ietf.org/api/v1/doc/document/draft-ietf-tsvwg-ecn-l4s-id/" xml:base="https://bib | ||||
.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-tsvwg-ecn-l4s-id.xml"> | ||||
<front> | ||||
<title>Explicit Congestion Notification (ECN) Protocol for Very Low Qu | ||||
euing Delay (L4S)</title> | ||||
<author fullname="Koen De Schepper"/> | ||||
<author fullname="Bob Briscoe"/> | ||||
<date day="8" month="August" year="2022"/> | ||||
<abstract> | ||||
<t>This specification defines the protocol to be used for a new netw | ||||
ork | ||||
service called low latency, low loss and scalable throughput (L4S). | ||||
L4S uses an Explicit Congestion Notification (ECN) scheme at the IP | ||||
layer that is similar to the original (or 'Classic') ECN approach, | ||||
except as specified within. L4S uses 'scalable' congestion control, | ||||
which induces much more frequent control signals from the network and | ||||
it responds to them with much more fine-grained adjustments, so that | ||||
very low (typically sub-millisecond on average) and consistently low | ||||
queuing delay becomes possible for L4S traffic without compromising | ||||
link utilization. Thus even capacity-seeking (TCP-like) traffic can | ||||
have high bandwidth and very low delay at the same time, even during | ||||
periods of high traffic load.</t> | ||||
<t>The L4S identifier defined in this document distinguishes L4S fro | ||||
m | ||||
'Classic' (e.g. TCP-Reno-friendly) traffic. Then, network | ||||
bottlenecks can be incrementally modified to distinguish and isolate | ||||
existing traffic that still follows the Classic behaviour, to prevent | ||||
it degrading the low queuing delay and low loss of L4S traffic. This | ||||
experimental track specification defines the rules that L4S | ||||
transports and network elements need to follow, with the intention | ||||
that L4S flows neither harm each other's performance nor that of | ||||
Classic traffic. It also suggests open questions to be investigated | ||||
during experimentation. Examples of new active queue management | ||||
(AQM) marking algorithms and examples of new transports (whether TCP- | ||||
like or real-time) are specified separately.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-ecn-l4s-id-28" | ||||
/> | ||||
</reference> | ||||
<reference anchor="I-D.ietf-tsvwg-nqb" target="https://datatracker.ietf.or | ||||
g/api/v1/doc/document/draft-ietf-tsvwg-nqb/" xml:base="https://bib.ietf.org/publ | ||||
ic/rfc/bibxml-ids/reference.I-D.ietf-tsvwg-nqb.xml"> | ||||
<front> | ||||
<title>A Non-Queue-Building Per-Hop Behavior (NQB PHB) for Differentia | ||||
ted Services</title> | ||||
<author fullname="Greg White"/> | ||||
<author fullname="Thomas Fossati"/> | ||||
<date day="4" month="March" year="2022"/> | ||||
<abstract> | ||||
<t>This document specifies properties and characteristics of a Non- | ||||
Queue-Building Per-Hop Behavior (NQB PHB). The purpose of this NQB | ||||
PHB is to provide a separate queue that enables smooth, low-data- | ||||
rate, application-limited traffic flows, which would ordinarily share | ||||
a queue with bursty and capacity-seeking traffic, to avoid the | ||||
latency, latency variation and loss caused by such traffic. This PHB | ||||
is implemented without prioritization and without rate policing, | ||||
making it suitable for environments where the use of either these | ||||
features may be restricted. The NQB PHB has been developed primarily | ||||
for use by access network segments, where queuing delays and queuing | ||||
loss caused by Queue-Building protocols are manifested, but its use | ||||
is not limited to such segments. In particular, applications to | ||||
cable broadband links, Wi-Fi links, and mobile network radio and core | ||||
segments are discussed. This document recommends a specific | ||||
Differentiated Services Code Point (DSCP) to identify Non-Queue- | ||||
Building flows.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-nqb-10"/> | ||||
</reference> | ||||
<reference anchor="I-D.briscoe-conex-policing" target="https://www.ietf.or | ||||
g/archive/id/draft-briscoe-conex-policing-01.txt" xml:base="https://bib.ietf.org | ||||
/public/rfc/bibxml-ids/reference.I-D.briscoe-conex-policing.xml"> | ||||
<front> | ||||
<title>Network Performance Isolation using Congestion Policing</title> | ||||
<author fullname="Bob Briscoe"/> | ||||
<date day="14" month="February" year="2014"/> | ||||
<abstract> | ||||
<t>This document describes why policing using congestion information | ||||
can isolate users from network performance degradation due to each other's usag | ||||
e, but without losing the multiplexing benefits of a LAN- style network where an | ||||
yone can use any amount of any resource. Extensive numerical examples and diagra | ||||
ms are given. The document is agnostic to how the congestion information reaches | ||||
the policer. The congestion exposure (ConEX) protocol is recommended, but other | ||||
tunnel feedback mechanisms have been proposed.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-briscoe-conex-policing-01 | ||||
"/> | ||||
</reference> | ||||
<reference anchor="I-D.stewart-tsvwg-sctpecn" target="https://www.ietf.org | ||||
/archive/id/draft-stewart-tsvwg-sctpecn-05.txt" xml:base="https://bib.ietf.org/p | ||||
ublic/rfc/bibxml-ids/reference.I-D.stewart-tsvwg-sctpecn.xml"> | ||||
<front> | ||||
<title>ECN for Stream Control Transmission Protocol (SCTP)</title> | ||||
<author fullname="Randall R. Stewart"/> | ||||
<author fullname="Michael Tuexen"/> | ||||
<author fullname="Xuesong Dong"/> | ||||
<date day="15" month="January" year="2014"/> | ||||
<abstract> | ||||
<t>This document describes the addition of the ECN to the Stream Con | ||||
trol Transmission Protocol (SCTP).</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-stewart-tsvwg-sctpecn-05" | ||||
/> | ||||
</reference> | ||||
<reference anchor="I-D.sridharan-tcpm-ctcp" target="https://datatracker.ie | ||||
tf.org/api/v1/doc/document/draft-sridharan-tcpm-ctcp/" xml:base="https://bib.iet | ||||
f.org/public/rfc/bibxml-ids/reference.I-D.sridharan-tcpm-ctcp.xml"> | ||||
<front> | ||||
<title>Compound TCP: A New TCP Congestion Control for High-Speed and L | ||||
ong Distance Networks</title> | ||||
<author fullname="Murali Sridharan"/> | ||||
<author fullname="Kun Tan"/> | ||||
<author fullname="Deepak Bansal"/> | ||||
<author fullname="Dave Thaler"/> | ||||
<date day="29" month="October" year="2007"/> | ||||
<abstract> | ||||
<t>Compound TCP (CTCP) is a modification to TCP's congestion control | ||||
| ||||
mechanism for use with TCP connections with large congestion windows. | ||||
This document describes the Compound TCP algorithm in detail, and | ||||
solicits experimentation and feedback from the wider community. The | ||||
key idea behind CTCP is to add a scalable delay-based component to the | ||||
standard TCP's loss-based congestion control. The sending rate of CTCP | ||||
is controlled by both loss and delay components. The delay-based | ||||
component has a scalable window increasing rule that not only | ||||
efficiently uses the link capacity, but on sensing queue build up, | ||||
proactively reduces the sending rate.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-sridharan-tcpm-ctcp-02"/> | ||||
</reference> | ||||
<reference anchor="I-D.ietf-tsvwg-rfc6040update-shim" target="https://data | ||||
tracker.ietf.org/api/v1/doc/document/draft-ietf-tsvwg-rfc6040update-shim/" xml:b | ||||
ase="https://bib.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-tsvwg-rfc6040 | ||||
update-shim.xml"> | ||||
<front> | ||||
<title>Propagating Explicit Congestion Notification Across IP Tunnel H | ||||
eaders Separated by a Shim</title> | ||||
<author fullname="Bob Briscoe"/> | ||||
<date day="11" month="July" year="2022"/> | ||||
<abstract> | ||||
<t>RFC 6040 on "Tunnelling of Explicit Congestion Notification" made | ||||
the | ||||
rules for propagation of ECN consistent for all forms of IP in IP | ||||
tunnel. This specification updates RFC 6040 to clarify that its | ||||
scope includes tunnels where two IP headers are separated by at least | ||||
one shim header that is not sufficient on its own for wide area | ||||
packet forwarding. It surveys widely deployed IP tunnelling | ||||
protocols that use such shim header(s) and updates the specifications | ||||
of those that do not mention ECN propagation (L2TPv2, L2TPv3, GRE, | ||||
Teredo and AMT). This specification also updates RFC 6040 with | ||||
configuration requirements needed to make any legacy tunnel ingress | ||||
safe.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-rfc6040update- | ||||
shim-15"/> | ||||
</reference> | ||||
<reference anchor="I-D.ietf-tsvwg-ecn-encap-guidelines" target="https://da | ||||
tatracker.ietf.org/api/v1/doc/document/draft-ietf-tsvwg-ecn-encap-guidelines/" x | ||||
ml:base="https://bib.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-tsvwg-ecn | ||||
-encap-guidelines.xml"> | ||||
<front> | ||||
<title>Guidelines for Adding Congestion Notification to Protocols that | ||||
Encapsulate IP</title> | ||||
<author fullname="Bob Briscoe"/> | ||||
<author fullname="John Kaippallimalil"/> | ||||
<date day="11" month="July" year="2022"/> | ||||
<abstract> | ||||
<t>The purpose of this document is to guide the design of congestion | ||||
notification in any lower layer or tunnelling protocol that | ||||
encapsulates IP. The aim is for explicit congestion signals to | ||||
propagate consistently from lower layer protocols into IP. Then the | ||||
IP internetwork layer can act as a portability layer to carry | ||||
congestion notification from non-IP-aware congested nodes up to the | ||||
transport layer (L4). Following these guidelines should assure | ||||
interworking among IP layer and lower layer congestion notification | ||||
mechanisms, whether specified by the IETF or other standards bodies. | ||||
This document updates the advice to subnetwork designers about ECN in | ||||
RFC 3819.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-ecn-encap-guid | ||||
elines-17"/> | ||||
</reference> | ||||
<reference anchor="I-D.ietf-tsvwg-l4sops" target="https://datatracker.ietf | ||||
.org/api/v1/doc/document/draft-ietf-tsvwg-l4sops/" xml:base="https://bib.ietf.or | ||||
g/public/rfc/bibxml-ids/reference.I-D.ietf-tsvwg-l4sops.xml"> | ||||
<front> | ||||
<title>Operational Guidance for Deployment of L4S in the Internet</tit | ||||
le> | ||||
<author fullname="Greg White"/> | ||||
<date day="28" month="April" year="2022"/> | ||||
<abstract> | ||||
<t>This document is intended to provide guidance in order to ensure | ||||
successful deployment of Low Latency Low Loss Scalable throughput | ||||
(L4S) in the Internet. Other L4S documents provide guidance for | ||||
running an L4S experiment, but this document is focused solely on | ||||
potential interactions between L4S flows and flows using the original | ||||
('Classic') ECN over a Classic ECN bottleneck link. The document | ||||
discusses the potential outcomes of these interactions, describes | ||||
mechanisms to detect the presence of Classic ECN bottlenecks, and | ||||
identifies opportunities to prevent and/or detect and resolve | ||||
fairness problems in such networks. This guidance is aimed at | ||||
operators of end-systems, operators of networks, and researchers.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-l4sops-03"/> | ||||
</reference> | ||||
<reference anchor="I-D.briscoe-tsvwg-l4s-diffserv" target="https://datatra | ||||
cker.ietf.org/api/v1/doc/document/draft-briscoe-tsvwg-l4s-diffserv/" xml:base="h | ||||
ttps://bib.ietf.org/public/rfc/bibxml-ids/reference.I-D.briscoe-tsvwg-l4s-diffse | ||||
rv.xml"> | ||||
<front> | ||||
<title>Interactions between Low Latency, Low Loss, Scalable Throughput | ||||
(L4S) and Differentiated Services</title> | ||||
<author fullname="Bob Briscoe"/> | ||||
<date day="2" month="July" year="2018"/> | ||||
<abstract> | ||||
<t>L4S and Diffserv offer somewhat overlapping services (low latency | ||||
and | ||||
low loss), but bandwidth allocation is out of scope for L4S. | ||||
Therefore there is scope for the two approaches to complement each | ||||
other, but also to conflict. This informational document explains | ||||
how the two approaches interact, how they can be arranged to | ||||
complement each other and in which cases one can stand alone without | ||||
needing the other.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-briscoe-tsvwg-l4s-diffser | ||||
v-02"/> | ||||
</reference> | ||||
<reference anchor="I-D.briscoe-docsis-q-protection" target="https://datatr | ||||
acker.ietf.org/api/v1/doc/document/draft-briscoe-docsis-q-protection/" xml:base= | ||||
"https://bib.ietf.org/public/rfc/bibxml-ids/reference.I-D.briscoe-docsis-q-prote | ||||
ction.xml"> | ||||
<front> | ||||
<title>The DOCSIS(r) Queue Protection Algorithm to Preserve Low Latenc | ||||
y</title> | ||||
<author fullname="Bob Briscoe"/> | ||||
<author fullname="Greg White"/> | ||||
<date day="13" month="May" year="2022"/> | ||||
<abstract> | ||||
<t>This informational document explains the specification of the que | ||||
ue | ||||
protection algorithm used in DOCSIS technology since version 3.1. A | ||||
shared low latency queue relies on the non-queue-building behaviour | ||||
of every traffic flow using it. However, some flows might not take | ||||
such care, either accidentally or maliciously. If a queue is about | ||||
to exceed a threshold level of delay, the queue protection algorithm | ||||
can rapidly detect the flows most likely to be responsible. It can | ||||
then prevent harm to other traffic in the low latency queue by | ||||
ejecting selected packets (or all packets) of these flows. The | ||||
document is designed for four types of audience: a) congestion | ||||
control designers who need to understand how to keep on the 'good' | ||||
side of the algorithm; b) implementers of the algorithm who want to | ||||
understand it in more depth; c) designers of algorithms with similar | ||||
goals, perhaps for non-DOCSIS scenarios; and d) researchers | ||||
interested in evaluating the algorithm.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-briscoe-docsis-q-protecti | ||||
on-06"/> | ||||
</reference> | ||||
<reference anchor="I-D.cardwell-iccrg-bbr-congestion-control" target="http | ||||
s://datatracker.ietf.org/api/v1/doc/document/draft-cardwell-iccrg-bbr-congestion | ||||
-control/" xml:base="https://bib.ietf.org/public/rfc/bibxml-ids/reference.I-D.ca | ||||
rdwell-iccrg-bbr-congestion-control.xml"> | ||||
<front> | ||||
<title>BBR Congestion Control</title> | ||||
<author fullname="Neal Cardwell"/> | ||||
<author fullname="Yuchung Cheng"/> | ||||
<author fullname="Soheil Hassas Yeganeh"/> | ||||
<author fullname="Ian Swett"/> | ||||
<author fullname="Van Jacobson"/> | ||||
<date day="7" month="March" year="2022"/> | ||||
<abstract> | ||||
<t>This document specifies the BBR congestion control algorithm. BB | ||||
R | ||||
("Bottleneck Bandwidth and Round-trip propagation time") uses recent | ||||
measurements of a transport connection's delivery rate, round-trip | ||||
time, and packet loss rate to build an explicit model of the network | ||||
path. BBR then uses this model to control both how fast it sends | ||||
data and the maximum volume of data it allows in flight in the | ||||
network at any time. Relative to loss-based congestion control | ||||
algorithms such as Reno [RFC5681] or CUBIC [RFC8312], BBR offers | ||||
substantially higher throughput for bottlenecks with shallow buffers | ||||
or random losses, and substantially lower queueing delays for | ||||
bottlenecks with deep buffers (avoiding "bufferbloat"). BBR can be | ||||
implemented in any transport protocol that supports packet-delivery | ||||
acknowledgment. Thus far, open source implementations are available | ||||
for TCP [RFC793] and QUIC [RFC9000]. This document specifies version | ||||
2 of the BBR algorithm, also sometimes referred to as BBRv2 or bbr2.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-cardwell-iccrg-bbr-conges | ||||
tion-control-02"/> | ||||
</reference> | ||||
<reference anchor="I-D.briscoe-iccrg-prague-congestion-control" target="ht | ||||
tps://datatracker.ietf.org/api/v1/doc/document/draft-briscoe-iccrg-prague-conges | ||||
tion-control/" xml:base="https://bib.ietf.org/public/rfc/bibxml-ids/reference.I- | ||||
D.briscoe-iccrg-prague-congestion-control.xml"> | ||||
<front> | ||||
<title>Prague Congestion Control</title> | ||||
<author fullname="Koen De Schepper"/> | ||||
<author fullname="Olivier Tilmans"/> | ||||
<author fullname="Bob Briscoe"/> | ||||
<date day="11" month="July" year="2022"/> | ||||
<abstract> | ||||
<t>This specification defines the Prague congestion control scheme, | ||||
which is derived from DCTCP and adapted for Internet traffic by | ||||
implementing the Prague L4S requirements. Over paths with L4S | ||||
support at the bottleneck, it adapts the DCTCP mechanisms to achieve | ||||
consistently low latency and full throughput. It is defined | ||||
independently of any particular transport protocol or operating | ||||
system, but notes are added that highlight issues specific to certain | ||||
transports and OSs. It is mainly based on the current default | ||||
options of the reference Linux implementation of TCP Prague, but it | ||||
includes experience from other implementations where available. It | ||||
separately describes non-default and optional parts, as well as | ||||
future plans.</t> | ||||
<t>The implementation does not satisfy all the Prague requirements ( | ||||
yet) | ||||
and the IETF might decide that certain requirements need to be | ||||
relaxed as an outcome of the process of trying to satisfy them all. | ||||
In two cases, research code is replaced by placeholders until full | ||||
evaluation is complete.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-briscoe-iccrg-prague-cong | ||||
estion-control-01"/> | ||||
</reference> | ||||
<reference anchor="I-D.morton-tsvwg-codel-approx-fair" target="https://www | ||||
.ietf.org/archive/id/draft-morton-tsvwg-codel-approx-fair-01.txt" xml:base="http | ||||
s://bib.ietf.org/public/rfc/bibxml-ids/reference.I-D.morton-tsvwg-codel-approx-f | ||||
air.xml"> | ||||
<front> | ||||
<title>Controlled Delay Approximate Fairness AQM</title> | ||||
<author fullname="Jonathan Morton"/> | ||||
<author fullname="Peter G. Heist"/> | ||||
<date day="9" month="March" year="2020"/> | ||||
<abstract> | ||||
<t>This note presents CodelAF, or Controlled Delay Approximate Fairn | ||||
ess in full, as an alternative to single-queue AQM or Fair Queue implementations | ||||
in the low-cost or high-speed network hardware spaces. It builds on the seminal | ||||
work in Codel [RFC8289], and guides multiple competing flows towards similar th | ||||
roughputs by differential congestion signalling, whilst requiring only a single | ||||
FIFO queue. It may also be combined with CNQ [I-D.morton-tsvwg-cheap-nasty-queue | ||||
ing] to provide a latency optimisation for sparse flows.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-morton-tsvwg-codel-approx | ||||
-fair-01"/> | ||||
</reference> | ||||
<reference anchor="Hohlfeld14" target="https://doi.acm.org/10.1145/2663716 .2663730"> | <reference anchor="Hohlfeld14" target="https://doi.acm.org/10.1145/2663716 .2663730"> | |||
<front> | <front> | |||
<title>A QoE Perspective on Sizing Network Buffers</title> | <title>A QoE Perspective on Sizing Network Buffers</title> | |||
<author fullname="Oliver Hohlfeld" initials="O." surname="Hohlfeld "> | <author fullname="Oliver Hohlfeld" initials="O." surname="Hohlfeld "> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<author fullname="Enric Pujol" initials="E." surname="Pujol"> | <author fullname="Enric Pujol" initials="E." surname="Pujol"> | |||
<organization/> | <organization/> | |||
<address> | </author> | |||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | ||||
<author fullname="Florin Ciucu" initials="F." surname="Ciucu"> | <author fullname="Florin Ciucu" initials="F." surname="Ciucu"> | |||
<organization/> | <organization/> | |||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | </author> | |||
<author fullname="Anja Feldmann" initials="A." surname="Feldmann"> | <author fullname="Anja Feldmann" initials="A." surname="Feldmann"> | |||
<organization/> | <organization/> | |||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | </author> | |||
<author fullname="Paul Barford" initials="P." surname="Barford"> | <author fullname="Paul Barford" initials="P." surname="Barford"> | |||
<organization/> | <organization/> | |||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | </author> | |||
<date month="November" year="2014"/> | <date month="November" year="2014"/> | |||
</front> | </front> | |||
<seriesInfo name="Proc. ACM Internet Measurement Conf (IMC'14)" value="h | <seriesInfo name="DOI" value="10.1145/2663716.2663730"/> | |||
mm"/> | <refcontent>IMC '14: Proceedings of the 2014 Conference on Internet Measu | |||
</reference> | rement, pp. 333-346</refcontent> | |||
<reference anchor="Mathis09" target="https://www.gdt.id.au/~gdt/presentati | ||||
ons/2010-07-06-questnet-tcp/reference-materials/papers/mathis-relentless-congest | ||||
ion-control.pdf"> | ||||
<front> | ||||
<title>Relentless Congestion Control</title> | ||||
<author fullname="Matt Mathis" initials="M." surname="Mathis"> | ||||
<organization>PSC</organization> | ||||
</author> | ||||
<date month="May" year="2009"/> | ||||
</front> | ||||
<seriesInfo name="PFLDNeT'09" value=""/> | ||||
</reference> | </reference> | |||
<!--{ToDo: DCttH ref will need to be updated, once stable}--> | ||||
<reference anchor="DCttH19" target="https://bobbriscoe.net/pubs.html#DCttH | <xi:include | |||
_TR"> | href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.mathis-iccrg-relent | |||
less-tcp.xml"/> | ||||
<reference anchor="L4Seval22" target="https://arxiv.org/abs/2209.01078"> | ||||
<front> | <front> | |||
<title>`Data Centre to the Home': Ultra-Low Latency for All</title> | <title>Dual Queue Coupled AQM: Deployable Very Low Queuing Delay for | |||
<author fullname="Koen De Schepper" initials="K." surname="De Schepper | All</title> | |||
"> | <author fullname="Koen De Schepper" initials="K." | |||
surname="De Schepper"> | ||||
<organization>Nokia Bell Labs</organization> | <organization>Nokia Bell Labs</organization> | |||
</author> | </author> | |||
<author fullname="Olga Bondarenko" initials="O." surname="Bondarenko"> | <author fullname="Olga Albisser" initials="O." surname="Albisser"> | |||
<organization>Simula Research Lab</organization> | <organization>Simula Research Lab</organization> | |||
</author> | </author> | |||
<author fullname="Olivier" initials="O." surname="Tilmans"> | <author fullname="Olivier" initials="O." surname="Tilmans"> | |||
<organization>Nokia Bell Labs</organization> | <organization>Nokia Bell Labs</organization> | |||
</author> | </author> | |||
<author fullname="Bob Briscoe" initials="B." surname="Briscoe"> | <author fullname="Bob Briscoe" initials="B." surname="Briscoe"> | |||
<organization>Independent (bobbriscoe.net)</organization> | <organization>Independent (bobbriscoe.net)</organization> | |||
</author> | </author> | |||
<date month="July" year="2019"/> | <date month="September" year="2022"/> | |||
</front> | </front> | |||
<seriesInfo name="Updated RITE project Technical Report" value=""/> | <seriesInfo name="DOI" value="10.48550/arXiv.2209.01078"/> | |||
<format target="https://bobbriscoe.net/projects/latency/dctth_journal_dr | <refcontent>TR-BB-2022-001, arXiv:2209.01078 [cs.NI]</refcontent> | |||
aft20190726.pdf" type="PDF"/> | <format target="https://arxiv.org/pdf/2209.01078" type="PDF"/> | |||
</reference> | </reference> | |||
<reference anchor="L4Sdemo16" target="https://dl.acm.org/citation.cfm?doid | ||||
=2910017.2910633 (videos of demos: https://riteproject.eu/dctth/#1511dispatchwg | <reference anchor="L4Sdemo16" target="https://dl.acm.org/citation.cfm?doid | |||
)"> | =2910017.2910633"> | |||
<front> | <front> | |||
<title>Ultra-Low Delay for All: Live Experience, Live | <title>Ultra-Low Delay for All: Live Experience, Live | |||
Analysis</title> | Analysis</title> | |||
<author fullname="Olga Bondarenko" initials="O." surname="Bondarenko"> | <author fullname="Olga Bondarenko" initials="O." surname="Bondarenko"> | |||
<organization>Simula Research Lab</organization> | <organization>Simula Research Lab</organization> | |||
</author> | </author> | |||
<author fullname="Koen De Schepper" initials="K." surname="De Schepper "> | <author fullname="Koen De Schepper" initials="K." surname="De Schepper "> | |||
<organization>Bell Labs</organization> | <organization>Bell Labs</organization> | |||
</author> | </author> | |||
<author fullname="Ing-jyh Tsang" initials="I." surname="Tsang"> | <author fullname="Ing-jyh Tsang" initials="I." surname="Tsang"> | |||
<organization>Bell Labs</organization> | <organization>Bell Labs</organization> | |||
</author> | </author> | |||
<author fullname="Bob Briscoe" initials="B." surname="Briscoe"> | <author fullname="Bob Briscoe" initials="B." surname="Briscoe"> | |||
<organization>BT</organization> | <organization>BT</organization> | |||
</author> | </author> | |||
<author fullname="Andreas Petlund" initials="A." surname="Petlund"> | ||||
<organization></organization> | ||||
</author> | ||||
<author fullname="Carstan Griwodz" initials="C." surname="Griwodz"> | ||||
<organization></organization> | ||||
</author> | ||||
<date month="May" year="2016"/> | <date month="May" year="2016"/> | |||
</front> | </front> | |||
<seriesInfo name="Proc. MMSYS'16" value="pp33:1--33:4"/> | <seriesInfo name="DOI" value="10.1145/2910017.2910633"/> | |||
<format target="https://dl.acm.org/citation.cfm?doid=2910017.2910633" ty | <refcontent>Proceedings of the 7th International Conference on Multimedia | |||
pe="PDF"/> | Systems, Article No. 33, pp. 1-4</refcontent> | |||
</reference> | </reference> | |||
<reference anchor="L4Sdemo16-Video" target="https://riteproject.eu/dctth/#1511di | ||||
spatchwg"> | ||||
<front> | ||||
<title>Videos used in IETF dispatch WG 'Ultra-Low Queuing Delay for Al | ||||
l Apps' slot</title> | ||||
<author> | ||||
</author> | ||||
</front> | ||||
</reference> | ||||
<reference anchor="TCP-CA" target="https://ee.lbl.gov/papers/congavoid.pdf "> | <reference anchor="TCP-CA" target="https://ee.lbl.gov/papers/congavoid.pdf "> | |||
<front> | <front> | |||
<title>Congestion Avoidance and Control</title> | <title>Congestion Avoidance and Control</title> | |||
<author fullname="Van Jacobson" initials="V." surname="Jacobson"> | <author fullname="Van Jacobson" initials="V." surname="Jacobson"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<author fullname="Michael J. Karels" initials="M.J." surname="Karels"> | <author fullname="Michael J. Karels" initials="M." | |||
surname="Karels"> | ||||
<organization/> | <organization/> | |||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | </author> | |||
<date month="November" year="1988"/> | <date month="November" year="1988"/> | |||
</front> | </front> | |||
<seriesInfo name="Laurence Berkeley Labs Technical Report" value=""/> | <seriesInfo name="Laurence Berkeley Labs Technical Report" value=""/> | |||
<format target="https://ee.lbl.gov/papers/congavoid.pdf" type="PDF"/> | ||||
</reference> | </reference> | |||
<reference anchor="UnorderedLTE"> | <reference anchor="UnorderedLTE"> | |||
<front> | <front> | |||
<title>Implementing immediate forwarding for 4G in a network | <title>Implementing immediate forwarding for 4G in a network | |||
simulator</title> | simulator</title> | |||
<author fullname="Magnus Vevik Austrheim" initials="M.V." surname="Aus trheim"> | <author fullname="Magnus Vevik Austrheim" initials="M." surname="Austr heim"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<date month="June" year="2019"/> | <date year="2018"/> | |||
</front> | </front> | |||
<seriesInfo name="Master's Thesis, Uni Oslo" value=""/> | <refcontent>Master's Thesis, University of Oslo</refcontent> | |||
</reference> | </reference> | |||
<reference anchor="PragueLinux" target="https://www.netdevconf.org/0x13/se | ||||
ssion.html?talk-tcp-prague-l4s"> | <reference anchor="PragueLinux" target="https://www.netdevconf.org/0x13/session. | |||
html?talk-tcp-prague-l4s"> | ||||
<front> | <front> | |||
<title>Implementing the `TCP Prague' Requirements for Low Latency | <title>Implementing the 'TCP Prague' Requirements for Low Latency | |||
Low Loss Scalable Throughput (L4S)</title> | Low Loss Scalable Throughput (L4S)</title> | |||
<author fullname="Bob Briscoe" initials="B." surname="Briscoe"> | <author fullname="Bob Briscoe" initials="B." surname="Briscoe"> | |||
<organization>Independent</organization> | <organization>Independent</organization> | |||
</author> | </author> | |||
<author fullname="Koen De Schepper" initials="K." surname="De Schepper "> | <author fullname="Koen De Schepper" initials="K." surname="De Schepper "> | |||
<organization>Nokia Bell Labs</organization> | <organization>Nokia Bell Labs</organization> | |||
</author> | </author> | |||
<author fullname="Olga Albisser" initials="O." surname="Albisser"> | <author fullname="Olga Albisser" initials="O." surname="Albisser"> | |||
<organization>Simula Research Lab</organization> | <organization>Simula Research Lab</organization> | |||
</author> | </author> | |||
skipping to change at line 2962 ¶ | skipping to change at line 1964 ¶ | |||
<organization>Nokia Bell Labs</organization> | <organization>Nokia Bell Labs</organization> | |||
</author> | </author> | |||
<author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind"> | <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind"> | |||
<organization>ETH Zurich</organization> | <organization>ETH Zurich</organization> | |||
</author> | </author> | |||
<author fullname="Asad Sajjad Ahmed" initials="A.S." surname="Ahmed"> | <author fullname="Asad Sajjad Ahmed" initials="A.S." surname="Ahmed"> | |||
<organization>Simula Research Lab</organization> | <organization>Simula Research Lab</organization> | |||
</author> | </author> | |||
<date month="March" year="2019"/> | <date month="March" year="2019"/> | |||
</front> | </front> | |||
<seriesInfo name="Proc. Linux Netdev 0x13" value=""/> | <refcontent>Proceedings Linux Netdev 0x13</refcontent> | |||
<format target="https://www.files.netdevconf.org/f/4d6939d5f1fb404fafd1/ ?dl=1" type="PDF"/> | <format target="https://www.files.netdevconf.org/f/4d6939d5f1fb404fafd1/ ?dl=1" type="PDF"/> | |||
</reference> | </reference> | |||
<reference anchor="DualPI2Linux" target="https://www.netdevconf.org/0x13/s ession.html?talk-DUALPI2-AQM"> | <reference anchor="DualPI2Linux" target="https://www.netdevconf.org/0x13/s ession.html?talk-DUALPI2-AQM"> | |||
<front> | <front> | |||
<title>DUALPI2 - Low Latency, Low Loss and Scalable (L4S) | <title>DUALPI2 - Low Latency, Low Loss and Scalable (L4S) | |||
AQM</title> | AQM</title> | |||
<author fullname="Olga Albisser" initials="O." surname="Albisser"> | <author fullname="Olga Albisser" initials="O." surname="Albisser"> | |||
<organization>Simula Research Lab</organization> | <organization>Simula Research Lab</organization> | |||
</author> | </author> | |||
<author fullname="Koen De Schepper" initials="K." surname="De Schepper "> | <author fullname="Koen De Schepper" initials="K." surname="De Schepper "> | |||
<organization>Nokia Bell Labs</organization> | <organization>Nokia Bell Labs</organization> | |||
</author> | </author> | |||
skipping to change at line 2986 ¶ | skipping to change at line 1989 ¶ | |||
<organization>Independent</organization> | <organization>Independent</organization> | |||
</author> | </author> | |||
<author fullname="Olivier Tilmans" initials="O." surname="Tilmans"> | <author fullname="Olivier Tilmans" initials="O." surname="Tilmans"> | |||
<organization>Nokia Bell Labs</organization> | <organization>Nokia Bell Labs</organization> | |||
</author> | </author> | |||
<author fullname="Henrik Steen" initials="H." surname="Steen"> | <author fullname="Henrik Steen" initials="H." surname="Steen"> | |||
<organization>Simula Research Lab</organization> | <organization>Simula Research Lab</organization> | |||
</author> | </author> | |||
<date month="March" year="2019"/> | <date month="March" year="2019"/> | |||
</front> | </front> | |||
<seriesInfo name="Proc. Linux Netdev 0x13" value=""/> | <refcontent>Proceedings of Linux Netdev 0x13</refcontent> | |||
<format target="https://www.files.netdevconf.org/f/febbe8c6a05b4ceab641/ ?dl=1" type="PDF"/> | <format target="https://www.files.netdevconf.org/f/febbe8c6a05b4ceab641/ ?dl=1" type="PDF"/> | |||
</reference> | </reference> | |||
<reference anchor="DOCSIS3.1" target="https://specification-search.cablela | ||||
bs.com/CM-SP-MULPIv3.1"> | <reference anchor="DOCSIS3.1" target="https://specification-search.cablelabs.com | |||
/CM-SP-MULPIv3.1"> | ||||
<front> | <front> | |||
<title>MAC and Upper Layer Protocols Interface (MULPI) | <title>MAC and Upper Layer Protocols Interface (MULPI) | |||
Specification, CM-SP-MULPIv3.1</title> | Specification, CM-SP-MULPIv3.1</title> | |||
<author fullname="" surname=""> | <author fullname="" surname=""> | |||
<organization>CableLabs</organization> | <organization>CableLabs</organization> | |||
</author> | </author> | |||
<date day="21" month="January" year="2019"/> | <date day="21" month="January" year="2019"/> | |||
</front> | </front> | |||
<seriesInfo name="Data-Over-Cable Service Interface Specifications DOCSI S® 3.1" value="Version i17 or later"/> | <seriesInfo name="Data-Over-Cable Service Interface Specifications DOCSI S 3.1" value="Version i17 or later"/> | |||
</reference> | </reference> | |||
<reference anchor="AFCD" target="https://doi.org/10.1016/j.jnca.2016.03.02 1"> | <reference anchor="AFCD" target="https://doi.org/10.1016/j.jnca.2016.03.02 1"> | |||
<front> | <front> | |||
<title>Towards fair and low latency next generation high speed | <title>Towards fair and low latency next generation high speed | |||
networks: AFCD queuing</title> | networks: AFCD queuing</title> | |||
<author fullname="Lin Xue" initials="L." surname="Xue"> | <author fullname="Lin Xue" initials="L." surname="Xue"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<author fullname="Suman Kumar" initials="S." surname="Kumar"> | <author fullname="Suman Kumar" initials="S." surname="Kumar"> | |||
<organization/> | <organization/> | |||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | </author> | |||
<author fullname="Cheng Cui" initials="C." surname="Cui"> | <author fullname="Cheng Cui" initials="C." surname="Cui"> | |||
<organization/> | <organization/> | |||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | </author> | |||
<author fullname="Praveenkumar Kondikoppa" initials="P." surname="Kond ikoppa"> | <author fullname="Praveenkumar Kondikoppa" initials="P." surname="Kond ikoppa"> | |||
<organization/> | <organization/> | |||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | </author> | |||
<author fullname="Chui-Hui Chiu" initials="C-H." surname="Chiu"> | <author fullname="Chui-Hui Chiu" initials="C-H." surname="Chiu"> | |||
<organization/> | <organization/> | |||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | </author> | |||
<author fullname="Seung-Jong Park" initials="S-J." surname="Park"> | <author fullname="Seung-Jong Park" initials="S-J." surname="Park"> | |||
<organization/> | <organization/> | |||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | </author> | |||
<date month="July" year="2016"/> | <date month="July" year="2016"/> | |||
</front> | </front> | |||
<seriesInfo name="Journal of Network and Computer Applications" value="7 | <seriesInfo name="DOI" value="10.1016/j.jnca.2016.03.021"/> | |||
0:183--193"/> | <refcontent>Journal of Network and Computer Applications, Volume 70, pp. | |||
183-193</refcontent> | ||||
</reference> | </reference> | |||
<reference anchor="Nadas20" target="https://doi.org/10.1145/3404868.340666 9"> | <reference anchor="Nadas20" target="https://doi.org/10.1145/3404868.340666 9"> | |||
<front> | <front> | |||
<title>A Congestion Control Independent L4S Scheduler</title> | <title>A Congestion Control Independent L4S Scheduler</title> | |||
<author fullname="Szilveszter Nádas" initials="S." surname="Nádas"> | <author fullname="Szilveszter Nádas" initials="S." surname="Nádas"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<author fullname="Gergo Gombos" initials="G." surname="Gombos"> | <author fullname="Gergő Gombos" initials="G." surname="Gombos"> | |||
<organization/> | <organization/> | |||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | </author> | |||
<author fullname="Ferenc Fejes" initials="F." surname="Fejes"> | <author fullname="Ferenc Fejes" initials="F." surname="Fejes"> | |||
<organization/> | <organization/> | |||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | </author> | |||
<author fullname="Sándor Laki" initials="S." surname="Laki"> | <author fullname="Sándor Laki" initials="S." surname="Laki"> | |||
<organization/> | <organization/> | |||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | </author> | |||
<date month="July" year="2020"/> | <date month="July" year="2020"/> | |||
</front> | </front> | |||
<seriesInfo name="Proc. Applied Networking Research Workshop (ANRW '20)" | <seriesInfo name="DOI" value="10.1145/3404868.3406669"/> | |||
value="45--51"/> | <refcontent>ANRW '20: Proceedings of the Applied Networking Research Work | |||
shop, pp. 45-51</refcontent> | ||||
</reference> | </reference> | |||
<reference anchor="QDyn" target="https://arxiv.org/abs/1904.07044"> | <reference anchor="QDyn" target="https://arxiv.org/abs/1904.07044"> | |||
<front> | <front> | |||
<title>Rapid Signalling of Queue Dynamics</title> | <title>Rapid Signalling of Queue Dynamics</title> | |||
<author fullname="Bob Briscoe" initials="B." surname="Briscoe"> | <author fullname="Bob Briscoe" initials="B." surname="Briscoe"> | |||
<organization>bobbriscoe.net Ltd</organization> | <organization>bobbriscoe.net Ltd</organization> | |||
</author> | </author> | |||
<date month="September" year="2017"/> | <date month="April" year="2019"/> | |||
</front> | </front> | |||
<seriesInfo name="bobbriscoe.net Technical Report" value="TR-BB-2017-001 | <seriesInfo name="DOI" value="10.48550/arXiv.1904.07044"/> | |||
; arXiv:1904.07044 [cs.NI]"/> | <refcontent>TR-BB-2017-001, arXiv:1904.07044 [cs.NI]</refcontent> | |||
<format target="https://arxiv.org/pdf/1904.07044" type="PDF"/> | <format target="https://arxiv.org/pdf/1904.07044" type="PDF"/> | |||
</reference> | </reference> | |||
<reference anchor="McIlroy78" target="https://archive.org/details/bstj57-6 -1899"> | <reference anchor="McIlroy78" target="https://archive.org/details/bstj57-6 -1899"> | |||
<front> | <front> | |||
<title>UNIX Time-Sharing System: Foreword</title> | <title>UNIX Time-Sharing System: Foreword</title> | |||
<author fullname="Doug McIlroy" initials="M.D." surname="McIlroy"> | <author fullname="Doug McIlroy" initials="M.D." surname="McIlroy"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<author initials="E. N." surname="Pinson"> | <author initials="E. N." surname="Pinson"> | |||
<organization/> | <organization/> | |||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | </author> | |||
<author initials="B. A." surname="Tague"> | <author initials="B. A." surname="Tague"> | |||
<organization/> | <organization/> | |||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | </author> | |||
<date month="July" year="1978"/> | <date month="July" year="1978"/> | |||
</front> | </front> | |||
<seriesInfo name="The Bell System Technical Journal" value="57:6(1902--1 | <seriesInfo name="DOI" value="10.1002/j.1538-7305.1978.tb02135.x"/> | |||
903)"/> | <refcontent>The Bell System Technical Journal 57: 6, pp. 1899-1904</refc | |||
ontent> | ||||
</reference> | </reference> | |||
<reference anchor="LEDBAT_AQM" target="https://ieeexplore.ieee.org/documen t/8109367"> | <reference anchor="LEDBAT_AQM" target="https://ieeexplore.ieee.org/documen t/8109367"> | |||
<front> | <front> | |||
<title>Characterising LEDBAT Performance Through Bottlenecks Using | <title>Characterising LEDBAT Performance Through Bottlenecks Using | |||
PIE, FQ-CoDel and FQ-PIE Active Queue Management</title> | PIE, FQ-CoDel and FQ-PIE Active Queue Management</title> | |||
<author fullname="Rasool Al-Saadi" initials="R." surname="Al-Saadi"> | <author fullname="Rasool Al-Saadi" initials="R." surname="Al-Saadi"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<author fullname="Grenville Armitage" initials="G." surname="Armitage" > | <author fullname="Grenville Armitage" initials="G." surname="Armitage" > | |||
<organization/> | <organization/> | |||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | </author> | |||
<author fullname="Jason But" initials="J." surname="But"> | <author fullname="Jason But" initials="J." surname="But"> | |||
<organization/> | <organization/> | |||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | </author> | |||
<date year="2017"/> | <date month="October" year="2017"/> | |||
</front> | </front> | |||
<seriesInfo name="Proc. IEEE 42nd Conference on Local Computer Networks | <seriesInfo name="DOI" value="10.1109/LCN.2017.22"/> | |||
(LCN)" value="278--285"/> | <refcontent>IEEE 42nd Conference on Local Computer Networks (LCN)</refco | |||
ntent> | ||||
</reference> | </reference> | |||
<reference anchor="BBRv2" target="https://github.com/google/bbr/blob/v2alp ha/README.md"> | <reference anchor="BBRv2" target="https://github.com/google/bbr"> | |||
<front> | <front> | |||
<title>TCP BBR v2 Alpha/Preview Release</title> | <title>TCP BBR v2 Alpha/Preview Release</title> | |||
<author fullname="Neal Cardwell" initials="N" surname="Cardwell"> | <author> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<date/> | <date month="June" year="2022" /> | |||
</front> | </front> | |||
<seriesInfo name="GitHub repository;" value="Linux congestion control mo | <refcontent>commit 17700ca</refcontent> | |||
dule"/> | ||||
</reference> | </reference> | |||
<reference anchor="SCReAM" target="https://github.com/EricssonResearch/scr | ||||
eam/blob/master/README.md"> | <reference anchor="SCReAM-L4S" target="https://github.com/EricssonResearch | |||
/scream"> | ||||
<front> | <front> | |||
<title>SCReAM</title> | <title>SCReAM</title> | |||
<author fullname="Ingemar Johansson" initials="I" surname="Johansson"> | <author> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<date/> | <date month="June" year="2022"/> | |||
</front> | </front> | |||
<seriesInfo name="GitHub repository;" value=""/> | <refcontent>commit fda6c53</refcontent> | |||
<format target="https://github.com/google/bbr/blob/v2alpha/README.md" ty | ||||
pe="Source code"/> | ||||
</reference> | </reference> | |||
<reference anchor="BDPdata" target="https://arxiv.org/abs/2107.01003"> | <reference anchor="BDPdata" target="https://arxiv.org/abs/2107.01003"> | |||
<front> | <front> | |||
<title>PI2 Parameters</title> | <title>PI2 Parameters</title> | |||
<author fullname="Bob Briscoe" initials="B." surname="Briscoe"> | <author fullname="Bob Briscoe" initials="B." surname="Briscoe"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<date month="July" year="2021"/> | <date month="October" year="2021"/> | |||
</front> | </front> | |||
<seriesInfo name="Technical Report" value="TR-BB-2021-001 arXiv:2107.010 | <seriesInfo name="DOI" value="10.48550/arXiv.2107.01003"/> | |||
03 [cs.NI]"/> | <refcontent>TR-BB-2021-001, arXiv:2107.01003 [cs.NI]</refcontent> | |||
<format target="https://arxiv.org/pdf/2107.01003" type="PDF"/> | ||||
</reference> | </reference> | |||
<reference anchor="BufferSize" target="https://doi.org/10.1145/1015467.101 5499"> | <reference anchor="BufferSize" target="https://doi.org/10.1145/1015467.101 5499"> | |||
<front> | <front> | |||
<title>Sizing Router Buffers</title> | <title>Sizing Router Buffers</title> | |||
<author fullname="Guido Appenzeller" initials="G." surname="Appenzelle r"> | <author fullname="Guido Appenzeller" initials="G." surname="Appenzelle r"> | |||
<organization>Stanford Uni</organization> | <organization>Stanford University</organization> | |||
</author> | </author> | |||
<author fullname="Isaac Keslassy" initials="I." surname="Keslassy"> | <author fullname="Isaac Keslassy" initials="I." surname="Keslassy"> | |||
<organization>Stanford Uni</organization> | <organization>Stanford University</organization> | |||
</author> | </author> | |||
<author fullname="Nick McKeown" initials="N." surname="McKeown"> | <author fullname="Nick McKeown" initials="N." surname="McKeown"> | |||
<organization>Stanford Uni</organization> | <organization>Stanford University</organization> | |||
</author> | </author> | |||
<date month="September" year="2004"/> | <date month="October" year="2004"/> | |||
</front> | </front> | |||
<seriesInfo name="In Proc. SIGCOMM'04" value="34(4):281--292"/> | <seriesInfo name="DOI" value="10.1145/1015467.1015499"/> | |||
<format target="http://yuba.stanford.edu/~nickm/papers/sigcomm2004.pdf" | <refcontent>SIGCOMM '04: Proceedings of the 2004 conference on Applicati | |||
type="PDF"/> | ons, technologies, architectures, and protocols for computer communications, pp. | |||
281-292</refcontent> | ||||
</reference> | </reference> | |||
<reference anchor="COBALT" target="https://ieeexplore.ieee.org/abstract/do cument/8847054"> | <reference anchor="COBALT" target="https://ieeexplore.ieee.org/abstract/do cument/8847054"> | |||
<front> | <front> | |||
<title>Design and Evaluation of COBALT Queue Discipline</title> | <title>Design and Evaluation of COBALT Queue Discipline</title> | |||
<author fullname="Jendaipou Palmei" initials="J." surname="Palmei"> | <author fullname="Jendaipou Palmei" initials="J." surname="Palmei"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<author fullname="Shefali Gupta" initials="S." surname="Gupta"> | <author fullname="Shefali Gupta" initials="S." surname="Gupta"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<author fullname="Pasquale Imputato" initials="P." surname="Imputato"> | <author fullname="Pasquale Imputato" initials="P." surname="Imputato"> | |||
skipping to change at line 3308 ¶ | skipping to change at line 2181 ¶ | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<author fullname="Stefan Avallone" initials="S." surname="Avallone"> | <author fullname="Stefan Avallone" initials="S." surname="Avallone"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<author fullname="Dave Täht" initials="D." surname="Täht"> | <author fullname="Dave Täht" initials="D." surname="Täht"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<date month="July" year="2019"/> | <date month="July" year="2019"/> | |||
</front> | </front> | |||
<seriesInfo name="In Proc. IEEE Int'l Symp. Local and Metropolitan Area | <seriesInfo name="DOI" value="10.1109/LANMAN.2019.8847054"/> | |||
Networks (LANMAN'19)" value="2019:1-6"/> | <refcontent>IEEE International Symposium on Local and Metropolitan Area N | |||
<format target="https://www.researchgate.net/publication/336087375_Desig | etworks (LANMAN)</refcontent> | |||
n_and_Evaluation_of_COBALT_Queue_Discipline" type="PDF"/> | ||||
</reference> | </reference> | |||
<reference anchor="DOCSIS3AQM" target="{https://www.cablelabs.com/wp-conte | ||||
nt/uploads/2013/11/Active_Queue_Management_Algorithms_DOCSIS_3_0.pdf"> | <reference anchor="DOCSIS3AQM" target="https://www.cablelabs.com/wp-conten | |||
t/uploads/2013/11/Active_Queue_Management_Algorithms_DOCSIS_3_0.pdf"> | ||||
<front> | <front> | |||
<title>Active Queue Management Algorithms for DOCSIS 3.0; A | <title>Active Queue Management Algorithms for DOCSIS 3.0: A | |||
Simulation Study of CoDel, SFQ-CoDel and PIE in DOCSIS 3.0 | Simulation Study of CoDel, SFQ-CoDel and PIE in DOCSIS 3.0 | |||
Networks</title> | Networks</title> | |||
<author fullname="Greg White" initials="G." surname="White"> | <author fullname="Greg White" initials="G." surname="White"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<date month="April" year="2013"/> | <date month="April" year="2013"/> | |||
</front> | </front> | |||
<seriesInfo name="CableLabs Technical Report" value=""/> | <refcontent>CableLabs Technical Report</refcontent> | |||
</reference> | </reference> | |||
<reference anchor="FQ_CoDel_Thresh" target="https://git.kernel.org/pub/scm | ||||
/linux/kernel/git/netdev/net-next.git/commit/?id=dfcb63ce1de6b10b"> | <reference anchor="FQ_CoDel_Thresh" target="https://git.kernel.org/pub/scm/linux | |||
/kernel/git/netdev/net-next.git/commit/?id=dfcb63ce1de6b10b"> | ||||
<front> | <front> | |||
<title>fq_codel: generalise ce_threshold marking for subset of | <title>fq_codel: generalise ce_threshold marking for subset of | |||
traffic</title> | traffic</title> | |||
<author fullname="Toke Høiland-Jørgensen" initials="T." surname="Høila nd-Jørgensen"> | <author> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<date day="20" month="October" year="2021"/> | <date month="October" year="2021"/> | |||
</front> | </front> | |||
<seriesInfo name="Linux Patch" value="Commit ID: dfcb63ce1de6b10b"/> | <refcontent>commit dfcb63ce1de6b10b</refcontent> | |||
</reference> | </reference> | |||
<reference anchor="Dukkipati06" target="https://dl.acm.org/doi/10.1145/111 1322.1111336"> | <reference anchor="Dukkipati06" target="https://dl.acm.org/doi/10.1145/111 1322.1111336"> | |||
<front> | <front> | |||
<title>Why Flow-Completion Time is the Right Metric for Congestion | <title>Why Flow-Completion Time is the Right Metric for Congestion | |||
Control</title> | Control</title> | |||
<author fullname="Nandita Dukkipati" initials="N." surname="Dukkipati" > | <author fullname="Nandita Dukkipati" initials="N." surname="Dukkipati" > | |||
<organization>Stanford Uni</organization> | <organization>Stanford University</organization> | |||
</author> | </author> | |||
<author fullname="Nick McKeown" initials="N." surname="McKeown"> | <author fullname="Nick McKeown" initials="N." surname="McKeown"> | |||
<organization>Stanford Uni</organization> | <organization>Stanford University</organization> | |||
</author> | </author> | |||
<date month="January" year="2006"/> | <date month="January" year="2006"/> | |||
</front> | </front> | |||
<seriesInfo name="ACM CCR" value="36(1):59--62"/> | <seriesInfo name="DOI" value="10.1145/1111322.1111336"/> | |||
<format target="http://yuba.stanford.edu/rcp/flowCompTime-dukkipati.pdf" | <refcontent>ACM SIGCOMM Computer Communication Review, Volume 36, Issue | |||
type="PDF"/> | 1, pp. 59-62</refcontent> | |||
</reference> | </reference> | |||
<reference anchor="Rajiullah15" target="https://www.diva-portal.org/smash/ get/diva2:846109/FULLTEXT01.pdf"> | <reference anchor="Rajiullah15" target="https://www.diva-portal.org/smash/ get/diva2:846109/FULLTEXT01.pdf"> | |||
<front> | <front> | |||
<title>Towards a Low Latency Internet: Understanding and | <title>Towards a Low Latency Internet: Understanding and | |||
Solutions</title> | Solutions</title> | |||
<author fullname="Mohammad Rajiullah" initials="M." surname="Rajiullah "> | <author fullname="Mohammad Rajiullah" initials="M." surname="Rajiullah "> | |||
<organization>Karlstad Uni</organization> | <organization>Karlstad University Studies</organization> | |||
</author> | </author> | |||
<date year="2015"/> | <date year="2015"/> | |||
</front> | </front> | |||
<seriesInfo name="Master's Thesis; Karlstad Uni, Dept of Maths & CS " value="2015:41"/> | <refcontent>Dissertation, Karlstad University</refcontent> | |||
</reference> | </reference> | |||
<reference anchor="lowat" target="https://blog.cloudflare.com/http-2-prior itization-with-nginx/"> | <reference anchor="lowat" target="https://blog.cloudflare.com/http-2-prior itization-with-nginx/"> | |||
<front> | <front> | |||
<title>Optimizing HTTP/2 prioritization with BBR and | <title>Optimizing HTTP/2 prioritization with BBR and | |||
tcp_notsent_lowat</title> | tcp_notsent_lowat</title> | |||
<author fullname="Patrick Meenan" initials="P." surname="Meenan"> | <author fullname="Patrick Meenan" initials="P." surname="Meenan"> | |||
<organization>Cloudflare</organization> | <organization>Cloudflare</organization> | |||
</author> | </author> | |||
<date day="12" month="October" year="2018"/> | <date month="October" year="2018"/> | |||
</front> | </front> | |||
<seriesInfo name="Cloudflare Blog" value=""/> | <refcontent>Cloudflare Blog</refcontent> | |||
</reference> | </reference> | |||
<reference anchor="NASA04" target="https://ntrs.nasa.gov/api/citations/201 20009198/downloads/20120009198.pdf?attachment=true"> | <reference anchor="NASA04" target="https://ntrs.nasa.gov/api/citations/201 20009198/downloads/20120009198.pdf?attachment=true"> | |||
<front> | <front> | |||
<title>Latency Requirements for Head-Worn Display S/EVS | <title>Latency Requirements for Head-Worn Display S/EVS | |||
Applications</title> | Applications</title> | |||
<author fullname="Randall E. Bailey" initials="R.R." surname="Bailey"> | <author fullname="Randall E. Bailey" initials="R." surname="Bailey"> | |||
<organization>NASA</organization> | <organization>NASA Langley Research Center</organization> | |||
</author> | </author> | |||
<author fullname="J.J. (Trey) Arthur III" initials="J.J." surname="Tre | <author fullname="J.J. (Trey) Arthur III" initials="J." surname="Trey | |||
y Arthur III"> | Arthur III"> | |||
<organization>NASA</organization> | <organization>NASA Langley Research Center</organization> | |||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | </author> | |||
<author fullname="Steven P. Williams" initials="S.P." surname="William | <author fullname="Steven P. Williams" initials="S." surname="Williams" | |||
s"> | > | |||
<organization>NASA</organization> | <organization>NASA Langley Research Center</organization> | |||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | </author> | |||
<date month="April" year="2004"/> | <date month="April" year="2004"/> | |||
</front> | </front> | |||
<seriesInfo name="SPIE Defense and Security Symposium" value="LF99-1955" | <seriesInfo name="DOI" value="10.1117/12.554462"/> | |||
/> | <refcontent>Proceedings of SPIE 5424</refcontent> | |||
</reference> | </reference> | |||
<reference anchor="Raaen14" target="http://ojs.bibsys.no/index.php/NIK/art | ||||
icle/view/9/6"> | <reference anchor="Raaen14" target="http://ojs.bibsys.no/index.php/NIK/article/v | |||
iew/9/6"> | ||||
<front> | <front> | |||
<title>Latency thresholds for usability in games: A survey</title> | <title>Latency Thresholds for Usability in Games: A Survey</title> | |||
<author fullname="Kjetil Raaen" initials="K." surname="Raaen"> | <author fullname="Kjetil Raaen" initials="K." surname="Raaen"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<author fullname="Tor-Morten Grønli" initials="T-M." surname="Grønli"> | <author fullname="Tor-Morten Grønli" initials="T-M." surname="Grønli"> | |||
<organization/> | <organization/> | |||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | </author> | |||
<date year="2014"/> | <date year="2014"/> | |||
</front> | </front> | |||
<seriesInfo name="Norsk IKT-konferanse for forskning og utdanning" value | <refcontent>Norsk IKT-konferanse for forskning og utdanning (Norwegian | |||
=""/> | ICT conference for research and education)</refcontent> | |||
</reference> | </reference> | |||
</references> | </references> | |||
<!-- <section title="Change Log (to be Deleted before Publication)"> | ||||
<t>A detailed version history can be accessed at | ||||
<http://datatracker.ietf.org/doc/draft-briscoe-aqm-ecn-roadmap/history/ | ||||
></t> | ||||
<t><list style="hanging"> | ||||
<t hangText="From briscoe-...-00 to briscoe-...-01:">Technical | ||||
changes:<list style="symbols"> | ||||
<t/> | ||||
</list>Editorial changes:<list style="symbols"> | ||||
<t/> | ||||
</list></t> | ||||
</list></t> | ||||
</section> | ||||
<section numbered="false" toc="default"> | <section numbered="false" toc="default"> | |||
<name>Acknowledgements</name> | <name>Acknowledgements</name> | |||
<t>Thanks to Richard Scheffenegger, Wes Eddy, Karen Nielsen, David | <t>Thanks to <contact fullname="Richard Scheffenegger"/>, <contact | |||
Black, Jake Holland, Vidhi Goel, Ermin Sakic, Praveen Balasubramanian, | fullname="Wes Eddy"/>, <contact fullname="Karen Nielsen"/>, <contact | |||
Gorry Fairhurst, Mirja Kuehlewind, Philip Eardley, Neal Cardwell, Pete | fullname="David Black"/>, <contact fullname="Jake Holland"/>, <contact | |||
Heist and Martin Duke for their useful review comments. Thanks also to | fullname="Vidhi Goel"/>, <contact fullname="Ermin Sakic"/>, <contact | |||
the area reviewers: Marco Tiloca, Lars Eggert, Roman Danyliw and | fullname="Praveen Balasubramanian"/>, <contact fullname="Gorry | |||
Eric Vyncke.</t> | Fairhurst"/>, <contact fullname="Mirja Kuehlewind"/>, <contact | |||
<t>Bob Briscoe and Koen De Schepper were part-funded by the European | fullname="Philip Eardley"/>, <contact fullname="Neal Cardwell"/>, | |||
Community under its Seventh Framework Programme through the Reducing | <contact fullname="Pete Heist"/>, and <contact fullname="Martin Duke"/> | |||
Internet Transport Latency (RITE) project (ICT-317700). The contribution | for their useful review comments. Thanks also to the area reviewers: | |||
of Koen De Schepper was also part-funded by the 5Growth and DAEMON EU | <contact fullname="Marco Tiloca"/>, <contact fullname="Lars Eggert"/>, | |||
H2020 projects. Bob Briscoe was also part-funded by the Research Council | <contact fullname="Roman Danyliw"/>, and <contact fullname="Éric | |||
of Norway through the TimeIn project, partly by CableLabs and partly by | Vyncke"/>.</t> | |||
the Comcast Innovation Fund. The views expressed here are solely those | <t><contact fullname="Bob Briscoe"/> and <contact fullname="Koen De | |||
of the authors.</t> | Schepper"/> were partly funded by the European Community under its Seventh | |||
Framework Programme through the Reducing Internet Transport Latency | ||||
(RITE) project (ICT-317700). The contribution of <contact fullname="Koen | ||||
De Schepper"/> was also partly funded by the 5Growth and DAEMON EU H2020 | ||||
projects. <contact fullname="Bob Briscoe"/> was also partly funded by the | ||||
Research Council of Norway through the TimeIn project, partly by | ||||
CableLabs, and partly by the Comcast Innovation Fund. The views expressed | ||||
here are solely those of the authors.</t> | ||||
</section> | </section> | |||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 351 change blocks. | ||||
2844 lines changed or deleted | 1313 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |