网络简史-基于图论的网络

先看一幅图:
在这里插入图片描述

如图,我们对类似 crossbar,banyan tree,b-tree,10-tree,256-tree,甚至 dcn fat-tree 等 “规则拓扑” 网络相当熟悉。规则拓扑网络中,地址信息被编码到拓扑本身,寻址简单直接,像路由表,MMU 页表,也都是规则拓扑结构。

但这种规则拓扑结构只适合中心化控制,比如一个物理盒子里,一个自封闭的系统中。先看 crossbar,它提到它的缺点,可扩展性属其一,它的交叉点是接入节点平方增长的,但一般对一个端口固定的盒子而言,这倒不是问题,再如 banyan 网络就是用阻塞时间换空间,而空间换时间的方案就是规则树了,要么占地方,要么阻塞。

把这些规则结构拆开,每一级结构分离开几十上百公里后,“规则拓扑” 就不再适用,我们可从以太网交换机返祖到 csma/cd 看到这一点。

地理距离意味着控制信号传播时延与数据传输时延处在完全一致的量级上,控制方式必然趋向去中心化,而统计复用几乎是唯一选择。反之,一枚交换芯片不过几厘米,控制系统将在低于数据传输时延至少 3 个数量级完成路由与交换。

在分时系统统计复用的计算机方式和程控中心交换的电信方式融合过程中,中心控制和统计复用之争一直存在,这也是 ATM 出现并失败的理由。

盒子里约束大,拆开盒子把零件散落在外,约束降低,就不能有太多假设,编址寻址从控制拓扑解耦的结果只能是 “逐跳路由”,因为你若想分布式控制下下一跳乃至更远,复杂度将是指数级,由此可见,“best effort” 就是 “逐跳路由” 自然而然的推论。

举个例子,一个公司十个人挤在一间办公室(盒子)工作,彼此靠走动和喊就能协同,瞅一眼就能看出谁在忙而解决同步问题,倘若这十个人分布在全国十个省的分公司,就要更多自我决策而定期同步了,因为出差和电话开销太大,即使当代顶流互联网公司,也要不断面对经理 “我在另一个会上” 这种真实的谎言。

解耦后的网络就是一张拓扑和一套控制该拓扑的算法,便是 “基于图论的网络”,而图论则是一个完整的数学分支,整张网络的行为和特征用它建模。

图论有两大类问题,其一是 “最短路径问题”,考虑 cost,其二是 “最大流最小割问题”。考虑 gain,它们一起构建了高效率的现代数据传输网络的理论基石。

和 E_best = max(gain / cost) 一致,高尚的做法是关注 “最大流 / 最短路径”,而不是其中一个。然而网络性能的研究领域似乎一直要么只关注最短路径,要么只关注最大流。我们的 tcp/ip 路由从一开始就构建在 “最短路径优先” 之上,最多加和权重,而构建在此原则之上的 tcp/ip 协议族显然天生就与 “多路径最大流” 相违背。

先看最短路径,以 Dijkstra 算法为例,它是一个贪心策略,2010 年写过一篇 Dijkstra算法的思想,“一直最努力,结局就不会差”,这就是贪心的动机,如果有一些更加松弛的贪心策略,配合更加松弛的最大流算法,互联网传输效率将彻底改观。在早期那篇文章中,正确性归纳没说清,这里补充:
在这里插入图片描述

而最大流的简易理解如下图,来自 Frank R Giordano 的《数学建模》第八章:
在这里插入图片描述

结合最短路径和最大流,每条路径都可以是靠割掉瓶颈后的下一条 Dijkstra 路径,于是就形成了上图的多路径,结合 multipath 协议,就构成了一个高效的传输网络。

在互联网技术演化过程中,最开始基于最短路径构建网络是历史使然。

最短路径适用于单路径简单场景,可让网络设备如路由器快速做出决策,选择最佳路径来转发数据包。这种方法简化了路由表维护,使路由过程更加高效和快速,尤其是在早期网络或大规模网络中,寻找延迟最小,跳数最小的路径有效地降低了传输能耗,数据报文待在网络的每一单位时间都意味着能耗。

最大流算法虽然也是本着高效为出发点,但它是正向反馈,最大流算法不适合直接用于互联网的实时路由选择,特别在早期网络算力不足时,大规模网络实时收敛要消耗大量资源,大大增加路由实现的复杂性,而我们知道,best effort 首要关注廉价的可用性,而不是奢侈的精益求精。

