datatracker.ietf.org
Sign in
Version 5.7.1.p2, 2014-10-29
Report a bug

Limited Slow-Start for TCP with Large Congestion Windows
RFC 3742

Document type: RFC - Experimental (March 2004; Errata)
Document stream: IETF
Last updated: 2013-03-02
Other versions: plain text, pdf, html

IETF State: (None)
Consensus: Unknown
Document shepherd: No shepherd assigned

IESG State: RFC 3742 (Experimental)
Responsible AD: Jon Peterson
Send notices to: No addresses provided

Network Working Group                                           S. Floyd
Request for Comments: 3742                                          ICSI
Category: Experimental                                        March 2004

        Limited Slow-Start for TCP with Large Congestion Windows

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 (2004).  All Rights Reserved.

Abstract

   This document describes an optional modification for TCP's slow-start
   for use with TCP connections with large congestion windows.  For TCP
   connections that are able to use congestion windows of thousands (or
   tens of thousands) of MSS-sized segments (for MSS the sender's
   MAXIMUM SEGMENT SIZE), the current slow-start procedure can result in
   increasing the congestion window by thousands of segments in a single
   round-trip time.  Such an increase can easily result in thousands of
   packets being dropped in one round-trip time.  This is often
   counter-productive for the TCP flow itself, and is also hard on the
   rest of the traffic sharing the congested link.  This note describes
   Limited Slow-Start as an optional mechanism for limiting the number
   of segments by which the congestion window is increased for one
   window of data during slow-start, in order to improve performance for
   TCP connections with large congestion windows.

1.  Introduction

   This note describes an optional modification for TCP's slow-start for
   use with TCP connections with large congestion windows.  For TCP
   connections that are able to use congestion windows of thousands (or
   tens of thousands) of MSS-sized segments (for MSS the sender's
   MAXIMUM SEGMENT SIZE), the current slow-start procedure can result in
   increasing the congestion window by thousands of segments in a single
   round-trip time.  Such an increase can easily result in thousands of
   packets being dropped in one round-trip time.  This is often
   counter-productive for the TCP flow itself, and is also hard on the
   rest of the traffic sharing the congested link.  This note describes
   Limited Slow-Start, limiting the number of segments by which the

Floyd                         Experimental                      [Page 1]
RFC 3742     TCP's Slow-Start with Large Congestion Windows   March 2004

   congestion window is increased for one window of data during slow-
   start, in order to improve performance for TCP connections with large
   congestion windows.

   When slow-start results in a large increase in the congestion window
   in one round-trip time, a large number of packets might be dropped in
   the network (even with carefully-tuned active queue management
   mechanisms in the routers).  This drop of a large number of packets
   in the network can result in unnecessary retransmit timeouts for the
   TCP connection.  The TCP connection could end up in the congestion
   avoidance phase with a very small congestion window, and could take a
   large number of round-trip times to recover its old congestion
   window.  This poor performance is illustrated in [F02].

2.  The Proposal for Limited Slow-Start

   Limited Slow-Start introduces a parameter, "max_ssthresh", and
   modifies the slow-start mechanism for values of the congestion window
   where "cwnd" is greater than "max_ssthresh".  That is, during Slow-
   Start, when

      cwnd <= max_ssthresh,

   cwnd is increased by one MSS (MAXIMUM SEGMENT SIZE) for every
   arriving ACK (acknowledgement) during slow-start, as is always the
   case.  During Limited Slow-Start, when

      max_ssthresh < cwnd <= ssthresh,

   the invariant is maintained so that the congestion window is
   increased during slow-start by at most max_ssthresh/2 MSS per round-
   trip time.  This is done as follows:

      For each arriving ACK in slow-start:
        If (cwnd <= max_ssthresh)
           cwnd += MSS;
        else
           K = int(cwnd/(0.5 max_ssthresh));
           cwnd += int(MSS/K);

   Thus, during Limited Slow-Start the window is increased by 1/K MSS
   for each arriving ACK, for K = int(cwnd/(0.5 max_ssthresh)), instead
   of by 1 MSS as in standard slow-start [RFC2581].

Floyd                         Experimental                      [Page 2]
RFC 3742     TCP's Slow-Start with Large Congestion Windows   March 2004

   When

     ssthresh < cwnd,

   slow-start is exited, and the sender is in the Congestion Avoidance
   phase.

   Our recommendation would be for max_ssthresh to be set to 100 MSS.

[include full document text]