题目用 “与” 而不是 “是” 连接两名词,说明它们天然互斥,就比如看到 “经理与人” ,自然而然的就会觉得经理接近了神。

数据在 TCP/IP 网络上传输获得的 “尽力而为” 承诺的时间在端到端时延中占比太大,以至于针对 TCP/IP 的传输优化存在一个很低的上限,甚至说 TCP/IP 不可优化。

可以这样理解,数据在主机生成直到网卡发送的时间是 ns 级(至多 us 级),数据被目标主机网卡接收直到被消费的时间亦 ns 级,在这期间的网络传输时间却没有任何保底承诺,且没有任何反馈承诺,这个时间从 us 到 s 不等,如此大的时延抖动跨度,任何附加手段均无能为力,即使最大强度最理想的流控和拥塞控制附加其上,也只能将抖动压缩至 5~10ms,这对于 400Gbps+ 高速网络依然不可接受,这是 TCP/IP 网络的属性,而非缺陷。

想获得极致性能(高吞吐,低时延,us 级抖动),TCP/IP 向左,你向右。

问题显然就是沙漏模型。胖端瘦网模型的意思是将控制全部移到主机,网络只负责无状态尽力而为转发,这种转发方案就是经典的 “基于最短路径的逐跳转发”。几乎所有优化都是在修补这个转发方案缺失的部分:

  • 无状态到有状态:优先级队列,状态队列,数据包分类,调度;
  • 逐跳转发到虚电路转发:MPLS,SR,SRv6;
  • 最短路径到多路径:ECMP,MP-XX,概率路由;
  • 无反馈到反馈:ECN, INT(Inband network telemetry),PFC;

但这些线性扩展行为从没有给出系统化解释,这就像分析农业或城市起源的单一原因一样,注定失败。另一方面,在尽力而为网络构建一个全新的传输框架时,会同时遇到兼容松散控制和无法获得信息这一推一拉的双面打击,你只能相信最短路径,又无法获得任何可承诺的信息,什么都做不了。

向右走,那么构建胖网络。但切忌在现有架构上增加更复杂,更智能的算法,到头来只是在寒冬给瘦网络提供了一件更厚的羽绒服而已,只是有了更稳固的支撑,而不是获得了天然御寒的能力。

网络的核心是拓扑,只有基于全互联规则拓扑构建的网络才能彻底打破僵局。该基础上的协议自然利用该基础的特征,而不是 IP + 4-layer-port 的 tuple 特征,在此基础上构建的交换机虽然还是交换机,但已经与以太网交换机有了本质不同。

仅举一例,单元非仅此一例。对比 NVSwitch 和以太网交换机,为防止端口 HoL 造成排队拥塞,两类交换机可基于同样的思路构建 VOQ,但本质区别在于实现的成本不同:

  • NVSwitch:直接通过内存地址映射,如 0x1000-0x2000 → 映射到 NVSwitch 的 VOQ_GPU0_Chunk1;
  • 以太网交换机:包分类算法将提取包 tuple 信息将其映射,需要复杂的算法权衡时空交换利弊;

很容易看到 “哪里不行补哪里” 的哲学,NVSwitch 以 GPU 内存事务为中心,而以太网交换机以网络传输协议为中心:
在这里插入图片描述
一个类比,尽力而为网络就像我们曾经拿着地图找路或一步一问路到达目的地,智能全在我们自己,而高速网络正适合我们如今叫网约车或开车导航到目的地,我们什么都不用管。

此前我提到等流长的数据在主机端自觉进入不同的队列(参见 数据中心隔离大象流,隔离网络流量)而不是让交换机分类,遭到了一众票嘲讽,我用不回应来回应。很多人仍将注意力集中在 “如何分类数据包” 上,觉得只是将分类的工作从交换机转移到了主机,所以根本不知道我在说什么,其实我的意思是将网络关注的中心从数据包转移到业务,这就好理解了。数据流多大规模,应用程序自己知道,所以无需任何算法启发分类,各就各位即可。

换句话说,让交换机看到的和业务看到的是同一个东西就是了,这就将整个网络汇集到了同一个命名空间,其实它们本来就在同一个命名空间,是 TCP/IP 隔离了它们,我们习惯了这种隔离而已。

看到同一个命名空间,高速网络非常清除数据的 sender 和 receiver 要干什么,交换机同样非常清除每个节点在阵列中如何等价多路径可达,那么聚合带宽的力量便不可小觑,如果出现多对一的 incast,交换机显然知道如何在多条路径均衡分发流量,甚至知道如何错开它们(比如暂存 VOQ?)。

由于直接映射业务命名空间而不是数据包序列空间,便可直接聚合带宽而不会面临聚合吞吐时必将面临的重排序等 HoL 问题,若映射数据包序列空间,则必须关注网络保序,因为在提交业务前必须终结网络数据包的保序承诺,若不跳跳谨慎保序,重排序压力将会压垮接收端主机。

传统网络数据包汇总了业务,但也隔离了业务,网络只能看到数据包,而数据包在 TCP/IP 网络设计之初就是适配最短单路径的,这直接阻碍了在传统网络进行多路径传输。

