端到端拥塞控制的本质

news2024/9/22 19:38:28

昨天整理了一篇 bbr 的微分方程组建模(参见 bbr 建模),算是 bbr 算法终极意义上的一个总结,最后也顺带了对 aimd 的描述,算是我最近比较满意的一篇分享了。那么接下来的问题,脱离出具体算法,上升到宏观层面,拥塞控制的本质是什么。

拥塞控制的本质就是对有效资源的自适应,这里的有效资源包括带宽但不包括 buffer。这个自适应分为两个层面,在局部意义上,要对时延负反馈做适应,在全局意义上,要做公平收敛,要说本质,就是以上这些。

用微分方程描述拥塞控制非常直观,因为它本身就是描述变化的,而拥塞控制就是要对变化做响应,变化主要指全局流量的波动,有流量加入,就出让一些资源,有流量退出,就抢占一些资源,出让多少,抢占多少,不光看能力,还要看全局,所有这一切都非常容易用微分方程描述。拥塞控制更多的意义在于适应多流,单流还不容易吗,传统 slow start or bbr startup 就够了。

我们看迄今为止具有代表性的 3 类拥塞控制算法,基于丢包的 reno/cubic,基于时延的 vegas,基于 bdp 模型的 bbr,它们无外乎都在描述 cwnd/pacing rate 的变化。

虽然 reno/cubic 的 aimd 依赖外部事件(丢包)而显得不连续,但它依然可以用连续的方程描述,只需要把丢包事件等价到丢包率即可:

d W d t = ( 1 − p ) ∗ a W − p ∗ b ∗ W \dfrac{dW}{dt}=(1-p)*\dfrac{a}{W}-p*b*W dtdW=(1p)WapbW

而对于 vegas,只需要盯紧时延变化,下面是我给出的一个模型,简陋,但能说明问题。设 x(t) 为发送速率,y(t) 为期望 rtt,z(t) 为实际测量 rtt,w(t) 为 cwnd,则 vegas 的行为可由下列一组方程描述:

z ( t ) = 实际实时采样 z(t)=实际实时采样 z(t)=实际实时采样
d x d t = k 1 ( z − y ) \dfrac{dx}{dt}=k_1(z-y) dtdx=k1(zy)
d y d t = k 2 ( y − z ) \dfrac{dy}{dt}=k_2(y-z) dtdy=k2(yz) 【实则移动指数平均】
d w d t = x ⋅ z \dfrac{dw}{dt}=x\cdot z dtdw=xz

我用 sin 函数模拟采样波动,数值解法代码如下:

x = np.zeros_like(times)
y = np.zeros_like(times)
z = np.zeros_like(times)
w = np.zeros_like(times)

x[0], y[0], z[0] = x0, y0, z0
t = np.arange(0.0, T, 0.1)
for n in range(1, len(times)):
    x[n] = x[n-1] + dt * (-k1*(z[n-1] - y[n-1]))
    y[n] = y[n-1] + dt * (-k3*(y[n-1] - z[n-1]))
    z[n] = 1 + 1*np.sin(2 * np.pi * t[n-1])
    w[n] = x[n]*z[n]

它长下面的样子:
在这里插入图片描述

可观察到这些量之间的关系,就是负反馈,阻止 rtt 变化,此消彼长。

资源限定场景,参与者多则收,参与者少则放,装进一个瓶子,晃一段时间就不再拥挤,这就是拥塞控制。

很多人都有体验,刚挤进一辆满载公交车或绿皮火车,似乎每个人都被压得喘不过气,但车子颠簸一阵子后,奇迹般宽松了,另一例,医院,景区,购物等不管排队多长,似乎最终都会得到服务。

总有人会往宽松的地方主动挪,有人挪就有人让,总有人觉得没希望而离开,但很少有人主动挤,这就是拥塞控制。端到端拥塞控制与此类似,都是没有全局上帝视角的自发自组织博弈。

自 1986 年第一次肉眼可见的大范围网络拥塞后,范雅各布森(Van Jacobson,任何 cc 都应引用他)引入拥塞控制机制后迄今诞生了越来越多的拥塞控制算法,但具有部署意义的依旧是 reno/cubic,vegas,bbr 这 3 类,其它的诸多算法大多数都上不了台面。

近几年各类 cc 如寒武纪大爆发(各顶会一年 n 多论文,n 多 cc,基本都是瞎 jb 扯淡),但多数上不了台面,主流 cc 还是老 3 样,实际部署的就是 cubic vs. bbr,vegas 都不行,别的都只能自己玩玩,内卷罢了。强调端到端却又没什么好招数获得更加详细的信息,上限到了,信息量已达极限,还折腾个啥。至于 dcn,只呵呵。

