物理上两个量乘积的共性是表示一种作用效果,这个效果对客体表现为一种感受。比如力乘以力臂等于力矩,它表示驱动转动的效果,该效果对转轴而言是一种感受。
同样 bw 和 rtt 的乘积也是这样一种针对 buffer 的作用效果,包括电压和电流的乘积针对用电器的作用效果(能耗),或者电流和电阻针对电压的作用效果(电压降)。
在 vegas 中,diff = (actual - expected) * basertt,这也是一种作用效果。
探知带宽变化的场景中,actual - expected 作为吞吐的变化可以看作一种 "作用力",而 basertt 则是 "力臂",两个乘积就是一种力矩,表示吞吐变化给当前流量带来的一种作用效果。当有流量退出或侵入时,松弛或压力的总效果是被所有仍在的流量均分的,n 条仍在的流中,每条流的感受都是总感受的 1 / n,每条流分担了总效果的 1 / n,它便是 diff,即 "作用力的变化-吞吐变化" 和 "力臂-basertt" 的乘积,针对这个乘积做代偿反应就行了。
vegas 的意义在于,当有效带宽变化时,它施加给所有仍在流的 "作用效果(带宽变化和 basertt 的乘积)" 是相同的(diff1 == diff2 == diff3 == diff4 ...== 退出或侵入的流所占据的 buffer / n),无论 basertt 大还是小,针对相同的感受做相同的反应,加减守恒即可,如此可将 diff 夹逼在特定区间。
这就是理想中的 vegas 既能保持几乎 100% 带宽利用率又能维持公平的力学解释,要比纯粹从网络传输视角理解还要直观,说明物理量相乘的意义是相通的。
浙江温州皮鞋湿,下雨进水不会胖。