CLOS架构

news2025/1/10 11:04:57

CLOS Networking

CLOS Networking 是指使用 Clos 网络拓扑结构(Clos Network Topology)进行网络设计的一种方法。该方法是由贝尔实验室的工程师 Charles Clos 在1950年代提出的,以解决电路交换网络的可扩展性和性能问题。随着现代计算和网络技术的发展,Clos 网络拓扑被广泛应用于数据中心网络架构,特别是在大规模数据中心中。

Clos 网络通常由多个层级的交换机(或者路由器)组成,常见的层级包括:

  • 叶子层(Leaf Layer):连接服务器的第一层交换机。
  • 脊骨层(Spine Layer):连接叶子层交换机的核心交换机。
  • 超级脊骨层(Super-Spine Layer)(不常见, 仅在非常大规模的数据中心中):进一步连接多个脊骨层交换机。

主要特点和优点包括:

  • 高性能与低延迟:多路径设计支持多种并行数据流,减少瓶颈。
  • 可扩展性强:网络可以通过增加交换机来水平扩展,以满足不断增长的带宽需求。
  • 冗余与容错性:多条路径提供高冗余性,提升网络的可靠性和容错能力。
  • 均衡负载:可以实现有效的流量分布和负载均衡,优化网络资源的利用。

在现代数据中心,CLOS 网络架构通常采用协议如ECMP(Equal-Cost Multi-Path)和SDN(Software-Defined Networking)来增强网络的灵活性和管理效率。
总结来说,CLOS Networking 是一种高度可扩展、性能优越并且具有高可靠性的网络设计方法,被广泛应用于现代大型数据中心中。

Spine-Leaf架构

Spine-Leaf 架构是数据中心网络拓扑,它由两个交换层组成,分别是 Spine 和 Leaf。Leaf 层由接入交换机组成,这些交换机会对来自服务器的流量进行汇聚并直接连接到 spine 或网络核心。Spine 交换机可以一种全网格拓扑与所有 leaf 交换机实现互连。

传统上,数据中心网络基于三层模型:

  • 接入交换机连接到服务器
  • 聚合或分布交换机为接入交换机提供冗余连接
  • 核心交换机提供聚合交换机之间的快速传输,通常以冗余对的形式连接,以实现高可用性

在这里插入图片描述

Spine-Leaf拓扑结构的其他常见差异包括:

  • 去除了生成树协议 (STP)
  • 相对于网络主干的模块化模型,固定端口交换机的使用增加
  • 考虑到更高的互连数量,需要购买和管理更多电缆
  • 基础设施的横向扩展与纵向扩展
    在这里插入图片描述

为什么 Spine-Leaf架构越来越受欢迎?

鉴于云和容器化基础设施在现代数据中心的普及,东西向流量持续增加。东西向流量横向移动,从服务器到服务器。这种转变主要是由于现代应用程序的组件分布在更多的服务器或 VM 上。

对于东西向流量,具有低延迟、优化的流量流对于性能来说是必不可少的,尤其是对于时间敏感或数据密集型应用程序。Spine-Leaf架构通过确保流量始终与其下一个目的地的跳数相同来帮助实现这一点,因此延迟更低且可预测。

由于不再需要 STP,容量也有所提高。虽然 STP 支持两台交换机之间的冗余路径,但任何时候都只能有一台处于活动状态。因此,路径通常会被超额预订。相反,Spine-Leaf架构依靠等成本多路径 (ECMP) 协议来平衡所有可用路径上的流量,同时仍能防止网络环路。

除了更高的性能之外,Spine-Leaf拓扑还提供了更好的可扩展性。可以增加额外的 Spine 交换机,并连接到每个 Leaf 交换机,增加容量。同样,当端口密度成为问题时,可以无缝插入新的 Leaf 交换机。无论哪种情况,基础设施的这种“横向扩展”都不需要对网络进行任何重新架构,并且不会出现停机。

