<?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.6.39 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-nishida-ccwg-standard-cc-analysis-01" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="standard-cc-analysis">Analysis for the Differences Between Standard Congestion Control Schemes</title>
    <seriesInfo name="Internet-Draft" value="draft-nishida-ccwg-standard-cc-analysis-01"/>
    <author initials="Y." surname="Nishida" fullname="Yoshifumi Nishida">
      <organization abbrev="AWS">Amazon Web Services</organization>
      <address>
        <postal>
          <street>440 Terry Ave N</street>
          <city>Seattle</city>
          <region>WA</region>
          <code>98109</code>
          <country>USA</country>
        </postal>
        <email>nsd.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2023" month="July" day="22"/>
    <area>TSV</area>
    <workgroup>TCPM Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 77?>

<t>Reno-based congestion control has been referred as the standard document from IETF
for long time that describes congestion control principle of the Internet.
In the meantime, IETF recently has published two new congestion control standards that
use slightly different schemes from the previous one.
This document provides analysis for the differences between these standards in order to
provide helpful information when an unified congestion control principles for the Internet
is standardized in the future.</t>
    </abstract>
  </front>
  <middle>
    <?line 87?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="RFC5681"/> specifies Reno-based congestion control and it has been referred as
the standard document from IETF that outlines congestion control principle of
the Internet. On the other hand, IETF recently have published two new congestion control
standards; <xref target="RFC9002"/> as Reno-based congestion control for QUIC <xref target="RFC9000"/>
and <xref target="I-D.ietf-tcpm-rfc8312bis"/> as CUBIC congestion control for various transport protocols.
We believe all transport protocols should share the same congestion control principle
so that they can share network resources mostly fairly. From this point, we believe
the concepts described in these standards should not conflict each other.
In our study, the new standards mostly follow the principles described in <xref target="RFC5681"/>,
however, there are certain differences in their schemes or the constant values, which may
create certain performance differences.</t>
      <t>This document provides a list of such differences as a result of our study, but does not
provide any evaluations nor analysis for the performance impacts by them.
Hence, some differences described in the document might be proved to be negligible
in further analysis. Or, others may be considered to create distinct performance differences
so that they will need to be updated to avoid conflicts between the standards.
However, given that the scale of the Internet, we think such evaluations
will not be easy as it would require large-scale and long-term analysis.</t>
      <t>The aim of the document is to simply describe the differences in them and discuss their potential
impacts as a reference for further analysis. We hope the document will be an useful
resource when an unified congestion control principles for the Internet is needed to be
standardized in the future.</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>
    <section anchor="analysis-for-differences-between-rfc9002-and-rfc5681">
      <name>Analysis for differences between RFC9002 and RFC5681</name>
      <t>We think there are the following differences between RFC9002 and RFC5681.</t>
      <section anchor="initial-window">
        <name>Initial Window</name>
        <t>RFC5681 specifies Initial Window to be at most 4 segments or 4380 bytes
as specified in <xref target="RFC3390"/> while RFC9002 allows it to be up to 10 segments or 14720 bytes.
<xref target="RFC6928"/> allows TCP connections to use up to 10 segments or 14600 bytes for
Initial Window, however RFC5681 does not adopt it as it is an experimental document.
The difference in the choice of Initial Window will have certain impacts on the growth rate of
congestion window.</t>
      </section>
      <section anchor="loss-window">
        <name>Loss Window</name>
        <t>RFC5681 specifies Loss Window Size to be 1 segment while RFC9002 uses 2 segments for it.
As Section 4.8 in RFC9002 describes, using 2 segments for Loss Window can reduce the
chance of RTO and avoid additional delays caused by delayed ack algorithm. However, this could mean
when an RFC5681 connection and an RFC9002 connection get RTOs at the same time, the RFC9002
connection can recover congestion window size more than 2 times faster than the RFC5681 connection.</t>
      </section>
      <section anchor="slowstart-threshold-after-packet-loss">
        <name>SlowStart Threshold After Packet loss</name>
        <t>In RFC9002, a sender sets the slow-start threshold to the half value of the congestion
