Fat Tree 分析

news/2024/5/18 17:00:20/文章来源:https://blog.csdn.net/weixin_44639164/article/details/126950178

本文是源于USTC Advance Computer Network 的课程内容做的总结

论文来源:A scalable, commodity data center network architecture

本文将分析Fat Tree的 拓扑结构、编址方案和路由算法三个方面。

拓扑结构

该文章中从传统数据中心通信的问题提出了FatTree的拓扑结构来连接以太交换机。提出的结构如下(图示为一个参数K=4的 FatTree):

在这里插入图片描述

对于参数为K的FatTree有如下特征:

  • Pod: 有K个Pod,每个Pod包含2层Switch,每层k/2个Switch。

  • 边缘层Edge:其Switch有K个输出端口,

    • 前k/2个输出端口从左往右的顺序依次连接主机,
    • 后k/2个输出端口依次连接聚合层Aggregation的Switch。
  • 聚合层Aggregation:其Switch有K个输出端口,

    • 前k/2个输出端口从左往右的顺序依次连接边缘层Edge的Switch,
    • 后k/2个输出端口依次连接核心层Core的Switch,从左往右优先级每个Switch分配k/2个核心层Switch。
  • 核心层Core:有(k/2)^2个Switch,呈二维(j,i)阵列,

    • 每个Switch的Port 编号连接对应Pod,K个Port从左往右顺序连接K个Pod;
    • 具体到Pod中的Switch时,阵列第j行的Switch均连向聚合层的第j个Switch。
  • 主机Hosts:不同Pod的hosts之间有(k/2)2个最短路径,只使用其中一条,每条路有5跳(核心层有(k/2)2个Switch选择)。

注意:1.每个Switch交换机均相同为K个输入输出端口(降低网络成本);2.支持在横向拓展的同时拓展路径数目。

编址方案

  • 网络中所有的地址均在私有空间10.0.0.0/8中。

  • Pod交换机:编码为 10.${Pod}.${Switch}.1

    • Pod表示所在的Pod号,范围[0,k-1]。
    • Switch:表示在某Pod中的Switch编号,编号规则为从左到右,自底向上的优先顺序,范围是[0,k-1](如图示中,左下10.0.0.1,右下10.0.1.1,左上10.0.2.1,右上10.0.3.1)。
  • 核心交换机(core):编码为 10.${k}.${j}.${i},在上图中k=4,(j,i)表示Switch在core中的坐标,i\j范围[1,k]。

  • 主机(host):编码为10.${pod}.${switch}.${ID},pod switch 同上述规则,表示属于哪一个Pod,与哪一个边缘层edge的Switch相连;ID为所处子网的位置,范围[2,k/2+1],从左往右编址(由于1已经被Switch占用,故ID从2开始)

路由算法

FatTree的路由算法特点是两层路由表(前缀匹配路由表,后缀匹配路由表),向上使用两层路由,向下使用一层前缀匹配路由。

在这里插入图片描述

由上图,二级后缀路由表在一级前缀路由表中的记录是0.0.0.0/0。

该路由算法涉及三层(核心层、聚合层、边缘层)路由器的路由表生成算法。

聚合层Aggregation

其路由算法如下图伪代码:

  • 第一行是对所有Pod循环,编号范围是[0,k-1]

  • 第二行对 聚合层 的Switch循环,编号范围是[(k/2),k-1]

  • 第3~5行是对每一个 边缘层Edge 的Switch循环,连接该聚合层的Switch到边缘层的Switch;第4行中表示将第i个边缘层Switch连接到该聚合层Switch的输出Port i

  • 第6~9是将该聚合层Switch向外输出到核心层Core,用于跨子网Pod的通信;根据(i-2+z)mod(k/2)+(k/2)计算出的端口可以将跨pod访问指定主机的信息从正确的端口转发出去,模运算的目的是保证负载均衡。(注意计算公式恰好是通过i和z的偏移映射到对应的核心层Core的Switch)

在这里插入图片描述

边缘层Edge

边缘层Switch的路由算法和聚合层的大致相同,区别在于无需向下路由(向下到host按照标准路由模式),同时Switch z伪代码的取值范围改变为其编号范围。

  • 第6~9行同上也一样的负载均衡映射模式,只是出口变为了向上连接到聚合层的Switch。
    在这里插入图片描述
