为什么不要优化网络协议

网络传输优化的第一性原理即降低传输流分布的各阶统计矩,这很难。进一步思考,几乎所有优化的目标都是自私行为,成为上分位,成为统计分布上的那个尾部,越尾尖越好,这恰拉高了各阶矩。

如果一条流单独拉高了 inflight\text{inflight}inflight,它便可以挤出更多的吞吐,这是事实,所有的优化都基于这事实,但所有人都采用这种内卷行为后,优化效果便失效了。

这是 TCP\text{TCP}TCP 拥塞控制中一个经典的悲剧性结构,当所有流同时试图多占带宽时,没人得到更多带宽,所有人只得到更多延迟。任何超出链路容量的 inflight\text{inflight}inflight 增量,无论来自一条流还是多条流,都只产生排队而不产生吞吐。

在资源不变前提下,优化是博弈行为。

本文是一个反向证明,在一个好好的各阶矩均为 000 的好的,最理想网络里,协议层面的优化行为是不是提升了各阶矩,如果是,那么好的网络优化策略就一定针对全局资源的,它的手段确实就是降低各阶矩。

模型框架

瓶颈链路带宽为 CCC,传播延迟为 TpT_pTpnnn 条长生命周期流共享瓶颈,初始状态假设在零排队,均分资源临界点:

  • 每条流的 inflight\text{inflight}inflightBDP\text{BDP}BDPcwnd\text{cwnd}cwnd 记为 WWWWi∼N(μ,σ2),σ2≈0W_i \sim \mathcal{N}(\mu, \sigma^2),\sigma^2 \approx 0WiN(μ,σ2)σ20
  • 约束条件 nμ=CTpn\mu = C T_pnμ=CTp,即总 inflight\text{inflight}inflight 恰填满传播管道,队列长度为零;

这个初始状态是合理的,因为 AIMD\text{AIMD}AIMDnnn 无穷大时就会收敛到这个状态。所以我的分析从这个稳定状态开始。接下来分析大家熟悉的增窗优化,或丢包不降窗优化,或激进发送优化的后果。优化的目标很明确,无非想多挤占一些带宽,获得比不优化时更高的吞吐。

mmm 条流将 cwnd\text{cwnd}cwnd 提高 Δ\DeltaΔ,对应其 inflight\text{inflight}inflight 增加这么多,其余 n−mn-mnm 条不变,其中 m∈{1,2,…,n}m \in \{1, 2, \dots, n\}m{1,2,,n}

m=1m = 1m=1 对应单流增窗,1<m<n1<m<n1<m<n 对应部分流增窗,m=nm = nm=n 对应全流均匀增窗,统一的排队延迟为 Tq=mΔCT_q = \dfrac{m\Delta}{C}Tq=CmΔRTT\text{RTT}RTT 统一变为 Tp(1+mΔnμ)T_p\left(1 + \dfrac{m\Delta}{n\mu}\right)Tp(1+nμmΔ).

均值与各阶矩的统一表达式

σ→0\sigma \to 0σ0 极限下,初始流近乎完美均分,BDP\text{BDP}BDP 经验分布的各阶矩表达如下。

均值为 μ+mΔn\mu + \dfrac{m\Delta}{n}μ+nmΔ,即初始均值加上被 nnn 条流稀释后的增窗贡献。

方差即二阶中心矩为 mΔ2(n−m)n2\dfrac{m\Delta^2(n-m)}{n^2}n2mΔ2(nm),等于原始方差之上叠加的组间方差项,由增窗组与未增窗组之间的均值差 Δ\DeltaΔ 产生。

三阶中心矩为 Δ3m(n−m)(n−2m)n3\dfrac{\Delta^3 m(n-m)(n-2m)}{n^3}n3Δ3m(nm)(n2m),正态分量的内部偏度贡献精确抵消,仅剩两组权重不对称产生的偏度。其符号由 n−2mn-2mn2m 决定:m<n2m < \dfrac{n}{2}m<2n 时右偏,m=n2m =\dfrac{n}{2}m=2n 时为 000m>n2m>\dfrac{n}{2}m>2n 时为左偏。

四阶中心矩为 mΔ4(n−m)(n2−3nm+3m2)n4\dfrac{m\Delta^4(n-m)(n^2-3nm+3m^2)}{n^4}n4mΔ4(nm)(n23nm+3m2),包含正态分量内部峰度,组间差异与内部方差的交叉项,以及纯组间四阶矩三部分。

偏度为 n−2mm(n−m)\dfrac{n-2m}{\sqrt{m(n-m)}}m(nm)n2m,超额峰度为 n2−6nm+6m2m(n−m)\dfrac{n^2-6nm+6m^2}{m(n-m)}m(nm)n26nm+6m2.

排队延迟为 Tq=mΔCT_q = \dfrac{m\Delta}{C}Tq=CmΔ,而传播管道中的有效 BDP\text{BDP}BDP 均值恒为 μ\muμ,与 mmm 无关。

