國民遠控向日葵技術升級:BBR算法提升複雜網絡環境下的遠控體驗

硬派偏執狂 發佈 2022-08-19T13:58:48.639049+00:00

決定遠程控制服務體驗是否優秀的核心點之一是網絡。網絡環境優秀時,遠程控制的體驗自然是高清流暢,但事實上,很多需要應用到遠程控制的場景其網絡環境遠遠稱不上優秀,在這類弱網環境下如何保證遠程控制服務依舊能夠有十足的穩定性,是遠程控制廠商們的一大課題。

決定遠程控制服務體驗是否優秀的核心點之一是網絡。網絡環境優秀時,遠程控制的體驗自然是高清流暢,但事實上,很多需要應用到遠程控制的場景其網絡環境遠遠稱不上優秀,在這類弱網環境下如何保證遠程控制服務依舊能夠有十足的穩定性,是遠程控制廠商們的一大課題。

「國民遠控」向日葵為優化弱網環境下的連接穩定性問題並提升帶寬的利用率,已於早前完成了一次技術升級,全球各地的主要伺服器均支持BBR擁塞控制算法,該升級可以讓伺服器之間的連接更快,端與伺服器的連接更穩定。

而作為本次技術升級核心的BBR擁塞控制算法,受到的關注卻比較少,各路資料和宣傳中均鮮被提及,這篇文章將介紹這一算法,並且實測引入BBR擁塞控制算法之後的向日葵在弱網環境中的提升。

擁堵控制算法的「來龍去脈」:從「Cubic」到「BBR」

● TCP擁塞控制(Congestion Control)算法

網際網路經歷了幾代的發展,從上網需要電話線帶寬只有幾十Kbps,到現在隨時隨地上網,最新的5G更是讓我們獲得了Gbps的接入帶寬,這在以前很難想像。不過,在網際網路快速發展的背後,它的技術基礎有相當一部分仍然構建於20年前甚至更早。TCP擁塞控制(Congestion Control)算法就是其中之一。作為專有名詞它很少被提及,但我們的一些經歷,比如明明網速很快但下載卻很慢這樣的事很可能跟它有關。

網際網路上的兩點通信時,會經過很多路由,每經過一個路由設備叫一跳(hop)。每一跳都有不同的帶寬,有大有小,兩點之間的可用帶寬是每一跳中的最小值,被稱為Bottleneck BW,因為是公共鏈路,它們幾乎總是擁擠不堪,丟包和排隊經常發生,可用帶寬也時大時小,這很常見。

不過7層應用程式並不需要關心這些,即使排隊和路由抖動產生了丟包或者數據錯誤,4層的TCP協議也會處理,它會重傳並進行帶寬控制。重傳用於保證數據的完整性,帶寬控制則確保有限的帶寬資源被儘可能公平分配,減少排隊和丟包,這就是擁塞控制算法的核心,是的,為了公平。除了帶寬,通信的另外一個重要指標是延時,用RTT(Round-trip time)計量,是一個包從被發送到收到ACK的間隔,一般是以毫秒計。RTT也與擁塞控制密切相關。

● Cubic擁塞控制算法

1980年代的網際網路崩潰,促成了TCP擁塞控制的落地。經過十多年的發展,Cubic出現並延續至令,目前它仍然是網際網路主流的擁塞控制算法,它基於著名的「加性增,乘性減」(AIMD)控制律,將丟包作為網絡鏈路擁塞的指示。它會檢測丟包,發現時便會主動降低發送頻率,減少擁塞。這被稱為「基於丟包」的擁塞控制算法。同類算法有幾個,像更早前的Reno, BIC等。

由於只有當路由器的隊列滿了以後才會有丟包,因此,這類算法傾向於快速填滿瓶頸路由器的緩存,然後急劇降低發包(減少50%),當隊列空閒後又慢慢填滿,周而復始。

Cubic算法的正常運行對鏈路的丟包率有一定的要求,在丟包率較高的長肥管道環境下,其發送窗口會迅速收斂到很小。另一方面,當實際可用帶寬增大時,它總是會花固定的時間去探測然後慢慢增大,顯得緩慢而笨拙。

● BBR擁塞控制算法

Cubic在擁塞避免階段會逐漸加大發送窗口直至填滿瓶頸隊列,這種機制加速了擁塞的形成,造成了網絡延時的波動。在鏈路瓶頸處保持最大帶寬和最小延時的狀態是擁塞控制的目標,但明顯Cubic在目前的網際網路環境中已經不能很好的勝任。谷歌提出一種基於延時帶寬積的算法BBR (Bottleneck Bandwidth and RTT),使用了交替測試鏈路的最大帶寬與最小的RTT的方法,來尋找名為Kleinrock的最佳操作點,這個點,核心特徵是報文開始排隊。如下圖所示,Cubic的擁塞控制點是排隊並且緩存已經滿了。

將最近10次往返中測得的最大帶寬視為Bmax,將過去10s中測得的最小RTT視為Tprop,然後根據這兩個值估算BDP。

BBDP = Bmax × Tprop

BBR分別通過窗口增益和起博增益來調整CWND和發送速率,進而控制其發送行為,將擁塞快速收斂到最佳控制點。

向日葵引入BBR之後在弱網環境的提升

前文已經詳細介紹了BBR擁塞控制算法的發展歷程和實現原理,接下來將具體介紹引入BBR擁塞控制算法之後,向日葵在弱網環境下有怎樣程度的提升。

向日葵的實驗室數據顯示,在跨國的弱網環境中,未使用多路復用的單連接應用,BBR能提升約10倍的端與伺服器間的可用帶寬(如:由120Kbps提升到>1Mbps)。同時,國內的伺服器間互聯時,BBR能提升1倍以上的伺服器間帶寬利用率(由40%到85%)。

向日葵實際應用數據顯示,在經過支持BBR的伺服器中轉後,向日葵的連接帶寬提升了3倍以上,幀率提升了5倍以上。

因此,我們可以得到如下結論:BBR擁塞控制算法能顯著改善向日葵在部分使用場景下的用戶體驗。

當然,除了BBR擁塞控制算法,向日葵優秀的遠控體驗還得益於大量其他的技術優勢,例如:、丟包重傳及抗丟包(ARQ/FEC)技術、Visualsaliency算法、自研SADDC圖像算法等等。事實上,正是向日葵經年累月在技術上的堅持不懈和極致追求,以及對技術細節的不斷打磨,才能夠不斷突破技術瓶頸,造就如今行業的領先地位。

關鍵字: