当前位置:网站首页>Advance Computer Network Review(1)——FatTree
Advance Computer Network Review(1)——FatTree
2022-07-06 08:56:00 【Zheyuan Zou】
这个系列是对21~22学年夏季学期高级计算机网络课程的复习提纲,这是本系列的第一篇:FatTree在数据中心中的使用,主要覆盖的内容如下:
1.拓扑结构和编址方案
2.路由算法,找出任意两个主机之间的路由路径
论文原文:《A Scalable, Commodity Data Center Network Architecture》SIGCOMM’08
一、拓扑结构和编址方案
首先这篇文章回顾了数据中心通信中存在的一些问题,然后针对这些问题提出了一种基于胖树(Fat Tree)的Clos拓扑来连接商品级以太网交换机。提出的架构如下,展示的是一个k元胖树(k=4)的架构图:
k元胖树架构具有如下特征:
1.有k个pods,每个pods包含2层,每一层包含有 k 2 \frac{k}{2} 2k个交换机。
2.每一个k口交换机, k 2 \frac{k}{2} 2k个端口直接在底部连接主机(hosts),剩下的 k 2 \frac{k}{2} 2k个端口向上连接到高层交换机。
3.最顶层的 ( k 2 ) 2 {(\frac{k}{2})}^2 (2k)2核心交换机也拥有k个端口,且第i个端口正好连接到第i个pod,所以pod聚合层中的连续端口以 k 2 \frac{k}{2} 2k的跨步连接到核心交换机(?,这点需要理解)。
4.k元胖树中对于位于不同pod中的主机,有 ( k 2 ) 2 {(\frac{k}{2})}^2 (2k)2条最短路径可选,但只有其中一条会被选。
下面再来看看在这个架构中的编址方案,首先原文中明确说,块中所有的IP地址均取自私有地址空间10.0.0.0/8中。编址方法依照设备位于不同的层次,可以分为以下三种情况:
1.pod中的交换机,对于这类交换机,编址方案为10.pod.switch.1,pod就是它所在的pod号,switch就是它在自身的pod中的编号,这个编号遵循从左向右,自底向上(注意左右的优先级高于上下)的编址顺序,取值范围是[0,k-1]。比如对于上面的示意图中的pod2,由4个交换机构成的网格中,编制空间就是[0,3],左下的就是0,右下就是1,左上就是2,右上的就是3。
2.核心交换机,对于这类交换机,编制方案为10.k.j.i,k就是元数,在示意图中k就是4。原文中说(j, i)指的是交换机在 ( k 2 ) 2 {(\frac{k}{2})}^2 (2k)2构成的核心交换机网格中的坐标,范围是[1, k 2 \frac{k}{2} 2k],从左上角开始编址。那其实上面这个示意图中,我们完全可以将核心交换机层看作一个2x2的正方形网格来编址。
3.主机(host),主机的编址方案是10.pod.switch.ID,pod,switch的含义与1中相同,不再赘述。ID则标明的是主机在其所在子网中的位置,取值范围是[2, k 2 + 1 \frac{k}{2} + 1 2k+1],自左向右编址,因为1被交换机占据了,255不能用。这里原文中还提到一句,每一个低层次交换机都负责一个含有 k 2 \frac{k}{2} 2k个主机的/24子网(k < 256)。
二、路由算法
这部分来讨论一下在上述的架构中如何完成路由选择。
1.pod内部的信息交换
首先,在一个pod中的交换机(无论低级还是高级)都保有本pod所辖的所有子网前缀,这也就意味着如果是一个pod内部的信息转发。那么这个信息在被转发到pod的高层交换机时就会被转发到对应的子网。
2.pod之间的信息交换
本文中所用的路由表是两级的,第一级使用前缀匹配,第二级采用后缀匹配。前缀匹配项用于pod内部路由,后缀匹配项用于pod之间的路由,而二级表在一级表中的记录是0.0.0.0/0。
这里面就涉及到对两种设备路由表的生成,一是pod里面的交换机,还有一个是核心交换机,它们生成路由表的算法不同。
首先看pod里的交换机,这里面同样分两种情况,一是位于顶层的交换机,还有一种是位于底层的交换机。
对于位于顶层的交换机,路由表生成算法如下:
其中3-5行这段代码是在为pod内部交换提供路由项,而6-9行是在pod之间的交换提供路由项,根据式子(i-2+z)mod(k/2)+(k/2)计算出的端口可以将跨pod访问指定主机的信息从正确的端口转发出去,模运算的目的是保证负载均衡。
对于位于底层的交换机,它不需要负责转发到子网,只负责转发到指定主机,所以3-5行的逻辑可以抹去,当然第二行的交换机编号也要动一下:
对于核心层的路由,路由表生成算法如下,其实就是对指定的pod,从指定的端口转发出去(之前说过核心交换机第i个端口正好连到第i个pod):
最后文中举了一个跨pod路由例子:
1.从10.0.1.2到10.0.1.1,由标准交换技术完成,因为10.0.0.1是源主机的网关。
2.10.0.0.1到10.0.2.1, 查二级路由表(后缀匹配,注意i=3),从相应端口传发出去。
3.10.0.2.1到10.4.1.2,查二级路由表,从相应端口转发出去。
4.从10.4.1.2到10.2.2.1,可以获得一级路由表中10.2.0.0/16的匹配,从而转发到pod2。
5.从10.2.2.1到10.2.0.1,因为此时已经和目的网络处于一个pod中,所以此时可以从一级路由表中获得匹配10.2.0.0/24。
6.从10.2.0.1到10.2.0.3,由标准交换技术完成。
这篇文章的梳理和学习到此结束。
边栏推荐
- Charging interface docking tutorial of enterprise and micro service provider platform
- Using label template to solve the problem of malicious input by users
- Revit secondary development Hof method calls transaction
- LeetCode:劍指 Offer 42. 連續子數組的最大和
- Esp8266-rtos IOT development
- SAP ui5 date type sap ui. model. type. Analysis of the parsing format of date
- 【ROS】usb_ Cam camera calibration
- R language ggplot2 visualization, custom ggplot2 visualization image legend background color of legend
- Nacos 的安装与服务的注册
- Li Kou daily question 1 (2)
猜你喜欢
I-BERT
UML圖記憶技巧
广州推进儿童友好城市建设,将探索学校周边200米设安全区域
Light of domestic games destroyed by cracking
Fairguard game reinforcement: under the upsurge of game going to sea, game security is facing new challenges
使用latex导出IEEE文献格式
Computer graduation design PHP Zhiduo online learning platform
Mise en œuvre de la quantification post - formation du bminf
BN折叠及其量化
IJCAI2022论文合集(持续更新中)
随机推荐
vb. Net changes with the window, scales the size of the control and maintains its relative position
[OC]-<UI入门>--常用控件-UIButton
Using pkgbuild:: find in R language_ Rtools check whether rtools is available and use sys The which function checks whether make exists, installs it if not, and binds R and rtools with the writelines
Chapter 1 :Application of Artificial intelligence in Drug Design:Opportunity and Challenges
R language ggplot2 visualization: place the title of the visualization image in the upper left corner of the image (customize Title position in top left of ggplot2 graph)
Computer cleaning, deleted system files
[embedded] print log using JLINK RTT
Using label template to solve the problem of malicious input by users
Bitwise logical operator
Mongodb installation and basic operation
The harm of game unpacking and the importance of resource encryption
LeetCode:673. Number of longest increasing subsequences
数字人主播618手语带货,便捷2780万名听障人士
Problems encountered in connecting the database of the project and their solutions
软件压力测试常见流程有哪些?专业出具软件测试报告公司分享
CSP first week of question brushing
Crash problem of Chrome browser
Fairguard game reinforcement: under the upsurge of game going to sea, game security is facing new challenges
@Jsonbackreference and @jsonmanagedreference (solve infinite recursion caused by bidirectional references in objects)
Show slave status \ read in G_ Master_ Log_ POS and relay_ Log_ The (size) relationship of POS