本文包含中心極限定理,大數定律,經濟規律等,bbr 倒沒多少,不過已經習慣把 bbr 當靶子了。
上周寫了 揭秘 bbr 以及 搶帶寬的原理,我對自己說,這都是理論上如何,可實際上呢。于是有必要結合更實際的場景,而這恰恰是大部分人所忽略的場景。
網絡擁塞主要涉及 buffer 占用,則聚焦到 buffer。細節不重要,重要是流量在 buffer 的分布,真實網絡是下面這樣(對于個人直播,D 和 S 對稱):
整天說互聯網是統計復用系統,就要用統計的語言描述,中心極限定理,大數定律以及冪律在網絡擁塞動力學中起重要作用。
題外話:但凡能用數學精確描述的,都不真實,都是近似,且一定范圍內的近似。參見牛頓在《自然哲學的數學原理》中的方法論,引入牛頓剛體,伽利略光滑平面…后來的澄清石灰水,橡膠棒與皮毛,玻璃棒與絲綢就顯得在數學上不那么嚴謹了,但真實啊。
先大致描述圖中涉及的分布以及它們的特點。
根據中心極限定理,正態分布是歸宿。骨干網由接入網匯聚而成,匯聚過程正是中心極限定理作用的過程,即任意分布在疊加過程中趨向正態分布。
正態分布很容易理解,它就像(實際上也是)個垃圾堆。水杯,塑料袋,褲頭,襪子,皮鞋,衛生紙都是有用的低熵體(生產它們需要注入能量),將它們丟棄就是疊加它們,最終就是個垃圾堆,里面所有東西都被獨立丟在這里任由時間飛逝而爛掉,任何兩件東西之間沒有任何關系。
等量樣本,正態分布的方差最小,熵最大,所謂中心極限定理表達的就是有用的東西變成垃圾堆的熵增過程。
然而非獨立樣本的分布往往偏離正態分布,比如表現為冪分布,典型的這類場景中往往有人的行為影響。比如貧富占比的冪律,也叫二八定律,馬太效應,這就是說,致富和貧困并非彼此獨立發生的。
題外話:我一直說貨幣系統就是個分布式系統,交易就是供需認知的分布式一致性收斂達到共識的過程,而這個一致性共識永遠不會達到,否則就會打破二八定律。財富在交易過程中積累,而交易過程必有一方比另一方在等價中間物上獲益,否則交易便不會發生。所謂財富分化來自信息差,經濟規律一直在試圖消除信息差達到分布式一致性,在這個過程中產生新的信息差抵制一致性趨向,以此循環,永遠達不到一致性,世界因而發展,財源滾滾來。
接入網流量往往表現為突發,而這類突發和人的上網行為相關,如網紅直播,搶購,刷短視頻,看熱播劇都是人驅動,流量和人之間千絲萬縷的聯系很難滿足獨立事件約束,這表現為接入網流量更不穩定。
無數接入網流量匯聚到骨干,正態分布的流量表現出更穩定的特征,骨干網 buffer 占用相對可預期,流量分布概率密度函數就是個有高度和寬度垃圾堆,便可基于此決策適應它的行為。
流量穩定性可通過大數定律理解,任意時間點流量相當于對數據流的一次抽樣,數據流越多,其均值越接近總量均值,而總量可表示為一個任意足夠大時間段的流量總和,該時間段隨時間向前滑動,其均值保持和單點抽樣均值一致,在此過程中,少量數據流進入退出對整體影響微乎其微,正好像海面始終有浪花,偶爾驚濤駭浪,但總體上的海面卻是平的。
題外話:數量越多的流量,同步的概率越低,代價越大,越趨向于異步,而異步趨勢則表現為鋸齒的變小直到消失,表現為波峰波谷抵消而總體趨平,平面升高或降低需要足夠多流量整體同時同步升高(拉偏期望)才能產生影響,而這又是一個同步行為,前面說了,數量越大,同步概率越低,代價越大,越不可能,因此整體趨穩定。這是一種更好的理解大數定律的方式,正如用垃圾堆理解中心極限定理一樣。
由此,互聯網流量越往邊緣越偏離正態分布,為照顧大而不穩的方差,buff_size = BDP / sqrt(n) 的根號效應減弱(參見 Sizing router buffers 值得一提的是,這篇論文的結論本身就是從中心極限定理導出的),buffer 溢出和 bufferbloat 更容易在邊緣發生,所配置 buffer 反而比實際需要的更大。
要關聯 bbr 就要單獨抽出 bltbw 和 proprt 這兩個 bbr 顧名思義的核心正交要素,看它們如何分別適應接入網和骨干網。
如果 bltbw 在接入網,單流 bbr 將以 “準精確” 方式運行,“準” 是考慮到骨干流量分布特征,rtt 隨正態分布的流量而波動,因此維持 10s 的 minrtt 將不再可信,正確做法是讓 minrtt 跟著骨干網流量而波動。
如果 bltbw 在接入網,多流 bbr 將以 “粗粒度” 方式運行,“粗” 指不但測不準波動的骨干網時延,接入網 buffer 擠占也破壞 bbr 假設,此前我說過多次該話題,不再贅述,bbr 郵件組也沒更好方案,直到 bbr3 依然只是回引 aimd。
如果 bltbw 在骨干網,bbr 的模型假設將完全失效。骨干網洪流中,單獨一條 bbr 流的 probertt 對 buffer 將不會有可識別的影響,對 minrtt 測量的影響遠不如對正態分布的流量波動進行識別和跟隨。如果不想進行這種費力卻依然測不準的識別,回退到 aimd,剩下的交給 RED。
只要 bltbw 在骨干網,bbr 流就像潑進長江的一盆水或一滴水滴在海綿上。設定 aimd,隨波逐流就好。如果要擺脫這悲觀,嘗試著在 bbr 上還能做點事,適應而不是改變,不爭不退,所以就知道我那些旨在提高 bbr 靈敏性而不是提高測量精度的想法的用心良苦了吧。
按照收斂比概念,bltbw 大概率在第一跳,骨干反而近乎無限,只需識別并跟隨其波動即可,但隨著接入網技術的發展(老掉牙的說法是 xx 沒能同樣發展),越來越多的用戶購買越來越大的接入帶寬(我們從運營商購買的帶寬即接入帶寬,而骨干網只是個資源池),bltbw 也會向網絡中心考慮,網絡的統計特征越來越明顯,擁塞控制將越來越指望不上精確,這是和 越來越無效的擁塞控制 不同的另一個的意思,雖然無法精確度量鏈路畫像,但正態分布卻是可預期的,基于這種預期,雖然端到端算法無法影響它,但卻可以適應它,跟隨它。
我的信條,保持穩定,向趨勢靠攏。所謂端到端算法,名字里就沒有網絡,對這類算法,網絡是不可知測不準的,網絡僅能反饋趨勢而不是值,過于執著精確測量的算法犯了唯心主義的錯誤,必跌入形而上學的深淵。
比如 sender 測得 rtt 為 73ms,66ms,51ms,46ms,33ms,30ms,31ms,28ms,34ms,32ms,這充其量只能告訴 sender 擁塞在緩解,你不會真的相信 minrtt 就是 28ms 了吧,那么移指平均后它可信嗎,哦,那只是一種濾波方式,為什么不是另一個呢?基于這些完全不準確但一本正經的粗粒度度量試圖做精確的決策,不是胡扯么?
皮鞋沒有蹬上,露著白襪子。
浙江溫州皮鞋濕,下雨進水不會胖。