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

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

BBR

TCP BBR v2 alpha 源码:tcp_bbr2.c

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

安装编译环境

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

编译内核

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 ,其他默认
  • 保存退出

开始编译

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

Ctrl + A 再按 D 后台编译

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

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

更换内核

以 Debian 9 64-bit 为例

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 加速

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

查看是否开启 BBR v2 加速

sysctl net.ipv4.tcp_available_congestion_control

显示以下即已开启 BBR v2 加速

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

查看 BBR v2 加速是否生效

lsmod | grep bbr

显示以下即 BBR v2 加速已生效

# lsmod | grep bbr
tcp_bbr2               40960  1

开启 ECN 加速

输入以下命令开启 ECN 加速

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

一键加速脚本

基本涵盖了常用的内核跟加速,小伙伴们根据自己需要选择即可。

wget -N "https://github.000060000.xyz/tcp.sh" && chmod +x tcp.sh && ./tcp.sh

😋 Enjoy it !

最后修改:2020 年 03 月 09 日 03 : 52 PM

8 条评论

  1. xiaoxing   ( Windows 10 x64 Edition Windows 10 x64 Edition / Internet Explorer 11.0 Internet Explorer 11.0 )

    •进入 Networking support ---> Networking options ---> TCP: advanced congestion control --->
    •选中 BBR2 TCP 按空格标上 M ,其他默认
    •保存退出
    请问版主保存退出应该怎样具体操作啊?弄了下好像无法退出去,能写详细点吗?
    make -jN deb-pkg # N 为线程数,就是说把N改成数字,线程数在哪里看?希望版主介绍的详细点好吗?感谢!!

    1. 萌樱   ( Windows 10 x64 Edition Windows 10 x64 Edition / Google Chrome 80.0.3987.163 Google Chrome 80.0.3987.163 )
      @xiaoxing

      听说 2 x 核心数 + 1 最合适 。

  2. Jakk   ( Windows 10 x64 Edition Windows 10 x64 Edition / Google Chrome 79.0.3945.88 Google Chrome 79.0.3945.88 )

    bbr plus 和 bbr v2有什么区别?
    哪个最优?

    1. 萌樱   ( Windows 10 x64 Edition Windows 10 x64 Edition / Google Chrome 78.0.3904.108 Google Chrome 78.0.3904.108 )
      @Jakk

      BBR v2 是 Google 官方的。萌樱个人感觉,BBR v2 貌似好点,可以自己都试一下哪个更适合机器的网络环境。

  3. abc   ( Android 9 Android 9 / WebView 4.0 WebView 4.0 )

    我不了解bbr和bbr2同时都开意味着什么
    bbr和bbr2同时都开和只开bbr2有没有区别?

  4. wentray   ( Windows 10 x64 Edition Windows 10 x64 Edition / Google Chrome 77.0.3865.120 Google Chrome 77.0.3865.120 )

    求助 git clone总卡在97%

    1. 萌樱   ( Windows 10 x64 Edition Windows 10 x64 Edition / Google Chrome 74.0.3729.169 Google Chrome 74.0.3729.169 )
      @wentray

      这个应该是网络问题吧,如果想体验 BBR v2 的话,直接换上已经编译好的内核就好了。

      1. wentray   ( Windows 10 x64 Edition Windows 10 x64 Edition / Google Chrome 77.0.3865.120 Google Chrome 77.0.3865.120 )
        @萌樱

        ok 谢谢

发表评论