📖 本教程更新于 2020 年 07 月 07 日
本教程为vps开启bbr加速

🚀 BBR 简介
Google BBR (Bottleneck Bandwidth and RTT) 是一种新的TCP拥塞控制算法,它可以高效增加吞吐和降低网络延迟,并且Linux Kernel4.9+已经集成该算法。开启BBR也非常简单,因为它只需要在发送端开启,网络其他节点和接收端不需要任何改变。


一键脚本

1
2
3
wget --no-check-certificate -O /opt/bbr.sh https://github.com/teddysun/across/raw/master/bbr.sh
chmod 755 /opt/bbr.sh
/opt/bbr.sh

安装完成后,脚本会提示需要重启 VPS,输入 y 并回车后重启。
重启完成后,进入 VPS,输入 lsmod | grep bbr 返回值有 tcp_bbr 模块即说明 bbr 已启动。

手动安装

Centos

  1. 查看内核版本

    1
    uname -r

    如果输出类似3.10.0-957.12.2.el7.x86_64,表示内核小于4.9,需要升级内核,
    如果内核大于等于4.9,则跳过至第3步开启 Google BBR

  2. 升级内核
    安装 ELRepo 仓库

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

    安装最新版 kernel (内核)

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

    确认是否安装成功

    1
    rpm -qa | grep kernel

    如果输出包含类似 kernel-ml-5.6.5-1.el7.elrepo.x86_64 大于4.9就可以,则表示安装成功

    1
    2
    3
    4
    5
    6
    [root@ecs-lYf ~]# rpm -qa | grep kernel
    kernel-tools-libs-3.10.0-957.12.2.el7.x86_64
    kernel-3.10.0-957.12.2.el7.x86_64
    kernel-3.10.0-957.el7.x86_64
    kernel-tools-3.10.0-957.12.2.el7.x86_64
    kernel-ml-5.6.5-1.el7.elrepo.x86_64

    设置开机默认启动项

    1
    egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'

    输出结果类似如下,该列表从0开始索引,所以5.6内核索引为0

    1
    2
    3
    4
    5
    [root@ecs-lYf ~]# egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
    CentOS Linux (5.6.5-1.el7.elrepo.x86_64) 7 (Core)
    CentOS Linux (3.10.0-957.12.2.el7.x86_64) 7 (Core)
    CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
    CentOS Linux (0-rescue-bc974da2acac413f8e7ac7ddf7891424) 7 (Core)

    设置启动项

    1
    grub2-set-default 0

    重启

    1
    reboot

    uname -r 查看内核版本,如果输出类似

    1
    2
    [root@ecs-lYf ~]# uname -r
    5.6.5-1.el7.elrepo.x86_64

    则表示内核升级完成

  3. 开启Google BBR
    修改 sysctl 配置

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

    lsmod | grep bbr 检查是否加载BBR
    如果输出结果如下包含tcp_bbr,则表示开启成功

    1
    2
    [root@ecs-lYf ~]# lsmod | grep bbr
    tcp_bbr 20480 1

Debian 9、10

说明:Google BBR刚出来的时候,都是手动把内核换到4.9以上,从而开启BBR加速,由于 Debian 9默认的就是4.9的内核而且编译了TCP BBR的内容,所以可以直接通过参数开启。

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

如上三条命令就可以开启 bbr

查看 bbr 是否已经开启

查看内核是否已开启BBR

1
sysctl net.ipv4.tcp_available_congestion_control

显示以下即已开启:

1
2
root@vultr ~]# sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = reno cubic bbr

查看BBR是否启动

1
lsmod | grep bbr

显示以下即启动成功:

1
2
[root@vultr ~]# lsmod | grep bbr
tcp_bbr 20480 1