<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ccwg-ratelimited-increase-02" category="std" consensus="true" submissionType="IETF" updates="RFC5681, RFC9002, RFC9260, RFC9438" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.2 -->
  <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-02"/>
    <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>
        <uri>https://www.tomh.org/</uri>
      </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="2025" month="October" day="08"/>
    <area>Transport</area>
    <workgroup>Congestion Control Working Group</workgroup>
    <abstract>
      <?line 74?>

<t>This document specifies how transport protocols increase their congestion window when the sender is rate-limited, and updates RFC 5681, RFC 9002, RFC 9260, and RFC 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://mwelzl.github.io/draft-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 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/mwelzl/draft-ccwg-ratelimited-increase"/>.</t>
    </note>
  </front>
  <middle>
    <?line 80?>

<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 utilise 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.</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.
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 the sender does not fully utilise the current cwnd.</t>
      <t>This document specifies a uniform rule that congestion control algorithms <bcp14>MUST</bcp14> apply and provides a recommendation that congestion control implementations <bcp14>SHOULD</bcp14> follow.
An appendix provides an overview of the divergence in current RFCs and some current implementations regarding cwnd increase when the sender is rate-limited.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>This document uses the terms defined in <xref section="2" sectionFormat="of" target="RFC5681"/> and <xref section="3" sectionFormat="of" target="RFC7661"/>. Additionally, we define:</t>
        <ul spacing="normal">
          <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.</t>
          </li>
        </ul>
      </section>
    </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>
    <section anchor="rules">
      <name>Increase rules</name>
      <t>When FlightSize &lt; cwnd, regardless of the current state of a congestion control algorithm, senders using a congestion controlled transport protocol:</t>
      <ol spacing="normal" type="1"><li>
          <t><bcp14>MUST</bcp14> cap cwnd to be no larger than limit(maxFS).</t>
        </li>
        <li>
          <t><bcp14>MAY</bcp14> restrict maxFS as min(maxFS, pipeACK), using "pipeACK" as defined in <xref target="RFC7661"/>.</t>
        </li>
      </ol>
      <t>In rule #1, the function limit() returns the maximum cwnd value the congestion control algorithm would yield by increasing from the value of the maxFS parameter within one RTT.
The RTT includes the minimum path propagation delay plus any delay accumulated by queing in the stack, at the interface and in network elements along the path.
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 rule #1 applied to Congestion Avoidance, limit(maxFS)=1+maxFS, such that equation 3 in <xref target="RFC5681"/> becomes:</t>
      <artwork><![CDATA[
cwnd_new = cwnd + SMSS*SMSS/cwnd
cwnd = min(cwnd_new, 1+maxFS)
]]></artwork>
      <t>where cwnd and SMSS follow their definitions in <xref target="RFC5681"/>.</t>
      <t>As with cwnd, without a way to reduce it when the transport sender becomes rate-limited, rule #1 allows for maxFS to stay valid for a long time, possibly not reflecting the reality of the end-to-end Internet path in use. For cwnd, this is remedied by "Congestion Window Validation" in <xref target="RFC7661"/>, which also defines a "pipeACK" variable that measures the acknowledged size of the network pipe when the sender is rate-limited. Accordingly, to implement CWV, rule #2 can be used.</t>
      <section anchor="example">
        <name>Example</name>
        <t>We illustrate the working of the rules by showing the increase of cwnd in two scenarios: when the growth of cwnd is unconstrained, and when it is constrained by the increase rules. In both cases we assume initial cwnd (initcwnd) = 10 segments, as defined for TCP in <xref target="RFC6928"/>, 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 afterwards, 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, as defined for TCP in <xref target="RFC6928"/>, QUIC in <xref target="RFC9002"/>, the sender transmits 10 segments and pauses. Since the sender is in the Slow Start phase, the arrival of an ACK for each of the 10 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/RTT).</t>
        </section>
        <section anchor="sender-constrained-by-the-increase-rules">
          <name>Sender constrained by the increase rules</name>
          <t>Initially, cwnd = initcwnd. Therefore, using initcwnd = 10 segments, as defined for TCP in <xref target="RFC6928"/>, QUIC in <xref target="RFC9002"/>, the sender transmits 10 segments and pauses; note that FlightSize and maxFS are 10 segments at this point. Since the sender is in the Slow Start phase, the arrival of an ACK for each of the 10 segments increases the cwnd by 1 segment, resulting in cwnd increasing to 20 segments. Subsequently, when the sender resumes and transmits 4 segments, rule #1 constrains the growth of cwnd because FlightSize &lt; cwnd and it caps 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 permitted by cwnd for multiple RTTs, limited either by the sending application or by the receiver-advertised window, continuously increasing 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 is permitted to be increased during the immediately following RTT.
