rfc9743v1.txt   rfc9743.txt 
skipping to change at line 13 skipping to change at line 13
Request for Comments: 9743 Google LLC Request for Comments: 9743 Google LLC
BCP: 133 G. Fairhurst, Ed. BCP: 133 G. Fairhurst, Ed.
Obsoletes: 5033 University of Aberdeen Obsoletes: 5033 University of Aberdeen
Category: Best Current Practice March 2025 Category: Best Current Practice March 2025
ISSN: 2070-1721 ISSN: 2070-1721
Specifying New Congestion Control Algorithms Specifying New Congestion Control Algorithms
Abstract Abstract
This document replaces RFC 5033, which discusses the principles and RFC 5033 discusses the principles and guidelines for standardizing
guidelines for standardizing new congestion control algorithms. It new congestion control algorithms. This document obsoletes RFC 5033
seeks to ensure that proposed congestion control algorithms operate to reflect changes in the congestion control landscape by providing a
without harm and efficiently alongside other algorithms in the global framework for the development and assessment of congestion control
mechanisms, promoting stability across diverse network paths. This
document seeks to ensure that proposed congestion control algorithms
operate efficiently and without harm when used in the global
Internet. It emphasizes the need for comprehensive testing and Internet. It emphasizes the need for comprehensive testing and
validation to prevent adverse interactions with existing flows. This validation to prevent adverse interactions with existing flows.
document provides a framework for the development and assessment of
congestion control mechanisms, promoting stability across diverse
network environments. It obsoletes RFC 5033 to reflect changes in
the congestion control landscape.
Status of This Memo Status of This Memo
This memo documents an Internet Best Current Practice. This memo documents an Internet Best Current Practice.
This document is a product of the Internet Engineering Task Force This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has (IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Further information on Internet Engineering Steering Group (IESG). Further information on
BCPs is available in Section 2 of RFC 7841. BCPs is available in Section 2 of RFC 7841.
skipping to change at line 98 skipping to change at line 97
7.7. Extreme Packet Reordering 7.7. Extreme Packet Reordering
7.8. Transient Events 7.8. Transient Events
7.9. Sudden Changes in the Path 7.9. Sudden Changes in the Path
7.10. Multipath Transport 7.10. Multipath Transport
7.11. Data Centers 7.11. Data Centers
8. Security Considerations 8. Security Considerations
9. IANA Considerations 9. IANA Considerations
10. References 10. References
10.1. Normative References 10.1. Normative References
10.2. Informative References 10.2. Informative References
Appendix A. Changes Since RFC 5033
Acknowledgments Acknowledgments
Contributors Contributors
Authors' Addresses Authors' Addresses
1. Introduction 1. Introduction
This document provides guidelines for the IETF to use when evaluating This document provides guidelines for the IETF to use when evaluating
a proposed congestion control algorithm that differs from the general a proposed congestion control algorithm that differs from the general
congestion control principles outlined in [RFC2914]. The guidance is congestion control principles outlined in [RFC2914]. The guidance is
intended to be useful to authors proposing congestion control intended to be useful to authors proposing congestion control
skipping to change at line 153 skipping to change at line 153
Multicast congestion control is a considerably less mature field of Multicast congestion control is a considerably less mature field of
study and is not in the scope of this document. However, Section 4 study and is not in the scope of this document. However, Section 4
of [RFC8085] provides additional guidelines for multicast and of [RFC8085] provides additional guidelines for multicast and
broadcast usage of UDP. broadcast usage of UDP.
Congestion control algorithms have been developed outside of the Congestion control algorithms have been developed outside of the
IETF, including at least two that saw large scale deployment. These IETF, including at least two that saw large scale deployment. These
include CUBIC [HRX08] and Bottleneck Bandwidth and Round-trip include CUBIC [HRX08] and Bottleneck Bandwidth and Round-trip
propagation time (BBR) [BBR]. propagation time (BBR) [BBR].
CUBIC was documented in a research publication in 2007 [HRX08], and CUBIC was documented in a research publication in 2008 [HRX08], and
was then adopted as the default congestion control algorithm for the was then adopted as the default congestion control algorithm for the
TCP implementation in Linux. It was already used in a significant TCP implementation in Linux. It was already used in a significant
fraction of TCP connections over the Internet before being documented fraction of TCP connections over the Internet before being documented
in an Informational Internet-Draft in 2015, published as an in an Internet-Draft in 2015, and published as an Informational RFC
Informational RFC in 2017 as [RFC8312] and then as a Proposed in 2017 as [RFC8312] and then as a Proposed Standard in 2023
Standard in 2023 [RFC9438]. [RFC9438].
At the time of writing, BBR is being developed as an internal At the time of writing, BBR is being developed as an internal
research project by Google, with the first implementation contributed research project by Google, with the first implementation contributed
to Linux kernel 4.19 in 2016. It was described in an Internet-Draft to Linux kernel 4.19 in 2016. BBR was described in an Internet-Draft
in 2018, which has been regularly updated to document the evolving in 2018 and was first presented in the IRTF Internet Congestion
versions of the algorithm [BBR]. BBR is currently widely used for Control Research Group. It has since been regularly updated to
Google services using either TCP or QUIC and is also widely deployed document the evolving versions of the algorithm [BBR]. BBR is
outside of Google. currently widely used for Google services using either TCP or QUIC
and is also widely deployed outside of Google.
We cannot say whether the original authors of [RFC5033] expected that We cannot say whether the original authors of [RFC5033] expected that
developers would be waiting for IETF review before widely deploying a developers would be waiting for IETF review before widely deploying a
new congestion control algorithm over the Internet, but the examples new congestion control algorithm over the Internet, but the examples
of CUBIC and BBR illustrate that deployment of new algorithms is not, of CUBIC and BBR illustrate that deployment of new algorithms is not,
in fact, gated by the publication of the algorithm as an RFC. in fact, gated by the publication of the algorithm as an RFC.
Nevertheless, a specification for a congestion control algorithm Nevertheless, a specification for a congestion control algorithm
provides a number of advantages: provides a number of advantages:
* It can help implementers, operators, and other interested parties * It can help implementers, operators, and other interested parties
develop a shared understanding of how the algorithm works and how develop a shared understanding of how the algorithm works and how
it is expected to behave in various scenarios and configurations. it is expected to behave in various scenarios and configurations.
* It can help potential contributors understand the algorithm, which * It can help potential contributors understand the algorithm, which
can make it easier for them to suggest improvements and/or can make it easier for them to suggest improvements and/or
identify limitations. Furthermore, the specification can help identify limitations. Furthermore, the specification can help
multiple contributors align on a consensus change to the multiple contributors align on a consensus change to the
algorithm. algorithm.
* A specification that is accessible to anyone can circumvent the * It can help (by being accessible to anyone) to circumvent the
issue that some implementers may be unable to read open-source issue that some implementers may be unable to read open-source
reference implementations due to the constraints of some open- reference implementations due to the constraints of some open-
source licenses. source licenses.
Beyond helping develop specific algorithm proposals, guidelines can Beyond helping develop specific algorithm proposals, guidelines can
also serve as a reminder to potential inventors and developers of the also serve as a reminder to potential inventors and developers of the
multiple facets of the congestion control problem. multiple facets of the congestion control problem.
The evaluation guidelines in this document are intended to be The evaluation guidelines in this document are intended to be
consistent with the congestion control principles from [RFC2914] consistent with the congestion control principles from [RFC2914]
skipping to change at line 264 skipping to change at line 265
Before a proposed congestion control algorithm is published as an Before a proposed congestion control algorithm is published as an
Experimental or Standards Track RFC, the community SHOULD gain Experimental or Standards Track RFC, the community SHOULD gain
practical experience with implementations and experience using the practical experience with implementations and experience using the
algorithm. Implementations by independent teams can help provide algorithm. Implementations by independent teams can help provide
assurance that a specification has avoided assumptions or ambiguity. assurance that a specification has avoided assumptions or ambiguity.
An independent evaluation by multiple teams helps provide assurance An independent evaluation by multiple teams helps provide assurance
that the design meets the evaluation criteria and can assess typical that the design meets the evaluation criteria and can assess typical
interactions with other traffic. This evaluation could use an interactions with other traffic. This evaluation could use an
emulated laboratory environment or a controlled experiment (within a emulated laboratory environment or a controlled experiment (within a
limited domain or at the Internet scale). Evidence of results is limited domain or at Internet scale). When a working group is trying
normally considered by the working group in deciding if a to decide if a proposed specification is ready for publication, it
specification is ready for publication and ought to be documented in will normally consider evidence of results. This ought to be
any request for the working group to publish the specification. documented in any request from the working group to publish the
specification.
Publication might occur without multiple implementations if a single A congestion control algorithm without multiple implementations might
implementation is widely used, open source, and shown to have a still be published as an RFC if a single implementation is widely
positive impact on the Internet, particularly if the target status is used, open source, and shown to have a positive impact on the
Experimental. Internet, particularly if the target status is Experimental.
3.2. Document-Status Guidelines 3.2. Document-Status Guidelines
The guidelines in this document apply to specifications of congestion The guidelines in this document apply to specifications of congestion
control algorithms that seek publication as an RFC via the IETF control algorithms that seek publication as an RFC via the IETF
Stream with an Experimental or Standards Track status. The Stream with an Experimental or Standards Track status. The
evaluation of either status involves the same questions, but with evaluation of either status involves the same questions, but with
different expectations for both the answers and the degree of different expectations for both the answers and the degree of
certainty of those answers. certainty of those answers.
Specifications on congestion control algorithms without empirical Specifications of congestion control algorithms without empirical
evidence of Internet-scale deployment MUST seek Experimental status, evidence of Internet-scale deployment MUST seek Experimental status,
unless they are not targeted for general use. unless they are not targeted for general use. Algorithms not
targeted at general use do not require Internet-scale data.
Specifications that seek to be published as Experimental IETF Stream Specifications that seek to be published as Experimental IETF Stream
RFCs ought to explain the reason for the status and what further RFCs ought to explain the reason for the status and what further
information would be required to progress to a Standards Track RFC. information would be required to progress to a Standards Track RFC.
For example, Section 12 of [RFC6928] provides "Usage and Deployment For example, Section 12 of [RFC6928] provides "Usage and Deployment
Recommendations" that describe the experiments expected by the TCPM Recommendations" that describe the experiments expected by the TCPM
Working Group. Section 4 of [RFC4614] provides other examples of Working Group. Section 4 of [RFC7414] provides other examples of
extensions that were considered experimental when the specification extensions that were considered experimental when the specification
was published (note that [RFC4614] has since been obsoleted by was published.
[RFC7414]).
Experimental specifications SHOULD NOT be deployed as a default. Experimental specifications SHOULD NOT be deployed as a default.
They SHOULD only be deployed in situations where they are being They SHOULD only be deployed in situations where they are being
actively measured and where it is possible to deactivate them if actively measured and where it is possible to deactivate them if
there are signs of pathological behavior. there are signs of pathological behavior.
Specifications on congestion control algorithms with a record of Specifications of congestion control algorithms with a record of
measured Internet-scale deployment MAY directly seek Standards Track measured Internet-scale deployment MAY directly seek Standards Track
status if there is solid data that reflects that the algorithm is status if there is solid data that reflects that the algorithm is
safe and the design is stable, guided by the considerations in safe and the design is stable, guided by the considerations in
Section 6. However, the existence of this data does not waive the Section 6. However, the existence of this data does not waive the
other considerations in this document. other considerations in this document.
Each specification submitted for publication as an RFC is REQUIRED to Each specification submitted for publication as an RFC is REQUIRED to
include a statement in the abstract indicating whether or not there include a statement in the abstract indicating whether or not there
is IETF consensus that the proposed congestion control algorithm is is IETF consensus that the proposed congestion control algorithm is
considered safe for use on the Internet. Each such specification is considered safe for use on the Internet. Each such specification is
skipping to change at line 371 skipping to change at line 373
Algorithms that rely on specific functions or configurations in the Algorithms that rely on specific functions or configurations in the
network need to provide a reference or specification for these network need to provide a reference or specification for these
functions (such as an RFC or another stable specification). For functions (such as an RFC or another stable specification). For
publication of a specification of one of these algorithms to proceed, publication of a specification of one of these algorithms to proceed,
the IETF will need to consider whether a working group exists that the IETF will need to consider whether a working group exists that
can properly assess the network-layer aspects and their interaction can properly assess the network-layer aspects and their interaction
with the congestion control. with the congestion control.
In evaluating a new proposal for use in a controlled environment, the In evaluating a new proposal for use in a controlled environment, the
IETF needs to understand the usage, e.g., how the usage is scoped to IETF community needs to understand the usage (e.g., how the usage is
the controlled environment, whether the algorithm will share scoped to the controlled environment), whether the algorithm will
resources with Internet traffic, and consider what could happen if share resources with Internet traffic, and what could happen if used
used in a protocol that is bridged across an Internet path. in a protocol that is bridged across an Internet path. Algorithms
Algorithms that are designed to be confined to a controlled that are designed to be confined to a controlled environment and are
environment and are not intended for use in the general Internet not intended for use in the general Internet might instead seek real-
might instead seek real-world data for those environments. In such world data for those environments. In such cases, the evaluation
cases, the evaluation criteria in the remainder of this document criteria in the remainder of this document might not apply.
might not apply.
5. Evaluation Criteria 5. Evaluation Criteria
As previously noted, authors of a specification on a congestion As previously noted, authors of a specification on a congestion
control algorithm are expected to conduct a comprehensive evaluation control algorithm are expected to conduct a comprehensive evaluation
of the advantages and disadvantages of any congestion control of the advantages and disadvantages of any congestion control
algorithms presented to the IETF community. The following guidelines algorithms presented to the IETF community. The following guidelines
are intended to assist authors and the community in this endeavor. are intended to assist authors and the community in this endeavor.
While these guidelines provide a helpful framework, they should not While these guidelines provide a helpful framework, they should not
be regarded as an exhaustive checklist as concerns beyond the scope be regarded as an exhaustive checklist as concerns beyond the scope
skipping to change at line 411 skipping to change at line 412
practical limitations on carrying out an evaluation of the criteria. practical limitations on carrying out an evaluation of the criteria.
The requirement that the community consider a criterion does not The requirement that the community consider a criterion does not
imply that the result needs to be described in an RFC: there is no imply that the result needs to be described in an RFC: there is no
formal requirement to document the results, although normal IETF formal requirement to document the results, although normal IETF
policies for archiving proceedings will provide a record. policies for archiving proceedings will provide a record.
This document, except where otherwise noted, does not provide This document, except where otherwise noted, does not provide
normative guidance on the acceptable thresholds for any of these normative guidance on the acceptable thresholds for any of these
criteria. Instead, the community will use these evaluations as an criteria. Instead, the community will use these evaluations as an
input when considering whether to progress the proposed algorithm. input when considering whether to progress the proposed algorithm
specification in the publication process.
5.1. Single Algorithm Behavior 5.1. Single Algorithm Behavior
The criteria in the following subsections evaluate the congestion The criteria in the following subsections evaluate the congestion
control algorithm when one or more flows using that algorithm share a control algorithm when one or more flows using that algorithm share a
bottleneck link (i.e., with no flows using a differing congestion bottleneck link (i.e., with no flows using a differing congestion
control algorithm). control algorithm).
5.1.1. Protection Against Congestion Collapse 5.1.1. Protection Against Congestion Collapse
skipping to change at line 441 skipping to change at line 443
times of extreme (and persistent) congestion. times of extreme (and persistent) congestion.
If full backoff is used, this test does not require that the If full backoff is used, this test does not require that the
mechanism be identical to that of TCP (see [RFC6298] and [RFC8961]). mechanism be identical to that of TCP (see [RFC6298] and [RFC8961]).
For example, this does not preclude full backoff mechanisms that For example, this does not preclude full backoff mechanisms that
would give flows with different round-trip times comparable capacity would give flows with different round-trip times comparable capacity
during backoff. during backoff.
5.1.2. Protection Against Bufferbloat 5.1.2. Protection Against Bufferbloat
A congestion control algorithm should try to avoid maintaining A congestion control algorithm ought to try to avoid maintaining
excessive queues in the network. Exactly how the algorithm achieves excessive queues in the network. Exactly how the algorithm achieves
this is algorithm specific; see [RFC8961] and [RFC8085] for this is algorithm specific; see [RFC8961] and [RFC8085] for
requirements. requirements.
"Bufferbloat" refers to the building of excessive queues in the "Bufferbloat" refers to the building of excessive queues in the
network [BUFFERBLOAT]. Many network routers are configured with very network [BUFFERBLOAT]. Many network routers are configured with very
large buffers. The Standards Track RFCs [RFC5681] and [RFC9438] large buffers. The Standards Track RFCs [RFC5681] and [RFC9438]
describing the Reno and CUBIC congestion control algorithms describe the Reno and CUBIC congestion control algorithms
(respectively) send at progressively higher rates until a First In, (respectively), which send at progressively higher rates until a
First Out (FIFO) buffer completely fills; then packet losses occur. First In, First Out (FIFO) buffer completely fills; then packet
Every connection passing through that bottleneck experiences losses occur. Every connection passing through that bottleneck
increased latency due to the high buffer occupancy. This adds experiences increased latency due to the high buffer occupancy. This
unwanted latency that negatively impacts highly interactive adds unwanted latency that negatively impacts highly interactive
applications such as videoconferencing or games, but it also affects applications such as videoconferencing or games, but it also affects
routine web browsing and video playing. routine web browsing and video playing.
This problem has been widely discussed since 2011 [BUFFERBLOAT], but This problem has been widely discussed since 2011 [BUFFERBLOAT], but
was not discussed in the congestion control principles published in was not discussed in the congestion control principles published in
September 2002 [RFC2914]. The Reno and CUBIC congestion control September 2002 [RFC2914]. The Reno and CUBIC congestion control
algorithms do not address this problem, but a new congestion control algorithms do not address this problem, but a new congestion control
algorithm has the opportunity to improve the state of the art. algorithm has the opportunity to improve the state of the art.
5.1.3. Protection Against High Packet Loss 5.1.3. Protection Against High Packet Loss
A congestion control algorithm should try to avoid causing A congestion control algorithm ought to try to avoid causing
excessively high rates of packet loss. To accomplish this, it should excessively high rates of packet loss. To accomplish this, it should
avoid excessive increases in sending rate and reduce its sending rate avoid excessive increases in sending rate and reduce its sending rate
if experiencing high packet loss. if experiencing high packet loss.
The first version of the BBR algorithm [BBRv1] failed this The first version of the BBR algorithm [BBRv1] failed this
requirement. Experimental evaluation [BBRv1-EVALUATION] showed that requirement. Experimental evaluation [BBRv1-EVALUATION] showed that
it caused a sustained rate of packet loss when multiple BBRv1 flows it caused a sustained rate of packet loss when multiple BBRv1 flows
shared a bottleneck and the buffer size was less than roughly one and shared a bottleneck and the buffer size was less than roughly one and
a half times the Bandwidth Delay Product (BDP). This was a half times the Bandwidth Delay Product (BDP). This was
unsatisfactory, and, indeed, further versions provided a fix for this unsatisfactory, and, indeed, further versions provided a fix for this
aspect of BBR [BBR]. aspect of BBR [BBR].
This requirement does not imply that the algorithm should react to This requirement does not imply that the algorithm should react to
packet losses in exactly the same way as congestion control packet losses in exactly the same way as congestion control
algorithms described in current Standards Track RFCs (e.g., algorithms described in current Standards Track RFCs (e.g.,
[RFC5681]). [RFC5681]).
5.1.4. Fairness Within the Proposed Congestion Control Algorithm 5.1.4. Fairness Within the Proposed Congestion Control Algorithm
When multiple competing flows all use the same proposed congestion When multiple competing flows all use the same proposed congestion
control algorithm, the specification should explore how the capacity control algorithm, the evaluation should explore how the capacity is
is shared among the competing flows. Capacity fairness can be shared among the competing flows. Capacity fairness can be important
important when a small number of similar flows compete to fill a when a small number of similar flows compete to fill a bottleneck.
bottleneck. However, it can also not be useful, for example, when However, it can also not be useful, for example, when comparing flows
comparing flows that seek to send at different rates or if some of that seek to send at different rates or if some of the flows do not
the flows do not last sufficiently long to approach asymptotic last sufficiently long to approach asymptotic behavior.
behavior.
5.1.5. Short Flows 5.1.5. Short Flows
A great deal of congestion control analysis concerns the steady-state A great deal of congestion control analysis concerns the steady-state
behavior of long flows. However, many Internet flows are relatively behavior of long flows. However, many Internet flows are relatively
short lived. Many short-lived flows today remain in the "slow start" short lived. Many short-lived flows today remain in the "slow start"
mode of operation [RFC5681] that commonly features exponential mode of operation [RFC5681] that commonly features exponential
congestion window growth because the flow never experiences congestion window growth because the flow never experiences
congestion (e.g., packet loss). congestion (e.g., packet loss).
A proposed congestion control algorithm MUST consider how new and A proposal for a congestion control algorithm MUST consider how new
short-lived flows affect long-lived flows, and vice versa. and short-lived flows affect long-lived flows, and vice versa.
5.2. Mixed Algorithm Behavior 5.2. Mixed Algorithm Behavior
The mixed algorithm behavior criteria evaluate the interaction of the The mixed algorithm behavior criteria evaluate the interaction of the
proposed congestion control algorithms being specified with commonly proposed congestion control algorithms being specified with commonly
deployed congestion control algorithms. deployed congestion control algorithms.
In contexts where differing congestion control algorithms are used, In contexts where differing congestion control algorithms are used,
it is important to understand whether the proposed congestion control it is important to understand whether the proposed congestion control
algorithm could result in more harm than algorithms published in algorithm could result in more harm than algorithms published in
skipping to change at line 567 skipping to change at line 568
for a description of the characteristics of this use case and the for a description of the characteristics of this use case and the
resulting requirements. resulting requirements.
[RFC8868] provides suggestions for real-time congestion control [RFC8868] provides suggestions for real-time congestion control
design and [RFC8867] suggests test cases. [RFC9392] describes some design and [RFC8867] suggests test cases. [RFC9392] describes some
considerations for the RTP Control Protocol (RTCP). In particular, considerations for the RTP Control Protocol (RTCP). In particular,
real-time flows can use less frequent feedback (acknowledgment) than real-time flows can use less frequent feedback (acknowledgment) than
that provided by reliable transports. This document does not change that provided by reliable transports. This document does not change
the Informational status of those RFCs. the Informational status of those RFCs.
A proposed congestion control algorithm SHOULD consider coexistence A proposal for a congestion control algorithm SHOULD consider
with widely deployed real-time congestion control algorithms. coexistence with widely deployed real-time congestion control
Regrettably, at the time of writing (2024), many algorithms with algorithms. Regrettably, at the time of writing (2024), many
detailed public specifications are not widely deployed, while many algorithms with detailed public specifications are not widely
widely deployed real-time congestion control algorithms have deployed, while many widely deployed real-time congestion control
incomplete public specifications. It is hoped that this situation algorithms have incomplete public specifications. It is hoped that
will change. this situation will change.
To the extent that behavior of widely deployed algorithms is To the extent that behavior of widely deployed algorithms is
understood, proponents of a proposed congestion control algorithm can understood, proponents of a proposed congestion control algorithm can
analyze and simulate a proposal's interaction with those algorithms. analyze and simulate a proposal's interaction with those algorithms.
To the extent that they are not, experiments can be conducted where To the extent that they are not, experiments can be conducted where
possible. possible.
Real-time flows can be directed into distinct queues via Real-time flows can be directed into distinct queues via
Differentiated Services Code Points (DSCPs) or other mechanisms, Differentiated Services Code Points (DSCPs) or other mechanisms,
which can substantially reduce the interplay with other traffic. which can substantially reduce the interplay with other traffic.
skipping to change at line 605 skipping to change at line 606
5.2.3. Short and Long Flows 5.2.3. Short and Long Flows
The effect on short-lived and long-lived flows using other common The effect on short-lived and long-lived flows using other common
congestion control algorithms MUST be evaluated, as in Section 5.1.5. congestion control algorithms MUST be evaluated, as in Section 5.1.5.
5.3. Other Criteria 5.3. Other Criteria
5.3.1. Differences with Congestion Control Principles 5.3.1. Differences with Congestion Control Principles
A proposed congestion control algorithm MUST clearly explain any A proposal for a congestion control algorithm MUST clearly explain
deviations from [RFC2914] and [RFC7141]. any deviations from [RFC2914] and [RFC7141].
5.3.2. Incremental Deployment 5.3.2. Incremental Deployment
A congestion control algorithm proposal MUST discuss whether it A congestion control algorithm proposal MUST discuss whether it
allows for incremental deployment in the targeted environment. For a allows for incremental deployment in the targeted environment. For a
mechanism targeted for deployment in the current Internet, the mechanism targeted for deployment in the current Internet, the
proposal SHOULD discuss what is known (if anything) about the correct proposal SHOULD discuss what is known (if anything) about the correct
operation of the mechanisms with some of the equipment in the current operation of the mechanisms with some of the equipment in the current
Internet (e.g., routers, transparent proxies, WAN optimizers, Internet (e.g., routers, transparent proxies, WAN optimizers,
intrusion detection systems, home routers, and the like). intrusion detection systems, home routers, and the like).
skipping to change at line 719 skipping to change at line 720
Some of the AQM techniques that might have an impact on a proposed Some of the AQM techniques that might have an impact on a proposed
congestion control algorithm include: congestion control algorithm include:
* Flow Queue CoDel (FQ-CoDel) [RFC8290]; * Flow Queue CoDel (FQ-CoDel) [RFC8290];
* Proportional Integral controller Enhanced (PIE) [RFC8033]; and * Proportional Integral controller Enhanced (PIE) [RFC8033]; and
* Low Latency, Low Loss, and Scalable Throughput (L4S) [RFC9332]. * Low Latency, Low Loss, and Scalable Throughput (L4S) [RFC9332].
A proposed congestion control algorithm that sets one of the two A proposed congestion control algorithm that sets one of the two ECN-
Explicit Congestion Transport (ECT) codepoints in the IP header can Capable Transport (ECT) codepoints in the IP header can gain the
gain the benefits of receiving Explicit Congestion Notification - benefits of receiving Explicit Congestion Notification-Congestion
Congestion Experienced (ECN-CE) signals from an on-path AQM Experienced (ECN-CE) signals from an on-path AQM [RFC8087]. Use of
[RFC8087]. Use of ECN (see [RFC3168] and [RFC9332]) requires the ECN (see [RFC3168] and [RFC9332]) requires the congestion control
congestion control algorithm to react when it receives a packet with algorithm to react when it receives a packet with an ECN-CE marking.
an ECN-CE marking. This reaction needs to be evaluated to confirm This reaction needs to be evaluated to confirm that the algorithm
that the algorithm conforms with the requirements of the ECT conforms with the requirements of the ECT codepoint that was used.
codepoint that was used.
Note that evaluation of AQM techniques -- as opposed to their impact Note that evaluation of AQM techniques -- as opposed to their impact
on a specific proposed congestion control algorithm -- is out of on a specific proposed congestion control algorithm -- is out of
scope of this document. [RFC7567] describes design considerations scope of this document. [RFC7567] describes design considerations
for AQMs. for AQMs.
7.2. Operation with the Envelope Set by Network Circuit Breakers 7.2. Operation with the Envelope Set by Network Circuit Breakers
Some equipment in the network uses an automatic mechanism to Some equipment in the network uses an automatic mechanism to
continuously monitor the use of resources by a flow or aggregate set continuously monitor the use of resources by a flow or aggregate set
skipping to change at line 791 skipping to change at line 791
might make the volume of control packets in a given algorithm a key might make the volume of control packets in a given algorithm a key
evaluation metric. evaluation metric.
Extremely low-power links can lead to very low throughput and a low Extremely low-power links can lead to very low throughput and a low
bandwidth-delay product, which is well below the standard operating bandwidth-delay product, which is well below the standard operating
range of most Internet flows. range of most Internet flows.
Furthermore, many IoT applications do not a have a human in the loop; Furthermore, many IoT applications do not a have a human in the loop;
therefore, they might have weaker latency constraints because they do therefore, they might have weaker latency constraints because they do
not relate to a user experience. Congestion control algorithms still not relate to a user experience. Congestion control algorithms still
may need to share the path with other flows with different might need to share the path with other flows with different
constraints. constraints.
7.5. Paths with High Delay 7.5. Paths with High Delay
A proposed congestion control algorithm ought not to presume that all Authors of a proposed congestion control algorithm ought not to
general Internet paths have a low delay. Some paths include links presume that all general Internet paths have a low delay. Some paths
that contribute much more delay than for a typical Internet path. include links that contribute much more delay than for a typical
Satellite links often have delays longer than is typical for wired Internet path. Satellite links often have delays longer than is
paths [RFC2488] and high-delay-bandwidth products [RFC3649]. typical for wired paths [RFC2488] and high-delay-bandwidth products
[RFC3649].
Paths can also present a variable delay as described in Section 7.3. Paths can also present a variable delay as described in Section 7.3.
7.6. Misbehaving Nodes 7.6. Misbehaving Nodes
A proposed congestion control algorithm SHOULD explore how the A proposal for a congestion control algorithm SHOULD explore how the
algorithm performs with non-compliant senders, receivers, or routers. algorithm performs with non-compliant senders, receivers, or routers.
In addition, the proposal should explore how a proposed congestion In addition, the proposal should explore how a proposed congestion
control algorithm performs with outside attackers. This can be control algorithm performs with outside attackers. This can be
particularly important for proposed congestion control algorithms particularly important for proposed congestion control algorithms
that involve explicit feedback from routers along the path. that involve explicit feedback from routers along the path.
As an example from an Experimental RFC, performance with misbehaving As an example from an Experimental RFC, performance with misbehaving
nodes and outside attackers is discussed in Sections 9.4, 9.5, and nodes and outside attackers is discussed in Sections 9.4, 9.5, and
9.6 of [RFC4782]. This includes discussion of: 9.6 of [RFC4782]. This includes discussion of:
skipping to change at line 828 skipping to change at line 829
* collusion between misbehaving routers; * collusion between misbehaving routers;
* misbehaving middleboxes; and * misbehaving middleboxes; and
* the potential use of Quick-Start to attack routers or to tie up * the potential use of Quick-Start to attack routers or to tie up
available Quick-Start bandwidth. available Quick-Start bandwidth.
7.7. Extreme Packet Reordering 7.7. Extreme Packet Reordering
A proposed congestion control algorithm ought not to presume that all Authors of a proposed congestion control algorithm ought not to
general Internet paths reliably deliver packets in order. [RFC4653] presume that all general Internet paths reliably deliver packets in
discusses the effect of extreme packet reordering. order. [RFC4653] discusses the effect of extreme packet reordering.
7.8. Transient Events 7.8. Transient Events
A proposed congestion control algorithm SHOULD consider how it would A proposal for a congestion control algorithm SHOULD consider how it
perform in the presence of transient events such as a sudden onset of would perform in the presence of transient events such as a sudden
congestion, a routing change, or a mobility event. Routing changes, onset of congestion, a routing change, or a mobility event. Routing
link disconnections, intermittent link connectivity, and mobility are changes, link disconnections, intermittent link connectivity, and
discussed in more detail in Section 16 of [TOOLS]. mobility are discussed in more detail in Section 16 of [TOOLS].
As an example from an Experimental RFC, a response to transient As an example from an Experimental RFC, a response to transient
events is discussed in Section 9.2 of [RFC4782]. events is discussed in Section 9.2 of [RFC4782].
7.9. Sudden Changes in the Path 7.9. Sudden Changes in the Path
An IETF transport is not tied to a specific Internet path or type of An IETF transport is not tied to a specific Internet path or type of
path. The set of routers that form a path can and do change with path. The set of routers that form a path can and do change with
time. This will cause the properties of the path to change with time. This will cause the properties of the path to change with
respect to time. A proposed congestion control algorithm MUST respect to time. A proposal for a congestion control algorithm MUST
evaluate the impact of changes in the path and be robust to changes evaluate the impact of changes in the path and be robust to changes
in path characteristics on the interval of common Internet rerouting in path characteristics on the interval of common Internet rerouting
intervals. intervals.
7.10. Multipath Transport 7.10. Multipath Transport
Multipath transport protocols permit more than one path to be Multipath transport protocols permit more than one path to be
differentiated and used by a single connection at the sender. A differentiated and used by a single connection at the sender. A
multipath sender can schedule which packets travel on which of its multipath sender can schedule which packets travel on which of its
active paths. This enables a trade-off in timeliness and active paths. This enables a trade-off in timeliness and
skipping to change at line 904 skipping to change at line 905
Data centers are characterized by very low latencies (< 2 ms). Many Data centers are characterized by very low latencies (< 2 ms). Many
workloads involve bursty traffic where many nodes complete a task at workloads involve bursty traffic where many nodes complete a task at
the same time. As a controlled environment, data centers often the same time. As a controlled environment, data centers often
deploy fabrics that employ rich signaling from switches to endpoints. deploy fabrics that employ rich signaling from switches to endpoints.
Furthermore, the operator can often limit the number of operating Furthermore, the operator can often limit the number of operating
congestion control algorithms. congestion control algorithms.
For these reasons, data center congestion controls are often distinct For these reasons, data center congestion controls are often distinct
from those running elsewhere on the Internet (see Section 4). A from those running elsewhere on the Internet (see Section 4). A
proposed congestion control need not coexist well with all other proposed congestion control algorithm need not coexist well with all
algorithms if it is intended for data centers, but the proposal other algorithms if it is intended for data centers, but the proposal
SHOULD indicate which are expected to safely coexist with it. SHOULD indicate which are expected to safely coexist with it.
8. Security Considerations 8. Security Considerations
This document does not represent a change to any aspect of the TCP/IP This document does not represent a change to any aspect of the TCP/IP
protocol suite; therefore, it does not directly impact Internet protocol suite; therefore, it does not directly impact Internet
security. The implementation of various facets of the Internet's security. The implementation of various facets of the Internet's
current congestion control algorithms do have security implications current congestion control algorithms do have security implications
(e.g., as outlined in [RFC5681]). (e.g., as outlined in [RFC5681]).
Proposed congestion control algorithms MUST examine any potential A proposal for a congestion control algorithm MUST examine any
security or privacy issues that may arise from their design. potential security or privacy issues that may arise from their
design.
9. IANA Considerations 9. IANA Considerations
This document has no IANA actions. This document has no IANA actions.
10. References 10. References
10.1. Normative References 10.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
skipping to change at line 998 skipping to change at line 1000
[BBRv1-EVALUATION] [BBRv1-EVALUATION]
Hock, M., Bless, R., and M. Zitterbart, "Experimental Hock, M., Bless, R., and M. Zitterbart, "Experimental
evaluation of BBR congestion control", 2017 IEEE 25th evaluation of BBR congestion control", 2017 IEEE 25th
International Conference on Network Protocols (ICNP), International Conference on Network Protocols (ICNP),
DOI 10.1109/ICNP.2017.8117540, 2017, DOI 10.1109/ICNP.2017.8117540, 2017,
<https://ieeexplore.ieee.org/document/8117540>. <https://ieeexplore.ieee.org/document/8117540>.
[BUFFERBLOAT] [BUFFERBLOAT]
Nichols, K. and J. Gettys, "Bufferbloat: Dark Buffers in Nichols, K. and J. Gettys, "Bufferbloat: Dark Buffers in
the Internet", ACM Queue Volume 9, Issue 11, November the Internet", ACM Queue Volume 9, Issue 11,
2011, <https://queue.acm.org/detail.cfm?id=2071893>. DOI 10.1145/2063166.2071893, November 2011,
<https://dl.acm.org/doi/10.1145/2063166.2071893>.
[ECN-ENCAPS] [ECN-ENCAPS]
Briscoe, B. and J. Kaippallimalil, "Guidelines for Adding Briscoe, B. and J. Kaippallimalil, "Guidelines for Adding
Congestion Notification to Protocols that Encapsulate IP", Congestion Notification to Protocols that Encapsulate IP",
BCP 89, RFC 9599, DOI 10.17487/RFC9599, August 2024, BCP 89, RFC 9599, DOI 10.17487/RFC9599, August 2024,
<https://www.rfc-editor.org/info/rfc9599>. <https://www.rfc-editor.org/info/rfc9599>.
[HRX08] Ha, S., Rhee, I., and L. Xu, "CUBIC: a new TCP-friendly [HRX08] Ha, S., Rhee, I., and L. Xu, "CUBIC: a new TCP-friendly
high-speed TCP variant", ACM SIGOPS Operating Systems high-speed TCP variant", ACM SIGOPS Operating Systems
Review, vol. 42, no. 5, pp. 64-74, Review, vol. 42, no. 5, pp. 64-74,
skipping to change at line 1043 skipping to change at line 1046
Ludwig, R., Mahdavi, J., Montenegro, G., Touch, J., and L. Ludwig, R., Mahdavi, J., Montenegro, G., Touch, J., and L.
Wood, "Advice for Internet Subnetwork Designers", BCP 89, Wood, "Advice for Internet Subnetwork Designers", BCP 89,
RFC 3819, DOI 10.17487/RFC3819, July 2004, RFC 3819, DOI 10.17487/RFC3819, July 2004,
<https://www.rfc-editor.org/info/rfc3819>. <https://www.rfc-editor.org/info/rfc3819>.
[RFC4340] Kohler, E., Handley, M., and S. Floyd, "Datagram [RFC4340] Kohler, E., Handley, M., and S. Floyd, "Datagram
Congestion Control Protocol (DCCP)", RFC 4340, Congestion Control Protocol (DCCP)", RFC 4340,
DOI 10.17487/RFC4340, March 2006, DOI 10.17487/RFC4340, March 2006,
<https://www.rfc-editor.org/info/rfc4340>. <https://www.rfc-editor.org/info/rfc4340>.
[RFC4614] Duke, M., Braden, R., Eddy, W., and E. Blanton, "A Roadmap
for Transmission Control Protocol (TCP) Specification
Documents", RFC 4614, DOI 10.17487/RFC4614, September
2006, <https://www.rfc-editor.org/info/rfc4614>.
[RFC4653] Bhandarkar, S., Reddy, A. L. N., Allman, M., and E. [RFC4653] Bhandarkar, S., Reddy, A. L. N., Allman, M., and E.
Blanton, "Improving the Robustness of TCP to Non- Blanton, "Improving the Robustness of TCP to Non-
Congestion Events", RFC 4653, DOI 10.17487/RFC4653, August Congestion Events", RFC 4653, DOI 10.17487/RFC4653, August
2006, <https://www.rfc-editor.org/info/rfc4653>. 2006, <https://www.rfc-editor.org/info/rfc4653>.
[RFC4782] Floyd, S., Allman, M., Jain, A., and P. Sarolahti, "Quick- [RFC4782] Floyd, S., Allman, M., Jain, A., and P. Sarolahti, "Quick-
Start for TCP and IP", RFC 4782, DOI 10.17487/RFC4782, Start for TCP and IP", RFC 4782, DOI 10.17487/RFC4782,
January 2007, <https://www.rfc-editor.org/info/rfc4782>. January 2007, <https://www.rfc-editor.org/info/rfc4782>.
[RFC5033] Floyd, S. and M. Allman, "Specifying New Congestion [RFC5033] Floyd, S. and M. Allman, "Specifying New Congestion
skipping to change at line 1183 skipping to change at line 1181
for Congestion Control in Interactive Multimedia for Congestion Control in Interactive Multimedia
Conferences", RFC 9392, DOI 10.17487/RFC9392, April 2023, Conferences", RFC 9392, DOI 10.17487/RFC9392, April 2023,
<https://www.rfc-editor.org/info/rfc9392>. <https://www.rfc-editor.org/info/rfc9392>.
[TOOLS] Floyd, S. and E. Kohler, "Tools for the Evaluation of [TOOLS] Floyd, S. and E. Kohler, "Tools for the Evaluation of
Simulation and Testbed Scenarios", Work in Progress, Simulation and Testbed Scenarios", Work in Progress,
Internet-Draft, draft-irtf-tmrg-tools-05, 23 February Internet-Draft, draft-irtf-tmrg-tools-05, 23 February
2008, <https://datatracker.ietf.org/doc/html/draft-irtf- 2008, <https://datatracker.ietf.org/doc/html/draft-irtf-
tmrg-tools-05>. tmrg-tools-05>.
Appendix A. Changes Since RFC 5033
* Examined BCP 14 keywords and consistency with other RFCs
* Rewrote the "Document Status" section
* Added QUIC and other more recent congestion control standards
* Aligned motivation for this work with the CCWG charter
* Refined discussion of Quick-Start
* Added criterion for bufferbloat
* Added text on constrained environments/limited domains and circuit
breakers and aligned with other RFCs
* Added discussion of real-time protocols, short flows, AQM
response, and multipath transports
* Listed properties of wired and wireless networks
* Added sections addressing IoT and Multicast (noting this is out of
scope)
Acknowledgments Acknowledgments
Sally Floyd and Mark Allman were the authors of this document's Sally Floyd and Mark Allman were the authors of this document's
predecessor, [RFC5033], which served the community well for over a predecessor, [RFC5033], which served the community well for over a
decade. decade.
Thanks to Richard Scheffenegger for helping to get this revision Thanks to Richard Scheffenegger for helping to get this revision
process started. process started.
The editors would like to thank Mohamed Boucadair, Neal Cardwell, The editors would like to thank Mohamed Boucadair, Neal Cardwell,
 End of changes. 35 change blocks. 
105 lines changed or deleted 128 lines changed or added

This html diff was produced by rfcdiff 1.48.