类似乱序重排问题,传统网络极力用精巧的算法弥补信息的缺失,然而要 O ( 1 ) O(1) O(1) 还是要用空间来换,传统网络只能看到映射进网络空间的数据包 tuple,所有计算都基于这些 tuple 去启发,每一跳引入的 1~5us 左右的计算延时就是效率低的根源,这也限定了以太网的效率极限。对待高速网络,交换机要去索引而不是计算,形象讲就是看不同 mark 做不同动作,看到 3 就直接入 3 号队列,而不是基于 3 去算出队列号。

现代操作系统的 MMU 是一个极好的索引而不查找例子。另外,对比 NVSwitch 和以太网交换机也是高尚的,但我几乎不写技术文档,此处还请自行搜索查阅。

任何 if 都要额外分支开销,如果提前知道,何不直接索引。关于 “交换机认业务而不是数据包” ,我想再说两句。这里举些例子。

先说域名解析,域名好记,IP 好处理,这些都是从书上学的,但实际上更深层次的意义在于 IP 处理更简单而不是更快,直接寻址域名肯定最快,只不过人和机器都不是纯粹追求更快,而是一个性价比。

再说找人,用身份证号找人还是用姓名,工作单位,住址找人,肯定是后者更快,但还是一样的理由,身份证就像数据包,处理起来更方便,统一。

再看城市道路,人民大街,解放大路好呢,还是经三路,纬五路,二道街,三道街好,另外,快速路出口,数字编号好呢,还是路名编号好,依据上面的理由,自己评判。

总而言之,更快和性价比更高之间永远都在玩跷跷板,要更快,就直接点,要更高性价比,就加个中间层解耦合,记住,宗旨就是节约 full-mesh。

现在飞机逐渐点对点了,枢纽大飞机慢慢退出了历史,人们从选择到哪里坐枢纽大飞机中转转换为空管如何调度家门口小国际机场小飞机点对点起降。

随着资源逐渐丰富,各领域都在逐渐从更高性价比向更快偏移,搞高速网络的咋就是转不过来呢,然而还是一边高低要抬个杠,一边又舔英伟达的皮夹克。

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

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

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

相关文章

Vue3 (数组push数据报错) 解决Cannot read property ‘push‘ of null报错问题

解决Cannot read property ‘push‘ of null报错问题 错误写法 定义变量 <script setup>const workList ref([{name:,value:}])</script>正确定义变量 <script setup>const workList ref([]) </script>解决咯~

React前端框架

React&#xff1a;构建现代用户界面的范式革命&#xff08;深度解析&#xff09; 引言&#xff1a;前端开发的范式转变 在2013年之前&#xff0c;前端开发领域被jQuery等库主导&#xff0c;开发者通过命令式编程直接操作DOM元素。这种模式存在两大痛点&#xff1a;代码可维护…

Redis:string数据类型

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Redis &#x1f525; String字符串 &#x1f9d1;‍&#x1f4bb; 字符串类型是Redis最基础的数据类型&#xff0c;关于字符串需要特别注意&#xff1a; ⾸先Redis中所有的键的类型都是字符串类…

获取 OpenAI API Key

你可以按照以下步骤来获取 openai.api_key&#xff0c;用于调用 OpenAI 的 GPT-4、DALLE、Whisper 等 API 服务&#xff1a; &#x1f9ed; 获取 OpenAI API Key 的步骤&#xff1a; ✅ 1. 注册或登录 OpenAI 账号 打开 https://platform.openai.com/ 使用你的邮箱或 Google/…

window安装docker\docker-compose

安装前配置 打开控制面板,参照下图打开“启动或关闭windows功能”,Hyper-V 和容器需要启用 程序和功能 启动或关闭windows功能 勾选Hyper-V 安装路径配置 Docker在Windows上的默认安装路径为C:\Program Files\Docker。 以管理员身份运行CMD在D盘,dev文件夹下创建Docker文…

Xxl-job——源码设计思考

摘要 本文深入探讨了XXL-Job框架的设计思考&#xff0c;分析了其不使用Lombok的Data注解的原因&#xff0c;包括明确控制代码结构、避免依赖侵入、增强可维护性和调试便利性、保持编译清晰以及遵循项目历史和团队编码规范。文章还详细介绍了XXL-Job的优化设计&#xff0c;包括…

九、【ESP32开发全栈指南: UDP通信服务端】

一、TCP与UDP核心差异 特性TCPUDP连接方式面向连接 (需三次握手)无连接可靠性可靠传输 (重传/排序/校验)尽力交付 (不保证可靠性)实时性延迟较高低延迟&#xff0c;实时性强传输效率协议开销大头部开销小 (仅8字节)连接类型点对点支持广播/多播资源占用高 (需维护连接状态)极低…

`mermaid-cli` 生成高分辨率 Mermaid 流程图(可以下载安装Typora更好 )的操作指南

