当前位置: 首页 > news >正文

AIMD 为什么收敛(tcp reno/cubic 为什么好)

TCP 拥塞控制目标是缓解并解除网络拥塞,让所有流量公平共享带宽,合在一起就是公平收敛。
AIMD(几乎所有与拥塞控制相关的协议或算法都有 AIMD 的影子,包括 RoCE,BBRv2) 为什么收敛?我一般会给出下面的老图:
在这里插入图片描述

虽然只展示了两条流的收敛,但 n 条流收敛的展示无非就是将 2 维坐标系换成 n 维坐标系,只要能证明任意的 2 维截面都如上图所示就行,而这件事简单推导一下就行,比画坐标系还要直观,再说超过 3 维的坐标系也画不出来。

设一个 AIMD 系统的 AIMD 参数为 α \alpha α, β \beta β w i 0 w_{i0} wi0 w j 0 w_{j0} wj0 分别为任意两条流的初始窗口,且 w i 0 > w j 0 w_{i0}>w_{j0} wi0>wj0,二者之差 d 0 = W i 0 − W j 0 d_0=W_{i0}-W_{j0} d0=Wi0Wj0

假设所有流同步(异步流和 RED 作用下相对复杂,用统计分布代替公式),一个 AIMD 周期后,两条流的 cwnd 分别为 w i 0 = w i = β ∗ ( w i 0 + α ) w_{i0}=w_i= \beta*(w_{i0}+\alpha) wi0=wi=β(wi0+α) w j 0 = w j = β ∗ ( w j 0 + α ) w_{j0}=w_j= \beta*(w_{j0}+\alpha) wj0=wj=β(wj0+α),此时两条流 cwnd 之差 d = β ∗ d 0 d=\beta*d_0 d=βd0

再下一个周期, w i 0 = w i = β ∗ ( β ∗ ( w i 0 + α ) + α ) w_{i0}=w_i= \beta*(\beta*(w_{i0}+\alpha)+\alpha) wi0=wi=β(β(wi0+α)+α) w j 0 = w j = β ∗ ( β ∗ ( w j 0 + α ) + α ) w_{j0}=w_j= \beta*(\beta*(w_{j0}+\alpha)+\alpha) wj0=wj=β(β(wj0+α)+α),两条流 cwnd 之差 d = β 2 ∗ d 0 d=\beta^2*d_0 d=β2d0

容易得到,在第 n 个 AIMD 周期后,两条流 cwnd 之差为 d = β n d 0 d=\beta^nd_0 d=βnd0,趋向于 0,这意味着无论初始时刻任意两条流差异多么大,最终它们将趋同。

值得注意的是,无论是 AI 过程还是 MD 过程,都单独对收敛有贡献,假设持续 AI,从不 MD,观察一个比值 w i 0 + x w j 0 + x \dfrac{w_{i0}+x}{w_{j0}+x} wj0+xwi0+x, x 越大,比值越趋向于 1,在总体量面前,差异将无关紧要,另一方面,假设持续 MD,从不 AI,观察一个差值 β x ∗ w i 0 − β x ∗ w j 0 \beta^x*w_{i0}-\beta^x*w_{j0} βxwi0βxwj0, x 越大,该差值趋向于 0,宏观上看,差异消失。

总体而言,AI 的过程与初始值无关,它是一种与初始优势相反的力量,保持差值不变,比例趋向公平,削减掉相对差异,而 MD 则与初始值强相关,但它下降的速率越来越慢,保持差值趋向公平,比例不变,削减掉绝对差异。AIMD 共同作用,各自效用独立积累,无论在比例差异还是在绝对差异均被时间抹平。

举个例子,A 有 1 块钱,B 有 9 块钱,两人很公平,因为购买力有绝对值下限,虽然 A 和 B 相差 9 倍,但他们可能都买不到东西,但 A 有 100 万块,B 有 900 万块,就不再公平了,此时 9 倍的差异关乎他们生活在不同层次,如果 A 有 1 亿零 100 块,B 有 1 亿零 900 块,又会非常公平。

大概社会平均工资,普调,年终奖,股权被稀释,工资被倒挂,就和 AIMD,AIAD,MIMD,MIAD 有关。用上述的简单推导可以证明,除了 AIMD 可以收敛到公平,其它 3 种均不行。