Thus, such an increase is allowed by the first rule.</t>
        <section anchor="rate-based-congestion-control">
          <name>Rate-based congestion control</name>
          <t>The present document updates congestion control specifications that use a congestion window (cwnd) to limit the number of unacknowledged packets a sender is allowed to emit. Use of a congestion window variable to control sending rate is not the only mechanism available and 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.cardwell-iccrg-bbr-congestion-control"/>). The guiding principle behind the rules in <xref target="rules"/> applies to all  congestion control algorithms: in the absence of a congestion indication, a sender should be 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>
        </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). The present specification introduces a limitation using "maxFS", which is measured over an RTT; thus, as long as the number of packets per RTT is unaffected by pacing, the rules in <xref target="rules"/> also do not constrain the use of pacing mechanisms.</t>
        </section>
      </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>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 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="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="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="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="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="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>
        <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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.cardwell-iccrg-bbr-congestion-control">
          <front>
            <title>BBR Congestion Control</title>
            <author fullname="Neal Cardwell" initials="N." surname="Cardwell">
              <organization>Google</organization>
            </author>
            <author fullname="Yuchung Cheng" initials="Y." surname="Cheng">
              <organization>Google</organization>
            </author>
            <author fullname="Soheil Hassas Yeganeh" initials="S. H." surname="Yeganeh">
              <organization>Google</organization>
            </author>
            <author fullname="Ian Swett" initials="I." surname="Swett">
              <organization>Google</organization>
            </author>
            <author fullname="Van Jacobson" initials="V." surname="Jacobson">
              <organization>Google</organization>
            </author>
            <date day="7" month="March" year="2022"/>
            <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 [RFC8312], BBR offers
   substantially higher throughput for bottlenecks with shallow buffers
   or random losses, and substantially lower queueing delays for
   bottlenecks with deep buffers (avoiding "bufferbloat").  BBR can be
   implemented in any transport protocol that supports packet-delivery
   acknowledgment.  Thus far, open source implementations are available
   for TCP [RFC793] and QUIC [RFC9000].  This document specifies version
   2 of the BBR algorithm, also sometimes referred to as BBRv2 or bbr2.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-cardwell-iccrg-bbr-congestion-control-02"/>
        </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="RFC2861">
          <front>
            <title>TCP Congestion Window Validation</title>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <author fullname="J. Padhye" initials="J." surname="Padhye"/>
            <author fullname="S. Floyd" initials="S." surname="Floyd"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document describes a simple modification to TCP's congestion control algorithms to decay the congestion window cwnd after the transition from a sufficiently-long application-limited period, while using the slow-start threshold ssthresh to save information about the previous value of the congestion window. This memo defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2861"/>
          <seriesInfo name="DOI" value="10.17487/RFC2861"/>
        </reference>
      </references>
    </references>
    <?line 197?>

<section anchor="the-state-of-rfcs-and-implementations">
      <name>The state of RFCs and implementations</name>
      <t>This section is provided as input for IETF discussion, and should be removed before publication.</t>
      <section anchor="tcp-reno-congestion-control">
        <name>TCP ("Reno" congestion control)</name>
        <section anchor="specification">
          <name>Specification</name>
          <t><xref target="RFC7661"/> suggests there is no increase limitation in the standard TCP behavior (which <xref target="RFC7661"/> changes), on page 4:</t>
          <ul empty="true">
            <li>
              <t>Standard TCP does not impose additional restrictions on the growth of
the congestion window when a TCP sender is unable to send at the
maximum rate allowed by the cwnd. In this case, the rate-limited
sender may grow a cwnd far beyond that corresponding to the current
transmit rate, resulting in a value that does not reflect current
information about the state of the network path the flow is using.</t>
            </li>
          </ul>
        </section>
        <section anchor="tcp-impl">
          <name>Implementation</name>
          <ul spacing="normal">
            <li>
              <t>ns-2 allows cwnd to grow when it is rate-limited by rwnd. (Rate-limited by the sending application: not tested.)</t>
            </li>
            <li>
              <t>Until release 3.42, ns-3 allowed cwnd to grow when rate-limited, either due to an application or rwnd limit.  Since release 3.42, ns-3 TCP models conform to rule #1 in <xref target="rules"/>, following the current Linux TCP approach in this regard (see next bullet).</t>
            </li>
            <li>
              <t>In Congestion Avoidance, Linux only allows the cwnd to grow when the sender is unconstrained.
