数据中心网络随想-电路交换

news2025/1/17 0:28:26

数据中心网络扩容并不容易,涉及设备上架,切换等又硬又大的动作,期间对所有应用都会产生影响,所以理论上 “加钱加硬件” 这种看起来很简单的事实际上真不如 “写一个随时部署升级的端到端拥塞控制算法” 更容易实施。

傍晚绕小区跑步时感悟,一个不算老的小区,美中不足的是环绕小区的小路上分布着停车位,人车分流改造并不难,道路下面挖下去和地下停车场接通,小区入口开个车库口子即可。但工程上的容易只有先开工才能说,如果没开工,就没工程的事了。问题恰是如何开工,谁出钱,为什么出钱,肯不肯出钱,钱到位,大家能不能忍受施工期的噪声,灰土,围栏等不便,考虑到现状虽然不完美,至少还算 ok,何必多此一举,这个工程也就永远开不了工了。

所以说企图重构数据中心甚至互联网架构的想法都是纸上谈兵,企图重构底层协议的想法也是纸上谈兵。重构必须有厂商携带产品与资本甚至政令加持,即使如此,看看 ipv6 的部署过程,温言在口大棒在手也不好使。

从小区地面停车位不好人车分流可以看出,很多问题之所以不修正,并不是它不好修正,而是因为现状没有太糟糕,而现状恰恰是从 “最开始” 到现在的积累。很多工程类问题问 “为什么会怎样?” 时,答案很简单,“因为它一开始就这样”,可能是深思熟虑的设计,也可能是偶然。积重难返的结果是安土重迁。

tcp/ip 分组交换网已有 40 多年历史,作为一种 “新样式” 的网络技术,电路交换被贴上 “旧技术” 的标签,分组交换机替换了程控电路交换机,每个端口以固定速率接收和发出一系列分组,如果发生多个端口往一个端口发送分组,则用 buffer 暂存冲突分组,排队论为这一切提供理论支撑。

分组交换网络持续迭代成了现在复杂的互联网,但本质上还是 “每个端口以固定比特率接收和发出一系列分组,如果发生多个端口往一个端口发送分组,则用 buffer 暂存冲突分组”,电路交换被彻底抛在脑后,谁提谁就是开倒车。

然而大多数技术都是老技术的重新组合,要换一个视角理解电路交换而不是彻底抛弃它。

接下来从拥塞控制的视角重新理解电路交换,先从问题说起。

如今应对网络拥塞多数是反馈拥塞信息,待 sender 事后收缩,这种端到端的方法有固有滞后性,且对短突发无效,所以我才多次提到按突发长度分流的方法。

另外,我们认识到,传输前多花一个额外 rtt 请求链路预留资源来置换直接传输后可能的拥塞排队时间和丢包重传时间,看起来也划算,但如果是一系列短突发,额外的一个 rtt 在总时延的占比就会很高,不如一把梭哈赌一把,很可能就直接成功了,如果后续仍有数据传输,再预留资源,或在继续传输前,先考虑配额,homa 就是这思路。不管怎样,信息滞后性无可改变,而解决方案也都自带把戏性质。

再深究一下,为什么在拥塞了之后无法让报文立即绕行另一条路,或更直接一点,为什么不能立即申请更大带宽。我们发现原来分组交换导致了这问题本身,而它远不是解决该问题的方案,排队论的队列长度永远不会为 0。

核心原因是,“每个端口以固定比特率接收和发出一系列分组,如果发生多个端口往一个端口发送分组,则用 buffer 暂存冲突分组”,如果立即绕路,在新路上仍然会递归遭遇拥塞导致拥塞扩散,甚至死锁(与 pfc 大差不差),而端口比特率固定意味着无法动态申请新带宽,比如无法将隔壁 40Gbps 端口空闲的 20Gbps 带宽划到拥塞端口。

下图是一个传统的例子:
在这里插入图片描述

