<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent" [
<!ENTITY RFC2119 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2309 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2309.xml">
<!ENTITY RFC2481 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2481.xml">
<!ENTITY RFC3168 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3168.xml">
<!ENTITY RFC3649 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3649.xml">
<!ENTITY RFC3742 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3742.xml">
<!ENTITY RFC3758 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3758.xml">
<!ENTITY RFC4340 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4340.xml">
<!ENTITY RFC4774 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4774.xml">
<!ENTITY RFC5562 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5562.xml">
<!ENTITY RFC5670 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5670.xml">
<!ENTITY RFC5681 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5681.xml">
<!ENTITY RFC5696 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5696.xml">
<!ENTITY RFC6040 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6040.xml">
<!ENTITY RFC6679 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6679.xml">
<!ENTITY RFC6789 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6789.xml">
<!ENTITY RFC7713 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7713.xml">
<!ENTITY RFC7567 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7567.xml">
<!ENTITY RFC8033 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8033.xml">
<!ENTITY RFC8087 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8087.xml">
<!ENTITY RFC8257 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8257.xml">
<!ENTITY RFC8312 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8312.xml">
<!ENTITY RFC8289 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8289.xml">
<!ENTITY RFC8311 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8311.xml">
<!ENTITY RFC5226 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5226.xml">
<!ENTITY RFC8174 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="3"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?>
<rfc number="8511" category="exp" submissionType="IETF" consensus="yes" ipr="trust200902" obsoletes="" updates="" xml:lang="en" version="3">
  <front>
    <title abbrev="ABE">TCP Alternative Backoff with ECN (ABE)</title>
    <seriesInfo name="RFC" value="8511"/>
    <author fullname="Naeem Khademi" initials="N." surname="Khademi">
      <organization>University of Oslo</organization>
      <address>
        <postal>
          <street>PO Box 1080 Blindern</street>
          <code>N-0316</code>
          <city>Oslo</city>
          <country>Norway</country>
        </postal>
        <email>naeemk@ifi.uio.no</email>
      </address>
    </author>
    <author fullname="Michael Welzl" initials="M." surname="Welzl">
      <organization>University of Oslo</organization>
      <address>
        <postal>
          <street>PO Box 1080 Blindern</street>
          <code>N-0316</code>
          <city>Oslo</city>
          <region/>
          <country>Norway</country>
        </postal>
        <email>michawe@ifi.uio.no</email>
      </address>
    </author>
    <author fullname="Grenville Armitage" initials="G." surname="Armitage">
      <organization abbrev="Netflix">Netflix Inc.</organization>
      <address>
        <email>garmitage@netflix.com</email>
      </address>
    </author>
    <author fullname="Godred Fairhurst" initials="G." surname="Fairhurst">
      <organization>University of Aberdeen</organization>
      <address>
        <postal>
          <street>School of Engineering, Fraser Noble Building</street>
          <code>AB24 3UE</code>
          <city>Aberdeen</city>
          <country>United Kingdom</country>
        </postal>
        <email>gorry@erg.abdn.ac.uk</email>
      </address>
    </author>
    <date month="December" year="2018"/>
    <area>Transport</area>
    <workgroup>TCP Maintenance and Minor Extensions</workgroup>
    <keyword>ecn, aqm, congestion control, tcp</keyword>
    <abstract>
      <t>Active Queue Management (AQM) mechanisms allow for burst tolerance
      while enforcing short queues to minimise the time that packets spend
      enqueued at a bottleneck. This can cause noticeable performance
      degradation for TCP connections traversing such a bottleneck, especially
      if there are only a few flows or their bandwidth-delay product (BDP) is large.
      The reception of a Congestion Experienced (CE) Explicit Congestion
      Notification (ECN) mark indicates that
      an AQM mechanism is used at the bottleneck, and the bottleneck
      network queue is therefore likely to be short. Feedback of this signal allows the
      TCP sender-side ECN reaction in congestion avoidance to reduce the
      Congestion Window (cwnd) by a smaller amount than the congestion control
      algorithm's reaction to inferred packet loss. Therefore, this specification
      defines an experimental change to the TCP reaction specified
      in RFC 3168, as permitted by RFC 8311.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="sec-intro" numbered="true" toc="default">
      <name>Introduction</name>
      <t>Explicit Congestion Notification (ECN) <xref target="RFC3168" format="default"/>
      makes it possible for an Active Queue Management (AQM) mechanism to
      signal the presence of incipient congestion without necessarily
      incurring packet loss. This lets the network deliver some packets to an
      application that would have been dropped if the application or transport
      did not support ECN. This packet loss reduction is the most obvious
      benefit of ECN, but it is often relatively modest. Other benefits of
      deploying ECN have been documented in <xref target="RFC8087" format="default"/>.</t>