胖树(Fat-Tree)型网络架构

在 2008 年由美国加利福尼亚计算机科学与工程的几位教授发表的一篇论文《A scalable, commodity data center network architecture》中,明确的提出了一种三级的,被称之为胖树(Fat-Tree)的 CLOS 网络架构,标志着 CLOS 正式进入数据中心网络架构领域,这是 CLOS 网络模型的第三次应用。

当前,Fat-Tree 是业界普遍认可的实现无阻塞网络的技术。其基本理念是:使用大量低性能的交换机,构建出大规模的无阻塞网络,对于任意的通信模式,总有路径让他们的通信带宽达到网卡带宽。Fat-Tree 的另一个好处是,它用到的所有交换机都是相同的,这让我们能够在整个数据中心网络架构中采用廉价的交换机。

Fat-Tree 是无带宽收敛的:传统的树形网络拓扑中,带宽是逐层收敛的,树根处的网络带宽要远小于各个叶子处所有带宽的总和。而 Fat-Tree 则更像是真实的树,越到树根,枝干越粗,即:从叶子到树根,网络带宽不收敛。这是 Fat-Tree 能够支撑无阻塞网络的基础。
在这里插入图片描述
如上图所示,为了实现网络带宽的无收敛,Fat-Tree 中的每个节点(根节点除外)都需要保证上行带宽和下行带宽相等,并且每个节点都要提供对接入带宽的线速转发的能力。

下图是一个 2 元 4 层 Fat-Tree 的物理结构示例(2 元:每个叶子交换机接入 2 台终端;4 层:网络中的交换机分为 4 层),其使用的所有物理交换机都是完全相同的。
在这里插入图片描述
从图中可以看到,每个叶子节点就是一台物理交换机,接入 2 台终端;上面一层的内部节点,则是每个逻辑节点由 2 台物理交换机组成;再往上面一层则每个逻辑节点由 4 台物理交换机组成;根节点一共有 8 台物理交换机。这样,任意一个逻辑节点,下行带宽和上行带宽是完全一致的。这保证了整个网络带宽是无收敛的。同时我们还可以看到,对于根节点,有一半的带宽并没有被用于下行接入,这是 Fat-Tree 为了支持弹性扩展,而为根节点预留的上行带宽,通过把 Fat-Tree 向根部继续延伸,即可实现网络规模的弹性扩展。

Fat-Tree 拓扑示例

在这里插入图片描述

假设一个 k-ary(每个节点有不超过 k 个子节点)的三层 Fat-Tree 拓扑:

  • 核心交换机个数 (k/2)^2
  • POD 个数 k
  • 每个 POD 汇聚交换机 k/2
  • 每个 POD 接口交换机 k/2
    每个接入交换机连接的终端服务器 k/2
    每个接入交换机剩余 k/2 个口连接 POD 内 k/2 个汇聚交换机,每台核心交换机的第 i 个端口连接到第 i 个 POD,所有交换机均采用 k-port switch。

可以计算出,支持的服务器个数为 k * (k/2) * (k/2) = (k^3)/4,不同 POD 下服务器间等价路径数 (k/2) * (k/2) = (k^2)/4。上图为最简单的 k=4 时的 Fat-Tree 拓扑,连在同一个接入交换机下的服务器处于同一个子网,他们之间的通信走二层报文交换。不同接入交换机下的服务器通信,需要走路由。

Fat-Tree 的缺陷

Fat-Tree 的扩展规模在理论上受限于核心层交换机的端口数目,不利于数据中心的长期发展要求;
对于 POD 内部,Fat-Tree 容错性能差,对底层交换设备故障非常敏感,当底层交换设备故障时,难以保证服务质量;
Fat-Tree 拓扑结构的特点决定了网络不能很好的支持 One-to-All及 All-to-All 网络通信模式,不利于部署 MapReduce、Dryad 等高性能分布式应用;
Fat-Tree 网络中交换机与服务器的比值较大,在一定程度上使得网络设备成本依然很高,不利于企业的经济发展。
因为要防止出现 TCP 报文乱序的问题,难以达到 1:1 的超分比。

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

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

