找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 700|回复: 69

魔改BBR算法的尝试

[复制链接]

8

主题

264

回帖

556

积分

高级会员

积分
556
发表于 2017-6-24 15:12:50 | 显示全部楼层 |阅读模式
本帖最后由 Yankee 于 2017-6-25 11:22 编辑

众所周知,这年头的机器不做一番“优化”,带宽利用率根本竞争不过邻居;

于是机智的MJJ都用上了比默认的cubic/reno更aggressive的TCP拥塞控制,而当中又以BBR和锐速为代表。

作为g粉自然是要选择BBR的,毕竟有google和整个linux社区做后台,长远下去肯定要比闭源又停止支持的锐速走得更远。

那么问题来了:在大中华区特殊的国情下,更顾及公平性的BBR比起锐速带宽竞争力还是有些疲软的。能否通过一些小改动,让BBR变得更有侵略性呢?

能!

闲话少说,先上代码:

初版BBR:
https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/plain/net/ipv4/tcp_bbr.c

魔改BBR:
https://gist.github.com/anonymous/ba338038e799eafbba173215153a7f3a/raw/55ff1e45c97b46f12261e07ca07633a9922ad55d/tcp_tsunami.c

编译时系统必须安装4.10以上版本的kernel及对应的linux-header,gcc版本应在4.9以上

以4.10.9为例,需先更换内核,再先后安装:
(http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.9/)
linux-headers-4.10.9-041009_4.10.9-041009.201704080516_all.deb
linux-headers-4.10.9-041009-generic_4.10.9-041009.201704080516_amd64.deb


以下步骤在debian 8及ubuntu 16上测试通过:

