BBR介绍

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

检查内核是否是4.9+,如果不是则需要升级内核

  1. 打开Terminal,输入uname -r查看内核版本,如果输出类似3.10.0-514.21.2.el7.x86_64,则表示小于4.9,需要升级内核

  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-4.12.0-1.el7.elrepo.x86_64,则表示安装成功

      1
      2
      3
      4
      5
      kernel-3.10.0-514.21.2.el7.x86_64
      kernel-ml-4.12.0-1.el7.elrepo.x86_64
      kernel-3.10.0-514.el7.x86_64
      kernel-tools-libs-3.10.0-514.21.2.el7.x86_64
      kernel-tools-3.10.0-514.21.2.el7.x86_64
    • 设置开机默认启动项

      • 查看可启动选项

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

        输出结果类似如下

        1
        2
        3
        4
        5
        CentOS Linux 7 Rescue 6e18577007c94d1ca4aa4ee60a068f08 (4.12.0-1.el7.elrepo.x86_64)
        CentOS Linux (4.12.0-1.el7.elrepo.x86_64) 7 (Core)
        CentOS Linux (3.10.0-514.21.2.el7.x86_64) 7 (Core)
        CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core)
        CentOS Linux (0-rescue-21573c8020824236be8324b42be34e3b) 7 (Core)

        该列表从0开始索引,所以4.12内核索引为1

      • 设置启动项

        1
        grub2-set-default 1
    • 重启

      1
      reboot
    • 查看内核版本uname -r,输出4.12.0-1.el7.elrepo.x86_64,则表示升级完成

开启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
  • 检查是否加载BBR, 如果输出结果包含tcp_bbr,则表示开启成功

    1
    lsmod | grep bbr

测试比对

  • 开启BBR之前

  • 开启BBR之后