总体看来,无论是 ecmp,还是流量工程,或者端到端拥塞控制,本质上都在对流量本身下手,所谓调度的是流量,过程中的带宽是一定的,还是老的方法论,横竖颠倒一下就香了,流量锁住,调度带宽啊。

电路交换 low 吗?不,新技术大多都是旧事重组合,换个方式用电路交换就高尚了,让程序去接线调度带宽,回归程控交换机。要是不明白,面包板是电路交换的好例子。

如果网线直接插入面包板而不是插入交换机端口,面包板矩阵的通断受程序控制,这面包板就是一台新样式程控交换机了,它本质上就在不断执行接线,断线工作,将某些链路导通从而提供新带宽。

回到最初的问题,拥塞就是端口带宽不够用了,如何将隔壁空闲带宽划过来。

这又是一个解耦合问题,分组交换机只执行分组路由,而带宽资源划分通过电路交换机执行 “面包板接线” 完成:
在这里插入图片描述

分组交换机只负责可达性,电路交换机为分组交换机的可达流量分配以及调度带宽资源,达到最大化资源利用率。两类交换机通过信令交互,比如分组交换机告诉电路交换机哪个端口队列过长,电路交换机从空闲资源中分配链路带宽并接通,反馈给分组交换机结果,开启新的端口。

电路交换机事实上可改变拓扑布线,实现逻辑 clos 到物理直连之间的任意形态。胖树的每一层都应该接一个面包板来解耦合可达性和带宽分配。

那么问题来了,带宽以多大粒度来分配。这是一个话题。

比如带宽以 10Gbps 为粒度,一台传统分组交换机上行端口有 10 个,每个 40Gbps 的话,上行端口带宽总和就是 400Gbps,改成支持电路交换分配带宽的新式交换机的话,则需要 40 根链路接入 “面包板”,每根 10Gbps,10 个端口所需的带宽在这 40 根链路中按需动态分配。

计算很简单,总 4000Gbps 带宽就是 400 根线缆,如果按 5Gbps 为分配粒度,就是 800 根,一共接入 40 台交换机的话,就是 320000 根线缆,“面包板” 上将密密麻麻,而面包板内部的电路交换机的任务就是调度这些线缆之间的接通和断开。

事情并没有不可收拾,反而这可能本就是趋势。前面也提到过,摩尔定律在芯片尺寸继续变小到足以产生量子效应时已不再有效,主机网卡在追平交换机带宽过程中,主机始发流量持续增加,交换机只能通过并行化提高交换容量满足主机的大流量需求,除此之外不能再指望提高单端口能力。

未来的交换机可能就是进出很多线缆,因为单根线缆接入的单端口带宽已经无法再像以前那样指数级增长了。然而这成千上万的线缆(姑且叫 subline)并非如我们肉眼所见,它们有自己的方式集成捆绑在一起,从交换机引出,插入电路交换机,肉眼可见的只有一根线缆(subline 的集合),比以前还要更简单:
在这里插入图片描述

我此前觉得如果真的交换机端口 400Gbps x 8 了,是聚合它们使用呢,还是用 multipath 协议管理它们呢。如果聚合起来将会失去弹性,比如它们空闲时很难被其它端口使用,如果用 mp 协议管理,可想而知这协议将非常复杂。其实用电路交换就行,让专门的程序去管理,而分组交换机的 buffer 队列时间正好为信令的交换和电路的通断提供了缓冲时间。

以下是一个场景:

  • 交换机 A 端口 p1 拥塞,对端为交换机 B 端口 p1 ,队列长度 100 告警;
  • 交换机 A 端口 p1 触发信令 s1,需申请 5Gbps 带宽;
  • 电路交换机处理 s,断开空闲的交换机 A 端口 p2-3 和交换机 B 端口 p4-2,接通二者,回复信令 s2;
  • 交换机 A 将 p2-3 加入 p1,交换机 B 将 p4-2 加入 p1;
  • 交换机 A 端口 p1 队列逐渐清除,拥塞解除。