核心层Core

核心层Switch的路由表生成算法如下图伪代码

  • j\i表示对Core阵列Switch坐标遍历

  • 第3~5行是对指定的pod,从指定的端口转发出去(本文第一部分中说明核心Switch Port i正好连到第i个Pod)
    在这里插入图片描述

案例

如下图,需要从Pod0中的10.0.1.2发送一帧信息到目的host 10.2.0.3
在这里插入图片描述

  1. 10.0.1.2 to 10.0.1.1:由标准路由完成,因为10.0.1.1是主机网管。
  2. 10.0.1.1 to 10.0.2.1:查前缀路由表进入0.0.0.0/0的二级后缀路由表查到0.0.0.3/8在Port 2出(由代码6~9行表明,i=3,z=1,算出port=2,端口0、1映射下面主机,端口2、3映射聚合层Switch,从左往右2表示10.0.2.1)。
  3. 10.0.2.1 to 10.4.1.2:查前缀路由表进入0.0.0.0/0的二级后缀路由表查到0.0.0.3/8在Port 3出(由代码6~9行表明,i=3,z=2,算出port=3,端口0、1映射下面edge的Switch,端口2、3映射Core Switch第0行第0、1个,从左往右3表示10.4.1.2)。
  4. 10.4.1.2 to 10.2.2.1: 由前缀路由表匹配的到Pod值为2,发送到第2个Pod;由于j=1,故发送给Pod2中第1个Switch 10.2.2.1
  5. 10.2.2.1 to 10.2.0.1: 由前缀表匹配到(代码3~5行中i=0),指向第0个Edge层Switch 10.2.0.1
  6. 10.2.0.1 to 10.2.0.3:标准路由技术

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

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

相关文章

机器学习——聚类(K-Means)

机器学习——聚类(K-Means)那是什么 无监督学习——聚类聚类是基于相似对象将一组对象分组为类/类别的过程。聚类是一部分 无监督学习 .这种方法通常用于确定业务决策,特别是在基于来自集群的数据预测来预测正确的业务策略时。聚类还可用于异常检测、客户细分和改善客户服务…

食品行业中的 AI 和 ML 用例

食品行业中的 AI 和 ML 用例人工智能和机器学习为每个行业的进步铺平了道路。这些技术的使用帮助他们优化和自动化流程,降低成本和时间要求,减少人为错误的可能性。让我们了解采用基于 AI 和 ML 的技术如何使食品行业受益。Photo by 阿诺塞诺纳 on 不飞溅 由农民和各种企业…

持续集成持续交付

目录 一、Git工具 二、git安装 三、git使用 三、gitlab代码仓库 四、jenkins持续集成 五、Jenkins自动构建docker镜像,并上传至harbor仓库 六、Jenkins连接docker构建主机 七、jenkins结合ansible 一、Git工具 git简介 1).Git特点: • 速度 • 简…

PHP在线教育平台源码 网课小程序源码

