josh <pljosh_at_poczta_neostrada_pl_@.> wrote in message news:<c9pi7n$edu$(E-Mail Removed)>...
> Hello!
>
> I was reading RFCs (2001+2581) and also TCP/IP Illustrated and there is
> one thing I dont get...
> When congestion is obesrved during "slow start", TCP will set 'ssthresh'
> usually to 1/2 of current cwin and what then?
I couldn't locate any "usually 1/2" ... where should I look?
> OK, lets say that we observed congestion during "slow start" when cwin
> was 32. Now we have ssthresh=16 and cwin=16 and "congestion avoidanve"
> takes control. ...
> ... So it will be inreasing cwin by each ACK, but sooner or
> later it will reach cwin=32 (or smaller) and wtah then? ...
What "it" are you referring to? Sender?
> Is it going to modify 'ssthresh' (cwnd/2) again and slow down to it?
Why would it without an indication from the receiver? The sender
already "knows" what he is prepared to send as a "max window"...
SENDER MAXIMUM SEGMENT SIZE (SMSS). ssthresh simply indicates _when_
to swicth from slow start to congestion avoidance -- not what sizes to
actually use.
> And later? Again will reach this point and slows down to half speed?
>
> -josh
I think you are generalzing from a specific example presented by
Stevens ... ? Where slow start was, in fact, avoided? Which example
are you referring to -- I quit at "21.7 Fast Retransmit and Fast
Recovery Algorithms".
Slow start and congestion avoidance can and do interact in a number of
ways -- a few are "required" (MUST or SHOULD) and the others are
varied (MAY) ...
I am not aware of any "required" means of (re)calculating ssthresh
except...
From rfc 2581:
When a TCP sender detects segment loss using the _retransmission
timer_, the value of ssthresh MUST be set to no more than the value
given in equation 3:
ssthresh = max (FlightSize / 2, 2*SMSS) (3)
As discussed above, FlightSize is the amount of outstanding data in
the network.
Implementation Note: an easy mistake to make is to simply use cwnd,
rather than FlightSize, which in some implementations may
incidentally increase well beyond rwnd.
From rfc 2581:
The congestion window (cwnd) is a sender-side limit on the amount of
data the sender can transmit into the network before receiving an
acknowledgment (ACK), while the receiver's advertised window (rwnd) is
a receiver-side limit on the amount of outstanding data. _The minimum
of cwnd and rwnd governs data transmission._
Congestion control has evolved a lot since Stevens Vol 1 with some
accepted, some not. You might want to check out this site to search
"ssthresh" and "smss" -- I prefer being able to search the returned
html to text files ;-)
http://www.faqs.org/rfcs/
and this paper:
http://www.acm.org/sigs/sigcomm/sigc...apers/hoe.html
You have to be very careful when reading these formulas, etc. as they
almost always refer to a _specific_ set of "triggers" -- I have a
terrible time keeping them straight, so have given up trying to hold
'em in my head ;-) Makes my head hurt just to think about it ...
|[:-(
hth,
prg
email above disabled