window when packet loss is detected. However, in RFC5681, it uses the half value
of the flight size instead of congestion window.
As there can be some situations where there is a significant difference between flightsize and
congestion window, the choice of them will have considerable impacts.</t>
        <t>Even more, RFC5681 implicitly disallows to use congestion window here as it states:</t>
        <ul empty="true">
          <li>
            <t>"
 Implementation Note: An easy mistake to make is to simply use cwnd,
 rather than FlightSize, which in some implementations may
 incidentally increase well beyond rwnd.
"</t>
          </li>
        </ul>
        <t>We fathom this sentence stemmed from the fact that there were some implementations
which increment congestion window on every acknowledgment even though receiver's window was
fully subscribed in the past. However, In RFC9002, it is prohibited to increase congestion window
when it is underutilized to prevent this situation (Section 7.8). RFC9002 also allows to use
other mechanisms to update its congestion window during idle periods such as <xref target="RFC7661"/>.</t>
      </section>
      <section anchor="window-growth-in-slow-start-period">
        <name>Window Growth in Slow Start Period</name>
        <t>In RFC9002, when a sender is in slow start, the congestion window increases by the number
of bytes acknowledged on each acknowledgment segment arrival. On the other hand, RFC5681
increases congestion window by at most 1 full segment. RFC5681 mentions RFC3465 <xref target="RFC3465"/>
which uses similar method to RFC9002, however RFC5681 does not recommend to use it.
In addition, RFC3465 defines the limited factor: L which controls the aggressiveness of
the algorithm. RFC3465 recommends to use L=2. This means it can allow to increase congestion window
by at most 2 full segments. This logic in RFC5681 is overridden by <xref target="RFC9406"/> when hystart++ is activated
in the connection. When hystart++ is enabled, as long as some packet pacing mechanisms are used in the connection,
congestion window can be increased by the amount of acknowledged data in an ACK packet like RFC9002.
However, the increase of congestion window per ACK is limited to 8 SMSS if there is no pacing.
The performance differences in this logic will be more visible in the presence of stretch ACKs.</t>
      </section>
      <section anchor="loss-recovery-algorithm">
        <name>Loss Recovery Algorithm</name>
        <t>The gist of the loss recovery algorithm in RFC5681 is to retransmit all lost segments found
in the previous round trip and once all of them have been acknowledged, it migrates to
Congestion Avoidance from Recovery period. The detailed algorithms are specified in
<xref target="RFC6582"/> and <xref target="RFC6675"/>.</t>
        <t>On the other hand, RFC9002 specifies the ends of Recovery period as when one of any packets
sent during the Recovery period is acknowledged. This means RFC9002 can end Recovery period
even not all lost segments in the previous round trip has been successfully retransmitted.
Moreover, it can end Recovery period even if some segments have been lost during Recovery
period as long as one or more packets have been acknowledged.</t>
        <t>Although we think this behavior will not lead to a congestion collapse, it looks more aggressive
than RFC5681. For example, when there is a congestion where some but not all
segments have been lost during several round trips, RFC5681 reduces congestion window by half
every round trip (as long as retransmission schemes work successfully, otherwise it will
be timed out). On the other hand, RFC9002 will repeat Recovery period and Congestion Avoidance
Period in turn, which reduces congestion window by half every other round trip.</t>
        <t>Another aspect of the loss recovery in RFC9002 is persistent congestion that
is equivalent to TCP's RTO.
In RFC9002, data sender establishes persistent congestion only when all sent packets
are lost for a long enough duration. This period is equivalent to the duration for
an RTO and two TLPs<xref target="RFC8985"/> in TCP. This will mean RFC9002 reduces congestion window to
minimal value only when there is a extreme severe congestion. On the other hand, RFC5681 has more
chances for RTOs as it gets RTOs when fast retransmission/fast recovery scheme
doesn't work due to insufficient number of acknowledgments.</t>
      </section>
      <section anchor="loss-detection-schemes">
        <name>Loss Detection Schemes</name>
        <t>In RFC9002, in addition to acknowledgment-based loss detection scheme which is also
