TCP 擁塞控制目標(biāo)是緩解并解除網(wǎng)絡(luò)擁塞,讓所有流量公平共享帶寬,合在一起就是公平收斂。
AIMD(幾乎所有與擁塞控制相關(guān)的協(xié)議或算法都有 AIMD 的影子,包括 RoCE,BBRv2) 為什么收斂?我一般會給出下面的老圖:
雖然只展示了兩條流的收斂,但 n 條流收斂的展示無非就是將 2 維坐標(biāo)系換成 n 維坐標(biāo)系,只要能證明任意的 2 維截面都如上圖所示就行,而這件事簡單推導(dǎo)一下就行,比畫坐標(biāo)系還要直觀,再說超過 3 維的坐標(biāo)系也畫不出來。
設(shè)一個 AIMD 系統(tǒng)的 AIMD 參數(shù)為 α \alpha α, β \beta β, w i 0 w_{i0} wi0? 和 w j 0 w_{j0} wj0? 分別為任意兩條流的初始窗口,且 w i 0 > w j 0 w_{i0}>w_{j0} wi0?>wj0?,二者之差 d 0 = W i 0 ? W j 0 d_0=W_{i0}-W_{j0} d0?=Wi0??Wj0?。
假設(shè)所有流同步(異步流和 RED 作用下相對復(fù)雜,用統(tǒng)計(jì)分布代替公式),一個 AIMD 周期后,兩條流的 cwnd 分別為 w i 0 = w i = β ? ( w i 0 + α ) w_{i0}=w_i= \beta*(w_{i0}+\alpha) wi0?=wi?=β?(wi0?+α) 和 w j 0 = w j = β ? ( w j 0 + α ) w_{j0}=w_j= \beta*(w_{j0}+\alpha) wj0?=wj?=β?(wj0?+α),此時兩條流 cwnd 之差 d = β ? d 0 d=\beta*d_0 d=β?d0?。
再下一個周期, w i 0 = w i = β ? ( β ? ( w i 0 + α ) + α ) w_{i0}=w_i= \beta*(\beta*(w_{i0}+\alpha)+\alpha) wi0?=wi?=β?(β?(wi0?+α)+α) 和 w j 0 = w j = β ? ( β ? ( w j 0 + α ) + α ) w_{j0}=w_j= \beta*(\beta*(w_{j0}+\alpha)+\alpha) wj0?=wj?=β?(β?(wj0?+α)+α),兩條流 cwnd 之差 d = β 2 ? d 0 d=\beta^2*d_0 d=β2?d0?。
容易得到,在第 n 個 AIMD 周期后,兩條流 cwnd 之差為 d = β n d 0 d=\beta^nd_0 d=βnd0?,趨向于 0,這意味著無論初始時刻任意兩條流差異多么大,最終它們將趨同。
值得注意的是,無論是 AI 過程還是 MD 過程,都單獨(dú)對收斂有貢獻(xiàn),假設(shè)持續(xù) AI,從不 MD,觀察一個比值 w i 0 + x w j 0 + x \dfrac{w_{i0}+x}{w_{j0}+x} wj0?+xwi0?+x?, x 越大,比值越趨向于 1,在總體量面前,差異將無關(guān)緊要,另一方面,假設(shè)持續(xù) MD,從不 AI,觀察一個差值 β x ? w i 0 ? β x ? w j 0 \beta^x*w_{i0}-\beta^x*w_{j0} βx?wi0??βx?wj0?, x 越大,該差值趨向于 0,宏觀上看,差異消失。
總體而言,AI 的過程與初始值無關(guān),它是一種與初始優(yōu)勢相反的力量,保持差值不變,比例趨向公平,削減掉相對差異,而 MD 則與初始值強(qiáng)相關(guān),但它下降的速率越來越慢,保持差值趨向公平,比例不變,削減掉絕對差異。AIMD 共同作用,各自效用獨(dú)立積累,無論在比例差異還是在絕對差異均被時間抹平。
舉個例子,A 有 1 塊錢,B 有 9 塊錢,兩人很公平,因?yàn)橘徺I力有絕對值下限,雖然 A 和 B 相差 9 倍,但他們可能都買不到東西,但 A 有 100 萬塊,B 有 900 萬塊,就不再公平了,此時 9 倍的差異關(guān)乎他們生活在不同層次,如果 A 有 1 億零 100 塊,B 有 1 億零 900 塊,又會非常公平。
大概社會平均工資,普調(diào),年終獎,股權(quán)被稀釋,工資被倒掛,就和 AIMD,AIAD,MIMD,MIAD 有關(guān)。用上述的簡單推導(dǎo)可以證明,除了 AIMD 可以收斂到公平,其它 3 種均不行。
AIMD-based cc,比如 reno,cubic,scalable,highspeed,它們被認(rèn)為不如 BBR,但事后看,這些算法并不是在根本上不如 BBR,而 BBR 也不是根本上就優(yōu)秀,前面說過,BBR 的高效來自于瞬時記住并憋住的 maxbw,而 cubic(包括其它 AIMD cc) 的問題在于它不能識別隨機(jī)丟包。而 AIMD 本身與效率無關(guān),它只關(guān)注公平收斂。
cubic 只要增加丟包分類識別就能解決問題, 而 BBR 無論 probebw 還是 probertt 均無法完備論證收斂,只在 “效果” 上顯示出 “加速比與帶寬占比負(fù)相關(guān)”,而這是過不了審的。
已經(jīng)有了很多 “cubic-改” 算法,大多數(shù)引入了 delay 甚至 delay 梯度,在丟包發(fā)生時二次確認(rèn)擁塞是否真實(shí)存在,事實(shí)上 westwood 就是一種比較合理的算法,它收斂到瓶頸帶寬,而不是固定比例。然而由于實(shí)現(xiàn)粗糙(依然是受制于 Linux 擁塞狀態(tài)機(jī)),westwood 未竟全功。
還有另一種擁塞判定方法,二次機(jī)會法,事先為 AIMD 準(zhǔn)備兩個 beta 參數(shù),當(dāng)檢測到丟包時,隨即將 cwnd 下降一個更小的 beta 比例,進(jìn)入包守恒開始重傳恢復(fù),如果重傳率超過一個閾值,則將 cwnd 下降更大的 beta,視情況從兩個 MD 中任意一個開始進(jìn)行 AI:
避開的只是隨機(jī)丟包,絲毫不影響擁塞丟包后的收斂。
非常簡單,不需要像 westwood 還要計(jì)算瓶頸帶寬,代價就是誤判會增加重傳率,好在只有二次機(jī)會,只會增加一點(diǎn)點(diǎn),不像 BBR 憋住 10 round 那樣執(zhí)著。
公平收斂,抓住一個小基本點(diǎn)就行了,這是控制平面的底座,其它的,留給應(yīng)用自己以及底層鏈路,就好像線路斷了,再好的算法也無濟(jì)于事,另一方面,application-limited 傳輸,再好的算法也用不上,但無論如何,公平是剛需。
其實(shí)菜市場攤販就遵循 AIMD 以避開相互內(nèi)耗的價格戰(zhàn),最終你會發(fā)現(xiàn)各個攤販的菜價都一樣,差別只是質(zhì)量口碑而已。菜市場剛開張時,各家促銷,緩慢加價,最終發(fā)現(xiàn)客戶流失時,又大減價(注意這個 “大” 字),大促銷,最終他們的價格趨向于一致。當(dāng)然,TCP 這方面屬于后生,但 AIMD 是一個放之四海而皆準(zhǔn)的通用控制論模型,在它的框架下做事就對了,但凡違背的,事情將會越發(fā)精細(xì),復(fù)雜。文章來源:http://www.zghlxwxcb.cn/news/detail-456319.html
浙江溫州皮鞋濕,下雨進(jìn)水不會胖。文章來源地址http://www.zghlxwxcb.cn/news/detail-456319.html
到了這里,關(guān)于AIMD 為什么收斂(tcp reno/cubic 為什么好)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!