Before kernel version 3.16, this also applied to Slow Start.
The check for "unconstrained" is perfomed by checking if FlightSize is greater or equal to cwnd.
Since kernel version 3.16, which was published in August 2014, in Slow Start, the increase
implements rule #1 in <xref target="rules"/> in the <tt>tcp_is_cwnd_limited</tt> function in <tt>tcp.h</tt>.</t>
            </li>
          </ul>
        </section>
        <section anchor="assessment">
          <name>Assessment</name>
          <t>Linux implements a limit to cwnd growth in accordance with rule #1 in <xref target="rules"/>;
in Slow Start, this limit follows the rule's upper limit, while in Congestion Avoidance, it is more conservative than rule #1.
The specification and the ns-2 and (older) ns-3 implementations are in conflict with rule #1 in <xref target="rules"/>.</t>
        </section>
      </section>
      <section anchor="cubic">
        <name>CUBIC</name>
        <section anchor="specification-1">
          <name>Specification</name>
          <t><xref section="5.8" sectionFormat="of" target="RFC9438"/> says:</t>
          <ul empty="true">
            <li>
              <t>Cubic doesn't increase cwnd when it's limited by the sending application or rwnd.</t>
            </li>
          </ul>
        </section>
        <section anchor="implementation">
          <name>Implementation</name>
          <t>The description of Linux described in <xref target="tcp-impl"/> also applies to Cubic.</t>
        </section>
        <section anchor="assessment-1">
          <name>Assessment</name>
          <t>Both the specification and the Linux implementation limit the cwnd growth in accordance with rule #1 in <xref target="rules"/>;
in Congestion Avoidance, this limit is more conservative than rule #1 in <xref target="rules"/>,
and in Slow Start, it implements the upper limit of rule #1 in <xref target="rules"/>.</t>
        </section>
      </section>
      <section anchor="sctp">
        <name>SCTP</name>
        <section anchor="specification-2">
          <name>Specification</name>
          <t><xref section="7.2.1" sectionFormat="of" target="RFC9260"/> says:</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>
        </section>
        <section anchor="assessment-2">
          <name>Assessment</name>
          <t>The quoted statement from <xref target="RFC9260"/> prescribes the same cwnd growth limitation that is also specified for Cubic and implemented for both Reno and Cubic in Linux.
It is in accordance with rule #1 in <xref target="rules"/>, and more conservative.</t>
          <t><xref section="7.2.1" sectionFormat="of" target="RFC9260"/> is specifically limited to Slow Start.
Congestion Avoidance is discussed in <xref section="7.2.2" sectionFormat="of" target="RFC9260"/>
However, this section neither contains a similar rule, nor does it refer back to the rule that limits the growth of cwnd
in Section 7.2.1. It is thus implicitly clear that the quoted rule only applies to Slow Start, whereas the rules in <xref target="rules"/> apply to both Slow Start and Congestion Avoidance.</t>
        </section>
      </section>
      <section anchor="quic">
        <name>QUIC</name>
        <section anchor="specification-3">
          <name>Specification</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>
        </section>
        <section anchor="assessment-3">
          <name>Assessment</name>
          <t>With the exception of pacing, this specification conservatively limits the growth in cwnd, similar to Cubic and SCTP. It is in accordance with rule #1 in <xref target="rules"/>, and more conservative.</t>
        </section>
      </section>
      <section anchor="dccp-ccid2">
        <name>DCCP CCID2</name>
        <section anchor="specification-4">
          <name>Specification</name>
          <t><xref section="5.1" sectionFormat="of" target="RFC4341"/> states:
&gt;There are currently no standards governing TCP's use of the congestion window during an application-limited period.  In particular, it is possible for TCP's congestion window to grow quite large during a long uncongested period when the sender is application limited, sending at a low rate.  <xref target="RFC2861"/> essentially suggests that TCP's congestion window not be increased during application-limited periods when the congestion window is not being fully utilized.</t>
        </section>
        <section anchor="assessment-4">
          <name>Assessment</name>
          <t>A DCCP Congestion Control ID (CCID) specifing TCP-like behaviour ought to follow the method specified in this document. The current guidance relates only to <xref target="RFC2861"/>.
The text in <xref section="5.1" sectionFormat="of" target="RFC4341"/> is updated by this document to specify the management of the
cwnd during an application-limited period.</t>
        </section>
      </section>
    </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>
      </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.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
