How to Enable BBR on AlmaLinux 10 (Step-by-Step)

Learn how to enable bbr on almalinux 10 with persistent kernel settings, fq queueing, verification commands, and common VPS fixes for reboot-safe tuning.
A glowing network path flows through a server rack beside a speed gauge on a midnight-blue background.

Enable BBR on AlmaLinux 10 to use a modern TCP congestion-control algorithm with the fq packet scheduler. You can apply the change immediately and make it survive reboots in about five minutes, without changing your firewall or application ports.

Prerequisites

  • An AlmaLinux 10 VPS with a kernel version of 4.9 or newer; the standard AlmaLinux 10 kernel is in the 6.12 series.
  • SSH access as root, or a normal account that can run commands with sudo.
  • Permission to load kernel modules and write files under /etc; a restricted container may not provide either capability.
  • No domain, web server, or open inbound port is required because BBR changes outbound and inbound TCP behavior at the kernel level.
  • If you need a server, use a Linux VPS from VPSLake with AlmaLinux 10 installed.

BBR is a TCP congestion-control algorithm, not a bandwidth upgrade. It can make better use of a path under congestion, but the result depends on the network, peer, and workload.

Step 1: Check AlmaLinux, the kernel, and the current TCP algorithm

Confirm the release and running kernel first so you do not apply the procedure to a different operating system or an unexpected provider kernel.

cat /etc/almalinux-release
uname -r
sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control

On AlmaLinux 10, the release line should begin with AlmaLinux release 10, and the kernel should normally begin with 6.12. A new installation commonly reports cubic as the current algorithm and may not list bbr until its module is loaded.

AlmaLinux release 10.x
6.12.0-...el10_...x86_64
net.ipv4.tcp_available_congestion_control = reno cubic
net.ipv4.tcp_congestion_control = cubic

The exact kernel suffix changes as AlmaLinux publishes updates. Do not downgrade just to match an example version.

Step 2: Load the BBR kernel module

Loading tcp_bbr makes the algorithm available to the running kernel; doing this before applying the sysctl file prevents a setting failure on systems where BBR is modular.

sudo modprobe tcp_bbr
sysctl net.ipv4.tcp_available_congestion_control
lsmod | grep '^tcp_bbr'

You should now see bbr in the available algorithms and a tcp_bbr line from lsmod:

net.ipv4.tcp_available_congestion_control = reno cubic bbr
tcp_bbr                20480  0

If bbr was already listed, modprobe simply confirms that the module is ready. The module size and usage count can differ between kernel builds.

Step 3: Save BBR and the fq scheduler permanently

Put this small configuration in its own file so it is easy to audit or remove and does not overwrite unrelated kernel tuning.

sudo tee /etc/modules-load.d/tcp_bbr.conf >/dev/null <<'EOF'
tcp_bbr
EOF
sudo tee /etc/sysctl.d/99-bbr.conf >/dev/null <<'EOF'
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
EOF
sudo sysctl -p /etc/sysctl.d/99-bbr.conf

The first file asks systemd to load BBR during future boots. The second selects BBR for new TCP connections and sets the default queueing discipline recommended with BBR; sysctl -p applies both values now.

Expected output is:

net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

The /etc/sysctl.d/ method follows the RHEL-compatible AlmaLinux layout described in Red Hat’s kernel-parameter documentation.

Step 4: Check the queueing discipline on the active interfaces

net.core.default_qdisc defines the default scheduler, while tc shows what an existing network interface is using right now.

tc qdisc show

Look for qdisc fq on the interface that carries VPS traffic, for example:

qdisc fq 0: dev eth0 root refcnt 2 limit 10000p buckets 1024 orphan_mask 1023

Interface names vary, so do not assume eth0. If the active device still shows fq_codel or another root qdisc, identify the device with ip -br link and apply fq for the current boot:

ip -br link
sudo tc qdisc replace dev YOUR_INTERFACE root fq
tc qdisc show dev YOUR_INTERFACE

Replace YOUR_INTERFACE with the real device name, such as ens3; the command changes only the root qdisc on that interface. To retain a deliberate per-interface qdisc across NetworkManager reactivations, use the active connection name shown by nmcli connection show --active:

