网络规模与性能优化的一篇随笔

本周写篇轻松的话题,注意信息传输的尺度和缩放比例,写篇随笔。

控制面和数据面随规模缩放的影响,举几个例子就能说明白。

CSMA/CD,控制面和数据面在一起,控制信息交互时延和数据面时延在同一尺度时,就到了极限,因为控制交互时延相对数据面时延更大的话,便可以反过来用了,如果一个胖经理跑 100 步等于一个工人走 1 步,为什么不换个瘦经理或者让工人命令经理呢,因此它们趋向最多收敛到一致。控制面和数据面合而为一的另一个例子是 TCP,带内控制协议典范。

翻转时延分配的经典例子是非对称加密和对称加密,时延更大的 RSA 可用的理由是它更安全更方便解决对称密钥分发和认证问题,但更大的理由是这些需求相对于对称加密更不频繁,否则人们肯定会想办法组合对称加密算法来满足。

交换式以太网脱胎于总线是从 CSMA/CD 逐步将控制面抽离并将控制面信息交互时延不断压缩的过程,最终控制信息交互时延足够短,几乎就有了全局视图,用 crossbar 类交换设施取代统计仲裁变得可行。但 rfc2544 的要求指出控制时延依然存在,它并没有消失,只是和传播时延相比,低到足以忽略了。

接着看另一个时延尺度问题从而揭示根本。

提到 rtt,它指主机时延,传播时延,排队时延之和,整个网络的控制面开销被所有流量的转发过程分担。注意到这些时延在整体 rtt 中的占比以及影响非常重要。

对不同尺度的网络,主机时延和排队时延的占比存在根本区别,问题解法也根本不同。网络规模越小,主机时延和排队时延占比越大,而排队时延影响越大,详细分析这事能指导我们做正确的事。

注意两个变量,一个是光速传播时延随网络规模线性变化,即 proprt = d/c,一个是 buffer 排空时间随网络规模以 根号n 变化,依据是 buffer_size = bdp/根号n。两个变量表现为两个不同伸缩速率,围绕这两个伸缩速率的其它时延伸缩是根本:
在这里插入图片描述

在数据中心,rtt 的主机分量和传播分量在同一 us 尺度,排队分量要高一两个数量级在 ms 尺度,以应对随机而频繁的 incast。三者占比类似,主机时延增加一倍,rtt 至少增加 1/3,而一旦遭遇 buffer queuing,rtt 至少增加 10 倍,这指明两个明确的方向,降低主机时延,减少 incast。大多数互联网厂商的伙计们都在干这两件事,DPDK,XDP 等 bypass,FPGA,DPU 等研发均旨在降低主机时延,而包括 SRD,Falcon 等 transport protocol,以及 SDN 技术旨在缓解甚至消除排队时延,而 Swift cc 则旨在明确区分势均力敌的主机和传播/排队网络时延,以更精确进行拥塞识别。

数据中心内部,SDN 控制器作为控制面,它本身与传统路由协议工作在同一时间尺度(参考南北向流量的生成过程),与 CSMA/CD 一样已到规模极限,但这并不是摒弃它的理由,相反,它是从多个盒子里故意抽拉出来的,因为它能大大减少甚至消除排队时延,而排队时延在数据中心影响巨大。

而 SDN 控制器在广域网上的作用却是另一个故事,反在相反的路上越走越远。广域网的排队时延小于传播时延且随规模增加而差距渐大(参见根号关系),控制信息交互时延与传播时延仍在同一尺度,尝试用它稍微降低一个很重要但并不那么重要的排队时延,反过来可能引入控制器净时延,因为广域网是异步统计的,完全消除排队肯定需要同步仲裁,这本身反而会加重排队(比较有趣的矛盾)。

总之,排队时延的广域网的影响不如在数据中心的影响大,为降低(但不能消除)排队时延在广域网引入 SDN 的 ROI 太低甚至带来净亏损。

整个互联网即使一开始不是脱胎于应对核打击而采用分布式架构,仅仅在知道中心化如此低效后,也还会转向分布式架构。

