CentOS 6、7 部署 Google BBR 加速
uptade : 2020-08-27
介绍:当我们对网络延时、丢包率等要求较高时,我们可以通过本身的骨干网络优化网络,或是专线,或是VPN,但是最底层的优化是系统优化,成本低,效果快;因此,想通过这篇一起和大家聊聊网络优化加速–BBR;
what is BBR:
TCP BBR是谷歌研发的TCP拥塞控制算法。BBR目的是要尽量跑满带宽,并且尽量不要有排队的情况。BBR可以起到单边加速TCP连接的效果。目的是最大化利用网络上瓶颈链路的带宽。
适用场景:
在有一定丢包率的网络链路上充分利用带宽。非常适合高延迟,高带宽的网络链路。降低网络链路上的buffer占用率,从而降低延迟。非常适合慢速接入网络的用户(如VPS)。
Google 在 2016年9月份开源了他们的优化网络拥堵算法BBR,最新版本的 Linux内核(4.9-rc8)中已经集成了该算法。
一、准备要求(Prerequisites)
- A CentOS 6/7 x64 server instance.
- A sudo user.
- http://mirrors.coreix.net/elrepo-archive-archive/kernel/el6/x86_64/RPMS/
二、部署安装BBR
1. 升级系统kernel(4.9.0 才开始支持 BBR)
CentOS 6:
默认的CentOS 6的 elrepo 最新的kernel到 4.4.23 ,所以无法满足BBR安装要求;因此我们可以通过如下:
rpm -ivh http://mirrors.coreix.net/elrepo-archive-archive/kernel/el6/x86_64/RPMS/kernel-ml-4.18.20-1.el6.elrepo.x86_64.rpm
ERROR
:
error: "No such file or directory" setting key net.ipv4.tcp_congestion_control" # kernel 内核版本不支持
CentOS 7:
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
2. 设置新内核启动顺序,并重启生效
CentOS 6:
vim /etc/grub.conf # 编辑grub配置文件
修改 default 的值,一般是修改为0,因为 default 从 0 开始,一般新安装的内核在第一个位置,所以设置default=0
default=0
注:如果不生效可执行 grub-install /dev/sda 或者 直接修改 /boot/grub/grub.conf 文件
# 重启系统
shutdown -r now
CentOS 7:
# 查看当前内核顺序 默认从0 开始
[root@instance-1 ~]# egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d "'"
CentOS Linux (5.8.3-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-1127.18.2.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1062.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-50fd61429ad54298a6c1c4853efd0257) 7 (Core)
## 设置kernel 启动顺序
[root@instance-1 ~]# grub2-set-default 0
3. 启用BBR 加速
CentOS 6/7:
# 配置内核参数
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
# 重新加载sysctl.conf 配置文件
[root@instance-2 ~]# sysctl -p
#查看 net.ipv4.tcp_congestion_control 可选参数
[root@instance-2 ~]# sysctl net.ipv4.tcp_congestion_control
net.ipv4.tcp_congestion_control = bbr
#查看 net.ipv4.tcp_congestion_control 当前参数
[root@instance-2 ~]# sysctl -n net.ipv4.tcp_congestion_control
bbr
# 验证BBR 启用成功
[root@instance-2 ~]# lsmod | grep bbr
tcp_bbr 20480 10
三、自动化脚本
### kernel_update.sh ***适用CentOS 7**** ###
#!/bin/bash
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
grub2-set-default 0 && shutdown -r now
### bbr_on.sh ***适用CentOS 6/7****###
#!/bin/bash
uname -r
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
sysctl net.ipv4.tcp_available_congestion_control
lsmod | grep bbr