Download speed and TCPIP window sizing

Brian Somers brian at Awfulhak.org
Mon Jun 4 10:06:29 UTC 2007


On Thu, 31 May 2007 22:06:39 +0800 Pang <freebsd at laws.ms> wrote:
>   Could anyone tell me whether my understanding on Window sizing 
> correct? Also, is there any way to alter the window sizing in freebsd or 
> apache?

AFAIK you can't increase the window size unless you use
the tcp wscale option (it's a 2-byte value).  This wasn't
possible 'till recently in -current:

andre       2007-02-01 17:39:19 UTC

  FreeBSD src repository

  Modified files:
    sys/netinet          tcp_syncache.c tcp_usrreq.c 
  Log:
  Change the way the advertized TCP window scaling is computed.  Instead of
  upper-bounding it to the size of the initial socket buffer lower-bound it
  to the smallest MSS we accept.  Ideally we'd use the actual MSS information
  here but it is not available yet.
  
  For socket buffer auto sizing to be effective we need room to grow the
  receive window.  The window scale shift is determined at connection setup
  and can't be changed afterwards.  The previous, original, method effectively
  just did a power of two roundup of the socket buffer size at connection
  setup severely limiting the headroom for larger socket buffers. 

  Tested by:      many (as part of the socket buffer auto sizing patch)
  MFC after:      1 month
  
  Revision  Changes    Path
  1.104     +8 -2      src/sys/netinet/tcp_syncache.c
  1.143     +7 -2      src/sys/netinet/tcp_usrreq.c

This may not be MFC'd (I think I'd object if it was)
as there are several old OpenBSD/pf setups that have
issues with wscale > 4.  Hopefully these setups will
be fixed by the time 7.0 is released, as windows/vista
and linux/debian now set wscale > 4 too.

The patch is pretty small though, so you may want to
try applying it to your box to see if it helps.

HTH.

-- 
Brian Somers                                          <brian at Awfulhak.org>
Don't _EVER_ lose your sense of humour !               <brian at FreeBSD.org>


More information about the freebsd-net mailing list