检查内核版本
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