TCP window size issues

Andre Oppermann oppermann at pipeline.ch
Fri Oct 17 12:20:50 PDT 2003


Carl Mascott wrote:
> 
> I have a few TCP window size issues.
> 
> 1. In FreeBSD 4.8-R the kernel default recv window is 56 KB.  This
>    is so large that it causes dropped packets due to queue overflow
>    with my V.90 link (BW 5 KB/s on compressed data).
> 
> 2. The 4.4BSD TCP implementation has never had the correct precedence
>    rules for setting window sizes.  App-set values should take
>    precedence over all others.  Routing table values should take
>    precedence over kernel default values.  The fix for PR 11966
>    alters the behavior but still doesn't implement these precedence
>    rules.

I'll fix this in my tcp_hostcache patch currently under review by
Sam Leffler and Ruslan Ermilov (however that is for -CURRENT).

>    http://www.freebsd.org/cgi/query-pr.cgi?pr=11966
> 
> 3. RFC 793 (TCP) says that shrinking the receive window after
>    connection is established is "strongly discouraged".  I'm
>    currently shrinking the receive window on my default route
>    (PPP link) from 32 KB to 4 KB with settings in
>    /etc/ppp/ppp.conf.  (Had to back out patch in PR 11966.)
>    No problems noticed yet.  To avoid shrinking the window I
>    believe I'd have to do the following:
> 
>    - set kernel default send & recv windows to smallest values
>      used on any route
> 
>    - modify all other routes on bootup (with script in
>      /usr/local/etc/rc.d ?) to set desired larger window sizes
> 
>    Keeping the script in sync with the routing table would be
>    a new maintenance headache.
> 
>    How likely am I to get into trouble by shrinking the TCP
>    receive window?  Likely enough that I should make the
>    changes above?  The patch in PR 11966 was kicking around
>    for about a year before the PR was filed.  Was this patch
>    originally intended to solve a TCP compatibility problem
>    caused by shrinking the TCP receive window?

-- 
Andre


More information about the freebsd-net mailing list