大多数都是为了升职加薪,包括 G 家。rack 早在 1994 年 vegas 论文中就展现了,然而无人问津,直到 bbr 前夕… 其实业内早就采用了。业内一般不管你实际效果,而在乎总结性只言片语,曾有位自诩资深的经理说 “拥塞控制的本质就是端到端的 qos”,这就纯扯犊子了。

端到端信息量极限的根因在于 “测不准”。测不准又怎样,大数定律,中心极限定理上场啊,任何事物在足够符合它自己尺度的那个度量精度,一定有规律,这就是统计学两大定律的前提,而分组交换互联网本身就是统计复用网络,它遵循统计律。

但大多数程序员看不上统计律。可统计律才是有效的拥塞控制的核心基础,不然呢?你试试看。

艹,本来不卷,求别卷!鸡屎,经理。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1922744.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Redis】复制(Replica)

文章目录 一、复制是什么?二、 基本命令三、 配置(分为配置文件和命令配置)3.1 配置文件3.2 命令配置3.3 嵌套连接3.4 关闭从属关系 四、 复制原理五、 缺点 以下是本篇文章正文内容 一、复制是什么? 主从复制 master&#xff…

【UE5.1 角色练习】15-枪械射击——子弹发射物

目录 效果 步骤 一、创建并发射子弹 二、优化子弹 效果 步骤 一、创建并发射子弹 1. 在前面的文章中(【UE5.1 角色练习】06-角色发射火球-part1)我们创建了蓝图“BP_Skill_FireBall” 这里我们复制一份命名为“BP_Ammo_5mm”,用于表示…

OpenAI终止对中国提供API服务,对国内AI市场产生重大冲击?

6月25日,OpenAI突然宣布终止向包括中国在内的国家地区提供API服务,本月9日这一政策已经正式生效了! 有人说,这个事件给中国AI行业带来很大冲击!是这样吗?在展开讨论前,我们先来看看什么是API服务…

详解如何通过稀疏向量优化信息检索

在信息检索方法的发展历程中,我们见证了从传统的统计关键词匹配到如 BERT 这样的深度学习模型的转变。虽然传统方法提供了坚实的基础,但往往难以精准捕捉文本的语义关系。如 BERT 这样的稠密检索方法通过利用高维向量捕获文本的上下文语义,为…

配置Maven并使用IDEA新建一个简单的Springboot项目

一.maven的配置 1.查看电脑上是否配置了maven ①使用快捷键“WinR”打开运行窗口,在窗口中输入cmd,点击确定进入黑色命令窗口 ②在命令行窗口中输入如下命令 mvn -version 如果出现下面的提示则表示该电脑已配置maven,否则需要进行maven配…

pdf工具

iLovePDF | 为PDF爱好者提供的PDF文件在线处理工具 https://www.ilovepdf.com/zh-cn 图片 pdf 合并成一个pdf也可以拆分

基于AT89C51单片机超声波水位液位控制系统设计(含文档、源码与proteus仿真,以及系统详细介绍)

本篇文章论述的是基于AT89C51单片机的1616点阵LED显示器字符滚动显示设计的详情介绍,如果对您有帮助的话,还请关注一下哦,如果有资源方面的需要可以联系我。 目录 设计任务与要求 原理图 仿真图 代码 系统论文 资源下载 设计任务与要求…

css横向滚动条支持鼠标滚轮

在做视频会议的时候&#xff0c;标准模式视图会有顶部收缩的一种交互方式&#xff0c;用到了横向滚动&#xff1b;一般情况下鼠标滚轮只支持竖向滚动&#xff0c;这次写个demo是适配横向滚动&#xff1b; 效果图展示 实现横向滚动条顶部显示 <div className{style.remote_u…

【C++基础】初识C++(2)--引用、const、inline、nullptr

目录 一、引用 1.1 引用的概念和定义 1.2 引用的特性 1.3引用的使用 1.4 const引用 1.5 指针和引用的关系 二、inline 三、nullptr 一、引用 1.1 引用的概念和定义 引⽤不是新定义⼀个变量&#xff0c;⽽是给已存在变量取了⼀个别名&#xff0c;编译器不会为引⽤…

打造你的智能家居指挥中心:基于STM32的多协议(zigbee、http)网关(附代码示例)

