<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ccwg-ratelimited-increase-11" 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-11"/>
    <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="September" day="06"/>
    <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 3 of <xref target="RFC7661"/>).</t>
          </li>
          <li>
            <t>rate-limited: a flow that is either idle or sends at a rate less than the maximum permitted by the cwnd. (Note: Section 3 of <xref target="RFC7661"/> provides a more specific definition applied to the reduction of the cwnd when a sender remains rate-limited for a period of time).</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 a sender using a congestion control algorithm increases cwnd, the following "Rate-Limited Increase" rules apply:</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>When increasing cwnd, the sender <bcp14>MUST</bcp14> cap cwnd to become 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 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<em>maxFS = 2</em>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 increased 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 increased 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 quoted text with the text in <xref target="rules"/> to specify how the cwnd is increased 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"/> and is addressed separately below.</t>
        <t>This document updates <xref section="7.2.1" sectionFormat="of" target="RFC9260"/> as follows, to specify when the cwnd is increased when the sender is rate-limited:</t>
        <ul spacing="normal">
          <li>
            <t>In the first sentence of the quoted text, the words "the current congestion window is being fully utilized and" are removed, so that the use of the slow-start algorithm to increase the cwnd is conditioned only on the data sender not being in Fast Recovery.</t>
          </li>
          <li>
            <t>The final sentence of the quoted text is replaced with the text in <xref target="rules"/>.</t>
          </li>
          <li>
            <t>In the sentence that immediately follows the quoted text ("If these conditions are met, then cwnd <bcp14>MUST</bcp14> be increased by, at most, the lesser of ..."), the words "these conditions are" are replaced with "this condition is".</t>
          </li>
        </ul>
        <t>For Congestion Avoidance, <xref section="7.2.2" sectionFormat="of" target="RFC9260"/> recommends that "SCTP <bcp14>SHOULD</bcp14> increment cwnd by PMDCS once per RTT when the sender has cwnd or more bytes of data outstanding for the corresponding transport address", and further states:</t>
        <ul empty="true">
          <li>
            <t>"SCTP <bcp14>MUST NOT</bcp14> increment cwnd by more than PMDCS per RTT."</t>
          </li>
        </ul>
        <t>These statements also limit cwnd growth in accordance with Rate-Limited Increase, but they are more conservative.</t>
        <t>This document updates <xref section="7.2.2" sectionFormat="of" target="RFC9260"/> by adding, after the statement "SCTP <bcp14>MUST NOT</bcp14> increment cwnd by more than PMDCS per RTT.", the text in <xref target="rules"/>. The <bcp14>SHOULD</bcp14>-level recommendation remains in place: a sender that follows it will not increase the cwnd while it is rate-limited. Based on the explanations in the present document, a sender can instead increase the cwnd while it is rate-limited, provided that the cwnd never exceeds limit(maxFS), as specified 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 does not increase its congestion window if a flow is application limited".</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 increased when the sender is rate-limited.
The last sentence of <xref section="5.8" sectionFormat="of" target="RFC9438"/> regarding <xref section="4.2" sectionFormat="of" target="RFC9438"/> and inclusion of application-limited periods is unchanged by this document.</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 279?>

<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 max_datagram_size)=1000 bytes. 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 += min(N, SMSS); 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 4 ACKs (N=1000); maxFS=10000;
cwnd_new += min(N, SMSS); 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 20 ACKs (N=1000); maxFS=20000;
cwnd_new += N; cwnd = min(cwnd_new, 2*maxFS)</t>
      <artwork><![CDATA[
  ACK for 17000 ACK’ed=1000; FS-=1000: cwnd+=1000; cwnd=21000
  ACK for 18000 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>
          <ul spacing="normal">
            <li>
              <t>Corrections and additions proposed by Mahesh Jethanandani</t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-ietf-ccwg-ratelimited-increase-10
          </t>
          <ul spacing="normal">
            <li>
              <t>Corrections to accounting of bytes in example in the Appendix</t>
            </li>
          </ul>
        </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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
yqVlAAA=

-->

</rfc>