要点是,通过控制并行拓展的线缆(即 subline)的通断使带宽资源完全池化(但有最小粒度),分配机制的具体操作很简单:

  • 分别在连通拥塞源和目标的 subline 中各找一根空闲的;
  • 断开找到的这两根 subline 分别的对端,将二者接通;
  • 将 subline 归属拥塞端口,带宽分配结束。

以 subline 分配带宽的过程就像分配内存 page 一样,完全可编程。

dcn 和广域网不同之处在于它全局可观测,而 sdn 控制器可根据观测的结果指标控制电路交换机,动态均衡各个链路的带宽负载,这是分组交换机通过信令主动申请带宽的补充。

而对于广域网,虽然在拓扑上它远没有 dcn 规整,但也可以将某个子网(易拥塞子网,比如那些过境流量多突发大象流的子网)划为一个 “subline 域”,在其中部署电路交换机进行带宽动态分配:
在这里插入图片描述
先说这么多。

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

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

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

相关文章

OpenAI春季发布会-免费多模态GPT4O-简介

前言 2024.5.14,OpenAI宣布即将发布一款性能更为强大的大模型GPT4o,虽然没有爆出些超级酷炫无敌吊炸天的新玩意,但是这次的多模态模型,大家可以免费用了~~(但是) 虽然是免费使用,但官方发布会上…

sentinel搭建及使用

1.添加依赖(版本可依赖于父pom) SentinalResource注解: 添加依赖: blockhandler: fallback:

Python 全栈体系【四阶】(四十二)

第五章 深度学习 九、图像分割 3. 常用模型 3.2 U-Net(2015) 生物医学分割是图像分割重要的应用领域。U-Net是2015年发表的用于生物医学图像分割的模型,该模型简单、高效、容易理解、容易定制,能在相对较小的数据集上实现学习…

分析 vs2019 c++ 中的 decltype 与 declval

(1) decltype 可以让推断其参数的类型。按住 ctrl 点击 decltype ,会发现无法查阅 其定义 : (2) 但 STL 库里咱们可以查阅函数 declval 的 定义,很短,摘抄如下: templat…

linux服务器测试NVIDIA显卡性能

1.测试环境 一台Linux服务器电脑(可联网) NVIDIA显卡 注意:仅仅测试浮点运算性能和内存带宽 2.安装测试软件 2.1检查驱动版本 输入指令nvidia-smi,主要是判断显卡驱动有没有安装。如果指令存在可显示如下: luhos…

MySql初学日记

MySql基础 概述 结构化查询语言(Structure Query Language)简称SQL。 是一种特殊的,标准的数据库编程语言,,一般的数据库管理系统都支持,用于对数据库进行增删改查等操作,实现数据持久化到本地。 使用完整的管理系…

[Fork.dev] 增加用idea打开

用Fork做git管理工具时, 只有vscode 和sublime 等. 没有idea的. 今天研究了下如何操作.记录一下 点击 Action 文本框进行编辑 Path填写idea的执行位置. Parameters: 填写 ${repo:path} 代表用idea打开的文件夹路径为当前. 最终显示效果

我是学生,申请加入!KubeBlocks 首次参与开源之夏,前沿技术、丰厚奖金、大牛导师等你来!

滴滴!KubeBlocks 参加今年的开源之夏了!现诚邀您一起探索优质开源社区,通过实战提升研发能力,快来报名项目,赢取奖金和证书吧! 开源之夏是什么? 开源之夏是中国科学院软件研究所发起的“开源软…

汇智知了堂布局鸿蒙生态:推出南向设备开发课程,助力物联网人才培养

随着重庆市在鸿蒙原生应用开发上的积极推进,包括上游新闻、新重庆、华龙网在内的多家传媒巨头携手华为开发者联盟,引领本地传媒业深入探索鸿蒙生态。在此背景下,汇智知了堂积极响应政府与行业的号召,宣布即日起正式开发鸿蒙南向设…

Flutter 玩转动画 + 自定义View 实现积分或金币领取流程动画