如果SDN 控制信息交互时延不低于数据通信本身甚至阻滞(比如指令尚未下发)数据通信时,它都有收缩趋势,只有在它能实际降低净时延时,比如数据中心场景,才能抵抗这种收缩趋势,所以不可能存在全球 SDN 控制器,它只能存在于数据中心,局域网。就像大帝国达到一定疆域必定收缩一样,而像希腊城邦则对CSMA/CD更包容。

至于 SDWAN 的意义,单独抽出这张 overlay,它就是个小规模网络,不得不说的是,这涉及到分形或同构性,只要在同一个层次上说事,就要在这个层次上谈规模,规模缩放的原则依然是普适的同一个原则,因此,全球 overlay 上的 SDN 就可以,但全球 underlay 上 SDN 就不行,但如果规模扩展到太阳系,overlay 的 SDN 也不行了。

一个和 SDWAN 规模相关的例子是,假设选择一条更好的路径的开销为 1ms,在数据中心,这 1ms 的选路开销避开 5ms 排队延时或许看起来挺值,但在广域网上,1ms 的选路开销可能减少 50ms 的传播时延(比如一个节点比另一个节点近 10000 公里),并且减少了 10ms 的排队时延,同样的选路开销却带来相差 10 倍的增益,这就是规模非线性效应。另一方面,数据中心抖动 100us 可能造成总 rtt 相差一倍,但对于广域网,100us 微不足道,因此对于 cc 中的 bdp 计算,显然对规模越小的网络越敏感,一个看得见的结果是 bbr 在小规模网络中侵占性太强(rtt 陡一下,bdp 差很多)而不实用。

指导性很明确,大规模网络选路收益大,小规模网络时延敏感性高。用什么不用什么,怎么做,现成的东西怎么改,自己定。

现在谈下传播时延。

传播时延看起来是一个受光速制约的倔强变量,我们无法做任何事情。但当它真成为瓶颈,唯一选择就是绕开它。典型的例子是多核处理器和边缘计算,看起来不相干的东西,实际是一回事。

处理器实际上就是用导线连接的不同计算组件总体,每个组件完成部分计算,将结果通过导线传输到另一个组件继续。传播时延不变,但组件的计算速度却在变快,直到它超过了传播速率,导线成了瓶颈。

让导线变短是好办法,而摩尔定律让这可行。处理器发展方向不是不断增强计算组件,而是不断把所有组件缩小,把整个处理器缩小,同一空间部署多个更小的处理器,这就是多核。

边缘计算则更直接,其不变量是一些硬需求,比如刹车时间,卡顿感知时间,分帧感知时间,唯一的方式就是将计算搬到离自己足够近到传播时延满足这些要求的地方。由此计算弹性可以衍生出 CDN,在边缘计算资源闲置时可缓存内容资源供就近下载,但有趣的是,这个顺序是反着的,CDN 更早一些,后来才有了边缘计算,可见时间不耐古已有之。

我举个例子结束关于传播时延的讨论,半径 200 米的圆形社区,圆心处有一家大型超市,别墅围绕在圆周,居民幸福感很强,半径 200 公里的圆形社区,别墅围绕在圆周,圆心处即使有座城市,居民便感受不到便利了。因为从步行到汽车速度的缩放相对距离缩放太慢了。

最后,谈谈 TCP。所有 TCP 失效的问题几乎都是规模问题。

上周写过一篇文章,谈谈越来越无效的拥塞控制 提到随着带宽的提高,拥塞信号越发不准确,传统的长肥管道问题也是一个规模问题,两个其实也是一回事,网络规模变大了,速度变快了,可拥塞的事实并没变,传达这个事实必然不能再用老方法了。

生活在越来越大的城市里的人们直接串门越来越少,事前都要先约一下,跑空的概率增加,代价增大,规模缩放会改变信息交互方式。