但上面两段的分析对数据中心可是要反过来的。

数据中心善部 sdn,而中心控制的 sdn 配合丰富的算力,小规模且规则拓扑(fat tree,spine-leaf )网络最大流实时收敛可在 ms,甚至 100us 级完成。在数据中心,和广域网常相反,甚至时空因素都相反,此前我说数据中心网络更像主机主板组件的扩展,而不是广域网的微缩,大概就是从规则拓扑和中心控制的角度提出的,

呼应文初的历史观,在规则拓扑,中心控制,百米尺度的共同作用下,最大流路由为主,最短路径为辅助为最大流迭代路径,才能为 multipath 协议铺路背书吧。

ecmp 则永远都在单路径最短路径的阴影下。

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

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

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

相关文章

每天复习一点小CTF知识(6.4)

NSSCTF/[FSCTF 2023]夜深人静的时候也会偷偷emo 直接爆破压缩包,先来数字 解压好,一个flag.mp3 mp3隐写,直接干 得一个txt文件直接开

2024最新破解版CorelDRAW解锁设计新境界!

在当今快速变化的市场环境中,品牌之间的竞争愈发激烈。为了在众多品牌中脱颖而出,企业需要不断地提升自身的品牌形象和市场识别度。而在这个过程中,视觉设计起到了至关重要的作用。一款优秀的设计软件不仅能帮助设计师轻松地将创意想法变成现…

【全网唯一】触摸精灵iOS版纯离线本地文字识别插件

目的 触摸精灵iOS是一款可以模拟鼠标和键盘操作的自动化工具。它可以帮助用户自动完成一些重复的、繁琐的任务,节省大量人工操作的时间。但触摸精灵的图色功能比较单一,无法识别屏幕上的图像,根据图像的变化自动执行相应的操作。本篇文章主要…

《平渊》· 捌 —— 「庄子」山木篇中的 “空船效应”

《平渊》 捌 "若能虚己以游世,其孰能害之?" "方舟而济于河,有虚船来触舟,虽有惼心之人而不怒;有一人子其上,则呼张歙之;一呼而不闻,再呼而不闻,于是三呼邪…

热烈祝贺2024年重庆市建筑电气学术年会圆满成功

芳菲四月花似锦,正是人间好时节,4月26日, 24年重庆市建筑电气学术年会在重庆维景国际大酒店举办。会议主题是“智慧 低碳 绿色 安全 ”。会上业内专家就建筑电气行业的新技术、市场趋势和未来发展展开探讨与深入交流。 本次会议邀请重庆市建筑电气行业主…

vue中实现一个时间选择器的级联框,第一层小时,第二层分钟

最近在做一个考勤系统时&#xff0c;新增班次的时候需要设置打卡时段&#xff0c;类似如下效果&#xff1a; 1、封装自定义组件Time.vue 接收参数有endHour(范围结束的小时数)、endMinute(最后一小时结束的分钟数)等&#xff0c;根据具体需求变动 <template><div&…

【代码+详解】算法题 : 最大公约数

❗❗❗必看: 下列题我全部都使用 Java 语言写的,并且均可以提交成功,获得Accepted 结果的. 如果代码和详解看了之后,对答案有任何疑问,都可以在评论区提出来,我都会一个一个回答. ❗❗❗感谢大家的支持,如果喜欢我的博客,关注 点赞 收藏 评论一波,非常感谢!!! 文章目录 题目&…

低代码和零代码软件时代质量管理(QM)和质量管理系统(QMS)

【前言】 质量控制过程的目的是为了确保产品的制造标准得到保持和改进。质量控制过程使公司能够满足客户的期望&#xff0c;同时确保产品质量的一致水平。采用这些标准创造了一种公司文化&#xff0c;鼓励所有员工努力实现高质量的生产标准。低代码和零代码软件可以成为质量控…

6.4学习总结

Codeforces Round 950 (Div. 3)A、B题解 解题思路 开一个数组来记录A,B,C,D,E,F,G难度题目出现的次数&#xff0c;因为每一轮比赛都需要每一种难度都有一题&#xff0c;所以我们只要根据要出的比赛的轮数对每一个难度的题目进行自减&#xff0c;最后遍历数组把所有为负数的题目…

vscode编译文件夹下所有文件的配置(包含插件和 .json 文件)

