<?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.17 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-nishida-tcpm-standard-cc-analysis-01" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.1 -->
  <front>
    <title abbrev="standard-cc-analysis">Analysis for the Differences Between Standard Congestion Control Schemes</title>
    <seriesInfo name="Internet-Draft" value="draft-nishida-tcpm-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="2022" month="November" day="09"/>
    <area>TSV</area>
    <workgroup>TCPM Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <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>
    <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>
    </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 here 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 algorithm will be more conservative than RFC9002 in the presence
of stretch acks that is not uncommon these days.</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 acknowledgement-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>
    <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=""/> &lt;= 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">
              <organization/>
            </author>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="V. Paxson" initials="V." surname="Paxson">
              <organization/>
            </author>
            <author fullname="E. Blanton" initials="E." surname="Blanton">
              <organization/>
            </author>
            <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="12" month="October" year="2022"/>
            <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-13"/>
        </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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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="7" month="November" year="2022"/>
            <abstract>
              <t>   This document describes HyStart++, a simple modification to the slow
   start phase of congestion control algorithms.  Traditional slow start
   can overshoot the ideal send rate in many cases, causing high packet
   loss and poor performance.  HyStart++ uses a delay increase 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-11"/>
        </reference>
        <reference anchor="RFC3390">
          <front>
            <title>Increasing TCP's Initial Window</title>
            <author fullname="M. Allman" initials="M." surname="Allman">
              <organization/>
            </author>
            <author fullname="S. Floyd" initials="S." surname="Floyd">
              <organization/>
            </author>
            <author fullname="C. Partridge" initials="C." surname="Partridge">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="N. Dukkipati" initials="N." surname="Dukkipati">
              <organization/>
            </author>
            <author fullname="Y. Cheng" initials="Y." surname="Cheng">
              <organization/>
            </author>
            <author fullname="M. Mathis" initials="M." surname="Mathis">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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="RFC6582">
          <front>
            <title>The NewReno Modification to TCP's Fast Recovery Algorithm</title>
            <author fullname="T. Henderson" initials="T." surname="Henderson">
              <organization/>
            </author>
            <author fullname="S. Floyd" initials="S." surname="Floyd">
              <organization/>
            </author>
            <author fullname="A. Gurtov" initials="A." surname="Gurtov">
              <organization/>
            </author>
            <author fullname="Y. Nishida" initials="Y." surname="Nishida">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="M. Allman" initials="M." surname="Allman">
              <organization/>
            </author>
            <author fullname="L. Wang" initials="L." surname="Wang">
              <organization/>
            </author>
            <author fullname="I. Jarvinen" initials="I." surname="Jarvinen">
              <organization/>
            </author>
            <author fullname="M. Kojo" initials="M." surname="Kojo">
              <organization/>
            </author>
            <author fullname="Y. Nishida" initials="Y." surname="Nishida">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="N. Cardwell" initials="N." surname="Cardwell">
              <organization/>
            </author>
            <author fullname="N. Dukkipati" initials="N." surname="Dukkipati">
              <organization/>
            </author>
            <author fullname="P. Jha" initials="P." surname="Jha">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <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="RFC7661">
          <front>
            <title>Updating TCP to Support Rate-Limited Traffic</title>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst">
              <organization/>
            </author>
            <author fullname="A. Sathiaseelan" initials="A." surname="Sathiaseelan">
              <organization/>
            </author>
            <author fullname="R. Secchi" initials="R." surname="Secchi">
              <organization/>
            </author>
            <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>
    <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 affilications.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAEhma2MAA6Vb23IbSXJ9r68oc8KhkQ00L6IkkrY2TInSSmtdaJGznPHG
xkSjuwCU1ejG9IUQRkGH/ehP8Jsf/AP2J/gD7H/YL/HJzKru6gZAKWInYmbA
RldVVl5OnswqjMdjVds6M2d67zyPs3VlKz0tSl3Pjb6w06kpTZ6YSj839cqY
XF/VcZ7GZapfFPnMVLUtcvpYl0Wmr5K5WZhqT8WTSWluMWXl3h4nyTh20++p
tEjyeIEl0zKe1uPcVnObxuM6WS7G20aMDw5VEtdmVpTrM23zaaGUXZZnui6b
qj46ODg9OFJxaeIzfX31e7Uqyk+zsmiW+PPF5Tt9g79tPtO/pWfqk1njhfRM
v8lrU+amHl+QFErxyj/HWZFDsrWpVLWIy/rnX5qiNtWZzgu1tGf6D3WRjHRV
lHVpphU+rRf04Y9KxU09L8ozpcdK4x+bY9BPkX4vu+NnsuufCjyZNgvb+64o
Z3Fuf41Jo2f6fBH/Cs3emIm+MuWthQn4La/Z85sr/ruCGKY+08fHB/ralOVa
n98a/Z6/S2wNdV2ZuIZ9+UlpZjz7zbm8UKQQ5/Tk8ODU/d3AkBjzw5W8YBax
zbD1Ko2sqad/N6O/o6RYKJUX5QKy3hpsWH989eL04ODIfXz85OSQPr4ZX/Aw
MWw5TU4eHR5NbHWmyITB8P6L8zUsUdbLrKnoXzfpo0enB+7jk9OjE//0+Mlj
//TxiRfgyZOn/unJ6cnjTkI/w9MnT1jC1+srWuqMN+vC4PV6UtpUX2XFSvO3
HA6v7Ww+fg4HWdm0nmt80G8RAOMLS26TQOWID/iZWCmFs55pOOaJGMmU1lS0
aVlJ64sPb/ThQXR4ePx4//Dk8eHhyVHE/z89GjnHZEeIM/beal4sNdzhsizg
fkUmIfoqrur7pGgdkv4Zi0NeRfp13HvyJtIfDbnH7+Lk5KSniiDEz28LOCot
QVt3AR/s9byZRfrw9GTXhl8Ui2WDbdGHRZPbhLeHlW+tWY30bZFh+MkIURbp
45FeLiP96PB4/OjodGMrTu7fRyRxMamKXGSOyxlFwt60Xp7t7+O/kTFRNsmi
WXG7v4yXpqz2E+wopq1Eyyr6x2gPI1+9vhS/aLd9ztLGpcXUupjql780LC3s
X5mUFXD+5t3FFgTsG/9g/HiX8DDDq6xYp+Gzd2SaPM3MOnz6u0hfxul8bfqb
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
wiCA/w8oXu+dMkUAAA==

-->

</rfc>
