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

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

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

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)系统才有趣,才能在缩放中让各组分以不同比例的速度达到极限,优化明显落后的,或者砍掉明显靠前的,就有了看得见的收益,而工作的意义就在于,你要敏锐地发现哪些组分缩放地更快或者更慢。

希望本文对你有所启发。

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

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

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

相关文章

ASP.NET限流器的简单实现

一、滑动时间窗口 我为RateLimiter定义了如下这个简单的IRateLimiter接口,唯一的无参方法TryAcquire利用返回的布尔值确定当前是否超出设定的速率限制。我只提供的两种基于时间窗口的实现,如下所示的基于“滑动时间窗口”的实现类型SliddingWindowRateL…

Java编程中,异步操作流程中,最终一致性以及重试补偿的设计与实现

一、背景 微服务设计中,跨服务的调用,由于网络或程序故障等各种原因,经常会出现调用失败而需要重试。另外,在异步操作中,我们提供接口让外部服务回调。回调过程中,也可能出现故障。 这就要求我们主动向外…

vim批量多行缩进调整

网上其他教程&#xff1a; ctrl v 或者 v进行visual模式按方向键<&#xff0c;>调整光标位置选中缩进的行Shift > &#xff08;或者 Shift < &#xff09;进行左右缩进。 我只想说&#xff0c;乱七八糟&#xff0c;根本不管用 本文教程&#xff1a; 增加缩进…

物联网网关在工业行业的应用案例

物联网网关在工业行业的应用案例 随着物联网技术的不断发展&#xff0c;物联网网关在工业行业的应用越来越广泛。本文将介绍一个物联网网关在工业行业的应用案例&#xff0c;以期为相关领域的研究和实践提供借鉴和启示。 一、案例背景 某大型制造企业是一家全球知名的汽车制…

高防IP是什么,高防IP有什么作用?

什么是高防IP&#xff1f; 高防IP是一款专业解决大流量攻击的安全防护产品&#xff0c;支持网站和非网站类业务的DDoS、CC防护&#xff0c;用户通过配置转发规则&#xff0c;将攻击流量引至高防IP并清洗&#xff0c;保障业务稳定可用&#xff0c;具有灾备能力&#xff0c;线路…

剑指offer --- 用两个栈实现队列的先进先出特性

目录 前言 一、读懂题目 二、思路分析 三、代码呈现 总结 前言 当我们需要实现队列的先进先出特性时&#xff0c;可以使用栈来模拟队列的行为。本文将介绍如何使用两个栈来实现队列&#xff0c;并给出具体的思路和代码实现。 一、读懂题目 题目&#xff1a;用两个栈实现一…

[ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧

文章目录 一、Amazon CodeWhisperer 简介1.1 CodeWhisperer 是什么1.2 Amazon CodeWhisperer 是如何工作的 二、Amazon CodeWhisperer 的优势和功能2.1 Amazon CodeWhisperer 的优势2.2 Amazon CodeWhisperer 的代码功能 三、Amazon CodeWhisperer 安装3.1 安装到 IntelliJ IDE…

计算数组中每个元素的立方根numpy.cbrt()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 计算数组中每个元素的立方根 numpy.cbrt() [太阳]选择题 请问以下代码中执行语句输出结果是&#xff1f; import numpy as np a np.array([1, 8, 27]) print("【显示】a ",a) pr…

synchronized jvm实现思考

底层实现时&#xff0c;为什么使用了cxq队列和entryList双向链表&#xff1f;这里为什么不跟AQS中使用一个队列就行了&#xff0c;加了一个entryList的目的是为了什么&#xff1f; 个人理解这里多一个entryList&#xff0c;可能是用于减少频繁的cas操作。假设存在很多锁竞争时&…

【Linux】gcc/g++ gdb 使用

目录 1&#xff0c;背景知识 2&#xff0c;gcc 如何完成 1&#xff0c;预处理(进行宏替换) 2&#xff0c;编译&#xff08;生成汇编&#xff09; 3&#xff0c;汇编&#xff08;生成机器可识别代码&#xff09; 4&#xff0c;连接&#xff08;生成可执行文件或库文件&…

rk3588 usb网络共享连接

出门在外总会遇到傻 X 地方 没有能连接公网的 网口给香橙派连网 而我的香橙派5plus 没有wifi模块。。。话不多说 在手机上看一眼手机的mac地址&#xff0c; 在rk3588 上执行以下命令&#xff1a; sudo ifconfig usb0 down sudo ifconfig usb0 hw ether 58:F2:FC:5D:D4:7A //该m…

浅谈基于云计算的环境智能监控系统

随着经济的飞速发展&#xff0c;环境污染也越来越严重&#xff0c;环境监控成为了政府与社会关注的焦点。本文提出了一种基于云计算的环境智能监控系统——EasyCVR&#xff0c;该系统综合应用了传感器、云计算、大数据、人工智能等技术&#xff0c;具有实时、准确、高效的监控能…

ChatGPT简介及基本概念

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列点击跳转>ChatGPT和AIGC &#x1f449;关于作者 专…

HarmonyOS开发:动态共享包的依赖问题

一、共享包的依赖方式 在需要依赖的模块包目录下oh-package.json5文件中添加依赖&#xff1a; "dependencies": {"ohos/srpaasUI": "file:../../srpaasUI","ohos/srbusiness": "file:../../feature/srbusiness"} 引入之后…

Java源码分析:Guava之不可变集合ImmutableMap的源码分析

原创/朱季谦 一、案例场景 遇到过这样的场景&#xff0c;在定义一个static修饰的Map时&#xff0c;使用了大量的put()方法赋值&#xff0c;就类似这样—— public static final Map<String,String> dayMap new HashMap<>(); static {dayMap.put("Monday&q…

音频类型转换工具-可执行文件exe/dmg制作

朋友车载音乐需要MP3格式&#xff0c;想要个批量转换工具 准备工作 brew install ffmpeg --HEAD或者官网下载安装ffmpeg并配置环境conda install ffmpeg 或者pip install ffmpeg-python 音频类型转换程序.py文件 exe文件在windows下打包&#xff0c;dmg在macos下打包&#…

2023_“数维杯”问题B:棉秸秆热解的催化反应-详细解析含代码

题目翻译&#xff1a; 随着全球对可再生能源需求的不断增加&#xff0c;生物质能作为一种成熟的可再生能源得到了广泛的关注。棉花秸秆作为一种农业废弃物&#xff0c;因其丰富的纤维素、木质素等生物质成分而被视为重要的生物质资源。虽然棉花秸秆的热解可以产生各种形式的可…

001 opencv addWeighted

目录 一、环境 二、addWeighted函数 三、代码演示 一、环境 本文使用环境为&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、addWeighted函数 OpenCV中的cv.addWeighted函数是一个用于图像叠加的函数&#xff0c;它可以将两个具有相同尺寸和类型的图像按…

基于JavaWeb+SSM+社区居家养老服务平台—颐养者端微信小程序系统的设计和实现

基于JavaWebSSM社区居家养老服务平台—颐养者端微信小程序系统的设计和实现 源码获取入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 前言 在复杂社会化网络中&#xff0c;灵活运用社会生活产生的大数据&am…

农户建档管理系统的设计与实现-计算机毕业设计源码20835

摘 要 随着互联网趋势的到来&#xff0c;各行各业都在考虑利用互联网将自己推广出去&#xff0c;最好方式就是建立自己的互联网系统&#xff0c;并对其进行维护和管理。在现实运用中&#xff0c;应用软件的工作规则和开发步骤&#xff0c;采用Java技术建设农户建档管理系统。 本…