TCP window size issues

Carl Mascott cmascott at att.net
Sat Oct 18 11:16:21 PDT 2003


Sorry, but you are mistaken, and I can e-mail you the tcpdump
output to prove it.

As I said, I'm running 4.8-R with the PR 11966 patch backed
out.  With this kernel, and with any stock FreeBSD 4.6-R or
earlier, the TCP implementation _will_ shrink the receive
window after the connection is established _if_ a routing
table pipesize entry tells it to.  See tcp_input.c:tcp_mss()
from 4.6-R or earlier.

The following statements in ppp.conf

set recvpipe 4096
set sendpipe 4096

result in the following default route

   route to: default
destination: default
       mask: default
    gateway: 10.0.0.2
  interface: tun0
      flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
    4096      4096         0         0         0         0      1500         0 

This causes tcp_mss() to shrink the receive window after a
connection using the default route is established, as long
as the kernel default recv window size is > 4096 (slight
simplification here).

Lev Walkin wrote:
> Carl Mascott wrote:
> > I have a few TCP window size issues.
> [skip]
> > 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.)
>
> [skip]
>
> >    How likely am I to get into trouble by shrinking the TCP
> >    receive window?  Likely enough that I should make the
>
> RFC793 has nothing to do with the defaults you're setting in ppp.conf.
> RFC merely says that the TCP implementation _itself_ should not shrink
> window after establishing a TCP connection. If the default dictates 4k,
> the TCP implementation will use 4k and will not advertise a much smaller
> window without having accepted that much data.


More information about the freebsd-net mailing list