Linux 开启 TCP BBR 拥塞控制算法

Mar 20, 2021 • 预计阅读时间 1 分钟

检查内核版本

Linux 内核 4.9 开始支持 TCP BBR,先查看一下当前内核是否支持:

uname -r

当前使用的内核版本:

5.4.0-67-generic

检查可用的控制算法

sysctl net.ipv4.tcp_available_congestion_control

输出为:

net.ipv4.tcp_available_congestion_control = reno cubic

tcp_bbr 模块没有被加载进来,所以 bbr 不在可用列表中。

加载 tcp_bbr

modprobe tcp_bbr

编辑 /etc/modules-load.d/modules.conf,让 tcp_bbr 模块开机自动加载

# /etc/modules: kernel modules to load at boot time.
# 
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

tcp_bbr

再看一下可用的控制算法,bbr 现在可用了:

sysctl net.ipv4.tcp_available_congestion_control

输出结果:

net.ipv4.tcp_available_congestion_control = reno cubic bbr

开启 BBR

查看当前使用的控制算法:

sysctl net.ipv4.tcp_congestion_control

当前使用的控制算法:

net.ipv4.tcp_congestion_control = cubic

编辑 /etc/sysctl.conf ,添加下面的配置:

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

保存后,重新加载使配置生效:

sysctl -p

以上设置对 ipv6 同样生效。

OpenWRT

对于 OpenWRT,需要先安装 kmod-tcp-bbr,如果进行过版本升级,比如从 18 升级到 19,也需要重新安装:

opkg install kmod-tcp-bbr

测试一下模块加载情况:

modprobe tcp_bbr

输出:

tcp_bbr is already loaded

设置 kmod-tcp-bbr 为开机加载,74-tcp-bbr 前面的数字根据实际情况调整:

cd /etc/modules-boot.d/
ln -sf ../modules.d/74-tcp-bbr 74-tcp-bbr

编辑 /etc/sysctl.conf 文件,开启 bbr

net.core.default_qdisc=fq_codel
net.ipv4.tcp_congestion_control=bbr

fq or fq_codel

https://groups.google.com/g/bbr-dev/c/4jL4ropdOV8

LinuxBBR
版权声明:如果转发请带上本文链接和注明来源。

lvv.me

iOS/macOS Developer

Ubuntu 20.04 使用自定义的 DNS 设置

创建和解压 tar.xz 文件