defined in RFC5681, it specifies another loss detection scheme similar to RACK-TLP<xref target="RFC8985"/>.
Although RACK-TCP is a standard document, RFC5681 has no description for it.</t>
      </section>
      <section anchor="minimal-rto-values">
        <name>Minimal RTO Values</name>
        <t>RFC9002 follows most of the parts of <xref target="RFC6298"/> which defines the standard algorithm of retransmission timer computations and managements for TCP.
However, it does not follow 1 sec for minimal RTO values in RFC6298 as it does not specify minimal RTO. This might not be a major problem because it is known that various TCP implementations already adopt lower values for minimal RTO. In addition, QUIC has more explicit mechanism to identify spurious RTOs than TCP, hence we believe there is no risk for large-scale network issues in this.
However, the impacts for not having minimum RTO is still an important research topic for the performance and efficiency of transport protocols.</t>
      </section>
    </section>
    <section anchor="analysis-for-differences-between-cubic-and-rfc5681">
      <name>Analysis for differences between CUBIC and RFC5681</name>
      <t>We think the following points in the CUBIC specification can cause differences behavior from RFC5681.</t>
      <section anchor="multiplicative-window-decrease-factor">
        <name>Multiplicative Window Decrease Factor</name>
        <t>The CUBIC specification <xref target="I-D.ietf-tcpm-rfc8312bis"/> uses 0.7 for Multiplicative
Window Decrease factor while RFC5681 uses 0.5.
We think the rationale for using 0.5 in RFC5681 is derived from the following sentences
in <xref target="Jac88"/>, hence we presume using 0.7 instead will not be too aggressive to lead to a
congestion collapse. However, it can still be more aggressive than RFC5681 which may
cause unfair resource sharing.</t>
        <ul empty="true">
          <li>
            <t>"
We usually run our nets with <contact fullname="ρ" asciiFullname=""/> ≤ 0.5 so it’s probable that there are now
exactly two conversations sharing the bandwidth. I.e., you should reduce your window by
half because the bandwidth available to you has been reduced by half. And, if there are
more than two conversations sharing the bandwidth, halving your window is conservative
"</t>
          </li>
        </ul>
        <t>In order to compensate the aggressiveness by using the aggressive decrease factor, CUBIC uses
"Reno-friendly model" which employs slower window growth rate in low BDP environments.
We will discuss the validity of the model in the following section, however, even if
the model is valid, CUBIC can be more aggressive than RFC5681 in some situations.
For example, when there are a congestion that can last several round trips, CUBIC reduces
congestion window by 30% every round trip while RFC5681 reduces it by half.
In this situation, the window decrease rate for CUBIC will be mostly the half of RFC5681's.
In addition, during Recovery period, CUBIC transmits data with 70% of the previous congestion
window size while RFC5681 uses 50% of it.</t>
        <t>Another example is that congestion window size can be much larger than network capacity
during slow start and CUBIC's high decrease factor may have more impacts than RFC5681.
For example, let's say network capacity is 100Mbps and a TCP sender's congestion window
size at a certain round trip allows to transfer data at 99Mbps, which is lower than the
capacity. If this sender is in slow-start, the congestion window size may glow to transfer
data at 198Mbps in the next round trip and can cause many packet losses.
In case of RFC5681, congestion window will be reduced by half in the following round trip
and transfer rate will be 99Mbps. However, in case of CUBIC, the transfer rate will be 138.6Mbps which
still exceeds the network capacity. This would mean CUBIC can saturate network for
two round trips in this example while RFC5681 does only for one round trip. However,
this might be a pathological example since many recent transport stacks support pacing
mechanism and <xref target="HyStart"/> or <xref target="I-D.ietf-tcpm-hystartplusplus"/> to mitigate the overshooting
during slow-start.</t>
      </section>
      <section anchor="reno-friendly-model">
        <name>Reno-friendly Model</name>
        <t>CUBIC employs Reno-friendly model which is designed to be fair to RFC5681 in low
BDP environments. The model in CUBIC is derived from <xref target="FHP00"/> and it is based on
AIMD congestion control as same as RFC5681, but adopts different increase
factor <contact fullname="α" asciiFullname=""/> and multiplicative factor <contact fullname="β" asciiFullname=""/>.
In RFC5681, <contact fullname="α" asciiFullname=""/> is 1.0 and <contact fullname="β" asciiFullname=""/> is 0.5. This means RFC5681 increases
congestion window by 1 segment per acknowledgment when a transport protocol is in
congestion avoidance and reduces congestion window by half when packet losses
are detected. In the meantime, in {I-D.ietf-tcpm-rfc8312bis}}, <contact fullname="α" asciiFullname=""/> is around 0.529
and <contact fullname="β" asciiFullname=""/> is 0.7. Hence, CUBIC reduces congestion window less than RFC5681 at
packet loss, but at the same time, it reduces the window growth rate so that
the performance of CUBIC and RFC5681 will be mostly the same.</t>
        <t>We explain the rationale behind the values for <contact fullname="α" asciiFullname=""/> and <contact fullname="β" asciiFullname=""/> for CUBIC
in <xref target="Appendix"/>, but the important point for using these values is that it is based on
the following two presumptions.</t>
        <ul spacing="normal">
          <li>CUBIC connection(s) and Reno connection(s) are sharing the same network resource</li>
          <li>When packet losses happen, both CUBIC connection and Reno connection lost packets at the same time.</li>
        </ul>
        <t>Although the first presumption can be considered as a common situation, the second
presumption will not be a common one as there should be various patterns in packet losses.
Moreover, in this model, CUBIC increases congestion window by 0.529 segments per acknowledgment
which means CUBIC transmits a segment upon the arrival of every two acknowledgments
because a transport protocol usually does not send a segment until it has at least one
full segment space available in congestion window. This makes harder to establish
the second presumption even more.</t>
        <t>This might be a relatively minor point that do not have significant impacts on
overall performance of the model, however, more detailed analysis with realistic
packet dynamics will be desirable.
A recent report on this point shows that the model in CUBIC looks
mostly fair to RFC5681 in low BDP environments <xref target="AIMD-friendliness"/>.</t>
      </section>
      <section anchor="slowstart-threshold-after-packet-loss-1">
        <name>SlowStart Threshold After Packet loss</name>
        <t>In CUBIC, a sender sets the slow-start threshold to the half value of the FlightSize
