在前两篇文章中,我提出了自动化的问题并概述了其框架,在第二篇文章中,我将重点放在网络虚拟化上,这是使服务配置自动化的第一种方法。
现在是时候绘制物理网络图了。
如果您对数据中心网络的设备不满意,那么我强烈建议您从
有关它们的
文章开始。
所有问题:
本系列中描述的实践应适用于任何类型,规模,任何厂商的网络(否)。 但是,无法描述这些方法的通用示例。 因此,我将重点介绍DC网络的现代体系结构:
Klose Factory 。
DCI将在MPLS L3VPN上运行。
来自主机的覆盖网络运行在物理网络的顶部(可以是OpenStack VXLAN或Tungsten Fabric或仅需要网络中的基本IP连接的其他任何东西)。

在这种情况下,我们得到了一个相对简单的自动化方案,因为我们有许多以相同方式配置的设备。
我们将在真空中选择球形DC:
- 设计的一个版本随处可见。
- 两个供应商组成了网络的两个平面。
- 一个DC就像另一个DC,就像两滴水。
目录内容
例如,让我们的LAN_DC服务提供商主持有关卡住的电梯中生存情况的培训视频。
在超大城市中,它非常流行,因此有很多物理机器。
首先,我将大致按照自己的意愿描述网络。 然后,我将其简化为实验室。
物理拓扑
地点
LAN_DC将具有6个DC:
- 俄罗斯( RU ):
- 西班牙( SP ):
- 中国( CN ):

内部DC(内部DC)
在所有DC中,基于Clos拓扑的相同内部连接网络。
Klose是什么样的网络?为什么在单独的
文章中介绍它们。
在每个配送中心中,有10个装有汽车的机架,它们将分别编号为
A ,
B ,
C等。
每个机架有30辆车。 他们不会对我们感兴趣。
同样,在每个机架中都有一个交换机,所有机器都连接到该交换机-这是
机架顶部的交换机-ToR,或者就Klose工厂而言,我们将其称为
Leaf 。
工厂的总体方案。我们将它们命名为
XXX -leaf Y ,其中
XXX是三个字母的缩写DC,而
Y是序列号。 例如,
kzn-leaf11 。
在文章中,我允许自己轻率地使用术语Leaf和ToR作为同义词。 但是,必须记住,事实并非如此。
ToR是机器连接到的机架安装式交换机。
就Clos的拓扑而言,Leaf是设备在物理网络或一级交换机中的角色。
也就是说,Leaf!= ToR。
例如,Leaf可以是EndofRaw开关。
但是,在本文的框架内,我们仍将它们称为同义词。
每个ToR交换机依次连接到四个上游聚合交换机
-Spine 。 在Spine'y的领导下,DC分配了一个机架。 我们将以相同的方式命名它:
XXX -spineY。在同一机架中,将存在用于DC之间连接的网络设备-板载MPLS的2个路由器。 但总的来说-这些是相同的ToR。 也就是说,从骨干交换机的角度来看,是否有连接机器或用于DCI的路由器的普通ToR没关系-这是该死的事情。
这种特殊的ToR称为
Edge-leaf 。 我们称它们为
XXX- edgeY。它看起来像这样。

