BBR是由谷歌公司开发的TCP拥塞控制算法,全称(Bottleneck Bandwidth and RTT),BBR已经集成到Linux Kernel 4.9及以上版本中。

BBR主要解决如下2个问题:

  1. 在有一定丢包率的网络链路上充分利用带宽。
  2. 降低网络链路上的 buffer 占用率,从而降低延迟。

也就是说,当我们使用国外VPS或服务器,网络又丢包的情况下,开启BBR会大大改善网络连通性,降低延迟。

本文服务器使用的Centos7 x86 64bit

首先更新系统

1
yum update -y

通过elrepo安装内核

1
2
3
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

查看当前已安装的内核

1
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

命令返回

1
2
3
4
5
[root@mh-s1 ~]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (5.2.6-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-957.27.2.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-957.21.3.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-70572d14db2e4b6eb6cb21efc8bec700) 7 (Core)

CentOS Linux (5.2.6-1.el7.elrepo.x86_64) 7 (Core) 设置为默认内核

1
grub2-set-default 0

重启

1
reboot

编辑 /etc/sysctl.conf 增加或修改如下两行

1
2
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

保存后,执行如下命令,使配置文件生效

1
sysctl -p

查看tcp_bbr状态

1
lsmod | grep bbr
1
2
[root@mh-s1 ~]# lsmod | grep bbr
tcp_bbr                20480  2

若显示 tcp_bbr 则生效。