计算机网络
BBR 算法介绍与开启
这篇笔记围绕在 Ubuntu 22/Linux 上启用 BBR 拥塞控制展开,先交代默认网络栈通常使用 CUBIC 作为 TCP 拥塞控制算法、pfifo_fast 作为队列调度器,再说明 BBR 是 Google 提出的基于瓶颈带宽和最小 RTT 建模的算法。它的核心差异在于不等到丢包或队列明显膨胀后才降速,而是通过 Startup、Drain、ProbeBW、ProbeRTT 四个阶段持续探测可用带宽、排空队列并重测最低时延。文章对比了 BBR 与 CUBIC/Reno 在拥塞判断、Bufferbloat、吞吐收敛、高负载时延抖动和多流共存上的表现,强调优势主要出现在长 RTT、高带宽或链路满载场景。它也提醒单独用空闲 ping 测 RTT 往往看不出差别,因为此时队列未被填满,真正的对比应结合 iperf3 大流量或 ping 搭配满载传输观察吞吐和延迟峰值。操作部分给出启用前提是 Linux 内核不低于 4.9,并通过写入 /etc/sysctl.d/99-bbr.conf 将 default_qdisc 改为 fq、tcp_congestion_control 改为 bbr。最后使用 sysctl、sysctl --system 和 lsmod 验证配置与模块状态,适合希望改善服务器跨地域传输、长距离链路吞吐和满载延迟表现的 Linux 运维或后端开发者参考。