新式 AIMD 拥塞控制
周三晚上发了一则朋友圈,今天整理一下:
AIMD 过程可推导出 TCP 吞吐公式:
T=aRTTbpT=\dfrac{a}{RTT}\dfrac{b}{\sqrt{p}}T=RTTapb
a,b 分别为与 AIMD 参数和过程有关,该公式结论内置公平性。设 MSS = 1460,下面是一个合理的示例:
T=1700RTT×pT=\dfrac{1700}{RTT×\sqrt{p}}T=RTT×p1700
算一下 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.02p1700
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 拥塞控制相关推荐
- TCP吞吐量的理论计算公式
源 本篇文章本来是收录AIMD拥塞控制吞吐量的计算公式.Valve游戏公司开源GameNetworkingSockets[1],既支持可靠的数据传输,也支持不可靠的数据传输.数据的传输速率,是直接 ...
- 《计算机网络自顶向下方法》笔记
暑假期间阅读了这本书,为即将学习的专业课打下一点基础.把大致讲到的内容都概括地记下来,到时候上课后再根据所学进行补充. 感觉这本书举例挺多而且易于理解,是挺易读的一本入门书籍. 这学期结合老师和课本的 ...
- 计算机网络(十)——TCP
文章目录 1. TCP 1.1 TCP连接 1.2 TCP报文段结构 问题:比较UDP, TCP的报文段结构 1.3 往返时间的估计与超时 1.3.1 估计往返时间 1.3.2 设置和管理重传超时间隔 ...
- Buffer 与 拥塞控制
Buffer 到底是什么?理想 Pacing 情形,不会形成队列,但按照排队理论,统计复用情形,队列必然存在,Buffer 的作用即提供队列,它唯一的意义在于吸收统计突发. Buffer 仅为吸收突发 ...
- 计算机网络-TCP拥塞控制
目录 1 拥塞概念 2 拥塞控制的一般原理 3 拥塞控制的方法 3.1 慢开始 (Slow start) 3.2 拥塞避免算法 3.3 快重传算法 3.4 快恢复算法 3.5 加法增大,乘法减小 (A ...
- 互联网拥塞控制终极指南
本文为媒矿工厂翻译的技术文章 原标题:The Ultimate Guide to Internet Congestion Control 原作者:Michael Schapira 原文链接:https ...
- 实时视频传输中的BBR拥塞控制
在复杂的网络环境中,想要实现实时视频传输,拥塞控制算法是尤为重点的一环.本文整理自学霸君高级技术总监袁荣喜在LiveVideoStackCon 2019上海大会中的分享,详细介绍了BBR拥塞控制算法在 ...
- 网络(6)-TCP/IP对拥塞控制、滑动窗口如何实现可靠性?
一.拥塞控制 在拥塞控制上,采用广受好评的TCP拥塞控制算法(也称AIMD算法).该算法主要包括四个主要部分: 1.慢启动 每当建立一个TCP连接时或一个TCP连接发生超时重传后,该连接便进入慢启动阶 ...
- TCP 慢启动 拥塞控制
TCP 的数据流 TCP的数据流大致可以分为两类,交互数据流与成块的数据流.交互数据流就是发送控制命令的数据流,比如relogin,telnet,ftp命令等等:成块数据流是用来发送数据的包,网络上大 ...
最新文章
- Android studio连接夜神模拟器详细步骤
- 五、数据对象和属性类型
- 安软件一劳永逸_如何克服一劳永逸地公开演讲的恐惧
- cad画多段线时不显示轨迹_cad画多段线时不显示轨迹_CAD画多段线的时候看不到预览效果的解决方法...
- 你的头发还好吗?大数据分析脱发城市哪里强
- dell5580bios恢复出厂_戴尔笔记本如何恢复Bios出厂设置?
- 中华石杉的架构学习笔记
- Asp.net学习总结
- CodeForces-721A-One-dimensional Japanese Crossword
- C# WinForm 实例
- 【Win10小技巧1】窗口快速最小化
- RS WLAN产品测试全面解决方案
- 10年后,程序员的薪资还会这么高么?
- 设计模式(三)代理设计模式
- led大屏按实际尺寸设计画面_P10户外LED电子大屏幕按16:9计算屏幕实际尺寸
- layui tree 对节点进行搜索
- 深度学习基础 - 积分
- python标准化开发框架_api框架 python
- 最简可行产品(MVP)
- Web 中间件漏洞笔记