手动编译 TCP BBR v2 Alpha/Preview 内核


相信小伙伴们对 Google 的 TCP BBR 拥塞控制算法都不陌生。dog250大佬曾经提出过TCP BBR存在的一些问题并提供了修正后的代码,于是有了BBRplus。Google也并非不知道初代BBR存在的问题,如今BBR v2 Alpha/Preview 已经发布了。

如果想体验BBR v2,可以直接下已经载编译完成的内核或者用一键脚本进行更换。虽然萌樱不能明确告诉小伙伴们 BBRplus 跟 BBR v2 哪个加速效果更好,但笔者推荐用 Google 官方的 BBR v2 。小伙伴们可以自行体验,毕竟同一套算法在不同的网络环境中也会存在很大差异。

GitHub:https://github.com/google/bbr/tree/v2alpha

TCP BBR v2 alpha 源码:tcp_bbr2.c

安装编译环境

1 apt install -y build-essential libncurses5-dev git screen
2 apt -y build-dep linux

编译内核

1 git clone -o google-bbr -b v2alpha  https://github.com/google/bbr.git
2 cd bbr
3 make menuconfig
4
5 # 禁用签名调试
6 scripts/config --disable MODULE_SIG
7 scripts/config --disable DEBUG_INFO

进入Networking support ---> Networking options ---> TCP: advanced congestion control --->,选中BBR2 TCP按空格标上M,其他默认,然后保存退出。

开始编译

1 screen -S kernel
2 make -jN deb-pkg  # N 为线程数

Ctrl + A再按D后台编译

编译需要很长的时间,编译完成后/root下生成以下文件

1 linux-headers-5.2.0-rc3+_5.2.0-rc3+-1_amd64.deb
2 linux-image-5.2.0-rc3+_5.2.0-rc3+-1_amd64.deb

更换内核

1 cd /root
2 
3 # 安装 BBR v2alpha 内核
4 dpkg -i linux-headers-5.2.0-rc3+_5.2.0-rc3+-1_amd64.deb
5 dpkg -i linux-image-5.2.0-rc3+_5.2.0-rc3+-1_amd64.deb
6 dpkg -l|grep linux-headers   | awk '{print $2}'
7 dpkg -l|grep linux-image   | awk '{print $2}'
8 
9 # 删除原版内核
10 apt purge -y "linux-image-4.9.0-9-amd64"
11 update-grub
12 reboot

开启 BBR v2

输入以下命令开启 BBR v2

1 echo "net.core.default_qdisc = fq" >> /etc/sysctl.conf
2 echo "net.ipv4.tcp_congestion_control = bbr2" >> /etc/sysctl.conf
3 sysctl -p

输入以下命令开启 ECN

1 echo "net.ipv4.tcp_ecn = 1" >> /etc/sysctl.conf
2 echo "net.ipv4.tcp_ecn_fallback = 1" >> /etc/sysctl.conf
3 sysctl -p

查看是否开启 BBR v2

1 sysctl net.ipv4.tcp_available_congestion_control

显示以下即已开启 BBR v2

1 # sysctl net.ipv4.tcp_available_congestion_control
2 net.ipv4.tcp_available_congestion_control = reno cubic bbr2

查看 BBR v2 是否生效

1 lsmod | grep bbr

显示以下即 BBR v2 已生效

1 # lsmod | grep bbr
2 tcp_bbr2               40960  1
原文地址:https://www.cnblogs.com/L1079991001/p/12340596.html