BBR (Bottleneck Bandwidth and Round-trip propagation time) is Google’s TCP congestion control algorithm, built into the Linux kernel since version 4.9. Where the default CUBIC algorithm probes for bandwidth by filling the network buffer and watching for loss, BBR builds a model of the bottleneck link and paces packets against it. On a typical VPS connection — a long-distance path with real latency and bufferbloat — the practical result is higher throughput and noticeably lower latency. This guide covers the prerequisites, the exact sysctl changes, verification commands, and a clean rollback path.
When BBR Helps (and When It Doesn’t)
BBR shines on high-bandwidth, high-latency paths: a US-based VPS reached from Europe or Asia, large file downloads, rsync of big datasets, and media streaming. Tests on such links commonly show 2–3x throughput gains and a 40–60% drop in latency spikes compared with CUBIC. It does little for very short transfers of a few hundred kilobytes, because those connections never leave slow-start, and it cannot overcome a provider that shapes your uplink with a hard cap. Measure with iperf3 before and after the change rather than trusting a gut feeling.
Prerequisites
You need kernel 4.9 or newer. Check what you are running:
uname -r
Debian 10/11/12, Ubuntu 18.04 and newer, and current AlmaLinux or Rocky Linux images all ship kernels that include BBR. Confirm the module is actually available:
sysctl net.ipv4.tcp_available_congestion_control
The output should include bbr. If your kernel is older, run a full distro upgrade or reinstall with a current cloud image — there is no supported way to backport BBR to a 3.x kernel.
Enable BBR Persistently
Create a sysctl drop-in file so the setting survives reboots:
sudo tee /etc/sysctl.d/99-bbr.conf <<'EOF'
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
EOF
Apply it immediately:
sudo sysctl --system
The fq (fair queueing) qdisc matters: BBR was designed to work with it, and it smooths bursty senders. On older systems you can use sudo sysctl -p /etc/sysctl.d/99-bbr.conf instead.
Verify BBR Is Actually Active
Three quick checks. First, the global default:
sysctl net.ipv4.tcp_congestion_control
It should print bbr. Next, look at a live connection — the congestion control field appears on the right side of the ss output:
ss -tin | head
Finally, confirm the qdisc on your main interface (cloud VPS interfaces are often named ens3, enp1s0, or eth0):
tc qdisc show dev eth0
You should see fq. Note that new connections pick up BBR immediately, but long-lived existing connections may keep CUBIC until they are re-established.
Quick Bufferbloat Check
Bufferbloat — the latency inflation that happens when a full queue delays packets — is the main symptom BBR fixes, so it is worth measuring it directly. Open a second terminal and ping your gateway continuously while downloading a large file with wget or curl:
ping -c 100 192.0.2.1
With CUBIC, the round-trip time typically inflates by 50–150 ms while the download saturates the link; with BBR and the fq qdisc, latency stays flat because the sender never overfills the queue. If you see no difference on your path, your bottleneck is probably elsewhere — the host’s uplink cap, the provider’s shaping, or the remote server itself — and no congestion algorithm will change that.
Optional Tuning Notes
Leave the rest of the network defaults alone unless you have a specific problem. One safe tweak for busy web servers is lowering net.ipv4.tcp_notsent_lowat to 16384, which cuts latency for small responses — but test it under load first. On kernels where tcp_bbr2 is available, the BBRv2 variant can be enabled the same way if you prefer the loss-aware behavior.
Rollback
If a provider or workload misbehaves — some very small plans with aggressive shaping see higher loss under BBR — reverting takes one file edit:
sudo tee /etc/sysctl.d/99-bbr.conf <<'EOF'
net.ipv4.tcp_congestion_control = cubic
net.core.default_qdisc = fq_codel
EOF
sudo sysctl --system
The change applies immediately and needs no reboot in either direction.
Measure Before and After
Run iperf3 against a distant endpoint before and after the change to quantify the gain:
iperf3 -c iperf.he.net -R
Also watch ping latency under load for bufferbloat. BBR is one piece of the performance puzzle — CPU allocation, disk I/O, and memory sizing matter just as much. If you are still choosing a host, compare providers side by side in our VPS comparison table before committing, and check the FAQ section for questions about oversubscription and network caps.
Bottom Line
BBR is a ten-minute change with measurable upside on long-distance paths and no downside for typical web workloads. Enable it, verify with ss and tc, keep the rollback snippet handy, and re-test with iperf3. Then make sure the rest of the stack — see the full specs and pricing on the main site — is sized for what you are actually serving.
Need a VPS to try this on? InterServer’s VPS plans run current kernels with BBR available out of the box and no long-term contract.




Leave a Reply
You must be logged in to post a comment.