BBR 目的是要盡量跑滿帶寬, 並且盡量不要有排隊的情況, 效果並不比速銳差
Linux kernel 4.9+ 已支持 tcp_bbr 下面簡單講述基於KVM架構VPS如何開啟
附:
OpenVZ 架構VPS開啟BBR (容易導致判定濫用ban機,慎用!)
Debian/Ubuntu TCP BBR 魔改版 (不支持4.13.*及更新的內核)
Debian 8+ / Ubuntu 14
下載最新內核,最新內核查看這里
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.14.12/linux-image-4.14.12-041412-generic_4.14.12-041412.201801051649_amd64.deb
安裝內核
dpkg -i linux-image-4.*.deb
刪除舊內核(可選)
dpkg -l | grep linux-image
apt-get purge 舊內核
更新 grub 系統引導文件並重啟
update-grub
reboot
Ubuntu 16.04
安裝 Hardware Enablement Stack (HWE),自動更新內核
apt install --install-recommends linux-generic-hwe-16.04
刪除舊內核(可選) apt autoremove
CentOS 6
下載更換內核
最新內核查看這里
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml -y
查看內核是否安裝成功
rpm -qa | grep kernel
刪除舊內核(可選)
rpm -ev 舊內核
更新 grub 系統引導文件並重啟
sed -i 's:default=.*:default=0:g' /etc/grub.conf
reboot
開不了機的打開 vps 后台控制面板的 vnc, 開機卡在 grub 引導, 只需要手動選擇內核就可以了
安裝完成后不要忘記修改 /boot/grub/menu.lst 和 /etc/grub.conf,將這兩個文件中舊內核的啟動項刪除即可避免無法重啟的問題。
更新到最新版內核 yum --enablerepo=elrepo-kernel update -y reboot
CentOS 7
下載更換內核
最新內核查看這里
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml -y
查看內核是否安裝成功
rpm -qa | grep kernel
刪除舊內核(可選)
rpm -ev 舊內核
更新 grub 系統引導文件並重啟
egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
grub2-set-default 0 # default 0 表示第一個內核設置為默認運行, 選擇最新內核就對了
reboot
注意,某些服務商(如 Digital Ocean)可能需要首先將 VPS 配置為可自定義內核,然后 grub2 的配置才會生效。
重新啟動后,如果會出現 “read-only file system” 的錯誤,root賬戶下執行 mount -o remount rw / 即可
更新到最新版內核
方法同 CentOS 6
開啟bbr
開機后 uname -r 看看是不是內核 >= 4.9
執行 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
執行
sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control
如果結果都有 bbr, 則證明你的內核已開啟 bbr
執行 lsmod | grep bbr, 看到有 tcp_bbr 模塊即說明 bbr 已啟動