
给Openwrt软路由更换网络拥塞控制算法为BBR降低延迟水平并减少丢包
最近发现我的宽带丢包特别严重,看nas文件视频非常卡,尝试用bbr之后,带宽从2mbps变到了20mbps,确实有进步,于是分享一下。
在家庭宽带进入千兆时代之后,许多人惊讶地发现:网速越来越快,延迟却依然居高不下,甚至在高峰时段还会出现丢包现象。罪魁祸首往往不是带宽不足,而是网络拥塞控制算法。它就像高速公路的交警,决定了数据包在网络拥堵时如何排队、如何让行。如果交警指挥不当,再宽的马路也会堵成一锅粥。
BBR(Bottleneck Bandwidth and RTT)是 Google 在 2016 年开源的一种全新 TCP 拥塞控制算法。与传统的 CUBIC、Reno 等算法不同,BBR 不再依赖丢包来判断网络是否拥塞,而是实时估算网络的“瓶颈带宽”和“往返时延”,让数据流量既能把带宽吃满,又避免了不必要的延迟。结果是网页加载更快、在线视频更流畅,打游戏时的延迟也会明显降低。
那么,如何在 OpenWrt 软路由上启用 BBR 呢?首先要确认内核支持。较新的 OpenWrt 固件通常内置了 BBR 模块,如果没有,可以通过 opkg install kmod-tcp-bbr 来安装。一旦内核具备 BBR 功能,只需在路由器的配置中添加以下两行:
1 | net.core.default_qdisc=fq |
查看当前 OpenWrt 版本和内核
1 | uname -r |
要求返回的结果大于4.9。
检查是否已经支持 BBR
1 | sysctl net.ipv4.tcp_congestion_control |
如果返回的是 bbr,说明已经启用,无需后续操作。
如果返回 cubic 或 reno,那我们继续。
安装 BBR 内核模块
更新软件包列表:
1 | opkg update |
安装 BBR 模块:
1 | opkg install kmod-tcp-bbr |
opkg 是 OpenWrt 的包管理工具,类似于 Ubuntu 里的 apt。
kmod-tcp-bbr 就是 BBR 的内核模块,必须有它才能启用 BBR。
装好后加载模块:
1 | modprobe tcp_bbr |
没有报错就成功了。
修改 sysctl 配置,让 BBR 开机自动生效
在 OpenWrt 上推荐把配置写到 /etc/sysctl.d/ 里:
1 | echo "net.core.default_qdisc=fq" >> /etc/sysctl.d/99-bbr.conf |
让配置立即生效:
1 | sysctl -p /etc/sysctl.d/99-bbr.conf |
验证 BBR 是否启用
执行:
1 | sysctl net.ipv4.tcp_congestion_control |
如果看到:
1 | net.ipv4.tcp_congestion_control = bbr |
那就说明启用成功了。
关闭 BBR
执行:
1 | rm /etc/sysctl.d/99-bbr.conf |
参考文章
软路由 OpenWrt 开启 BBR(因该站点不符合规定,不做外链)
- 感谢你赐予我前进的力量