diff --git a/share/man/man4/cc_cubic.4 b/share/man/man4/cc_cubic.4 --- a/share/man/man4/cc_cubic.4 +++ b/share/man/man4/cc_cubic.4 @@ -30,7 +30,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 13, 2021 +.Dd September 13, 2022 .Dt CC_CUBIC 4 .Os .Sh NAME @@ -39,6 +39,7 @@ .Sh DESCRIPTION The CUBIC congestion control algorithm was designed to provide increased throughput in fast and long-distance networks. +The CUBIC congestion control algorithm is the default for TCP. It attempts to maintain fairness when competing with legacy NewReno TCP in lower speed scenarios where NewReno is able to operate adequately. .Pp diff --git a/share/man/man4/cc_newreno.4 b/share/man/man4/cc_newreno.4 --- a/share/man/man4/cc_newreno.4 +++ b/share/man/man4/cc_newreno.4 @@ -30,7 +30,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 13, 2021 +.Dd September 13, 2022 .Dt CC_NEWRENO 4 .Os .Sh NAME @@ -39,7 +39,6 @@ .Sh SYNOPSIS .In netinet/cc/cc_newreno.h .Sh DESCRIPTION -The NewReno congestion control algorithm is the default for TCP. Details about the algorithm can be found in RFC5681. .Sh Socket Options The diff --git a/share/man/man4/mod_cc.4 b/share/man/man4/mod_cc.4 --- a/share/man/man4/mod_cc.4 +++ b/share/man/man4/mod_cc.4 @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 6, 2019 +.Dd September 13, 2022 .Dt MOD_CC 4 .Os .Sh NAME @@ -47,7 +47,7 @@ .Xr kld 4 facility. .Pp -The default algorithm is NewReno, and all connections use the default unless +The default algorithm is CUBIC, and all connections use the default unless explicitly overridden using the .Dv TCP_CONGESTION socket option (see @@ -127,7 +127,7 @@ .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. +Note that both NewReno and CUBIC now support Hystart++ based on the version 3 of the internet-draft. .Sh Kernel Configuration All of the available congestion control modules may also be loaded via kernel configutation options. @@ -138,10 +138,10 @@ The framework exposes the following kernel configuration options. .Bl -tag -width ".Va CC_NEWRENO" .It Va CC_NEWRENO -This directive loads the newreno congestion control algorithm and is included -in GENERIC by default. +This directive loads the NewReno congestion control algorithm. .It Va CC_CUBIC -This directive loads the cubic congestion control algorithm. +This directive loads the CUBIC congestion control algorithm and is included +in GENERIC by default. .It Va CC_VEGAS This directive loads the vegas congestion control algorithm, note that this algorithm also requires the TCP_HHOOK option as well. @@ -160,7 +160,7 @@ This directive loads the htcp congestion control algorithm. .It Va CC_DEFAULT This directive specifies the string that represents the name of the system default algorithm, the GENERIC kernel -defaults this to newreno. +defaults this to CUBIC. .El .Sh SEE ALSO .Xr cc_cdg 4 , diff --git a/sys/amd64/conf/DEFAULTS b/sys/amd64/conf/DEFAULTS --- a/sys/amd64/conf/DEFAULTS +++ b/sys/amd64/conf/DEFAULTS @@ -22,6 +22,6 @@ options GEOM_PART_GPT # Default congestion control algorithm -options CC_NEWRENO # include newreno congestion control +options CC_CUBIC # include CUBIC congestion control options NEW_PCIB diff --git a/sys/arm/conf/DEFAULTS b/sys/arm/conf/DEFAULTS --- a/sys/arm/conf/DEFAULTS +++ b/sys/arm/conf/DEFAULTS @@ -6,5 +6,5 @@ device mem # Default congestion control algorithm -options CC_NEWRENO # include newreno congestion control +options CC_CUBIC # include CUBIC congestion control diff --git a/sys/arm/conf/std.armv6 b/sys/arm/conf/std.armv6 --- a/sys/arm/conf/std.armv6 +++ b/sys/arm/conf/std.armv6 @@ -8,8 +8,7 @@ options VIMAGE # Subsystem virtualization, e.g. VNET options INET # InterNETworking options INET6 # IPv6 communications protocols -options CC_NEWRENO # include newreno congestion control -options CC_DEFAULT=\"newreno\" # define our default CC module it should be compiled in. +options CC_CUBIC # include CUBIC congestion control options TCP_HHOOK # hhook(9) framework for TCP device crypto # core crypto support options IPSEC_SUPPORT # Allow kldload of ipsec and tcpmd5 diff --git a/sys/arm/conf/std.armv7 b/sys/arm/conf/std.armv7 --- a/sys/arm/conf/std.armv7 +++ b/sys/arm/conf/std.armv7 @@ -8,8 +8,7 @@ options VIMAGE # Subsystem virtualization, e.g. VNET options INET # InterNETworking options INET6 # IPv6 communications protocols -options CC_NEWRENO # include newreno congestion control -options CC_DEFAULT=\"newreno\" # define our default CC module it should be compiled in. +options CC_CUBIC # include CUBIC congestion control options TCP_HHOOK # hhook(9) framework for TCP device crypto # core crypto support options IPSEC_SUPPORT # Allow kldload of ipsec and tcpmd5 diff --git a/sys/arm64/conf/DEFAULTS b/sys/arm64/conf/DEFAULTS --- a/sys/arm64/conf/DEFAULTS +++ b/sys/arm64/conf/DEFAULTS @@ -14,6 +14,6 @@ options GEOM_PART_GPT # Default congestion control algorithm -options CC_NEWRENO # include newreno congestion control +options CC_CUBIC # include CUBIC congestion control options NEW_PCIB diff --git a/sys/arm64/conf/std.arm64 b/sys/arm64/conf/std.arm64 --- a/sys/arm64/conf/std.arm64 +++ b/sys/arm64/conf/std.arm64 @@ -11,8 +11,7 @@ options VIMAGE # Subsystem virtualization, e.g. VNET options INET # InterNETworking options INET6 # IPv6 communications protocols -options CC_NEWRENO # include newreno congestion control -options CC_DEFAULT=\"newreno\" # define our default CC module it should be compiled in. +options CC_CUBIC # include CUBIC congestion control options IPSEC_SUPPORT # Allow kldload of ipsec and tcpmd5 options ROUTE_MPATH # Multipath routing support options FIB_ALGO # Modular fib lookups diff --git a/sys/conf/NOTES b/sys/conf/NOTES --- a/sys/conf/NOTES +++ b/sys/conf/NOTES @@ -651,13 +651,13 @@ # # Note if you include INET/INET6 or both options # You *must* define at least one of the congestion control -# options or the compile will fail. Generic defines -# options CC_NEWRENO. You also will need to specify -# a default or the compile of your kernel will fail -# as well. The string in default is the name of the +# options or the compile will fail. GENERIC defines +# options CC_CUBIC. You may want to specify a default +# if multiple congestion controls are compiled in. +# The string in default is the name of the # cc module as it would appear in the sysctl for -# setting the default. Generic defines newreno -# as shown below. +# setting the default. The code defines CUBIC +# as default, or the sole cc_module compiled in. # options CC_CDG options CC_CHD @@ -667,8 +667,8 @@ options CC_HTCP options CC_NEWRENO options CC_VEGAS -options CC_DEFAULT=\"newreno\" -options RATELIMIT # TX rate limiting support +options CC_DEFAULT=\"cubic\" +options RATELIMIT # TX rate limiting support options ROUTETABLES=2 # allocated fibs up to 65536. default is 1. # but that would be a bad idea as they are large. diff --git a/sys/i386/conf/DEFAULTS b/sys/i386/conf/DEFAULTS --- a/sys/i386/conf/DEFAULTS +++ b/sys/i386/conf/DEFAULTS @@ -23,7 +23,7 @@ options GEOM_PART_GPT # Default congestion control algorithm -options CC_NEWRENO # include newreno congestion control +options CC_CUBIC # include CUBIC congestion control # enable support for native hardware device atpic diff --git a/sys/netinet/cc/cc.c b/sys/netinet/cc/cc.c --- a/sys/netinet/cc/cc.c +++ b/sys/netinet/cc/cc.c @@ -81,7 +81,7 @@ * Have a sane default if no CC_DEFAULT is specified in the kernel config file. */ #ifndef CC_DEFAULT -#define CC_DEFAULT "newreno" +#define CC_DEFAULT "cubic" #endif uint32_t hystart_minrtt_thresh = 4000; diff --git a/sys/powerpc/conf/DEFAULTS b/sys/powerpc/conf/DEFAULTS --- a/sys/powerpc/conf/DEFAULTS +++ b/sys/powerpc/conf/DEFAULTS @@ -13,6 +13,6 @@ options GEOM_PART_MBR # Default congestion control algorithm -options CC_NEWRENO # include newreno congestion control +options CC_CUBIC # include CUBIC congestion control options NEW_PCIB diff --git a/sys/riscv/conf/DEFAULTS b/sys/riscv/conf/DEFAULTS --- a/sys/riscv/conf/DEFAULTS +++ b/sys/riscv/conf/DEFAULTS @@ -13,6 +13,6 @@ options GEOM_PART_MBR # Default congestion control algorithm -options CC_NEWRENO # include newreno congestion control +options CC_CUBIC # include CUBIC congestion control options NEW_PCIB