Skip to main content
To enable BBR on Linux, create /etc/sysctl.d/99-bbr.conf with net.core.default_qdisc=fq and net.ipv4.tcp_congestion_control=bbr, then run sudo sysctl --system. Check it with sysctl net.ipv4.tcp_congestion_control, which should print bbr. BBR needs kernel 4.9 or newer, so every current Ubuntu, Debian, AlmaLinux and Rocky release supports it. It affects new TCP connections only.

Before you start

  • TCP congestion control decides how fast a server sends data and how it reacts to loss. The algorithm your server uses now is shown by the first command below (often cubic). BBR, developed by Google, estimates the available bandwidth and round-trip time instead of waiting for packet loss, which often gives higher throughput on long or slightly lossy paths.
  • BBR changes how your server sends TCP data, such as web pages, downloads and file transfers. It doesn’t change incoming traffic or UDP traffic, such as most game server traffic.
  • Commands use sudo; as root, leave it out.

How to check which algorithm you use now

If bbr isn’t in the available list yet, the kernel module isn’t loaded. The steps below load it.

How to enable BBR

1

Check the kernel version

BBR is included in Linux 4.9 and later. Ubuntu 24.04, Debian 13 and AlmaLinux/Rocky 9 and 10 all ship newer kernels.
2

Load the BBR module

The second line loads the module at every boot.
3

Create the sysctl file

Files in /etc/sysctl.d/ are read at boot on every systemd distribution, so this survives reboots.
4

Apply the settings

The output lists each file it reads, ending with your 99-bbr.conf values.

How to check it worked

Existing connections keep their old algorithm. To see new connections using BBR, open a new SSH session and run:

Why set the qdisc to fq?

A qdisc (queueing discipline) decides how outgoing packets wait in the queue. Early BBR needed the fq qdisc to pace packets. According to Google’s BBR quick-start, Linux 4.20 and later can pace packets inside TCP, so any qdisc works, but fq still performs better on busy servers. That’s why this guide sets both. Ubuntu’s default is fq_codel.

How to undo BBR

The qdisc returns to your distribution’s default after a reboot.
On container-based virtualisation (for example LXC or OpenVZ), the kernel belongs to the host and you usually can’t change these settings. A KVM VPS or a dedicated server runs its own kernel.

Frequently asked questions

Does BBR reduce ping in games?

No. BBR changes how fast TCP sends data; it doesn’t shorten the network path, and most game traffic uses UDP. It can help downloads, web pages and file transfers from your server, especially to distant users.

Should I use BBR or cubic?

On servers that send a lot of data over long distances, BBR often gives better throughput. Measure before and after with iperf3 from a distant machine and keep whichever performs better for you.

Do I need to set BBR on the client too?

No. Congestion control is chosen by the sender. Enabling it on the server affects data the server sends.

Is BBR available on Windows Server?

This guide covers Linux only. Windows Server has its own TCP stack and settings.

VPS and dedicated server guides

Every guide in this section.

Kernel settings with sysctl

How sysctl files work.

Test speed with iperf3

Measure the difference.

Diagnose network latency

Find where lag starts.

Tune Linux for game servers

More performance settings.

Checked against the Linux kernel IP sysctl documentation and Google’s BBR quick-start guide on 4 November 2026; the check commands (sysctl, ss -ti) were run on Ubuntu 24.04 LTS; the steps that change kernel settings were not run there. Commands can differ on other distributions or releases.

Need Extra Help?

If you encounter any issues, our support team is ready to assist:

Save on Your Hosting

Ready to upgrade your hosting? Use code KB20 at checkout for 20% off your first order!

Last Updated: November 2026