AIMD-based cc,比如 reno,cubic,scalable,highspeed,它们被认为不如 BBR,但事后看,这些算法并不是在根本上不如 BBR,而 BBR 也不是根本上就优秀,前面说过,BBR 的高效来自于瞬时记住并憋住的 maxbw,而 cubic(包括其它 AIMD cc) 的问题在于它不能识别随机丢包。而 AIMD 本身与效率无关,它只关注公平收敛。

cubic 只要增加丢包分类识别就能解决问题, 而 BBR 无论 probebw 还是 probertt 均无法完备论证收敛,只在 “效果” 上显示出 “加速比与带宽占比负相关”,而这是过不了审的。

已经有了很多 “cubic-改” 算法,大多数引入了 delay 甚至 delay 梯度,在丢包发生时二次确认拥塞是否真实存在,事实上 westwood 就是一种比较合理的算法,它收敛到瓶颈带宽,而不是固定比例。然而由于实现粗糙(依然是受制于 Linux 拥塞状态机),westwood 未竟全功。

还有另一种拥塞判定方法,二次机会法,事先为 AIMD 准备两个 beta 参数,当检测到丢包时,随即将 cwnd 下降一个更小的 beta 比例,进入包守恒开始重传恢复,如果重传率超过一个阈值,则将 cwnd 下降更大的 beta,视情况从两个 MD 中任意一个开始进行 AI:
在这里插入图片描述
避开的只是随机丢包,丝毫不影响拥塞丢包后的收敛。

非常简单,不需要像 westwood 还要计算瓶颈带宽,代价就是误判会增加重传率,好在只有二次机会,只会增加一点点,不像 BBR 憋住 10 round 那样执着。

公平收敛,抓住一个小基本点就行了,这是控制平面的底座,其它的,留给应用自己以及底层链路,就好像线路断了,再好的算法也无济于事,另一方面,application-limited 传输,再好的算法也用不上,但无论如何,公平是刚需。

其实菜市场摊贩就遵循 AIMD 以避开相互内耗的价格战,最终你会发现各个摊贩的菜价都一样,差别只是质量口碑而已。菜市场刚开张时,各家促销,缓慢加价,最终发现客户流失时,又大减价(注意这个 “大” 字),大促销,最终他们的价格趋向于一致。当然,TCP 这方面属于后生,但 AIMD 是一个放之四海而皆准的通用控制论模型,在它的框架下做事就对了,但凡违背的,事情将会越发精细,复杂。

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

相关文章:

AIMD 为什么收敛(tcp reno/cubic 为什么好)

TCP 拥塞控制目标是缓解并解除网络拥塞,让所有流量公平共享带宽,合在一起就是公平收敛。 AIMD(几乎所有与拥塞控制相关的协议或算法都有 AIMD 的影子,包括 RoCE,BBRv2) 为什么收敛?我一般会给出下面的老图:…...

医院智能导诊系统,医院导航解决方案

随着现代医院规模不断扩大,功能区域越来越细化,面对复杂的楼宇结构,集中的就诊人流,患者在就诊中经常会面临找不到目的地的困境,就诊体验变差。针对这个问题,一些面积和规模都比较大的医院,已经…...

【论文复现】基于区块链的分布式光伏就地消纳交易模式研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

在滴滴和字节跳动划水4年,过于真实了...

先简单交代一下吧,沅哥是某不知名211的本硕,18年毕业加入滴滴,之后跳槽到了头条,一直从事测试开发相关的工作。之前没有实习经历,算是四年半的工作经验吧。 这四年半之间他完成了一次晋升,换了一家公司&am…...

tensorflow GPU训练环境布置

tensorflow GPU训练环境布置 一、显卡驱动安装1.1 如何处理**Failed to initialize NVML: Driver/library version mismatch的问题**1.2 卸载旧的版本1.3 驱动安装 1.3.1 利用apt 安装1.3.2 手动安装 二、安装CUDA2.1 确定CUDA版本2.2 下载文件1. 找匹配版本2. 选合适的平台 2…...

理解和使用Java中的枚举

