<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ccwg-rfc5033bis-08" number="9743" category="bcp" consensus="true" submissionType="IETF" obsoletes="5033" updates="" tocInclude="true" sortRefs="true" symRefs="true" version="3" xml:lang="en">

  <front>
    <title abbrev="New CC Algorithms">Specifying New Congestion Control Algorithms</title>
    <seriesInfo name="RFC" value="9743"/>
    <seriesInfo name="BCP" value="133"/>
    
    <author initials="M." surname="Duke" fullname="Martin Duke" role="editor">
      <organization>Google LLC</organization>
      <address>
        <email>martin.h.duke@gmail.com</email>
      </address>
    </author>
    <author initials="G." surname="Fairhurst" fullname="Godred Fairhurst" role="editor">
      <organization>University of Aberdeen</organization>
      <address>
        <email>gorry@erg.abdn.ac.uk</email>
      </address>
    </author>
    <date year="2025" month="March"/>

    <area>WIT</area>
    <workgroup>ccwg</workgroup>

    <keyword>Transport</keyword>
    <keyword>CC</keyword>

    <abstract>
      <t>RFC 5033 discusses the principles and guidelines for standardizing
      new congestion control algorithms.  This document obsoletes RFC 5033 to
      reflect changes in the congestion control landscape by providing a
      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 validation to
      prevent adverse interactions with existing flows.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      
      <t>This document provides guidelines for the IETF to use when evaluating
      a proposed congestion control algorithm that differs from the general
      congestion control principles outlined in <xref target="RFC2914"/>. The
      guidance is intended to be useful to authors proposing congestion
      control algorithms and for the IETF community when evaluating whether a
      proposal is appropriate for publication in the RFC Series and for
      deployment in the Internet.</t>
      
      <t>This document obsoletes <xref target="RFC5033"/>, which was published
      in 2007 as a Best Current Practice for evaluating proposed congestion
      control algorithms for publication in Experimental or Proposed Standard RFCs.</t>
      
      <t>The IETF specifies standard Internet congestion control algorithms in
      the RFC Series.  These congestion control algorithms can suffer
      performance challenges when used in differing environments (e.g.,
      high-speed networks, cellular and Wi-Fi wireless technologies, and
      long-distance satellite links), and also when flows carry specific
      workloads (e.g., Voice over IP (VoIP), gaming, and videoconferencing).</t>


      <t>When <xref target="RFC5033"/> was published, TCP <xref
      target="RFC9293"/> was the primary focus of IETF congestion control
      efforts, with proposals typically discussed within the Internet
      Congestion Control Research Group (ICCRG). Concurrently, the Datagram
      Congestion Control Protocol (DCCP) <xref target="RFC4340"/> was
      developed to define new congestion control algorithms for datagram
      traffic, while the Stream Control Transmission Protocol (SCTP) <xref
      target="RFC9260"/> reused TCP congestion control algorithms.</t>

      <t>Since then, several changes have occurred. The range of protocols
      utilizing congestion control algorithms has expanded to include QUIC
      <xref target="RFC9000"/> and RTP Media Congestion Avoidance Techniques
      (RMCAT) (e.g., <xref target="RFC8836"/>). Additionally, some alternative
      congestion control algorithms have been tested and deployed at scale
      without full IETF review. There is increased interest in specialized use
      cases, such as data centers (e.g., <xref target="RFC8257"/>), and in
      supporting a variety of upper-layer protocols and applications, such as
      real-time protocols. Moreover, the community has gained significant
      experience with congestion indications beyond packet loss.</t>

      <t>Multicast congestion control is a considerably less mature field of
      study and is not in the scope of this document. However, <xref
      section="4" sectionFormat="of" target="RFC8085"/> provides additional
      guidelines for multicast and broadcast usage of UDP.</t>

      <t>Congestion control algorithms have been developed outside of the
      IETF, including at least two that saw large scale deployment. These
      include CUBIC <xref target="HRX08"/> and Bottleneck Bandwidth and
      Round-trip propagation time (BBR) <xref
      target="I-D.cardwell-iccrg-bbr-congestion-control"/>.</t>

      <t>CUBIC was documented in a research publication in 2008 <xref
      target="HRX08"/>, and was then adopted as the default congestion control
      algorithm for the TCP implementation in Linux. It was already used in a
      significant fraction of TCP connections over the Internet before being
      documented in an Internet-Draft in 2015, and published as an
      Informational RFC in 2017 as <xref target="RFC8312"/> and then as a
      Proposed Standard in 2023 <xref target ="RFC9438"/>.</t>

      <t>At the time of writing, BBR is being developed as an internal
      research project by Google, with the first implementation contributed to
      Linux kernel 4.19 in 2016. BBR was described in an Internet-Draft in
      2018 and was first presented in the IRTF Internet Congestion Control Research Group. It has since been regularly updated to document the
      evolving versions of the algorithm <xref
      target="I-D.cardwell-iccrg-bbr-congestion-control"/>. BBR is currently
      widely used for Google services using either TCP or QUIC and is also
      widely deployed outside of Google.</t>

      <t>We cannot say whether the original authors of <xref
      target="RFC5033"/> expected that developers would be waiting for IETF
      review before widely deploying a new congestion control algorithm over
      the Internet, but the examples of CUBIC and BBR illustrate that deployment
      of new algorithms is not, in fact, gated by the publication of the
      algorithm as an RFC.</t>

      <t>Nevertheless, a specification for a congestion control algorithm
      provides a number of advantages:</t>
      <ul spacing="normal">
        <li>
          <t>It can help implementers, operators, and other interested parties
          develop a shared understanding of how the algorithm works and how it
          is expected to behave in various scenarios and configurations.</t>
        </li>
        <li>
          <t>It can help potential contributors understand the algorithm,
          which can make it easier for them to suggest improvements and/or
          identify limitations. Furthermore, the specification can help
          multiple contributors align on a consensus change to the
          algorithm.</t>
        </li>
        <li>
          <t>It can help (by being accessible to anyone) to circumvent the
          issue that some implementers may be unable to read open-source
          reference implementations due to the constraints of some open-source
          licenses.</t>
        </li>
      </ul>
      <t>Beyond helping develop specific algorithm proposals, guidelines can
      also serve as a reminder to potential inventors and developers of the
      multiple facets of the congestion control problem.</t>

      <t>The evaluation guidelines in this document are intended to be
      consistent with the congestion control principles from <xref
      target="RFC2914"/> related to preventing congestion collapse, considering
      fairness, and optimizing a flow's own performance in terms of
      throughput, delay, and loss. <xref target="RFC2914"/> also discusses the
      goal of avoiding a congestion control "arms race" among competing
      transport protocols.</t>

      <t>This document does not give hard-and-fast requirements for an
      appropriate congestion control algorithm. Rather, the document provides
      a set of criteria that should be considered and weighed by the
      developers of alternative algorithms and by the IETF in the context of
      each proposal.</t>

      <t>The high-order criterion for advancing any proposal within the IETF
      is a serious scientific study of the pros and cons that occur when the
      proposal is considered for publication by the IETF or before it is
      deployed at a large scale.</t>

      <t>After initial studies, authors are encouraged to write a
      specification of their proposal for publication in the RFC Series. This
      allows others to understand and investigate the wealth of proposals in
      this space.</t>

      <t>This document is intended to reduce the barriers to entry for new
      congestion control work to the IETF. As such, proponents of new
      congestion control algorithms ought not to interpret these criteria as a
      checklist of requirements before approaching the IETF. Instead,
      proponents are encouraged to think about these issues beforehand and
      have the willingness to do the work implied by the remainder of this
      document.</t>
    </section>

    <section anchor="specification-of-requirements">
      <name>Specification of Requirements</name>
        <t>
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
    "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>",
    "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
    "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be
    interpreted as described in BCP&nbsp;14 <xref target="RFC2119"/> <xref
    target="RFC8174"/> when, and only when, they appear in all capitals, as
    shown here.
        </t>
    </section>

    <section anchor="guidelines-for-authors">
      <name>Guidelines for Authors</name>

      <section anchor="guidelines-for-authors-about-evaluation">
        <name>Evaluation Guidelines</name>
        <t>This document does not provide specific evaluation methods, short
        of Internet-scale deployment and measurement, to test the criteria
        described below. There are multiple possible approaches to
        evaluation. Each has a role, and the most appropriate approach depends
        on the criteria being evaluated and the maturity of the
        specification.</t>

        <t>For many algorithms, an initial evaluation will consider individual
        protocol mechanisms in a simulator to analyze their stability and
        safety across a wide range of conditions, including overload.  For
        example, <xref target="RFC8869"/> describes evaluation test cases for
        interactive real-time media over wireless networks. Such results could
        also be published or discussed in IRTF research groups, such as ICCRG
        and MAPRG.</t>

        <t>Before a proposed congestion control algorithm is published as an
        Experimental or Standards Track RFC, the community
        <bcp14>SHOULD</bcp14> gain practical experience with implementations
        and experience using the algorithm. Implementations by independent
        teams can help provide assurance that a specification has avoided
        assumptions or ambiguity. An independent evaluation by multiple teams
        helps provide assurance that the design meets the evaluation criteria
        and can assess typical interactions with other traffic. This
        evaluation could use an emulated laboratory environment or a
        controlled experiment (within a limited domain or at Internet
        scale).  When a working group is trying to decide if a proposed
        specification is ready for publication, it will normally consider
        evidence of results. This ought to be documented in any request from
        the working group to publish the specification.</t>
	
        <t>A congestion control algorithm without multiple implementations
        might still be published as an RFC if a single implementation is
        widely used, open source, and shown to have a positive impact on the
        Internet, particularly if the target status is Experimental.</t>
      </section>

      <section anchor="guidelines-for-authors-about-document-status">
        <name>Document-Status Guidelines</name>
	
	<t>The guidelines in this document apply to specifications of
	congestion control algorithms that seek publication as an RFC via the
	IETF Stream with an Experimental or Standards Track status. The
	evaluation of either status involves the same questions, but with
	different expectations for both the answers and the degree of
	certainty of those answers.</t>
	
	<t>Specifications of congestion control algorithms without empirical
	evidence of Internet-scale deployment <bcp14>MUST</bcp14> seek
	Experimental status, unless they are not targeted for general use.
	Algorithms not targeted at general use do not require Internet-scale
	data.</t>
	
        <t>Specifications that seek to be published as Experimental IETF
	Stream RFCs ought to explain the reason for the status and what further
	information would be required to progress to a Standards Track RFC. For
	example, <xref target="RFC6928" section="12" sectionFormat="of"/> provides
	"Usage and Deployment Recommendations" that describe the experiments expected
	by the TCPM Working Group. <xref target="RFC7414" section="4"
	sectionFormat="of"/> provides other examples of extensions that were
	considered experimental when the specification was published.</t>

        <t>Experimental specifications <bcp14>SHOULD NOT</bcp14> be deployed
        as a default. They <bcp14>SHOULD</bcp14> only be deployed in
        situations where they are being actively measured and where it is
        possible to deactivate them if there are signs of pathological
        behavior.</t>

        <t>Specifications of congestion control algorithms with a record of
	measured Internet-scale deployment <bcp14>MAY</bcp14> directly seek Standards
	Track status if there is solid data that reflects that the algorithm is safe
	and the design is stable, guided by the considerations in <xref
	target="general-use"/>. However, the existence of this data does not waive the
	other considerations in this document.</t>

        <t>Each specification submitted for publication as an RFC is
        <bcp14>REQUIRED</bcp14> to include a statement in the abstract
        indicating whether or not there is IETF consensus that the proposed
        congestion control algorithm is considered safe for use on the
        Internet. Each such specification is also <bcp14>REQUIRED</bcp14> to
        include a statement in the abstract describing environments where the
        protocol is not recommended for deployment. There can be environments
        where the congestion control algorithm is deemed safe for use, but it
        is still not recommended for use because it does not perform well
        for the user.</t>

        <t>Examples of such statements exist in <xref target="RFC3649"/>, which specifies
        HighSpeed TCP and includes a statement in the abstract stating that
        the proposed congestion control algorithm is experimental but may be
        deployed in the Internet. In contrast, the Quick-Start document <xref
        target="RFC4782"/> includes a paragraph in the abstract stating that
        the mechanism is only being proposed for use in controlled
        environments. The abstract specifies environments where the
        Quick-Start request could give false positives (and therefore would be
        unsafe for incremental deployment where some routers forward but do
        not process the option). The abstract also specifies environments
        where packets containing the Quick-Start request could be dropped in
        the network; in such an environment, Quick-Start would not be unsafe
        to deploy, but deployment is not recommended because it could lead to
        unnecessary delays for the connections attempting to use
        Quick-Start. The Quick-Start method is discussed as an example in
        <xref target="RFC9049"/>.</t>

        <t>Strictly speaking, documents for publication as Informational RFCs from the IETF Stream need not
        meet all of the criteria in this document, as they do not carry a
        formal recommendation from the IETF community. Instead, the community
        judges the publication of these Informational RFCs based on the value of
        their addition to the information captured by the RFC Series.</t>

        <t>Although it is out of scope for this document, proponents of a new
        algorithm could alternatively seek publication of their specification as an Informational or
        Experimental RFC via the Internet Research Task Force (IRTF) Stream. In
        general, these algorithms are expected to be less mature than ones
        that follow the procedures in this document for publication via the IETF Stream. Authors documenting
        deployed congestion control algorithms that cannot be changed by IETF
        or IRTF review are invited to seek publication of their specification as an Informational RFC
        via the Independent Submission Stream.</t>
      </section>
    </section>

    <section anchor="controlled-environments">
      <name>Specifying Algorithms for Use in Controlled Environments</name>
      <t>Algorithms can be designed for general Internet deployment or for use
      in controlled environments <xref target="RFC8799"/>. Within a controlled
      environment, an operator can ensure that flows are isolated from other
      Internet flows or they might allow these flows to share resources with
      other Internet flows.  A data center is an example of a controlled
      environment that often deploys fabrics with rich signaling from
      switches to endpoints.</t>

      <t>Algorithms that rely on specific functions or configurations in the
      network need to provide a reference or specification for these functions
      (such as an RFC or another stable specification). For publication of a specification of one of these algorithms to proceed,
      the IETF will need to consider whether a working group exists that can
      properly assess the network-layer aspects and their interaction with the
      congestion control.</t>

      <t>In evaluating a new proposal for use in a controlled environment, the
      IETF community needs to understand the usage (e.g., how the usage is scoped to
      the controlled environment), whether the algorithm will share resources with
      Internet traffic, and what could happen if used in a protocol that is bridged
      across an Internet path.  Algorithms that are designed to be confined to a
      controlled environment and are not intended for use in the general Internet
      might instead seek real-world data for those environments. In such cases, the
      evaluation criteria in the remainder of this document might not apply.</t>
    </section>

    <section anchor="evaluation-criteria">
      <name>Evaluation Criteria</name>
      
      <t>As previously noted, authors of a specification on a congestion
      control algorithm are expected to conduct a comprehensive evaluation of the
      advantages and disadvantages of any congestion control algorithms presented to
      the IETF community. The following guidelines are intended to assist authors
      and the community in this endeavor. While these guidelines provide a helpful
      framework, they should not be regarded as an exhaustive checklist as concerns
      beyond the scope of these guidelines may also arise.</t>

      <t>When considering a proposed congestion control algorithm, the
      community <bcp14>MUST</bcp14> consider the criteria in the following sections. These
      criteria will be evaluated in various domains (see Sections <xref
      target="general-use" format="counter"/> and <xref target="special-cases"
      format="counter"/>).</t>

      <t>Some of the sections below will list criteria that
      <bcp14>SHOULD</bcp14> be met. It could happen that these criteria are
      not, in fact, met by the proposal. In such cases, the community
      <bcp14>MUST</bcp14> document whether not meeting the criteria is
      acceptable, for example, if there are practical limitations on
      carrying out an evaluation of the criteria.</t>

      <t>The requirement that the community consider a criterion does not
      imply that the result needs to be described in an RFC: there is
      no formal requirement to document the results, although normal IETF
      policies for archiving proceedings will provide a record.</t>
      
      <t>This document, except where otherwise noted, does not provide
      normative guidance on the acceptable thresholds for any of these
      criteria. Instead, the community will use these evaluations as an input
      when considering whether to progress the proposed algorithm
      specification in the publication process.</t>

      <section anchor="single-algorithm-behavior">
        <name>Single Algorithm Behavior</name>

        <t>The criteria in the following subsections evaluate the congestion control
        algorithm when one or more flows using that algorithm share a
        bottleneck link (i.e., with no flows using a differing congestion
        control algorithm).</t>

        <section anchor="protection-against-congestion-collapse">
          <name>Protection Against Congestion Collapse</name>

          <t>A congestion control algorithm should either stop sending when
          the packet drop rate exceeds some threshold <xref
          target="RFC3714"/> or include some notion of "full
          backoff". For "full backoff", at some point, the algorithm would
          reduce the sending rate to one packet per round-trip time; then, it would
          exponentially back off the time between single packet transmissions
          if the congestion persists. Exactly when either "full backoff" or a
          pause in sending comes into play will be algorithm specific.
          However, as discussed in <xref target="RFC2914"/> and <xref
          target="RFC8961"/>, this requirement is crucial to protect the
          network in times of extreme (and persistent) congestion.</t>

          <t>If full backoff is used, this test does not require that the
          mechanism be identical to that of TCP (see <xref
          target="RFC6298"/> and <xref target="RFC8961"/>). For example, this
          does not preclude full backoff mechanisms that would give flows with
          different round-trip times comparable capacity during backoff.</t>
        </section>

        <section anchor="protection-against-bufferbloat">
          <name>Protection Against Bufferbloat</name>
          <t>A congestion control algorithm ought to try to avoid maintaining
          excessive queues in the network. Exactly how the algorithm achieves
          this is algorithm specific; see <xref target="RFC8961"/> and
          <xref target="RFC8085"/> for requirements.</t>

          <t>"Bufferbloat" refers to the building of excessive queues in the
          network <xref target="BUFFERBLOAT"/>. Many network routers are
          configured with very large buffers. The Standards Track RFCs <xref
          target="RFC5681"/> and <xref target="RFC9438"/> describe the Reno
          and CUBIC congestion control algorithms (respectively), which send
          at progressively higher rates until a First In, First Out (FIFO)
          buffer completely fills; then packet losses occur. Every connection
          passing through that bottleneck experiences increased latency due to
          the high buffer occupancy. This adds unwanted latency that
          negatively impacts highly interactive applications such as
          videoconferencing or games, but it also affects routine web browsing
          and video playing.</t>

          <t>This problem has been widely discussed since 2011 <xref
          target="BUFFERBLOAT"/>, but was not discussed in the congestion
          control principles published in September 2002 <xref
          target="RFC2914"/>. The Reno and CUBIC congestion control algorithms
          do not address this problem, but a new congestion control algorithm
          has the opportunity to improve the state of the art.</t>
        </section>

        <section anchor="protection-against-high-packet-loss">
          <name>Protection Against High Packet Loss</name>

          <t>A congestion control algorithm needs to avoid causing
          excessively high rates of packet loss. To accomplish this, it should
          avoid excessive increases in sending rate and reduce its sending
          rate if experiencing high packet loss.</t>

          <t>The first version of the BBR algorithm <xref
          target="BBRv1"/> failed this requirement.  Experimental
          evaluation <xref target="BBRv1-EVALUATION"/> showed that 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 a half
          times the Bandwidth Delay Product (BDP). This was unsatisfactory,
          and, indeed, further versions provided a fix for this aspect of BBR
          <xref target="I-D.cardwell-iccrg-bbr-congestion-control"/>.</t>

          <t>This requirement does not imply that the algorithm should react
          to packet losses in exactly the same way as congestion control algorithms described in current Standards Track RFCs (e.g., <xref target="RFC5681"/>).</t>
        </section>


        <section anchor="fairness-within-the-proposed-congestion-control-algorithm">
          <name>Fairness Within the Proposed Congestion Control Algorithm</name>
          <t>When multiple competing flows all use the same proposed
          congestion control algorithm, the evaluation should explore how the
          capacity is shared among the competing flows. Capacity fairness can
          be important when a small number of similar flows compete to fill a
          bottleneck. However, it can also not be useful, for example, when
          comparing flows that seek to send at different rates or if some of
          the flows do not last sufficiently long to approach asymptotic
          behavior.</t>
        </section>

        <section anchor="short-flows">
          <name>Short Flows</name>
          <t>A great deal of congestion control analysis concerns the
          steady-state behavior of long flows. However, many Internet flows
          are relatively short lived.  Many short-lived flows today remain in
          the "slow start" mode of operation <xref target="RFC5681"/> that
          commonly features exponential congestion window growth because the
          flow never experiences congestion (e.g., packet loss).</t>
          <t>A proposal for a congestion control algorithm <bcp14>MUST</bcp14>
          consider how new and short-lived flows affect long-lived flows, and
          vice versa.</t>
        </section>
      </section>

      <section anchor="mixed-algorithm-behavior">
        <name>Mixed Algorithm Behavior</name>
        <t>The mixed algorithm behavior criteria evaluate the interaction of the
        proposed congestion control algorithms being specified with commonly deployed
        congestion control algorithms.</t>
        <t>In contexts where differing congestion control algorithms are used,
        it is important to understand whether the proposed congestion control
        algorithm could result in more harm than algorithms published in previous Standards Track RFCs (e.g., <xref target="RFC5681"/>, <xref target="RFC9002"/>,
        and <xref target="RFC9438"/>) to flows sharing a common bottleneck.
        The measure of harm is not restricted to unequal capacity, but also
        ought to consider metrics such as the introduced latency or an
        increase in packet loss.  An evaluation <bcp14>MUST</bcp14> assess the
        potential to cause starvation, including assurance that a loss of all
        feedback (e.g., detected by expiry of a retransmission time out)
        results in backoff.</t>

        <section anchor="existing-general-purpose-congestion-control">
          <name>Existing General-Purpose Congestion Control</name>
          <t>A proposed congestion control algorithm <bcp14>MUST</bcp14> be
          evaluated when competing against standard IETF congestion controls
          (e.g., <xref target="RFC5681"/>, <xref target="RFC9002"/>, and <xref
          target="RFC9438"/>). A proposed congestion control algorithm that
          has a significantly negative impact on flows using standard
          congestion control might be suspect, and this aspect should be part
          of the community's decision making with regards to the suitability
          of the proposed congestion control algorithm. The community should
          also consider other non-standard congestion control algorithms that
          are known to be widely deployed.</t>

          <t>Note that this guideline is not a requirement for strict Reno or
          CUBIC friendliness as a prerequisite for a proposed congestion
          control mechanism to advance to Experimental or Standards Track
          status. As an example, HighSpeed TCP is a congestion control
          mechanism that is specified in an Experimental RFC and is not Reno friendly
          in all environments. When a new congestion control algorithm is
          deployed, the existing major algorithm deployments need to be
          considered to avoid severe performance degradation. Note that this
          guideline does not constrain the interaction with flows that are not
          best effort.</t>

          <t>As an example from an Experimental RFC, fairness with standard
          TCP is discussed in Sections <xref target="RFC3649"
          sectionFormat="bare" section="4"/> and <xref target="RFC3649"
          sectionFormat="bare" section="6"/> of <xref target="RFC3649"
          format="default"/>, and using spare capacity is
          discussed in Sections <xref target="RFC3649" sectionFormat="bare"
          section="6"/>, <xref target="RFC3649" sectionFormat="bare"
          section="11.1"/>, and <xref target="RFC3649" sectionFormat="bare"
          section="12"/> of <xref target="RFC3649"/>.</t>
        </section>

        <section anchor="real-time-congestion-control">
          <name>Real-Time Congestion Control</name>

          <t>General-purpose algorithms need to coexist in the Internet with
          real-time congestion control algorithms, which in general have
          finite throughput requirements (i.e., they do not seek to utilize all
          available capacity) and more strict latency bounds. See <xref
          target="RFC8836"/> for a description of the characteristics of this
          use case and the resulting requirements.</t>


          <t><xref target="RFC8868"/> provides suggestions for real-time
          congestion control design and <xref target="RFC8867"/> suggests test
          cases. <xref target="RFC9392"/> describes some considerations for
          the RTP Control Protocol (RTCP). In particular, real-time flows can
          use less frequent feedback (acknowledgment) than that provided by
          reliable transports.  This document does not change the
          Informational status of those RFCs.</t>

          <t>A proposal for a congestion control algorithm <bcp14>SHOULD</bcp14>
          consider coexistence with widely deployed real-time congestion
          control algorithms. Regrettably, at the time of writing (2024), many
          algorithms with detailed public specifications are not widely
          deployed, while many widely deployed real-time congestion control
          algorithms have incomplete public specifications. It is hoped that
          this situation will change.</t>

          <t>To the extent that behavior of widely deployed algorithms is
          understood, proponents of a proposed congestion control algorithm
          can analyze and simulate a proposal's interaction with those
          algorithms. To the extent that they are not, experiments can be
          conducted where possible.</t>

          <t>Real-time flows can be directed into distinct queues via
          Differentiated Services Code Points (DSCPs) or other mechanisms,
          which can substantially reduce the interplay with other
          traffic. However, a proposal targeting general Internet use cannot
          assume this is always the case.</t>

          <t><xref target="circuit-breakers"/> describes the impact of network
          transport circuit breaker algorithms. <xref target="RFC8083"/> also
          defines a minimal set of RTP circuit breakers that operate
          end-to-end across a path. This identifies conditions under which a
          sender needs to stop transmitting media data to protect the network
          from excessive congestion.  It is expected that, in the absence of
          long-lived excessive congestion, RTP applications running on
          best-effort IP networks will be able to operate without triggering
          these circuit breakers.</t>
        </section>

        <section anchor="short-and-long-flows">
          <name>Short and Long Flows</name>
          <t>The effect on short-lived and long-lived flows using other common
          congestion control algorithms <bcp14>MUST</bcp14> be evaluated, as
          in <xref target="short-flows"/>.</t>
        </section>
      </section>

      <section anchor="other-criteria">
        <name>Other Criteria</name>
        <section anchor="differences-with-congestion-control-principles">
          <name>Differences with Congestion Control Principles</name>
          <t>A proposal for a congestion control algorithm <bcp14>MUST</bcp14>
          clearly explain any deviations from <xref target="RFC2914"/> and
          <xref target="RFC7141"/>.</t>
        </section>

        <section anchor="incremental-deployment">
          <name>Incremental Deployment</name>
          <t>A congestion control algorithm proposal <bcp14>MUST</bcp14>
          discuss whether it allows for incremental deployment in the targeted
          environment. For a mechanism targeted for deployment in the current
          Internet, the proposal <bcp14>SHOULD</bcp14> discuss what is known
          (if anything) about the correct operation of the mechanisms with
          some of the equipment in the current Internet (e.g., routers,
          transparent proxies, WAN optimizers, intrusion detection systems,
          home routers, and the like).</t>
          <t>Similarly, if the proposed congestion control algorithm is
          intended only for specific environments (and not the global
          Internet), the proposal <bcp14>SHOULD</bcp14> consider how this
          intention is to be realized.  The IETF community will have to address the
          question of whether the scope can be enforced by stating the
          restrictions or whether additional protocol mechanisms are required
          to enforce this scoping.  The answer will necessarily depend on the
          proposed change.</t>
          <t>As an example from an Experimental RFC, deployment issues of Quick-Start are
          discussed in Sections <xref target="RFC4782" section="10.3"
          sectionFormat="bare"/> and <xref target="RFC4782" section="10.4"
          sectionFormat="bare"/> of <xref target="RFC4782"/>.</t>
        </section>
      </section>
    </section>

    <section anchor="general-use">
      <name>General Use</name>
      <t>The criteria in <xref target="evaluation-criteria"/> will be
      evaluated in the scenarios described in the following subsections. Unless a proposed congestion
      control algorithm specification of the IETF Stream explicitly forbids use on the public Internet,
      there <bcp14>MUST</bcp14> be IETF consensus that it meets the criteria
      in these scenarios for the proposed congestion control algorithm to
      progress.</t>

      <t>The evaluation of each scenario <bcp14>SHOULD</bcp14> occur over a
      representative range of bandwidths, delays, and queue depths. Of course,
      the set of parameters representative of the public Internet will change
      over time.</t>

      <t>These criteria are intended to capture a statistically dominant set
      of Internet conditions. In the case that a proposed congestion control
      algorithm has been tested at Internet scale, the results from that
      deployment are often useful for answering these questions.</t>

      <section anchor="paths-with-tail-drop-queues">
        <name>Paths with Tail-Drop Queues</name>
        <t>The performance of a congestion control algorithm is affected by
        the queue discipline applied at the bottleneck link. The drop-tail
        queue discipline (using a FIFO buffer) <bcp14>MUST</bcp14> be
        evaluated. See <xref target="aqm"/> for evaluation of other queue
        disciplines.</t>
      </section>

      <section anchor="tunnel-behavior">
        <name>Tunnel Behavior</name>
        <t>When a proposed congestion control algorithm relies on explicit
        signals from the path, the proposal <bcp14>MUST</bcp14> consider the
        effect of traffic passing through a tunnel, where routers may not be
        aware of the flow.</t>

        <t>Designers of tunnels and similar encapsulations might need to
        consider nested congestion control interactions, for example, when the
        Explicit Congestion Notification (ECN) is used by both an IP and lower-layer technology <xref target="RFC9599"/>.</t>
      </section>

      <section anchor="wired-paths">
        <name>Wired Paths</name>
        <t>Wired networks are usually characterized by extremely low rates of
        packet loss except for those due to queue drops. They tend to have
        stable aggregate capacity, usually higher than other types of links,
        and low non-queueing delay.  Because the properties are relatively
        simple, wired links are typically used as a "baseline" case even if
        they are not always the bottleneck link in the modern Internet.</t>
      </section>

      <section anchor="wireless-paths">
        <name>Wireless Paths</name>
        <t>While the early Internet was dominated by wired links, the
        properties of wireless links have become important to Internet
        performance. In particular, a proposed congestion control algorithm
        should be evaluated in situations where some packet losses are due to
        radio effects rather than router queue drops. The link capacity
        varies over time due to changing link conditions, and media-access
        delays and link-layer retransmission lead to increased jitter in
        round-trip times. See <xref target="RFC3819"/> and Section 16 of <xref
        target="I-D.irtf-tmrg-tools"/> for further discussion of wireless
        properties.</t>
      </section>
    </section>

    <section anchor="special-cases">
      <name>Special Cases</name>
      <t>The criteria in <xref target="evaluation-criteria"/> will be
      evaluated in the scenarios described in the following subsections, unless the proposed congestion
      control algorithm specifically excludes its use in a scenario. For these
      specific use cases, the IETF community <bcp14>MAY</bcp14> allow a proposal to
      progress even if the criteria indicate an unsatisfactory result for
      these scenarios.</t>

      <t>In general, measurements from Internet-scale deployments might not
      expose the properties of operation in each of these scenarios because
      they are not as ubiquitous as the general-use scenarios.</t>

      <section anchor="aqm">
        <name>Active Queue Management (AQM)</name>
        <t>The proposed congestion control algorithm <bcp14>SHOULD</bcp14> be
        evaluated under a variety of bottleneck-queue disciplines. The effect
        of an AQM discipline can be hard to detect by Internet evaluation. At
        a minimum, a proposal should reason about an algorithm's response to
        various AQM disciplines. Simulation or empirical results are, of
        course, valuable.</t>

        <t>Some of the AQM techniques that might have an impact on a proposed
        congestion control algorithm include:</t>
	<ul>
	  <li>Flow Queue CoDel (FQ-CoDel) <xref target="RFC8290"/>;</li>
	  <li>Proportional Integral controller Enhanced (PIE) <xref target="RFC8033"/>; and</li>
	  <li>Low Latency, Low Loss, and Scalable Throughput (L4S) <xref target="RFC9332"/>.</li>
	</ul>

        <t>A proposed congestion control algorithm that sets one of the two
        ECN-Capable Transport (ECT) codepoints in the IP header can gain the
        benefits of receiving Explicit Congestion Notification-Congestion
        Experienced (ECN-CE) signals from an on-path AQM <xref
        target="RFC8087"/>. Use of ECN (see <xref target="RFC3168"/> and <xref
        target="RFC9332"/>) requires the congestion control algorithm to react
        when it receives a packet with an ECN-CE marking. This reaction needs
        to be evaluated to confirm that the algorithm conforms with the
        requirements of the ECT codepoint that was used.</t>

        <t>Note that evaluation of AQM techniques -- as opposed to their
        impact on a specific proposed congestion control algorithm -- is out
        of scope of this document. <xref target="RFC7567"/> describes design
        considerations for AQMs.</t>
      </section>

      <section anchor="circuit-breakers">
        <name>Operation with the Envelope Set by Network Circuit Breakers</name>
        <t>Some equipment in the network uses an automatic mechanism to
        continuously monitor the use of resources by a flow or aggregate set
        of flows <xref target="RFC8084"/>.  Such a network transport circuit
        breaker can automatically detect excessive congestion; when
        detected, it can terminate (or significantly reduce the rate of) the
        flow(s). A well-designed congestion control algorithm ought to react
        before the flow uses excessive resources; therefore, it will operate
        within the envelope set by network transport circuit breaker
        algorithms.</t>
      </section>

      <section anchor="delay">
        <name>Paths with Varying Delay</name>

        <t>An Internet path can include simple links, where the minimum delay
        is the propagation delay, and any additional delay can be attributed
        to link buffering.  This cannot be assumed. An Internet path can also
        include complex subnetworks where the minimum delay changes over
        various time scales, resulting in a minimum delay that is not stationary.</t>

        <t>Varying delay occurs when a subnet changes the forwarding path to
        optimize capacity, resilience, etc. It could also arise when a subnet
        uses a capacity-management method where the available resource is
        periodically distributed among the active nodes. A node might then
        have to buffer data until an assigned transmission opportunity or
        until the physical path changes (e.g., when the length of a wireless
        path changes or when the physical layer changes its mode of operation).
        Variation also arises when traffic with a higher priority DSCP
        preempts transmission of traffic with a lower class. In these cases,
        the delay varies as a function of external factors, and attempting to
        infer congestion from an increase in the delay results in reduced
        throughput. This variation in the delay over short timescales (jitter)
        might not be distinguishable from jitter that results from other
        effects.</t>
        <t>A proposed congestion control algorithm <bcp14>SHOULD</bcp14> be
        evaluated to ensure its operation is robust when there is a
        significant change in the minimum delay.</t>
      </section>

      <section anchor="internet-of-things-and-constrained-nodes">
        <name>Internet of Things and Constrained Nodes</name>
        <t>The "Internet of Things" (IoT) is a broad concept, but when
        evaluating a proposed congestion control algorithm, it is often
        associated with unique characteristics. For example, IoT nodes might
        be more constrained in power, CPU, or other parameters than
        conventional Internet hosts. This might place limits on the complexity
        of any given algorithm. These power and radio constraints might make
        the volume of control packets in a given algorithm a key evaluation
        metric.</t>

        <t>Extremely low-power links can lead to very low throughput and a low
        bandwidth-delay product, which is well below the standard operating
        range of most Internet flows.</t>

        <t>Furthermore, many IoT applications do not a have a human in the
        loop; therefore, they might have weaker latency constraints because they
        do not relate to a user experience. Congestion control algorithms
        still might need to share the path with other flows with different
        constraints.</t>
      </section>

      <section anchor="paths-with-high-delay">
        <name>Paths with High Delay</name>

        <t>Authors of a proposed congestion control algorithm ought not to presume that
        all general Internet paths have a low delay. Some paths include links
        that contribute much more delay than for a typical Internet
        path. Satellite links often have delays longer than is typical for wired
        paths <xref target="RFC2488"/> and high-delay-bandwidth products <xref
        target="RFC3649"/>.</t>

        <t>Paths can also present a variable delay as described in <xref
        target="delay"/>.</t>
      </section>

      <section anchor="misbehaving-nodes">
        <name>Misbehaving Nodes</name>

        <t>A proposal for a congestion control algorithm <bcp14>SHOULD</bcp14>
        explore how the algorithm performs with non-compliant senders,
        receivers, or routers.  In addition, the proposal should explore how a
        proposed congestion control algorithm performs with outside attackers.
        This can be particularly important for proposed congestion control
        algorithms that involve explicit feedback from routers along the
        path.</t>

        <t>As an example from an Experimental RFC, performance with
        misbehaving nodes and outside attackers is discussed in Sections <xref
        target="RFC4782" section="9.4" sectionFormat="bare"/>, <xref
        target="RFC4782" section="9.5" sectionFormat="bare"/>, and <xref
        target="RFC4782" section="9.6" sectionFormat="bare"/> of <xref
        target="RFC4782"/>. This includes discussion of:</t>
	<ul>
	  <li>misbehaving senders and receivers;</li>
	  <li>collusion between misbehaving routers;</li>
	  <li>misbehaving middleboxes; and</li>
	  <li>the potential use of Quick-Start to attack routers or to tie up
	  available Quick-Start bandwidth.</li>
      </ul>
      </section>

      <section anchor="extreme-packet-reordering">
        <name>Extreme Packet Reordering</name>
        <t>Authors of a proposed congestion control algorithm ought not to presume that
        all general Internet paths reliably deliver packets in order. <xref
        target="RFC4653"/> discusses the effect of extreme packet
        reordering.</t>
      </section>

      <section anchor="transient-events">
        <name>Transient Events</name>
        <t>A proposal for a congestion control algorithm <bcp14>SHOULD</bcp14>
        consider how it  would perform in the presence of transient events such as a sudden onset of
        congestion, a routing change, or a mobility event.  Routing changes,
        link disconnections, intermittent link connectivity, and mobility are
        discussed in more detail in Section 16 of <xref
        target="I-D.irtf-tmrg-tools"/>.</t>

        <t>As an example from an Experimental RFC, a response to transient
        events is discussed in <xref section="9.2" sectionFormat="of"
        target="RFC4782"/>.</t>
      </section>

      <section anchor="sudden-changes-in-the-path">
        <name>Sudden Changes in the Path</name>
        <t>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
        time. This will cause the properties of the path to change with
        respect to time. A proposal for a congestion control algorithm
        <bcp14>MUST</bcp14> evaluate the impact of changes in the path and be
        robust to changes in path characteristics on the interval of common
        Internet rerouting intervals.</t>
      </section>

      <section anchor="multipath-transport">
        <name>Multipath Transport</name>
        <t>Multipath transport protocols permit more than one path to be
        differentiated and used by a single connection at the sender. A
        multipath sender can schedule which packets travel on which of its
        active paths. This enables a trade-off in timeliness and
        reliability. There are various ways that multipath techniques can be
        used.</t>

        <t>One example use is to provide failover from one path to another
        when the original path is no longer viable or provides inferior
        performance.  Designs need to independently track the congestion state
        of each path and demonstrate independent congestion control for each
        path being used. Authors of a proposed multipath congestion control
        algorithm that implements path failover <bcp14>MUST</bcp14> evaluate
        the harm to performance resulting from a change in the path and show
        that this does not result in flow starvation. Synchronization of
        failover (e.g., where multiple flows change their path on similar
        time frames) can also contribute to harm and/or reduce fairness. These
        effects also ought to be evaluated.</t>


        <t>Another example use is concurrent multipath, where the transport
        protocol simultaneously schedules a flow to aggregate the capacity
        across multiple paths.  The Internet provides no guarantee that
        different paths (e.g., using different endpoint addresses) are
        disjoint. This introduces additional implications. A congestion
        control algorithm proposal <bcp14>MUST</bcp14> evaluate the potential
        harm to other flows when the multiple paths share a common congested
        bottleneck or share resources that are coupled between different
        paths, such as an overall capacity limit. A proposal
        <bcp14>SHOULD</bcp14> consider the potential for harm to other
        flows. Synchronization of congestion control mechanisms (e.g., where
        multiple flows change their behavior on similar time frames) can also
        contribute to harm and/or reduce fairness. These effects also ought to
        be evaluated.</t>

        <t>At the time of writing (2024), there are currently no Standards
        Track RFCs for concurrent multipath, but there is an Experimental RFC
        <xref target="RFC6356"/> that specifies a concurrent multipath
        congestion control algorithm for Multipath TCP (MPTCP) <xref target="RFC8684"/>.</t>
      </section>

      <section anchor="data-centers">
        <name>Data Centers</name> <t>Data centers are characterized by very
        low latencies (&lt; 2 ms). Many workloads involve bursty traffic where
        many nodes complete a task at the same time. As a controlled
        environment, data centers often deploy fabrics that employ rich
        signaling from switches to endpoints. Furthermore, the operator can
        often limit the number of operating congestion control algorithms.</t>

        <t>For these reasons, data center congestion controls are often
        distinct from those running elsewhere on the Internet (see <xref
        target="controlled-environments"/>).  A proposed congestion control algorithm
        need not coexist well with all other algorithms if it is intended for
        data centers, but the proposal <bcp14>SHOULD</bcp14> indicate which
        are expected to safely coexist with it.</t>
      </section>
    </section>

    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document does not represent a change to any aspect of the TCP/IP
      protocol suite; therefore, it does not directly impact Internet security.
      The implementation of various facets of the Internet's current
      congestion control algorithms do have security implications (e.g., as
      outlined in <xref target="RFC5681"/>).</t>
      <t>A proposal for a congestion control algorithm <bcp14>MUST</bcp14> examine
      any potential security or privacy issues that may arise from their
      design.</t>
    </section>

    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>


  </middle>


  <back>
    <displayreference target="RFC9599" to="ECN-ENCAPS"/>
    <displayreference target="I-D.cardwell-iccrg-bbr-congestion-control" to="BBR"/>
    <displayreference target="I-D.irtf-tmrg-tools" to="TOOLS"/>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2914.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8085.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9438.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8961.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5681.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9002.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8083.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7141.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8084.xml"/>
      </references>
      <references>
        <name>Informative References</name>



	<reference anchor="BBRv1" target="https://datatracker.ietf.org/doc/html/draft-cardwell-iccrg-bbr-congestion-control-00">
	  <front>
	    <title>BBR Congestion Control</title>
	    <author initials="N." surname="Cardwell" fullname="Neal Cardwell">
	      <organization>Google</organization>
	    </author>
	    <author initials="Y." surname="Cheng" fullname="Yuchung Cheng">
	      <organization>Google</organization>
	    </author>
	    <author initials="S. H." surname="Yeganeh" fullname="Soheil Hassas Yeganeh">
	      <organization>Google</organization>
	    </author>
	    <author initials="V." surname="Jacobson" fullname="Van Jacobson">
	      <organization>Google</organization>
	    </author>
	    <date month="July" day="3" year="2017"/>
	  </front>
	  <seriesInfo name="Internet-Draft" value="draft-cardwell-iccrg-bbr-congestion-control-00"/>
	</reference>


        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-cardwell-iccrg-bbr-congestion-control-02.xml"/>


        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9599.xml"/>


        <reference anchor="HRX08" target="https://doi.org/10.1145/1400097.1400105">
          <front>
            <title>CUBIC: a new TCP-friendly high-speed TCP variant</title>
            <author initials="S." surname="Ha" fullname="Sangtae Ha">
              <organization/>
            </author>
            <author initials="I." surname="Rhee" fullname="Injong Rhee">
              <organization/>
            </author>
            <author initials="L." surname="Xu" fullname="Lisong Xu">
              <organization/>
            </author>
            <date year="2008" month="July"/>
          </front>
          <refcontent>ACM SIGOPS Operating Systems Review, vol. 42, no. 5, pp. 64-74</refcontent>
	  <seriesInfo name="DOI" value="10.1145/1400097.1400105"/>
        </reference>

