天天看點

技術分享:國民遠控向日葵如何通過BBR算法提升遠控體驗?

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

“國民遠控”向日葵為優化弱網環境下的連接配接穩定性問題并提升帶寬的使用率,已于早前完成了一次技術更新,全球各地的主要伺服器均支援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等。

技術分享:國民遠控向日葵如何通過BBR算法提升遠控體驗?

由于隻有當路由器的隊列滿了以後才會有丢包,是以,這類算法傾向于快速填滿瓶頸路由器的緩存,然後急劇降低發包(減少50%),當隊列空閑後又慢慢填滿,周而複始。

技術分享:國民遠控向日葵如何通過BBR算法提升遠控體驗?

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

● BBR擁塞控制算法

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

技術分享:國民遠控向日葵如何通過BBR算法提升遠控體驗?

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

BBDP = Bmax × Tprop

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

技術分享:國民遠控向日葵如何通過BBR算法提升遠控體驗?

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

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

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

技術分享:國民遠控向日葵如何通過BBR算法提升遠控體驗?

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

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

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