BBR 的公平收敛来自于两点:
- ProbeBW 状态加速比收敛:带宽越大,加速比越小。
- ProbeRTT 状态 RTT 收敛:inflight 越大,越容易让 inflight 小的测到 minrtt 而避免进入 ProbeRTT,inflight 越小,测量 minrtt 偏大,趋向更大 inflight。
详情参见:有趣的TCP BBR ProbeRTT行为点滴
但还是复杂了,写个简单的解释。
排队论模型,排队时间为:
T
=
1
/
(
μ
−
λ
)
T=1/(μ−λ)
T=1/(μ−λ) ,T 作为 RTT 的一部分,λ 为 Pacing Rate, μ 为Delivery Rate, μ 一定,作图如下:
这是双曲线的一支。
ProbeBW 加速比描述为增加单位 inflight 带来 Delivery Rate 的增量。inflight 在排队系统描述为排队时间 T 的线性函数,则加速比即该曲线的斜率,很明显,斜率是递增的。
若排队时间一定, μ 和 λ 是线性关系。在排队系统中,多流排队时间相同,所以:
- inflight 越大,增加相同 inflight 带来的 Delivery Rate 增益越小,趋向公平。
收敛图如下:
这个结论套用了排队理论公式,但直接从 BBR 原理图也能殊途同归。
先看理想情况:
考虑下图,盗自 单流 TCP 100Gbps+ 难题的直观解释
所以事情真相是:
DeliveryRate/inflt 曲线一定上凸,这一点从以上 “处理时间/到达时间” 图中看出:inflt 增加,排队概率增加,由于钟形分布对称,净损耗率增加,吞吐增益减少。
若不易直观看出,可想象排列组合,1 个 inflt 只能有一种到达方式,带来 1 个增益,2 个 inflt 在 2 个时间槽可排 (0, 2),(1, 1) 两种,凡是带有 0 的组合,都有浪费的周期,3 个 inflt 在 3 个时间槽可排 (3, 0, 0),(2, 1, 0),(1, 1, 1),随着 inflt 增加,“到达模式” 中全 1 的满载槽占比减少,分别为 1/1,1/2,1/3,1/4,1/5 …
同理,RTT/inflt 曲线一定是下凸。最终拟合两张图,得到右图,与排队论公式描述一致。
核心在于 DeliveryRate/inflt 上凸曲线和 RTT/inflt 下凸曲线是普适的,反而 BBR 只是一个特例,这就是排队系统的直观解释。
有了该图,看图说话就行,公平收敛结论和基于排队论公式的结论一致。
下面是上图一个拟合示例:
浙江温州皮鞋湿,下雨进水不会胖。