文章目录 我所使用的插件.json 文件配置1. c_cpp_properties.json2. launch.json3. settings.json4. tasks.json 如何运行 我所使用的插件 红框中的五个插件是必备的&#xff0c;其中 Code Runner 插件可以在写完一个 .c 或 .cpp 文件后&#xff0c;按下 Crtl R 快捷键快速编…

12-学生们参加各科测试的次数(高频 SQL 50 题基础版)

12-学生们参加各科测试的次数 -- 学生表中&#xff0c;id是唯一的&#xff0c;将他作为主表 -- CROSS JOIN产生了一个结果集&#xff0c;该结果集是两个关联表的行的乘积 -- 2行表,与3行表使用cross join,得到2*36行数据 select st.student_id, st.student_name,su.subject_na…

zdppy_api 中间件请求原理详解

单个中间件的逻辑 整体执行流程&#xff1a; 1、客户端发起请求2、中间件拦截请求&#xff0c;在请求开始之前执行业务逻辑3、API服务接收到中间件处理之后的请求&#xff0c;和数据库交互&#xff0c;请求数据4、数据库返回数据5、API处理数据库的数据&#xff0c;然后给客户…

计算机基础(3)——计算机系统组成

&#x1f497;计算机基础系列文章&#x1f497; &#x1f449;&#x1f340;计算机基础&#xff08;1&#xff09;——计算机的发展史&#x1f340;&#x1f449;&#x1f340;计算机基础&#xff08;2&#xff09;——冯诺依曼体系结构&#x1f340;&#x1f449;&#x1f34…

透视亚马逊云科技中国峰会:生成式AI全面提速,加速行业应用落地

导读&#xff1a;亚马逊云科技在中国&#xff0c;生成式AI与行业化战略齐头并进。 “亚马逊云科技致力于成为企业构建和应用生成式AI的首选。” 近日2024亚马逊云科技中国峰会上&#xff0c;亚马逊全球副总裁、亚马逊云科技大中华区总裁储瑞松分享了亚马逊云科技中国业务最新进…

嵌入式Linux系统编程 — 1.4 原子操作与竞争冒险

目录 1 竞争冒险 1.1 竞争冒险由来 1.2 竞争冒险理解 2 原子操作 2.1 O_APPEND 实现原子操作 2.2 pread()和 pwrite() 2.3 O_EXCL 标志创建文件 1 竞争冒险 1.1 竞争冒险由来 Linux 是一个支持多任务和多用户同时运行的操作系统&#xff0c;它允许多个进程同时执行。…

京东笔试-校招

2022京东数据分析笔试&#xff08;0821&#xff09; 一、选择题&#xff1a;30道 1.解决数据不平衡的方法主要有&#xff08;pca&#xff1f;&#xff09; 2.等频&#xff08;等宽&#xff09;划分问题 3.参数估计&#xff1a;矩估计与极大似然估计的用法&#xff0c;问题分…

kill 不管用时,类型为C

当使用nvidia-smi时看到类型为C的进程时&#xff0c;使用 kill -9 PID&#xff0c;却不管用&#xff0c;这时需要先使用如下命令&#xff0c;找出运行的脚本对应的所有PID: ps -aux | grep train.py 接着就会把train.py对应运行的进程全部展示出来&#xff1a; 接着就是使用 …

25、DHCP FTP

DHCP 动态主机配置协议 DHCP定义&#xff1a; 服务器配置好了地址池 192.168.233.10 192.168.233.20 客户端从地址池当中随机获取一个ip地址&#xff0c;ip地址会发生变化&#xff0c;使用服务端提供的ip地址&#xff0c;时间限制&#xff0c;重启之后也会更换。 DHCP优点&a…

android-JNI

1.2【静态库】的特点&#xff1a; &#xff08;.a&#xff09; ①静态库对函数库的链接是在编译期完成的。执行期间代码装载速度快。 ②使可执行文件变大&#xff0c;浪费空间和资源&#xff08;占空间&#xff09;。 ③对程序的更新、部署与发布不方便&#xff0c;需要全量更新…

【TB作品】msp430g2553单片机,OLED,PCF8591,ADC,DAC

硬件 OLED PCF8591 /** OLED* VCC GND* SCL接P2^0* SDA接P2^1*//** PCF8591* VCC GND* SCL接P1^4* SDA接P1^5*//* 板子上按键 P1.3 *//* 单片机ADC输入引脚 P1.1 *//* 说明&#xff1a;将PCF8591的DAC输出接到单片机ADC输入引脚 P1.1&#xff0c;单片机采集电压并显示 */功能…