相关文章

SpringBoot基础(一):快速入门

SpringBoot基础系列文章 SpringBoot基础(一):快速入门 目录 一、SpringBoot简介二、快速入门三、SpringBoot核心组件1、parent1.1、spring-boot-starter-parent1.2、spring-boot-dependencies 2、starter2.1、spring-boot-starter-web2.2、spring-boot-starter2.3、…

YOLOv10改进 | 主干篇 | YOLOv10引入CVPR2023 顶会论文BiFormer用于主干修改

1. 使用之前用于注意力的BiFormer在这里用于主干修改。 YOLOv10改进 | 注意力篇 | YOLOv10引入BiFormer注意力机制 2. 核心代码 from collections import OrderedDict from functools import partial from typing import Optional, Union import torch import torch.nn as n…

C++:vector容器

概览 std::vector是C标准模板库(STL)中的一种动态数组容器。它提供了一种类似于数组的数据结构,但是具有动态大小和更安全的内存管理。 定义和基本特性 std::vector是C标准库中的一 个序列容器,它代表了能够动态改变大小的数组。与普通数组一样&#x…

酒店智能插座在酒店智慧化中的重要性

在当今数字化和智能化的时代,酒店行业也在不断追求创新和提升服务品质,以满足客人日益增长的需求。酒店智能插座作为酒店智慧化的重要组成部分,发挥着不可忽视的作用。 提升客人的便利性: 酒店智能插座能够为客人提供更加便捷的充…

使用 Java Swing 的 IMEI 验证器

一.介绍 本文档介绍如何使用 Java Swing 创建一个简单的 IMEI 验证器应用程序。 二.什么是 IMEI 号码 IMEI 代表国际移动设备识别码。IMEI 用于在移动设备连接到网络时对其进行识别。每个 GSM、CDMA 或卫星移动设备都有唯一的 IMEI 号码。此号码将印在设备电池组件内。用户可…

Flutter GPU 是什么?为什么它对 Flutter 有跨时代的意义?

Flutter 3.24 版本引入了 Flutter GPU 概念的新底层图形 API flutter_gpu ,还有 flutter_scene 的 3D 渲染支持库,它们目前都是预览阶段,只能在 main channel 上体验,并且依赖 Impeller 的实现。 Flutter GPU 是 Flutter 内置的底…

Python3 第六十六课 -- CGI编程

目录 一. 什么是 CGI 二. 网页浏览 三. CGI 架构图 四. Web服务器支持及配置 五. 第一个CGI程序 5.1. HTTP 头部 5.2. CGI 环境变量 六. GET和POST方法 6.1. 使用GET方法传输数据 6.1.1. 简单的url实例:GET方法 6.1.2. 简单的表单实例:GET方法…

暑期数据结构 空间复杂度

3.空间复杂度 空间复杂度也是一个数学表达式,是对一个算法在运行过程中临时占用存储空间大小的量度。 空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。空间复杂度计算规则基本跟…

SAM2:在图像和视频中分割任何内容

