Centos7 BBR 加速

TCP BBR 是谷歌出品的 TCP 拥塞控制算法。BBR目的是要尽量跑满带宽,并且尽量不要有排队的情况。BBR 可以起到单边加速 TCP 连接的效果
TCP-BBR的目标就是最大化利用网络上瓶颈链路的带宽。一条网络链路就像一条水管,要想最大化利用这条水管,最好的办法就是给这跟水管灌满水
BBR解决了两个问题:

  • 在有一定丢包率的网络链路上充分利用带宽。非常适合高延迟,高带宽的网络链路。
  • 降低网络链路上的buffer占用率,从而降低延迟。非常适合慢速接入网络的用户。
    Google 开源了其 TCP BBR 拥塞控制算法,并提交到了 Linux 内核,从 4.9 开始,Linux 内核已经用上了该算法.

升级内核,第一步首先是升级内核到支持BBR的版本:

  • 查看系统版本
1
uname -r

更新系统

1
yum update -y

安装内核

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

0是版本号最大的一行的序号

1
grub2-set-default 0

重启

1
reboot

查看内核

1
uname -r

开启 BBR

1
2
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

保存并生效

1
sysctl -p

查看是否开启。返回值有 tcp_bbr 模块即说明 bbr 已启动。

1
lsmod | grep bbr

备注

出现错误

1
sysctl: cannot stat /proc/sys/net/ipv4/tcp_tw_recycle: 没有那个文件或目录

修改文件

1
vim /etc/sysctl.conf

注释或删除 net.ipv4.tcp_tw_recycle

1
2
3
4
5
6
7
8
9
10
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
# net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

再次执行

1
sysctl -p

升级内核参考 Centos7 升级内核