[nSLUG] timeout in congestion & congestion avoidance

Yuan Sha sha at cs.dal.ca
Sat Nov 10 23:29:20 AST 2001


Recently, I have been doing a project where I have to implement
"congestion avoidance algorithm". I checked RFC 2001/2581 and Steven's
"TCP/IP Illustrated (Vol. 1)" but still have some questions.

1. timeout:

In Karn's algorithm, it uses timer backoff strategy, which is:

new_timeout = r * timeout

In Cormer's "Internetworking with TCP/IP", he said "typically, r is 2".
(In his new versionn of this bible, it can be found on page 229. But I 
remember in the elder version, Comer also mentioned this thing.)

But I am wondering, if there are several congestion, the timeout will be
larger than the max integer (in C/C++) or much longer than the period
people can patiently wait.

For example, if the initial timeout is 30ms. After 11 times of 
computation, the timeout will beyond 1 minute. Is that correct?

I guess that timeout may be decreased based on some algorithm or RFC in 
some cases so that the timeout cannot be exponetially increased forever.
But I cannot find any RFC yet :(

So could you pls tell me how to deal with timeout in the congestion?

2. congestion avoidance

RFC 2001 (page 3, item 3) said "if the congestion is indicated by a 
timeout, cwnd is set to one segment." But sometimes, an ICMP packet 
arrives to report the congestion before timeout occurs in sender side. In
this case, how to change the cwnd?

thank u very much,

|         Yuan Sha            |
|       MSc Student           |
|                             |
|   Email: sha at cs.dal.ca      |

More information about the nSLUG mailing list