亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

原教旨主義的TCP BBR初始pacing rate計算

標簽:
人工智能

先看看下面的tcptrace图:

https://img1.sycdn.imooc.com//5b39b45f0001e1fc12530603.jpg

我的配置如下:

  • 初始窗口:4 mss

  • 拥塞控制算法:BBR

  • qdisc:fq

有原教旨般洁癖的看到那个silence gap是什么感觉?是不是想填掉它?这一点和只要是常量就有人想改它相反(对于常量,原教旨主义者往往需要一种数学上的诠释和推导)…

对于这个gap,我的意思就是,为了bbr启动曲线的优美平滑无毛刺,初始的pacing rate不再乘以增益系数high_gain

如果bbr的初始pacing rate没有以high_gain为增益,那么init cwnd这么多个数据包的发送就会被平滑到一个RTT中。理论上讲,bbr的启动trace曲线将会和f(x)=22f(x)=22无限精确地拟合。然而正是因为初始的pacing rate同样以high_gain为增益:

    /* Initialize pacing rate to: high_gain * init_cwnd / RTT. */
    bw = (u64)tp->snd_cwnd * BW_UNIT;
    do_div(bw, (tp->srtt_us >> 3) ? : USEC_PER_MSEC);
    sk->sk_pacing_rate = 0;     /* force an update of sk_pacing_rate */
    bbr_set_pacing_rate(sk, bw, bbr_high_gain);

这就导致了bbr的启动曲线成了下面的样子:
https://img1.sycdn.imooc.com//5b39b467000173d506430780.jpg

由于增益high_gain的存在,前面几个RTT便会呈现明显的毛刺。曲线变得并不是很优美。

Neal Cardwell对此问题的看法对我所说的并不认同。站在实用主义(而不是实证主义)的立场上看,算法本身的价值更多的体现在工程学上而不是数学上。所以说初始几个RTT的这些gap既然没有带来损失,又可以提高效率,为什么要弥补它们呢?

  • 初始阶段,cwnd比较小,引发bufferbloat概率低;

  • 初始pacing rate以high_gain为增益更有益于短链接以及request/response模式的连接(缩短约1个rtt的时间);

  • 初始pacing rate以high_gain为增益更有益于代码的简洁和逻辑的统一;

  • CUBIC计算初始pacing rate也使用了2作为增益,bbr当然也需要某种类似的或者更大的增益来计算初始pacing rate;

  • 至于曲线是不是优美,随它去吧!

多说无益,不多说。

原文出处

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消