1. 项目概述 随着物联网技术的蓬勃发展&#xff0c;智能家居正逐步融入人们的日常生活。然而&#xff0c;市面上琳琅满目的智能家居设备通常采用不同的通信协议&#xff0c;导致不同品牌设备之间难以实现互联互通。为了解决这一难题&#xff0c;本文设计了一种基于STM32的多协…

IOT物联可编程中控主机同时具备中控主机和交换机的功能

可编程中控主机同时具备中控主机和交换机的功能 GF-MAXCCP可编程中控主机确实同时具备中控主机和交换机的功能&#xff0c;这种设备在现代化会议室、音视频系统及其他集中控制场景中发挥着重要作用。以下是关于GF-MAXCCP可编程中控主机具备中控主机和交换机功能的详细解释&…

ubuntu基于cmakelist的Qt工程,如何将图片打包进二进制程序

qt界面使用的图片打包进入二进制可执行程序&#xff0c;可以避免发布的软件&#xff0c;因为路径问题无法加载图片的问题。 以下步骤参考自百度AI. 步骤如下&#xff1a; 1.创建一个新的Qt资源文件&#xff08;.qrc文件&#xff09; 2.在*.qrc文件中添加图片路径 qrc文件使用…

在Vue中,子组件向父组件传递数据

在Vue中&#xff0c;子组件向父组件传递数据通常通过两种方式实现&#xff1a;事件和回调函数。这两种方式允许子组件与其父组件进行通信&#xff0c;传递数据或触发特定的行为。 1. 通过事件传递数据 子组件可以通过触发自定义事件&#xff0c;并将数据作为事件的参数来向父组…

win11显示泛白关闭HDR

由于自己拿键盘胡乱玩了一会&#xff0c;然后发现显示泛白&#xff0c;很奇怪&#xff0c;用笔记本试了&#xff0c;不是显示器的问题&#xff0c;在网上找不到相关问题的回复&#xff0c;找显卡客服怎么都不好使&#xff0c;卸载显卡驱动可行&#xff0c;但是装上又有问题了。…

案例 | 人大金仓助力山西政务服务核心业务系统实现全栈国产化升级改造

近日&#xff0c;人大金仓支撑山西涉企政策服务平台、政务服务热线联动平台、政务网、办件中心等近30个政务核心系统完成全栈国产化升级改造&#xff0c;推进全省通办、跨省通办、综合业务受理、智能审批、一件事一次办等业务的数字化办结进程&#xff0c;为我国数字政务服务提…

云盘挂载 开机自动模拟 cmd- alist server

云盘挂载 开机自动模拟 cmd- alist server 打开Kimi智能助手, 网址:Kimi.ai - 帮你看更大的世界 (moonshot.cn) 问他: 帮我写一个vbs命令:在D:\sky目录下, 然后cmd, 进入命令行后, 输入 alist server 然后回车 这里 这个目录, 换成自己的 alist.exe所在目录 下面是我完善的示…

对照ui图进行大屏幕适配,echerts适配

1.先找到ui图&#xff0c;我这边是1920*1080的屏幕进行的设计 2.在界面找到跟样式的字体大小&#xff0c;进行设置&#xff0c;一般ui设置字体大小便可 3.在js中写入原生js代码 function adapter() {//获取布局视口宽度&#xff0c;布局视口设备横向独立像素值const dpWidth…

锂电池剩余寿命预测 | Matlab基于Transformer的锂电池剩余寿命预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab基于Transformer的锂电池剩余寿命预测 Matlab基于Transformer的锂电池剩余寿命预测&#xff08;单变量&#xff09; 运行环境Matlab2023b及以上 NASA数据集&#xff0c;B0005号电池数据训练&#xff0c;B00…

SpringCloud集成kafka集群

目录 1.引入kafka依赖 2.在yml文件配置配置kafka连接 3.注入KafkaTemplate模版 4.创建kafka消息监听和消费端 5.搭建kafka集群 5.1 下载 kafka Apache KafkaApache Kafka: A Distributed Streaming Platform.https://kafka.apache.org/downloads.html 5.2 在config目录下做…

OpenGL笔记五之VBO与VAO

OpenGL笔记五之VBO与VAO 总结自bilibili赵新政老师的教程 code review! 文章目录 OpenGL笔记五之VBO与VAO1.VBO2.VAO3.VBO与VAO对比 1.VBO 代码 void prepareVBO() {//1 创建一个vbo *******还没有真正分配显存*********GLuint vbo 0;GL_CALL(glGenBuffers(1, &vbo))…