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