火山引擎智能擁塞控制算法 VICC(Volcano Intelligent Congestion Control)是一種自適應的擁塞控制算法,旨在解決全球不同網絡環境下,不同音視頻應用對帶寬利用率和延時的差異化要求。它結合了傳統擁塞控制算法(如 GCC 和 BBR)的優點,并且能夠根據不同的網絡條件、業務偏好和碼率特征進行自適應調整,包括自適應擁塞響應速度、自適應帶寬探測幅度、自適應丟包檢測策略、自適應抗抖動能力和自適應 Padding。通過這些自適應調整,VICC 算法能夠提升各種復雜弱網下的帶寬利用率,同時在滿足不同延時的條件下,盡量提升帶寬的穩定性,為用戶提供更好的音視頻體驗。
實時音視頻應用的網絡傳輸面臨諸多方面的挑戰,其中包括:
除了上述挑戰,實時音視頻傳輸還需要關注體驗指標,如實時性、流暢性、清晰度、音畫同步性等,這些指標對于提供高質量的音視頻體驗至關重要。
為了快速提升線上用戶弱網相關的體驗,火山引擎根據抖音集團真實用戶的負反饋數據打磨研發了“音視頻卡頓歸因模型”,它可以對線上音視頻卡頓的所有 case 進行自動歸因和聚類,為弱網問題的優化和優先級給出有效指導。
根據模型對線上用戶音視頻卡頓反饋的歸因和聚類,我們發現,當前引起線上卡頓問題的主要原因是上下行大小緩存問題。
線上用戶視頻/音頻卡頓歸因類型占比
大小緩存的描述,可以參考:https://www.ietf.org/archive/id/draft-cardwell-iccrg-bbr-congestion-control-00.txt
大緩存:Deep buffers,at bottleneck links with deep buffers, congestion happens before packet loss.
小緩存:shallow buffers, in shallow buffers, packet loss happens before congestion.
自 Google 開源 WebRTC 實時音視頻框架以來,GCC 作為默認擁塞控制算法備受行業研究和關注,而 WebRTC 在演進過程中,也在不斷演進集成 BBR、PCC 等擁塞控制算法,以期望進一步提升實時音視頻的傳輸性能。
下文以 GCC 和 BBR 算法為例,我們來看一看當前主流擁塞控制算法的特性和不足。
GCC 算法是專為實時音視頻傳輸設計的擁塞控制算法,但隨著網絡環境日益復雜、音視頻應用場景越來越豐富,GCC 算法難以提升上限以獲得更好的音視頻傳輸體驗。
GCC 算法帶寬估計與觸發擁塞延時示意圖
GCC 算法的關鍵特征
GCC 算法的發送/接收碼率的聯動是非連續性的。在檢測到擁塞之前,發送碼率和接收碼率是不聯動的;檢測到擁塞之后,發送碼率和接收碼率才開始聯動。如果要降低非聯動過程中的網絡延遲,GCC 算法需要過降帶寬排空非聯動過程中網絡中堆積的數據。另外,GCC 的網絡探測速度也較慢。
GCC 算法存在的問題
GCC 算法的幾個主要問題中,最核心的問題是帶寬估計的準確性(帶寬利用率)和擁塞檢測的有效性(對網絡的沖擊)存在很難調和的矛盾,導致這個問題的主要原因是:
BBR 算法是互聯網通用的擁塞控制算法,其設計目標追求高帶寬利用率、低擁塞延遲和丟包,BBR 在通用互聯網領域具備良好的性能表現,但因其設計目標和算法特性,不適應于實時音視頻傳輸場景。
BBR 算法帶寬估計與觸發擁塞延時示意圖
BBR 算法的關鍵特征
和 GCC 算法不同,BBR 算法的發送/接收碼率的聯動是連續性的,它實時跟蹤接收碼率,同時根據擁塞檢測的結果,來調整發送窗口(cwnd)的大小,并最終影響發送碼率。
BBR 算法存在的問題
雖然 BBR 在帶寬估計準確性上等能力要高于 GCC,但它也存在一些明顯的問題:
由于 GCC 和 BBR 等算法在實時音視頻傳輸場景存在一些不足,火山引擎網絡傳輸團隊自研了 VICC 算法,旨在優化上述問題的同時,也為火山引擎實時音視頻業務提供更加良好的用戶體驗。
VICC 算法主要通過網絡狀態統計進行自適應帶寬估計決策,并作出帶寬評估動作,以提升各種復雜網絡下擁塞控制的性能表現。在近一年的實驗室和線上業務打磨過程中,我們深入分析了不同算法原理及現網痛點弱網問題,輸出了 40+ 項最佳工作點及 9 篇技術專利,線上業務的各項指標,特別是視頻卡頓率、首幀時長等也得到了顯著的改善。
火山引擎智能擁塞控制算法 VICC 架構圖
評估當前網絡狀態的重要指標之一是網絡狀態統計參數,而準確的基礎網絡狀態參數是提高帶寬估計準確性和帶寬利用率的關鍵基石。VICC 算法提供了多種基礎網絡狀態參數,部分基礎網絡狀態統計參數如下:
VICC 算法結合了傳統擁塞控制算法的優點,并且能夠根據不同的網絡條件、業務偏好和碼率特征進行自適應調整,包括自適應擁塞響應速度、自適應抗干擾能力、自適應丟包檢測、自適應帶寬探測幅度、自適應擁塞排空等。
VICC 繼承并優化了 GCC 和 BBR 擁塞檢測能力,通過對發送碼率、接收碼率及延遲參數的關系進行建模,觀察延遲參數變化趨勢及其關聯性,以及對于延遲參數的容忍程度進行擁塞響應,從而快速排空網絡擁塞。
和 GCC / BBR 相比,VICC 擁塞響應及收斂速度更快。
GCC / BBR / VICC 擁塞響應及收斂速度比較(線上實測)
擁塞響應越靈敏,意味著在網絡抖動場景下容易誤判,導致算法抗干擾能力下降。VICC 使用蟻穴算法來對抗網絡抖動和亂序,通過接收碼率和發送碼率來度量網絡透過率,并結合觀察延遲參數變化趨勢及關聯性,提升自適應抗干擾能力。
VICC 可以對抗 2000ms 以內的延遲抖動幅度,抗抖動能力顯著比 GCC 和 BBR 強。
GCC / BBR / VICC 抗抖動能力比較(線上實測)
靈活可配置的擁塞檢測靈敏度
在自適應擁塞檢測的基礎上,VICC 還會根據業務偏好,提供靈活可配置的擁塞檢測靈敏度模式設置,以適用于不同業務場景的訴求,并做好擁塞響應靈敏和抗干擾能力強的 trade-off。
以火山引擎 RTC 典型應用場景為例,互娛、企業通訊等場景一般可以容忍 200-300ms 的延時,而遠程車控、云游戲等場景只能容忍 50-100ms 的延時。VICC 提供多種模式來適應不同場景的延時需求,在延時容忍度較高的場景,VICC 可以通過延遲擁塞響應時間來獲得更高的帶寬估計的穩定性,在延時容忍度較低的場景,VICC 可以通過快速擁塞響應來降低網絡擁塞延遲。
火山引擎 RTC 典型應用場景
通過對發送碼率、接收碼率及丟包參數的關系進行建模,并微幅調整發送碼率,檢測接收碼率和丟包參數之間的關聯性,VICC 可以自適應檢測出丟包為隨機丟包和擁塞丟包。一旦識別出隨機丟包后,VICC 可以準確地對隨機丟包進行系數補償,以達到不誤降帶寬的效果。
和 GCC / BBR 相比,VICC 隨機丟包抗性可達到 70% 以上。
GCC / BBR / VICC 隨機丟包抗性比較(線上實測)
考慮實時音視頻傳輸對于延遲的容忍,根據延遲參數的程度、自適應上探幅度及下探幅度,在保留競爭力的同時,VICC 避免了因為頻繁探測引入的網絡延遲堆積問題。同時,在檢測到擁塞緩解后,VICC 通過對發送碼率、接收碼率及延遲參數的關系進行建模,迅速提升帶寬上探幅度和調整時間窗口;在探測到帶寬滿足音視頻傳輸體驗后,再逐步放慢上探幅度和時間間隔。
當網絡存在瓶頸帶寬時,VICC 的帶寬探測相對 GCC 和 BBR 更平穩。當瓶頸帶寬發生變化時,VICC 可以快速跟蹤實際瓶頸帶寬。
GCC / BBR / VICC 帶寬探測平穩度比較
VICC 使用自適應 Padding 策略來解決帶寬下溢疊加復雜弱網場景下的帶寬估計,在精準探測網絡帶寬的同時,盡量避免網絡沖擊和帶寬浪費。在決策需要發送 Padding 時,會先根據帶寬估計值設定目標發送碼率,并實時度量接收碼率,同時動態調整目標碼率。
VICC 自適應 Padding 策略示意圖
通過對擁塞響應速度、帶寬探測幅度、丟包檢測策略、抗抖動能力等一系列的“自適應調整”,VICC 算法能夠提升各種復雜弱網下的帶寬利用率,同時在滿足不同延時的條件下,盡量提升帶寬的穩定性,為用戶提供更好的音視頻體驗。
為了更直觀地展示 VICC 算法對于用戶音視頻體驗的提升效果,我們在不同類型的弱網環境下進行了音視頻通話測試,通過比較對端畫面的實時性和流暢性來比較 VICC 算法和市場上同類算法的擁塞控制能力。
在上行 70% 丟包網絡環境下,使用了 VICC 算法的火山引擎 RTC 依然保持穩定傳輸,幾乎沒有表現出卡頓。
當網絡突發上行 300kbps 限速小緩存時,使用了 VICC 算法的火山引擎 RTC 出現了短暫的卡頓,但算法很快進行了對抗,迅速恢復穩定和流暢,對用戶的體驗影響較小。
VICC 算法經過了字節內部質量專項評估實驗室打磨和驗證后,在火山引擎線上業務上也進行了充分的流量驗證,在視頻通話、屏幕共享等場景中,視頻卡頓率和首幀指標得到了顯著的改善,其中,視頻通話卡頓率下降 27%、首幀延時下降 100ms+;屏幕共享卡頓率下降 15%,首幀延遲下降 200ms。 同時,使用自適應 Padding 策略后,現網上下行碼率也得到了明顯的改善,其中,上行Padding碼率下降 90%,下行下降 70%。
VICC 算法上線后對視頻卡頓、首幀和 Padding 碼率指標的改善
在網絡環境高度復雜的背景下,影響用戶體驗的因素眾多,有時通用算法難以精準匹配所有場景的環境特點,因此,一些特定場景的用戶體驗難以做到極致,無法實現“個性化場景自適應”的目標。
未來,我們將根據線上問題歸因聚類建模,對用戶網絡場景精準識別,提升網絡場景識別算法的準度和范圍,并以此為驅動,針對不同的弱網場景進行全鏈路的差異化優化,使算法在各類網絡模型下的收斂達到最優,持續提升用戶體驗。
本文鏈接:http://www.tebozhan.com/showinfo-26-14339-0.html火山引擎實時、低延時擁塞控制算法的優化實踐
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 產品需求交付質量保證的“七重門”
下一篇: 產品需求交付質量保證的“七重門”