SAM 2: Segment Anything in Images and Videos 一、关键信息 1. SAM 2概述: SAM 2 是一种基础模型,设计用于在图像和视频中实现可提示的视觉分割。该模型采用变压器架构和流式内存进行实时视频处理。它在原始的Segment Anything Model(SAM…

自用 K8S 资源对象清单 YAML 配置模板手册-1

Linux 常用资源对象清单配置速查手册-1 文章目录 1、Pod 容器集合2、Pod 的存储卷3、Pod 的容器探针4、ResourceQuota 全局资源配额管理5、PriorityClass 优先级类 管理多个资源对象清单文件常用方法: 使用 sed 流式编辑器批量修改脚本键值进行资源清单的创建&am…

【高中数学/函数/值域】求f(x)=(x^2+1)^0.5/(x-1) 的值域

【问题】 求f(x)(x^21)^0.5/(x-1) 的值域 【来源】 《高中数学解题思维策略》P3 例1-1 杨林军著 天津出版传媒集团出版 【解答】 表达式说明f(x)(x^21)^0.5/(x-1)f(x)((x^21)/(x-1)^2)^0.5准备采用配方法f(x)(12/(x-1)2/(x-1)^2)^0.5(1)式f(x)(2*(1/(x-1)1/2)^21/2)^0.5(2)…

Pytorch系列-张量的类型转换

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 张量转换为NumPy数组 使用Tensor.numpy()函数可以将张量转换为ndarray数组 # 1.将张量转换为numpy数组 data_tensortorch.tensor([2,3,4]) # 使用张量对象中的numpy函数进行转…

LiveNVR监控流媒体Onvif/RTSP常见问题-页面上传SSL证书配置开启 HTTPS 服务?什么时候必须要开启HTTPS服务?

LiveNVR常见问题-页面上传SSL证书配置开启 HTTPS 服务?什么时候必须要开启HTTPS服务? 1、配置开启HTTPS1.1、准备https证书1.2、配置HTTPS端口1.3、配置证书路径1.3、 页面上传SSL证书 2、验证HTTPS服务3、为什么要开启HTTPS4、RTSP/HLS/FLV/RTMP拉流Onv…

Vue3+TS+element plus实现一个简单列表页面

期望完成效果 1.创建一个api api内容: 根据接口: 修改 url 和 函数的参数 以及 params里的内容 import { request } from "/utils/service" /** 查 */ export function getDyLogDataApi(page: any, limit: any, campaign_id: any, adgroup_id…

使用Packer构建镜像

什么是Packer Packer 是一个强大的工具,它可以帮助我们轻松地构建各种类型的镜像,如虚拟机镜像、Docker 镜像等。 Packer 的工作原理是通过定义一个配置文件,该文件描述了要构建的镜像的特征和要求。然后 Packer 使用这个配置文件来执行一系…

思迈特软件与海量数据库、红莲花安全浏览器完成兼容互认证

近期,思迈特软件信创认证喜讯传来,思迈特商业智能与数据分析软件[简称:Smartbi Insight] V11在数据库、浏览器产品兼容互认取得新突破,Smartbi Insight V11分别同海量数据库G100管理系统[简称:Vastbase G100] V2.2、红…

Java中的线性搜索

一.介绍 在本文中,我们将讨论或描述 Java 线性搜索。这是最简单的搜索方法。在此方法中,在列表中按顺序搜索要搜索的元素。此方法可应用于已排序或未排序的列表。 二.线性搜索(顺序搜索) 列表/数组的顺序搜索从列表/数组的开头…

Coco-LIC基于ubuntu的vscode进行断点调试

1、下vscode和插件 参考这个也行 https://zhuanlan.zhihu.com/p/704522656 2、编译debug版本并修改json 要在 Visual Studio Code (VSCode) 中进行断点调试 ROS 任务,你需要进行以下几个步骤: ### 1. 安装所需插件 - **C/C 插件**: 提供对 C 代码的调试…

day13-测试自动化之Selenium的元素定位

一、如何进行元素定位 1.1.元素定位作用 让程序操作指定元素,就必须先找到此元素 1.2.html页面组成格式 1.3.元素定位的概念 元素定位就是通过元素的信息或元素层级结构来定位元素的。 二、浏览器开发者工具 2.1.作用 快速定位元素,查看元素信息 2.2.谷…

《Advanced RAG》-06-探索RAG技术 Query Rewriting

摘要 详细阐述了多种查询重写技术,这些技术用于在检索增强生成(RAG)中优化查询和文档之间的语义匹配。 首先,介绍了假设文档嵌入(HyDE)方法,它通过生成假设文档并将其与原始查询结合&#xff0c…