Increasing TCP window size

Increasing TCP window size

Post by Keisuke Nishid » Fri, 02 Jun 2006 20:16:17



Hello,

I have trouble getting the TCP window size increased on my linux box.
I have tried setting sysctl stuff, but they did not help me.

I am writing a streaming server over TCP (not UDP).  I am working on
Red Hat Enterprise Linux 3 Update 7 (linux-2.4.21-40) with default
settings.

As soon as one of my clients connected to the server, it started
sending its data to the server.  The TCP window size of packets from
the server to the client started with 32KB (after slow start).  Afer
some traffic, the window size got smaller and smaller until 5840 bytes.

Okay, the traffic was small, so the window of 5840 bytes was
reasonable.  The problem happened when the clients started sending
large data through the same TCP connection.

The client has a 10Mbps connection, so we want more window size than
5840 bytes.  I expected Linux automatically increases the window size
for high traffic, but it didn't.  The window size of the server stayed
at 5840 bytes, and the client got only 3Mbps or such.

That's too slow.  The client disconnected from the server and
reconnected.  Then, the window size raised to 32KB again, and the
client got faster transfer.

Questions:

1. Why the window size decreased from 32KB to 5840 bytes after the slow
start?  Does Linux optimizes window size for low traffic?

2. Why the window size did not increase again when the client started
sending large data?

3. Is there a way to get the window size increased without
reconnection?

4. Is there a way to get the window size fixed? (e.g., always 32KB)

I have found a website which mentions a strange behavior of Linux 2.4:

 http://dsd.lbl.gov/TCP-tuning/linux.html

I tried setting net.ipv4.route.flush to 1.  It worked for new
connections but not for existing connections.

Thanks for your kind help.

Keisuke

 
 
 

Increasing TCP window size

Post by Keisuke Nishid » Fri, 02 Jun 2006 22:40:05


Hello,


> 2. Why the window size did not increase again when the client started
> sending large data?

A friend of mine has found the reason.  It looks like a driver bug.
When I replaced the driver of the network card, the window size got
increased again.  Sigh.

Sorry for bothering you.

Keisuke

Quote:> Hello,

> I have trouble getting the TCP window size increased on my linux box.
> I have tried setting sysctl stuff, but they did not help me.

> I am writing a streaming server over TCP (not UDP).  I am working on
> Red Hat Enterprise Linux 3 Update 7 (linux-2.4.21-40) with default
> settings.

> As soon as one of my clients connected to the server, it started
> sending its data to the server.  The TCP window size of packets from
> the server to the client started with 32KB (after slow start).  Afer
> some traffic, the window size got smaller and smaller until 5840 bytes.

> Okay, the traffic was small, so the window of 5840 bytes was
> reasonable.  The problem happened when the clients started sending
> large data through the same TCP connection.

> The client has a 10Mbps connection, so we want more window size than
> 5840 bytes.  I expected Linux automatically increases the window size
> for high traffic, but it didn't.  The window size of the server stayed
> at 5840 bytes, and the client got only 3Mbps or such.

> That's too slow.  The client disconnected from the server and
> reconnected.  Then, the window size raised to 32KB again, and the
> client got faster transfer.

> Questions:

> 1. Why the window size decreased from 32KB to 5840 bytes after the slow
> start?  Does Linux optimizes window size for low traffic?

> 2. Why the window size did not increase again when the client started
> sending large data?

> 3. Is there a way to get the window size increased without
> reconnection?

> 4. Is there a way to get the window size fixed? (e.g., always 32KB)

> I have found a website which mentions a strange behavior of Linux 2.4:

>  http://dsd.lbl.gov/TCP-tuning/linux.html

> I tried setting net.ipv4.route.flush to 1.  It worked for new
> connections but not for existing connections.

> Thanks for your kind help.

> Keisuke