一、效果图 二、主要涉及的知识点 AnimationController、Animation、FractionalTranslation 动画Api的运用CustomPainter 自定义View以及每个时机的把握 主要是写篇博客来记录一下这个功能的实现,具体代码就看源代码了,有疑问可以私信沟通 源代码下载…

微服务熔断降级

什么是熔断降级 微服务中难免存在服务之间的远程调用,比如:内容管理服务远程调用媒资服务的上传文件接口,当微服务运行不正常会导致无法正常调用微服务,此时会出现异常,如果这种异常不去处理可能导致雪崩效应。 微服…

无货源做抖音小店怎么找货源?怎么判断厂家是不是源头厂家?

大家好,我是喷火龙 抖音小店无货源玩法最重要的就是找货源,找有优势、稳定、靠谱的供应链。 这篇文章就给大家讲一讲怎么去找货源,怎么找到真正的源头厂家。 一、怎么找货源? 无货源商家找货源在1688、多多上面可能会多点,因…

易图讯科技数字武装三维电子沙盘

深圳易图讯科技(www.3dgis.top)集成了高清卫星影像、地形数据、实景三维模型、基干民兵、普通民兵、重要目标、兵要地志、企业潜力 、行业潜力 、社会组织潜力 、特种装备器材潜力、敌情数据、现场环境数据、物联感知信息,构建一体化的数字孪生空间,实现…

被动防护不如主动出击

自网络的诞生以来,攻击威胁事件不断涌现,网络攻防对抗已然成为信息时代背景下的一场无硝烟的战争。然而,传统的网络防御技术,如防火墙和入侵检测技术,往往局限于一种被动的敌暗我明的防御模式,面对攻击者无…

CAD看图软件有哪些?这几款新手也能用

CAD看图软件有哪些?在工程设计、建筑制图、机械制造等领域,CAD(计算机辅助设计)看图软件是不可或缺的工具。然而,对于新手来说,选择一款合适的CAD看图软件可能会有些困难。那么,今天小编就来介绍…

【Linux】认识文件(四):文件系统,inode,以及软硬连接

【Linux】认识文件(四):文件系统,inode,以及软硬连接 一.磁盘(仅了解)1.组成2.CHS寻址 二.抽象化磁盘(仅了解)三.文件系统1.什么是文件系统2.ext2文件系统的结构i.Date blocksii.Block Bitmapiii.inode1.inode Table2.inode Bitmap iiiii.GDT…

VC 编程开发中的 封装类 :log日志类 和SQL server 操作类 源代码

VC 编程开发中的 封装类 :日志类 和SQL server 操作类 源代码 在VC(Visual C)开发中,日志文件输出是一个至关重要的环节,它对于程序调试、问题排查以及系统监控等方面都具有不可替代的作用。以下是对日志文件输出在VC开…

阿里云ECS服务器实例挂载数据盘步骤(磁盘自动挂载.、访问挂载点)

阿里云ECS服务器实例挂载数据盘步骤 相关指令 df -h 查看磁盘空间 du -sh * 查看使用内存大小1.磁盘自动挂载 首先登录阿里云ECS服务器,通过 df -h 命令查看当前磁盘挂载情况 通过 fdisk -l 命令查看磁盘情况,可以发现有两个盘: 系统盘 …

Weblogic WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628)

1 漏洞概述 CVE-2018-2628 是 Oracle WebLogic Server(WLS)核心组件中的一个反序列化命令执行漏洞。此漏洞允许未授权的用户通过 T3 协议在远程服务器上执行任意命令,从而可能完全控制受影响的服务器。 2 影响版本 该漏洞影响了以下版本的…

java 并发线程应用

java 并发线程相关 线程状态 新建(NEW): 创建后尚未启动。可运行(RUNABLE): 正在 Java 虚拟机中运行。但是在操作系统层面,它可能处于运行状态,也可能等待资源调度(例如处理器资源),资源调度完成就进入运行状态。所以该状态的可运行是指可以被运行,具体有没有运行要看底层…