<?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.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-nishida-tcpm-standard-cc-analysis-00" 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-00"/>
    <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="October" day="19"/>
    <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>
    <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="3" month="October" 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-10"/>
        </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>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
