1 叶脊网络出现背景
1.1 由实体到云的变化
时间 | 服务器单位 | 优势 | 缺陷 | 主要流量走向 |
---|---|---|---|---|
过去 | 实体机 | 单独完成计算工作,计算任务统筹简单 | 服务器CPU、GPU等利用率较低,电力成本过高 | 南北向 |
现在 | 虚拟机(一台实体机资源可以动态分配给多台虚拟机使用) | 服务器CPU、GPU等利用率高,电力成本相对降低,分布式计算提高了服务器整体算力 | 技术复杂度较高,虚拟化需要一定技术支持;云计算需要进行任务的统筹和分配,较麻烦 | 东西向 |
1.2 数据中心网络架构需求变化
1.2.1 需要承载的主要流量方向的变化
- 具体变化
- 南北向(客户端访问服务器的流量)——>东西向(服务器到服务器的流量)
■ 南北向:客户端打开微信程序就需要访问微信的服务器
■ 东西向:如打开微信的视频程序,需要微信前端服务器访问视频服务器
- 变化原因
①云计算的出现
虚拟机的出现伴随着一种新的计算方式的出现,即“云计算”,云计算的主要特征之一就是“分布式计算”;这种计算方法要求位于中心节点的虚拟机将任务拆分成多个子任务分发给其他虚拟来进行并行计算,最后虚拟机们再将计算完成后的子任务传递给中心节点的虚拟机进行任务的整合,在这个过程中还设计任务的复制冗余过程;以上种种过程都需要使用“东西向流量”来进行传输;自然较以前单台实体机单独计算来说,现网网络结构对于“东西向流量”的承载能力要求更高。
②虚拟机迁移
“虚拟机迁移”主要也是使用了“东西向流量”,这也加剧了数据中心对于“东西向流量”的需求,而且虚拟机迁移是一个很经常的行为,所以东西向流量增加是必然的;
③服务器互访频率的增加
随着软件的功能的增加,一个软件的功能可能会需要多个服务器的支持,如打开微信的视频程序,需要微信前端服务器访问视频服务器;这类需求也在逐渐的增加;
- 传统网络架构弊端
传统三层网络架构在承载东西向流量时可能得跨三层才能实现互访,这种方式对于东西向流量的速率产生了很大的影响,而且对于核心设备和汇聚设备的负担比较大(像汇聚交换机又不能扩展(除非堆叠))所以需要一种新型的网络架构来支持这种大量东西向流量的情况
1.2.2 对于扩展性的要求的变化
注:传统的三层网路架构中的核心层不一定是做nat的地方,可能还有专门的出口路由器或者防火墙来做nat,下文中的核心层就不包含nat的功能,核心层只是为了保证不同的SVI可以互访
- 扩展性需求增加
由于虚拟机的普及和分布式计算的流量,数据中心对于网络架构的扩展性有了更高的要求;
- 网络架构为增加扩展性做出的变革
①普通三层网络架构
- 缺陷:二层扩展性受限
- 缺陷原因:VRRP+XSTP组合的本身特性导致,且汇聚层设备是瓶颈
注:VRRP冗余+xSTP破环的模式,一旦链路出现故障,xSTP需要的收敛时间较长影响数据传输,且其中一条链路由于破环需求被BLOCKING;这种对于链路的浪费也会导致接入层交换机可以承载的下连设备数量受到限制,因为数据中心的需求之一就是控制设备的收敛比(下连带宽和上连带宽的比值)来尽量实现无阻塞的流量传输(收敛比接近于1:1),而使用STP上连可用带宽明显减少一半,对应的下连的设备数量也要打五折,二层的扩展性受到限制;一个VLAN的网关只能部署在一个汇聚层交换机上,所以一个VLAN内的设备数目是有上限的,也就是这个VLAN的网关所在汇聚层交换机的性能;
②改良后的三层网络架构
- 缺陷:二层扩展性虽改善仍然受限
- 缺陷原因:二层扩展性受制于汇聚层交换机不能无上限的扩展,汇聚层设备是瓶颈
注:针对xSTP的弊端,很多厂商放弃了在两台汇聚层交换机之间部署VRRP等虚拟路由冗余协议再用XSTP破环的思路,而是设计了虚拟设备技术,将两台汇聚层交换机虚拟成一台交换机,再在接入层交换机上连两个口之间启用端口聚合,来实现对于上连带宽的翻倍操作,这一定程度上改善了收敛比的问题,二层的扩展性也相对改善; 但一个VLAN的网关只能部署在一个汇聚层交换机上,所以一个VLAN内的设备数目是有上限的,也就是这个VLAN的网关所在汇聚层交换机的性能;
③叶脊网络架构(Spine-Leaf网络架构)
- 优势:二层扩展性充分解决
- 优势原因:使用ECMP(Experimental Class of Mathematics and Physics),可以扩展叶设备同时扩展脊设备
叶脊网络为扩展性设计了三种方案:
- 方案一:使用“虚拟设备”+“链路聚合”
- 方案二:使用“ECMP(Equal-Cost Multi-Path Routing)等价多路径路由”
- 方案三:方案一+方案二
注:很多情况下数据中心都是使用方案三来作为解决方案,图中大的交换机就是使用了堆叠技术,由于使用了ECMP,所以在可以同时曾加脊层和叶层设备来实现二层的扩展性需求;
1.2.3 需要支持大范围虚拟机迁移
- 本质原因
需要进行虚拟机的热迁移,而这过程不能中断业务流量,就要求迁移前后虚拟机的IP和MAC地址不变,且所属的网络环境不变(迁移前后的虚拟机属于同一个VLAN内,VLAN的变化会导致网关的变化,对外流量肯定中断);三层网络架构下一个VLAN的设备只能在一个汇聚交换机下,迁移的范围就受到严重的限制,所以需要使用新的网络架构和技术来支持大范围的虚拟机热迁移,其中的网络架构就是叶脊网络架构,而新技术就可以是VXLAN技术;
- 热迁移需要迁移的东西
- 1 外存(共享存储,不用迁移)
- 2 内存(需要迁移)
- 3 CPU(需要迁移)
- 4 网卡配置(不需要迁移,设置成一样的就行)
- 热迁移的过程
- 1 创建新的虚拟机空壳,虚拟机的IP和MAC设置成与原虚拟机一致
- 2 迁移前后的虚拟机存储共享
- 3 旧虚拟机保持接收业务,且逐步将内存按内存页为单位迁移到新的虚拟机
- 4 由于旧虚拟机有业务,内存页会更新(脏内存页),所以需要迭代迁移脏内存页
- 5 当内存页迁移差不多且脏内存较少时,旧虚拟机不再接收业务,完成最后一部分脏内存页的迁移以及CPU的迁移
- 6 新虚拟机发出Free ARP更新业务流向,开始接收业务
- 热迁移需要注意的点
- 1 虚拟机迁移过程两个虚拟机使用的是管理网络的IP地址而非业务网络,此时并不强行要求两个虚拟机处在同一个VLAN内,只要可达即可,只是为了实现业务不中断,在一个VLAN下进行迁移效率更高
1.3 叶脊网络出现
- 网络拓扑结构趋于扁平化,东西向流量互访速度更快
- 网络拓扑拓展性较好,三层网关可以作为中间节点
- 收敛比更加合理,不存在被阻塞端口的情况
1.5 承上启下
综上所述,我们需要一个可以有更好的拓展性,同时更加支持东西向流量,且可以支持大规模VLAN部署的网络架构,就是叶脊网络架构;同时由于需要支持大规模的灵活的网络BD划分,传统的VLAN已经势单力薄,这就衍生出了我们下面要讲的VXLAN技术,更加多的VNI,更加灵活的overlay部署技术,更加强悍的安全技术(基于三层传输,直接杜绝二层安全问题)
2 VXLAN技术介绍
2.1 概念描述
基本概念:
VXLAN(Virtual Extensible LAN,是一种网络虚拟化技术,基于 IP 网络且采用"MAC in UDP"封装形式的二层 VPN 技术。
名词解释:
- VNI:类似于VID,比VID多,有2^24次方个(VID只有 2^12个),一个VNI能映射多个VLAN
- BD:Broadcast广播域,一个BD对应一个VNI
- VTEP:专用封装VXLAN头部交换机,可以是物理设备也可以是虚拟机上设备
(虚拟上面对用户透明但占用资源,物理设备性能更好但要考虑兼容性问题)- NVE:用于建立隧道的接口,通常源IP使用环回地址的IP
(使用环回接口建立隧道可以防止物理接口动荡而导致的隧道建立失败,因为可以做冗余处理)- VBDIF:类似于SVI,用于跨BD路由以及终结VXLAN封装访问外网
2.2 报文结构
- VTEP的源目MAC
- VTEP的源目IP
- UDP 源端口随机 目的端口4789(VXLAN进程端口号)
- VNI
---------上为额外封装内容,下为正常报文内容------------- Server的源目MAC
- Server的源目IP
- …
2.3 技术优势
- 底层使用三层网络传输,可以避免二层网络的环路和广播风暴问题,同时可以使用ECMP等方法也更加灵活
- VNI可用数目为2^24 远多于VLAN的2^12,可以给大量虚拟机提供VNI隔离需求
- Overlay技术可以在原有网络中进行部署,同时可以实现大二层需求,也方便进行多租户的隔离
3 实验操作
3.1 子接口流封装补充
封装类型 | 进入前 | 封装 | 解封 |
---|---|---|---|
untag | 不允许携带VLAN | 不处理 | 不处理 |
dot1q | 只允许特定一层VLAN | 剥离原始VLAN | 替换或添加VLAN |
default | 允许所有 | 不处理 | 不处理 |
qinq | 只允许特定两层VLAN | 剥离所有VLAN | 添加一层或两层VLAN |
为什么dot1q封装时需要剥离原始的VLAN?
因为有些设备不能处理这些VLAN,发到接入层交换机是可以处理,但是如果发给BD网关的话,解封装后就处理不了VID了,所以需要先剥离原始的VLAN。
3.2 实验拓扑
3.3 配置说明
- PC
PC1
IP地址:192.168.10.1
子网掩码:255.255.255.0
网关:192.168.10.254PC2
IP地址:192.168.20.1
子网掩码:255.255.255.0
网关:192.168.20.254PC3
IP地址:192.168.10.2
子网掩码:255.255.255.0
网关:192.168.10.254PC4
IP地址:192.168.20.2
子网掩码:255.255.255.0
网关:192.168.20.254
- 虚拟接入交换机
- LSW1
interface GigabitEthernet0/0/1
port link-type access
port default vlan 10
interface GigabitEthernet0/0/2
port link-type access
port default vlan 20
interface GigabitEthernet0/0/3
port link-type trunk
port trunk allow-pass vlan 2 to 4094- LSW2
interface GigabitEthernet0/0/1
port link-type access
port default vlan 10
interface GigabitEthernet0/0/2
port link-type access
port default vlan 20
interface GigabitEthernet0/0/3
port link-type trunk
port trunk allow-pass vlan 2 to 4094
- 脊叶交换机
- HF
//打通underlay网络
interface GE1/0/1
undo portswitch
undo shutdown
ip address 12.12.12.1 255.255.255.0
interface LoopBack1
ip address 1.1.1.1 255.255.255.255
ospf 1 router-id 1.1.1.1
area 0.0.0.0
network 1.1.1.1 0.0.0.0
network 12.12.12.1 0.0.0.0
//绑定广播域BD和VNI的1对1关系
bridge-domain 10
vxlan vni 10
bridge-domain 20
vxlan vni 20
//子接口开启流封装,针对不同的VLAN为报文添加不同的VNI
interface GE1/0/0
undo shutdown
interface GE1/0/0.10 mode l2
encapsulation dot1q vid 10
bridge-domain 10
interface GE1/0/0.20 mode l2
encapsulation dot1q vid 20
bridge-domain 20
//为不同的VNI建立不同的隧道传输
interface Nve1
source 1.1.1.1
vni 10 head-end peer-list 2.2.2.2
vni 10 head-end peer-list 3.3.3.3
vni 20 head-end peer-list 2.2.2.2
vni 20 head-end peer-list 3.3.3.3- SH
//打通underlay网络
interface GE1/0/1
undo portswitch
undo shutdown
ip address 23.23.23.3 255.255.255.0
interface LoopBack1
ip address 3.3.3.3 255.255.255.255
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 3.3.3.3 0.0.0.0
network 23.23.23.3 0.0.0.0
//绑定广播域BD和VNI的1对1关系
bridge-domain 10
vxlan vni 10
bridge-domain 20
vxlan vni 20
//子接口开启流封装,针对不同的VLAN为报文添加不同的VNI
interface GE1/0/0
undo shutdown
interface GE1/0/0.10 mode l2
encapsulation dot1q vid 10
bridge-domain 10
interface GE1/0/0.20 mode l2
encapsulation dot1q vid 20
bridge-domain 20
//为不同的VNI建立不同的隧道传输
interface Nve1
source 3.3.3.3
vni 10 head-end peer-list 2.2.2.2
vni 10 head-end peer-list 1.1.1.1
vni 20 head-end peer-list 2.2.2.2
vni 20 head-end peer-list 1.1.1.1- CE2
//打通underlay网络
interface GE1/0/0
undo portswitch
undo shutdown
ip address 12.12.12.2 255.255.255.0
interface GE1/0/1
undo portswitch
undo shutdown
ip address 23.23.23.2 255.255.255.0
interface LoopBack1
ip address 2.2.2.2 255.255.255.255
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 12.12.12.2 0.0.0.0
network 23.23.23.2 0.0.0.0
//绑定广播域BD和VNI的1对1关系
bridge-domain 10
vxlan vni 10
bridge-domain 20
vxlan vni 20
//为对应的BD创建虚拟口作为网关(原理同SVI,出口封装BD)
interface Vbdif10
ip address 192.168.10.254 255.255.255.0
interface Vbdif20
ip address 192.168.20.254 255.255.255.0
//为不同的VNI建立不同的隧道传输
interface Nve1
source 2.2.2.2
vni 10 head-end peer-list 1.1.1.1
vni 10 head-end peer-list 3.3.3.3
vni 20 head-end peer-list 1.1.1.1
vni 20 head-end peer-list 3.3.3.3
//为访问外网流量留出口
ip route-static 0.0.0.0 0.0.0.0 g1/0/2
4 实验原理(集中式网关)
注:虽然ARP在报文结构上是数据链路层的报文;但是在归类时,还是属于网络层的报文,所以我们下面举例中涉及的ARP报文,我们还是当做网络层报文来分析讲解;实际情况中ARP协议并不存在网络层,只要类似于源目IP的Sender IP和Target IP的载荷信息;
4.1 同BD通讯(192.168.10.1 ping 192.168.10.2)
①
PC1在封装Icmp echo之前先需获取PC3的MAC地址信息,所以先发送广播帧的ARP Request报文来获取信息,报文经过LSW1接入交换机被打上VLAN 10的标签,在到达HF设备前的报文结构如下:
- Destinate MAC:FF-FF-FF-FF-FF-FF
- Source MAC:PC1
- VID:10
- Sender IP:192.168.10.1
- Sender MAC:PC1
- Target IP:192.168.10.2
- Target MAC:00-00-00-00-00-00
②
由于HF子接口g1/0/0.10配置了vid 10的流封装,按照规则在接收到报文之后先要去掉其中的VID字段,然后封装VNI 10字段,然后设备基于VNI查询MAC地址表,由于是全F的广播包(BMU的一种),此时HF需要向所有的VNI10的隧道发包(类似泛洪) 共有两条隧道可以发包,所以会发两个包,其中隧道源目IP的封装可以得知,在封装完成外层的源目IP之后,需要根据路由表来封装源目MAC,其中目的MAC为外层下一跳IP对应的MAC地址(可以查询ARP表);源MAC就为出接口的MAC;
1.1.1.1->2.2.2.2
- Destinate MAC:CE2 的GE1/0/0
- Source MAC:HF 的G1/0/1
- Source IP:1.1.1.1
- Destinat IP:2.2.2.2
- UDP Source Port:? Destinat Port:4789
- VNI:10
- Destinate MAC:FF-FF-FF-FF-FF-FF
- Source MAC:PC1
- Sender IP:192.168.10.1
- Sender MAC:PC1
- Target IP:192.168.10.2
- Target MAC:00-00-00-00-00-00
1.1.1.1->3.3.3.3
- Destinate MAC:CE2 的GE1/0/0
- Source MAC:HF 的G1/0/01
- Source IP:1.1.1.1
- Destinat IP:3.3.3.3
- UDP Source Port:? Destinat Port:4789
- VNI:10
- Destinate MAC:FF-FF-FF-FF-FF-FF
- Source MAC:PC1
- Sender IP:192.168.10.1
- Sender MAC:PC1
- Target IP:192.168.10.2
- Target MAC:00-00-00-00-00-00
③
2.2.2.2收到报文后,再次在隧道内泛洪;
3.3.3.3收到报文之后,一路解封装到VNI10,由于是广播帧,发向所有接口做出接口逻辑判断,最终从g1/0/0.10发出,报文格式如下:
- Destinate MAC:FF-FF-FF-FF-FF-FF
- Source MAC:PC1
- VID:10
- Sender IP:192.168.10.1
- Sender MAC:PC1
- Target IP:192.168.10.2
- Target MAC:00-00-00-00-00-00
④
收到报文后PC4回复一个ARP Reply单播报文,此时SH交换机基于BD(VNI)在MAC表中寻找和目的MAC(叶脊交换机会学习BD和真实源MAC的对应表)匹配条目对应的隧道完成单一隧道的转发
报文结构如下:
- Destinate MAC:CE2
- Source MAC:SH
- Source IP:3.3.3.3
- Destinat IP:1.1.1.1
- UDP Source Port:? Destinat Port:4789
- VNI:10
- Destinate MAC:PC1
- Source MAC:PC3
- Sender IP:192.168.10.2
- Sender MAC:PC3
- Target IP:192.168.10.1
- Target MAC:PC1
4.2 不同BD通讯(192.168.10.1 ping 192.168.20.1)
①请求的是网关的MAC地址,这里不再赘述
②上图说明了ICMP包的发送流程;
4.3 访问外网(192.168.10.1 ping 8.8.8.8)
①省略了获取网关MAC的过程
②
PC1发送的ICMP echo通过HF交换机到达vbdif后,首先被解封装到原本报文处然后发现目的MAC为自己再解封装,最后查看网络层,根据目的IP在路由表中查找相应的路由条目封装之后从G1/0/2出去;注意如果出接口是另一个vbif的话就会进行VNI的封装;
5 实验作用
由实验原理可以说明无论是对于外界没有开启VXLAN的设备还是内部开启了VXLAN的设备,对他们而言两台迁移前后的设备的网络配置都没有变化,而位置变化的收敛可以通过在迁移完毕之后发送ARP FREE来进行更新,这样是为什么可能会短暂导致业务终端的原因,因为ARP的传播需要一定的时间;