Linux 系统开启 Google TCP BBR 拥塞控制算法

Dynadot 域名注册 | RackNerd 性价比主机 | 搬瓦工 Bandwagon 高速主机


 
 

Google BBR

 
Google TCP BBR
 

BBR("Bottleneck Bandwidth and Round-trip propagation time") 是 Google 提出的一种新型拥塞控制算法,可以使 Linux 服务器显著地提高吞吐量和减少 TCP 连接的延迟。

 

BBR解决了两个问题:
一、在有一定丢包率的网络链路上充分利用带宽。非常适合高延迟,高带宽的网络链路。
二、降低网络链路上的buffer占用率,从而降低延迟。非常适合慢速接入网络的用户。
项目地址:https://github.com/google/

 

BBR 目的是要尽量跑满带宽,并且尽量不要有排队的情况,效果并不比速锐差。
Linux kernel 4.9+ 已支持 tcp_bbr 。

 
 

Debian 8+

Ubuntu 14.04

 

  • 下载最新内核,最新内核查看这里
http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.16/linux-image-4.16.0-041600-generic_4.16.0-041600.201804012230_amd64.deb

 

  • 安装内核
dpkg -i linux-image-4.*.deb

 

  • 查看已装内核
dpkg -l | grep linux-image

 

  • 删除旧内核(可选)
apt-get purge <旧内核名>

 

  • 更新 grub 系统引导文件
update-grub

 

  • 重启系统
reboot

 
 

Ubuntu 16.04

 

  • 安装 Hardware Enablement Stack (HWE),自动更新内核
apt install --install-recommends linux-generic-hwe-16.04

 

  • 删除旧内核(可选)
sudo apt autoremove

 
 

CentOS 6

 

  • 下载更换内核,最新内核查看这里
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml -y

 

  • 查看内核是否安装成功
rpm -qa | grep kernel

 

  • 删除旧内核(可选)
rpm -ev <旧内核名>

 

  • 更新 grub 系统引导文件
sed -i 's:default=.*:default=0:g' /etc/grub.conf

 

  • 开不了机的打开 VPS 后台控制面板的 VNC,开机卡在 grub 引导, 只需要手动选择内核就可以了。
    安装完成后不要忘记修改 /boot/grub/menu.lst/etc/grub.conf,将这两个文件中旧内核的启动项删除即可避免无法重启的问题。

 

  • 重启系统
reboot

 

  • 更新到最新版内核
yum --enablerepo=elrepo-kernel update -y

 

  • 重启系统
reboot

 
 
 

CentOS 7

 

  • 查看当前内核版本
uname -r

返回类似如下版本信息
3.10.0-1062.4.1.el7.x86_64
 

  • 下载更换内核,最新内核查看这里
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

下行的最新版本可以通过上面的最新内核链接获取

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-5.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml -y

 

  • 执行后会有类似下面提示

包名: kernel-ml
架构:x86_64
版本: 5.12.3-1.el7.elrepo
yum源: elrepo-kernel
包大小: 53 M

 

  • 选择y执行安装

 

关于Linux内核版本:可以在 https://www.kernel.org/ 查看持续更新的版本。

 

  • 查看内核是否安装成功
rpm -qa | grep kernel

 

会有类似如下列表返回

kernel-3.10.0-1160.el7.x86_64
kernel-headers-3.10.0-1160.15.2.el7.x86_64
kernel-ml-5.12.3-1.el7.elrepo.x86_64
kernel-tools-3.10.0-1160.el7.x86_64
kernel-tools-libs-3.10.0-1160.el7.x86_64
kernel-devel-3.10.0-1160.15.2.el7.x86_64

在输出中看到 kernel-ml-5.12.3-1.el7.elrepo.x86_64 类似的内容,表示安装成功。

 

  • 删除旧内核(可选)
rpm -ev <旧内核名>

 

  • 查看grub 系统引导列表
egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'

 

会输出类似如下列表

CentOS Linux (5.12.3-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (0-rescue-6239238ddadf4ed6accd1cf4748cef46) 7 (Core)

 

  • 设置启动内核
grub2-set-default 0

 

default 0 表示第一个内核设置为默认运行, 序号从0开始

 

  • 重启系统
reboot

 

  • 重启完成后,重新登录并重新运行uname命令来确认你是否使用了正确的内核
uname -r

 

输出类似如下结果说明使用成功

5.12.3-1.el7.elrepo.x86_64
 

  • 注意,某些服务商(如 Digital Ocean)可能需要首先将 VPS 配置为可自定义内核,然后 grub2 的配置才会生效
    重新启动后,如果出现「read-only file system」的错误,root 账户下执行 mount -o remount rw / 即可。

 

  • 更新到最新版内核
yum --enablerepo=elrepo-kernel update -y

 
 

开启 BBR

 

开机后 uname -r 看看是不是内核 >= 4.9。

 

  • 执行 lsmod | grep bbr,如果结果中没有 tcp_bbr 的话就先执行
sudo modprobe tcp_bbr
echo "tcp_bbr" | sudo tee --append /etc/modules-load.d/modules.conf

 

执行

echo "net.core.default_qdisc=fq" | sudo tee --append /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee --append /etc/sysctl.conf

 

保存生效

sudo sysctl -p

 

  • 检查BBR是否开启成功
sysctl net.ipv4.tcp_available_congestion_control

输出应为 net.ipv4.tcp_available_congestion_control = bbr cubic reno

sysctl net.ipv4.tcp_congestion_control

输出应为 bbr

lsmod | grep bbr

输出应类似tcp_bbr 20480 4

 

如果结果都有 bbr,则证明你的内核已开启 BBR。

版权声明:
作者:C-PT
链接:https://c-pt.cc/52.html
来源:C-PT – Blog
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录