git: kernel - Fix stability issue with net.inet.tcp.inflight*

Matthew Dillon dillon at crater.dragonflybsd.org
Mon Jul 14 10:54:02 PDT 2014


commit a4bb2daa8036d28a3e7e8902891ace1721a7138a
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Mon Jul 14 10:47:22 2014 -0700

    kernel - Fix stability issue with net.inet.tcp.inflight*
    
    * net.inet.tcp.inflight_enable is (already) turned on by default.  This
      is necessary for network stability and to reduce excessive packet buffering
      to make PF and other routing protocols on the network work better.
    
    * There is a bug at very high bandwidths where the 'bw' calculation is
      unstable and can lead to positive feedback instead of the desired negative
      feedback, preventing the tcp buffer size from ramping up properly.
      GigE links could sometimes run a tcp stream as slow as 7 MBytes/sec due
      to the bug due to bwnd limiting the tcp buffer to ~30-50KB.
    
    * Fix the bug by increasing the minimum delta ticks for calculating (bw)
      from 1 to 2 and changing the stab parameter to scale bw instead of adding a
      fixed number of tcp maxsegs to bwnd.  This handles the high-speed issue.
      Low speed stability issues are handled by also adding 2*maxseg to bwnd.
    
      With this fix, GigE links stabilize better at the ~400-450KB needed to run
      the stream at full speed.
    
    * net.inet.tcp.inflight_stab now scales bw in 1/10% increments instead
      of adding N*tcp_maxseg/10.  The default value of 50 increases the 'bw'
      calculation used to derive bwnd by 5%.  This appears to be sufficient.
    
    Reported-by: alexh, rob__

Summary of changes:
 share/man/man4/tcp.4    | 24 ++++++++++++------------
 share/man/man7/tuning.7 | 16 +++++-----------
 sys/netinet/tcp_subr.c  | 26 ++++++++++++++++++++++----
 3 files changed, 39 insertions(+), 27 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/a4bb2daa8036d28a3e7e8902891ace1721a7138a


-- 
DragonFly BSD source repository



More information about the Commits mailing list