If you’re running a server that handles long-distance TCP connections, switching from the default Cubic to BBR can make a noticeable difference in throughput.
What is BBR?
BBR (Bottleneck Bandwidth and Round-trip propagation time) is a congestion control algorithm developed by Google. Unlike loss-based algorithms like Cubic, BBR tries to model the actual bottleneck bandwidth and RTT, leading to better performance on lossy or high-latency links.
Check Current Algorithm
sysctl net.ipv4.tcp_congestion_control
Most modern kernels default to cubic.
Enable BBR
Requires Linux kernel 4.9+ (Debian 12 ships with 6.1, so we’re good):
cat >> /etc/sysctl.conf << EOF
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
EOF
sysctl -p
Verify
sysctl net.ipv4.tcp_congestion_control
# Expected: net.ipv4.tcp_congestion_control = bbr
lsmod | grep bbr
# Should show tcp_bbr module
Does It Actually Help?
In my testing on a CN2 GIA link (US West Coast to China), BBR improved download throughput by roughly 30-40% during peak hours compared to Cubic. The improvement is most noticeable when the link has moderate packet loss (0.5-2%).
For low-latency, low-loss local connections, the difference is negligible. BBR really shines on intercontinental links where packet loss is unavoidable.
Caveats
- BBR v1 (what most distros ship) can be aggressive and may not play nicely with other flows on shared links
- BBR v2/v3 are in development and address fairness concerns
- If you’re on a shared hosting platform, changing congestion control might not be allowed
For a dedicated VPS, there’s really no reason not to enable it.