<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-irtf-tmrg-tools-05.xml"/>

        <reference anchor="BUFFERBLOAT" target="https://dl.acm.org/doi/10.1145/2063166.2071893">
          <front>
            <title>Bufferbloat: Dark Buffers in the Internet</title>
            <author initials="K." surname="Nichols">
              <organization/>
            </author>
            <author initials="J." surname="Gettys">
              <organization/>
            </author>
            <date month="November" year="2011"/>
          </front>
	  <seriesInfo name="DOI" value="10.1145/2063166.2071893"/>
          <refcontent>ACM Queue Volume 9, Issue 11</refcontent>
	 </reference>


        <reference anchor="BBRv1-EVALUATION" target="https://ieeexplore.ieee.org/document/8117540">
          <front>
            <title>Experimental evaluation of BBR congestion control</title>
             <author initials="M." surname="Hock">
              <organization/>
            </author>
            <author initials="R." surname="Bless">
              <organization/>
            </author>
            <author initials="M." surname="Zitterbart">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
          <refcontent>2017 IEEE 25th International Conference on Network Protocols (ICNP)</refcontent>
	  <seriesInfo name="DOI" value="10.1109/ICNP.2017.8117540"/>
        </reference>
	
	
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5033.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8312.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8869.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6928.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3649.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4782.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9049.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8799.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3714.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6298.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8836.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8868.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8867.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9392.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3819.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8290.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8033.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9332.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8087.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3168.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7567.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2488.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4653.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6356.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7414.xml"/>	
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8684.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5166.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9293.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4340.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9260.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9000.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8257.xml"/>

      </references>
    </references>


