Google開發了一種稱為TCP瓶頸帶寬和BBR的TCP擁塞控制算法(CCA),它克服了Reno和CUBIC(默認CCA)中發現的許多問題。這種新算法不僅可以顯著提高帶寬,還可以降低延遲。TCP BBR已經與google.com服務器一起使用,現在你可以實現它 – 只要你的Linux機器運行kernel 4.9或更新版本。
Linux使用Reno和CUBIC。您可以通過發出命令來測試:
sysctl net.ipv4.tcp_available_congestion_control
上面的命令應該報告
net.ipv4.tcp_available_congestion_control = cubic
你需要什麼
您需要做的第一件事是確保您的Linux機器運行支持的kernel。發出命令uname -r。如果你的kernel早於4.9,這將不起作用。你必須升級你的kernel。例如,開箱即用的kernel 16.04運行kernel 4.4。如果您的服務器可以更新kernel。
RHEL7現在有一種非常簡單的方法可以更新到更新的kernel。為此,請打開終端窗口並發出以下命令:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
安裝kernel 4.9.0:
yum --enablerepo=elrepo-kernel install kernel-ml -y
設定GRUB默認啟動kernel:
grub2-set-default 0
運行上述命令後,重啟服務器。引導服務器後,登錄並發出uname -r 命令。您現在應該看到服務器至少運行kernel 4.12.5(截至本文撰寫時)。
[root@localhost ~]# uname -r 4.12.5-1.el7.elrepo.x86_64
現在你有了一個支持kernel,讓我們將BBR設置為默認的擁塞控制算法。
設置BBR
將BBR設置為默認值很簡單。打開終端窗口並發出命令vi /etc/sysctl.conf。在此文件的底部,添加以下兩行:
net.core.default_qdisc = fq net.ipv4.tcp_congestion_control = bbr
保存並關閉該文件。使用命令sudo sysctl -p 重新加載sysctl 。現在,當您檢查正在使用哪種擁塞控制算法時( 使用命令sysctl net.ipv4.tcp_congestion_control ),您將看到包含bbr的輸出。
[root@localhost ~]# sysctl net.ipv4.tcp_congestion_control net.ipv4.tcp_congestion_control = bbr
這裡的所有都是它的。您現在可以在Linux上享受Google改進的CCA。您應該看到該服務器上的網絡速度有了顯著改進。
移除舊有kernel
刪除舊的kernel的目的是防止yum更新的時候, 更新舊版而覆蓋grub默認啟動的選項,上面正常啟動bbr後就能將舊有的kernel 移除。
[root@localhost ~]# yum -y remove kernel kernel-tools