首先看看下面的tcptrace图:

我的配置如下:

  • 初始窗口: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)=22f(x)=2^2无限精确地拟合。然而正是因为初始的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的启动曲线成了下面的样子:

由于增益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;
  • 至于曲线是不是优美,随它去吧!

多说无益,不多说。

原教旨主义的TCP BBR初始pacing rate计算相关推荐

  1. The math behind dynamics of TCP BBR

    引 BBR中有很多诸如1.25,0.75,0.89,0.77之类的魔数字,它们是调教出来的经验值呢,还是可以用数学推导发出来呢? 这些问题在结果导向的当今非常无聊,但也勉强仅图一乐吧.对我自己而言,除 ...

  2. TCP BBR算法中Pacing,cwnd,fq以及TSQ对RTT的影响

    无论多忙,一周至少写一篇作文的时间必须要挤出来的,而且还不能让质量打折扣,所以,本文依然会探讨一个大多数人没有意识到的很偏的问题,我的文章一如既往地会写一些别的地方搜不到的疑难杂症的解法,希望大家多提 ...

  3. 计算机网络原理和OSI模型与TCP模型

    计算机网络原理和OSI模型与TCP模型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.计算机网络的概述 1.计算机网络的定义 计算机网络是一组自治计算机的互连的集合 2.计算机 ...

  4. TCP BBR Startup gain计算总结和Startup失速问题

    浙江温州皮鞋湿! 在前面几篇文章中,我采用纯数学的方式推导了TCP BBR Startup gain的由来,本文将通过一个BBR动力学模型对Startup gain的值做出直观地解释. BBR动力学模 ...

  5. TCP BBR之Startup gain的另一种推导法以及最新进展

    自从上周有个大半夜帮温州皮鞋厂老板计算了那个2ln22ln⁡2\displaystyle\frac{2}{\ln2}之后,就着这个问题又进行了一些思考,过程中非常感谢BBR的作者之一Neal Card ...

  6. 深夜聊聊Bufferbloat以及TCP BBR

    这篇文章的写作动机来源于知乎上的一个问题,有人问既然Bufferbloat是个问题,为什么路由器的缓存还要设计那么大.起初,我也是觉得缓存越大越好,这个就像人们拼命比拼谁的电脑内存大一样,因为在一般人 ...

  7. 来自Google持续更新中的TCP BBR v2.0最新进展

    昨晚,Google Groups "BBR Development" group发出了一个topic,我早上醒来才看到,大致扫了一眼,这又是BBR进化史上的一个里程碑. 先给出sl ...

  8. 网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接

    转自即时通讯网:http://www.52im.net/ 本文原作者:"水晶虾饺",原文由"玉刚说"写作平台提供写作赞助,原文版权归"玉刚说" ...

  9. ubuntu 20.04 快速开启TCP BBR实现高效单边加速

    Linux Kernel 内核升级到 4.9 及以上版本可以实现 BBR 加速,由于Ubuntu 18.04 默认的内核就是 4.15版本的内核,由于Ubuntu 20.04 默认的内核就是 5.4 ...

最新文章

  1. 04.微博消息的语言检测
  2. angular图片传到后台_告诉你,SpringBoot+Angular有多牛逼!
  3. 浅谈算法和数据结构: 五 优先级队列与堆排序
  4. python各种类型日期转换大全
  5. 【温故知新】CSS学习笔记(外边距合并)
  6. pytorch C++部署模型 ONNX tensorRT
  7. sqlmap报错注入
  8. 802.11MAC基础
  9. notepad++ tcl_TCL科技前三季度净利20亿元,投资并购超200亿元
  10. 跳槽时,不敢要高工资也会对候选人不利
  11. 600W个微信红包封面,人人都能领取到!!!
  12. python安装lxml,在windows环境下
  13. 整数的素因子分解:Pollard rho method
  14. 使用ARCore+Unity概述
  15. python kivy教程,Python Kivy 中文教程:安装(Windows)
  16. OnTime pro for mac(多功能时钟工具)
  17. 潮汐计算php源码,潮汐选股公式
  18. 爬虫实现中英文的词语和句子互译
  19. Java面试练习题(每天进步一点点)
  20. DVB-条件接收系统(CAS)

热门文章

  1. Ubuntu14.04不支持U盘exfat格式该如何解决
  2. xp无法识别u盘exFAT。插入提示格式化
  3. 怀念与我同龄的月季花
  4. 数据结构————带头结点单链表讲解
  5. Java项目:Springboot快递物流管理系统
  6. umi配置webpack_umi/antd pro换肤功能
  7. 跪了!3秒钟完成别人半天的工作量!网友:别再用Excel了!
  8. 用Google提供的Gson解析JSON数据
  9. org.springframework.web.servlet.DispatcherServlet‘ is not assignable to javax.servlet.Servlet
  10. 京东电话面:说说你对Spring事务传播属性的理解?