为什么我要开启bbr

这几天我研究了一下公网ipv6,给配上ssl证书和域名,但我发现ipv6下载极其的慢(差不多50kb/s)还有丢包现象。网上查了一下应该是应为运营商限速导致的,可以通过开启bbr来缓解。尝试了一下,确实不丢包了,也快了一点(虽然还是只有100kb/s左右)

正文

1.BBR 需要 Linux 内核 4.9 或更高版本。Ubuntu 24.04 默认的内核版本应该已经满足要求,不过你可以通过以下命令检查内核版本:

1
uname -r

如果没有4.9及以上先升级再来执行以下操作

2.查看是否已启用BBR

1
sysctl net.ipv4.tcp_congestion_control
  • 如果输出结果为 tcp_congestion_control = bbr,则表示 BBR 已启用;如果输出结果为 tcp_congestion_control = cubic,则表示 BBR 未启用。

3.如果未启动先编辑 sysctl 配置文件,输入

1
sudo vi /etc/sysctl.conf

4.在文件末尾添加以下两行内容:

1
2
3
# Enable BBR
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

5.接下来应用更改

1
sudo sysctl -p

6.重新验证是否生效

1
sysctl net.ipv4.tcp_congestion_control
  • 如果输出结果为 ·tcp_congestion_control = bbr·,则表示 BBR 已启用。

7.如果生效的话我们可以来看看,检查 BBR 的状态,输入

1
2
3
ss -i | grep -i bbr
# 或者
lsmod | grep bbr
  • 若看到 bbr 字样,表示 BBR 已经生效,现在就大功告成了。

其他注意事项

  • 如果你只想在特定的网络接口上启用 BBR,可以使用 tc 命令进行更精细的配置。

禁用 BBR

1.若你需要禁用 BBR,可以将 net.ipv4.tcp_congestion_control 设置为其他拥塞控制算法,例如 cubic:

1
sudo sysctl -w net.ipv4.tcp_congestion_control=cubic

2.然后同样将其写入 /etc/sysctl.conf 以持久化配置:

1
echo "net.ipv4.tcp_congestion_control = cubic" | sudo tee -a /etc/sysctl.conf