CentOS 7 启动 BBR 教程
BBR 的全称是 Bottleneck Bandwidth and RTT congestion control。该技术的目的是通过优化和控制 TCP 的拥塞,充分利用带宽并降低延迟,起到神奇般的加速效果 —— 通俗来讲就是对 Linux 内核 TCP 协议的优化从而达到提速的目的。一些受制于特殊网络环境的网民,近年来一直在寻找各种提速的方法。不论是之前流行的锐速(后开始收费),还是 FinalSpeed 等都曾备受大家的爱戴。BBR 则提供了一个全新的加速方式,自 Google 于 2016 年 9 月宣布将 BBR 开源起,这一全新的加速方案便受到了广泛的关注。在内核较新的 Linux 系统,例如 Ubuntu 18.04 上,它可以方便的开启;而一些较旧的系统,则需要先升级内核才能启用。
这篇文章将介绍在 CentOS 7 上,启动 BBR 的方法。文中使用的是 yum
包管理工具。如果你的系统环境不同,本文可能并不适用。
yum 系统更新
将 CentOS 系统版本更新到 7.3 或更高:1
2yum update
yum upgrade
查看系统版本1
cat /etc/redhat-release
输出如下,则表示已升级到 7.31
CentOS Linux release 7.3.1611 (Core)
安装 elrepo 并升级内核
执行 uname -r
查看内核版本,例如:1
4.9.0-1.el7.elrepo.x86_64
如果内核版本低于 4.9,需要升级内核;否则可以跳过这一步,直接到「开启 BBR」部分。1
2rpm --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 repolist all
可以看到所有安装的源,可以启用 elrepo-kernal
:1
2yum-config-manager --enable elrepo-kernel
yum install kernel-ml -y
如果只是执行一次,也可以使用:1
yum --enablerepo=elrepo-kernel install kernel-ml -y
正常情况下这个命令将输出如下内容:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20Transaction 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!
随后更新 grub 文件并重启。执行:1
egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
或者1
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
这时,所有可用的内核会被输出。记下新内核所在的行数,第一行为 0,第二行为 1,以此类推。
执行以下命令来启用最新内核,需要把 0 替换成上一步得到的新内核所在的行数:1
2grub2-set-default 0
reboot
重启后,ssh 会断开,稍等一会儿重新连接。可以再次查看内核版本,检查更新是否成功。如果一切顺利,下一步就是启动 bbr 了。
开启 BBR
执行1
vim /etc/sysctl.conf
追加如下内容:1
2net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
然后重新加载这些参数,如果没问题的话,会输出之前加入的内容:1
sysctl -p
注:如果提示未找到命令,请确保 SELinux 已关闭,方法是编辑 /etc/selinux/config
。
除此之外,一些 VPS 主机由于虚拟化技术的限制,可能会在执行这一步时提示文件找不到:1
sysctl: cannot stat /proc/sys/net/core/default_qdisc: No such file or directory
这不是大问题,参考:How to get fully options at /proc/sys/net in docker's ubuntu。
确定 BBR 已经开启
通过 sysctl
若执行1
sysctl net.ipv4.tcp_available_congestion_control
输出1
net.ipv4.tcp_available_congestion_control = reno cubic bbr
则表明成功。
通过 lsmod
若执行1
lsmod | grep bbr
返回形如1
tcp_bbr 16384 1
则表明成功。
参考文章:#为 VPS 加速度# CentOS 7 安装 bbr 教程
拓展阅读:KcpRun 服务端一键安装脚本
本文更新于 2018 年 6 月:
BBR 的效果是非常显著的,只要带宽足够,流畅播放 YouTube 上 4320p 的视频毫无压力。可以通过 Timestorm Films 发布的超高分辨率视频测试效果~