<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
 which is available here: http://xml2rfc.tools.ietf.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
There has to be one entity for each item to be referenced.
An alternate method (rfc include) is described in the references. -->
<!-- http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml-->
<!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">
<!ENTITY I-D.ietf-tcpm-accurate-ecn SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-tcpm-accurate-ecn-06.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs),
 please see http://xml2rfc.tools.ietf.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
 (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="3"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space
 (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?>
<?rfc ???="???"?>
<rfc category="exp" docName="draft-ietf-tcpm-alternativebackoff-ecn-10"
     ipr="trust200902">
  <!--	noModificationTrust200902 noDerivativesTrust200902 pre5378Trust200902">-->

  <!-- updates="6298"> -->

  <!-- ipr="full3978"> -->

  <!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN"
     they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the
         full title is longer than 39 characters -->

    <!-- <title abbrev="Abbreviated Title">Coupled congestion control</title> -->

    <title abbrev="ABE">TCP Alternative Backoff with ECN (ABE)</title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Naeem Khademi" initials="N." surname="Khademi">
      <organization>University of Oslo</organization>

      <address>
        <postal>
          <street>PO Box 1080 Blindern</street>

          <!-- Reorder these if your country does things differently -->

          <code>N-0316</code>

          <city>Oslo</city>

          <region></region>

          <country>Norway</country>
        </postal>

        <email>naeemk@ifi.uio.no</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Michael Welzl" initials="M." surname="Welzl">
      <organization>University of Oslo</organization>

      <address>
        <postal>
          <street>PO Box 1080 Blindern</street>

          <!-- Reorder these if your country does things differently -->

          <code>N-0316</code>

          <city>Oslo</city>

          <region></region>

          <country>Norway</country>
        </postal>

        <email>michawe@ifi.uio.no</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Grenville Armitage" initials="G." surname="Armitage">
      <organization abbrev="Netflix">Netflix Inc.</organization>

      <address>
        <email>garmitage@netflix.com</email>

        <!-- uri and facsimile elements may also be added -->
      </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>

          <!-- Reorder these if your country does things differently -->

          <code>AB24 3UE</code>

          <city>Aberdeen</city>

          <region></region>

          <country>UK</country>
        </postal>

        <email>gorry@erg.abdn.ac.uk</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <date day="31" month="August" year="2018" />

    <!-- Meta-data Declarations -->

    <area>Transport</area>

    <workgroup></workgroup>

    <!-- WG name at the upperleft corner of the doc,
         IETF is fine for individual submissions.
         If this element is not present, the default is "Network Working Group",
         which is used by the RFC Editor as a nod to the history of the IETF. -->

    <keyword>ecn, aqm, congestion control, tcp</keyword>

    <!-- Keywords will be incorporated into HTML output
         files in a meta tag but they have no effect on text or nroff
         output. If you submit your draft to the RFC Editor, the
         keywords will be used for the search engine. -->

    <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 is large.
      The reception of a Congestion Experienced (CE) ECN mark indicates that
      an AQM mechanism is used at the bottleneck, and therefore the bottleneck
      network queue is 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. This specification
      therefore defines an experimental change to the TCP reaction specified
      in RFC3168, as permitted by RFC 8311.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="sec-intro" title="Introduction">
      <t>Explicit Congestion Notification (ECN) <xref target="RFC3168"></xref>
      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 RFC8087 <xref
      target="RFC8087"></xref>.</t>

      <t>The rules for ECN were originally written to be very conservative,
      and required the congestion control algorithms of ECN-Capable transport
      protocols to treat indications of congestion signalled by ECN exactly
      the same as they would treat an inferred packet loss <xref
      target="RFC3168"></xref>. 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"></xref>. <!-- There are two main approaches to reduce such delay: (1) to use a congestion control
      mechanism that reacts to the changes in end-to-end delay (i.e. delay-based)
      instead of or in addition to loss or ECN signal (2) or to use AQM mechanisms like PIE <xref
      target="RFC8033"></xref> and CoDel <xref target="CODEL2012"></xref>
      <xref target="RFC8289"></xref>, which avoid causing bloated queues
      that are common with a simple tail-drop behaviour (also known as a
      First-In First-Out, FIFO, queue). The delay-based approach suffers from poor performance when competing with flows using loss-based TCP congestion control mechanisms
      and is out of scope of this document.</t> -->This has led to the
      creation of AQM mechanisms like PIE <xref target="RFC8033"></xref> and
      CoDel <xref target="CODEL2012"></xref><xref target="RFC8289"></xref>,
      which prevent bloated queues that are common with unmanaged and
      excessively large buffers deployed across the Internet <xref
      target="BUFFERBLOAT"></xref>.</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"></xref>, which effectively doubles
      the amount of data that can be in flight, the maximum round-trip time
      (RTT) experience, and the path's effective RTT using the network
      path.</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 have been relaxed <xref target="RFC8311"></xref>. 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" title="Definitions">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119">RFC 2119</xref><xref target="RFC8174"></xref> .</t>

      <!--
         <t><list style="hanging" hangIndent="6">
         <t hangText="Wha'ever:">
         <vspace />
         Wha'ever is short for Whatever.</t>
         </list></t>
         -->
    </section>

    <section title="Specification">
      <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 reception of a
      CE-marked packet, i.e., receipt of a packet with the ECN-Echo flag
      (defined in <xref target="RFC3168"></xref>) set, following the process
      defined in <xref target="RFC8311"></xref>.</t>

      <t>The TCP sender response is currently specified in section 6.1.2 of
      the ECN specification <xref target="RFC3168"></xref>, updated by <xref
      target="RFC8311"></xref>:</t>

      <t><list style="hanging">
          <t hangText="">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.</t>
        </list>Following publication of RFC 8311, this document specifies a
      sender-side change to TCP:</t>

      <t><list style="hanging">
          <t hangText="">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. As in <xref target="RFC5681"></xref>, the TCP sender
          also reduces the cwnd value to no more than the new ssthresh value.
          RFC 3168 section 6.1.2 provides guidance on setting a cwnd less than
          2 * SMSS.</t>
        </list></t>

      <section anchor="sec-rationale-multiplier"
               title="Choice of ABE Multiplier">
        <t>ABE decouples the reaction of a TCP sender to inferred packet loss
        and indication of ECN-signalled congestion in the congestion avoidance
        phase. To achieve this, ABE uses a different scaling factor in
        Equation 4 in Section 3.1 of <xref target="RFC5681"></xref>. 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: <list>
            <t>ssthresh = max (FlightSize * beta_{loss}, 2 * SMSS)</t>
          </list> and in response to an indication of an ECN-signalled
        congestion: <list>
            <t>ssthresh = max (FlightSize * beta_{ecn}, 2 * SMSS)</t>

            <t>and</t>

            <t>cwnd = ssthresh</t>

            <t>(If ssthresh == 2 * SMSS, RFC 3168 section 6.1.2 provides
            guidance on setting a cwnd lower than 2 * SMSS.)</t>

            <t></t>
          </list>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"></xref>.
        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 underutilising
        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"></xref>, and the Linux implementation of CUBIC <xref
        target="RFC8312"></xref> 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"></xref>. 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, <xref target="ABE2017"></xref>) 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" title="Discussion">
      <t>Much of the technical background to ABE can be found in a research
      paper <xref target="ABE2017"></xref>. This paper used a mix of
      experiments, theory and simulations with NewReno <xref
      target="RFC5681"></xref> and CUBIC <xref target="RFC8312"></xref> to
      evaluate the technique. The technique 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". <!-- <xref target="RFC8289"></xref>
                                                 <xref target="RFC8033"/>.-->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
      &lt;= ssthresh is not currently recommended, but may benefit from
      additional attention, experimentation and specification.</t>

      <section anchor="sec-rationale-why"
               title="Why Use ECN to Vary the Degree of Backoff?">
        <t>AQM mechanisms such as CoDel <xref target="RFC8289"></xref> and PIE
        <xref target="RFC8033"></xref> 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,
        <xref target="ABE2017"></xref>) 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 under-utilisation
        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 a 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, and hence 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 back-off when queues are short. Using ECN can also be
        advantageous for several other reasons <xref
        target="RFC8087"></xref>.</t>

        <t>The idea of reacting differently to inferred packet loss and
        detection of an ECN-signalled congestion pre-dates this specification.
        For example, 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"></xref>. 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"></xref>).</t>
      </section>

      <section anchor="sec-rationale-scope"
               title="An RTT-based response to indicated congestion">
        <t>This specification applies to the use of ECN feedback as defined in
        <xref target="RFC3168"></xref>, which specifies a response to
        indicated congestion that is no more frequent that once per path round
        trip time. Since ABE responds to indicated congestion once per RTT, it
        therefore 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="I-D.ietf-tcpm-accurate-ecn"></xref>).</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="I-D.ietf-tcpm-accurate-ecn"></xref>), which then permit
        a congestion control response that adjusts the sending rate more
        frequently. Datacenter TCP (DCTCP) <xref target="RFC8257"></xref> is
        an example of this approach.</t>
      </section>
    </section>

    <section title="ABE Deployment Requirements">
      <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="I-D.ietf-tcpm-accurate-ecn"></xref> by a receiver.</t>

      <t>If the method is only deployed by some senders, and not by others,
      the senders that use this method 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 an TCP sender using ABE is too aggressive, and the result is
      no different than if the TCP sender was 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 title="ABE Experiment Goals">
      <t><xref target="RFC3168"></xref> 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"></xref>
      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
      has thus been assigned an Experimental status before being proposed as a
      Standards-Track update.</t>

      <t>The purpose of the Internet experiment is to collect experience with
      deployment of ABE, and confirm acceptable safety in deployed networks
      that use this update to TCP congestion control. To evaluate ABE, this
      experiment therefore requires support in AQM routers for ECN-marking of
      packets carrying the ECN-Capable Transport, ECT(0), codepoint <xref
      target="RFC3168"></xref>.</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 WG or the IESG.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>Authors N. Khademi, M. Welzl and G. Fairhurst were part-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 the draft, and the following people for their
      contributions to <xref target="ABE2017"></xref>: Chamil Kulatunga, David
      Ros, Stein Gjessing, Sebastian Zander. Thanks also to (in alphabetical
      order) Roland Bless, Bob Briscoe, David Black, Markku Kojo, John Leslie,
      Lawrence Stewart, Dave Taht and the TCPM Working Group for providing
      valuable feedback on this document.</t>

      <t>The authors would finally like to thank everyone who provided
      feedback on the congestion control behaviour specified in this update
      received from the IRTF Internet Congestion Control Research Group
      (ICCRG).</t>
    </section>

    <!-- Possibly a 'Contributors' section ... -->

    <section anchor="IANA" title="IANA Considerations">
      <t>XX RFC ED - PLEASE REMOVE THIS SECTION XXX</t>

      <t>This document includes no request to IANA.</t>
    </section>

    <section anchor="Implementation" title="Implementation Status">
      <t>ABE is implemented as a patch for Linux and FreeBSD. This is meant
      for research and available for download from
      http://heim.ifi.uio.no/michawe/research/abe/. This code was used to
      produce the test results that are reported in <xref
      target="ABE2017"></xref>. The FreeBSD code has been committed to the
      mainline kernel on March 19, 2018 <xref
      target="ABE-FreeBSD"></xref>.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>The described method is a sender-side only transport change, and does
      not change the protocol messages exchanged. The security considerations
      for ECN <xref target="RFC3168"></xref> therefore 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"></xref>). 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, hence use of ABE cannot lead to congestion collapse.</t>
    </section>

    <section title="Revision Information">
      <t>XX RFC ED - PLEASE REMOVE THIS SECTION XXX</t>

      <t>-10. Incorported changes following the Gen-ART review by Russ
      Housley. Correction to URL.</t>

      <t>-09. Changed to "Following publication of RFC 8311, this document
      specifies a sender-side change to TCP:"</t>

      <t>-08. Addressed comments from AD review on the document structure, and
      relationship to existing RFCs.</t>

      <t>-07. Addressed comments following WGLC.</t>

      <t><list style="symbols">
          <t>Updated Reference citations.</t>

          <t>Removed paragraph containing a wrong statement related to timeout
          in section 4.1.</t>

          <t>Discuss what happens when cwnd &lt;= ssthresh.</t>

          <t>Added text on Concern about lower bound of 2*SMSS.</t>
        </list>-06. Addressed Michael Scharf's comments.</t>

      <t>-05. Refined the description of the experiment based on feedback at
      IETF-100. Incorporated comments from David Black.</t>

      <t>-04. Incorporates review comments from Lawrence Stewart and the
      remaining comments from Roland Bless. References are updated.</t>

      <t>-03. Several review comments from Roland Bless are addressed.
      Consistent terminology and equations. Clarification on the scope of
      recommended beta_{ecn} value.</t>

      <t>-02. Corrected the equations in <xref
      target="sec-rationale-multiplier"></xref>. Updated the affiliations.
      Lower bound for cwnd is defined. A recommendation for window-based
      transport protocols is changed to cover all transport protocols that
      implement a congestion control reduction to an ECN congestion signal.
      Added text about ABE's FreeBSD mainline kernel status including a
      reference to the FreeBSD code review page. References are updated.</t>

      <t>-01. Text improved, mainly incorporating comments from Stuart
      Cheshire. The reference to a technical report has been updated to a
      published version of the tests <xref target="ABE2017"></xref>. Used "AQM
      Mechanism" throughout in place of other alternatives, and more
      consistent use of technical language and clarification on the intended
      purpose of the experiments required by EXP status. There was no change
      to the technical content.</t>

      <t>-00. draft-ietf-tcpm-alternativebackoff-ecn-00 replaces
      draft-khademi-tcpm-alternativebackoff-ecn-01. Text describing the nature
      of the experiment was added.</t>

      <t>Individual draft -01. This I-D now refers to
      draft-black-tsvwg-ecn-experimentation-02, which replaces
      draft-khademi-tsvwg-ecn-response-00 to make a broader update to RFC 3168
      for the sake of allowing experiments. As a result, some of the
      motivating and discussing text that was moved from
      draft-khademi-alternativebackoff-ecn-03 to
      draft-khademi-tsvwg-ecn-response-00 has now been re-inserted here.</t>

      <t>Individual draft -00. draft-khademi-tsvwg-ecn-response-00 and
      draft-khademi-tcpm-alternativebackoff-ecn-00 replace
      draft-khademi-alternativebackoff-ecn-03, following discussion in the
      TSVWG and TCPM working groups.</t>
    </section>
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
         1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
         2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
         (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")
         
         Both are cited textually in the same manner: by using xref elements.
         If you use the PI option, xml2rfc will, by default, try to find included files in the same
         directory as the including file. You can also define the XML_LIBRARY environment variable
         with a value containing a set of directories to search.  These can be either in the local
         filing system or remote ones accessed by http (http://domain/dir/... ).-->

    <references title="Normative References">
      &RFC2119;

      &RFC3168;

      &RFC5681;

      &RFC7567;

      &RFC8257;

      &RFC8311;

      &RFC8174;
    </references>

    <references title="Informative References">
      <!--
             <reference anchor="ABE2015"
                target="http://caia.swin.edu.au/reports/150710A/CAIA-TR-150710A.pdf">
                <front>
                    <title>Alternative Backoff: Achieving Low Latency and High
                        Throughput with ECN and AQM</title>
                    
                    <author fullname="N. Khademi" initials="N." surname="Khademi"></author>
                    
                    <author fullname="M. Welzl" initials="M." surname="Welzl"></author>
                    
                    <author fullname="G. Armitage" initials="G." surname="Armitage"></author>
                    
                    <author fullname="C. Kulatunga" initials="C." surname="Kulatunga"></author>
                    
                    <author fullname="D. Ros" initials="D." surname="Ros"></author>
                    
                    <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"></author>
                    
                    <author fullname="S. Gjessing" initials="S." surname="Gjessing"></author>
                    
                    <author fullname="S. Zander" initials="S." surname="Zander"></author>
                    
                    <date month="July" year="2015" />
                </front>
                
                <seriesInfo name="CAIA Technical Report CAIA-TR-150710A,"
                value="Swinburne University of Technology" />
            </reference>
             -->

      <reference anchor="ABE2017">
        <front>
          <title>Alternative Backoff: Achieving Low Latency and High
          Throughput with ECN and AQM</title>

          <author fullname="N. Khademi" initials="N." surname="Khademi"></author>

          <author fullname="G. Armitage" initials="G." surname="Armitage"></author>

          <author fullname="M. Welzl" initials="M." surname="Welzl"></author>

          <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"></author>

          <author fullname="S. Zander" initials="S." surname="Zander"></author>

          <author fullname="D. Ros" initials="D." surname="Ros"></author>

          <date month="June" year="2017" />
        </front>

        <seriesInfo name="IFIP NETWORKING 2017," value="Stockholm, Sweden" />
      </reference>

      <reference anchor="ABE-FreeBSD"
                 target="https://svnweb.freebsd.org/base?view=revision&amp;revision=331214">
        <front>
          <title>ABE patch review in FreeBSD</title>

          <author></author>

          <date />
        </front>
      </reference>

      <reference anchor="BUFFERBLOAT">
        <front>
          <title>Bufferbloat: Dark Buffers in the Internet</title>

          <author fullname="J. Gettys" initials="J." surname="Gettys"></author>

          <author fullname="K. Nichols" initials="K." surname="Nichols"></author>

          <date month="November" year="2011" />
        </front>

        <format octets="" target="http://queue.acm.org/detail.cfm?id=2071893"
                type="PDF" />
      </reference>

      &RFC8312;

      &RFC8087;

      &RFC8033;

      <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>

          <author fullname="M. Kwon" initials="M." surname="Kwon"></author>

          <author fullname="S. Fahmy" initials="S." surname="Fahmy"></author>

          <date month="May" year="2002" />
        </front>

        <seriesInfo name="IEEE ICC" value="2002, New York, New York, USA" />
      </reference>

      &RFC8289;

      <reference anchor="CODEL2012"
                 target="http://queue.acm.org/detail.cfm?id=2209336">
        <front>
          <title>Controlling Queue Delay</title>

          <author fullname="Kathleen Nichols" initials="K." surname="Nichols">
            <organization></organization>
          </author>

          <author fullname="Van Jacobson" initials="V." surname="Jacobson">
            <organization>Google, Inc</organization>
          </author>

          <!--<workgroup>Communications of the ACM Vol. 55 No. 11, July, 2012, pp.  42-50.</workgroup>-->

          <date month="July" year="2012" />

          <abstract>
            <t></t>
          </abstract>
        </front>

        <format octets="" target="http://queue.acm.org/detail.cfm?id=2209336"
                type="PDF" />
      </reference>

      &RFC7713;

      &I-D.ietf-tcpm-accurate-ecn;
    </references>

    <!--
         <section anchor="sec-internal" title="Internal comments">
         <t>This is a place for taking notes.</t>
         
         <t>It's interesting that our document proposes almost exactly what RFC3168 mentions in sec. 20.2: "   A second possible use for the fourth ECN codepoint would have been to
         give the router two separate codepoints for the indication of
         congestion, CE(0) and CE(1), for mild and severe congestion
         respectively.  While this could be useful in some cases, this
         certainly does not seem a compelling requirement at this point.  If
         there was judged to be a compelling need for this, the complications
         of incremental deployment would most likely necessitate more that
         just one codepoint for this function.".</t>
         
         
         </section>
         -->

    <!-- Change Log
         v00 2006-03-15  EBD   Initial version
         
         -->
  </back>
</rfc>
