Home 技術文章 通過動態擁塞控制調節提高網路性能
Applications

通過動態擁塞控制調節提高網路性能

About The Author

Outline

傳輸控制協定(TCP)擁塞控制算法(CCA)控制客戶端和伺服器之間應發送多少數據,以最大程度地利用可用帶寬並避免擁塞。 自成立以來,其他CCA自成立以來就已開發出來,如瓶頸帶寬,往返傳播時間(TCP BBR)和立方。 雖然TCP BBR和立方旨在實現擁塞避免,但瞭解其有效性一直是我們的工程和研究團隊的一項持續任務。

TCP BBR旨在通過使用數據包延遲作爲指標而不是數據包丟失來實現更高的吞吐量。 然而,我們之前的研究報告表明,BBR在所有情況下都表現不佳。 具體而言,我們的評估得出結論認爲,小文件的吞吐量幾乎沒有任何好處(<100KB)。 此外,我們觀察到,對於往返時間(RTT)低且重新傳輸率低的流動,BBR性能比立方厘米差。 最後,BBR的益處僅見於面向客戶的流量,而後臺連接(低RTT和可忽略的重新傳輸)在立方塊的情況下表現更好。

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-Lob)的TCP-info工具所做的工作,其顯著差異在於管理邊緣暫存(與M-Lab伺服器相比)看到的大量插槽所需的優化以及以原創格式導出數據的能力。 敬請關注,我們計劃很快開源xTCP。

在下圖中,我們展示了我們系統的概述。 xTCP數據是從我們所有的邊緣高速暫存中大規模收集到的。 然後在ClickHouse羣集中收集xTCP數據,該羣集支援我們的網路數據分析,包括BBR控制器,該控制器檢測每個邊緣彈出的性能不佳前綴。

圖1. 使用xTCP和BBR配置推送進行數據收集概述。

雖然我們希望保持工作流的動態性質,但我們還需要在每個存在邊緣點(POP)選擇持續的性能不佳前綴,以避免在短時間內在立方和BBR之間翻轉。 如前所述,對於文件大小大於100KB的請求,我們有選擇地啟動BBR。 微調的立方流對小文件的性能更好。

BBR控制器使用兩個指標來評估每個觀察到的客戶端前綴的執行狀況:

  • 佔空比:在最低20百分位數績效組中,前綴(/24或/56)的時間是多長?
  • 翻轉率:前綴在最低20百分位數績效組中出現和消失的頻率如何,即狀態變化?

然後,該算法會持續檢測過去幾個小時內性能較差的前綴。 此檢測每5分鐘執行一次。 儘管每個邊緣彈出選擇的前綴總數可能在數百個中,但我們觀察到前綴性能保持相對一致。 通常會選擇相同的前綴,並且每一輪中的新增(如下圖所示,來自芝加哥流行的)很少。

圖2. 每個配置生成輪中選擇的新前綴數較低。

如果有,則會選擇新的前綴以啓用BBR,並生成配置,通過驗證步驟並將其推送到我們的邊緣暫存全局。

性能提升

我們很高興地報告,在我們的全球邊緣實現BBR已顯著提高了性能。 我們從xTCP套接字數據跟蹤的一個關鍵指標是tcp_info中報告的傳輸率。 由於我們動態地爲性能最差的前綴啓用BBR,因此我們預計較低的百分位數(最壞的情況)的交付率將會提高。

下圖顯示了在啓用BBR更改後,我們洛杉磯流行趨勢的第5和第10百分位數交付率的改善。

圖3. BBR改變後,第5和第10百分位數的分娩率有改善。

同樣,在下圖中,我們在所有北美POPS中動態啓用BBR後,美國大型住宅ISP的較低百分位數交付率就有了顯著改善(~2倍)。

圖4. 在動態啓用BBR後,觀察到大型住宅ISP的改進。

從tcp-info提取的傳輸速率可以很好地估計客戶端所看到的性能。 但是,最準確的性能指標是在客戶端連接的HTTP訪問日誌中看到的吞吐量,即goodput。

我們測量邊緣暫存伺服器的優點。 如下圖所示,這一變化導致了更多的成品。 整體而言,第10個百分位數的良品增加了12%。

圖5. 第10個百分位數的良品增加了12%。

特別感謝谷歌的BBR開發團隊在BBRv1上的出色工作以及他們在BBRv2上的持續努力。 我們期待BBRv2,並將在不久後繼續推動平臺的相關變更。 讚揚Sergio Ruiz, Joseph Korkames, Joe Lahoud, Juan Bran, Daniel Lockhart, Ben Lovett, Colin Rasor, Mohnish Lad, Muhammad Bashir, Zach Jones, Edgecast的Dave Andrews在開發,測試和推出過程中支援這一變革。 Edgio工程團隊特別要感謝Dave Seddon爲開發支援大部分分析的xTCP工具做出的貢獻。

藉助動態擁塞控制調整,Edgio客戶現在可以自動提高性能,改善其業績不佳的客戶端的性能,提高他們的底線性能,從而 加快網頁交付速度 ,減少影片流的重緩衝