just like specified in RFC5681. However, it is not prohibited to use congestion
widow instead. In addition, CUBIC mentions employing <xref target="RFC7661"/> as a more sophisticated approach.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <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="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="I-D.ietf-tcpm-rfc8312bis">
          <front>
            <title>CUBIC for Fast and Long-Distance Networks</title>
            <author fullname="Lisong Xu" initials="L." surname="Xu">
              <organization>University of Nebraska-Lincoln</organization>
            </author>
            <author fullname="Sangtae Ha" initials="S." surname="Ha">
              <organization>University of Colorado at Boulder</organization>
            </author>
            <author fullname="Injong Rhee" initials="I." surname="Rhee">
              <organization>Bowery Farming</organization>
            </author>
            <author fullname="Vidhi Goel" initials="V." surname="Goel">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Lars Eggert" initials="L." surname="Eggert">
              <organization>NetApp</organization>
            </author>
            <date day="31" month="January" 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.

   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, it also moves the specification to the Standards Track,
   obsoleting RFC 8312.  This also requires updating RFC 5681, to allow
   for CUBIC's occasionally more aggressive sending behavior.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tcpm-rfc8312bis-15"/>
        </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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.ietf-tcpm-hystartplusplus">
          <front>
            <title>HyStart++: Modified Slow Start for TCP</title>
            <author fullname="Praveen Balasubramanian" initials="P." surname="Balasubramanian">
              <organization>Confluent</organization>
            </author>
            <author fullname="Yi Huang" initials="Y." surname="Huang">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Matt Olson" initials="M." surname="Olson">
              <organization>Microsoft</organization>
            </author>
            <date day="27" month="February" year="2023"/>
            <abstract>
              <t>This document describes HyStart++, a simple modification to the slow start phase of congestion control algorithms.  Slow start can overshoot the ideal send rate in many cases, causing high packet loss and poor performance.  HyStart++ uses increase in round-trip delay as a heuristic to find an exit point before possible overshoot.  It also adds a mitigation to prevent jitter from causing premature slow start exit.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tcpm-hystartplusplus-14"/>
        </reference>
        <reference anchor="RFC3390">
          <front>
            <title>Increasing TCP's Initial Window</title>
            <author fullname="M. Allman" initials="M." surname="Allman"/>
            <author fullname="S. Floyd" initials="S." surname="Floyd"/>
            <author fullname="C. Partridge" initials="C." surname="Partridge"/>
            <date month="October" year="2002"/>
          </front>
          <seriesInfo name="RFC" value="3390"/>
          <seriesInfo name="DOI" value="10.17487/RFC3390"/>
        </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="RFC3465">
          <front>
            <title>TCP Congestion Control with Appropriate Byte Counting (ABC)</title>
            <author fullname="M. Allman" initials="M." surname="Allman"/>
            <date month="February" year="2003"/>
            <abstract>
              <t>This document proposes a small modification to the way TCP increases its congestion window. Rather than the traditional method of increasing the congestion window by a constant amount for each arriving acknowledgment, the document suggests basing the increase on the number of previously unacknowledged bytes each ACK covers. This change improves the performance of TCP, as well as closes a security hole TCP receivers can use to induce the sender into increasing the sending rate too rapidly. This memo defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3465"/>
          <seriesInfo name="DOI" value="10.17487/RFC3465"/>
        </reference>
        <reference anchor="RFC6298">
          <front>
            <title>Computing TCP's Retransmission Timer</title>
            <author fullname="V. Paxson" initials="V." surname="Paxson"/>
            <author fullname="M. Allman" initials="M." surname="Allman"/>
            <author fullname="J. Chu" initials="J." surname="Chu"/>
            <author fullname="M. Sargent" initials="M." surname="Sargent"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>This document defines the standard algorithm that Transmission Control Protocol (TCP) senders are required to use to compute and manage their retransmission timer. It expands on the discussion in Section 4.2.3.1 of RFC 1122 and upgrades the requirement of supporting the algorithm from a SHOULD to a MUST. This document obsoletes RFC 2988. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6298"/>
          <seriesInfo name="DOI" value="10.17487/RFC6298"/>
        </reference>
        <reference anchor="RFC6582">
          <front>
            <title>The NewReno Modification to TCP's Fast Recovery Algorithm</title>
            <author fullname="T. Henderson" initials="T." surname="Henderson"/>
            <author fullname="S. Floyd" initials="S." surname="Floyd"/>
            <author fullname="A. Gurtov" initials="A." surname="Gurtov"/>
            <author fullname="Y. Nishida" initials="Y." surname="Nishida"/>
            <date month="April" year="2012"/>
            <abstract>
              <t>RFC 5681 documents the following four intertwined TCP congestion control algorithms: slow start, congestion avoidance, fast retransmit, and fast recovery. RFC 5681 explicitly allows certain modifications of these algorithms, including modifications that use the TCP Selective Acknowledgment (SACK) option (RFC 2883), and modifications that respond to "partial acknowledgments" (ACKs that cover new data, but not all the data outstanding when loss was detected) in the absence of SACK. This document describes a specific algorithm for responding to partial acknowledgments, referred to as "NewReno". This response to partial acknowledgments was first proposed by Janey Hoe. This document obsoletes RFC 3782. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6582"/>
          <seriesInfo name="DOI" value="10.17487/RFC6582"/>
        </reference>
        <reference anchor="RFC6675">
          <front>
            <title>A Conservative Loss Recovery Algorithm Based on Selective Acknowledgment (SACK) for TCP</title>
            <author fullname="E. Blanton" initials="E." surname="Blanton"/>
            <author fullname="M. Allman" initials="M." surname="Allman"/>
            <author fullname="L. Wang" initials="L." surname="Wang"/>
            <author fullname="I. Jarvinen" initials="I." surname="Jarvinen"/>
            <author fullname="M. Kojo" initials="M." surname="Kojo"/>
            <author fullname="Y. Nishida" initials="Y." surname="Nishida"/>
            <date month="August" year="2012"/>
            <abstract>
              <t>This document presents a conservative loss recovery algorithm for TCP that is based on the use of the selective acknowledgment (SACK) TCP option. The algorithm presented in this document conforms to the spirit of the current congestion control specification (RFC 5681), but allows TCP senders to recover more effectively when multiple segments are lost from a single flight of data. This document obsoletes RFC 3517 and describes changes from it. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6675"/>
          <seriesInfo name="DOI" value="10.17487/RFC6675"/>
        </reference>
        <reference anchor="RFC8985">
          <front>
            <title>The RACK-TLP Loss Detection Algorithm for TCP</title>
            <author fullname="Y. Cheng" initials="Y." surname="Cheng"/>
            <author fullname="N. Cardwell" initials="N." surname="Cardwell"/>
            <author fullname="N. Dukkipati" initials="N." surname="Dukkipati"/>
            <author fullname="P. Jha" initials="P." surname="Jha"/>
            <date month="February" year="2021"/>
            <abstract>
              <t>This document presents the RACK-TLP loss detection algorithm for TCP. RACK-TLP uses per-segment transmit timestamps and selective acknowledgments (SACKs) and has two parts. Recent Acknowledgment (RACK) starts fast recovery quickly using time-based inferences derived from acknowledgment (ACK) feedback, and Tail Loss Probe (TLP) leverages RACK and sends a probe packet to trigger ACK feedback to avoid retransmission timeout (RTO) events. Compared to the widely used duplicate acknowledgment (DupAck) threshold approach, RACK-TLP detects losses more efficiently when there are application-limited flights of data, lost retransmissions, or data packet reordering events. It is intended to be an alternative to the DupAck threshold approach.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8985"/>
          <seriesInfo name="DOI" value="10.17487/RFC8985"/>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC9406">
          <front>
            <title>HyStart++: Modified Slow Start for TCP</title>
            <author fullname="P. Balasubramanian" initials="P." surname="Balasubramanian"/>
            <author fullname="Y. Huang" initials="Y." surname="Huang"/>
            <author fullname="M. Olson" initials="M." surname="Olson"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>This document describes HyStart++, a simple modification to the slow start phase of congestion control algorithms. Slow start can overshoot the ideal send rate in many cases, causing high packet loss and poor performance. HyStart++ uses increase in round-trip delay as a heuristic to find an exit point before possible overshoot. It also adds a mitigation to prevent jitter from causing premature slow start exit.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9406"/>
          <seriesInfo name="DOI" value="10.17487/RFC9406"/>
        </reference>
        <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="HyStart">
          <front>
            <title>Hybrid Slow Start for High-Bandwidth and Long-Distance Networks</title>
            <author initials="S." surname="Ha">
              <organization/>
            </author>
            <author initials="I." surname="Ree">
              <organization/>
            </author>
            <date year="2008"/>
          </front>
          <seriesInfo name="DOI 10.1145/1851182.1851192, International Workshop on Protocols for Fast Long-Distance Networks" value=""/>
        </reference>
        <reference anchor="Jac88" target="ftp://ftp.ee.lbl.gov/papers/congavoid.ps.Z.">
          <front>
            <title>Congestion Avoidance and Control</title>
            <author initials="V." surname="Jacobson">
              <organization/>
            </author>
            <date year="1988" month="August"/>
          </front>
          <seriesInfo name="Computer Communication Review, vol. 18, no. 4, pp. 314-329" value=""/>
        </reference>
        <reference anchor="FHP00" target="https://www.icir.org/tfrc/aimd.pdf">
          <front>
            <title>A Comparison of Equation-Based and AIMD Congestion Control</title>
            <author initials="S." surname="Floyd">
              <organization/>
            </author>
            <author initials="M." surname="Handley">
              <organization/>
            </author>
            <author initials="J." surname="Padhye">
              <organization/>
            </author>
            <date year="2000" month="May"/>
          </front>
        </reference>
        <reference anchor="AIMD-friendliness" target="https://raw.githubusercontent.com/bbriscoe/cubic-reno/main/creno_tr.pdf">
          <front>
            <title>Friendliness between AIMD Algorithms</title>
            <author initials="B." surname="Briscoe">
              <organization/>
            </author>
            <author initials="O." surname="Albisser">
              <organization/>
            </author>
            <date year="2022" month="August" day="08"/>
          </front>
          <seriesInfo name="RFC Editor, please replace this URL with the permanent arXiv one" value=""/>
        </reference>
      </references>
    </references>
    <?line 319?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>add people in tcpm-wg community.</t>
    </section>
    <section numbered="false" anchor="Appendix">
      <name>Appendix A: Deriving increase factor for CUBIC from AIMD model</name>
      <t>This section describes how increase factor: <contact fullname="α" asciiFullname=""/> used in CUBIC is determined
