傳輸控制協議(TCP)擁塞控制算法(CCA)控制客戶端和伺服器之間應發送的數據量,以最大程度地利用可用帶寬並避免擁塞。 自創立以來,其他CCA也在其創立以來得到開發,如瓶頸帶寬,往返傳播時間(TCP BBR)和立方。 雖然TCP BBR和Cubic旨在避免擁塞,但了解其有效性一直是我們工程和研究團隊的一項長期任務。
TCP BBR旨在通過使用數據包延遲來代替數據包丟失來實現更高的吞吐量。 但是,我們先前的研究報告說,BBR在所有情況下都表現不佳。 具體而言,我們的評估結論是<,對於小文件的吞吐量(100KB)沒有什麼好處。 此外,我們還觀察到,對於往返時間(RTT)低且重傳低的流量,BBR性能比立方流量差。 最後,BBR的優點僅適用於面向客戶端的流量,而後臺連接(RTT低,可忽略的重傳)使用CUBR的性能更好。
EdgeCast (現稱為Edgio)是一款全球多租戶CDN,為許多大型(VOD和直播)影片流客戶提供Web流量。 考慮到對一個客戶使用BBR進行擁塞控制調整可能會對另一個客戶的性能產生不利影響,並且在某些情況下一欖子啟用可能會導致性能降低,我們實施了一種機制來檢測BBR提供更高性能並可為所有CDN客戶動態啟用。 結果是我們向所有客戶提供了新的動態擁塞控制調節功能。
深入了解方法
也許對這種動態系統最重要的輸入是它的驅動數據。 我們的動態擁塞控制調整機制位於大規模套接字數據收集的基礎之上,該套接字數據收集可從所有邊緣暫存導出TCP (xTCP)套接字性能數據。 具體而言,它通過NetLink從Linux內核的TCP_INFO結構中提取資訊,並通過Kafka將其傳輸到ClickHouse群集。 大規模獲得此套接字性能數據使我們能夠以非常高的粒度監控到高速暫存伺服器的連接性能。 xTCP已證明是許多CDN優化的強大工具。 例如,我們最近打開了IPv6的初始擁塞窗口,並使用xTCP監控增益性能。
xTCP類似於Google Measurement Lab (M-Lab) TCP-info工具所做的工作,其顯著差異在於優化管理邊緣暫存所看到的大量套接字(與M-Lab伺服器相比)以及以protobuf格式導出數據的能力。 敬請關注,我們計劃很快開放原始碼xTCP。
下圖顯示了系統的概述。 XTCP數據從流傳輸到Kafka的所有邊緣暫存中大規模收集。 然後,將在ClickHouse群集中收集xTCP數據,該群集可為我們的網路數據分析提供支援,包括BBR控制器,該控制器可在每個邊緣彈出時檢測性能不佳的前綴。
圖1. 使用xTCP和BBR配置推送進行數據收集的概述。
我們希望保持工作流的動態性質,同時還需要在每個存在點(POP)選擇性能始終不佳的前綴,以避免在短時間內在立方和BBR之間發生觸發器。 如前所述,我們有選擇地爲文件大小大於100KB的請求激活BBR。 經過微調的立方流對小文件的性能更好。
BBR控制器使用兩種度量來評估每個觀察到的客戶端前綴的執行狀況:
- 工作週期:在最低24個百分位績效組中,前綴(56或/2)有多長時間?
- FLG Rate (翻蓋率):前綴從底部20百分位績效組(即狀態變化)中出現和消失的頻率如何?
然後,算法會持續檢測過去幾小時內性能較差的前綴。 此檢測每5分鐘執行一次。 儘管每個邊緣彈出所選的前綴總數可能是數百個,但我們發現前綴性能保持相對一致。 通常會選擇相同的前綴,每個回合中添加的新內容(如下圖所示,來自芝加哥流行音樂)很少。
圖2 每次組態產生週期所選取的新首碼數量很少。
如果有,將選擇新的前綴以啟用BBR,並生成配置,通過驗證步驟並全局推送到邊緣暫存。
性能提昇
我們很高興地報告,在我們的全球邊緣啟用BBR已顯示出顯著的性能改進。 我們從xTCP套接字數據跟蹤的一個關鍵指標是tcp_info中報告的傳輸率。 由於我們會動態啟用BBR來處理效能最差的前置碼,因此我們預期較低的百分位數(最差情況)遞送率會有所改善。
下圖顯示了在啟用BBR更改後,洛杉磯POP的第五百分點和第十百分點交付率有所提高。
圖3 BBR變化後,第5百分位和第10百分位的分娩率有所改善。
同樣,在下圖中,我們顯示,只要我們在所有北美POP動態啓用BBR,美國一家大型住宅ISP的低百分位率就顯著提高(~2x)。
圖4 動態啟用BBR後,觀察到大型住宅ISP的改進。
從tcp-info中提取的傳輸速率可以很好地估計客戶端所看到的性能。 但是,最準確的性能指標是客戶端連接的HTTP訪問日誌中顯示的吞吐量,即實際吞吐量。
我們測量邊緣暫存伺服器的輸出量。 如下圖所示,這一變化導致了產出增加。 總體而言,第12個百分點的產品出貨量增加了4%。
圖5 第12個百分點的商品出貨增加了21%。
特別感謝Google的BBR開發團隊在BBRv1上所做的出色工作以及在BBRv2上所做的不懈努力。 我們期待BBRv2年的到來,並將繼續在不久的將來推動平臺的相關變更。 感謝Edgecast的Sergio Ruiz,Joseph Korkames,Joe Lahoud,Juan Bran,Daniel Lockhart,Ben Lovett,Colin Rasor,Mohnish Lad,Muhammad Bashir,Zach Jones和Dave Andrews在開發,測試和推出過程中支援這一變化。 Edgio工程團隊特別要感謝Dave Seddon為開發xTCP工具做出的貢獻,該工具支援了大部分分析。
通過動態擁塞控制調整,Edgio客戶現在可以自動提高其性能欠佳的客戶端的性能,並提高其盈利能力,從而加快Web交付速度,減少視頻流的重新緩衝。