v2rayN

Debian 12 编译 Google TCP BBR v3

BBR (Bottleneck Bandwidth and Round-trip propagation time) 是谷歌在 2016 年发布的一套拥塞控制算法,尤其适合在存在一定丢包率的弱网环境下使用。BBR 目前已迭代更新到 v3 版本,谷歌称 BBRv3 表现出色。

「Debian 12 编译 Google TCP BBR v3:https://v2rayn.uuk.app/75」

想尝鲜的朋友可以试试编译安装 BBR v3,在这里记录下安装编译过程,有需要可以参考一下。

环境:DigitalOcean VPS + Debian12

首先安装编译所需依赖包和一些常用软件包:

「Debian 12 编译 Google TCP BBR v3:https://v2rayn.uuk.app/75」
apt -y update && apt -y install build-essential libncurses-dev libssl-dev libelf-dev bison bc flex rsync debhelper dwarves git screen

接着获取 BBR v3 源码:

git clone -o google-bbr -b v3  https://github.com/google/bbr.git && cd bbr/

确保拉取成功,没有出现 fatal: fetch-pack: invalid index-pack output ... 类似错误

「Debian 12 编译 Google TCP BBR v3:https://v2rayn.uuk.app/75」

复制系统默认内核配置文件:

cp /boot/config-$(uname -r) .config

执行如下命令保留旧 .config 文件中所有选项,并将新选项设置为推荐(即默认)值:

make olddefconfig

打开配置菜单(执行此命令 ssh 窗口不能太小,否则报错):

「Debian 12 编译 Google TCP BBR v3:https://v2rayn.uuk.app/75」
make menuconfig

依次进入 Networking support -> Networking options -> TCP: advanced congestion control,把 BBR TCP 选项设置为编译成模块:

可以看到 BBR 选项有两种编译方式:M 是构建为模块,*是直接构建,这里 (空格) 选择构建到内核,使编译出来的内核默认开启 bbr v3

建议关闭DEBUG功能,可节约编译时间和减少硬盘占用,选择 Exit 返回,然后依次进入 Kernel hacking -> Compile-time checks and compiler options -> Debug information (Disable debug information),选择按空格设置为 Disable debug information:

然后按 Exit 一路返回保存退出:

编译前建议增加点 swap 以防内存不足,并且编译时间可能比较长,建议开 screen,下面开始编译并创建 deb 软件包:

screen -S bbrv3
make bindeb-pkg -j$(nproc)

2C2G 的 VPS 经过几个小时编译完成:

然后在上级目录安装新 bbr v3 内核并重启:

cd ..
sudo apt install ./linux-image-6.4.0+_6.4.0-g6e321d1c986a-1_amd64.deb
sudo apt install ./linux-headers-6.4.0+_6.4.0-g6e321d1c986a-1_amd64.deb
systemctl reboot

重启完成执行命令查看内核版本:

uname -mrs

可能返回版本信息:

Linux 6.4.0+ x86_64

查看 tcp_bbr 模块信息:

modinfo tcp_bbr

可以看到 bbr 版本是 3:

查看当前默认 TCP 拥塞控制算法:

sysctl net.ipv4.tcp_congestion_control

返回信息:

net.ipv4.tcp_congestion_control = bbr

至此 BBR v3 安装成功,因为是 builtin,无需另外配置即可生效?并且 lsmod | grep bbr 无返回信息。

若是选择模块编译,还需要执行下面命令配置启用:

启用 BBRv3:

echo "net.core.default_qdisc = fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control = bbr" >> /etc/sysctl.conf
sysctl -p

执行下面的命令检查 BBR 模块是否启动成功:

lsmod | grep bbr

如有类似回显说明正常:

tcp_bbr                16384  87

如果是自建节点,可以试试效果。

退出移动版