一代 最近 讀 TCP BBR 顯著提高了吞吐量並減少了 Google 內部骨幹網絡以及 google.com 和 YouTube 網絡服務器上的連接延遲。全球吞吐量平均增長 4%,部分國家超過 14%。 您需要將 TCP BBR 補丁應用到您的 Linux 內核。 BBR 的第一個公開版本於 2016 年 9 月在這裡發布。任何人都可以下載並安裝此補丁。另一種選擇是使用谷歌云平台(GCP)。 GCP 默認開啟,並使用一種新的最先進的擁塞控制算法,稱為 TCP BBR。本頁介紹如何使用 TCP BBR 配置來提高 Linux 服務器的 Internet 速度。這個簡單的設置可以提高網絡性能。
使用 TCP BBR 的 Linux 服務器的 Internet 速度要求
確保您的 Linux 內核將以下選項編譯為模塊或內置到 Linux 內核中。
- CONFIG_TCP_CONG_BBR
- CONFIG_NET_SCH_FQ
Linux TCP BBR 擁塞控制
您必須使用 Linux 內核版本 4.9 或更高版本。 在 Debian/Ubuntu Linux 上鍵入以下 grep/egrep 命令:$ grep 'CONFIG_TCP_CONG_BBR' /boot/config-$(uname -r)
$ grep 'CONFIG_NET_SCH_FQ' /boot/config-$(uname -r)
$ egrep 'CONFIG_TCP_CONG_BBR|CONFIG_NET_SCH_FQ' /boot/config-$(uname -r)
示例輸出:
我在 Debian 上使用 Linux 內核版本 4.9.0-8-amd64,在 Ubuntu 服務器上使用 4.18.0-15-generic。如果找不到上述選項,則需要編譯最新內核或使用 apt-get 命令/apt 命令安裝最新版本的 Linux 內核。
在啟用 TCP BBR 之前運行測試以提高網絡速度
在您的 Linux 服務器上輸入以下命令:# iperf -s
在您的 Linux 客戶端上:$ iperf -c gcvm.backup -i 2 -t 30
如何在 Linux 中啟用 TCP BBR 擁塞控制
編輯 /etc/sysctl.conf 文件或在 /etc/sysctl.d/ 目錄中創建一個新文件。$ sudo vi /etc/sysctl.conf
還$ sudo vi /etc/sysctl.d/10-custom-kernel-bbr.conf
添加以下兩行:net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
保存並關閉文件並通過鍵入以下內容退出 vim/vi 文本編輯器: : X!然後您需要重新啟動 Linux 機器或使用 sysctl 命令重新加載更改。$ sudo reboot
還$ sudo sysctl --system
示例輸出:
* Applying /etc/sysctl.d/10-console-messages.conf ... kernel.printk = 4 4 1 7 * Applying /etc/sysctl.d/10-custom.conf ... net.core.default_qdisc = fq net.ipv4.tcp_congestion_control = bbr * Applying /etc/sysctl.d/10-ipv6-privacy.conf ... net.ipv6.conf.all.use_tempaddr = 2 net.ipv6.conf.default.use_tempaddr = 2 * Applying /etc/sysctl.d/10-kernel-hardening.conf ... kernel.kptr_restrict = 1 * Applying /etc/sysctl.d/10-link-restrictions.conf ... fs.protected_hardlinks = 1 fs.protected_symlinks = 1 * Applying /etc/sysctl.d/10-lxd-inotify.conf ... fs.inotify.max_user_instances = 1024 * Applying /etc/sysctl.d/10-magic-sysrq.conf ... kernel.sysrq = 176 * Applying /etc/sysctl.d/10-network-security.conf ... net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.all.rp_filter = 1 net.ipv4.tcp_syncookies = 1 * Applying /etc/sysctl.d/10-ptrace.conf ... kernel.yama.ptrace_scope = 1 * Applying /etc/sysctl.d/10-zeropage.conf ... vm.mmap_min_addr = 65536 * Applying /etc/sysctl.d/99-sysctl.conf ... * Applying /etc/sysctl.conf ...
您可以使用以下 sysctl 命令檢查新設置:跑:$ sysctl net.core.default_qdisc
net.core.default_qdisc = fq
$ sysctl net.ipv4.tcp_congestion_control
net.ipv4.tcp_congestion_control = bbr
在 Linux 上測試 BBR 擁塞控制
在我在兩個具有連接到 Internet 的千兆端口的遠程 Linux 服務器之間的測試中,我能夠獲得從 250 Mbit/s 到 800 Mbit/s 的速度。 您可以使用 wget 命令等工具來測量帶寬速度。$ wget https://your-server-ip/file.iso
我還注意到 OpenVPN 流量接近 100 Mbit/s。以前,您只能推送到 30-40 Mbit/s。總的來說,我對我的 Linux 機器上的 TCP BBR 擁塞控制選項非常滿意。
使用 iperf 進行 Linux TCP BBR 測試
iperf是一款常用的TCP/UDP數據流網絡測試工具。測量網絡吞吐量。該工具可以驗證 Linux TCP BBR 設置的重要性。
在啟用了 TCP BBR 擁塞控制的 Linux 服務器上輸入命令。
# iperf -s
示例輸出:
------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local 10.128.0.2 port 5001 connected with AAA.BB.C.DDD port 46978 [ ID] Interval Transfer Bandwidth [ 4] 0.0-30.6 sec 127 MBytes 34.7 Mbits/sec
在 Linux/Unix 客戶端上輸入命令
$ iperf -c YOUR-Linux-Server-IP-HERE -i 2 -t 30
連接到 Linux 上啟用的 TCP BBR 擁塞時的示例輸出:
------------------------------------------------------------ Client connecting to gcp-vm-nginx-www1, TCP port 5001 TCP window size: 45.0 KByte (default) ------------------------------------------------------------ [ 3] local 10.8.0.2 port 46978 connected with xx.yyy.zzz.tt port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0- 2.0 sec 4.00 MBytes 16.8 Mbits/sec [ 3] 2.0- 4.0 sec 8.50 MBytes 35.7 Mbits/sec [ 3] 4.0- 6.0 sec 10.9 MBytes 45.6 Mbits/sec [ 3] 6.0- 8.0 sec 16.2 MBytes 68.2 Mbits/sec [ 3] 8.0-10.0 sec 5.29 MBytes 22.2 Mbits/sec [ 3] 10.0-12.0 sec 9.38 MBytes 39.3 Mbits/sec [ 3] 12.0-14.0 sec 8.12 MBytes 34.1 Mbits/sec [ 3] 14.0-16.0 sec 8.12 MBytes 34.1 Mbits/sec [ 3] 16.0-18.0 sec 8.38 MBytes 35.1 Mbits/sec [ 3] 18.0-20.0 sec 6.75 MBytes 28.3 Mbits/sec [ 3] 20.0-22.0 sec 8.12 MBytes 34.1 Mbits/sec [ 3] 22.0-24.0 sec 8.12 MBytes 34.1 Mbits/sec [ 3] 24.0-26.0 sec 9.50 MBytes 39.8 Mbits/sec [ 3] 26.0-28.0 sec 7.00 MBytes 29.4 Mbits/sec [ 3] 28.0-30.0 sec 8.12 MBytes 34.1 Mbits/sec [ 3] 0.0-30.3 sec 127 MBytes 35.0 Mbits/sec
結論是
在瓶頸帶寬和 RTT (BBR) 擁塞控制之前和之後,使用 iperf 命令收集了 30 秒的平均統計信息。
- PRE BBR:傳輸:27.5 MB。帶寬:7.15 Mbit/s
- 發布 BBR:傳輸:127 MB。帶寬:35.0 Mbit/s
在我看來,BBR 是近年來 Linux 網絡堆棧最重要的改進之一。此頁面顯示如何在基於 Linux 的系統上啟用和配置 BBR。詳情請參閱下一頁。