<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ccwg-ratelimited-increase-09" category="std" consensus="true" submissionType="IETF" updates="4341, 5681, 9002, 9260, 9438" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Rate-Limited cwnd Increase">Increase of the Congestion Window when the Sender Is Rate-Limited</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-ccwg-ratelimited-increase-09"/>
    <author initials="M." surname="Welzl" fullname="Michael Welzl">
      <organization>University of Oslo</organization>
      <address>
        <postal>
          <street>PO Box 1080 Blindern</street>
          <city>0316  Oslo</city>
          <country>Norway</country>
        </postal>
        <email>michawe@ifi.uio.no</email>
        <uri>http://welzl.at/</uri>
      </address>
    </author>
    <author initials="T." surname="Henderson" fullname="Tom Henderson">
      <organization>University of Washington</organization>
      <address>
        <postal>
          <street>185 Stevens Way</street>
          <city>Seattle, WA 98195</city>
          <country>United States</country>
        </postal>
        <email>tomh@tomh.org</email>
      </address>
    </author>
    <author initials="G." surname="Fairhurst" fullname="Godred Fairhurst">
      <organization>University of Aberdeen</organization>
      <address>
        <postal>
          <street>Fraser Noble Building</street>
          <city>Aberdeen, AB24 3UE</city>
          <country>UK</country>
        </postal>
        <email>gorry@erg.abdn.ac.uk</email>
        <uri>https://www.erg.abdn.ac.uk/</uri>
      </address>
    </author>
    <author initials="M. P." surname="Tahiliani" fullname="Mohit P. Tahiliani">
      <organization>National Institute of Technology Karnataka</organization>
      <address>
        <postal>
          <street>P. O. Srinivasnagar, Surathkal</street>
          <city>Mangalore, Karnataka - 575025</city>
          <country>India</country>
        </postal>
        <email>tahiliani@nitk.edu.in</email>
        <uri>https://tahiliani.in/</uri>
      </address>
    </author>
    <date year="2026" month="August" day="13"/>
    <area>Transport</area>
    <workgroup>Congestion Control Working Group</workgroup>
    <abstract>
      <?line 73?>

