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

const int64 k_nMillion = 1000000;
int TFRCCalcX( int s, int64 rtt, float p )
{// TFRC throughput equation// //                                s//   X_Bps = ----------------------------------------------------------//           R*sqrt(2*b*p/3) + (t_RTO * (3*sqrt(3*b*p/8)*p*(1+32*p^2)))//// b is TCP acknowlege packet rate, assumed to be 1 for this implementationfloat R = (double)rtt / k_nMillion;float t_RTO = MAX( 4 * R, 1.0f );return static_cast< int >( static_cast<float>( s ) /( R * sqrt( 2 * p / 3 ) + ( t_RTO * ( 3 * sqrt( 3 * p / 8 ) * p * ( 1 + 32 * ( p * p ) ) ) ) ) );
}

 这个公式速率控制公式就是基于一篇大名鼎鼎的论文[2]。[3]的论文论文早一年, 对Jocobson提出拥塞控制算法进行数学建模,称之为TCP的宏观模型。但是直接基于一个公式计算出数据的发送速率,是不靠谱的。一条数据流不向网络中注入多余的数据,是不可能探测更多的可用带宽的。而要探测带宽,必然导致网络拥塞。另外一个不靠谱的领域就是带宽测量。通过一次测量的带宽值,就能当做一个会话持续过程的传输速率吗?还好,这个领域过气很多年了。
 互联网的互联靠的数据传输,数据传输依赖TCP,TCP需要拥塞控制。因为1986的网络拥塞崩溃,Jocobson提议基于AIMD机制TCP作为拥塞控制算法[4]。 TCP的拥塞控制将互联网从拥塞奔溃中拯救了出来。这里用了提议,没有用提出。Jain [5] 在1988年就讨论了几种可能的拥塞控制算法: AIAD,AIMD, MIMD, MIAD。最终的建议是AIMD,因为这个算法能够保证带宽资源的公平性。但是,在拥塞控制领域,好像大家更认可Jocobson的工作。Jain只能在自己的维基百科上写道:He is also the co-inventor of the Additive Increase Multiplicative Decrease (AIMD) principle used for traffic management in computer networks。
 学术其实是一件功利的事情。谁不想做出一件事情,能够让后世铭记呢。棺材一抬,人生白来。死亡的恐惧太过强大。普通人只能靠宗教,上天堂。牛逼的人,靠贡献,进入各种历史记录中。牛逼的人知道,天堂太虚幻。Benjamin Franklin: “If you would not be forgotten, as soon as you are dead and rotten, either write things worth reading, or do things worth writing.” 中文版:太上有立德,其次有立功,其次有立言,虽久不废,此之谓不朽。AIMD的算法机制很简单,但是总结计算机网络的发展历史,Jocobson这个名字是绕不开的。He is one of the primary contributors to the TCP/IP protocol stack—the technological foundation of today’s Internet.
 TCP的宏观模型其实就是总结Reno算法吞吐量的理论公式:T=MSS∗Crtt∗pT=\frac{MSS*C}{rtt*\sqrt{p}}T=rtt∗p​MSS∗C​. The TCP Macroscopic Model estimates that Reno TCP performance is proportional to one over the square root of the loss probability.
 在2020的sigcomm会议,Mathis要宣布TCP Macroscopic Model过时了。

The TCP Macroscopic Model will be completely obsolete soon. It was a closed form performance model for Van Jacobson’s landmark congestion control algorithms presented at Sigcomm’88. Jacobson88 requires relatively large buffers to function as intended, while Moore’s law is making them uneconomical.

 它的过时,是因为BBR的出现。BBR算法开启拥塞控制的新时代。

Reference:
[1]GameNetworkingSockets
[2]Padhye J, Firoiu V, Towsley D, et al. Modeling TCP throughput: A simple model and its empirical validation[J]. ACM SIGCOMM Computer Communication Review, 1998, 28(4): 303-314
[3] Mathis M, Semke J, Mahdavi J, et al. The macroscopic behavior of the TCP congestion avoidance algorithm[J]. ACM SIGCOMM Computer Communication Review, 1997, 27(3): 67-82.
[4] Jacobson V. Congestion avoidance and control[J]. ACM SIGCOMM computer communication review, 1988, 18(4): 314-329.
[5] Congestion avoidance in computer networks with a connectionless network layer: concepts, goals and methodology
[6] Mathis M, Mahdavi J. Deprecating the TCP macroscopic model[J]. ACM SIGCOMM Computer Communication Review, 2019, 49(5): 63-68.

