Re: Doubts about RFC 2001 (Slow Start and Congestion Avoidance in TCP)

Mark Allman <mallman@grc.nasa.gov> Wed, 31 March 1999 14:54 UTC

Message-Id: <199903311455.JAA25967@guns.lerc.nasa.gov>
To: Emanuele Zanotti <zanotti@cerbero.elet.polimi.it>
From: Mark Allman <mallman@grc.nasa.gov>
Reply-To: mallman@grc.nasa.gov
cc: tcp-impl@grc.nasa.gov, bettanet@tin.it, emanuzan@tin.it
Subject: Re: Doubts about RFC 2001 (Slow Start and Congestion Avoidance in TCP)
Organization: Late Night Hackers, NASA Glenn, Cleveland, Ohio
Song-of-the-Day: Sweet Emotion
Date: Wed, 31 Mar 1999 09:54:59 -0500
Sender: owner-tcp-impl@lerc.nasa.gov
Precedence: bulk
Status: RO
Content-Length: 1094
Lines: 30

[If this is a repeat, I appologize...  My mailer is acting funny
 today. --allman]

Hopefully these are cleared up in 2001.bis, which is currently in
the RFC editor's queue.  (draft-ietf-tcpimpl-cong-control-05.txt).

> 1) RFC states that when a congestion occurs, ssthresh is set to: max (2,
> 0.5*min(cwnd,rcvwnd));
>    Somebody states that the correct value is: max(2, min(cwnd/2,
> rcvwnd))
> So, which the right version?

When congestion occurs you should set ssthresh to:

    max (2*MSS,FlightSize/2)

where FlightSize is the actual amount of outstanding data that has
been sent into the network.  (Depending on the implementation,
FlightSize may equal cwnd, or it may not).

> 2) Can the value of cwnd be greater than the value of rcvwnd ?

Yes.  The value of cwnd in some implementations grows beyond the
size of the advertised window.  However, the amount of outstanding
data that can be sent into the network at any point in time is min
(cwnd,rwnd).  So, even if cwnd grows incedentally large, TCP is not
allowed to send more data than the window dictated by the receiver.

allman