1. TCP拥塞控制与BBR算法背景
TCP拥塞控制是保证网络稳定性的核心技术之一。传统算法如Cubic、Reno通过丢包判断网络拥塞,但在现代高速网络中表现不佳。2016年Google提出的BBR(Bottleneck Bandwidth and Round-trip propagation time)算法,通过测量带宽和RTT来主动调整发送速率,在YouTube等场景中实现了吞吐量提升和延迟降低。
我在实际网络优化项目中发现,当链路带宽超过100Mbps且存在缓冲区膨胀(Bufferbloat)时,BBR相比Cubic可降低90%的排队延迟。这也是为什么大厂面试会关注这一前沿技术——它直接关系到分布式系统的通信效率。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. BBR核心原理拆解
2.1 两大核心指标测量
BBR的核心创新在于持续测量两个关键指标:
- 瓶颈带宽(BtlBw):路径中最窄链路的可用带宽
- 往返传播时间(RTprop):数据包无排队时的端到端延迟
通过这两个指标可以计算出最优发送速率和inflight数据量:
code复制目标速率 = BtlBw
目标inflight = BtlBw × RTprop
2.2 四阶段状态机
BBR通过状态机动态调整探测行为:
- STARTUP:指数增长探测带宽,当连续3个RTT内带宽增长小于25%时退出
- DRAIN:排空STARTUP阶段产生的多余队列
- PROBE_BW:周期性(每8个RTT)进行带宽探测
- 上调阶段:发送速率提高25%
- 下调阶段:恢复基准速率
- PROBE_RTT:每10秒进入一次,维持inflight=4个包持续200ms以测量最小RTT
提示:PROBE_BW阶段采用增益系数循环(5/4, 3/4, 1, 1, 1, 1, 1, 1)实现周期性探测
3. 关键实现细节
3.1 带宽采样方法
BBR在每个ACK到达时计算瞬时带宽:
code复制delivered = 新确认的数据量
interval = 当前时间 - 上一个ACK时间
bw = delivered / interval
采用滑动窗口(10个采样)保留最大值作为BtlBw估计值。
