diff options
author | Randall Stewart <rrs@FreeBSD.org> | 2022-02-07 11:37:46 +0000 |
---|---|---|
committer | Randall Stewart <rrs@FreeBSD.org> | 2022-02-07 11:37:46 +0000 |
commit | a9696510f5caef4a7c525fcf4359597798829350 (patch) | |
tree | 1b26a5b3ac085e925285d11de893887d98fa0ed6 /share | |
parent | 476438e81f1ee4aee9065e44753fc66964221aa1 (diff) | |
download | src-a9696510f5caef4a7c525fcf4359597798829350.tar.gz src-a9696510f5caef4a7c525fcf4359597798829350.zip |
tcp: Add hystart++ to our cubic implementation.
As promised to the transport call on 11/4/22 here is an implementation
of hystart++ for cubic. It also cleans up the tcp_congestion function
to have a better name. Common variables are moved into the general
cc.h structure so that both cubic and newreno can use them for
hystart++
Reviewed by: Michael Tuexen, Richard Scheffenegger
Sponsored by: Netflix Inc.
Differential Revision: https://reviews.freebsd.org/D33035
Diffstat (limited to 'share')
-rw-r--r-- | share/man/man4/cc_newreno.4 | 39 | ||||
-rw-r--r-- | share/man/man4/mod_cc.4 | 25 |
2 files changed, 25 insertions, 39 deletions
diff --git a/share/man/man4/cc_newreno.4 b/share/man/man4/cc_newreno.4 index 1c4f4a39cb36..71d3a239ecd1 100644 --- a/share/man/man4/cc_newreno.4 +++ b/share/man/man4/cc_newreno.4 @@ -75,21 +75,10 @@ the congestion window in response to an ECN congestion signal when .Va net.inet.tcp.cc.abe=1 per: cwnd = (cwnd * CC_NEWRENO_BETA_ECN) / 100. Default is 80. -.It Va CC_NEWRENO_ENABLE_HYSTART -will enable or disable the application of Hystart++. -The current implementation allows the values 0, 1, 2 and 3. -A value of 0 (the default) disables the use of Hystart++. -Setting the value to 1 enables Hystart++. -Setting the value to 2 enables Hystart++ but also will cause, on exit from Hystart++'s CSS, to -set the cwnd to the value of where the increase in RTT first began as -well as setting ssthresh to the flight at send when we exit CSS. -Setting a value of 3 will keep the setting of the cwnd the same as 2, but will cause ssthresh -to be set to the average value between the lowest fas rtt (the value cwnd is -set to) and the fas value at exit of CSS. .PP Note that currently the only way to enable hystart++ is to enable it via socket option. -When enabling it a value of 1 will enable precise internet-draft behavior +When enabling it a value of 1 will enable precise internet-draft (version 4) behavior (subject to any MIB variable settings), other setting (2 and 3) are experimental. .El .PP @@ -120,32 +109,6 @@ the congestion window in response to an ECN congestion signal when .Va net.inet.tcp.cc.abe=1 per: cwnd = (cwnd * beta_ecn) / 100. Default is 80. -.It Va hystartplusplus.bblogs -This boolean controls if black box logging will be done for hystart++ events. If set -to zero (the default) no logging is performed. -If set to one then black box logs will be generated on all hystart++ events. -.It Va hystartplusplus.css_rounds -This value controls the number of rounds that CSS runs for. -The default value matches the current internet-draft of 5. -.It Va hystartplusplus.css_growth_div -This value controls the divisor applied to slowstart during CSS. -The default value matches the current internet-draft of 4. -.It Va hystartplusplus.n_rttsamples -This value controls how many rtt samples must be collected in each round for -hystart++ to be active. -The default value matches the current internet-draft of 8. -.It Va hystartplusplus.maxrtt_thresh -This value controls the maximum rtt variance clamp when considering if CSS is needed. -The default value matches the current internet-draft of 16000 (in microseconds). -For further explanation please see the internet-draft. -.It Va hystartplusplus.minrtt_thresh -This value controls the minimum rtt variance clamp when considering if CSS is needed. -The default value matches the current internet-draft of 4000 (in microseconds). -For further explanation please see the internet-draft. -.It Va hystartplusplus.lowcwnd -This value controls what is the lowest congestion window that the tcp -stack must be at before hystart++ engages. -The default value matches the current internet-draft of 16. .El .Sh SEE ALSO .Xr cc_cdg 4 , diff --git a/share/man/man4/mod_cc.4 b/share/man/man4/mod_cc.4 index 84edf0b2a8ed..ddc7440a4ca7 100644 --- a/share/man/man4/mod_cc.4 +++ b/share/man/man4/mod_cc.4 @@ -83,7 +83,7 @@ The framework exposes the following variables in the branch of the .Xr sysctl 3 MIB: -.Bl -tag -width ".Va abe_frlossreduce" +.Bl -tag -width ".Va hystartplusplus.css_growth_div" .It Va available Read-only list of currently available congestion control algorithms by name. .It Va algorithm @@ -102,10 +102,33 @@ support for ABE and for configuration details. .It Va abe_frlossreduce If non-zero, apply standard beta instead of ABE-beta during ECN-signalled congestion recovery episodes if loss also needs to be repaired. +.It Va hystartplusplus.bblogs +This boolean controls if black box logging will be done for hystart++ events. +If set to zero (the default) no logging is performed. +If set to one then black box logs will be generated on all hystart++ events. +.It Va hystartplusplus.css_rounds +This value controls the number of rounds that CSS runs for. +The default value matches the current internet-draft of 5. +.It Va hystartplusplus.css_growth_div +This value controls the divisor applied to slowstart during CSS. +The default value matches the current internet-draft of 4. +.It Va hystartplusplus.n_rttsamples +This value controls how many rtt samples must be collected in each round for +hystart++ to be active. +The default value matches the current internet-draft of 8. +.It Va hystartplusplus.maxrtt_thresh +This value controls the maximum rtt variance clamp when considering if CSS is needed. +The default value matches the current internet-draft of 16000 (in microseconds). +For further explanation please see the internet-draft. +.It Va hystartplusplus.minrtt_thresh +This value controls the minimum rtt variance clamp when considering if CSS is needed. +The default value matches the current internet-draft of 4000 (in microseconds). +For further explanation please see the internet-draft. .El .Pp Each congestion control module may also expose other MIB variables to control their behaviour. +Note that both newreno and cubic now support hystart++ based on the version 3 of the internet-draft. .Sh Kernel Configuration .Pp All of the available congestion control modules may also be loaded |