[ol]
  • apt-get install make gcc-4.9
  • wget -O ./tcp_tsunami.c https://gist.github.com/anonymous/ba338038e799eafbba173215153a7f3a/raw/55ff1e45c97b46f12261e07ca07633a9922ad55d/tcp_tsunami.c
  • echo "obj-m:=tcp_tsunami.o" > Makefile
  • make -C /lib/modules/$(uname -r)/build M=`pwd` modules CC=/usr/bin/gcc-4.9
  • install tcp_tsunami.ko /lib/modules/$(uname -r)/kernel
  • depmod -a
  • insmod tcp_tsunami.ko
  • sysctl -w net.ipv4.tcp_congestion_control=tsunami[/ol]复制代码

    关键参数:bbr_bw_rtts, bbr_min_rtt_win_sec, bbr_probe_rtt_mode_ms, bbr_cwnd_min_target, bbr_drain_gain

    关键数组:bbr_pacing_gain

    经过一个月的测试,魔改BBR比起正常版的BBR确实强上不少,最起码以前看y2b 4k断断续续的远东ss现在能流畅播放了

    以上版本的BBR不保证普适性,建议自行修改参数测试


    参考链接:
    1. http://blog.csdn.net/dog250/article/details/52939004
    2. http://blog.csdn.net/dog250/article/details/52879298
    3. http://blog.csdn.net/dog250/article/details/52972502
    4. https://patchwork.ozlabs.org/patch/671069/
  • 回复

    使用道具 举报

    5

    主题

    111

    回帖

    261

    积分

    中级会员

    积分
    261
    发表于 2017-6-24 17:55:35 | 显示全部楼层
    本帖最后由 wu360463231 于 2017-6-24 18:10 编辑

    rpm -ivh http://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-ml-4.11.6-1.el7.elrepo.x86_64.rpm
    #查看内核顺序
    egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
    #切换启动内核为0(第一个,有变动自己改)
    grub2-set-default 0
    reboot

    #移除旧版+安装新版kernel-headers
    yum remove kernel-headers
    rpm -ivh http://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-ml-headers-4.11.6-1.el7.elrepo.x86_64.rpm
    #安装dev包
    rpm -ivh http://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-ml-devel-4.11.6-1.el7.elrepo.x86_64.rpm
    yum install make gcc
    wget -O ./tcp_tsunami.c https://gist.github.com/anonymous/ba338038e799eafbba173215153a7f3a/raw/55ff1e45c97b46f12261e07ca07633a9922ad55d/tcp_tsunami.c
    echo "obj-m:=tcp_tsunami.o" > Makefile
    make -C /lib/modules/$(uname -r)/build M=`pwd` modules CC=/usr/bin/gcc
    insmod tcp_tsunami.ko
    sysctl -w net.ipv4.tcp_congestion_control=tsunami


    试了下Centos的..基本差不多...

    回复

    使用道具 举报

    8

    主题

    264

    回帖

    556

    积分

    高级会员

    积分
    556
     楼主| 发表于 2017-6-30 23:20:00 | 显示全部楼层
    本帖最后由 Yankee 于 2017-6-25 10:01 编辑

    Tips:
    1.关于自启动 (optional)
    由于自定义的模块没有直接编译入debian内核,现阶段系统重启后必须动态加载模块,并重新设定拥塞控制算法,建议将启动指令写入startup,范例如下:
    [ol]
  • PATH_EXEC="/etc/init.d/tsunami_up"
  • cat>>$PATH_EXEC /etc/rc.local
  • $PATH_EXEC
  • [/ol]复制代码

    2.Additional Optimization (recommended)
    参考:
    https://github.com/shadowsocks/shadowsocks/wiki/Optimizing-Shadowsocks
    https://github.com/breakwa11/shadowsocks-rss/wiki/ulimit


    3.Experimental Optimization (optional)
    实验性调优,通过对fq参数的进阶设定,以期提高BBR的发包能力上限
    https://www.systutorials.com/docs/linux/man/8-tc-fq/
  • 回复

    使用道具 举报

    111

    主题

    1036

    回帖

    2419

    积分

    金牌会员

    积分
    2419
    发表于 2017-6-25 08:54:08 | 显示全部楼层
    技术贴,先顶后看。
    回复

    使用道具 举报

    3

    主题

    133

    回帖

    277

    积分

    中级会员

    积分
    277
    发表于 2017-6-24 15:58:34 | 显示全部楼层
    原创帖子?
    шщыаф стяеыппры
    回复

    使用道具 举报

    1

    主题

    64

    回帖

    151

    积分

    注册会员

    积分
    151
    发表于 2017-6-24 15:14:57 | 显示全部楼层
    技术贴 ,膜拜 一下楼主再看
    回复

    使用道具 举报

    33

    主题

    527

    回帖

    1181

    积分

    金牌会员

    积分
    1181
    发表于 2017-6-24 15:19:53 | 显示全部楼层

    Soaper 发表于 2017-6-24 15:19

    原创帖子?
    шщыаф стяеыппры

    对呀

    俄文看不懂

    回复

    使用道具 举报

    8

    主题

    264

    回帖

    556

    积分

    高级会员

    积分
    556
     楼主| 发表于 2017-6-24 15:21:47 | 显示全部楼层

    虚拟 发表于 2017-6-24 15:14

    技术贴,先顶后看。

    技术谈不上,MJJ间的经验交流而已

    回复

    使用道具 举报

    8

    主题

    264

    回帖

    556

    积分

    高级会员

    积分
    556
     楼主| 发表于 2017-6-24 15:31:37 | 显示全部楼层

    Yankee 发表于 2017-6-24 15:31

    对呀

    俄文看不懂




    不要管俄文 好像是我输入法智障了
    鸡血BBR
    回复

    使用道具 举报

    1

    主题

    64

    回帖

    151

    积分

    注册会员

    积分
    151
    发表于 2017-6-24 15:19:00 | 显示全部楼层
    大佬 V5
    Vicer 发表于 2017-6-24 15:58

    楼主很厉害,我慢慢研究

    膜拜锐速大神

    要是锐速核心能开源就不这么折腾了

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|Discuz! X

    GMT+8, 2025-2-12 01:12 , Processed in 0.024108 second(s), 3 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表