tcp: better congestion control defaults

Define CC_NEWRENO in all the appropriate DEFAULTS and std.* config
files. It's the default congestion control algorithm.  Add code to cc.c
so that CC_DEFAULT is "newreno" if it's not overriden in the config
file.

Sponsored by: Netflix
Fixes: b8d60729de ("tcp: Congestion control cleanup.")
Revired by: manu, hselasky, jhb, glebius, tuexen
Differential Revision:	https://reviews.freebsd.org/D32964
This commit is contained in:
Warner Losh 2021-11-12 10:05:03 -07:00
parent ae062ff269
commit 7e3c9ec906
14 changed files with 28 additions and 12 deletions

View File

@ -21,4 +21,7 @@ options GEOM_PART_EBR
options GEOM_PART_MBR
options GEOM_PART_GPT
# Default congestion control algorithm
options CC_NEWRENO # include newreno congestion control
options NEW_PCIB

View File

@ -30,8 +30,6 @@ 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 IPSEC_SUPPORT # Allow kldload of ipsec and tcpmd5
options ROUTE_MPATH # Multipath routing support
options FIB_ALGO # Modular fib lookups

View File

@ -43,8 +43,6 @@ options NUMA # Non-Uniform Memory Architecture support
options PREEMPTION # Enable kernel thread preemption
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 TCP_OFFLOAD # TCP offload
options SCTP_SUPPORT # Allow kldload of SCTP
options FFS # Berkeley Fast Filesystem

View File

@ -5,3 +5,6 @@
device mem
# Default congestion control algorithm
options CC_NEWRENO # include newreno congestion control

View File

@ -13,4 +13,7 @@ options GEOM_PART_BSD
options GEOM_PART_MBR
options GEOM_PART_GPT
# Default congestion control algorithm
options CC_NEWRENO # include newreno congestion control
options NEW_PCIB

View File

@ -22,6 +22,9 @@ options GEOM_PART_EBR
options GEOM_PART_MBR
options GEOM_PART_GPT
# Default congestion control algorithm
options CC_NEWRENO # include newreno congestion control
# enable support for native hardware
device atpic

View File

@ -31,8 +31,6 @@ 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 IPSEC_SUPPORT # Allow kldload of ipsec and tcpmd5
options ROUTE_MPATH # Multipath routing support
options TCP_HHOOK # hhook(9) framework for TCP

View File

@ -44,8 +44,6 @@ options SCHED_ULE # ULE scheduler
options PREEMPTION # Enable kernel thread preemption
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 TCP_OFFLOAD # TCP offload
options SCTP_SUPPORT # Allow kldload of SCTP
options FFS # Berkeley Fast Filesystem

View File

@ -9,3 +9,6 @@ device uart_ns8250
options GEOM_PART_BSD
options GEOM_PART_MBR
# Default congestion control algorithm
options CC_NEWRENO # include newreno congestion control

View File

@ -77,6 +77,13 @@ __FBSDID("$FreeBSD$");
#include <netinet/cc/cc.h>
#include <netinet/cc/cc_module.h>
/*
* Have a sane default if no CC_DEFAULT is specified in the kernel config file.
*/
#ifndef CC_DEFAULT
#define CC_DEFAULT "newreno"
#endif
MALLOC_DEFINE(M_CC_MEM, "CC Mem", "Congestion Control State memory");
/*

View File

@ -12,4 +12,7 @@ device uart_ns8250
options GEOM_PART_BSD
options GEOM_PART_MBR
# Default congestion control algorithm
options CC_NEWRENO # include newreno congestion control
options NEW_PCIB

View File

@ -38,8 +38,6 @@ 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 IPSEC_SUPPORT # Allow kldload of ipsec and tcpmd5
options TCP_HHOOK # hhook(9) framework for TCP
options TCP_RFC7413 # TCP Fast Open

View File

@ -12,4 +12,7 @@ device mem # Memory and kernel memory devices
options GEOM_PART_BSD
options GEOM_PART_MBR
# Default congestion control algorithm
options CC_NEWRENO # include newreno congestion control
options NEW_PCIB

View File

@ -29,8 +29,6 @@ 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 TCP_HHOOK # hhook(9) framework for TCP
options IPSEC_SUPPORT # Allow kldload of ipsec and tcpmd5
options ROUTE_MPATH # Multipath routing support