# bbr加速

bbr是google的一套算法,用于实现tcp加速,本文记录如何在centos7中使用bbr

首先查看一下当前服务器的kernel有没有按照,版本对不对:

uname -r

大概会显示这么一个玩意

3.10.0-514.2.2.el7.x86_64

安装 ELRepo repo:

sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

通过刚刚安装的elrepo repo安装4.9.0以上的kernel

sudo yum --enablerepo=elrepo-kernel install kernel-ml -y

确认下刚刚安装的

rpm -qa | grep kernel

显示的结果大概如下,不一定完全一样,但应该有一个4.9.0以上的kernel

kernel-ml-4.9.0-1.el7.elrepo.x86_64
kernel-3.10.0-514.el7.x86_64
kernel-tools-libs-3.10.0-514.2.2.el7.x86_64
kernel-tools-3.10.0-514.2.2.el7.x86_64
kernel-3.10.0-514.2.2.el7.x86_64

通过设置grub2的默认启动项来启用这个4.9.0以上的kernel

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)

从0开始数,第一行是0,第二行是1,这里是第二行的,下面的命令用1

sudo grub2-set-default 1

重启服务器

sudo shutdown -r now

再次查看kernel版本

uname -r

没意外的话已经切换好了

修改sysctl配置来启用bbr算法:

echo 'net.core.default_qdisc=fq' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control=bbr' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

确认已开启bbr

sudo sysctl net.ipv4.tcp_available_congestion_control

输出为:

net.ipv4.tcp_available_congestion_control = bbr cubic reno

再次验证

sudo sysctl -n net.ipv4.tcp_congestion_control

输出为:

bbr

最后检查kernel module有没有加载

lsmod | grep bbr

结果类似是这样的

tcp_bbr                16384  0

接下来可以随心所欲的测试,比如下载个文件啥的,就不写了