<?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 I-D.narten-iana-considerations-rfc2434bis SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.narten-iana-considerations-rfc2434bis.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-03.xml">
<!ENTITY I-D.ietf-tcpm-dctcp SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-tcpm-dctcp-10.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 category="exp" docName="draft-ietf-tcpm-alternativebackoff-ecn-05"
     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="Swinburne University of Technology">Internet For
      Things (I4T) Research Group</organization>

      <address>
        <postal>
          <street>Swinburne University of Technology</street>

          <street>PO Box 218</street>

          <street>John Street, Hawthorn</street>

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

          <code>3122</code>

          <city>Victoria</city>

          <region></region>

          <country>Australia</country>
        </postal>

        <email>garmitage@swin.edu.au</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="11" month="December" year="2017" />

    <!-- 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>Recent 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.
      An Explicit Congestion Notification (ECN) signal indicates that an AQM
      mechanism is used at the bottleneck, and therefore the bottleneck
      network queue is likely to be short. This document therefore proposes an
      update to RFC3168, which changes 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.</t>
    </abstract>
  </front>

  <middle>
    <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>.</t>

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

    <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 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 ECN congestion signals exactly the same as they would
      treat an inferred packet loss <xref target="RFC3168"></xref>.</t>

      <t>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="I-D.CoDel"></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 new AQM mechanisms like PIE <xref target="RFC8033"></xref>
      and CoDel <xref target="CODEL2012"></xref><xref
      target="I-D.CoDel"></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 cannot always
      utilise a bottleneck link well where there are short queues. For
      example, a TCP sender must 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 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 an early-warning signal of congestion is received in the
      form of an ECN CE-marked packet. Recognizing these changes in modern AQM
      practices, more recent rules have relaxed the strict requirement that
      ECN signals be treated identically to inferred packet loss <xref
      target="I-D.ECN-exp"></xref>. Following these newer, more flexible
      rules, this document 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 for short queues only.</t>
    </section>

    <section title="Specification">
      <t>This specification updates 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.</t>

      <t>It updates the following text in section 6.1.2 of the ECN
      specification <xref target="RFC3168"></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".</t>
        </list>Replacing this with:</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 that new ssthresh value.</t>
        </list></t>
    </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="I-D.CUBIC"></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="I-D.CoDel"></xref>
                                                 <xref target="RFC8033"/>.-->
      The performance improvement is achieved when reacting to ECN-Echo in
      congestion avoidance by multiplying cwnd and ssthresh with a value in
      the range [0.7,0.85].</t>

      <section anchor="sec-rationale-why"
               title="Why Use ECN to Vary the Degree of Backoff?">
        <t>The classic rule-of-thumb dictates that a network path needs to
        provide a BDP of bottleneck buffering if a TCP connection wishes to
        optimise path utilisation. A single TCP bulk transfer running through
        such a bottleneck will have increased its congestion window (cwnd) up
        to 2*BDP by the time that packet loss occurs. When packet loss is
        inferred using the retransmission timer and the given packet has not
        yet been resent by way of the retransmission timer (regarded as a
        notification of congestion), Standard TCP sets the ssthresh to the
        maximum of half of the FlightSize and 2*SMSS <xref
        target="RFC5681"></xref>, which causes the TCP congestion control to
        go back to allowing only a BDP of packets in flight -- just sufficient
        to maintain 100% utilisation of the bottleneck on the network
        path.</t>

        <t>AQM mechanisms such as CoDel <xref target="I-D.CoDel"></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 document. 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="Focus on ECN as Defined in RFC3168">
        <t>Some transport protocol mechanisms rely on ECN semantics that
        differ from the original ECN definition <xref target="RFC3168"></xref>
        -- for example, Congestion Exposure (ConEx) <xref
        target="RFC7713"></xref> and Datacenter TCP (DCTCP) <xref
        target="I-D.ietf-tcpm-dctcp"></xref> need more accurate ECN
        information than that offered by the original feedback method. Other
        mechanisms (e.g., <xref target="I-D.ietf-tcpm-accurate-ecn"></xref>)
        allow the sender to adjust the rate more frequently than once each
        path RTT. Use of these mechanisms is out of scope for this
        document.</t>
      </section>

      <section anchor="sec-rationale-multiplier"
               title="Choice of ABE Multiplier">
        <t>ABE decouples the reaction of a TCP sender to inferred packet loss
        and ECN-signalled congestion when in the congestion avoidance phase by
        differentiating the scaling factor used 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>
          </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="I-D.CUBIC"></xref> has used a multiplier of 0.7 since kernel
        version 2.6.25 released in 2008. ABE proposes no change to beta_{loss}
        used by current TCP implementations.</t>

        <t>beta_{ecn} depends on how the response of a TCP connection to
        shallow AQM marking thresholds is optimised. beta_{loss} reflects the
        preferred response of each congestion control algorithm when faced
        with exhaustion of buffers (of unknown depth) signalled by packet
        loss. Consequently, for any given TCP congestion control algorithm the
        choice of beta_{ecn} is likely to be algorithm-specific, rather than a
        constant multiple of the algorithm's existing beta_{loss}. The
        recommended beta_{ecn} value in this document is only applicable for
        Standard TCP congestion control.</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 title="ABE Requirements">
      <t><!--
                Statement on why EXP
                
                -->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>RFC3168 states that the congestion control response to an
      ECN-signalled congestion is the same as the response to a dropped packet
      <xref target="RFC3168"></xref>. <xref target="I-D.ECN-exp"></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 the safety in deployed networks using
      this update to TCP congestion control.</t>

      <t>When used with bottlenecks that do not support ECN-marking the
      specification does not modify the transport protocol.</t>

      <t>To evaluate the benefit, 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>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, in the worst case (e.g., an ABE-compliant TCP sender using
      beta_{ecn} = 1.0) the ECN-Capable bottleneck will still fall back to
      dropping packets, and the result is no different than if the TCP sender
      was using traditional loss-based congestion control.</t>

      <t>A TCP sender reacts to loss or ECN marks only once per round-trip
      time. Hence, if a sender would first be notified of an ECN mark and then
      learn about loss in the same round-trip, it would only react to the
      first notification (ECN) but not to the second (loss). RFC3168 specified
      a reaction to ECN that was equal to the reaction to loss <xref
      target="RFC3168"></xref>.</t>

      <t>ABE also makes one congestion-response each RTT that congestion is
      signalled, and therefore there is no response to loss within the same
      round-trip time, since ABE has already made a reduction of the
      congestion window. ABE will however respond for each round-trip time
      that congestion continues to be signaled. 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.</t>

      <t>The result of this Internet experiment will include an investigation
      of cases such as the ones listed above, and be reported by presentation
      to the TCPM WG (or IESG) or an implementation report at the end of the
      experiment.</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>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. It is meant for
      research and available for download from
      http://heim.ifi.uio.no/naeemk/research/ABE/. This code was used to
      produce the test results that are reported in <xref
      target="ABE2017"></xref>. An evolved version of the patch for FreeBSD is
      currently under review for potential inclusion in the mainline kernel
      <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="I-D.CUBIC"></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>-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 RFC3168
      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">
      <reference anchor="I-D.ECN-exp">
        <front>
          <title>Explicit Congestion Notification (ECN)
          Experimentation</title>

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

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

        <seriesInfo name="Internet-draft, IETF work-in-progress"
                    value="draft-ietf-tsvwg-ecn-experimentation-08" />
      </reference>

      &RFC2119;

      &RFC3168;

      &RFC5681;

      &RFC7567;
    </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://reviews.freebsd.org/D11616">
        <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>

      <reference anchor="I-D.CUBIC">
        <front>
          <title>CUBIC for Fast Long-Distance Networks</title>

          <author fullname="I. Rhee" initials="I." surname="Rhee"></author>

          <author fullname="L. Xu" initials="L." surname="Xu"></author>

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

          <author fullname="A. Zimmermann" initials="A." surname="Zimmermann"></author>

          <author fullname="L. Eggert" initials="L." surname="Eggert"></author>

          <author fullname="R. Scheffenegger" initials="R."
                  surname="Scheffenegger"></author>

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

        <seriesInfo name="Internet-draft, IETF work-in-progress"
                    value="draft-ietf-tcpm-cubic-07" />
      </reference>

      &RFC8087;

      <reference anchor="I-D.CoDel">
        <front>
          <title>Controlled Delay Active Queue Management</title>

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

          <author fullname="V. Jacobson" initials="V." surname="Jacobson"></author>

          <author fullname="A. McGregor" initials="V." surname="McGregor"></author>

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

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

        <seriesInfo name="Internet-draft, IETF work-in-progress"
                    value="draft-ietf-aqm-codel-10" />
      </reference>

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

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

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