TCP吞吐量的理论计算公式相关推荐

  1. 如何计算TCP吞吐量

    为什么80%的码农都做不了架构师?>>>    FROM:  how-to-calculate-tcp-throughput-for-long-distance-links 如何计算 ...

  2. RTL8812FR吞吐量低:usb net to wifi(8812F)TCP吞吐量低问题优化(CPU RTL8198D)

    网络拓扑 PC通过wifi连接到RTL8198D的5G网络,设备通过USB Net连接上级可以上网设备,测试PC到上级设备的TCP吞吐量 问题说明 未修改之前,wifi to usb 上级设备吞吐量3 ...

  3. 使用Java编写欧式期权理论理论计算公式

    Java版本欧式期权计算器 使用Java编写欧式期权计算器 先看一下欧式期权计算公式 完整Java代码 使用Java编写欧式期权计算器 目前公司一个小程序项目需要用到欧式期权器,计算看涨期权与看跌期权 ...

  4. tcp retransmission 出现的原因_为什么 TCP 会被 UDP 取代?

    TCP 协议可以说是今天互联网的基石,作为可靠的传输协议,在今天几乎所有的数据都会通过 TCP 协议传输,然而 TCP 在设计之初没有考虑到现今复杂的网络环境,当你在地铁上或者火车上被断断续续的网络折 ...

  5. 计算机网络tcp传送,计算机网络基础课程—传输控制协议(Tcp)

    原标题:计算机网络基础课程-传输控制协议(Tcp) •TCP和UDP都使用相同的网络层(IP),但TCP向应用层提供与UDP完全不同的服务. •TCP提供一种面向连接的.可靠的字节流服务. •UDP提 ...

  6. 为什么 TCP 会被 UDP 取代

    为什么这么设计(Why's THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点.对具体实现造成的影响 ...

  7. 【计算机网络】计算机网络 OSI 参考模型 与 TCP/IP 参考模型 对比

    文章目录 一.TCP/IP 参考模型 由来 二.TCP/IP 参考模型 三.TCP/IP 命名 四.TCP/IP 参考模型 与 OSI 参考模型 相同点 五.TCP/IP 参考模型 与 OSI 参考模 ...

  8. TCP之深入浅出send和recv

    本篇我们用一个测试机上的阻塞socket实例来说明主题.文章中所有图都是在测试系统上现截取的. 需要理解的3个概念 1. TCP socket的buffer 每个TCP socket在内核中都有一个发 ...

  9. linux tcp 包大小,linux – 通过大量连接和小数据包流量高的千兆网络提高TCP性能...

    我正在尝试通过"具有大量连接和小数据包流量的千兆网络"来提高TCP吞吐量.我的服务器操作系统是Ubuntu 11.10 Server 64bit. 有大约50.000(和不断增长的 ...

最新文章

  1. CenterNet KeyPoints 关键点训练自己的数据
  2. 大厂AI面试官一语中的:一场面试暴露了你的机器学习水平
  3. 【微信支付】微信端的手机网页支付 开发流程
  4. [TFRecord文件格式]基本介绍
  5. 知乎热议:计算机专业钱景究竟如何?
  6. 命令构建gradle项目_【Android 修炼手册】Gradle 篇 -- Gradle 源码分析
  7. mac系统jmeter生成html报告,jmeter5.1.1 生成html报告
  8. PICT实现组合测试用例
  9. php 其他页面获取session_PHP安全:XSS漏洞防御
  10. 关于Autorun.inf文件
  11. 左神-05 二分搜索(多看几遍)
  12. 2021 泰迪杯 A 题
  13. h5页面自定义字体_自定义app字体(原生+h5)
  14. CyanogenMOD移植教程]
  15. ROS URDF模型解析成KDL Tree
  16. The Complete Guide To Rooting Any Android Phone
  17. 1256 字符串复制
  18. 74161功能表_计数器74ls161工作原理(分频电路、真值表、逻辑功能)
  19. [转载]我的时间管理与方法论
  20. OpenWRT网页设置

热门文章

  1. 新新人类,希望各位大侠多多照顾IT痴虫!
  2. bom更改编号 sap_SAP ERP系统如何通过LSMW批量更改BOM
  3. 删除下拉框只找23火星软件_下拉词平台只找23火星软件 下拉词排名找火星下拉...
  4. 如何高效阅读一篇论文?来自18位教授、主编和博士生的最好建议!
  5. python自动化测试学习笔记合集三
  6. 什么是云计算的基本原理?具体的核心技术有哪些?
  7. 基于Android 的大学生理财系统
  8. D-OJ刷题日记:找数组中的最大值 题目编号:702
  9. FPGA从零设计[1]——关于Altera FPGA的下载器接口
  10. 可搜索加密研究进展综述与改进方案(读论文,学习笔记)