<dl newline="true">
  <dt>Dweeb</dt>
  <dd>young excitable person who may mature into a Nerd or Geek</dd>
  <dt>Hacker</dt>
  <dd>a clever programmer</dd>
  <dt>Nerd </dt>
  <dd>technically bright but socially inept person</dd>
</dl>
<dl>
  <dt>Dweeb</dt>
  <dd>young excitable person who may mature into a Nerd or Geek</dd>
  <dt>Hacker</dt>
  <dd>a clever programmer</dd>
  <dt>Nerd </dt>
  <dd>technically bright but socially inept person</dd>
</dl>


      <t>The rules for ECN were originally written to be very conservative,
      and they required the congestion control algorithms of ECN-Capable Transport (ECT)
      protocols to treat indications of congestion signalled by ECN exactly
      the same as they would treat an inferred packet loss <xref target="RFC3168" format="default"/>. Research has demonstrated the benefits of
      reducing network delays that are caused by interaction of loss-based TCP
      congestion control and excessive buffering <xref target="BUFFERBLOAT" format="default"/>. This has led to the
      creation of AQM mechanisms like Proportional Integral Controller
      Enhanced (PIE) <xref target="RFC8033" format="default"/> and Controlling Queue
      Delay (CoDel) <xref target="RFC8289" format="default"/>, which prevent bloated queues that are common
      with unmanaged and excessively large buffers deployed across the
      Internet <xref target="BUFFERBLOAT" format="default"/>.</t>
      <t>The AQM mechanisms mentioned above aim to keep a sustained queue
      short while tolerating transient (short-term) packet bursts. However,
      currently used loss-based congestion control mechanisms are not always
      able to effectively utilise a bottleneck link where there are short
      queues. For example, a TCP sender using the Reno congestion control
      needs to be able to store at least an end-to-end bandwidth-delay product
      (BDP) worth of data at the bottleneck buffer if it is to maintain full
      path utilisation in the face of loss- induced reduction of the
      congestion window (cwnd) <xref target="RFC5681" format="default"/>. This amount of
      buffering effectively doubles the amount of data that can be in flight
      and the maximum round-trip time (RTT) experienced by the TCP sender.</t>
      <t>Modern AQM mechanisms can use ECN to signal the early signs of
      impending queue buildup long before a tail-drop queue would be forced to
      resort to dropping packets. It is therefore appropriate for the
      transport protocol congestion control algorithm to have a more measured
      response when it receives an indication with an early warning of
      congestion after the remote endpoint receives an ECN CE-marked packet.
      Recognizing these changes in modern AQM practices, the strict
      requirement that ECN CE signals be treated identically to inferred
      packet loss has been relaxed <xref target="RFC8311" format="default"/>. This
      document therefore defines a new sender-side-only congestion control
      response called "ABE" (Alternative Backoff with ECN). ABE improves
      TCP's average throughput when routers use AQM-controlled buffers that
      allow only for short queues.</t>
    </section>
    <section anchor="sec-def" numbered="true" toc="default">
      <name>Definitions</name>
      <t>
    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
    NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
    "MAY", and "OPTIONAL" in this document are to be interpreted as
    described in BCP 14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> 
    when, and only when, they appear in all capitals, as shown here.
      </t>
    </section>
    <section numbered="true" toc="default">
      <name>Specification</name>
      <t>This specification changes the congestion control algorithm of an
      ECN-Capable TCP transport protocol by changing the TCP-sender response
      to feedback from the TCP receiver that indicates the reception of a
      CE-marked packet, i.e., receipt of a packet with the ECN-Echo flag
      (defined in <xref target="RFC3168" format="default"/>) set, following the process
      defined in <xref target="RFC8311" format="default"/>.</t>
      <t>The TCP-sender response is currently specified in Section 6.1.2 of
      the ECN specification <xref target="RFC3168" format="default"/> and has
      been slightly updated by <relref section="4.1" target="RFC8311"
      displayFormat="of"/> and  <xref section="5" target="RFC8311"
      sectionFormat="of"/> and Section
      6 of <xref target="RFC8311" format="default"/> to read as:</t>
      <ul empty="true" spacing="normal">
        <li>The indication of congestion should be treated just
          as a congestion loss in non-ECN-Capable TCP. That is, the TCP source
          halves the congestion window "cwnd" and reduces the slow start
          threshold "ssthresh", unless otherwise specified by an Experimental
          RFC in the IETF document stream.</li>
      </ul>
      <t>As permitted by RFC 8311, this document specifies a
	sender-side change to TCP where receipt of a packet with the ECN-Echo flag SHOULD
          trigger the TCP source to set the slow start threshold (ssthresh) to
          0.8 times the FlightSize, with a lower bound of 2 * SMSS applied to
          the result (where SMSS stands for Sender Maximum Segment Size)). As in <xref target="RFC5681" format="default"/>, the TCP sender
          also reduces the cwnd value to no more than the new ssthresh value.
          Section 6.1.2 of RFC 3168 provides guidance on setting a cwnd less than
          2 * SMSS.</t>
      <section anchor="sec-rationale-multiplier" numbered="true" toc="default">
        <name>Choice of ABE Multiplier</name>
        <t>ABE decouples the reaction of a TCP sender to inferred packet loss from the indication of ECN-signalled congestion in the congestion avoidance phase. To achieve this, ABE uses a different scaling factor for
        Equation 4 in Section 3.1 of <xref target="RFC5681" format="default"/>. The
        description respectively uses beta_{loss} and beta_{ecn} to refer to
        the multiplicative decrease factors applied in response to inferred
        packet loss, and in response to a receiver indicating ECN-signalled
        congestion. For non-ECN-enabled TCP connections, only beta_{loss}
        applies.</t>
        <t>In other words, in response to inferred packet loss: </t>
        <ul empty="true" spacing="normal">
          <li>ssthresh = max (FlightSize * beta_{loss}, 2 * SMSS)</li>
        </ul>
        <t> and in response to an indication of an ECN-signalled
        congestion: </t>
        <ul empty="true" spacing="normal">
          <li>ssthresh = max (FlightSize * beta_{ecn}, 2 * SMSS)</li>
          <li>and</li>
          <li>cwnd = ssthresh</li>
          <li>(If ssthresh == 2 * SMSS, Section 6.1.2 of RFC 3168 provides
            guidance on setting a cwnd lower than 2 * SMSS.)</li>
          <li/>
        </ul>
        <t>where FlightSize is the amount of outstanding data in the
        network, upper-bounded by the smaller of the sender's cwnd and the
        receiver's advertised window (rwnd) <xref target="RFC5681" format="default"/>.
        The higher the values of beta_{loss} and beta_{ecn}, the less
        aggressive the response of any individual backoff event.</t>
        <t>The appropriate choice for beta_{loss} and beta_{ecn} values is a
        balancing act between path utilisation and draining the bottleneck
        queue.


	More aggressive backoff (smaller beta_*) risks the underutilisation of
        the path, while less-aggressive backoff (larger beta_*) can result in
        slower draining of the bottleneck queue.</t>
        <t>The Internet has already been running with at least two different
        beta_{loss} values for several years: the standard value is 0.5 <xref target="RFC5681" format="default"/>, and the Linux implementation of CUBIC <xref target="RFC8312" format="default"/> has used a multiplier of 0.7 since kernel
        version 2.6.25 released in 2008. ABE does not change the value of
        beta_{loss} used by current TCP implementations.</t>
        <t>The recommendation in this document specifies a value of
        beta_{ecn}=0.8. This recommended beta_{ecn} value is only applicable
        for the standard TCP congestion control <xref target="RFC5681" format="default"/>. The selection of beta_{ecn} enables tuning
        the response of a TCP connection to shallow AQM-marking thresholds.
        beta_{loss} characterizes the response of a congestion control
        algorithm to packet loss, i.e., exhaustion of buffers (of unknown
        depth). Different values for beta_{loss} have been suggested for TCP
        congestion control algorithms. Consequently, beta_{ecn} is likely to
        be an algorithm-specific parameter rather than a constant multiple of
        the algorithm's existing beta_{loss}.</t>
        <t>A range of tests (Section IV of <xref target="ABE2017" format="default"/>) with
        NewReno and CUBIC over CoDel and PIE in lightly multiplexed scenarios
        have explored this choice of parameter. The results of these tests
        indicate that CUBIC connections benefit from beta_{ecn} of 0.85 (cf.
        beta_{loss} = 0.7), and NewReno connections see improvements with
        beta_{ecn} in the range 0.7 to 0.85 (cf. beta_{loss} = 0.5).</t>
      </section>
    </section>
    <section anchor="sec-rationale" numbered="true" toc="default">
      <name>Discussion</name>
      <t>Much of the technical background for ABE can be found in <xref target="ABE2017" format="default"/>, which uses a mix of 
      experiments, theory, and simulations with NewReno <xref target="RFC5681" format="default"/> and CUBIC <xref target="RFC8312" format="default"/> to
      evaluate its performance. ABE was shown to present significant performance gains in
      lightly-multiplexed (few concurrent flows) scenarios, without losing the
      delay-reduction benefits of deploying CoDel or PIE.      The
      performance improvement is achieved when reacting to ECN-Echo in
      congestion avoidance (when ssthresh &gt; cwnd) by multiplying cwnd and
      ssthresh with a value in the range [0.7,0.85].


      Applying ABE when cwnd 
      is smaller than or equal to ssthresh is not currently recommended, but its use in that scenario may benefit from
      additional attention, experimentation, and specification.</t>
      <section anchor="sec-rationale-why" numbered="true" toc="default">
        <name>Rationale for Using ECN to Vary the Degree of Backoff</name>
        <t>AQM mechanisms such as CoDel <xref target="RFC8289" format="default"/> and PIE
        <xref target="RFC8033" format="default"/> set a delay target in routers and use
        congestion notifications to constrain the queuing delays experienced
        by packets rather than in response to impending or actual bottleneck
        buffer exhaustion. With current default delay targets, CoDel and PIE
        both effectively emulate a bottleneck with a short queue (Section II of
        <xref target="ABE2017" format="default"/>) while also allowing short traffic
        bursts into the queue. This provides acceptable performance for TCP
        connections over a path with a low BDP, or in highly multiplexed
        scenarios (many concurrent transport flows). However, in a
        lightly multiplexed case over a path with a large BDP, conventional
        TCP backoff leads to gaps in packet transmission and underutilisation
        of the path.</t>
        <t>Instead of discarding packets, an AQM mechanism is allowed to mark
        ECN-Capable packets with an ECN CE mark. The reception of CE-mark
        feedback not only indicates congestion on the network path, it also
        indicates that an AQM mechanism exists at the bottleneck along the
        path. Therefore, the CE mark likely came from a bottleneck with a
        controlled short queue. Reacting differently to an ECN-signalled
        congestion than to an inferred packet loss can then yield the benefit
        of a reduced backoff when queues are short. Using ECN can also be
        advantageous for several other reasons <xref target="RFC8087" format="default"/>.</t>
        <t>The idea of reacting differently to inferred packet loss and
        detection of an ECN-signalled congestion predates this specification,
	e.g., previous research proposed using ECN CE-marked feedback
        to modify TCP congestion control behaviour via a larger multiplicative
        decrease factor in conjunction with a smaller additive increase factor
        <xref target="ICC2002" format="default"/>. The goal of this former work was to
        operate across AQM bottlenecks (using Random Early Detection (RED)) that
        were not necessarily configured to emulate a short queue. (The current
        usage of RED as an Internet AQM method is limited <xref target="RFC7567" format="default"/>.)</t>
      </section>
      <section anchor="sec-rationale-scope" numbered="true" toc="default">
        <name>An RTT-Based Response to Indicated Congestion</name>
        <t>This specification applies to the use of ECN feedback as defined in
        <xref target="RFC3168" format="default"/>, which specifies a response to
        indicated congestion that is no more frequent than once per path
	round-trip time. Since ABE responds to indicated congestion once per
	RTT, it does not respond to any further loss within the same RTT
        because an ABE sender has already reduced the congestion window. If
        congestion persists after such reduction, ABE continues to reduce the
        congestion window in each consecutive RTT. This consecutive reduction
        can protect the network against long-standing unfairness in the case
        of AQM algorithms that do not keep a small average queue length. The
        mechanism does not rely on Accurate ECN <xref target="ACC-ECN-FEEDBACK" format="default"/>.</t>
        <t>In contrast, transport protocol mechanisms can also be designed to
        utilise more frequent and detailed ECN feedback (e.g., Accurate ECN
        <xref target="ACC-ECN-FEEDBACK" format="default"/>), which then permit
        a congestion control response that adjusts the sending rate more
        frequently. Data Center TCP (DCTCP) <xref target="RFC8257" format="default"/> is
        an example of this approach.</t>
      </section>
    </section>
    <section numbered="true" toc="default">
      <name>ABE Deployment Requirements</name>
      <t>This update is a sender-side-only change. Like other changes to
      congestion control algorithms, it does not require any change to the TCP
      receiver or to network devices. It does not require any ABE-specific
      changes in routers or the use of Accurate ECN feedback <xref target="ACC-ECN-FEEDBACK" format="default"/> by a receiver.</t>
      <t>If the method is only deployed by some senders, and not by others,
      the senders using it can gain some advantage, possibly at
      the expense of other flows that do not use this updated method. Because this advantage applies only to ECN-marked packets and not to
 packet-loss indications, an ECN-Capable bottleneck will still fall
 back to dropping packets if a TCP sender using ABE is too
 aggressive. The result is no different than if the TCP sender were
 using traditional loss-based congestion control.</t>
      <t>When used with bottlenecks that do not support ECN marking, the
      specification does not modify the transport protocol.</t>
    </section>
    <section numbered="true" toc="default">
      <name>ABE Experiment Goals</name>
      <t><xref target="RFC3168" format="default"/> states that the congestion control
      response following an indication of ECN-signalled congestion is the same
      as the response to a dropped packet. <xref target="RFC8311" format="default"/>
      updates this specification to allow systems to provide a different
      behaviour when they experience ECN-signalled congestion rather than
      packet loss.  The present
   specification defines such an experiment and is an Experimental RFC.
   We expect to propose it as a Standards-Track document in the future.</t>
      <t>The purpose of the Internet experiment is to collect experience with
      the deployment of ABE and confirm acceptable safety in deployed networks
      that use this update to TCP congestion control. To evaluate ABE, this
      experiment requires support in AQM routers for the ECN-marking of
      packets carrying the ECN-Capable Transport codepoint ECT(0) <xref target="RFC3168" format="default"/>.</t>
      <t>The result of this Internet experiment ought to include an
      investigation of the implications of experiencing an ECN-CE mark
      followed by loss within the same RTT. At the end of the experiment, this
      will be reported to the TCPM Working Group or the IESG.</t>
      <t>ABE is implemented as a patch for Linux and
            FreeBSD. This is meant for research and experimentation and is available for
            download at
            &lt;https://heim.ifi.uio.no/michawe/research/abe/&gt;. This
            code was used to produce the test results that are
            reported in <xref target="ABE2017" format="default"/>. The FreeBSD
            code was committed to the mainline kernel on March 19,
            2018 <xref target="ABE-REVISION" format="default"/>.</t>
    </section>
    <section anchor="IANA" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
    <section anchor="Security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>The described method is a sender-side-only transport change, and it does
      not change the protocol messages exchanged. Therefore, the security considerations
      for ECN <xref target="RFC3168" format="default"/> still apply.</t>
      <t>This is a change to TCP congestion control with ECN that will
      typically lead to a change in the capacity achieved when flows share a
      network bottleneck. This could result in some flows receiving more than
      their fair share of capacity. Similar unfairness in the way that
      capacity is shared is also exhibited by other congestion control
      mechanisms that have been in use in the Internet for many years (e.g.,
      CUBIC <xref target="RFC8312" format="default"/>). Unfairness may also be a result
      of other factors, including the round-trip time experienced by a flow.
      ABE applies only when ECN-marked packets are received, not when packets
      are lost. Therefore, use of ABE cannot lead to congestion collapse.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization/>
            </author>
            <date year="1997" month="March"/>
            <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>
        </reference>
        <reference anchor="RFC3168" target="https://www.rfc-editor.org/info/rfc3168" xml:base="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3168.xml">
          <front>
            <title>The Addition of Explicit Congestion Notification (ECN) to IP</title>
            <seriesInfo name="DOI" value="10.17487/RFC3168"/>
            <seriesInfo name="RFC" value="3168"/>
            <author initials="K." surname="Ramakrishnan" fullname="K. Ramakrishnan">
              <organization/>
            </author>
            <author initials="S." surname="Floyd" fullname="S. Floyd">
              <organization/>
            </author>
            <author initials="D." surname="Black" fullname="D. Black">
              <organization/>
            </author>
            <date year="2001" month="September"/>
            <abstract>
              <t>This memo specifies the incorporation of ECN (Explicit Congestion Notification) to TCP and IP, including ECN's use of two bits in the IP header.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC5681" target="https://www.rfc-editor.org/info/rfc5681" xml:base="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5681.xml">
          <front>
            <title>TCP Congestion Control</title>
            <seriesInfo name="DOI" value="10.17487/RFC5681"/>
            <seriesInfo name="RFC" value="5681"/>
            <author initials="M." surname="Allman" fullname="M. Allman">
              <organization/>
            </author>
            <author initials="V." surname="Paxson" fullname="V. Paxson">
              <organization/>
            </author>
            <author initials="E." surname="Blanton" fullname="E. Blanton">
              <organization/>
            </author>
            <date year="2009" month="September"/>
            <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>
        </reference>
        <reference anchor="RFC7567" target="https://www.rfc-editor.org/info/rfc7567" xml:base="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7567.xml">
          <front>
            <title>IETF Recommendations Regarding Active Queue Management</title>
            <seriesInfo name="DOI" value="10.17487/RFC7567"/>
            <seriesInfo name="RFC" value="7567"/>
            <seriesInfo name="BCP" value="197"/>
            <author initials="F." surname="Baker" fullname="F. Baker" role="editor">
              <organization/>
            </author>
            <author initials="G." surname="Fairhurst" fullname="G. Fairhurst" role="editor">
              <organization/>
            </author>
            <date year="2015" month="July"/>
            <abstract>
              <t>This memo presents recommendations to the Internet community concerning measures to improve and preserve Internet performance.  It presents a strong recommendation for testing, standardization, and widespread deployment of active queue management (AQM) in network devices to improve the performance of today's Internet.  It also urges a concerted effort of research, measurement, and ultimate deployment of AQM mechanisms to protect the Internet from flows that are not sufficiently responsive to congestion notification.</t>
              <t>Based on 15 years of experience and new research, this document replaces the recommendations of RFC 2309.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8257" target="https://www.rfc-editor.org/info/rfc8257" xml:base="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8257.xml">
          <front>
            <title>Data Center TCP (DCTCP): TCP Congestion Control for Data Centers</title>
            <seriesInfo name="DOI" value="10.17487/RFC8257"/>
            <seriesInfo name="RFC" value="8257"/>
            <author initials="S." surname="Bensley" fullname="S. Bensley">
              <organization/>
            </author>
            <author initials="D." surname="Thaler" fullname="D. Thaler">
              <organization/>
            </author>
            <author initials="P." surname="Balasubramanian" fullname="P. Balasubramanian">
              <organization/>
            </author>
            <author initials="L." surname="Eggert" fullname="L. Eggert">
              <organization/>
            </author>
            <author initials="G." surname="Judd" fullname="G. Judd">
              <organization/>
            </author>
            <date year="2017" month="October"/>
            <abstract>
              <t>This Informational RFC describes Data Center TCP (DCTCP): a TCP congestion control scheme for data-center traffic.  DCTCP extends the Explicit Congestion Notification (ECN) processing to estimate the fraction of bytes that encounter congestion rather than simply detecting that some congestion has occurred.  DCTCP then scales the TCP congestion window based on this estimate.  This method achieves high-burst tolerance, low latency, and high throughput with shallow- buffered switches.  This memo also discusses deployment issues related to the coexistence of DCTCP and conventional TCP, discusses the lack of a negotiating mechanism between sender and receiver, and presents some possible mitigations.  This memo documents DCTCP as currently implemented by several major operating systems.  DCTCP, as described in this specification, is applicable to deployments in controlled environments like data centers, but it must not be deployed over the public Internet without additional measures.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8311" target="https://www.rfc-editor.org/info/rfc8311" xml:base="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8311.xml">
          <front>
            <title>Relaxing Restrictions on Explicit Congestion Notification (ECN) Experimentation</title>
            <seriesInfo name="DOI" value="10.17487/RFC8311"/>
            <seriesInfo name="RFC" value="8311"/>
            <author initials="D." surname="Black" fullname="D. Black">
              <organization/>
            </author>
            <date year="2018" month="January"/>
            <abstract>
              <t>This memo updates RFC 3168, which specifies Explicit Congestion Notification (ECN) as an alternative to packet drops for indicating network congestion to endpoints.  It relaxes restrictions in RFC 3168 that hinder experimentation towards benefits beyond just removal of loss.  This memo summarizes the anticipated areas of experimentation and updates RFC 3168 to enable experimentation in these areas.  An Experimental RFC in the IETF document stream is required to take advantage of any of these enabling updates.  In addition, this memo makes related updates to the ECN specifications for RTP in RFC 6679 and for the Datagram Congestion Control Protocol (DCCP) in RFCs 4341, 4342, and 5622.  This memo also records the conclusion of the ECN nonce experiment in RFC 3540 and provides the rationale for reclassification of RFC 3540 from Experimental to Historic; this reclassification enables new experimental use of the ECT(1) codepoint.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="BCP" value="14"/>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization/>
            </author>
            <date year="2017" month="May"/>
            <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>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC8312" target="https://www.rfc-editor.org/info/rfc8312" xml:base="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8312.xml">
          <front>
            <title>CUBIC for Fast Long-Distance Networks</title>
            <seriesInfo name="DOI" value="10.17487/RFC8312"/>
            <seriesInfo name="RFC" value="8312"/>
            <author initials="I." surname="Rhee" fullname="I. Rhee">
              <organization/>
            </author>
            <author initials="L." surname="Xu" fullname="L. Xu">
              <organization/>
            </author>
            <author initials="S." surname="Ha" fullname="S. Ha">
              <organization/>
            </author>
            <author initials="A." surname="Zimmermann" fullname="A. Zimmermann">
              <organization/>
            </author>
            <author initials="L." surname="Eggert" fullname="L. Eggert">
              <organization/>
            </author>
            <author initials="R." surname="Scheffenegger" fullname="R. Scheffenegger">
              <organization/>
            </author>
            <date year="2018" month="February"/>
            <abstract>
              <t>CUBIC is an extension to the current TCP standards.  It differs from the current TCP standards only in the congestion control algorithm on the sender side.  In particular, it uses a cubic function instead of a linear window increase function of the current TCP standards to improve scalability and stability under fast and long-distance networks.  CUBIC and its predecessor algorithm have been adopted as defaults by Linux and have been used for many years.  This document provides a specification of CUBIC to enable third-party implementations and to solicit community feedback through experimentation on the performance of CUBIC.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8087" target="https://www.rfc-editor.org/info/rfc8087" xml:base="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8087.xml">
          <front>
            <title>The Benefits of Using Explicit Congestion Notification (ECN)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8087"/>
            <seriesInfo name="RFC" value="8087"/>
            <author initials="G." surname="Fairhurst" fullname="G. Fairhurst">
              <organization/>
            </author>
            <author initials="M." surname="Welzl" fullname="M. Welzl">
              <organization/>
            </author>
            <date year="2017" month="March"/>
            <abstract>
              <t>The goal of this document is to describe the potential benefits of applications using a transport that enables Explicit Congestion Notification (ECN).  The document outlines the principal gains in terms of increased throughput, reduced delay, and other benefits when ECN is used over a network path that includes equipment that supports Congestion Experienced (CE) marking.  It also discusses challenges for successful deployment of ECN.  It does not propose new algorithms to use ECN nor does it describe the details of implementation of ECN in endpoint devices (Internet hosts), routers, or other network devices.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8033" target="https://www.rfc-editor.org/info/rfc8033" xml:base="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8033.xml">
          <front>
            <title>Proportional Integral Controller Enhanced (PIE): A Lightweight Control Scheme to Address the Bufferbloat Problem</title>
            <seriesInfo name="DOI" value="10.17487/RFC8033"/>
            <seriesInfo name="RFC" value="8033"/>
            <author initials="R." surname="Pan" fullname="R. Pan">
              <organization/>
            </author>
            <author initials="P." surname="Natarajan" fullname="P. Natarajan">
              <organization/>
            </author>
            <author initials="F." surname="Baker" fullname="F. Baker">
              <organization/>
            </author>
            <author initials="G." surname="White" fullname="G. White">
              <organization/>
            </author>
            <date year="2017" month="February"/>
            <abstract>
              <t>Bufferbloat is a phenomenon in which excess buffers in the network cause high latency and latency variation.  As more and more interactive applications (e.g., voice over IP, real-time video streaming, and financial transactions) run in the Internet, high latency and latency variation degrade application performance.  There is a pressing need to design intelligent queue management schemes that can control latency and latency variation, and hence provide desirable quality of service to users.</t>
              <t>This document presents a lightweight active queue management design called "PIE" (Proportional Integral controller Enhanced) that can effectively control the average queuing latency to a target value. Simulation results, theoretical analysis, and Linux testbed results have shown that PIE can ensure low latency and achieve high link utilization under various congestion situations.  The design does not require per-packet timestamps, so it incurs very little overhead and is simple enough to implement in both hardware and software.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8289" target="https://www.rfc-editor.org/info/rfc8289" xml:base="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8289.xml">
          <front>
            <title>Controlled Delay Active Queue Management</title>
            <seriesInfo name="DOI" value="10.17487/RFC8289"/>
            <seriesInfo name="RFC" value="8289"/>
            <author initials="K." surname="Nichols" fullname="K. Nichols">
              <organization/>
            </author>
            <author initials="V." surname="Jacobson" fullname="V. Jacobson">
              <organization/>
            </author>
            <author initials="A." surname="McGregor" fullname="A. McGregor" role="editor">
              <organization/>
            </author>
            <author initials="J." surname="Iyengar" fullname="J. Iyengar" role="editor">
              <organization/>
            </author>
            <date year="2018" month="January"/>
            <abstract>
              <t>This document describes CoDel (Controlled Delay) -- a general framework that controls bufferbloat-generated excess delay in modern networking environments.  CoDel consists of an estimator, a setpoint, and a control loop.  It requires no configuration in normal Internet deployments.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="ABE2017">
          <front>
            <title>Alternative backoff: Achieving low latency and high
          throughput with ECN and AQM</title>
            <seriesInfo name="DOI" value="10.23919/IFIPNetworking.2017.8264863"/>
            <seriesInfo name="IFIP Networking Conference and Workshops" value="Stockholm, Sweden"/>
            <author fullname="Naeem Khademi" initials="N." surname="Khademi"/>
            <author fullname="Grenville Armitage" initials="G." surname="Armitage"/>
            <author fullname="Michael Welzl" initials="M." surname="Welzl"/>
            <author fullname="Sebastian Zander" initials="S." surname="Zander"/>
            <author fullname="Gorry Fairhurst" initials="G." surname="Fairhurst"/>
            <author fullname="David Ros" initials="D." surname="Ros"/>
            <date month="June" year="2017"/>
          </front>
        </reference>
        <reference anchor="ABE-REVISION" target="https://svnweb.freebsd.org/base?view=revision&amp;revision=331214">
          <front>
            <title>ABE patch review in FreeBSD</title>
            <seriesInfo name="Revision" value="331214"/>
            <author fullname="Lawrence Stewart" initials="L." surname="Stewart"/>
            <date month="March" year="2018"/>
          </front>
        </reference>
        <reference anchor="BUFFERBLOAT" target="https://queue.acm.org/detail.cfm?id=2071893">
          <front>
            <title>Bufferbloat: Dark Buffers in the Internet
            </title>
            <seriesInfo name="DOI" value="10.1145/2063166.2071893"/>
            <seriesInfo name="ACM Queue," value="Volume 9, Issue 11"/>
            <author fullname="Jim Gettys" initials="J." surname="Gettys"/>
            <author fullname="Kathleen Nichols" initials="K." surname="Nichols"/>
            <date month="November" year="2011"/>
          </front>
        </reference>
        <reference anchor="ICC2002" target="http://dx.doi.org/10.1109/ICC.2002.997262">
          <front>
            <title>TCP increase/decrease behavior with explicit congestion
          notification (ECN)</title>
            <seriesInfo name="DOI" value="10.1109/ICC.2002.997262"/>
            <seriesInfo name="Cat." value="No.02CH37333"/>
            <seriesInfo name="ICC" value="2002"/>
            <seriesInfo name="2002 IEEE International Conference on Communications" value="Conference Proceedings"/>
            <author fullname="Minseok Kwon" initials="M." surname="Kwon"/>
            <author fullname="S. Fahmy" initials="S." surname="Fahmy"/>
            <date month="May" year="2002"/>
          </front>
        </reference>
        <!-- draft-ietf-tcpm-accurate-ecn-07: I-D Exists -->
        <reference anchor="ACC-ECN-FEEDBACK">
          <front>
            <title>More Accurate ECN Feedback in TCP</title>
            <seriesInfo name="Work in Progress, " value="draft-ietf-tcpm-accurate-ecn-07"/>
            <author initials="B" surname="Briscoe" fullname="Bob Briscoe">
              <organization/>
            </author>
            <author initials="M" surname="Kuehlewind" fullname="Mirja Kuehlewind">
              <organization/>
            </author>
            <author initials="R" surname="Scheffenegger" fullname="Richard Scheffenegger">
              <organization/>
            </author>
            <date month="July" day="2" year="2018"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="Acknowledgements" numbered="false" toc="default">
      <name>Acknowledgements</name>
      <t>Authors N. Khademi, M. Welzl, and G. Fairhurst were
      partly funded by the
      European Community under its Seventh Framework Programme through the
      Reducing Internet Transport Latency (RITE) project (ICT-317700). The
      views expressed are solely those of the authors.</t>
      <t>Author G. Armitage performed most of his work on this document while
      employed by Swinburne University of Technology, Melbourne,
      Australia.</t>
      <t>The authors would like to thank Stuart Cheshire for many suggestions
      when revising this document. They would also like to thank the following people for their
      contributions to <xref target="ABE2017" format="default"/>: Chamil Kulatunga, David
      Ros, Stein Gjessing, and Sebastian Zander. Thanks also to (in alphabetical
      order) David Black, Roland Bless, Bob Briscoe, Markku Kojo, John Leslie,
      Lawrence Stewart, and the TCPM Working Group for providing
      valuable feedback on this document.</t>
      <t>Finally, the authors would like to thank everyone who provided
      feedback on the congestion control behaviour specified in this document
      that was received from the IRTF Internet Congestion Control Research Group
      (ICCRG).</t>
    </section>
  </back>
</rfc>