典型情形对比

n=10n=10n=10Δ\DeltaΔ 固定为基准展开。

单流增窗即 m=1m=1m=1,均值为 μ+0.1Δ\mu + 0.1\Deltaμ+0.1Δ,方差 0.09Δ20.09\Delta^20.09Δ2,三阶中心矩 0.072Δ30.072\Delta^30.072Δ3,四阶中心矩 0.0046Δ40.0046\Delta^40.0046Δ4,偏度 +2.67+2.67+2.67,呈强烈右偏,被抬高的流构成稀疏而遥远的右尾,超额峰度 +5.11+5.11+5.11,分布呈尖峰厚尾,999 条流聚集在 μ\muμ 附近形成尖锐主峰,一条流孤立在 μ+Δ\mu+\Deltaμ+Δ 处。

此分布形态是受污染的正态分布,即单异常点模型。所有流排队延迟徒增 ΔC\dfrac{\Delta}{C}CΔ,而被 “优化” 的单流的有效吞吐增益却被稀释。

若半数流增窗即 m=5m=5m=5,均值为 μ+0.5Δ\mu + 0.5\Deltaμ+0.5Δ,方差达到最大值 0.25Δ20.25\Delta^20.25Δ2,即优化与不优化两组各占一半时,组间分割最均衡,混合分布的离散度最大。

三阶中心矩为 000,分布关于两峰的中点对称,四阶中心矩为 0.00625Δ40.00625\Delta^40.00625Δ4,偏度为零,但超额峰度为 −2-22,远低于正态分布的 000

这是等权两点分布的固有特征,双峰并峙使得分布比正态更平坦。分布形态是对称的双峰混合分布。排队延迟为 5ΔC\dfrac{5\Delta}{C}C,但每条优化流的有效吞吐增益仍无法抵消,所有流总吞吐收益为 000

现在看全流增窗,即 m=10m=10m=10,均值为 μ+Δ\mu + \Deltaμ+Δ,所有流同步平移,方差降回零,三阶中心矩和四阶中心矩也全部为零,分布退化为单个质点 μ+Δ\mu+\Deltaμ+Δ,所有截面差异被消灭,偏度为零,超额峰度为零。

此分布形态是纯正态分布的整体平移,保持各阶矩与完美的初始状态一致,近似为 000,但排队延迟达到最大值 10ΔC\dfrac{10\Delta}{C}C10Δ,是单流优化情形的十倍,有效吞吐增益依然为 000,正如我说的,优化的核心在公平,如果大家都优化,一损俱损,也算是谁也不吃亏的效果。

统计矩随 mmm 的演变

mmm000 连续变动到 nnn,各阶矩的轨迹不同。

均值从 μ\muμ 单调线性增至 μ+Δ\mu+\Deltaμ+Δcwnd\text{cwnd}cwnd 的均值确实在涨,但这只是 inflight\text{inflight}inflight 的膨胀,不是有效传输的增长。

方差呈倒抛物线,在 m=n2m=\dfrac{n}{2}m=2n 时达到最大值 Δ24\dfrac{\Delta^2}{4}4Δ2,在两端 m=0m=0m=0m=nm=nm=n 时归零,两组越均衡,混合分布的离散度越大,全流同步增窗反而消灭了截面差异。

三阶中心矩与偏度在 m<n2m<\dfrac{n}{2}m<2n 时为正右偏,少数增窗流构成右尾,m=n2m=\dfrac{n}{2}m=2n 时过零,m>n2m>\dfrac{n}{2}m>2n 时左偏,少数未增窗流构成左尾,偏度的绝对值在 mmm 接近 000nnn 时趋于最大,极少数流的行为偏离整体,是分布偏态的唯一来源。

四阶中心矩与峰度在 m=1m=1m=1 时极高,尖峰厚尾,绝大多数流聚集在主峰,一条流孤立在远尾,在 m=n2m=\dfrac{n}{2}m=2n 时超额峰度降至 −2-22,双峰等权,比正态更平坦,在 m=nm=nm=n 时回到 000

而排队延迟从 000 线性增至 nΔC\dfrac{n\Delta}{C}CnΔ,是唯一对所有流都产生均匀伤害的量,且随增窗流数量严格叠加。

正好有现实来印证。

2010\text{2010}2010 年代初期,诸如华夏创新,网宿等 CDN\text{CDN}CDN 相关厂商提出网络加速,获得了很大收益,即 m=1m=1m=1 附近的情形,于是 BAT\text{BAT}BAT 等互联网厂商迅速跟进,优化最后一公里,时间来到 2018\text{2018}2018 年左右,m=n2m=\dfrac{n}{2}m=2n,接下来当二线,三线互联网公司都组件了网络加速团队后,m=nm=nm=n,几乎所有公司的网络加速团队被边缘甚至解散,但网络延迟却增加了。

传输优化悲剧

首先,有效吞吐量恒为零增长。

