在实际网络中失效的 TCP BBR

还是旧事重提,最近写了一些关于帕累托分布的自相似流量的反直觉特征,基于此实际网络特征,本文解释 BBR\text{BBR}BBR 在实际网络中失效的原因。

简短回顾。

实际网络流量在从 ms\text{ms}mshhh 的多个时间尺度上表现出统计自相似性,流量在任意时间尺度上的突发模式保持相似,这已经由前文详解的 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.70.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}inflightBDP

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 流;
  • 平稳带宽,Bmax⁡B_{\max}Bmax 在探测周期内保持稳定;
  • RTTmin⁡RTT_{\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τ[tT,t]{Δtdelivered(τ)}

H=0.5H=0.5H=0.5 的泊松流量,样本均值方差以 O(n−1)O(n^{-1})O(n1) 收敛,但在自相似下,样本均值的方差收敛速度为:

Var⁡(Xˉn)∝n2H−2\operatorname{Var}(\bar{X}_n) \propto n^{2H-2}Var(Xˉn)n2H2

H=0.8H=0.8H=0.8 时,收敛速度为 O(n−0.4)O(n^{−0.4})O(n0.4),比泊松假设慢 2.5\text{2.5}2.5 倍,这意味着 BBR\text{BBR}BBR 的估计带宽在自相似下难收敛,始终处于高方差状态。

更严重的是,帕累托分布的重尾导致带宽样本中存在无穷方差可能性,当 α<2\alpha\lt 2α<2 时,中心极限定理失效,BBR 的估计带宽不再服从正态分布,其置信区间无法用常规统计方法界定。

接着说 RTT\text{RTT}RTTBBR\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)x22H

如当 H=0.8H=0.8H=0.8 时, P(Q>x)∝x−0.4P(Q\gt x)\propto x^{−0.4}P(Q>x)x0.4,队列长度的期望值可能不存在,这意味着:

  • 即使 BBR\text{BBR}BBR 将自身 inflight\text{inflight}inflight 降至极低,背景流量的自相似突发仍会持续填充队列;
  • RTTmin⁡RTT_{\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⁡,RTTmin⁡B_{\max},\quad RTT_{\min}Bmax,RTTmin 均不可靠,BBR\text{BBR}BBRBDP\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δ 是相对误差,那么取对数则可将相对变化隔离出来:

ln⁡Y^=ln⁡(Y(1+δ))=ln⁡Y+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) 式取对数后分析相对误差:

log⁡BDP^=log⁡Bmax⁡+log⁡RTTmin⁡+ϵ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 在自相似流量下不可忽略,由于 Bmax⁡B_{\max}BmaxRTTmin⁡RTT_{\min}RTTmin 的估计误差均具有长程依赖性,其乘积误差不满足独立同分布假设。

由协方差估算误差:

Var[log⁡BDP^]=Var[log⁡B^]+Var[log⁡RTT^min⁡]+2Cov(log⁡B^,log⁡RTT^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[log⁡Y]≈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=T2H2

因此:

Var[log⁡B^]∼T2H−2\text{Var}[\log \hat{B}] \sim T^{2H-2}Var[logB^]T2H2

RTT^min⁡\widehat{\text{RTT}}_{\min}RTTmin 的波动主要源于队列 Q(t)Q(t)Q(t) 的波动,对于自相似输入,排队过程的方差标度与累积过程一致。

Var[log⁡RTT^min⁡]∼T2H−2\text{Var}[\log \widehat{\text{RTT}}_{\min}] \sim T^{2H-2}Var[logRTTmin]T2H2

接下来做协方差项的主导性推导。

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,min⁡t∈[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)min⁡Q(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)T1k=1Tρ(k)T11Tx2H2dx

计算积分:

∫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}1Tx2H2dx=[2H1x2H1]1TT2H1

代回协方差公式:

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)TT2H1×(归一化因子)

利用 Delta\text{Delta}Delta 方法后的协方差项:

Cov(log⁡B^,log⁡RTT^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(log⁡B^,log⁡RTT^min⁡)∼T2H−1\text{Cov}(\log \hat{B}, \log \widehat{\text{RTT}}_{\min}) \sim T^{2H-1}Cov(logB^,logRTTmin)T2H1

将所有项合并:

Var[log⁡BDP^]=O(T2H−2)⏟Var[log⁡B^]+O(T2H−2)⏟Var[log⁡RTT^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(T2H2)+Var[logRTTmin]O(T2H2)+CovO(T2H1)

由于 0.5<H<10.5 < H < 10.5<H<1,指数大小关系为:

2H−1>2H−22H - 1 > 2H - 22H1>2H2

TTT 足够大时,最高阶项即协方差项主导整个表达式的行为,因此:

Var(log⁡⁡BDP^]∼T2H−1\text{Var}(\log⁡\widehat{BDP}]\sim T^{2H-1}Var(logBDP]T2H1

H>0.5H\gt 0.5H>0.5 时,估计误差的方差随观测窗口增长而增大而非减小,这与 BBR 设计中更长观测窗口带来更准确估计的直觉完全相反。

系统无法保证收敛,BBR\text{BBR}BBR 状态机将不再合理,更不再可靠。

网络不可能永远仅存在一条六,再看多流公地悲剧。

BBRv1\text{BBRv1}BBRv1ProbeBW\text{ProbeBW}ProbeBW 阶段以 1.25\text{1.25}1.25gain\text{gain}gain 探测,持续 101010RTT\text{RTT}RTT,单流理想模型中,这可以精确找到瓶颈,但在多流自相似环境中,设 NNNBBR\text{BBR}BBR 流共享,每个流的 inflight\text{inflight}inflightWi{W_i}Wi ,链路容量为 CCCBBR\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 会立即应用瞬时探测结果并坚持 101010RTT\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}AIMDMD\text{MD}MD 机制天然提供了负反馈保护,可自适应任意大小的 buffer\text{buffer}buffer,而 BBR\text{BBR}BBR 缺乏这机制,一条路走到黑。

BBR,AIMD\text{BBR},\text{AIMD}BBRAIMD 共存时,由于 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 RTT810RTTProbeBW\text{ProbeBW}ProbeBW,约 $1RTT $ 的 ProbeRTT\text{ProbeRTT}ProbeRTT 组成,它建立在短程依赖假设上,但自相似流量的相关函数衰减为:

ρ(k)∝k2H−2\rho(k)\propto k^{2H-2}ρ(k)k2H2

如上举例,当 H=0.8H=0.8H=0.8ρ(k)∼k−0.4\rho(k)\sim k^{−0.4}ρ(k)k0.4,相关性衰减极慢,这意味着网络状态在数百甚至数千个 RTT\text{RTT}RTT 内仍然相关,尚未收敛已变化,BBR\text{BBR}BBR 固定周期状态机无法跟踪这种长程依赖的动态变化。

BBR\text{BBR}BBR 的数学模型建立在短程依赖,平稳,单流的理想实验室假设之上,而实际互联网流量自相似特性以及高达 0.7∼0.850.7\sim 0.850.70.85Hurst\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}AIMDAQM\text{AQM}AQM,拥塞,丢包,重传和编程的人无关,带宽绝对够用,不折腾就是低时延。

浙江温州皮鞋湿,下雨进水不会胖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值