Re: Large TCP initial windows

Andi Kleen (ak@muc.de)
30 Oct 1998 23:54:02 +0100


In article <000e01be0438$8d39fce0$a98c9280@chaperon.ag.ohio-state.edu>,
"Jeff Schmidt" <schmidt@exchange.ag.ohio-state.edu> writes:
> Hi:
> Kernel 2.1.126:

> In <net/tcp.h> :: tcp_select_initial_window() I see the following:

> /* NOTE: offering an initial window larger than 32767
> * will break some buggy TCP stacks. We try to be nice.
> * If we are not window scaling, then this truncates
> * our initial window offering to 32k. There should also
> * be a sysctl option to stop being nice.
> */

> However, I can't seem to find the sysctl to "stop being nice." What is the
> procedure to allow a large (scaled) initial window? I don't know the stack
> code too well, but it looks like there's more to it than just adjusting the
> few lines following the above comment.

The comment only applies to the unscaled window part. 32k limits you
assuming scale max scale 14 to a maximum effective window of 512MB - that
should be enough for most uses.

Here the relevant part from the upcomming network manpage rewrite (from tcp.4): To use the window scaling option effectively the
default send and receive buffers have to be increased.
This can be either done globally using the
net.core.wmen_default and net.core.rmem_default sysctls,
or on a per socket basis using the SO_SNDBUF and SO_RCVBUF
socket options. The maximum size that can be set per
socket is limited by the global net.core.rmem_max and
net.core.wmem_max sysctls.

So just increase the receive socket buffer and everything will be fine.

-Andi
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.rutgers.edu