在边缘和叶子上方的图表中,我确实放置在同一水平线上。
古典的三级网络已教会我们考虑将上行链路(实际上是从此处开始)作为链接。 事实证明,DCI的“上行链路”回落,这在一定程度上破坏了通常的逻辑。 对于大型网络,当将数据中心进一步划分为较小的单元
-POD (交付点)时,会为DCI和访问外部网络分配单独的
Edge-POD 。
为方便起见,将来我仍将在Edge上使用Edge,同时请记住,在使用普通Leaf和Edge-leaf时,对Spine并没有任何了解(尽管可能会有细微差别,但是总的来说是的。
带有叶子的工厂布局。Trinity Leaf,Spine和Edge构成Underlay网络或工厂。
正如我们在上
一期中已经确定的
那样 ,网络工厂的任务(请参阅Underlay)非常非常简单-在同一DC内和之间的机器之间提供IP连接。
这就是为什么将网络称为工厂的原因,就像模块化网络框内的交换工厂一样,可以在
SDSM14中找到更多详细
信息 。
通常,这种拓扑称为工厂,因为转换中的结构是结构。 很难不同意:

工厂完全L3。 没有VLAN,没有广播-这些都是LAN_DC上的优秀程序员,他们可以编写生活在L3范式中的应用程序,并且虚拟机不需要实时迁移即可保存IP地址。
再次:在另
一篇文章中 ,对为什么工厂和为什么使用L3的问题的答案。
DCI-数据中心互连(Inter-DC)
DCI将使用Edge-Leaf进行组织,也就是说,它们是我们通往高速公路的出口。
为简单起见,我们假定DC通过直接链接连接。
我们不考虑外部连接。
我知道每次删除组件都会大大简化网络。 随着抽象网络的自动化,一切都会好起来,但拐杖将出现在真实的网络上。
就是这样 尽管如此,本系列文章的目的是思考和研究方法,而不是英勇地解决想象中的问题。
在Edge-Leafs上,将底层放置在VPN中并通过MPLS主干网(同一直接链路)进行传输。
这是一个顶级方案。

路由选择
对于DC内部的路由,我们将使用BGP。
在OSPF + LDP MPLS Trunk上
对于DCI,即下面的连接组织是MPLS上的BGP L3VPN。
通用路由方案工厂没有OSPF和ISIS(俄罗斯联邦禁止路由协议)。
这意味着将没有自动发现和最短路径计算-只有手动(实际上是自动-我们在这里涉及自动化)来设置协议,邻居和策略。
DC内部的BGP路由方案为什么选择bgp?在此主题上有
一个名为Facebook和Arista
的完整RFC ,它说明了如何使用BGP构建
非常大的数据中心网络。 它读起来几乎像一本艺术作品,强烈推荐度过一个悠闲的夜晚。
在我的文章中,整个章节都专门讨论了这一点。 我要
送你到哪里。
但是,总之,IGP不适用于大型数据中心的网络,在这种情况下,成千上万的网络设备都在使用。
此外,在任何地方都可以使用BGP,因此您无需依赖几种不同协议以及它们之间的同步。
在我们的工厂中,动手做事的可能性很高,而OSPF不会迅速增长,OSPF就足够了。 这些实际上是大型定标器和云泰坦的问题。 但是,让我们想象一下我们需要解决的一些问题,并且正如Peter Lapukhov遗赠的那样,我们将使用BGP。
路由策略
在Leaf交换机上,我们从与网络的Underlay接口中导入BGP前缀。
我们将在
每个 Leaf-Spine对之间建立一个BGP会话,在其中将在水坑网络中宣布这些Underlay前缀。

在一个数据中心内,我们将分发导入到ToRe的详细信息。 在Edge-Leafs上,我们将汇总它们并在远程DC中宣布它们,并将它们降低到ToR。 也就是说,每个ToR都会确切地知道如何到达同一DC中的另一个ToR,以及到达另一个DC中的ToR的入口点在哪里。
在DCI中,路由将作为VPNv4传输。 为此,在Edge-Leaf上,将工厂的接口放置在VRF中,我们将其称为UNDERLAY,并且Edge-Leaf上具有Spine的邻居将在VRF内以及VPNv4家族中的Edge-Leaf之间上升。

而且,我们还将禁止重新宣布从棘刺收到的路线,并将它们传回给他们。

在Leaf和Spine上,我们将不会导入回送。 我们只需要它们来确定路由器ID。
但是在Edge-Leafs上,我们将其导入Global BGP。 在Loopback地址之间,Edge Leafs将在IPv4 VPN系列中彼此建立BGP会话。
在EDGE设备之间,我们将有一个OSPF + LDP主干。 全部集中在一个区域中。 极其简单的配置。
这是路由的图片。
BGP ASN
边缘叶ASN
在Edge-Leaf上,所有DC中都将有一个ASN。 重要的是,边缘叶之间必须有iBGP,并且不要碰到eBGP的细微差别。 设为65535。实际上,它可以是公共AS号。
脊柱ASN
在Spine,每个DC我们将拥有一个ASN。 让我们从私有AS范围的第一个数字开始-64512、64513,依此类推。
为什么在DC上使用ASN?
我们将此问题分解为两个问题:
- 为什么在同一DC的所有刺上都具有相同的ASN?
- 为什么它们在不同的DC中有所不同?
为什么一个DC的所有刺上都具有相同的ASN这是Edge-Leaf上的AS-Path Anderlay路由如下所示:
[leafX_ASN, spine_ASN , edge_ASN]
如果您尝试将其发布回Spine,它将被删除,因为其AS(Spine_AS)已在列表中。
但是,在DC内部,我们完全感到满意的是,爬到Edge的Underlay路线将无法下降。 DC中主机之间的所有通信都应在主干级别内进行。

同时,在任何情况下,其他DC的聚合路由都可以自由到达ToR-在它们的AS-Path中只有ASN 65535-AS Edge-Leaf的数量,因为它们是在它们上创建的。
为什么在不同的DC中有所不同从理论上讲,我们可能需要在DC之间拖动回送和某些服务虚拟机。
例如,在主机上,我们将运行路由反射器或
相同的VNGW (虚拟网络网关),它们将通过BGP与ToR锁定,并宣布其环回,所有DC都应可以使用。
因此,这是他的AS-Path的样子:
[VNF_ASN, leafX_DC1_ASN, spine_DC1_ASN , edge_ASN, spine_DC2_ASN , leafY_DC2_ASN]
在这里,任何地方都不应有重复的ASN。

也就是说,Spine_DC1和Spine_DC2应该是不同的,就像leafX_DC1和leafY_DC2一样,这正是我们正在使用的方法。
您可能知道,尽管有思科环回预防机制,仍有一些骇客可以使您通过重复的ASN接受路由。 它甚至具有相当合法的用途。 但这是网络弹性方面的潜在差距。 而且我个人几次陷入了困境。
如果我们有机会不使用危险物品,我们将使用它。
叶阿森
我们将在整个网络的每个叶子交换机上都有一个单独的ASN。
出于上述原因,我们这样做:没有循环的AS-Path,没有书签的BGP配置。
为了使Leafs之间的路由不受阻碍地通过,AS-Path应该如下所示:
[leafX_ASN, spine_ASN, leafY_ASN]
其中leafX_ASN和leafY_ASN可能会有所不同。
对于宣布DC之间的VNF回送的情况,这也是必需的:
[VNF_ASN, leafX_DC1_ASN , spine_DC1_ASN, edge_ASN, spine_DC2_ASN, leafY_DC2_ASN ]
我们将使用4字节的ASN并根据Spine的ASN和Leaf-switch编号生成它,例如:
Spine_ASN.0000X 。
这是带有ASN的图片。

知识产权计划
基本上,我们需要为以下连接分配地址:
- ToR和机器之间的底层网络地址。 它们在整个网络中必须是唯一的,以便任何计算机都可以相互通信。 伟大的10/8 。 每个机架/ 26个带边距。 我们将为DC分配/ 19,为该区域分配/ 17。
- Leaf / Tor和Spine之间的链接地址。
我想按算法分配它们,即根据需要连接的设备的名称进行计算。
设为169.254.0.0/16。
即169.254.00X.Y / 31 ,其中X是主干号码, Y是P2P网络/ 31。
这将允许您最多运行128个机架,并且在DC中最多运行10个Spine。 链接地址可以(并且将)从DC重复到DC。 - 我们在169.254.10X.Y / 31个子网中组织Spine-Edge-Leaf联合,其中以同样的方式X是Spine编号, Y是P2P网络/ 31。
- 从Edge-Leaf到MPLS骨干网的链接地址。 这里的情况有所不同-将所有部分连接到一个饼图中的位置,因此重用相同的地址将不起作用-您需要选择下一个空闲子网。 因此,我们将以192.168.0.0/16为基础,并从中获取免费的。
- 回送地址。 给他们整个范围172.16.0.0/12 。
- 叶子-每DC 25个-相同的128个机架。 按/ 23分配给该区域。
- 脊柱-DC处/ 28-最多16根脊柱。 按/ 26分配给该区域。
- 边缘叶-DC上的/ 29-最多8个盒子。 按/ 27分配给该区域。
如果在DC中我们没有足够的选定范围(但它们不会在那里-我们假装为hyper-skeylerostvo),只需选择下一个方块即可。
这是带有IP寻址的图片。

环回:
前缀 | 设备角色 | 地区 | 直流电 |
172.16.0.0/23 | 边缘 | | |
172.16.0.0/27 | RU | |
172.16.0.0/29 | MSK |
172.16.0.8/29 | z |
172.16.0.32/27 | SP | |
172.16.0.32/29 | bcn |
172.16.0.40/29 | g |
172.16.0.64/27 | cn | |
172.16.0.64/29 | 沙 |
172.16.0.72/29 | 西亚 |
172.16.2.0/23 | 脊柱 | | |
172.16.2.0/26 | RU | |
172.16.2.0/28 | MSK |
172.16.2.16/28 | z |
172.16.2.64/26 | SP | |
172.16.2.64/28 | bcn |
172.16.2.80/28 | g |
172.16.2.128/26 | cn | |
172.16.2.128/28 | 沙 |
172.16.2.144/28 | 西亚 |
172.16.8.0/21 | 叶 | | |
172.16.8.0/23 | RU | |
172.16.8.0/25 | MSK |
172.16.8.128/25 | z |
172.16.10.0/23 | SP | |
172.16.10.0/25 | bcn |
172.16.10.128/25 | g |
172.16.12.0/23 | cn | |
172.16.12.0/25 | 沙 |
172.16.12.128/25 | 西亚 |
底图:
前缀 | 地区 | 直流电 |
10.0.0.0/17 | RU | |
10.0.0.0/19 | MSK |
10.0.32.0/19 | z |
10.0.128.0/17 | SP | |
10.0.128.0/19 | bcn |
10.0.160.0/19 | g |
10.1.0.0/17 | cn | |
10.1.0.0/19 | 沙 |
10.1.32.0/19 | 西亚 |
拉巴
两家供应商。 一个网络。 ADSM。
瞻博网络+ Arista。 的Ubuntu 前夕好。
我们在Miran的虚拟机上的资源数量仍然有限,因此,在实践中,我们将只使用这种简化的网络。

两个数据中心:喀山和巴塞罗那。
- 每个都有两个刺:瞻博网络和Arista。
- 每个中都有一个环(叶)-瞻博网络和Arista,并连接了一个主机(为此,我们以轻量级的Cisco IOL为例)。
- 一个Edge-Leaf节点(到目前为止只有Juniper)。
- 一台Cisco交换机将其全部统治。
- 除网络盒外,还启动了管理虚拟机。 运行Ubuntu。
她可以访问所有设备,IPAM / DCIM系统,一堆Python脚本,ansible,以及我们可能需要的其他任何东西。
我们将尝试使用自动化来复制所有网络设备
的完整配置 。
结论
还接受了吗? 在每篇文章下做出简短结论?
因此,我们选择DC内的
三级 Klose网络,因为我们期望有很多东西向流量,并且需要ECMP。
我们将网络分为物理网络(底层)和虚拟网络(叠加)。 在这种情况下,覆盖层从主体开始-从而简化了对底层层的要求。
我们选择BGP作为非中继网络的路由协议,因为它具有可扩展性和策略的灵活性。
我们将为DCI组织提供单独的节点-Edge-leaf。
中继上将有OSPF + LDP。
DCI将基于MPLS L3VPN实施。
对于P2P链接,我们将根据设备名称通过算法计算IP地址。
将根据设备的角色及其位置顺序分配Lupback。
底层前缀-仅在叶子交换机上根据其位置顺序排列。
假设我们现在没有安装设备。
因此,我们的下一步将是使它们进入系统(IPAM,清单),组织访问,生成配置并进行部署。
在下一篇文章中,我们将讨论Netbox,DC中的清单和IP空间管理系统。
谢谢啦
- Andrey Glazkov aka @glazgoo,用于校对和编辑
- Alexander Klimenko又名@ v00lk,用于校对和编辑
- KDPV的Artyom Chernobay