之前试验过开bbr,但是可能以前的网络环境没那么糟糕,所以没有特别明显的差距。
今年由于新型冠状病毒肺炎(COVID-19)疫情,墙又开始大封锁。我把之前的gcp关掉重新开了一台,然后这台是没有开启过bbr的。今天ping值<15ms,无丢包的情况下,看youtube的480p都卡。然后尝试更新了linux内核,打开bbr。结果youtube 1080p丝般顺滑。。。震惊了!居然这么屌的嘛。
检查是否已开启 bbr
(a) 执行如下命令,检查 bbr 是否可用:
sudo sysctl net.ipv4.tcp_available_congestion_control
应该输出类似下面这样的信息(包括bbr,顺序无所谓):
net.ipv4.tcp_available_congestion_control = bbr cubic reno |
(b) 执行如下命令:
sudo sysctl -n net.ipv4.tcp_congestion_control
其输出应该是:
bbr |
(c) 执行如下命令:
lsmod | grep bbr
其输出应该类似于:
tcp_bbr 20480 14 |
注意内核版本
有一次我发现我的内核版本莫名地被降级回 3.10,这就没有 bbr 了,因为 bbr 要求内核版本必须是 4.9 以上。可能是我做了 yum install/update 导致? 或者是我之前没有设置默认启动内核?我也不记得了。
检查当前内核
uname -r
检查默认启动的内核
grub2-editenv list
检查已安装的内核
rpm -qa |grep kernel
设置默认启动的内核
(a) 列出 grub2 的启动项
sudo egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
输出应该类似如下信息:
CentOS Linux 7 Rescue a0cbf86a6ef1416a8812657bb4f2b860 (4.9.0-1.el7.elrepo.x86_64) CentOS Linux (4.9.0-1.el7.elrepo.x86_64) 7 (Core) CentOS Linux (3.10.0-514.2.2.el7.x86_64) 7 (Core) CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core) CentOS Linux (0-rescue-bf94f46c6bd04792a6a42c91bae645f7) 7 (Core) |
(b) 设置启动项(上面的启动项列表从 0 开始编号)
sudo grub2-set-default 1
或者 sudo grub2-set-default 'CentOS Linux (4.9.0-1.el7.elrepo.x86_64) 7 (Core)'
删除不用的内核
一个个删除:yum remove kernel-3.10.0-514.26.2.el7.x86_64 kernel-3.10.0-514.el7.x86_64
或者除了当前内核其他全部删除:yum remove $(rpm -qa | grep kernel | grep -v $(uname -r))