Skip to content

Latest commit

 

History

History
118 lines (99 loc) · 3.39 KB

bbr-zh.md

File metadata and controls

118 lines (99 loc) · 3.39 KB

English | 中文

高级用法:部署 Google BBR 拥塞控制算法

Google BBR是一种拥塞控制算法,它能够显著提升服务器吞吐率并降低延迟。

Google BBR已经被内置于Linux内核4.9及更高版本中,但是需要手动开启。

关于Google BBR算法,可以在这篇官方博客或者这个官方库中找到更多信息。

准备

可以通过命令 uname -r 来查看当前Linux内核版本。版本大于等于4.9时,可以直接参照下方的说明部署BBR。

通常而言,Ubuntu 18.04+, Debian 10+,CentOS 8+及RHEL 8+的内核版本都大于4.9。但是对于CentOS 7或者Amazon Linux 2,需要通过以下的方式更新内核之后才能部署Google BBR。

Amazon Linux 2

Amazon Linux 2提供过经过验证的新版Linux内核,并可以通过启用预置的Extras库安装。

  1. 从Extras库安装 kernel-ng
    sudo amazon-linux-extras install kernel-ng
  2. 更新包
    sudo yum update
  3. 重启系统
    sudo reboot
  4. 检查Linux内核版本
    uname -r

CentOS 7

当使用CentOS 7时,需要安装由ELRepo Project提供的新版Linux内核。可以在这个页面找到有关ELRepo Project提供的Linux内核的更多信息。

参见下面的安装说明。

  1. 导入ELRepo Project的公钥。
    sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
  2. 为 RHEL-7、SL-7 或 CentOS-7 安装 ELRepo。
    sudo yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
  3. 安装 kernel-ml
    sudo yum --enablerepo=elrepo-kernel install kernel-ml
  4. 确认结果。
    rpm -qa | grep kernel
    你应该在输出中看到 kernel-ml-xxx
  5. 显示 grub2 菜单中的所有条目并设置 kernel-ml
    sudo egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
    索引从 0 开始。
    例如,当 kernel-ml 位于 1 时,使用下面的命令来激活 kernel-ml
    sudo grub2-set-default 1
  6. 重启。
    sudo reboot
  7. 检查 Linux 内核版本。
    uname -r

部署 Google BBR

在这个部分,我们将通过修改配置文件启动Google BBR。

  1. 备份 /etc/sysctl.conf
    sudo cp /etc/sysctl.conf /etc/sysctl.conf.backup
  2. 修改 /etc/sysctl.conf
    sudo vim /etc/sysctl.conf
    在文件中增加以下行
    net.core.default_qdisc = fq
    net.ipv4.tcp_congestion_control = bbr
    
  3. 启用Google BBR
    首先使用 uname -r 检查你的服务器的内核版本。
    对于内核版本 >= 4.20,应用 sysctl 设置:
    sudo sysctl -p
    对于内核版本 < 4.20,你必须重启服务器:
    sudo reboot
  4. 检查Google BBR状态
    sudo sysctl net.ipv4.tcp_available_congestion_control
    # net.ipv4.tcp_available_congestion_control = reno cubic bbr
    sudo sysctl -n net.ipv4.tcp_congestion_control
    # bbr
    lsmod | grep bbr
    # tcp_bbr  16384  0

文档作者

版权所有 (C) 2022 Leo Liu