1. TCP拥塞控制算法演进背景
2006年谷歌研究员在ACM队列发表的论文首次指出:传统TCP拥塞控制算法在高速长肥网络中存在严重性能缺陷。当时主流的CUBIC算法在百兆带宽环境下表现尚可,但当网络带宽突破1Gbps时,其吞吐量会急剧下降至理论值的10%以下。
这个问题在跨国数据中心互联场景尤为突出。2016年谷歌工程师Neal Cardwell和Yuchung Cheng提出的BBR(Bottleneck Bandwidth and Round-trip propagation time)算法,首次从控制理论角度重构了拥塞判断机制。与基于丢包的传统算法不同,BBR通过实时测量网络路径的两个核心参数:
- BtlBw(Bottleneck Bandwidth):路径瓶颈带宽
- RTprop(Round-trip Propagation Time):往返传播时延
构建出BDP(Bandwidth-Delay Product)模型,即:
code复制BDP = BtlBw × RTprop
这个公式决定了网络管道中"在途数据"的最佳容量。BBR通过动态调整发送速率,使数据量始终逼近但不超越BDP,从而在避免拥塞的同时最大化吞吐量。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. BBR核心状态机解析
2.1 四大状态流转机制
BBR算法通过四个状态的周期切换实现速率控制:
-
STARTUP(指数增长阶段)
- 行为:每RTT倍增发送速率
- 退出条件:连续3次速率增长小于25%
- 典型耗时:3-4个RTT
-
DRAIN(排水阶段)
- 行为:线性降低发送速率
- 目的:清空STARTUP阶段产生的队列积压
- 退出条件:在途数据量 ≤ BDP
-
PROBE_BW(带宽探测阶段)
- 行为:8轮循环调整发送速率(1.25×, 0.75×交替)
- 关键参数:
pacing_gain取值[1.25, 0.75, 1, 1, 1, 1, 1, 1] - 持续时间:约10秒
-
PROBE_RTT(时延探测阶段)
- 行为:维持4个报文发送窗口持续200ms
- 触发条件:10秒内未测量到更低RTT
- 目的:探测基础传播时延
