CentOS7升级内核并启用BBR

前言

什么是BBR?

BBR(Bottleneck Bandwidth and Round-trip propagation time)是一种由Google开发的拥塞控制算法,用于优化TCP(Transmission Control Protocol)的传输性能。BBR 的设计目标是在网络中保持最大的带宽利用率,并在高延迟和高丢包的情况下提供更好的性能。

BBR 要求 Linux 内核版本为 4.9 或更高,内核就已经集成了 BBR 模块,如果你的内核版本满足要求,就直接跳到第四个步骤进行启用,适用于绝大部分 Linux 发行版,比如UbuntuDebianCentOS等等。

因为 CentOS 7 系统内核版本一般比较旧,所以大部分该系统需要手动升级内核后再启用。

步骤

1. 查看系统内核版本

1
uname -r

该命令会输出如下类似结果:6.6.2-1.el7.elrepo.x86_64,这是我已经升级过的了,如果版本等于或高于 4.9 ,那么直接跳到第四步即可。

2. 安装新版内核

如果内核版本不满足条件,那么输入如下命令安装升级新版内核:

1
2
3
sudo yum install epel-release
sudo yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
sudo yum --enablerepo=elrepo-kernel install kernel-ml -y

选择 kernel-ml 是为了安装更现代的主线内核。

3. 修改内核相关设置

更新 GRUB 配置:

1
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

重启系统:

1
sudo reboot

在重启后,系统将使用新安装的内核(可以再次使用第一步内的命令进行验证)。

4. 开启BBR

  • 启用 BBR

    1
    2
    3
    
    echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf
    echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf
    sudo sysctl -p
    
  • 验证 BBR 是否生效

    1
    
    sudo sysctl -n net.ipv4.tcp_congestion_control
    

    输出应该显示 bbr

  • 继续验证

    1
    
    sudo sysctl net.ipv4.tcp_available_congestion_control
    

    输出应该为下面包含 bbr 的类似结果:

    1
    
    net.ipv4.tcp_available_congestion_control = reno cubic bbr
    
  • 验证内核模块是否加载

    1
    
    lsmod | grep bbr
    

    输出应该为下面类似结果:

    1
    
    tcp_bbr 16384 35
    

    输出结果含义解释: tcp_bbr 是一个与 BBR 相关的内核模块。 16384 是该模块的模块大小(以字节为单位)。 35 是使用这个模块的引用计数,表示有多少个进程或功能在使用这个模块。

5. 移除旧版内核(可选)

1
sudo yum remove $(rpm -qa | grep kernel | grep -v $(uname -r))

至此,完事儿~

Written in ❤
使用 Hugo 构建
主题 StackJimmy 设计