from AIMD congestion control model.
We define AIMD(<contact fullname="α" asciiFullname=""/>, <contact fullname="β" asciiFullname=""/>) as AIMD congestion control
that uses an increase parameter <contact fullname="α" asciiFullname=""/> an a decrease parameter <contact fullname="β" asciiFullname=""/>.
Hence, AIMD(1, 0.5) represents congestion control described in RFC5681 while CUBIC
can be expressed as AIMD(<contact fullname="α" asciiFullname=""/>, <contact fullname="β" asciiFullname=""/>) where <contact fullname="β" asciiFullname=""/>=0.7.
We also define Wmax as the congestion window size that can fully utilize network capacity.</t>
      <t>At first, it is clear that <contact fullname="β" asciiFullname=""/>=0.7 is more aggressive than <contact fullname="β" asciiFullname=""/>=0.5
when there is no other traffic.
As cwnd growth is linear, if there's enough long time for the data
transfer, the average congestion window for <contact fullname="β" asciiFullname=""/> =0.5 will be (1.0 + 0.5)/2 = 0.75 Wmax
and it will be (1.0 + 0.7)/2 = 0.85 Wmax for <contact fullname="β" asciiFullname=""/>=0.7.
Hence, it is obvious that this model does not aim for the cases where there's no other traffic.</t>
      <t>The choice of (<contact fullname="α" asciiFullname=""/>, <contact fullname="β" asciiFullname=""/>) for CUBIC is designed to be fair only when it
