Subject: Threshold/rate halving in Linux TCP

From: "Bert Van Lee" <[email-masked]>
Date: Wed, 09 May 2001 21:22:39

Hi,

On trying to set up a high-speed connection between two Linux machines A and 
B each running kernel 2.4.3 over a 8 Mbit/s link with a RTT of about 640 ms, 
I noticed that quite early the TCP sender must have changed to congestion 
avoidance. The delay/BW limiting was done using a third Linux machine L with 
the Nistnet network emulation software on it. There is a 100 Mbit/s Ethernet 
between A and L and between L and B.

When the speed reached about 160 kByte/s or 1.3 Mbit/s, the exponential 
build-up stopped and the speed increased linearly up till about 7 Mbit/s , 
after which the rate was halved to 4 Mbit/s, again linear build up to 7, 
halving to 4 etc. The build-up from 4 to 7 takes about 140 SECONDS.

I allowed SACK, RTT measurement, Window scaling.

Set wmem/rmem params in .../core and .../ipv4. Used default send and recv 
buffers of 1 MByte, 2 MByte max. TCPs both report window scaling by 4 bits, 
i.e. x16, which is a healthy sign.

My questions are:

1. where can I specify the threshold for congestion avoidance, as I would 
like the transmitting TCP to continue to 8 (or 7 or so...) Mbit/s before 
doing so? I could not find any setting in .../core or .../ipv4???

2. Can I somehow avoid the rate-halving that supposedly happens because 
sstresh is halved, as this is not what I want, since the link is a 8 MByte/s 
link and there is no congestion at the other end, just a limitation of 
speed.

3. Other question: as far as I am concerned the sending TCP may start 
blazing at 7 Mbit/s, rather than start with 2 segments only. This appears to 
be non-RFC, right? Is there any action started to allow this, e.g. withing 
T/TCP which I do not know well?

Thank you,

Eric Verlind

_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.

---

From: Alan Cox <[email-masked]>
Date: Wed, 9 May 2001 22:54:46 +0100 (BST)

> between A and L and between L and B.

A better place for this one might be [email-masked] btw - that has all
the main linux networking folsk on it

---

From: Matt Mathis <[email-masked]>
Date: Thu, 17 May 2001 11:31:31 -0400 (EDT)

TCP is behaving exactly correctly.  Your ground station does not have sufficient
buffering (queue).  You need about 1.3 MB (and then raise the window scale to 5
shifts).

--MM--