NO.47 | 2018.10.15
banner
title資訊百科 友善列印>>
GCP採用新型網路壅塞控制演算法TCP BBR,傳輸率可提升2700倍_檢測暨網通技術組 高震宇副工程師



    繼google.com與YouTube之後,Google宣布其雲端平台將一併使用新演算法TCP BBR。相對於目前的演算法,在10Gb的網路頻寬下,依照Google對外發佈之訊息TCP BBR網路傳輸率最高可提升2700倍。

圖 1、BBR演算法使Google服務的傳輸率提升2700倍
(取自Google Cloud Platform Blog)
 
什麼是BBR?
    BBR(Bottleneck Bandwidth and Round-trip propagation time)是Google所提出的新型TCP壅塞控制演算法,在具有連網能力的電腦或行動裝置中運行,可決定資料傳輸的速度,目的在於解決網路壅塞問題。在BBR問世前,TCP/IP的演算法大多都是先觀測傳輸時封包是否有丟失狀況,如果有丟失則判定此為網路壅塞,而處理方式是全面降速,直到丟失的封包成功傳送為止。此舉會導致緩衝區不斷擴大,在傳輸大量資料時速度越來越慢、最後卡死。

    而BBR主要是估計頻寬和延遲狀況,透過不斷偵測封包傳輸的錯誤率,根據總傳輸量和錯誤量的比例來決定要以多大的頻寬傳輸,降低緩衝區堵塞的狀況,進而提高傳輸速度。Google將 BBR 應用在YouTube上,使全球網路平均傳輸量提升4%,最高更達到14%,封包往返時間減少約33%,重新緩衝平均時間增加約11%。
 

圖 2、各國Youtube影音服務使用BBR壅塞控制演算法後網路吞吐量提升百分比
 

圖 3、各國Youtube影音服務使用BBR壅塞控制演算法後重新緩衝時間提升百分比

圖 4、各國Youtube影音服務使用BBR壅塞控制演算法後封包往返時間降低的百分比

如何使用BBR?
目前BBR已整合進Linux Kernel 4.9以後的版本,所有基於Linux核心的發行版本只要透過更新Linux Kernel後即可使用。
 
  1. 輸入指令「uname -srm」,查詢Linux核心版本是否高於4.9。
  2. 輸入指令「lsmod | grep bbr」,如果輸出結果沒有tcp_bbr的話,執行下面的指令:
    modprobe tcp_bbr
    echo "tcp_bbr" >> /etc/modules-load.d/modules.conf
    echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
    echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
    sysctl -p
  3. 執行下面兩行指令,且執行結果都有顯示tcp_bbr時代表BBR已啟動。
    sysctl net.ipv4.tcp_available_congestion_control
    sysctl net.ipv4.tcp_congestion_control
 
完整過程如下圖:


這裡使用DigitalOcean VPS建立兩台Ubuntu 18.04(Linux核心版本為4.15),將TCP壅塞控制演算法分別設為BBR與CUBIC來進行檔案傳輸測試。根據測試結果顯示BBR的平均傳輸速度較CUBIC快上55.49%。