周三晚上发了一则朋友圈,今天整理一下:

AIMD 过程可推导出 TCP 吞吐公式:

T=aRTTbpT=\dfrac{a}{RTT}\dfrac{b}{\sqrt{p}}T=RTTa​p​b​

a,b 分别为与 AIMD 参数和过程有关,该公式结论内置公平性。设 MSS = 1460,下面是一个合理的示例:

T=1700RTT×pT=\dfrac{1700}{RTT×\sqrt{p}}T=RTT×p​1700​

算一下 20ms RTT(普遍情况) 要达到 1Gbps (lastmile 的普遍诉求)吞吐可容忍的丢包率 p:

1∗1024∗1024∗1024/8=17000.02p1∗1024∗1024∗1024/8=\dfrac{1700}{0.02\sqrt{p}}1∗1024∗1024∗1024/8=0.02p​1700​

p 约等于 0.0000004,这简直是奢求,对 buffer 要求太高,BDP 越大,buffer overflow 容忍所需 buffer 越大。这解释了 TCP 效率低,更甚者,Reno/CUBIC 等 AIMD 算法族遭遇丢包都会视为拥塞,即使是非拥塞噪声丢包或节点问题丢包也会算在内。

这误判着实让 AIMD TCP 效率更低。

Reno 族算法无法区分丢包类型,即便转发节点配备理论上 BDP 大小的 buffer 也无济于事。
Reno 族算法无状态,只对单独事件反应,比如收到 reordering 个 dupACK 就会 mark lost。若为算法引入历史记忆,可去除些丢包噪声:

既然 RTT 可移指平均,丢包率 p 亦可。既然吞吐公式来自 AIMD 过程,根据公式构造一个拥塞控制算法即合理的,这次将 p 也移指平均。

或许移指平均不够精确,但至少是个方向,剩下的就是找个足够好的降噪函数了。

这将大大提高 Reno/CUBIC 的 AIMD 效率。

浙江温州皮鞋湿,下雨进水不会胖。

新式 AIMD 拥塞控制相关推荐

  1. TCP吞吐量的理论计算公式

    源   本篇文章本来是收录AIMD拥塞控制吞吐量的计算公式.Valve游戏公司开源GameNetworkingSockets[1],既支持可靠的数据传输,也支持不可靠的数据传输.数据的传输速率,是直接 ...

  2. 《计算机网络自顶向下方法》笔记

    暑假期间阅读了这本书,为即将学习的专业课打下一点基础.把大致讲到的内容都概括地记下来,到时候上课后再根据所学进行补充. 感觉这本书举例挺多而且易于理解,是挺易读的一本入门书籍. 这学期结合老师和课本的 ...

  3. 计算机网络(十)——TCP

    文章目录 1. TCP 1.1 TCP连接 1.2 TCP报文段结构 问题:比较UDP, TCP的报文段结构 1.3 往返时间的估计与超时 1.3.1 估计往返时间 1.3.2 设置和管理重传超时间隔 ...

  4. Buffer 与 拥塞控制

    Buffer 到底是什么?理想 Pacing 情形,不会形成队列,但按照排队理论,统计复用情形,队列必然存在,Buffer 的作用即提供队列,它唯一的意义在于吸收统计突发. Buffer 仅为吸收突发 ...

  5. 计算机网络-TCP拥塞控制

    目录 1 拥塞概念 2 拥塞控制的一般原理 3 拥塞控制的方法 3.1 慢开始 (Slow start) 3.2 拥塞避免算法 3.3 快重传算法 3.4 快恢复算法 3.5 加法增大,乘法减小 (A ...

  6. 互联网拥塞控制终极指南

    本文为媒矿工厂翻译的技术文章 原标题:The Ultimate Guide to Internet Congestion Control 原作者:Michael Schapira 原文链接:https ...

  7. 实时视频传输中的BBR拥塞控制

    在复杂的网络环境中,想要实现实时视频传输,拥塞控制算法是尤为重点的一环.本文整理自学霸君高级技术总监袁荣喜在LiveVideoStackCon 2019上海大会中的分享,详细介绍了BBR拥塞控制算法在 ...

  8. 网络(6)-TCP/IP对拥塞控制、滑动窗口如何实现可靠性?

    一.拥塞控制 在拥塞控制上,采用广受好评的TCP拥塞控制算法(也称AIMD算法).该算法主要包括四个主要部分: 1.慢启动 每当建立一个TCP连接时或一个TCP连接发生超时重传后,该连接便进入慢启动阶 ...

  9. TCP 慢启动 拥塞控制

    TCP 的数据流 TCP的数据流大致可以分为两类,交互数据流与成块的数据流.交互数据流就是发送控制命令的数据流,比如relogin,telnet,ftp命令等等:成块数据流是用来发送数据的包,网络上大 ...

最新文章

  1. Android studio连接夜神模拟器详细步骤
  2. 五、数据对象和属性类型
  3. 安软件一劳永逸_如何克服一劳永逸地公开演讲的恐惧
  4. cad画多段线时不显示轨迹_cad画多段线时不显示轨迹_CAD画多段线的时候看不到预览效果的解决方法...
  5. 你的头发还好吗?大数据分析脱发城市哪里强
  6. dell5580bios恢复出厂_戴尔笔记本如何恢复Bios出厂设置?
  7. 中华石杉的架构学习笔记
  8. Asp.net学习总结
  9. CodeForces-721A-One-dimensional Japanese Crossword
  10. C# WinForm 实例
  11. 【Win10小技巧1】窗口快速最小化
  12. RS WLAN产品测试全面解决方案
  13. 10年后,程序员的薪资还会这么高么?
  14. 设计模式(三)代理设计模式
  15. led大屏按实际尺寸设计画面_P10户外LED电子大屏幕按16:9计算屏幕实际尺寸
  16. layui tree 对节点进行搜索
  17. 深度学习基础 - 积分
  18. python标准化开发框架_api框架 python
  19. 最简可行产品(MVP)
  20. Web 中间件漏洞笔记

热门文章

  1. firewalld防火墙配置、测试服务、高级配置与IP伪装、端口转发
  2. MIS系统开发利器,快速的字典录入解决方案,另类的、可管理的.NET DataWindow
  3. 以“基”取胜:青立方超融合易捷版,助力企业“极简”上云
  4. 自媒体必备工具合集分享
  5. ShareSDK 抖音平台注册
  6. 【数据库】imp-00015
  7. Python批量采集某网站高清壁纸,这下不用担心没壁纸换了
  8. UI设计APP金刚区,卡片式设计
  9. 论文分享:大数据智能决策,《自动化学报》
  10. Android热更新