competes with AIMD(1.0, 0.5). Here, we define W1 as the max window size for AIMD(1.0, 0.5)
and W2 as the max window size for CUBIC's AIMD(<contact fullname="α" asciiFullname=""/>=X,  <contact fullname="β" asciiFullname=""/> =0.7)
when they compete each other. In this situation, AIMD(1.0, 0.5) model oscillates between
0.5 W1 and 1.0 W1 in a congestion epoch. CUBIC's AIMD (<contact fullname="α" asciiFullname=""/>=X,  <contact fullname="β" asciiFullname=""/> =0.7)
model oscillates between 0.7 W2 and 1.0 W2 in the same congestion epoch.
When these two models have the same loss ratio, it should satisfy the following equation (1).</t>
      <artwork><![CDATA[
(1.0 + 0.5) W1 = (1.0 + 0.7) W2   (1)
]]></artwork>
      <t>Also, in one congestion epoch, (<contact fullname="α" asciiFullname=""/>=1.0,  <contact fullname="β" asciiFullname=""/> =0.5) increases congestion window by
0.5 W1 while (<contact fullname="α" asciiFullname=""/>=X,  <contact fullname="β" asciiFullname=""/> =0.7) increases 0.3 W2. The length of congestion epoch
for AIMD(1.0, 0.5) can be expressed as 0.5 W1/1.0 and
it will be expressed as 0.3 W2 /X for AIMD(<contact fullname="α" asciiFullname=""/>=X,  <contact fullname="β" asciiFullname=""/> =0.7).
Because AIMD(1.0), AIMD(<contact fullname="α" asciiFullname=""/>=X,  <contact fullname="β" asciiFullname=""/> =0.7) should have
the same congestion epoch when they compete equaly, it should satisfy the following equation (2).</t>
      <artwork><![CDATA[
 0.5 W1 / 1.0  = 0.3 W2 / X   (2)
]]></artwork>
      <t>From equations (1) and (2), we get X=0.529.</t>
    </section>
    <section numbered="false" anchor="contributors">
      <name>Contributors</name>
      <t>The contents in this documents are the individual contributions from the authors and do not relate
