BBR vs CUBIC: I Actually Tested It, So You Don't Have To
Okay, so everyone on Reddit says "just enable BBR." I was skeptical. I mean, if it's that good, why isn't it default everywhere?
So I tested it. For real. Two identical VPS in Dallas, one with CUBIC (default), one with BBR. Ran iperf3 to Singapore, Tokyo, Frankfurt, and Chicago for 7 days straight.
The results
| Route | CUBIC | BBR | Winner |
|---|---|---|---|
| Dallas → Singapore (RTT ~190ms) | 42 Mbps, jittery | 118 Mbps, stable | BBR by a lot |
| Dallas → Tokyo (RTT ~140ms) | 68 Mbps | 132 Mbps | BBR |
| Dallas → Frankfurt (RTT ~110ms) | 95 Mbps | 121 Mbps | BBR, small win |
| Dallas → Chicago (RTT ~25ms) | 410 Mbps | 405 Mbps | Tie |
So yeah, BBR is a beast for long-distance, lossy links. For low-latency US-to-US? Doesn't matter.
How to enable it (Ubuntu / Debian)
# Check what you have now sysctl net.ipv4.tcp_congestion_control # Enable BBR echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf sysctl -p # Verify sysctl net.ipv4.tcp_congestion_control # should say: net.ipv4.tcp_congestion_control = bbr lsmod | grep bbr
My honest take: If you serve users in Asia / EU from a US server, enable BBR. If all your users are in the same region, don't expect magic. And please, don't copy random sysctl.conf files from GitHub without understanding them. I did that once in 2019 and locked myself out of a server. Not fun.