以下是使用 mermaid-cli 生成高分辨率 Mermaid 流程图&#xff08;可以下载安装Typora更好 &#xff09;的操作指南 一、安装依赖&#xff08;需管理员权限&#xff09; 安装 Node.js v16 官网下载&#xff1a;Node.js 官方下载 验证安装成功&#xff1a; node -v # 应显…

LlamaFactory × 多模态RAG × Chat-BI:万字长文探寻RAG进化轨迹,打造卓越专业AI助手

你有没有想过&#xff0c;大模型如何更聪明地回答问题&#xff1f;&#x1f914; 当传统 RAG 遇上多模态与商业智能&#xff08;BI&#xff09;&#xff0c;会碰撞出怎样的火花&#xff1f;&#x1f914; 今天我们将围绕医学这个专业领域&#xff0c;一步步搭建出一个集众多本…

python打卡day47

特征图与注意力热图 知识点回顾&#xff1a; 不同CNN层的特征图&#xff1a;不同通道的特征图通道注意力后的特征图和热力图 特征图本质就是不同的卷积核的输出&#xff0c;浅层指的是离输入图近的卷积层&#xff0c;浅层卷积层的特征图通常较大&#xff0c;而深层特征图会经…

缓存一致性 与 执行流

上接多执行流系统中的可见性 在缓存一致性协议描述中&#xff0c;使用“处理器”或“CPU核心”比“执行流”更精确吗? 核心结论&#xff1a;在缓存一致性协议描述中&#xff0c;使用“处理器”或“CPU核心”比“执行流”更精确&#xff01; 你的直觉是正确的。 原因分析&am…

机器学习:load_predict_project

本文目录&#xff1a; 一、project目录二、utils里的两个工具包&#xff08;一&#xff09;common.py&#xff08;二&#xff09;log.py 三、src文件夹代码&#xff08;一&#xff09;模型训练&#xff08;train.py&#xff09;&#xff08;二&#xff09;模型预测&#xff08;…

Qt Test功能及架构

Qt Test 是 Qt 框架中的单元测试模块&#xff0c;在 Qt 6.0 中提供了全面的测试功能。 一、主要功能 核心功能 1. 单元测试框架 提供完整的单元测试基础设施 支持测试用例、测试套件的组织和执行 包含断言宏和测试结果收集 2. 测试类型支持 单元测试&#xff1a;对单个函…

零基础在实践中学习网络安全-皮卡丘靶场(第十一期-目录遍历模块)

经过前面几期的内容我们学习了很多网络安全的知识&#xff0c;而这期内容就涉及到了前面的第六期-RCE模块&#xff0c;第七期-File inclusion模块&#xff0c;第八期-Unsafe Filedownload模块。 什么是"遍历"呢&#xff1a;对学过一些开发语言的朋友来说应该知道&…

LLM 笔记:Speculative Decoding 投机采样

1 基本介绍 投机采样&#xff08;Speculative Sampling&#xff09;是一种并行预测多个可能输出&#xff0c;然后快速验证并采纳正确部分的加速策略 在不牺牲输出质量的前提下&#xff0c;减少语言模型生成 token 所需的时间 传统的语言模型生成是 串行 的 必须生成一个&…

Mysql批处理写入数据库

在学习mybatisPlus时&#xff0c;看到一个原本没用过的参数&#xff1a; rewriteBatchedStatementstrue 将上述代码装入jdbc的url中即可使数据库启用批处理写入。 需要注意的是&#xff0c;这个参数仅适用于MySQL JDBC 驱动的私有扩展参数。 作用原理是&#xff1a; 原本的…

数据类型--实型

C中的实型&#xff08;也称为浮点型&#xff0c;Floating Point Type&#xff09;用于表示带有小数部分的数值。 常见的实型有 float、double 和 long double&#xff0c;它们在精度和存储空间上有所不同。 1. 常见实型及其特性 类型字节数&#xff08;通常&#xff09;精度&…

引领AI安全新时代 Accelerate 2025北亚巡展·北京站成功举办

6月5日&#xff0c;网络安全行业年度盛会——"Accelerate 2025北亚巡展北京站"圆满落幕&#xff01;来自智库、产业界、Fortinet管理层及技术团队的权威专家&#xff0c;与来自各行业的企业客户代表齐聚一堂&#xff0c;围绕"AI智御全球引领安全新时代"主题…

coze平台创建智能体,关于智能体后端接入的问题

一、智能体的插件在coze平台能正常调用&#xff0c;在Apifox中测试&#xff0c;它却直接回复直接回复“人设”或“知识库”&#xff0c;你的提问等内容&#xff1a; 为什么会这样&#xff1f;&#xff1a; Coze官方的插件&#xff08;工具调用&#xff09;机制是“分步交互式”…

Shell编程核心符号与格式化操作详解

Shell编程作为Linux系统管理和自动化运维的核心技能&#xff0c;掌握其常用符号和格式化操作是提升脚本开发效率的关键。本文将深入解析Shell中重定向、管道符、EOF、输入输出格式化等核心概念&#xff0c;并通过丰富的实践案例帮助读者掌握这些重要技能。 一、信息传递与重定…