diff --git a/share/man/man4/tcp.4 b/share/man/man4/tcp.4 index b033e287efa3..d9adfebf0e22 100644 --- a/share/man/man4/tcp.4 +++ b/share/man/man4/tcp.4 @@ -382,7 +382,7 @@ code. For this reason, we use 200ms of slop and a near-0 minimum, which gives us an effective minimum of 200ms (similar to .Tn Linux ) . -.It Va inflight_enable +.It Va inflight.enable Enable .Tn TCP bandwidth-delay product limiting. @@ -406,20 +406,20 @@ Note that bandwidth-delay product limiting only effects the transmit side of a .Tn TCP connection. -.It Va inflight_debug +.It Va inflight.debug Enable debugging for the bandwidth-delay product algorithm. This may default to on (1), so if you enable the algorithm, you should probably also disable debugging by setting this variable to 0. -.It Va inflight_min +.It Va inflight.min This puts a lower bound on the bandwidth-delay product window, in bytes. A value of 1024 is typically used for debugging. 6000-16000 is more typical in a production installation. Setting this value too low may result in slow ramp-up times for bursty connections. Setting this value too high effectively disables the algorithm. -.It Va inflight_max +.It Va inflight.max This puts an upper bound on the bandwidth-delay product window, in bytes. This value should not generally be modified, but may be used to set a global per-connection limit on queued data, potentially allowing you to @@ -427,7 +427,7 @@ intentionally set a less than optimum limit, to smooth data flow over a network while still being able to specify huge internal .Tn TCP buffers. -.It Va inflight_stab +.It Va inflight.stab The bandwidth-delay product algorithm requires a slightly larger window than it otherwise calculates for stability. This parameter determines the extra window in maximal packets / 10. @@ -438,17 +438,17 @@ come across a situation with very slow links where the time reduction of the default inflight code is not sufficient. If this case occurs, you should first try reducing -.Va inflight_min +.Va inflight.min and, if that does not work, reduce both -.Va inflight_min +.Va inflight.min and -.Va inflight_stab , +.Va inflight.stab , trying values of 15, 10, or 5 for the latter. Never use a value less than 5. Reducing -.Va inflight_stab +.Va inflight.stab can lead to upwards of a 20% underutilization of the link as well as reducing the algorithm's ability to adapt to changing situations and should only be done as a last resort. diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index 2064df6e6b65..1e23552ec2a7 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -183,23 +183,27 @@ SYSCTL_INT(_net_inet_tcp, OID_AUTO, isn_reseed_interval, CTLFLAG_RW, * 1024 exists only for debugging. A good production default would be * something like 6100. */ +SYSCTL_NODE(_net_inet_tcp, OID_AUTO, inflight, CTLFLAG_RW, 0, + "TCP inflight data limiting"); + static int tcp_inflight_enable = 1; -SYSCTL_INT(_net_inet_tcp, OID_AUTO, inflight_enable, CTLFLAG_RW, +SYSCTL_INT(_net_inet_tcp_inflight, OID_AUTO, enable, CTLFLAG_RW, &tcp_inflight_enable, 0, "Enable automatic TCP inflight data limiting"); static int tcp_inflight_debug = 0; -SYSCTL_INT(_net_inet_tcp, OID_AUTO, inflight_debug, CTLFLAG_RW, +SYSCTL_INT(_net_inet_tcp_inflight, OID_AUTO, debug, CTLFLAG_RW, &tcp_inflight_debug, 0, "Debug TCP inflight calculations"); static int tcp_inflight_min = 6144; -SYSCTL_INT(_net_inet_tcp, OID_AUTO, inflight_min, CTLFLAG_RW, +SYSCTL_INT(_net_inet_tcp_inflight, OID_AUTO, min, CTLFLAG_RW, &tcp_inflight_min, 0, "Lower-bound for TCP inflight window"); static int tcp_inflight_max = TCP_MAXWIN << TCP_MAX_WINSHIFT; -SYSCTL_INT(_net_inet_tcp, OID_AUTO, inflight_max, CTLFLAG_RW, +SYSCTL_INT(_net_inet_tcp_inflight, OID_AUTO, max, CTLFLAG_RW, &tcp_inflight_max, 0, "Upper-bound for TCP inflight window"); + static int tcp_inflight_stab = 20; -SYSCTL_INT(_net_inet_tcp, OID_AUTO, inflight_stab, CTLFLAG_RW, +SYSCTL_INT(_net_inet_tcp_inflight, OID_AUTO, stab, CTLFLAG_RW, &tcp_inflight_stab, 0, "Inflight Algorithm Stabilization 20 = 2 packets"); SYSCTL_NODE(_net_inet_tcp, OID_AUTO, sack, CTLFLAG_RW, 0, "TCP SACK"); diff --git a/sys/netinet/tcp_timewait.c b/sys/netinet/tcp_timewait.c index 2064df6e6b65..1e23552ec2a7 100644 --- a/sys/netinet/tcp_timewait.c +++ b/sys/netinet/tcp_timewait.c @@ -183,23 +183,27 @@ SYSCTL_INT(_net_inet_tcp, OID_AUTO, isn_reseed_interval, CTLFLAG_RW, * 1024 exists only for debugging. A good production default would be * something like 6100. */ +SYSCTL_NODE(_net_inet_tcp, OID_AUTO, inflight, CTLFLAG_RW, 0, + "TCP inflight data limiting"); + static int tcp_inflight_enable = 1; -SYSCTL_INT(_net_inet_tcp, OID_AUTO, inflight_enable, CTLFLAG_RW, +SYSCTL_INT(_net_inet_tcp_inflight, OID_AUTO, enable, CTLFLAG_RW, &tcp_inflight_enable, 0, "Enable automatic TCP inflight data limiting"); static int tcp_inflight_debug = 0; -SYSCTL_INT(_net_inet_tcp, OID_AUTO, inflight_debug, CTLFLAG_RW, +SYSCTL_INT(_net_inet_tcp_inflight, OID_AUTO, debug, CTLFLAG_RW, &tcp_inflight_debug, 0, "Debug TCP inflight calculations"); static int tcp_inflight_min = 6144; -SYSCTL_INT(_net_inet_tcp, OID_AUTO, inflight_min, CTLFLAG_RW, +SYSCTL_INT(_net_inet_tcp_inflight, OID_AUTO, min, CTLFLAG_RW, &tcp_inflight_min, 0, "Lower-bound for TCP inflight window"); static int tcp_inflight_max = TCP_MAXWIN << TCP_MAX_WINSHIFT; -SYSCTL_INT(_net_inet_tcp, OID_AUTO, inflight_max, CTLFLAG_RW, +SYSCTL_INT(_net_inet_tcp_inflight, OID_AUTO, max, CTLFLAG_RW, &tcp_inflight_max, 0, "Upper-bound for TCP inflight window"); + static int tcp_inflight_stab = 20; -SYSCTL_INT(_net_inet_tcp, OID_AUTO, inflight_stab, CTLFLAG_RW, +SYSCTL_INT(_net_inet_tcp_inflight, OID_AUTO, stab, CTLFLAG_RW, &tcp_inflight_stab, 0, "Inflight Algorithm Stabilization 20 = 2 packets"); SYSCTL_NODE(_net_inet_tcp, OID_AUTO, sack, CTLFLAG_RW, 0, "TCP SACK");