<t>This document specifies how transport protocols increase their congestion window when the sender is rate-limited, and updates RFCs 4341, 5681, 9002, 9260, and 9438.
Such a limitation can be caused by the sending application not supplying data or by receiver flow control.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-wg-ccwg.github.io/draft-ietf-ccwg-ratelimited-increase/draft-ietf-ccwg-ratelimited-increase.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-ccwg-ratelimited-increase/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Congestion Control Working Group mailing list (<eref target="mailto:ccwg@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ccwg/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/ccwg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-ccwg/draft-ietf-ccwg-ratelimited-increase"/>.</t>
    </note>
  </front>
  <middle>
    <?line 79?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>A sender of a congestion controlled transport protocol becomes "rate-limited" when it does not send any data
even though the congestion control rules would allow it to transmit data.
This could occur because the application has not provided sufficient data to fully utilize the congestion window (cwnd).
It could also occur because the receiver has limited the sender using flow control
(e.g., by the advertised TCP receiver window (rwnd) or by the connection or stream flow credit in QUIC).
Current RFCs specifying congestion control algorithms diverge regarding the rules for increasing the cwnd when the sender is rate-limited. This document provides a uniform behavior in (<xref target="rules"/>), and specifies updates to RFCs 4341, 5681, 9002, 9260, and 9438 in (<xref target="rfc-updates"/>).</t>
      <t>Congestion Window Validation (CWV) <xref target="RFC7661"/> provides an experimental specification defining how to manage a cwnd that has
become larger than the current flight size, and how to respond to detected congestion when this is the case.
In contrast, this present document concerns the increase in cwnd when a sender is rate-limited. These two topics are distinct,
but are related, because both describe the management of the cwnd when a sender does not fully utilize the current cwnd.</t>
      <t>An appendix provides an example of how rate-limited increase can play out.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</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 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<section anchor="terminology">
        <name>Terminology</name>
        <t>This document uses the terms defined in <xref section="2" sectionFormat="of" target="RFC5681"/>.</t>
        <t>Additionally, the following are defined:</t>
        <ul spacing="normal">
          <li>
            <t>cwnd-limited: A flow that has sent the maximum number of segments permitted by the cwnd, where the application utilises the allowed sending rate (based on the definition for TCP in Section 4.5.3 of <xref target="RFC7661"/>).</t>
          </li>
          <li>
            <t>rate-limited: A flow that does not consume more than one half of cwnd and hence operates in the non-validated phase. This includes periods when an application is either idle or chooses to send at a rate less than the maximum permitted by the cwnd (based on the definition for TCP in Section 3 of <xref target="RFC7661"/>).</t>
          </li>
          <li>
            <t>initcwnd: The initial value of the congestion window, also known as the "initial window" ("IW" in <xref target="RFC5681"/>).</t>
          </li>
          <li>
            <t>maxFS: the largest value of FlightSize since the last time that cwnd was decreased. If cwnd has never been decreased, maxFS is the maximum value of FlightSize since the start of the data transfer, and at least as large as initcwnd.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="rules">
      <name>Rate-Limited Increase</name>
      <t>When FlightSize &lt; cwnd, regardless of the current state of a congestion control algorithm, the following  "Rate-Limited Increase" rules apply for senders using a congestion controlled transport protocol:</t>
      <ul spacing="normal">
        <li>
          <t>The sender <bcp14>MUST</bcp14> initialise the maxFS parameter to initcwnd when the congestion control algorithm is started. Thereafter, when the FlightSize is updated, the sender also updates the maxFS:</t>
        </li>
      </ul>
      <artwork><![CDATA[
maxFS = max(FlightSize, maxFS)
]]></artwork>
      <ul spacing="normal">
        <li>
          <t>Upon a reduction of cwnd (for any reason), maxFS <bcp14>MUST</bcp14> be reset to zero. This ensures that maxFS is reinitialized using the first FlightSize measurement taken after the cwnd reduction.</t>
        </li>
        <li>
          <t>The sender <bcp14>MUST</bcp14> cap cwnd to be no larger than limit(maxFS).</t>
        </li>
      </ul>
      <t>The function limit() returns the maximum cwnd value the congestion control algorithm would yield by increasing for all ACKs that would be produced by successfully transmitting one window of size maxFS.
For example, for Slow Start, as specified in <xref target="RFC5681"/>, limit(maxFS)=2*maxFS, such that equation 2 in <xref target="RFC5681"/> becomes:</t>
      <artwork><![CDATA[
cwnd_new = cwnd + min (N, SMSS)
cwnd = min(cwnd_new, 2*maxFS)
]]></artwork>
      <t>where cwnd and SMSS follow their definitions in <xref target="RFC5681"/> and N is the number of previously unacknowledged bytes acknowledged in the incoming ACK.</t>
      <t>Similarly, with Rate-Limited Increase applied in Congestion Avoidance, limit(maxFS)=SMSS+maxFS, such that equation 3 in <xref target="RFC5681"/> becomes:</t>
      <artwork><![CDATA[
cwnd_new = cwnd + SMSS*SMSS/cwnd
cwnd = min(cwnd_new, SMSS+maxFS)
]]></artwork>
      <t>where cwnd and SMSS follow their definitions in <xref target="RFC5681"/>.</t>
      <t>NOTE: This specification defines the current method used to increase the cwnd for a rate-limited sender. Without a way to reduce cwnd when the transport sender becomes rate-limited, maxFS can stay valid for a long time, possibly not reflecting the reality of the end-to-end Internet path in use. This can be remedied by "Congestion Window Validation" in <xref target="RFC7661"/>, which also defines a "pipeACK" variable that measures the recently acknowledged size of the network pipe when the sender was rate-limited.</t>
      <section anchor="example">
        <name>Example</name>
        <t>The working of Rate-Limited Increase can be illustrated by showing the increase of cwnd in two scenarios: when the growth of cwnd is unconstrained, and when the rate-limited sender is constrained by Rate-Limited Increase. For simplicity, this example accounts for the cwnd in TCP segments (or QUIC packets), rather than bytes. In both cases, this assumes the initial cwnd (initcwnd) = 10 segments, as defined for TCP in <xref target="RFC6928"/> and QUIC in <xref target="RFC9002"/>, a single connection begins with Slow Start, the sender transmits a total of 14 segments but pauses after transmitting 10 segments and resumes the transmission for the remaining 4 segments afterward, no packets are lost, and an ACK is sent for every packet.</t>
        <section anchor="unconstrained-sender">
          <name>Unconstrained sender</name>
          <t>Initially, cwnd = initcwnd. Therefore, using initcwnd = 10 segments, the sender transmits 10 segments and pauses. Since the sender is in the Slow Start phase, the arrival of each ACK for the 10 sent segments increases the cwnd by 1 segment, resulting in the cwnd increasing to 20 segments. Subsequently, after the pause, the sender transmits 4 segments and pauses again. As a consequence, the arrival of 4 ACKs results in cwnd further increasing to 24 segments, even though the sender is rate-limited (i.e., has never sent more than 10 segments per round-trip time (RTT)).</t>
        </section>
        <section anchor="sender-constrained-by-rate-limited-increase">
          <name>Sender constrained by Rate-Limited Increase</name>
          <t>Initially, cwnd = initcwnd. Therefore, using initcwnd = 10 segments, the sender transmits 10 segments and pauses; note that FlightSize and maxFS are both 10 segments at this point. Since the sender is in the Slow Start phase, the arrival of each ACK for the 10 sent segments increases the cwnd by 1 segment, resulting in the cwnd increasing to 20 segments. Subsequently, when the sender resumes and transmits 4 new segments, Rate-Limited Increase constrains the growth of the cwnd because FlightSize &lt; cwnd and therefore this caps the cwnd to be no larger than limit(maxFS) = 2 X maxFS = 2 X 10 segments = 20 segments.</t>
        </section>
      </section>
      <section anchor="discussion">
        <name>Discussion</name>
        <t>If the sending rate is less than the rate permitted by the cwnd for multiple RTTs, limited either by the sending application or by the receiver-advertised window, a continuous increase in the cwnd would cause a mismatch between the cwnd and the capacity that the path supports (i.e., over-estimating the capacity).
Such unlimited growth in the cwnd is therefore disallowed.</t>
        <t>However, in most common congestion control algorithms, in the absence of an indication of congestion, a cwnd that has been fully utilized during an RTT (where a sender was cwnd-limited) permits the cwnd to be increased during the immediately following RTT. This increase is allowed by Rate-Limited Increase.</t>
        <section anchor="rate-based-congestion-control">
          <name>Rate-based congestion control</name>
          <t>The present document updates congestion control specifications that use a cwnd to limit the number of unacknowledged bytes (or packets) that a sender is allowed to emit. Use of a cwnd variable to control sending rate is not the only mechanism available and not the only mechanism that is used in practice.</t>
          <t>Congestion control algorithms can also constrain data transmission by explicitly calculating the sending rate over some time interval, by "pacing" packets (injecting pauses in between their transmission) or via combinations of the above (e.g., BBR combines these three methods <xref target="I-D.ietf-ccwg-bbr"/>). The guiding principle behind Rate-Limited Increase applies to all congestion control algorithms: in the absence of a congestion indication, a sender is allowed to increase its rate from the amount of data that it has transmitted during the previous RTT (this holds irrespective of whether the sender is rate-limited or not).</t>
          <t>Rate-based congestion control algorithms <bcp14>MUST</bcp14> ensure their maximum sustained rate is
limited to a value that is not greater than would have been
permitted by the Rate-Limited Increase method defined in <xref target="rules"/>.</t>
        </section>
        <section anchor="pacing">
          <name>Pacing</name>
          <t>Pacing mechanisms seek to avoid the negative impacts associated with "bursts" (flights of packets transmitted back-to-back). Rate-Limited Increase introduces a limit using "maxFS", which is based on the number of bytes in flight during a previous RTT; thus, as long as the number of bytes in flight per RTT is unaffected by pacing, Rate-Limited Increase does not constrain the use of pacing mechanisms.</t>
        </section>
      </section>
    </section>
    <section anchor="rfc-updates">
      <name>Updates to RFCs 4341, 5681, 9002, 9260, and 9438</name>
      <section anchor="rfc-4341-profile-for-datagram-congestion-control-protocol-dccp-congestion-control-id-2-tcp-like-congestion-control">
        <name>RFC 4341: Profile for Datagram Congestion Control Protocol (DCCP) Congestion Control ID 2: TCP-like Congestion Control</name>
        <t>According to <xref target="RFC4341"/>, a DCCP CCID specifying TCP-like behavior is allowed to grow the cwnd without limit during an uncongested period when it sends at a rate unconstrained by the current cwnd.
This document updates <xref section="5.1" sectionFormat="of" target="RFC4341"/> by adding the text in <xref target="rules"/> to specify how the cwnd is managed when the sender is rate-limited.</t>
      </section>
      <section anchor="rfc-5681-tcp-congestion-control">
        <name>RFC 5681: TCP Congestion Control</name>
        <t><xref target="RFC5681"/> specifies no limit on the cwnd growth in the standard TCP behavior
when a TCP sender is unable to send at the maximum rate allowed by the cwnd.</t>
        <t>This document updates <xref section="3.1" sectionFormat="of" target="RFC5681"/> by adding the text in <xref target="rules"/> to specify how the cwnd is managed when the sender is rate-limited.</t>
      </section>
      <section anchor="rfc-9002-quic-loss-detection-and-congestion-control">
        <name>RFC 9002: QUIC Loss Detection and Congestion Control</name>
        <t><xref section="7.8" sectionFormat="of" target="RFC9002"/> states:</t>
        <ul empty="true">
          <li>
            <t>"When bytes in flight is smaller than the congestion window and sending is not pacing limited, the congestion window is underutilized. This can happen due to insufficient application data or flow control limits. When this occurs, the congestion window <bcp14>SHOULD NOT</bcp14> be increased in either slow start or congestion avoidance."</t>
          </li>
        </ul>
        <t>This limits the cwnd growth in accordance with Rate-Limited Increase, but it is more conservative.</t>
        <t>This document updates <xref target="RFC9002"/> by replacing the final sentence of the cited text with the text in <xref target="rules"/> to specify how the cwnd is managed when the sender is rate-limited.</t>
      </section>
      <section anchor="rfc-9260-stream-control-transmission-protocol">
        <name>RFC 9260: Stream Control Transmission Protocol</name>
        <t><xref section="7.2.1" sectionFormat="of" target="RFC9260"/> states:</t>
        <ul empty="true">
          <li>
            <t>"When cwnd is less than or equal to ssthresh, an SCTP endpoint <bcp14>MUST</bcp14> use the slow-start algorithm to
increase cwnd only if the current congestion window is being fully utilized and the data sender
is not in Fast Recovery.
Only when these two conditions are met can the cwnd be increased; otherwise, the cwnd <bcp14>MUST NOT</bcp14> be increased."</t>
          </li>
        </ul>
        <t>The quoted statement from <xref target="RFC9260"/> limits cwnd growth in accordance with Rate-Limited Increase, but it is more conservative. <xref section="7.2.1" sectionFormat="of" target="RFC9260"/> only discusses Slow Start. Congestion Avoidance is discussed in <xref section="7.2.2" sectionFormat="of" target="RFC9260"/>; however, this section does not contain a similar rule. It is therefore clear that the quoted statement from <xref target="RFC9260"/> only applies to Slow Start.</t>
        <t>This document updates <xref target="RFC9260"/> by replacing the final sentence of the quoted text with the text in <xref target="rules"/> to specify how the cwnd is managed when the sender is rate-limited.</t>
        <t><xref section="7.2.2" sectionFormat="of" target="RFC9260"/> is also updated to add text in <xref target="rules"/>.</t>
        <t>This ensures that the update applies to both Slow Start and Congestion Avoidance.</t>
      </section>
      <section anchor="rfc-9438-cubic-for-fast-and-long-distance-networks">
        <name>RFC 9438: CUBIC for Fast and Long-Distance Networks</name>
        <t><xref section="5.8" sectionFormat="of" target="RFC9438"/> states:</t>
        <ul empty="true">
          <li>
            <t>"Cubic doesn't increase cwnd when it's limited by the sending application or rwnd".</t>
          </li>
        </ul>
        <t>This limits the cwnd growth in accordance with Rate-Limited Increase, but it
is more conservative.</t>
        <t>This document updates <xref target="RFC9438"/> by replacing the quoted text with the text in <xref target="rules"/> to specify how the cwnd is managed when the sender is rate-limited.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>While congestion control designs could result in unwanted competing traffic, they do not directly result in new security considerations.</t>
      <t>The security considerations are the same as for other
congestion control methods.  Such methods rely on the receiver
appropriately acknowledging receipt of data.  The ability of an on-path or off-path attacker to influence congestion control depends
upon the security properties of the transport protocol being used.
Transport protocols that provide authentication (including those using encryption), or are carried over protocols that provide authentication,
can protect their congestion control algorithm from network attack. This is orthogonal to the specification of congestion control rules.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests no IANA action.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC5681">
          <front>
            <title>TCP Congestion Control</title>
            <author fullname="M. Allman" initials="M." surname="Allman"/>
            <author fullname="V. Paxson" initials="V." surname="Paxson"/>
            <author fullname="E. Blanton" initials="E." surname="Blanton"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document defines TCP's four intertwined congestion control algorithms: slow start, congestion avoidance, fast retransmit, and fast recovery. In addition, the document specifies how TCP should begin transmission after a relatively long idle period, as well as discussing various acknowledgment generation methods. This document obsoletes RFC 2581. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5681"/>
          <seriesInfo name="DOI" value="10.17487/RFC5681"/>
        </reference>
        <reference anchor="RFC9002">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </reference>
        <reference anchor="RFC4341">
          <front>
            <title>Profile for Datagram Congestion Control Protocol (DCCP) Congestion Control ID 2: TCP-like Congestion Control</title>
            <author fullname="S. Floyd" initials="S." surname="Floyd"/>
            <author fullname="E. Kohler" initials="E." surname="Kohler"/>
            <date month="March" year="2006"/>
            <abstract>
              <t>This document contains the profile for Congestion Control Identifier 2 (CCID 2), TCP-like Congestion Control, in the Datagram Congestion Control Protocol (DCCP). CCID 2 should be used by senders who would like to take advantage of the available bandwidth in an environment with rapidly changing conditions, and who are able to adapt to the abrupt changes in the congestion window typical of TCP's Additive Increase Multiplicative Decrease (AIMD) congestion control. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4341"/>
          <seriesInfo name="DOI" value="10.17487/RFC4341"/>
        </reference>
        <reference anchor="RFC9260">
          <front>
            <title>Stream Control Transmission Protocol</title>
            <author fullname="R. Stewart" initials="R." surname="Stewart"/>
            <author fullname="M. Tüxen" initials="M." surname="Tüxen"/>
            <author fullname="K. Nielsen" initials="K." surname="Nielsen"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This document describes the Stream Control Transmission Protocol (SCTP) and obsoletes RFC 4960. It incorporates the specification of the chunk flags registry from RFC 6096 and the specification of the I bit of DATA chunks from RFC 7053. Therefore, RFCs 6096 and 7053 are also obsoleted by this document. In addition, RFCs 4460 and 8540, which describe errata for SCTP, are obsoleted by this document.</t>
              <t>SCTP was originally designed to transport Public Switched Telephone Network (PSTN) signaling messages over IP networks. It is also suited to be used for other applications, for example, WebRTC.</t>
              <t>SCTP is a reliable transport protocol operating on top of a connectionless packet network, such as IP. It offers the following services to its users:</t>
              <t>The design of SCTP includes appropriate congestion avoidance behavior and resistance to flooding and masquerade attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9260"/>
          <seriesInfo name="DOI" value="10.17487/RFC9260"/>
        </reference>
        <reference anchor="RFC9438">
          <front>
            <title>CUBIC for Fast and Long-Distance Networks</title>
            <author fullname="L. Xu" initials="L." surname="Xu"/>
            <author fullname="S. Ha" initials="S." surname="Ha"/>
            <author fullname="I. Rhee" initials="I." surname="Rhee"/>
            <author fullname="V. Goel" initials="V." surname="Goel"/>
            <author fullname="L. Eggert" initials="L." role="editor" surname="Eggert"/>
            <date month="August" year="2023"/>
            <abstract>
              <t>CUBIC is a standard TCP congestion control algorithm that uses a cubic function instead of a linear congestion window increase function to improve scalability and stability over fast and long-distance networks. CUBIC has been adopted as the default TCP congestion control algorithm by the Linux, Windows, and Apple stacks.</t>
              <t>This document updates the specification of CUBIC to include algorithmic improvements based on these implementations and recent academic work. Based on the extensive deployment experience with CUBIC, this document also moves the specification to the Standards Track and obsoletes RFC 8312. This document also updates RFC 5681, to allow for CUBIC's occasionally more aggressive sending behavior.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9438"/>
          <seriesInfo name="DOI" value="10.17487/RFC9438"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7661">
          <front>
            <title>Updating TCP to Support Rate-Limited Traffic</title>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"/>
            <author fullname="A. Sathiaseelan" initials="A." surname="Sathiaseelan"/>
            <author fullname="R. Secchi" initials="R." surname="Secchi"/>
            <date month="October" year="2015"/>
            <abstract>
              <t>This document provides a mechanism to address issues that arise when TCP is used for traffic that exhibits periods where the sending rate is limited by the application rather than the congestion window. It provides an experimental update to TCP that allows a TCP sender to restart quickly following a rate-limited interval. This method is expected to benefit applications that send rate-limited traffic using TCP while also providing an appropriate response if congestion is experienced.</t>
              <t>This document also evaluates the Experimental specification of TCP Congestion Window Validation (CWV) defined in RFC 2861 and concludes that RFC 2861 sought to address important issues but failed to deliver a widely used solution. This document therefore reclassifies the status of RFC 2861 from Experimental to Historic. This document obsoletes RFC 2861.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7661"/>
          <seriesInfo name="DOI" value="10.17487/RFC7661"/>
        </reference>
        <reference anchor="RFC6928">
          <front>
            <title>Increasing TCP's Initial Window</title>
            <author fullname="J. Chu" initials="J." surname="Chu"/>
            <author fullname="N. Dukkipati" initials="N." surname="Dukkipati"/>
            <author fullname="Y. Cheng" initials="Y." surname="Cheng"/>
            <author fullname="M. Mathis" initials="M." surname="Mathis"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>This document proposes an experiment to increase the permitted TCP initial window (IW) from between 2 and 4 segments, as specified in RFC 3390, to 10 segments with a fallback to the existing recommendation when performance issues are detected. It discusses the motivation behind the increase, the advantages and disadvantages of the higher initial window, and presents results from several large-scale experiments showing that the higher initial window improves the overall performance of many web services without resulting in a congestion collapse. The document closes with a discussion of usage and deployment for further experimental purposes recommended by the IETF TCP Maintenance and Minor Extensions (TCPM) working group.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6928"/>
          <seriesInfo name="DOI" value="10.17487/RFC6928"/>
        </reference>
        <reference anchor="I-D.ietf-ccwg-bbr">
          <front>
            <title>BBR Congestion Control</title>
            <author fullname="Neal Cardwell" initials="N." surname="Cardwell">
              <organization>Google</organization>
            </author>
            <author fullname="Ian Swett" initials="I." surname="Swett">
              <organization>Google</organization>
            </author>
            <author fullname="Joseph Beshay" initials="J." surname="Beshay">
              <organization>Meta</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This document specifies the BBR congestion control algorithm.  BBR
   ("Bottleneck Bandwidth and Round-trip propagation time") uses recent
   measurements of a transport connection's delivery rate, round-trip
   time, and packet loss rate to build an explicit model of the network
   path.  BBR then uses this model to control both how fast it sends
   data and the maximum volume of data it allows in flight in the
   network at any time.  Relative to loss-based congestion control
   algorithms such as Reno [RFC5681] or CUBIC [RFC9438], BBR offers
   substantially higher throughput for bottlenecks with shallow buffers
   or random losses, and substantially lower queueing delays for
   bottlenecks with deep buffers (avoiding "bufferbloat").  BBR can be
   implemented in any transport protocol that supports packet-delivery
   acknowledgment.  Thus far, open source implementations are available
   for TCP [RFC9293] and QUIC [RFC9000].  This document specifies
   version 3 of the BBR algorithm, BBRv3.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ccwg-bbr-06"/>
        </reference>
      </references>
    </references>
    <?line 269?>

<section anchor="an-example-using-cwnd-represented-in-bytes">
      <name>An Example Using cwnd Represented in Bytes</name>
      <t>The following informative example is provided for a sender that maintains the cwnd in bytes. 36 packets (or segments in the case of TCP) are sent in this example over four rounds of transmission. This shows the initial growth of the cwnd by a rate-limited sender, followed by a transmission that uses the full available cwnd. The SMSS (QUIC MPS)=1000. N is the number of previously unacknowledged bytes in a received acknowledgement. For simplicity, in this example the receiver sends an ACK for each received packet.</t>
      <t>The initial sender state is:</t>
      <artwork><![CDATA[
  Sender sequence number (seqno) = 0
  SMSS = 1000 bytes
  cwnd = 10000 bytes (initcwnd)
  maxFS = 10000 bytes (initcwnd)
  FlightSize (FS) = 0 bytes
  ssthresh is infinity, i.e. the congestion control algorithm is in slow start.
]]></artwork>
      <t>The network path’s bandwidth-delay product is such that, throughout this example,
all packets in each round are sent before an ACK is received for the first packet in a round.
One ACK is generated for each received packet.</t>
      <t>Round 1, the sender has 4000B to send in 4 packets (1000B);  cwnd=10000</t>
      <artwork><![CDATA[
  Send  seqno=0;    FS=1000; maxFS=10000
  Send  seqno=1000; FS=2000; maxFS=10000
  Send  seqno=2000; FS=3000; maxFS=10000
  Send  seqno=3000; FS=4000; maxFS=10000
]]></artwork>
      <t>Received 4 ACKs (each N=1000); maxFS=10000
cwnd_new += N; cwnd = min(cwnd_new, 2*maxFS)</t>
      <artwork><![CDATA[
  ACK for  1000 ACK’ed=1000; FS-=1000: cwnd+= 1000; cwnd=11000
  ACK for  2000 ACK’ed=1000; FS-=1000: cwnd+= 1000; cwnd=12000
  ACK for  3000 ACK’ed=1000; FS-=1000: cwnd+= 1000; cwnd=13000
  ACK for  4000 ACK’ed=1000; FS-=1000: cwnd+= 1000; cwnd=14000
]]></artwork>
      <t>Note: This round maxFS was not increased and cwnd was increased.</t>
      <t>Round 2, the sender has 8000B to send in 8 packets (1000B), cwnd=14000</t>
      <artwork><![CDATA[
  Send  seqno=4000; FS=1000; maxFS=10000
  Send  seqno=5000; FS=2000; maxFS=10000
  Send  seqno=6000; FS=3000; maxFS=10000
  Send  seqno=7000; FS=4000; maxFS=10000
  Send  seqno=8000; FS=5000; maxFS=10000
  Send  seqno=9000; FS=6000; maxFS=10000
  Send seqno=10000; FS=7000; maxFS=10000
  Send seqno=11000; FS=8000; maxFS=10000
]]></artwork>
      <t>Received 8 ACKs (N=1000); maxFS=10000
cwnd_new += N; cwnd = min(cwnd_new, 2*maxFS)</t>
      <artwork><![CDATA[
  ACK for  5000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=15000
  ACK for  6000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=16000
  ACK for  7000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=17000
  ACK for  8000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=18000
  ACK for  9000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=19000
  ACK for 10000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=20000
  ACK for 11000 ACK’ed=1000; FS-=1000: cwnd+=0;    cwnd=20000
  ACK for 12000 ACK’ed=1000; FS-=1000: cwnd+=0;    cwnd=20000
]]></artwork>
      <t>Note: This round maxFS was not increased and cwnd was limited to 2*maxFS.</t>
      <t>Round 3, the sender has 4000B to send in 4 packets (1000B), cwnd=20000</t>
      <artwork><![CDATA[
  Send seqno=12000; FS=1000; maxFS=10000
  Send seqno=13000; FS=2000; maxFS=10000
  Send seqno=14000; FS=3000; maxFS=10000
  Send seqno=15000; FS=4000; maxFS=10000
]]></artwork>
      <t>Received 2 ACKs (N=1000); maxFS=10000
cwnd_new += N; cwnd = min(cwnd_new, 2*maxFS)</t>
      <artwork><![CDATA[
  ACK for 13000 ACK’ed=1000; FS-=1000: cwnd+=0;    cwnd=20000
  ACK for 14000 ACK’ed=1000; FS-=1000: cwnd+=0;    cwnd=20000
  ACK for 15000 ACK’ed=1000; FS-=1000: cwnd+=0;    cwnd=20000
  ACK for 16000 ACK’ed=1000; FS-=1000: cwnd+=0;    cwnd=20000
]]></artwork>
      <t>Note: This round maxFS was not increased and cwnd was not increased.</t>
      <t>Round 4, the sender has 20000B to send in 20 packets (1000B), cwnd=20000</t>
      <artwork><![CDATA[
  Send seqno=16000; FS= 1000; maxFS=10000
  Send seqno=17000; FS= 2000; maxFS=10000
  Send seqno=18000; FS= 3000; maxFS=10000
  Send seqno=19000; FS= 4000; maxFS=10000
  Send seqno=20000; FS= 5000; maxFS=10000
  Send seqno=21000; FS= 6000; maxFS=10000
  Send seqno=22000; FS= 7000; maxFS=10000
  Send seqno=23000; FS= 8000; maxFS=10000
  Send seqno=24000; FS= 9000; maxFS=10000
  Send seqno=25000; FS=10000; maxFS=10000
  Send seqno=26000; FS=11000; maxFS=11000
  Send seqno=27000; FS=12000; maxFS=12000
  Send seqno=28000; FS=13000; maxFS=13000
  Send seqno=29000; FS=14000; maxFS=14000
  Send seqno=30000; FS=15000; maxFS=15000
  Send seqno=31000; FS=16000; maxFS=16000
  Send seqno=32000; FS=17000; maxFS=17000
  Send seqno=33000; FS=18000; maxFS=18000
  Send seqno=34000; FS=19000; maxFS=19000
  Send seqno=35000; FS=20000; maxFS=20000
]]></artwork>
      <t>Received 10 ACKs (N=1000); maxFS=20000
cwnd_new += N; cwnd = min(cwnd_new, 2*maxFS)</t>
      <artwork><![CDATA[
  ACK for 18000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=21000
  ACK for 19000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=22000
  ACK for 19000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=23000
  ACK for 20000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=24000
  ACK for 21000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=25000
  ACK for 22000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=26000
  ACK for 23000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=27000
  ACK for 24000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=28000
  ACK for 25000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=29000
  ACK for 26000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=30000
  ACK for 27000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=31000
  ACK for 28000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=32000
  ACK for 29000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=33000
  ACK for 30000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=34000
  ACK for 31000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=35000
  ACK for 32000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=36000
  ACK for 33000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=37000
  ACK for 34000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=38000
  ACK for 35000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=39000
  ACK for 36000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=40000
]]></artwork>
      <t>Note: In this round, maxFS increased and therefore cwnd increased to 2*maxFS.</t>
    </section>
    <section anchor="change-log">
      <name>Change Log</name>
      <ul spacing="normal">
        <li>
          <t>-00 was the first individual submission for feedback by CCWG.</t>
        </li>
        <li>
          <t>-01 includes editorial improvements
          </t>
          <ul spacing="normal">
            <li>
              <t>Removes application interaction with QUIC pacing, since pacing might be within the QUIC stack.</t>
            </li>
            <li>
              <t>Adds explicit mention of DCCP/CCID2.</t>
            </li>
            <li>
              <t>Adds this change log.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>-02 addresses comments from IETF-119
          </t>
          <ul spacing="normal">
            <li>
              <t>Discusses rate-based controls and pacing.</t>
            </li>
            <li>
              <t>Trims the list of possible RFCs to update.</t>
            </li>
            <li>
              <t>Some editorial fixes: "congestion control algorithm" instead of "mechanism" for consistency with RFC5033.bis; earlier definition of maxFS; explicit mention of RFCs to update in abstract.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>-03 addresses comments from IETF-120
          </t>
          <ul spacing="normal">
            <li>
              <t>Introduces a third rule, with <bcp14>MAY</bcp14>, that avoids having an unvalidated long-lived maxFS (using pipeACK from RFC 7661).</t>
            </li>
            <li>
              <t>Changes "inc" to "limit" and adapts the wording of rule 2 to make it clearer (thanks to Neal Cardwell).</t>
            </li>
            <li>
              <t>Appendix: updates ns-3 in line with the recent implementation.</t>
            </li>
            <li>
              <t>Appendix: makes the RFC 9002 text clearer and shorter.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-ietf-ccwg-ratelimited-increase-00
          </t>
          <ul spacing="normal">
            <li>
              <t>adds Mohit Tahiliani as a co-author</t>
            </li>
            <li>
              <t>refines the "rule" text (shorter, clearer)</t>
            </li>
            <li>
              <t>adds an example</t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-ietf-ccwg-ratelimited-increase-01
          </t>
          <ul spacing="normal">
            <li>
              <t>Clarified what we mean with an RTT</t>
            </li>
            <li>
              <t>rephrased example regarding initcwnd, citing RFCs 6928 and 9002</t>
            </li>
            <li>
              <t>removed the too vague rule 1 and made rule 2 (now rule 1) a <bcp14>MUST</bcp14></t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-ietf-ccwg-ratelimited-increase-02
          </t>
          <ul spacing="normal">
            <li>
              <t>Improved the last sentence of section 3.1.2.</t>
            </li>
            <li>
              <t>Removed a confusing and unnecessary sentence about pacing (as suggested at IETF-123).</t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-ietf-ccwg-ratelimited-increase-03
          </t>
          <ul spacing="normal">
            <li>
              <t>The editors checked rule 2, and found that rule 1 was sufficient, and did not depend on the ordering of rules in newCWV (RFC7661), hence rule 2 was finally removed.</t>
            </li>
            <li>
              <t>Cleaned language and improved text explaining how this complements RFC7661.</t>
            </li>
            <li>
              <t>Checked/updated definitions.</t>
            </li>
            <li>
              <t>Added an example with cwnd in bytes.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-ietf-ccwg-ratelimited-increase-04
          </t>
          <ul spacing="normal">
            <li>
              <t>Repeated definitions from RFC 7661 instead of just pointing at the RFC</t>
            </li>
            <li>
              <t>Made RFC 7661 informational</t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-ietf-ccwg-ratelimited-increase-05
          </t>
          <ul spacing="normal">
            <li>
              <t>Rephrased references to RFC 7661</t>
            </li>
            <li>
              <t>Nits</t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-ietf-ccwg-ratelimited-increase-06
          </t>
          <ul spacing="normal">
            <li>
              <t>Changed some TCP-specific language so it applies to QUIC too</t>
            </li>
            <li>
              <t>RFC 4341 added to list of updated RFCs in the abstract</t>
            </li>
            <li>
              <t>Nits</t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-ietf-ccwg-ratelimited-increase-07
          </t>
          <ul spacing="normal">
            <li>
              <t>Updated this list</t>
            </li>
            <li>
              <t>Made RFC 4341 reference normative</t>
            </li>
            <li>
              <t>Fixed Updates list to match boilerplate</t>
            </li>
            <li>
              <t>Moved some of appendix B to the main text as a new section that (only) defines the RFC updates.</t>
            </li>
            <li>
              <t>Updated description lines in appendix A</t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-ietf-ccwg-ratelimited-increase-08
          </t>
          <ul spacing="normal">
            <li>
              <t>Addressed a comment from Eric Vyncke about the paragraph on rate-based cc. algs.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-ietf-ccwg-ratelimited-increase-09</t>
        </li>
        <li>
          <t>Corrections and additions proposed by Mahesh Jethanandani</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank Neal Cardwell and Martin Duke for suggesting improvements to this document. Thanks are due to the various IETF reviewers, and especially to Lars Eggert and Mahesh Jethanandani.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
