Enable BBR correctly (second run)
In this section, we verify and enable TCP BBR (Bottleneck Bandwidth and Round-trip propagation time) on Debian 12.
Goal: confirm the kernel supports BBR and it is actually in use to optimize proxy network speeds.
7.1 Background: what went wrong before
We previously tried a risky approach meant for older Debian versions:
- adding an old backports source (
buster-backports) to/etc/apt/sources.list. - installing a different kernel from that source.
- rebooting.
Result:
- system behavior became unstable; SSH broke, returning
Connection refused, and the custom SSH port was unexpectedly wiped out and reset to 22 . - conclusion: do NOT mix old Debian backports on Debian 12 just to get BBR.
So we switched to the correct approach:
- use the Debian 12 kernel as-is. Debian 12's stock kernel already supports BBR natively.
7.2 Verify BBR is available
We checked the current congestion control:
shell
sudo sysctl net.ipv4.tcp_congestion_controlWe also checked what algorithms are available:
shell
sudo sysctl net.ipv4.tcp_available_congestion_controlExpected output pattern:
- available includes
bbr(e.g.,reno cubic bbr). - current is
bbr(or you can switch to it).
7.3 Common problem: sysctl: command not found
When running the checks without sudo, we saw :
-bash: sysctl: command not found
Cause:
sysctlis located in/usr/sbin/, which is usually not in a normal user's$PATH.
Fix:
- run the command with
sudo, which includes/usr/sbinin its path. - if the binary is truly missing, install the
procpspackage :shellsudo apt update sudo apt install -y procps
7.4 Enable BBR via sysctl config (The Modern Way)
Instead of editing the main /etc/sysctl.conf directly, it is best practice on modern Debian to drop a clean file into /etc/sysctl.d/ .
- create the configuration file and add the BBR parameters :shell
echo "net.core.default_qdisc=fq" | sudo tee /etc/sysctl.d/99-bbr.conf echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.d/99-bbr.conf - apply the settings without needing to reboot :shell
sudo sysctl --system - verify BBR is loaded :shell(Note: It usually loads automatically when first used, so don't worry if it doesn't show up immediately ).
lsmod | grep bbr
7.5 Quick checklist for this stage
After finishing this section, you should have:
- Verified that the stock Debian 12 kernel supports
bbr. - Confirmed
tcp_available_congestion_controlincludesbbr. - Confirmed
tcp_congestion_controlis actively set tobbr. - A dedicated
/etc/sysctl.d/99-bbr.conffile ensuring BBR persists across reboots. - Avoided any risky backports or kernel mixing.