注意:某些系统下安装 BBR 会切换系统内核,切换后多半会导致失联
BBR 是什么?
BBR 是 Google 提出的一种新型拥塞控制算法,可以使 Linux 服务器显著地提高吞吐量和减少 TCP 连接的延迟。Google 已经开源了该算法,从 Linux 内核 4.9 开始,已经默认编译了 BBR 模块,可以直接通过参数开启 BBR。
BBR 解决了两个问题:
- 在有一定丢包率的网络链路上充分利用带宽。非常适合高延迟,高带宽的网络链路。
- 降低网络链路上的 buffer 占用率,从而降低延迟。非常适合慢速接入网络的用户。
开启 BBR
如果 Linux Kernel 内核版本低于 4.9,需要先安装 BBR 再开启 BBR;Linux Kernel 内核为 4.9 及以上版本,已经默认编译了 TCP BBR 模块,所以可以直接通过参数开启 BBR 加速。
查看内核版本:
uname -r
CentOS 7
CentOS 7 内核低于 4.9,需要先安装 BBR,再开启。CentOS 8,默认也已经安装了 BBR。
1、SSH 登录 VPS
2、获取 root 权限:
sudo -i
3、运行加速脚本:
wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh
根据提示安装并启用 BBR Plus(中间某些步骤可能需要重启 VPS 才能生效)。
如果提示命令不能运行,先 yum -y install wget
安装 wget。
遇到/boot/grub/grub.conf not found 和 /boot/grub2/grub.cfg not found 错误的解决方法:解决/BOOT/GRUB/GRUB.CONF NOT FOUND 和 /BOOT/GRUB2/GRUB.CFG NOT FOUND 问题
CentOS 8、Ubuntu 16 等
Ubuntu 18.04 默认的内核就是 4.15 版本,Ubuntu 20.04 默认的内核是 5.4 版本。
开启 BBR 的方法
# 修改系统变量并保存 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 # 执行如下语句,输出应为 net.ipv4.tcp_available_congestion_control = bbr cubic reno sudo sysctl net.ipv4.tcp_available_congestion_control # 执行如下语句,输出应为 bbr sudo sysctl -n net.ipv4.tcp_congestion_control # 执行如下语句,返回值有 tcp_bbr 模块即说明 bbr 已启动! lsmod | grep bbr
故障
开启 BBR 后可能导致之前搭建的网络服务(如 Trojan)不可用,原因一般为防火墙原因。开启 BBR 后,可能会导致 Firewalld 自动停止。
# 启动 firewall systemctl start firewalld # 设置开机自启 systemctl enable firewalld # 查看已放行的端口 firewall-cmd --zone=public --list-ports
Pingback: Oracle Cloud VPS | 盆盆罐罐