数据中心网络随想-电路交换
数据中心网络扩容并不容易,涉及设备上架,切换等又硬又大的动作,期间对所有应用都会产生影响,所以理论上 “加钱加硬件” 这种看起来很简单的事实际上真不如 “写一个随时部署升级的端到端拥塞控制算法” 更容易实施。
傍晚绕小区跑步时感悟,一个不算老的小区,美中不足的是环绕小区的小路上分布着停车位,人车分流改造并不难,道路下面挖下去和地下停车场接通,小区入口开个车库口子即可。但工程上的容易只有先开工才能说,如果没开工,就没工程的事了。问题恰是如何开工,谁出钱,为什么出钱,肯不肯出钱,钱到位,大家能不能忍受施工期的噪声,灰土,围栏等不便,考虑到现状虽然不完美,至少还算 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 域”,在其中部署电路交换机进行带宽动态分配:

先说这么多。
浙江温州皮鞋湿,下雨进水不会胖。
相关文章:
数据中心网络随想-电路交换
数据中心网络扩容并不容易,涉及设备上架,切换等又硬又大的动作,期间对所有应用都会产生影响,所以理论上 “加钱加硬件” 这种看起来很简单的事实际上真不如 “写一个随时部署升级的端到端拥塞控制算法” 更容易实施。 傍晚绕小区…...
并行执行线程资源管理方式——《OceanBase 并行执行》系列 3
在某些特定场景下,由于需要等待线程资源,并行查询会遇到排队等待的情况。本篇博客将介绍如何管理并行执行线程资源,以解决这种问题。 《OceanBase并行执行》系列的内容分为七篇博客,本篇是其中的第三篇。 一并行执行概念二如何手…...
数据库系统概论(个人笔记)(第二部分)
数据库系统概论(个人笔记) 文章目录 数据库系统概论(个人笔记)2、关系模型简介2.1 关系数据库的结构2.2 数据库模式2.3 键2.4 模式图2.5 关系查询语言2.6 关系代数 2、关系模型简介 2.1 关系数据库的结构 Structure of Relational…...
WebView基础知识以及Androidx-WebKit的使用
文章目录 摘要WebView基础一、启动调整模式二、WebChromeClient三、WebViewClient四、WebSettings五、WebView和Native交互 Androidx-WebKit一、启动安全浏览服务二、设置代理三、安全的 WebView 和 Native 通信支持四、文件传递五、深色主题的支持六、JavaScript and WebAssem…...
解锁AI写作新纪元的文心一言指令
解锁AI写作新纪元的文心一言指令 在人工智能(AI)飞速发展的今天,自然语言处理(NLP)技术取得了显著的进步。文心一言,作为NLP领域的一颗璀璨明星,以其强大的文本生成和指令理解能力,为…...
前端学习——工具的使用
文章目录 1. 引入一个组件需要什么步骤2. 监听变量的修改3. async与await实现异步调用4. position: relative5. 定时执行方法 1. 引入一个组件需要什么步骤 引入一个组件,一定不要加{} (对)import editForm from “./component/editForm”; …...
图的拓扑序列(BFS_如果节点带着入度信息)
way:找入度为0的节点删除,减少其他节点的入度,继续找入度为0的节点,直到删除完所有的图节点。(遍历node的neighbors就能得到neighbors的入度信息) #include<iostream> #include<vector> #incl…...
Linux常用指令集合
ls显示目录文件 选项: -a 所有文件(all所有) -l 详细信息(Information信息)(自动包含-1) 所以常用 ll -1 一行只输出一个文件。 -R 列出所有子目录下的文件。…...
前端 JS 经典:为什么需要模块化
首先,自我评定一下,一个 js 文件,各位兄弟,最多能掌控多少行,什么意思呢,就是说,一个 js 文件在多少行之内,你是可以清楚的知道这个 JS 实现了哪些业务逻辑,并对这些业务…...
MySQL:某字段追加随机数
在MySQL中,你可以使用UPDATE语句结合随机函数RAND()来为某个字段追加随机数。以下是一个示例,假设我们有一个表my_table,其中有一个字段my_field,我们想要为这个字段追加一个介于1到100之间的随机数: UPDATE my_table…...
研发管理-选择研发管理系统-研发管理系统哪个好
选择研发管理系统-研发管理系统哪个好 选择研发管理系统时,并没有一个绝对的“最好”的系统,因为每个企业的需求和情况都是独特的。然而,我可以向您介绍一些在市场上广受欢迎且功能强大的研发管理系统,供您参考: 1、彩…...
学校NTP时钟系统(时间同步系统)方案助力建设智慧校园
学校NTP时钟系统(时间同步系统)方案助力建设智慧校园 学校NTP时钟系统(时间同步系统)方案助力建设智慧校园 建设智慧校园也意味着校内网络设备和服务器剧增,如何保障智慧校园内各数字系统时序一致、维稳运行成为一大难…...
HTML中打开窗口的类型及使用方法
HTML中打开窗口是Web开发中常用的功能之一,可以通过不同的方式打开窗口,以满足不同的需求。本文将介绍HTML中打开窗口的类型及使用方法。 一、使用target属性打开窗口 target属性是HTML中打开窗口最常用的方式之一,可以通过设置target属性的…...
【userfaultfd+条件竞争劫持modprobe_path】TSGCTF 2021 -- lkgit
前言 入门题,单纯就是完成每日一道 kernel pwn 的 kpi 😀 题目分析 内核版本:v5.10.25,可以使用 userfaultfd,不存在 cg 隔离开启了 smap/smep/kaslr/kpti 保护开启了 SLAB_HADNERN/RANDOM 保护 题目给了源码&…...
StNet: Local and Global Spatial-Temporal Modeling for Action Recognition 论文阅读
StNet: Local and Global Spatial-Temporal Modeling for Action Recognition 论文阅读 Abstract1 Introduction2 Related Work3 Proposed Approach4 Experiments5 Conclusion 文章信息: 原文链接:https://ojs.aaai.org/index.php/AAAI/article/view/4…...
SpringBoot解决CORS跨域——WebMvcConfigurationSupport
前端请求后端报错了。 状态码:403 返回错误:Invalid coRs request 增加配置类WebMvcConfig Configuration public class WebMvcConfig extends WebMvcConfigurationSupport {Overridepublic void addCorsMappings(CorsRegistry registry) {// 允许跨域…...
Linux之内存管理-malloc \kmalloc\vmalloc\dma
1、malloc 函数 1.1分配内存小于128k,调用brk malloc是C库实现的函数,C库维护了一个缓存,当内存够用时,malloc直接从C库缓存分配,只有当C库缓存不够用; 当申请的内存小于128K时,通过系统调用brkÿ…...
PyTorch中定义自己的数据集
文章目录 1. 简介2. 查看PyTorch自带的数据集(可视化)3. 准备材料3.1 图片数据3.2 标签数据 4. 方法 1. 简介 尽管PyTorch提供了许多自带的数据集,如MNIST、CIFAR-10、ImageNet等,但它们对于没有经验的用户来说,理解数据加载器的工作原理以及…...
助力数字农林业发展服务香榧智慧种植,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建香榧种植场景下香榧果实检测识别系统
作为一个生在北方但在南方居住多年的人,居然头一次听过香榧(fei)这种作物,而且这个字还不会念,查了以后才知道读音(fei),三声,这着实引起了我的好奇心,我相信…...
2024 年 4 月区块链游戏研报:市场低迷中活跃用户数创新高
2024 年 4 月区块链游戏研报 作者:stellafootprint.network 数据来源:GameFi 研究页面 2024 年 4 月,Web3 游戏领域在经历 3 月创纪录的表现后,迎来了显著波动。比特币自历史高位回调,月跌幅达到 10.4%。与此同时&a…...
Llama-3.2V-11B-cot效果展示:漫画分镜连续性与叙事逻辑分析
Llama-3.2V-11B-cot效果展示:漫画分镜连续性与叙事逻辑分析 1. 模型能力概览 Llama-3.2V-11B-cot是基于Meta多模态大模型开发的专业级视觉推理工具,特别针对漫画分镜分析与叙事逻辑理解进行了深度优化。该模型在双卡4090环境下展现出强大的视觉推理能力…...
Qwen3-TTS语音合成5分钟快速部署:10种语言+方言一键搞定
Qwen3-TTS语音合成5分钟快速部署:10种语言方言一键搞定 1. 快速部署指南 1.1 系统环境准备 在开始前,请确保您的系统满足以下基本要求: 操作系统:支持Linux/Windows/macOSPython版本:3.8-3.10内存:至少…...
ViTConvMAE-B(NeurIPS 2022)目标检测、实例分割模型环境配置ViTConvMAE-B(NeurIPS 2022)目标检测、实例分割模型数据集调整ViTConvMAE-B(Ne
ViTConvMAE-B(NeurIPS 2022)目标检测、实例分割模型环境配置 ViTConvMAE-B(NeurIPS 2022)目标检测、实例分割模型数据集调整 ViTConvMAE-B(NeurIPS 2022)目标检测、实例分割模型代跑训练 ViTConvMAE-B&…...
Wan2.2-I2V-A14B镜像安全加固:禁用root登录+API密钥认证+访问白名单
Wan2.2-I2V-A14B镜像安全加固:禁用root登录API密钥认证访问白名单 1. 镜像安全加固的必要性 Wan2.2-I2V-A14B作为高性能文生视频模型,其私有部署镜像承载着重要的AI推理任务。在开放网络环境中运行时,系统安全防护不容忽视。未经加固的镜像…...
免费Figma中文界面插件终极指南:3分钟告别英文设计工具
免费Figma中文界面插件终极指南:3分钟告别英文设计工具 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 你是否曾经因为Figma的英文界面而感到困惑?每天在设计时不…...
揭秘Zotero PDF Translate离线翻译方案:学术研究数据安全新范式
揭秘Zotero PDF Translate离线翻译方案:学术研究数据安全新范式 【免费下载链接】zotero-pdf-translate Translate PDF, EPub, webpage, metadata, annotations, notes to the target language. Support 20 translate services. 项目地址: https://gitcode.com/gh…...
N_m3u8DL-CLI-SimpleG:跨平台M3U8视频下载工具全场景应用指南
N_m3u8DL-CLI-SimpleG:跨平台M3U8视频下载工具全场景应用指南 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG 一、场景定位:用户能力与需求匹配模型 三级…...
为什么高端芯片都爱用Flip Chip?对比Wire Bonding的5大优势详解
为什么高端芯片都爱用Flip Chip?对比Wire Bonding的5大优势详解 在芯片封装领域,Flip Chip(倒装芯片)技术正逐渐成为高端应用的标配。想象一下,当你手持最新款智能手机,流畅运行着复杂的AI应用时࿰…...
终极SyntaxHighlighter CDATA处理指南:如何实现完美的XML兼容性
终极SyntaxHighlighter CDATA处理指南:如何实现完美的XML兼容性 【免费下载链接】syntaxhighlighter SyntaxHighlighter is a fully functional self-contained code syntax highlighter developed in JavaScript. 项目地址: https://gitcode.com/gh_mirrors/sy/s…...
OpenClaw+Phi-3-mini-128k-instruct:自动化代码审查系统
OpenClawPhi-3-mini-128k-instruct:自动化代码审查系统 1. 为什么需要个人级代码审查助手 作为独立开发者,我经常陷入这样的困境:在GitHub上提交PR后,要么苦等同事review,要么自己反复检查代码质量。传统CI工具只能做…...
