# TCP BBR Congestion Control



## bolmsted (Dec 31, 2021)

Can TCP BBR Congestion Control be turned on by default in the FreeBSD 13.x kernel?

https://lists.freebsd.org/pipermail/freebsd-current/2020-April/075930.html

Looks like it is a matter of adding
makeoptions  WITH_EXTRA_TCP_STACKS=1
options              TCPHPTS

and then 
kldload tcp_bbr
sudo sysctl net.inet.tcp.functions_default=bbr

or to make it permanent add
tcp_bbr_load="YES" to /boot/loader.conf.local
net.inet.tcp.functions_default=bbr to /etc/sysctl.conf



There are a number of downstream projects that could benefit from this being enabled without having to explicitly enable it every time there is a kernel release change, etc.


----------



## mark_j (Jan 1, 2022)

Kernel changes don't happen that often; this isn't Linux... 
It's deemed a non-essential aspect of the kernel so it won't be included in a generic build anytime soon I would expect.
I don't pretend to know enough about BBR congestion control suffice to say we use it at work on the 10Gbps+ links and our kernel is built to suit.

Personally, I don't want a GENERIC kernel with stuff like that in it when it's trivial to build a custom one.


----------



## bolmsted (Jan 1, 2022)

Well it is an option to turn on additional congestion control that you have to explicitly turn on using the sysctl command so I see it as a non issue to have it available but disabled by default.

It may be trivial to you to build a new one but trying to get these changes incorporated into downstream projects can be the issue.


----------



## mark_j (Jan 1, 2022)

Yep, I'm not convinced about your arguments, but hey, you're free to push your agenda. 

First, it is an issue because that code is in the kernel. It doesn't matter if it's used or not, it's bloat and unnecessary at that. Why not insist ZFS is in the kernel as well? There can be an argument made for that more than a congestion control method not used by MOST people, even business.

Second, compiling a kernel is trivial. Patching a kernel and rebuilding it is trivial and you don't even touch your config file. You create your default kernel config with these two options included - easy peasy.

Third, what downstream projects have this issue? I would argue if you're spawning a project off FreeBSD you have some idea how to compile a kernel. For example, I'm sure the guys at GhostBSD know how to compile a kernel with the stuff they need.

Fourth, you are arguing in the wrong spot. You likely need to make your argument to the mailing lists, something like freebsd-arch, but I'm not sure you'll get the answer you want. Then again, you might.


----------