长肥管道中丢包后 cwnd 张开慢只是表象,认识不到本质只会被这些表面现象牵着鼻子走,就算不用 cwnd 控制你也搞不定。你想想任何信号包括电力在长距离传输中也会衰减就明白本质了,这其实是成功概率是与关系很快趋近 0,失败概率是或关系的问题很快到 100%,这概率计算随着规模扩展迅速非线性地拉大成功和失败之间的距离,这就是本质。解法自然就是不要搞长肥管道,别跟自然律对抗。

长肥管道问题,其它行业早就有解法,信号传输用中继补偿衰减,长距离输电升压减少热耗,TCP 你就不搞个代理 or SDWAN 隧道模仿一下信号中继,你就不用 pacing 模仿一下升压减少对 buffer 的冲击(bdp 很大,burst 对 buffer 冲击大,类似大电流的热耗)?固有损耗只能通过中继,比如电线漏电是没法通过升压解决的,但自身行为导致的损耗是可通过调节自身行为弥补的,比如升压输电,pacing 发送,一个 100MB 的 buffer 一窗发 110MB 就会丢包,但 pacing 就能顺利通过,这就是为什么转发节点都 pacing 的原因,网络传输也有欧姆定律。

成天想着怎么往长肥管道里猛灌增加 cwnd,除非你有物理专线,否则灌得多丢得多。

so?线性系统不好玩,纯内卷看不到岸。只有指数(无论指数是否大于 1)系统才有趣,才能在缩放中让各组分以不同比例的速度达到极限,优化明显落后的,或者砍掉明显靠前的,就有了看得见的收益,而工作的意义就在于,你要敏锐地发现哪些组分缩放地更快或者更慢。

希望本文对你有所启发。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

视频制作技巧:添加srt字幕,批量剪辑,省时省力

随着社交媒体的兴起,视频制作越来越成为人们表达自我、分享经验的重要方式。然而,视频制作需要耗费大量的时间和精力。在视频制作中,字幕是非常重要的元素,可以帮助观众更好地理解视频内容。而SRT字幕则是一种更为先进的字幕技术&…

计算机毕业设计选题推荐-高校后勤报修微信小程序/安卓APP-项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

分发糖果(贪心算法)

题目描述 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果,计算并返回…

利用NVIDIA DALI读取视频帧

1. NVIDIA DALI简介 NVIDIA DALI全称是NVIDIA Data Loading Library,是一个用GPU加速的数据加载和预处理库,可用于图像、视频和语音数据的加载和处理,从而为深度学习的训练和推理加速。 NVIDIA DALI库的出发点是,深度学习应用中…

网络基础(一)

文章目录: 计算机网络认识计算机网络背景网络发展认识 “协议” 网络协议初识协议分层OSI七层模型TC/IP 五层(或四层)模型 网络传输基本流程网络传输流程图同局域网的两台主机进行通信跨网络的两台主机进行通信数据包的封装和分用 网络中的地…

本周Github有趣项目:draw-a-ui等

有趣的项目、工具和库 gpt-crawler 抓取网站以生成知识文件,从而从 URL 创建您自己的自定义 GPT。 需要步骤: 配置运行爬虫、 将您的数据上传到 OpenAI:使用此选项通过 UI 访问您生成的知识,您可以轻松与他人共享 创建自定义助…

AR眼镜_单目光波导VS双目光波导方案

双目光波导AR眼镜方案是一种创新的智能设备,可以在现实场景中叠加虚拟信息,提供增强的视觉体验和交互体验。光学显示方案是AR眼镜的核心技术之一,它对眼镜的性能和使用体验起着决定性的作用。 相比于单目AR眼镜,双目AR眼镜具有更好…

【算法】距离(最近公共祖先节点)

题目 给出 n 个点的一棵树,多次询问两点之间的最短距离。 注意: 边是无向的。所有节点的编号是 1,2,…,n。 输入格式 第一行为两个整数 n 和 m。n 表示点数,m 表示询问次数; 下来 n−1 行,每行三个整数 x,y,k&am…

mtgsig1.2简单分析