nmcli connection show --active
sudo nmcli connection modify "YOUR_CONNECTION_NAME" tc.qdiscs "root fq"
sudo nmcli connection up "YOUR_CONNECTION_NAME"

The connection restart can briefly interrupt SSH, so use the VPS control panel’s console if you cannot risk losing your SSH session.

Verify BBR on AlmaLinux 10

Run one final check for the selected algorithm, the available module, the saved file, and the live qdisc. This proves the setting is active rather than merely present in a configuration file.

sysctl net.ipv4.tcp_congestion_control net.core.default_qdisc
sysctl net.ipv4.tcp_available_congestion_control
lsmod | grep '^tcp_bbr'
grep -Ev '^[[:space:]]*(#|$)' /etc/sysctl.d/99-bbr.conf
tc qdisc show

A successful result includes tcp_congestion_control = bbr, default_qdisc = fq, bbr in the available list, the tcp_bbr module, and qdisc fq on the active interface. The kernel setting governs new TCP connections; reconnect clients or restart long-lived services before comparing behavior.

For the kernel meanings of tcp_available_congestion_control and tcp_congestion_control, see the Linux kernel IP sysctl reference. Enabling BBR does not guarantee faster everyday traffic, so compare the actual application with representative peers instead of relying on a single speed test.

Troubleshooting

modprobe: FATAL: Module tcp_bbr not found

The running kernel does not have the BBR module available, or the matching kernel module package is missing. Update the AlmaLinux kernel packages, reboot into the newest installed kernel, and run sudo modprobe tcp_bbr again; if the VPS uses a provider-supplied custom kernel, ask the provider to expose a standard AlmaLinux kernel with BBR support.

sysctl: cannot set net.ipv4.tcp_congestion_control

This usually means BBR was not loaded before the setting was applied. Run sudo modprobe tcp_bbr, confirm that bbr appears in sysctl net.ipv4.tcp_available_congestion_control, then reload sudo sysctl -p /etc/sysctl.d/99-bbr.conf.

tc qdisc show still reports fq_codel

The default value did not replace the qdisc already attached to the interface. Apply sudo tc qdisc replace dev YOUR_INTERFACE root fq using the real interface name, then use the NetworkManager commands in Step 4 if that per-interface choice must survive a connection restart.

BBR disappears after reboot

Check that /etc/modules-load.d/tcp_bbr.conf contains exactly tcp_bbr and that /etc/sysctl.d/99-bbr.conf contains both settings. After correcting either file, run sudo modprobe tcp_bbr and sudo sysctl -p /etc/sysctl.d/99-bbr.conf; a managed or custom kernel may also prevent module loading at boot.

FAQ

Does BBR increase my VPS bandwidth?

No. BBR changes how TCP estimates capacity and paces traffic; it cannot raise the provider’s network limit or improve a congested remote peer. Its effect should be judged with the application and routes you actually use.

Is BBR used for UDP traffic?

No. These settings select a TCP congestion-control algorithm. UDP applications need their own congestion and rate-control behavior, so enabling BBR does not tune them.

Do I need to reboot after enabling BBR?

No reboot is needed for the current session after modprobe and sysctl -p succeed. The module-load file and sysctl file make the configuration available again after a reboot.

Can I return to CUBIC?

Yes. Change net.ipv4.tcp_congestion_control = bbr to cubic in /etc/sysctl.d/99-bbr.conf, run sudo sysctl -p /etc/sysctl.d/99-bbr.conf, and verify with sysctl net.ipv4.tcp_congestion_control. You can leave the BBR module-load file in place because loading the module does not select it.

Samrat Ghosh
Written by

Samrat Ghosh

Founder & Infrastructure Engineer

Samrat Ghosh is the founder of VPSLake, where he builds and runs the remote desktop and VPS hosting infrastructure the company is built on. He writes hands-on guides about RDP, Windows Server, VPS management and secure remote access - the practical documentation he wishes had…

Previous Article

Windows License for VPS: BYOL Costs and Activation

Next Article

Best VPS for VPN: WireGuard Picks for 2026

Write a Comment

Leave a Comment

Your email address will not be published. Required fields are marked *

Subscribe to our Newsletter

Subscribe to our email newsletter to get the latest posts delivered right to your email.
Pure inspiration, zero spam ✨