枚举是一种特殊的数据类型,用于定义一组具名的常量。Java中的枚举类型可以包含多个枚举常量,每个常量都具有唯一的名称和值。本文将详细介绍Java中的枚举,包括为什么要使用枚举、枚举的好处、如何定义和使用枚举等。 为什么要使用枚举&#…...

C++和Java:哪种语言更适合你

C和Java:哪种语言更适合你 一、引言1 背景介绍2 问题阐述3 目的和意义 二、C与Java的介绍1 C的特点和优缺点2 Java的特点和优缺点3 两种语言的比较4 选择C的理由4.1 适合底层开发的特点4.2高效的编译器和运行速度4.3 自由且灵活的语言风格4.4 良好的内存管理能力 5 …...

FE_Vue学习笔记 框架的执行流程详解

1 分析脚手架结构 (1)CLI就是 command line interface 的缩写。Vue CLI官网:Vue CLI (2)安装过程: (PS: 提前安装过node.js了,没有安装的可以打开这个:Downl…...

KingbaseES V8R6 等待事件之LWLock Buffer_IO

等待事件含义 当进程同时尝试访问相同页面时,等待其他进程完成其输入/输出(I/O)操作时,会发生LWLock:BufferIO等待事件。其目的是将同一页读取到共享缓冲区中。 每个共享缓冲区都有一个与LWLock:BufferIO等待事件相关联的I/O锁,每次都必须在共…...

桂院导航小程序 静态项目 二次开发教程

Gitee代码仓库:桂院导航小程序 先 假装 大伙都成功安装了静态项目,并能在 微信开发者工具 和 手机 上正确运行。 接着就是 将项目 改成自己的学校。 代码里的注释我就不说明了,有提到 我的学校 的文字都改成你自己的就行 1. 全局 app.json…...

即时通讯APP开发费用成本多少?

移动互联网的发展,为人们的通讯交流提供了非常多的便利,一些即时通讯APP的出现,将人与人的距离再一次缩短。通过即时通讯APP软件,人们可以随时随地了解身边发生的新鲜事物,以及和朋友探讨各类趣事,甚至可以…...

女生学大数据好找工作么

好不好找工作和性别无关,无论你是男生还是女生,找工作的时候首先要看的都是学历,然后是个人能力,其中还有一定的面试经验和简历加分项~ 不要自己先把这个性别限定死,你有能力都能找到工作,不满足企业要求都…...

02-mysql升级篇(rpm方式+压缩包升级)

文章目录 升级方式一、二进制方式安装1、下载mysql-5.7.42安装包(mysql-5.7.37升级mysql-5.7.42)2、备份数据库、my.cnf文件,停止mysql服务(重要)3、查看当前数据库版本3、上传 mysql-5.7.42-1.el7.x86_64.rpm-bundle.…...

【Java零基础入门篇】第 ④ 期 - 继承(三)

【Java零基础入门篇】第 ④ 期 - 继承(三) 博主:命运之光专栏:Java零基础入门 学习目标 1.掌握继承性的主要作用、实现、使用限制; 2.掌握this和super的含义及其用法; 3.掌握方法覆写的操作; 4.…...

Python Selenium搭建UI自动化测试框架

自动化测试是软件测试中非常重要的一部分,可以提高测试效率和测试覆盖率。在UI自动化测试中,Selenium是非常流行的工具。本文将介绍如何使用Python和Selenium搭建UI自动化测试框架。 一、环境准备 在开始搭建UI自动化测试框架之前,需要先安装…...

开发大语言模型需要数据?算法?算力?

开发大语言模型的关键是什么。最近看到不少文章为了流量,甚至连 5G 通讯都说成了是开发大语言模型的关键 其实从前面的原理介绍,不难看出,大语言模型的其中一个关键点是数据。 关键一:数据​ 训练数据主要是所谓的语料库。今天的很多语言模型的语料库主要有以下几种: …...

CSS选择器的常见用法

目录 1、CSS编写方式 2.CSS选择器 1.标签选择器 2.类选择器 3.id选择器 4.后代选择器 3.CSS属性 CSS叫做"层叠样式表",作用就是装饰网页.类似于我们平时所说的化妆。 字体、大小、间距、颜色、位置、边框、背景等等统称为样式,用来描述一个网页。 …...

Oracle EBS修改密码

FNDCPASS修改密码 用户名必须出现在FND_USER或FND_ORACLE_USERID表中。FNDCPASS实用程序和ALLRACLE功能是为应用程序用户/模式设计的。 对于FND_USER或FND_ORACLE_USERID中不存在的用户,可以使用alter命令更改密码。 查询用户是否存在FND_USER或FND_ORACLE_USERI…...

《花雕学AI》33:如何用XMind制作AI思维导图、鱼骨图和组织结构图

思维导图是一种有效的思维工具,它可以帮助我们整理信息,激发创意,提高效率。思维导图是一种以中心主题为核心,以分支结构为形式,以关键词和图像为内容的图形表示法。它可以让我们一目了然地看到知识的层次和逻辑&#…...

【rust】| 06——语言特性 | 所有权

系列文章目录 【rust】| 00——开发环境搭建 【rust】| 01——编译并运行第一个rust程序 【rust】| 02——语法基础 | 变量(不可变?)和常量 【rust】| 03——语法基础 | 数据类型 【rust】| 04——语法基础 | 函数 【rust】| 05——语法基础 | 流程控制 【rust】| 06——语言特…...

AUTOSAR入门

简介 AUTOSAR(AUTomotive Open System ARchitecture)是一种汽车软件架构标准,由德国大陆、博世、宝马等汽车及零部件制造商共同发起,拥有广泛的行业参与。其目标是为了解决汽车电子和软件系统日益复杂的问题,提高可重…...

运维高可用架构的 6 大常规方案

在介绍高可用架构的方案之前,先说一下什么是高可用架构,高可用架构应具备但不限于以下特征: 主从切换 很好理解,当其中一台机器的服务宕机后,对于服务调用者来说,能够迅速的切换到其他可用服务,…...

Java设计模式-桥接模式

简介 桥接模式(Bridge Pattern)是一种结构性设计模式,它的主要作用是将抽象部分和实现部分解耦,使它们可以独立变化而不会互相影响。桥接模式最早由GoF(Gang of Four)提出,在《设计模式》一书中…...

计及N-k安全约束的含光热电站电力系统优化调度模型【IEEE14节点、118节点】(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

欧拉函数详解

文章目录 欧拉函数定义性质计算公式求某个数欧拉函数值线性筛求区域内欧拉函数 欧拉函数 定义 在[1,n]的范围内所有与n互质的数字的个数。 我们用 φ ( n ) \varphi(n) φ(n)来表示数字n的欧拉函数的值,例如: φ ( 4 ) 2 \varphi(4)2 φ(4)2&#xf…...

手把手教你如何将安卓手机数据导入iPhone!【详解】

案例:安卓数据导入苹果手机 【大神们,刚换了新的苹果手机,原本的安卓手机数据怎么导入新手机?】 想要换用iPhone,但是又不想丢失安卓手机里的重要数据怎么办?如何将安卓手机数据导入iphone?本文…...

怎么轻松地搞定Win11系统备份任务?

“我是一个电脑小白,不是很懂电脑的一些操作。我刚买了一台新电脑,它装的是Win11系统,我害怕它出现什么问题,听朋友说可以通过备份的方法保护系统,这是真的吗?有谁知道该怎么进行Win11系统备份吗&#xff1…...

MySQL集群

目录 主从复制 主从复制流程: 为什么要有relay log中继日志? 为什么要有主从复制,好处? 实际生产环境中。如果对MySQL数据库的读写都在一台数据库服务器中操作,无论是再安全性、高可用性,还是高并发性等…...

关于Kerberos认证的一些攻击手法学习总结

Kerberos认证流程 前言 本文主要分享最近学习的关于域内Kerberos认证的一些攻击手法,以自我的理解为主,从原理理解切入到基本工具利用来阐述,个人的理解分析较为啰嗦,嫌太兀长的可以跳着看就好,还请各位谅解。如有错误…...

STL-deque容器

双端数组,可以对头端进行插入删除操作 deque 容器和 vecotr 容器有很多相似之处,比如: deque 容器也擅长在序列尾部添加或删除元素(时间复杂度为O(1)),而不擅长在序列中间添加或删除元素。deque 容器也可…...