Yankee 发表于 2017-6-26 19:37:46

关于BBR调参的说明

本帖最后由 Yankee 于 2017-7-1 13:43 编辑

前不久与MJJ分享了自定义BBR的一些经验,并作为示例给出了自己目前使用的版本;

此举本意在于面向比较重视开源与安全性的Geek,提供一个最大化压榨机器网络的可行方案,希望有抛砖引玉之效,结果却不甚理想,尝鲜者虽多,真正动手自行调参的使用者估计寥寥无几。

于是今天又试着在digitalocean lon1节点上调教了一番BBR,谨供各位参考。

由于现在do与大陆的链路基本不可用,目前还没摸索出比较graceful的“优化”策略,暂且使用了激进发包这种dirty的方式,如果有更温和高效的方案,欢迎提出 ;D

变更涉及如下:
[*]tso_segs_goal:7 >> tso_segs_goal:1 //禁用tso,与lotserver策略一致
[*]
[*]bbr_bw_rtts:15 >> bbr_bw_rtts:18 //延长PROBE_BW状态
[*]
[*]bbr_min_rtt_win_sec:20 >> bbr_min_rtt_win_sec:30 //延长min_rtt维持时间,尽量保持较大速率
[*]
[*]bbr_probe_rtt_mode_ms:200 >> bbr_probe_rtt_mode_ms:180 //缩短PROBE_RTT状态,尽快进入PROBE_BW模式
[*]
[*]bbr_cwnd_min_target:4 >> bbr_cwnd_min_target:6 //增大最小发包窗口
[*]
[*]bbr_high_gain= BBR_UNIT * 2885 / 1000 + 1 >> bbr_high_gain= BBR_UNIT * 3921 / 1000 + 1 //增大pacing速率
[*]
[*]bbr_full_bw_cnt=3 >> bbr_full_bw_cnt=4 //PROBE_BW状态下进行四次增窗,再假设网络信道已经饱和
[*]
[*]bbr_lt_loss_thresh=50 //丢包重传阈值,越小丢包时越可能触发快速重传
[*]
[*]bbr_sndbuf_expand=3 //发送缓冲区最大值
[*]
[*]复制代码
其他改动:更激进的发包策略

(tcp_tsunami.c, original)
https://gist.github.com/anonymous/ba338038e799eafbba173215153a7f3a/raw/55ff1e45c97b46f12261e07ca07633a9922ad55d/tcp_tsunami.c

(tcp_tsunami_lon.c)
https://gist.github.com/anonymous/68b2f4d3fe3391ea0efc0613e42010d8/raw/d3be4901da3b08f35e36eddd042923dc6bd96351/tcp_tsunami_lon.c

增大fq队列上限:
[*]tc qdisc delete dev eth0 root fq
[*]tc qdisc add dev eth0 root fq maxrate 1gbit limit 20000 flow_limit 10000 pacing refill_delay 30ms
[*]tc -s -d qdisc show
[*]/etc/init.d/networking restart复制代码

其余优化参照:
https://github.com/shadowsocks/shadowsocks/wiki/Optimizing-Shadowsocks
https://github.com/breakwa11/shadowsocks-rss/wiki/ulimit

此次共使用了两台机器,部署于do lon1的46.101段网路,经测试分别安装lotserver和tcp_tsunami_lon后均能较流畅的加载y2b 1080P影像,效果基本满意。

测试仅供参考,不保证普适性,还请各位针对所在网络状况自行调节适应。

参考链接:
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/

Yankee 发表于 2017-6-26 19:48:39

本帖最后由 Yankee 于 2017-6-27 12:03 编辑

FAQ:

1.BBR适合那些用户?

原则上所有希望“优化”网络的用户均适用,偏向开源方案、不喜黑箱者及强迫症患者尤其适用。

2.锐速大 法好,入教保平安!

请您务必继续用下去。谢谢。

3.自定义BBR不适用于哪些人群?

没有意愿动手调节适配者慎用。卫道士禁用。

4.lotserver和BBR没有卯用,有没有专治一切垃圾线路的“优化”方案?

有,而且是开源的:

https://github.com/xtaci/kcptun
https://github.com/Chion82/kcptun-raw

后者自带fake tcp header,适用于udp丢包严重的地区
以上方案配置不当会形成异常流量,可能被作为DDoS处理

5.为什么要以BBR为框架?

(1) BBR从内核层次避开了PRR的干涉,实现了对窗口的完全控制,这对传统的拥塞控制算法而言是很难做到的;
(PRR会在丢包时无条件降低发包窗口)

(2) BBR架构清晰,而cubic等传统算法使用了大量经复杂测量得到的魔术数字来调控其行为,很不直观;

(3) BBR is powered by Google,Inc!!!!

Yankee 发表于 2017-6-26 19:54:00

本帖最后由 Yankee 于 2017-7-1 23:26 编辑

Adaptive Branch of BBR Algorithm for IIJ only

Update: Drain queue in PROBE_RTT mode to reduce losses

https://gist.github.com/anonymous/3d9a9c400813e5101f733ddcde99364c/raw/2729ddceca5b912139c032f49080c9f662340f3e/tcp_iij2.c

https://gist.github.com/anonymous/619fe7d6ad97f93d86ded25d81c75f2c/raw/e432720cd98f6da5f7bee2d5f4b85a11bbbee4fb/tcp_iij.c

众神的荣耀 发表于 2017-6-29 21:37:18

先顶一下,不懂怎么用

witchfan 发表于 2017-6-26 19:41:46

前排支持

安之若素 发表于 2017-6-26 19:45:28

真干货。谢谢大佬

Gh0st 发表于 2017-6-26 19:49:36

感谢大佬分享。

ccczer 发表于 2017-6-26 19:53:20


Yankee 发表于 2017-6-26 19:48

FAQ:

1.BBR适合那些用户?
4.教育网IPv6用户还是得BBR

Yankee 发表于 2017-6-26 20:15:08


ccczer 发表于 2017-6-26 20:15

4.教育网IPv6用户还是得BBR
教育网tunnelbroker螺旋上天
010.gif

suantong 发表于 2017-6-26 19:48:00

不是不愿意调,尼玛根本不会
002.gif
页: [1] 2 3 4 5 6
查看完整版本: 关于BBR调参的说明