在线教育知识付费平台 网课小程序源码 教育直播网校小程序源码 开发环境:PHP MYSQL 源码包含:PC小程序公众号 H5 需要绑定对接公众号 本套源码程序适合做视频图文结合的知识付费平台。带分销功能,多种分销方式自由设置(可快速积…

通关GO语言22 网络编程:Go 语言如何通过 RPC 实现跨平台服务?

在上一讲中,我为你讲解了 RESTful API 的规范以及实现,并且留了两个作业,它们分别是删除和修改用户,现在我为你讲解这两个作业。 删除一个用户比较简单,它的 API 格式和获取一个用户一样,但是 HTTP 方法换…

二、JumpServer堡垒机管理员手册

JumpServer是一款非常简单好用的开源堡垒机,本文根据实际生产案例编辑的管理员手册,列出了JumpServer常用功能。JumpServer可以很好的保护公司内部服务器,并满足等保2.0安全需求。 目录 一、堡垒机用户创建 二、创建特权用户 三、创建普通…

金字塔思维

背景 1、大脑偏爱有规律的信息 2、把问题想全,同时可以深入 1 方法: 1.1 识别纵向信息逻辑: 被动接受了大量杂乱信息,通过金字塔思维识别信息的逻辑关系 1.2 横向分类:信息归类整理 穷尽所有要素、对要素进行分类…

docker、docker-compose部署oracle,plsql连接远程oracle

一、docker部署oracle 1. 下载镜像并启动容器 # 拉取阿里oracle_11g的镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g # 创建容器并启动 docker run -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g 2.…

我们该如何运营Facebook账号呢?

社交媒体带来的流量转化是巨大的,这也就是为什么跨境电商卖家会转战到社媒的原因了。我们经常会发现一个帖子突然就火了,那么这个帖子的相关产品都得到了极大的推广,其曝光率也是难以想象的,那么由此带来的转化也常常令人欣喜若狂…

间主任的烦恼① | 基于BOM的配套检查,保障生产不断线

王部长:(桌上电话铃声响起,王部长接完电话后说,)“小智,我们装配车间的张主任,这打电话来,又在说配套缺件问题。这周就要启动装配了,现在领料发现还有20种零件没有库存。…

CentOS系统磁盘的分区格式化和挂载操作

一、磁盘分区和格式化 lsblk命令查看挂载硬盘的情况,一下情况表示为分卷,需要先分卷,再格式化,然后再进行挂载。 分卷命令:fdisk /dev/vdb 输入n 输入p和1,直接回车 最后输入w保存。 格式化磁盘&#x…

USB摄像头驱动分析

1.构造一个usb_driver 2.设置 probe:2.1.分配video_device:video_device_alloc2.2 设置.fops.ioctl_ops (里面需要设置11项)如果要用内核提供 的缓冲区操作函数,还需要构造一个videobuf_queue_ops2.3.注册: video_register_device id_table:表示支持哪些…

基于单片机的指纹密码锁系统

目录 第1章 概述............................................................................................................ 6 1.1 指纹识别技术的发展................................................................................... 6 1.2 指纹识别原理......…

mirai登陆失败反复验证码或提示登录存在安全风险的解决方法

对于没有服务器的同学,可以进入官网领取免费1个月的轻量云服务器:云产品免费试用;需要选购的进:轻量应用服务器专场;不清楚怎么操作的可以看教程:腾讯云产品免费试用教程 转载请注明出处:小锋学…

Word控件Spire.Doc 【页面设置】教程(4) 如何在文档中插入分节符

在 Microsoft Word 中,您可以通过在所需位置插入分节符轻松地将文档拆分为多个部分,从而允许您对这些部分应用不同的格式或布局选项。如果您需要执行以下任何任务,Microsoft Word 中的分节符可能是天赐之物: 为文档的每个部分使用…

MySQL高级:(二)存储引擎

笔记来源:MySQL数据库教程天花板,mysql安装到mysql高级,强!硬! 文章目录2.1 存储引擎基本概念2.2 InnoDB:具备外键支持功能的事务存储引擎2.3 MyISAM:主要的非事务处理存储引擎2.3 Archive&…

Cannot get a STRING value from a NUMERIC cell poi异常解决;easy-poi;jeecg-boot-poi

Cannot get a STRING value from a NUMERIC cell poi异常解决;easy-poi;jeecg-boot-poi 出现原因: 在集成jeecg-boot框架开发之后 使用jeecg-boot-auto-poi (封装的easy-poi)导入数据时 因为excel中有函数表达式出现的错误 导入的代码 而在源码中CellValueServer这一个类,在…

如何用dos命令关闭端口

1、首先以管理员并且cmd,打开dos对话窗口 2、通过:netstat -aon|findstr 8080 找到PID码3、通过:taskkill /f /pid 35552 PID码,终止进程4、到这也就终止完成啦,是不是很简单呢?

2021 ICPC Southeastern Europe Regional Contest(更新至五题)

2021 ICPC Southeastern Europe Regional Contest A题签到 A. King of String Comparison 题意:给两个字符串,找出有多少对(l,r),满足在l到r区间内,s1的子串字典序小于s2的子串字典序。 思路…

手写 Vuex4.x 核心(Vuex源码实现)

通过 vuex 实现 TodoList : 我们先做一个小的 TodoList 的案例,应用 vuex 来实现,然后逻辑跑通之后再在此的基础上我们一点点手写自己的 vuex ,进而实现和原来一样的效果。 采用 vite 创建项目: yarn create vite v…