tcp: make CUBIC the default congestion control mechanism.
This changes the default TCP Congestion Control (CC) to CUBIC. For small, transactional exchanges (e.g. web objects <15kB), this will not have a material effect. However, for long duration data transfers, CUBIC allocates a slightly higher fraction of the available bandwidth, when competing against NewReno CC. Reviewed By: tuexen, mav, #transport, guest-ccui, emaste Relnotes: Yes Sponsored by: NetApp, Inc. Differential Revision: https://reviews.freebsd.org/D36537
This commit is contained in:
parent
ea6d0de299
commit
bb1d472d79
@ -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
|
||||
|
@ -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
|
||||
|
@ -29,7 +29,7 @@
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd August 6, 2019
|
||||
.Dd September 13, 2022
|
||||
.Dt MOD_CC 4
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -47,7 +47,7 @@ using the
|
||||
.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 @@ For further explanation please see the internet-draft.
|
||||
.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 @@ Compilation of the kernel will fail if these two conditions are not met.
|
||||
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 algorithm also requires the TCP_HHOOK option as well.
|
||||
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 ,
|
||||
|
@ -22,6 +22,6 @@ options GEOM_PART_MBR
|
||||
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
|
||||
|
@ -6,5 +6,5 @@
|
||||
device mem
|
||||
|
||||
# Default congestion control algorithm
|
||||
options CC_NEWRENO # include newreno congestion control
|
||||
options CC_CUBIC # include CUBIC congestion control
|
||||
|
||||
|
@ -8,8 +8,7 @@ options PREEMPTION # Enable kernel thread preemption
|
||||
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
|
||||
|
@ -8,8 +8,7 @@ options PREEMPTION # Enable kernel thread preemption
|
||||
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
|
||||
|
@ -14,6 +14,6 @@ options GEOM_PART_MBR
|
||||
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
|
||||
|
@ -11,8 +11,7 @@ options PREEMPTION # Enable kernel thread preemption
|
||||
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
|
||||
|
@ -651,13 +651,13 @@ options INET6 #IPv6 communications protocols
|
||||
#
|
||||
# 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,7 +667,7 @@ options CC_HD
|
||||
options CC_HTCP
|
||||
options CC_NEWRENO
|
||||
options CC_VEGAS
|
||||
options CC_DEFAULT=\"newreno\"
|
||||
options CC_DEFAULT=\"cubic\"
|
||||
options RATELIMIT # TX rate limiting support
|
||||
|
||||
options ROUTETABLES=2 # allocated fibs up to 65536. default is 1.
|
||||
|
@ -23,7 +23,7 @@ options GEOM_PART_MBR
|
||||
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
|
||||
|
@ -81,7 +81,7 @@ __FBSDID("$FreeBSD$");
|
||||
* 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;
|
||||
|
@ -13,6 +13,6 @@ options GEOM_PART_BSD
|
||||
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
|
||||
|
@ -13,6 +13,6 @@ options GEOM_PART_BSD
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user