to the authors' positions at their affiliations.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAS7vGQAA6Vc63IbR3b+30/RoSslKwaGBERJILPyLkVKK21EiRFl047L
5WrMNIBezQWeniEEq5hKfuYR8i8/8gLJI+QBknfYJ8m5dM/0DAaSqlZVsoBB
X06f63fO6fF4PBaVqVJ9Kg/OcpVurbFyUZSyWml5YRYLXeo81lY+1dVG61xe
VypPVJnI8yJfaluZIsePVVmk8jpe6UzbA6Hm81LfwpLWjR7H8Vi55Q9EUsS5
ymDLpFSLapwbuzKJgjGb5XhoxvhoImJV6WVRbk+lyReFEGZdnsqqrG01PTo6
OZoKVWp1Kt9dfy82Rfl+WRb1Gr6eX13KG/hu8qX8Iz4T7/UWBiSn8mVe6TLX
1fgCqRCCdv5FpUUOlG21FTZTZfXLr3VRaXsq80Kszan8qSrikbRFWZV6YeHT
NsMPPwuh6mpVlKdCjoWEPyaHST9G8jWfjp7xqX8s4Mmizkznt6Jcqtz8ppCj
p/IsU78BZ2/0XF7r8taACGiU5+zZzTV9t0CGrk7l8fGRfKfLcivPbrV8Tb/F
pgJ2XWtVgXzpSamXtPrNGQ8oEiDnZDY5OnHfaxAkzPnumgfoTJkUjm6TyOhq
8Yclfo/iIhMiL8oMaL3VcGD59vn5ydHR1H18+Gg2wY8vxxc0bVzF62xcLuLZ
g8l0buypQBEG07sDV1uQRFmt09riX7fogwcnR+7jo5PpzD89fvTQP52e+KeP
Hs48LY8ePfYDZiezhy2xfrGT46NH7uPjR4+I7hfbayTglFjgjOPFdl6aRF6n
xUbSr2QkL8xyNX4KarMxSbWS8EG+ArMYXxhUphgEAVYD2seyS0CFTyWo64xF
p0ujLbKCd5Ly4s1LOTmKJpPjh4eT2cPJZDaN6N+T6cipK6mHSkmn7apYS1CS
q7IApSxSNtznylafoqJRU/wzZjW9juQL1XnyMpJvNSrNn1Q8m3VYERj+2W0B
6otb4NGdGwjOelYvIzk5me078HmRrWs4Fn7I6tzEdDzY+dbozUjeFilMn43A
9iJ5PJLrdSQfTI7HD6YnO0dxdH8fIcXF3BY506zKJdrHwaJanx4ewn8jraN0
nkbL4vZwrda6tIcxnEjhUaK1jf4pOoCZz19csYo0xz4jalVpYGlZLOSzX2ui
FuRvdUIMOHt5eTHgF7vCPxo/3Ec8iOF5WmyT8NkliiZPUr0Nn/4pklcqWW11
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
Wzf/D9zbZqeFSQAA

-->

</rfc>
