TCP Congestion Control with Appropriate Byte Counting (ABC)
RFC 3465

Document Type RFC - Experimental (February 2003; No errata)
Was draft-allman-tcp-abc (individual in tsv area)
Author Mark Allman 
Last updated 2015-10-14
Stream IETF
Formats plain text html pdf htmlized bibtex
Stream WG state (None)
Document shepherd No shepherd assigned
IESG IESG state RFC 3465 (Experimental)
Consensus Boilerplate Unknown
Telechat date
Responsible AD Allison Mankin
IESG note Rev was made for tiny bug fix after good WGLC in TSVWG. On 2002-Nov-27 IESG agenda.
Send notices to (None)
Network Working Group                                          M. Allman
Request for Comments: 3465                                  BBN/NASA GRC
Category: Experimental                                     February 2003

      TCP Congestion Control with Appropriate Byte Counting (ABC)

Status of this Memo

   This memo defines an Experimental Protocol for the Internet
   community.  It does not specify an Internet standard of any kind.
   Discussion and suggestions for improvement are requested.
   Distribution of this memo is unlimited.

Copyright Notice

   Copyright (C) The Internet Society (2003).  All Rights Reserved.


   This document proposes a small modification to the way TCP increases
   its congestion window.  Rather than the traditional method of
   increasing the congestion window by a constant amount for each
   arriving acknowledgment, the document suggests basing the increase on
   the number of previously unacknowledged bytes each ACK covers.  This
   change improves the performance of TCP, as well as closes a security
   hole TCP receivers can use to induce the sender into increasing the
   sending rate too rapidly.


   Much of the language in this document is taken from [RFC2581].

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   document are to be interpreted as described in [RFC2119].

1   Introduction

   This document proposes a modification to the algorithm for increasing
   TCP's congestion window (cwnd) that improves both performance and
   security.  Rather than increasing a TCP's congestion window based on
   the number of acknowledgments (ACKs) that arrive at the data sender
   (per the current specification [RFC2581]), the congestion window is
   increased based on the number of bytes acknowledged by the arriving
   ACKs.  The algorithm improves performance by mitigating the impact of
   delayed ACKs on the growth of cwnd.  At the same time, the algorithm
   provides cwnd growth in direct relation to the probed capacity of a

Allman                        Experimental                      [Page 1]
RFC 3465            TCP Congestion Control with ABC        February 2003

   network path, therefore providing a more measured response to ACKs
   that cover only small amounts of data (less than a full segment size)
   than ACK counting.  This more appropriate cwnd growth can improve
   both performance and can prevent inappropriate cwnd growth in
   response to a misbehaving receiver.  On the other hand, in some cases
   the modified cwnd growth algorithm causes larger bursts of segments
   to be sent into the network.  In some cases this can lead to a non-
   negligible increase in the drop rate and reduced performance (see
   section 4 for a larger discussion of the issues).

   This document is organized as follows.  Section 2 outlines the
   modified algorithm for increasing TCP's congestion window.  Section 3
   discusses the advantages of using the modified algorithm.  Section 4
   discusses the disadvantages of the approach outlined in this
   document.  Section 5 outlines some of the fairness issues that must
   be considered for the modified algorithm.  Section 6 discusses
   security considerations.

   Statement of Intent

      This specification contains an algorithm improving the performance
      of TCP which is understood to be effective and safe, but which has
      not been widely deployed.  One goal of publication as an
      Experimental RFC is to be prudent, and encourage use and
      deployment prior to publication in the standards track.  It is the
      intent of the Transport Area to re-submit this specification as an
      IETF Proposed Standard in the future, after more experience has
      been gained.

2   A Modified Algorithm for Increasing the Congestion Window

   As originally outlined in [Jac88] and specified in [RFC2581], TCP
   uses two algorithms for increasing the congestion window.  During
   steady-state, TCP uses the Congestion Avoidance algorithm to linearly
   increase the value of cwnd.  At the beginning of a transfer, after a
   retransmission timeout or after a long idle period (in some
   implementations), TCP uses the Slow Start algorithm to increase cwnd
   exponentially.  According to RFC 2581, slow start bases the cwnd
   increase on the number of incoming acknowledgments.  During
   congestion avoidance RFC 2581 allows more latitude in increasing
   cwnd, but traditionally implementations have based the increase on
   the number of arriving ACKs.  In the following two subsections, we
   detail modifications to these algorithms to increase cwnd based on
   the number of bytes being acknowledged by each arriving ACK, rather
   than by the number of ACKs that arrive.  We call these changes
   "Appropriate Byte Counting" (ABC) [All99].

Allman                        Experimental                      [Page 2]
Show full document text