{"a1": "1.2", # 加密版本"a2": new Date().valueOf() - serverTimeDiff, # 加密过程中用到的时间戳. 这次服主变坏了, 时间戳需要减去一个 serverTimeDiff(见a3) ! "a3": "这是把xxx信息加密后提交给服务器, 服主…

深度优化数据库性能:Linux 内核参数调整解析

点击上方蓝字关注我 数据库服务器性能的优化是每个IT团队关注的焦点之一。除了数据库引擎的优化之外,合理调整操作系统的内核参数也是提高数据库性能的关键。本文将解析一些常见的 Linux 内核参数,以及它们在数据库服务器优化中的作用和建议的值。 1. 参…

【学习笔记】Java安全之动态加载字节码

文章目录 什么是Java的字节码利用URLClassLoader加载远程class文件利用ClassLoader#defineClass直接加载字节码利用TemplatesImpl加载字节码利用BCEL ClassLoader加载字节码 最近在学习Phith0n师傅的知识星球的Java安全漫谈系列,随手记下笔记 什么是Java的字节码 J…

StoneDB顺利通过中科院软件所 2023 开源之夏 结项审核

近日,中科院软件所-开源软件供应链点亮计划-开源之夏2023的结项名单正式出炉,经过三个月的项目开发和一个多月的严格审核,共产生 418个成功结项项目!其中,StoneDB 作为本次参与开源社区,社区入选的两个项目…

MHA高可用

MHA: 什么是MHA:masterhight availabulity:基于主库的高可用环境下:主从复制,故障恢复 有一个主从的架构。 MHA实验要求,最少有一主两从 Mysql的单点故障问题,一旦主库崩溃,MHA可以在0-30S内…

【工作记录】springboot应用实现license认证

前言 License授权是一种常见的商业模式,一般用于在客户端部署项目后进行使用人员或功能限制,也常用于软件的试用场景。 主要实现思路就是在服务端生成密钥对及证书,在客户端启动或访问过程中进行验证。 本文实现的是通过IP地址、MAC地址、…

【MySQL】运行报错:ERROR 1193 (HY000): Unknown system variable ‘tx_isolation‘ 查看隔离级别报错

1、查看事务隔离级别的时候报错: 原因: 老版本 MySQL 比如 5 中用的是 tx_isolation,而应该是在 5.7.20 版本之后,用的是 transaction_isolation。 所以:在 MySQL 8 及之后的版本中,只需将语句中的 tx_isol…

FPGA基础以太网

以太网数据通信 物理层:网线网卡(PHY芯片) 数据链路层:Mac层(数据有效传输) 如图所示:FPGA中的Mac层中的MII接口负责控制PHY芯片,PHY芯片通过网线与PC端进行以太网数据传输。 FPGA中&#xff…

【草料】uni-app ts vue 小程序 如何如何通过草料生成对应的模块化二维码

一、查看uni-app项目 1、找到路径 可以看到项目从 src-race-pages-group 这个使我们目标的查询页面 下面我们将这个路径copy到草料内 2、找到进入页面入参 一般我们都会选择 onload() 函数下的入参 这里我们参数的是 id 二、草料 建议看完这里的教程文档 十分清晰&#xff01…

学习笔记6——垃圾回收

学习笔记系列开头惯例发布一些寻亲消息 链接:https://baobeihuijia.com/bbhj/contents/3/190801.html java垃圾回收(stop the world) 专注于堆和方法区的垃圾回收,年轻代,老年代,永久代判断对象是否还存…

基于flask和fomantic-ui的简易p2p文件分享平台的手动实现

背景 开学一个多月了,由于繁重的学业和懒惰,都没怎么更新有意思的博客。 前几天突然想到了一个想法。同学之间平常用网络分享一个文件,大部分都是用的qq。但是qq看起来把文件拖到聊天框点击发送就发给对面同学了。但是实际上是先上传到了腾…

【C语言期末不挂科——指针篇1】

C语言指针初阶 文章目录 C语言指针初阶**什么是指针?**   **1)初识指针**  **2)地址的大小**  **3)指针变量** **指针的类型**   **1)指针对整数加减运算**  **2)指针的解引用** **野指针**  **1&#xff…