自Google于2016年9月宣布将BBR开源起,世界各国的极客们就开始研究了,对于常年受制于特殊网络环境下的我国民众,长期都在寻找各种提速的方法。之前流行的锐速(后开始收费)以及FinalSpeed等都曾备受大家的“爱戴”。对于bbr而言,通俗来讲就是对Linux内核TCP协议的优化从而达到提速的目的,但是注意的是,1)bbr不能改变地理位置的限制,也就是说他不会改变网络的线路,该绕还是绕;2)安装和开启bbr往往要更新内核,因此对于VPS而言,推荐选择KVM构架。本文将简述bbr在CentOS 7下的安装和启用的方法,亲测有效,整个流程也十分简单。对于Debian或者Ubuntu的用户我会在后面的教程中加以补充。
本文测试环境为CentOS 7 x64。CentOS 6及以下版本不通用
1. yum系统更新(更新到7.3)
yum update
2.查看系统版本
cat /etc/redhat-release
输出如下,则表示已升级到7.3
CentOS Linux release 7.3.1611 (Core)
3.安装elrepo并升级内核
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm yum --enablerepo=elrepo-kernel install kernel-ml -y
正常情况下将输出如下,
Transaction Summary ================================================================================ Install 1 Package Total download size: 39 M Installed size: 169 M Downloading packages: kernel-ml-4.9.0-1.el7.elrepo.x86_64.rpm | 39 MB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Warning: RPMDB altered outside of yum. Installing : kernel-ml-4.9.0-1.el7.elrepo.x86_64 1/1 Verifying : kernel-ml-4.9.0-1.el7.elrepo.x86_64 1/1 Installed: kernel-ml.x86_64 0:4.9.0-1.el7.elrepo Complete!
3.更新grub文件并重启(reboot后,ssh会断开,稍等一会儿重新连接)
egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \' grub2-set-default 0 reboot
4.开机后查看内核是否已更换为4.9
uname -r
输出如下内容则表示内核4.9已经启动了
4.9.0-1.el7.elrepo.x86_64
5.开启bbr
vi /etc/sysctl.conf
添加如下内容
net.core.default_qdisc = fq net.ipv4.tcp_congestion_control = bbr
加载系统参数(正常情况下会输出我们之前加入的内容)
sysctl -p
4.确定bbr已经开启
a.若
sysctl net.ipv4.tcp_available_congestion_control
返回
net.ipv4.tcp_available_congestion_control = bbr cubic reno
则成功
b.若
lsmod | grep bbr
返回形如
tcp_bbr 16384 1
则成功
评论怎么没有验证码呢?
内核更换不到4.9 怎么办 也安装了的
到哪一步了?错误信息是啥
执行第三步第三个命令报这个错误
Warning: RPMDB altered outside of yum
重启后就连不上了
Warning: RPMDB altered outside of yum这个只是警告,正常。确定你的VPS是KVM的吧,不行就换个CentOS或者Debian的系统
[root@Ace ~]# egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \’
grep: /etc/grub2.cfg: No such file or directory
[root@Ace ~]# grub2-set-default 0
-bash: grub2-set-default: command not found
[root@Ace ~]# uname -r
2.6.32-042stab116.2
我的和你一样 不过最后我的内核已经是4.9的了 但好几个命令都没法用 grub也找不到 几个地方都找了 比如boot下 求博主支援下 谢谢
确保CentOS的版本是7
另外,如果是DO或者Linode需要选择Grub启动的kernel
重启后检查依然不是最新内核
CentOS Linux (4.10.8-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.10.2.el7.x86_64) 7 (Core)
CentOS Linux 7 (Core)
输入grub2-set-default 0
依然是3.10.0-5
苦恼
不清楚你的问题。。。
安装之后显示tcp_bbr 20480 0是成功还是不成功呢?前面的都吻合了,不过现在内核升级到了4.12.应该没有什么关系吧。
是成功的,没问题
我最后那里返回的是 20480 27,这个和你演示的好像稍微不用,是什么原因导致的
只要返回有bbr就好,具体数字代表的意义可以参考lsmod命令
我用的Xshell
我输入sysctl net.ipv4.tcp_available_congestion_control
返回net.ipv4.tcp_available_congestion_control = reno cubic bbr
然后lsmod | grep bbr
返回tcp_bbr 20480 1
这个是不是有问题啊。
而且那个tcp_bbr的bbr三个字母是红色的。
第一次接触Linux和Xshell,有很多不懂的地方
高亮显示你搜索的字符串
只是高亮而已
sysctl -p的时候遇到了sysctl: cannot stat /proc/sys/net/core/default_qdisc: No such file or directory 这个问题,不知道如何排查
有返回
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr的内容吗?有就没问题了