How to Enable BBR Congestion Control on Your VPS for 3x Faster Network Speeds
BBR (Bottleneck Bandwidth and Round-trip propagation time) is Google’s TCP congestion control algorithm that significantly improves throughput and reduces latency compared to default Linux algorithms like CUBIC. On long-distance or high-latency connections, BBR can deliver 2-3x higher throughput and 40-60% lower latency. This guide walks through enabling BBR on any modern Linux VPS.
What BBR Does Differently
Traditional congestion control (CUBIC, Reno) detects congestion only after packet loss occurs — they keep increasing send rate until the buffer fills and drops packets. BBR models the network path by measuring bandwidth and RTT in real time, then paces packets at the exact rate the link can sustain. The result: no bufferbloat, lower retransmit rates, and consistently higher throughput on lossy or high-latency paths.
Checking Your Current Congestion Control
First, check what algorithm your VPS currently uses:
# Check available congestion control algorithms
sysctl net.ipv4.tcp_available_congestion_control
# Check current active algorithm
sysctl net.ipv4.tcp_congestion_control
# Check if BBR module is available
lsmod | grep tcp_bbr
On most modern kernels (4.9+), BBR is either built-in or available as a loadable module. If lsmod | grep tcp_bbr returns nothing, you can load it manually.
Step 1: Enable BBR on Ubuntu / Debian
Check your kernel version: uname -r — BBR requires kernel 4.9 or newer. Ubuntu 18.04+ and Debian 10+ satisfy this.
Edit sysctl configuration:
# Load BBR module
modprobe tcp_bbr
# Make it persistent
echo "tcp_bbr" >> /etc/modules-load.d/bbr.conf
# Set BBR as the active congestion control
echo "net.core.default_qdisc = fq" >> /etc/sysctl.d/bbr.conf
echo "net.ipv4.tcp_congestion_control = bbr" >> /etc/sysctl.d/bbr.conf
# Apply
sysctl -p /etc/sysctl.d/bbr.conf
Step 2: Enable BBR on CentOS / Rocky / AlmaLinux
Enterprise Linux 8+ kernels (4.18+) include BBR support natively:
# Load module
modprobe tcp_bbr
# Persistent config
echo "tcp_bbr" | tee /etc/modules-load.d/99-bbr.conf
# Apply via sysctl
sysctl -w net.core.default_qdisc=fq
sysctl -w net.ipv4.tcp_congestion_control=bbr
# Make persistent
cat >> /etc/sysctl.d/99-bbr.conf <<EOF
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
EOF
Step 3: Verify BBR Is Active
After applying, confirm the change took effect:
sysctl net.ipv4.tcp_congestion_control
# Output should show: net.ipv4.tcp_congestion_control = bbr
# Also check loaded modules
lsmod | grep bbr
# Output should show: tcp_bbr
Benchmarking the Improvement
Run a quick benchmark using iperf3 to compare before and after:
# On a remote server (or use a public iperf server):
iperf3 -c iperf.he.net -t 30
# BBR typically shows 2-3x the throughput of CUBIC
# on paths with 50ms+ RTT or any packet loss
For real-world testing, use curl -o /dev/null -s -w '%{speed_download}
' https://testfile.example.com to measure download speeds from your actual content sources.
Additional Tuning for Maximum BBR Performance
- Increase TCP buffer sizes:
sysctl -w net.core.rmem_max=134217728 net.core.wmem_max=134217728 - Enable TCP fast open:
sysctl -w net.ipv4.tcp_fastopen=3 - Disable slow start after idle:
sysctl -w net.ipv4.tcp_slow_start_after_idle=0 - Monitor with tcptrace:
tcptrace -l /tmp/bbr.pcapto visualize BBR’s bandwidth probing
VPS performance tuning is an ongoing process. After enabling BBR, test your server’s network throughput and compare providers on the VPS provider comparison table to see which hosts deliver the best real-world performance.


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