萌樱の小窝

我永远喜欢樱.jpg

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

MoeSakura's Avatar 2020-01-02

  1. 1. 安装编译环境
  2. 2. 编译内核
  3. 3. 更换内核
  4. 4. 开启 BBR v2

相信小伙伴们对 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
2
apt install -y build-essential libncurses5-dev git screen
apt -y build-dep linux

编译内核

1
2
3
4
5
6
7
git clone -o google-bbr -b v2alpha  https://github.com/google/bbr.git
cd bbr
make menuconfig

# 禁用签名调试
scripts/config --disable MODULE_SIG
scripts/config --disable DEBUG_INFO

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

开始编译

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

Ctrl + A 再按 D 后台编译

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

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

更换内核

OpenVZ 虚拟化技术的 VPS 不能更换内核
对内核进行操作有风险,请确保数据安全
推荐在纯净的系统上进行更换

以 Debian 9 64-bit 为例

1
2
3
4
5
6
7
8
9
10
11
12
cd /root

# 安装 BBR v2alpha 内核
dpkg -i linux-headers-5.2.0-rc3+_5.2.0-rc3+-1_amd64.deb
dpkg -i linux-image-5.2.0-rc3+_5.2.0-rc3+-1_amd64.deb
dpkg -l|grep linux-headers | awk '{print $2}'
dpkg -l|grep linux-image | awk '{print $2}'

# 删除原版内核
apt purge -y "linux-image-4.9.0-9-amd64"
update-grub
reboot

开启 BBR v2

输入以下命令开启 BBR v2

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

输入以下命令开启 ECN

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

查看是否开启 BBR v2

1
sysctl net.ipv4.tcp_available_congestion_control

显示以下即已开启 BBR v2

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

查看 BBR v2 是否生效

1
lsmod | grep bbr

显示以下即 BBR v2 已生效

1
2
# lsmod | grep bbr
tcp_bbr2 40960 1

😋 Enjoy it !

本文作者 : MoeSakura
本文使用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议
本文链接 : https://moesakura.world/archives/bbrv2-alpha/

本文最后更新于 天前,文中所描述的信息可能已发生改变