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.