还是旧事重提,最近写了一些关于帕累托分布的自相似流量的反直觉特征,基于此实际网络特征,本文解释 BBR\text{BBR}BBR 在实际网络中失效的原因。
简短回顾。
实际网络流量在从 ms\text{ms}ms 到 hhh 的多个时间尺度上表现出统计自相似性,流量在任意时间尺度上的突发模式保持相似,这已经由前文详解的 Hurst\text{Hurst}Hurst 参数 HHH 量化:
- H=0.5H = 0.5H=0.5,无自相似,特指泊松过程;
- 0.5<H<10.5\lt H\lt 10.5<H<1,自相似, HHH 越大自相似性越强;
- 实测表明,互联网流量的 HHH 通常在 0.7∼0.850.7\sim 0.850.7∼0.85 间;
自相似流量的方差随时间尺度 ttt 的缩放关系为:
Var(X(t))∝t2H\text{Var}(X(t))\propto t^{2H}Var(X(t))∝t2H
而泊松过程的方差缩放为 Var(X(t)]∝t\text{Var}(X(t)]\propto tVar(X(t)]∝t,当 H>0.5H\gt 0.5H>0.5 时,流量的波动衰减远慢于传统模型预测,这就是长程依赖。
自相似性的成因是用户行为的重尾分布,文件大小,连接长短,用户行为等均服从帕累托分布:
P(X>x)∝x−α,0<α<2P(X\gt x)\propto x^{-\alpha},\quad 0\lt\alpha\lt 2P(X>x)∝x−α,0<α<2
当 α<2\alpha\lt 2α<2 时,方差甚至无穷大,当 α<1\alpha\lt1α<1 时,均值也无穷大,这意味着大象流占据了大部分总流量,使得聚合流量在任何时间尺度上都保持突发性,而不会被平滑。
现在看 BBR\text{BBR}BBR 算法的数学模型与核心假设。BBR\text{BBR}BBR 的核心公式为:
BDP=Bmax×RTTmin\text{BDP}=B_{\max}×RTT_{\min}BDP=Bmax×RTTmin
inflight≈BDP\text{inflight}\approx \text{BDP}inflight≈BDP
sending_rate=Bmax×pacing_gain\text{sending\_rate}=B_{\max}\times \text{pacing\_gain}sending_rate=Bmax×pacing_gain
BBR\text{BBR}BBR 的建模基础是以下的理想假设:
- 单流,即瓶颈链路上只有一个 TCP\text{TCP}TCP 流;
- 平稳带宽,BmaxB_{\max}Bmax 在探测周期内保持稳定;
- RTTminRTT_{\min}RTTmin 可测量,存在可重复探测的最小 RTTRTTRTT;
- 短程依赖,网络状态在有限时间收敛,历史影响快速衰减;
- 瓶颈位置固定,链路中只有明确的瓶颈点;
实际网络中,没有一个是符合的,除了不必浪费口舌的,剩下的一个一个说。
显然,Hurst\text{Hurst}Hurst 参数破坏了带宽估计的收敛性,BBR\text{BBR}BBR 通过滑动窗口的 max-filter\text{max-filter}max-filter 估计 BmaxB_{\text{max}}Bmax:
B^max(t)=maxτ∈[t−T,t]{delivered(τ)Δt}\hat{B}_{\max}(t) = \max_{\tau \in [t-T, t]} \left\{ \dfrac{\text{delivered}(\tau)}{\Delta t} \right\}B^max(t)=maxτ∈[t−T,t]{Δtdelivered(τ)}
在 H=0.5H=0.5H=0.5 的泊松流量,样本均值方差以 O(n−1)O(n^{-1})O(n−1) 收敛,但在自相似下,样本均值的方差收敛速度为:
Var(Xˉn)∝n2H−2\operatorname{Var}(\bar{X}_n) \propto n^{2H-2}Var(Xˉn)∝n2H−2
当 H=0.8H=0.8H=0.8 时,收敛速度为 O(n−0.4)O(n^{−0.4})O(n−0.4),比泊松假设慢 2.5\text{2.5}2.5 倍,这意味着 BBR\text{BBR}BBR 的估计带宽在自相似下难收敛,始终处于高方差状态。
更严重的是,帕累托分布的重尾导致带宽样本中存在无穷方差可能性,当 α<2\alpha\lt 2α<2 时,中心极限定理失效,BBR 的估计带宽不再服从正态分布,其置信区间无法用常规统计方法界定。
接着说 RTT\text{RTT}RTT,BBR\text{BBR}BBR 通过周期性进入 ProbeRTT\text{ProbeRTT}ProbeRTT 状态测量 RTTmin\text{RTT}_{\text{min}}RTTmin,这一机制隐含假设,当队列排空后,RTT\text{RTT}RTT 会稳定收敛到传播延迟。
但在自相似流量下,队列长度的分布具有幂律重尾:
P(Q>x)∝x−2−2HP(Q\gt x)\propto x^{-{2-2H}}P(Q>x)∝x−2−2H
如当 H=0.8H=0.8H=0.8 时, P(Q>x)∝x−0.4P(Q\gt x)\propto x^{−0.4}P(Q>x)∝x−0.4,队列长度的期望值可能不存在,这意味着:
- 即使 BBR\text{BBR}BBR 将自身 inflight\text{inflight}inflight 降至极低,背景流量的自相似突发仍会持续填充队列;
- RTTminRTT_{\min}RTTmin 的测量值被系统性高估,值为 RTT^min=RTTprop+E[Qbackground]C\widehat{\text{RTT}}_{\min} = \text{RTT}_{\text{prop}} + \dfrac{E[Q_{\text{background}}]}{C}RTTmin=RTTprop+CE[Qbackground];
- 由于 E[Qbackground]E[Q_{\text{background}}]E[Qbackground] 可能发散, RTT^min\widehat{\text{RTT}}_{\min}RTTmin 成为不可靠的估计量;
Bmax,RTTminB_{\max},\quad RTT_{\min}Bmax,RTTmin 均不可靠,BBR\text{BBR}BBR 的 BDP\text{BDP}BDP 估计误差叠加,完全偏离论文中的理想模型:
BDP^=B^max×RTT^min⋯(1)\widehat{\text{BDP}}=\hat{B}_{\max}\times\widehat{\text{RTT}}_{\min}\quad\cdots(1)BDP=B^max×RTTmin⋯(1)
估计值 Y^\hat{Y}Y^ 与理想值 YYY 关系若为 Y^=Y(1+δ)\hat{Y}=Y(1+\delta)Y^=Y(1+δ),其中 δ\deltaδ 是相对误差,那么取对数则可将相对变化隔离出来:
lnY^=ln(Y(1+δ))=lnY+ln(1+δ)\ln\hat{Y}=\ln(Y(1+\delta))=\ln Y+\ln(1+\delta)lnY^=ln(Y(1+δ))=lnY+ln(1+δ)
当 ∣δ∣≪1|\delta|\ll1∣δ∣≪1 时,ln(1+δ)≈δ\ln(1+\delta)\approx\deltaln(1+δ)≈δ,对数域中的偏差相当于原变量中的相对误差,即百分比变化。
那么对 (1)(1)(1) 式取对数后分析相对误差:
logBDP^=logBmax+logRTTmin+ϵB+ϵR+ϵBR\log \widehat{\text{BDP}} = \log B_{\max} + \log \text{RTT}_{\min} + \epsilon_B + \epsilon_R + \epsilon_{BR}logBDP=logBmax+logRTTmin+ϵB+ϵR+ϵBR
其中交叉项 ϵBR\epsilon_{\text{BR}}ϵBR 在自相似流量下不可忽略,由于 BmaxB_{\max}Bmax 和 RTTminRTT_{\min}RTTmin 的估计误差均具有长程依赖性,其乘积误差不满足独立同分布假设。
由协方差估算误差:
Var[logBDP^]=Var[logB^]+Var[logRTT^min]+2Cov(logB^,logRTT^min)\text{Var}[\log \widehat{\text{BDP}}] = \text{Var}[\log \hat{B}] + \text{Var}[\log \widehat{\text{RTT}}_{\min}] + 2\text{Cov}(\log \hat{B}, \log \widehat{\text{RTT}}_{\min})Var[logBDP]=Var[logB^]+Var[logRTTmin]+2Cov(logB^,logRTTmin)
一阶泰勒展开近似 Var[logY]≈Var[Y]E[Y]2\text{Var}[\log Y] \approx \dfrac{\text{Var}[Y]}{E[Y]^2}Var[logY]≈E[Y]2Var[Y] (Delta\text{Delta}Delta 方法) 分析前两项。
对于带宽估计 B^\hat{B}B^:
Var[B^]=Var[A(T)T]=Var[A(T)]T2∼T2HT2=T2H−2\text{Var}[\hat{B}] = \text{Var}\left[\dfrac{A(T)}{T}\right] = \dfrac{\text{Var}[A(T)]}{T^2} \sim \dfrac{T^{2H}}{T^2} = T^{2H-2}Var[B^]=Var[TA(T)]=T2Var[A(T)]∼T2T2H=T2H−2
因此:
Var[logB^]∼T2H−2\text{Var}[\log \hat{B}] \sim T^{2H-2}Var[logB^]∼T2H−2
RTT^min\widehat{\text{RTT}}_{\min}RTTmin 的波动主要源于队列 Q(t)Q(t)Q(t) 的波动,对于自相似输入,排队过程的方差标度与累积过程一致。
Var[logRTT^min]∼T2H−2\text{Var}[\log \widehat{\text{RTT}}_{\min}] \sim T^{2H-2}Var[logRTTmin]∼T2H−2
接下来做协方差项的主导性推导。
B^\hat{B}B^ 和 RTT^min\widehat{\text{RTT}}_{\min}RTTmin 并非独立,它们由同一个底层流量过程 A(t)A(t)A(t) 驱动。协方差定义:
Cov(B^,RTT^min)=Cov(A(T)T,mint∈[0,T]{RTTbase+Q(t)C})\text{Cov}(\hat{B}, \widehat{\text{RTT}}_{\min}) = \text{Cov}\left( \dfrac{A(T)}{T}, \min_{t \in [0,T]} \{ \text{RTT}_{\text{base}} + \dfrac{Q(t)}{C} \} \right)Cov(B^,RTTmin)=Cov(TA(T),mint∈[0,T]{RTTbase+CQ(t)})
忽略常数项,核心在于分析 A(T)A(T)A(T) 与 minQ(t)\min Q(t)minQ(t) 的相关性。
根据分形统计理论,对于具有长程依赖的过程,其积分泛函的协方差缩放阶数比各自的方差衰减得慢一阶:
Cov(B^,RTT^min)∼1T∑k=1Tρ(k)∼1T∫1Tx2H−2dx\text{Cov}(\hat{B}, \widehat{\text{RTT}}_{\min}) \sim \dfrac{1}{T} \sum_{k=1}^T \rho(k) \sim \dfrac{1}{T} \displaystyle\int_1^T x^{2H-2}\text{d}xCov(B^,RTTmin)∼T1∑k=1Tρ(k)∼T1∫1Tx2H−2dx
计算积分:
∫1Tx2H−2dx=[x2H−12H−1]1T∼T2H−1\displaystyle\int_1^T x^{2H-2} dx = \left[ \dfrac{x^{2H-1}}{2H-1} \right]_1^T \sim T^{2H-1}∫1Tx2H−2dx=[2H−1x2H−1]1T∼T2H−1
代回协方差公式:
Cov(B^,RTT^min)∼T2H−1T×(归一化因子)\operatorname{Cov}(\hat{B}, \widehat{\text{RTT}}_{\min}) \sim \dfrac{T^{2H-1}}{T} \times (\text{归一化因子})Cov(B^,RTTmin)∼TT2H−1×(归一化因子)
利用 Delta\text{Delta}Delta 方法后的协方差项:
Cov(logB^,logRTT^min)≈Cov(B^,RTT^min)E[B^]E[RTT^min]\text{Cov}(\log \hat{B}, \log \widehat{\text{RTT}}_{\min}) \approx \dfrac{\text{Cov}(\hat{B}, \widehat{\text{RTT}}_{\min})}{E[\hat{B}]E[\widehat{\text{RTT}}_{\min}]}Cov(logB^,logRTTmin)≈E[B^]E[RTTmin]Cov(B^,RTTmin)
于长程依赖性,分子部分的协方差累积效应使得:
Cov(logB^,logRTT^min)∼T2H−1\text{Cov}(\log \hat{B}, \log \widehat{\text{RTT}}_{\min}) \sim T^{2H-1}Cov(logB^,logRTTmin)∼T2H−1
将所有项合并:
Var[logBDP^]=O(T2H−2)⏟Var[logB^]+O(T2H−2)⏟Var[logRTT^min]+O(T2H−1)⏟Cov项\text{Var}[\log \widehat{\text{BDP}}] = \underbrace{O(T^{2H-2})}_{\text{Var}[\log \hat{B}]} + \underbrace{O(T^{2H-2})}_{\text{Var}[\log \widehat{\text{RTT}}_{\min}]} + \underbrace{O(T^{2H-1})}_{\text{Cov项}}Var[logBDP]=Var[logB^]O(T2H−2)+Var[logRTTmin]O(T2H−2)+Cov项O(T2H−1)
由于 0.5<H<10.5 < H < 10.5<H<1,指数大小关系为:
2H−1>2H−22H - 1 > 2H - 22H−1>2H−2
当 TTT 足够大时,最高阶项即协方差项主导整个表达式的行为,因此:
Var(logBDP^]∼T2H−1\text{Var}(\log\widehat{BDP}]\sim T^{2H-1}Var(logBDP]∼T2H−1
当 H>0.5H\gt 0.5H>0.5 时,估计误差的方差随观测窗口增长而增大而非减小,这与 BBR 设计中更长观测窗口带来更准确估计的直觉完全相反。
系统无法保证收敛,BBR\text{BBR}BBR 状态机将不再合理,更不再可靠。
网络不可能永远仅存在一条六,再看多流公地悲剧。
BBRv1\text{BBRv1}BBRv1 的 ProbeBW\text{ProbeBW}ProbeBW 阶段以 1.25\text{1.25}1.25 倍 gain\text{gain}gain 探测,持续 101010 个 RTT\text{RTT}RTT,单流理想模型中,这可以精确找到瓶颈,但在多流自相似环境中,设 NNN 个 BBR\text{BBR}BBR 流共享,每个流的 inflight\text{inflight}inflight 为 Wi{W_i}Wi ,链路容量为 CCC,BBR\text{BBR}BBR 的目标是:
∑i=1NWi=C×RTTmin\sum_{i=1}^{N} W_i = C \times \text{RTT}_{\min}∑i=1NWi=C×RTTmin
但由于每个流独立进行带宽探测,实际总 inflight\text{inflight}inflight 为:
∑i=1NWi=∑i=1NB^max(i)×RTT‾min(i)≫C×RTTprop\sum_{i=1}^{N} W_i = \sum_{i=1}^{N} \hat{B}_{\max}^{(i)} \times \overline{\text{RTT}}_{\min}^{(i)} \gg C \times \text{RTT}_{\text{prop}}∑i=1NWi=∑i=1NB^max(i)×RTTmin(i)≫C×RTTprop
由于每个流的 max-filter\text{max-filter}max-filter 会立即应用瞬时探测结果并坚持 101010 个 RTT\text{RTT}RTT,这种迟钝反应使 RTT\text{RTT}RTT 缺乏全局协调机制。在自相似流量下, B^max(i)\hat{B}_{\max}^{(i)}B^max(i) 被背景突发系统性高估,导致总 inflight\text{inflight}inflight 远超链路容量,产生持续排队和丢包.
这与 AIMD\text{AIMD}AIMD 形成对比,AIMD\text{AIMD}AIMD 的 MD\text{MD}MD 机制天然提供了负反馈保护,可自适应任意大小的 buffer\text{buffer}buffer,而 BBR\text{BBR}BBR 缺乏这机制,一条路走到黑。
在 BBR,AIMD\text{BBR},\text{AIMD}BBR,AIMD 共存时,由于 BBR\text{BBR}BBR 的迟钝,将倒逼 AIMD\text{AIMD}AIMD 被迫不断触及 AQM\text{AQM}AQM 丢包阈值被连累,BBR\text{BBR}BBR 不但压制 AIMD\text{AIMD}AIMD,自身也被反噬,形成正反馈恶性循环,Jain\text{Jain}Jain 公平性指数从纯 AIMD\text{AIMD}AIMD 的理想值急剧下降。
而且 BBR\text{BBR}BBR 的时间尺度也失配。
BBR\text{BBR}BBR 状态机周期由 8∼10RTT8\sim10 RTT8∼10RTT 的 ProbeBW\text{ProbeBW}ProbeBW,约 $1RTT $ 的 ProbeRTT\text{ProbeRTT}ProbeRTT 组成,它建立在短程依赖假设上,但自相似流量的相关函数衰减为:
ρ(k)∝k2H−2\rho(k)\propto k^{2H-2}ρ(k)∝k2H−2
如上举例,当 H=0.8H=0.8H=0.8,ρ(k)∼k−0.4\rho(k)\sim k^{−0.4}ρ(k)∼k−0.4,相关性衰减极慢,这意味着网络状态在数百甚至数千个 RTT\text{RTT}RTT 内仍然相关,尚未收敛已变化,BBR\text{BBR}BBR 固定周期状态机无法跟踪这种长程依赖的动态变化。
BBR\text{BBR}BBR 的数学模型建立在短程依赖,平稳,单流的理想实验室假设之上,而实际互联网流量自相似特性以及高达 0.7∼0.850.7\sim 0.850.7∼0.85 的 Hurst\text{Hurst}Hurst 参数破坏了这些假设的数学基础:
- 估计理论失效,重尾使样本均值方差不收敛,BBR\text{BBR}BBR 的带宽和 RTT\text{RTT}RTT 估计失去统计一致性;
- 时间尺度错配,长程依赖使网络状态的相关性远超 RTT\text{RTT}RTT 状态机理论收敛周期;
- 专治 BufferBloat\text{BufferBloat}BufferBloat 的承诺变成了导致 BufferBloat\text{BufferBloat}BufferBloat 的元凶;
- BDP\text{BDP}BDP 的意义本身被不确定突发弱化,当队列长度符合幂律时,最优工作点将不再存在;
总之,BBR\text{BBR}BBR 论文中所依赖的最优工作点失效了,就全都失效了。
这也解释了 BBRv2\text{BBRv2}BBRv2 不得不引入丢包反馈来约束 inflight\text{inflight}inflight的原因,相当于承认了 BBR\text{BBR}BBR 模型驱动方法在实际自相似网络中的局限性,重新引入基于信号的反馈控制来弥补数学模型的不足。
裤衩子锁着边儿,而且绣着花儿。
可能大家都去卷 AI\text{AI}AI 了,也可能大家也发现了 BBR\text{BBR}BBR 的理想与现实相悖,BBR\text{BBR}BBR 讨论组死了:

民间何必迷信一个只是看起来很美的东西,更多是吹出来的虚伪,编程的人只管编好程就行了,剩下的交给 AIMD\text{AIMD}AIMD 和 AQM\text{AQM}AQM,拥塞,丢包,重传和编程的人无关,带宽绝对够用,不折腾就是低时延。
浙江温州皮鞋湿,下雨进水不会胖。
364

被折叠的 条评论
为什么被折叠?



