因为有小鸡的丢包和延迟情况,整理了下启用bbr3的步骤。适合1-2G和4G内存(自行替换缓冲区内容)
我的配置是开启swap,为内存的1:1大小。
我使用这个项目构建bbr3原版内核。
1. 选择CloudPassenger/Cloud-Kernel-BBRv3
项目地址:https://github.com/CloudPassenger/Cloud-Kernel-BBRv3
提供集成增强功能的 Debian 内核自动构建:
使用 Linux Kernel 官方 6.12 源码 (来自 kernel.org)
集成 Debian 内核团队维护的补丁 (来自 kernel-team/linux)
原版的 BBRv1 降级重命名为了 bbr1。
2. 与bbr1的区别
net.ipv4.tcp_ecn = 1:6.12 内核对 ECN(显式拥塞通知)的处理机制非常成熟。BBRv3 相比 v1 最大的进步就是能听懂 ECN 信号,开启它能极大缓解晚高峰网络拥堵时的延迟跳动。net.ipv4.tcp_mtu_probing = 1:有效防止路径 MTU 导致的黑洞丢包,保障 BBRv3 发包速率计算的精准度。
3. 安装后验证是否生效
查看当前算法:
sysctl net.ipv4.tcp_congestion_control
应该输出bbr
modinfo tcp_bbr
应该看到version 3
4. 安装步骤 我把命令在代码块末尾连在一起了
wget https://raw.githubusercontent.com/CloudPassenger/Cloud-Kernel-BBRv3/main/install-kernel.sh && \
chmod +x install-kernel.sh && ./install-kernel.sh
选语言后选0,即最新版即可
启用bbr3的sysctl优化配置--适合1-2G物理内存
cat >> /etc/sysctl.d/99-bbr3.conf << EOF
# ==========================================
# 1-2GB 小内存服务器专属优化 (适配 Cloud-Kernel-BBRv3)
# ==========================================
# --- 1. 虚拟内存 (VM) 优化 ---
# 小内存防 OOM 策略:适当利用 Swap,积极回收缓存
vm.swappiness = 20
vm.vfs_cache_pressure = 100
vm.max_map_count = 131072
vm.overcommit_memory = 1
# --- 2. 文件系统优化 ---
fs.file-max = 524288
fs.nr_open = 524288
# --- 3. 核心网络栈基础优化 ---
net.core.netdev_max_backlog = 8192
net.core.somaxconn = 4096
# 【核心下调】缓冲区最大值设为 16MB (16777216),兼顾千兆网速与内存安全
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.optmem_max = 65536
# --- 4. IPv4 网络协议栈专项优化 ---
net.core.default_qdisc = fq
# 此内核下 bbr 即代表 BBRv3
net.ipv4.tcp_congestion_control = bbr
# 开启 ECN 与 MTU 探测 (BBRv3 必备)
net.ipv4.tcp_ecn = 1
net.ipv4.tcp_mtu_probing = 1
# 【核心下调】TCP 读写缓冲区最大 16MB
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# 【核心下调】缩减僵尸连接的内存占用
net.ipv4.tcp_max_tw_buckets = 32768
net.ipv4.tcp_max_syn_backlog = 4096
# BBR 调优与加速参数
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_notsent_lowat = 16384
net.ipv4.tcp_fastopen = 3
EOF
sudo sysctl --system && sudo modinfo tcp_bbr
如果你有4G内存
用下面的替换上面的第3部分缓冲区部分
# --- 3. 核心网络栈基础优化 ---
net.core.netdev_max_backlog = 8192
net.core.somaxconn = 4096
# 缓冲区最大值调至 32MB (33554432),在 4G 内存下是安全的
net.core.rmem_max = 33554432
net.core.wmem_max = 33554432
net.core.optmem_max = 65536
补充update
先看下内核 uname -r 如果是6.12.xx 说明是debian13的LTS 那步骤没问题。
而如果是最新的7.1.2说明已经内置了最新的bbr3支持。
modinfo tcp_bbr看不到version3,只显示如下
(7.1.2才发布一周,我大概是搞其他编译把这个装上了才发现😄,一般都是6.12.xx)
name: tcp_bbr
filename: (builtin)
description: TCP BBR (Bottleneck Bandwidth and RTT)
mark
牛的兄弟,感谢你的@和分享
都出3了啊
这个内核和XanMod内核哪个好,好像有些bbr3是用XanMod内核
@duguanjun #4 Xanmod也是贡献者 但他家源总是有点小问题--可能因为他家用最新的内核,我想起来我其中一个小鸡就是先安装xanmod,所以内核升到了7.1.2。

这个脚本适配6.12
如果你的系统保持了最新 还有个问题导致启动后仍然是官方内核 查看modinfo tcp_bbr不显示version 3。因为debian启动时选择了由官方签名的优先。
当系统中同时存在两个版本号极其相近的内核时,GRUB 会调用 Debian 底层的
dpkg --compare-versions来一决高下。你可以看看这两个名字:6.12.946.12.94+deb13-amd64在 Linux 的字符串比对规则里,带有额外后缀(
+deb13)的版本,会被判定为比纯数字(6.12.94)更新、更高级的版本。 这就导致了“反客为主”的局面:你的 BBRv3 内核虽然是后安装的,但在系统重启时,默认选择了一个带有 Debian 官方签名的内核。新安装的6.12.94反而比自带的官方内核要低,所以被挤到了第二顺位。
1. 提取 GRUB 菜单的确切名称
运行以下命令,它会帮你列出 GRUB 菜单里的所有启动项:
awk -F\' '/menuentry / {print $2}' /boot/grub/grub.cfg输出中通常会有一个主菜单叫
Debian GNU/Linux,还有一个叫Advanced options for Debian GNU/Linux。在 Advanced 选项下,会包含你的Debian GNU/Linux, with Linux 6.12.94。2. 修改默认项
打开 GRUB 配置文件:
找到
GRUB_DEFAULT=0这一行。你需要将它修改为指向你的 BBRv3 内核。如果你的 BBRv3 内核在“高级选项 (Advanced options)”里,语法通常是主菜单>子菜单的形式(注意大小写和空格,必须和第一步提取出的名字一字不差),例如:3. 更新引导并重启
** 4. 收尾 最好把原来官方的卸载 保持干净
明天起来试一下,谢谢分享
谢谢分享