无论 mmm 取何值,传播管道中的有效 BDP\text{BDP}BDP 均值精确等于 μ\muμ

E[有效 BDP]=μ,∀ m∈[0,n]\mathbb{E}[\text{有效 BDP}] = \mu, \quad \forall\, m \in [0, n]E[有效 BDP]=μ,m[0,n]

新增的 mΔm\DeltamΔ 作为 inflight\text{inflight}inflight 全部溢出到 buffer\text{buffer}buffer 中,没有任何一比特转化为更多的实际传输。链路容量 CCC 是硬约束,inflight\text{inflight}inflight 超过 CTpCT_pCTp 的部分只产生延迟,不产生吞吐。

其次,排队延迟对所有流均匀。

Tq=mΔCT_q = \dfrac{m\Delta}{C}Tq=CmΔ 是公共因子,它不区分增窗流和未增窗流,不区分肇事者和无辜者,一条流增窗,所有流的 RTT\text{RTT}RTT 一起上升,所有流增窗,所有流的 RTT\text{RTT}RTT 一起上升 nnn 倍。

第三,优化是个体理性与集体最优的根本背离,从以上论述,也能看到优化行为增加了流分布的各阶统计矩,这是悲剧的核心。

考虑单条流的激励。

如果只有单流增窗,m=1m=1m=1,速率从 Cn\dfrac{C}{n}nC 升至 (W1+Δ)Cnμ+Δ≈Cn(1+(n−1)Δnμ)\dfrac{(W_1+\Delta)C}{n\mu+\Delta} \approx \dfrac{C}{n}\left(1 + \dfrac{(n-1)\Delta}{n\mu}\right)nμ+Δ(W1+Δ)CnC(1+nμ(n1)Δ),确实得到了更多带宽,代价是所有人的延迟增加了 ΔC\dfrac{\Delta}{C}CΔ,但这个代价被 nnn 条流分摊,我个人只承担 1n\dfrac{1}{n}n1,个体收益大于个体成本,增窗是理性的。

如果所有人都这么想,m=nm=nm=n,每条流的速率回到 Cn\dfrac{C}{n}nC,没有人得到更多带宽,但所有人的延迟增加了 nΔC\dfrac{n\Delta}{C}CnΔ,个体理性的集体结果是纯粹的福利损失。

这是公地悲剧在网络拥塞中的精确形态,buffer\text{buffer}buffer 是公共资源,每条流都有动机多占一点,但多占的收益是私有的,造成的延迟成本是公共的,当所有人都行使这个动机时,收益相互抵消,成本全员承担。

所以要换个更加技术而不是经济的思路,按照 buffer\text{buffer}buffer 动力学基于比例挤带宽的原理,增窗流的代价是线性的,而收益则是打折的,增加 kkk 倍的 inflight\text{inflight}inflight 无法获得 kkk 倍的吞吐。

唯一最优解

当所有流恰好将 cwnd\text{cwnd}cwnd 维持在 μ=CTpn\mu =\dfrac{CT_p}{n}μ=nCTp,即完美均分带宽,零排队时,系统处于全局最优状态。

此时每条流获得公平带宽 Cn\dfrac{C}{n}nC,排队延迟为零,RTT\text{RTT}RTT 最小,BDP\text{BDP}BDP 分布退化为常数,方差为 000,没有任何流通过挤占 buffer\text{buffer}buffer 获得优势,任何偏离,无论是一条流还是多条流试图多占,都只产生排队延迟而不增加总吞吐。

试图通过挤占 buffer\text{buffer}buffer 获得更多带宽,在单流层面看似有效,在全流层面则是自我消解的,你多占的那部分,正是别人失去的那部分,而所有人共同付出的延迟代价,却没有任何人得到补偿。

最好的策略,就是什么也不做的自然公平,AIMD\text{AIMD}AIMD 便是代表。

做得越多越觉得标准的原始形态是最优的,没被修改过的 TCP\text{TCP}TCP,没被优化过的 CUBIC\text{CUBIC}CUBIC,如果你真的要比别人快一点,那便是 BBRv1\text{BBRv1}BBRv1,即 201620162016 年底的那个。

裤衩子锁着边儿,而且绣着花儿。

硬件资源和软件协议

硬件和资源决定性能的上限,软件和协议兜住性能的下限,确保基础可用性。没有比 197019701970 年代的 TCP\text{TCP}TCP 跑在不断演化的以太网上更能展现这种合作关系了。

而当带宽延迟需求触及比如 1RTT1p\dfrac{1}{RTT}\sqrt{\dfrac{1}{p}}RTT1p1 的极限时,运行在通用的,统计的操作系统的 TCP\text{TCP}TCP 便不再适用,RDMA\text{RDMA}RDMA 恰能消除操作系统引入的统计波动,这意思是,只要基本传输需求还没有触及下限,软件就是 OK\text{OK}OK 的,不要去优化它,试试去用更好硬件把资源扩容,比优化传输协议有效得多。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值