zoukankan      html  css  js  c++  java
  • 手动编译 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
    
  • 相关阅读:
    令人恼怒!mount windows共享目录出错
    今天修改PCB板图
    在深圳出差
    触摸屏技术原理介绍
    getrlimit和setrlimit函数
    OpenCV下的HelloWorld
    两本OpenCV的书到了
    GDB用法小结
    没搞懂自适应二进制阈值化的参数
    【JavaScript】73 逆序的三位数 (10分)
  • 原文地址:https://www.cnblogs.com/L1079991001/p/12340596.html
Copyright © 2011-2022 走看看