Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 01 Feb 2007 19:34:57 +0100
From:      Andre Oppermann <andre@freebsd.org>
To:        Andre Oppermann <andre@FreeBSD.org>
Cc:        cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/netinet tcp_input.c tcp_output.c tcp_usrreq.c tcp_var.h
Message-ID:  <45C232D1.8010704@freebsd.org>
In-Reply-To: <200702011832.l11IWEGu090482@repoman.freebsd.org>
References:  <200702011832.l11IWEGu090482@repoman.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Andre Oppermann wrote:
> andre       2007-02-01 18:32:14 UTC
> 
>   FreeBSD src repository
> 
>   Modified files:
>     sys/netinet          tcp_input.c tcp_output.c tcp_usrreq.c 
>                          tcp_var.h 
>   Log:
>   Auto sizing TCP socket buffers.
>   
>   Normally the socket buffers are static (either derived from global
>   defaults or set with setsockopt) and do not adapt to real network
>   conditions. Two things happen: a) your socket buffers are too small
>   and you can't reach the full potential of the network between both
>   hosts; b) your socket buffers are too big and you waste a lot of
>   kernel memory for data just sitting around.
>   
>   With automatic TCP send and receive socket buffers we can start with a
>   small buffer and quickly grow it in parallel with the TCP congestion
>   window to match real network conditions.
>   
>   FreeBSD has a default 32K send socket buffer. This supports a maximal
>   transfer rate of only slightly more than 2Mbit/s on a 100ms RTT
>   trans-continental link. Or at 200ms just above 1Mbit/s. With TCP send
>   buffer auto scaling and the default values below it supports 20Mbit/s
>   at 100ms and 10Mbit/s at 200ms. That's an improvement of factor 10, or
>   1000%. For the receive side it looks slightly better with a default of
>   64K buffer size.
>   
>   New sysctls are:
>     net.inet.tcp.sendbuf_auto=1 (enabled)
>     net.inet.tcp.sendbuf_inc=8192 (8K, step size)
>     net.inet.tcp.sendbuf_max=262144 (256K, growth limit)
>     net.inet.tcp.recvbuf_auto=1 (enabled)
>     net.inet.tcp.recvbuf_inc=16384 (16K, step size)
>     net.inet.tcp.recvbuf_max=262144 (256K, growth limit)
>   
>   Tested by:      many (on HEAD and RELENG_6)
>   Approved by:    re
>   MFC after:      1 month

Sponsored by:	TCP/IP Optimzation Fundraise 2005.

This is the pre-last major thing coming out of it.

-- 
Andre




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?45C232D1.8010704>