<section numbered="true" anchor="change-log">
  <name>Changes Since RFC 5033</name>
  <ul>
    <li>Examined BCP 14 keywords and consistency with other RFCs</li>
    <li>Rewrote the "Document Status" section</li>
    <li>Added QUIC and other more recent congestion control standards</li>
    <li>Aligned motivation for this work with the CCWG charter</li>
    <li>Refined discussion of Quick-Start</li>
    <li>Added criterion for bufferbloat</li>
    <li>Added text on constrained environments/limited domains and circuit
    breakers and aligned with other RFCs</li>
    <li>Added discussion of real-time protocols, short flows, AQM response, and multipath transports</li>
    <li>Listed properties of wired and wireless networks</li>
    <li>Added sections addressing IoT and Multicast (noting this is out of scope)</li>
  </ul>
</section>

    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>

      <t><contact fullname="Sally Floyd"/> and <contact fullname="Mark
      Allman"/> were the authors of this document's predecessor, <xref
      target="RFC5033"/>, which served the community well for over a
      decade.</t>
      <t>Thanks to <contact fullname="Richard Scheffenegger"/> for helping to
      get this revision process started.</t>
      <t>The editors would like to thank <contact fullname="Mohamed
      Boucadair"/>, <contact fullname="Neal Cardwell"/>, <contact
      fullname="Reese Enghardt"/>, <contact fullname="Jonathan Lennox"/>,
      <contact fullname="Matt Mathis"/>, <contact fullname="Zahed Sarker"/>,
      <contact fullname="Juergen Schoenwaelder"/>, <contact fullname="Dave
      Taht"/>, <contact fullname="Sean Turner"/>, <contact fullname="Michael
      Welzl"/>, <contact fullname="Magnus Westerlund"/>, and <contact
      fullname="Greg White"/> for suggesting improvements to this
      document.</t>
      <t>Discussions with <contact fullname="Lars Eggert"/> and <contact
      fullname="Aaron Falk"/> seeded the original <xref target="RFC5033"/>. <contact
      fullname="Bob Briscoe"/>, <contact fullname="Gorry Fairhurst"/>,
      <contact fullname="Doug Leith"/>, <contact fullname="Jitendra Padhye"/>,
      <contact fullname="Colin Perkins"/>, <contact fullname="Pekka Savola"/>,
      members of TSVWG, and participants at the TCP Workshop at Microsoft
      Research all provided feedback and contributions to that document. It
      also drew from <xref target="RFC5166"/>.</t>
    </section>

    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>

      <contact initials="C." surname="Huitema" fullname="Christian Huitema">
        <organization>Private Octopus, Inc.</organization>
        <address>
          <email>huitema@huitema.net</email>
        </address>
      </contact>
    </section>
  </back>
</rfc>
