当前位置: 代码迷 >> 综合 >> 【理论-huawei】VXLAN通信原理和应用场景
  详细解决方案

【理论-huawei】VXLAN通信原理和应用场景

热度:101   发布时间:2023-11-21 00:58:44.0

我不是原创,我只是知识的搬运工(●’?’●)
原创:https://www.bilibili.com/video/BV1py4y1a7iE?from=search&seid=14799585710022780459&spm_id_from=333.337.0.0

讲的真心不错,可是我听了2遍没听懂,于是我一狠心一跺脚,把动态视频变成了文字,细细理解。(暂时懒得对文章结构做修饰了,凑合着看吧)

随着数据中心租户规模越来越大,虚拟机数量也大幅增加。此时传统网络的二层技术vlan,因为tag只有12bit,只能支持2的12次方,只能划分出4096个虚拟二层网络。已经无法满足大二层网络中大量虚拟租户的需求。
同时为了计算机中的虚拟资源得到灵活调配。需要支持虚拟机可以跨分区,甚至跨数据中心的灵活迁移。
在这里插入图片描述

这时候,传统的二层网络很难做到虚拟机迁移前后的IP和MAC地址不能改变。
在这里插入图片描述
Vxlan技术帮助虚拟机在迁移过程中完成上述挑战
在这里插入图片描述
是一种在三层网络上构建虚拟化二层网络的技术。
在这里插入图片描述
首先vxlan引入了类型vlan ID的用户标识,称为VNI。它由24bit组成,可以构建出1600万个相互隔离的虚拟二层网络。足以支撑大二层网络的用户隔离。
在这里插入图片描述
Vxlan使用mac in UDP的封装方式
在这里插入图片描述
然后将原始报文封装在VXLAN信息中,在现有网络中进行透明传输。到达目的地后通过解封装vxlan信息,将原始二层报文发送给目标虚拟机。从而实现了虚拟机之间的相互通信。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样虚拟机就拜托了传统网络的二三层传播的范围限制。可以跨设备、分区、数据中心的自由迁移。
VNI用于表示该报文属于哪个vxlan隧道
在这里插入图片描述
同时封装上外层UDP报头,端口号为4789。用于表示该报文为vxlan报文
在这里插入图片描述
最后用外层IP头和mac头作为迁移过程中转发
在这里插入图片描述

这样封装后的报文就和普通IP报文一样
在这里插入图片描述

为了将原始报文,通过vxlan网络传递给远端的vm虚拟机
在这里插入图片描述

需要用VTEP对原始报文进行VXLAN报文的封装,并在两个VTEP之间建立VXLAN隧道
在这里插入图片描述
在这里插入图片描述

VXLAN隧道可以通过静态和动态两种方式进行建立。静态方式:用户手工指定隧道的VTEP源目的IP。从而人为的在本端VTEP1和VTEP2之间建立静态的VXLAN隧道。
在这里插入图片描述

在这种方式下,如果有新增VTEP,就要手工指定新的VXLAN隧道。但是VTEP数量不断增加后,手工执行的方式显得非常麻烦。因此推出动态方式建立隧道。
在这里插入图片描述

动态方式是指
两个vtep自动在本端和对端建立BGP EVPN邻居关系,通过BGP EVPN协议自动在本端VTEP1和远端VTEP2之间建立VXLAN隧道。可是如果新增VTEP3,则需要手工在VTEP之间建立BGP EVPN的全连接。部署仍然比较繁琐。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

因此在网络中部署路由反射器RR可以解决这个问题
在这里插入图片描述
所有VTEP只需要和路由反射器建立BGP EVPN邻居关系,
在这里插入图片描述
在路由反射器RR收到新的VTEP加入网络建立BGP EVPN邻居关系的时候,路由反射器会将消息反射给所有VTEP。从而在VTEP和新VTEP之间自动建立新的VXLAN隧道。
在这里插入图片描述

VTEP收到报文后,如果确定,报文是否需要进入VXLAN隧道,和如何进入VXLAN隧道?
在这里插入图片描述

主要由两种方式进入vxlan隧道方式:二层子接口接入VXLAN隧道和Vlan接入VXLAN隧道
在这里插入图片描述

二层子接口接入VXLAN隧道 :二层子接口是VTEP上的一种逻辑接口,归属于物理接口下。通过配置不同的流封装类型,并绑定VNI对应的广播域BD信息。以将不同的二层报文,接入对应的VXLAN隧道。
Untag:该类型接口只接收不带TAG的报文,不论是对原始报文进行VXLAN封装还是解封装VXLAN报文,该接口都不会对报文进行vlan TAG处理。包括添加,替换,剥离。
Dot1q:只接受带VLAN tag的报文。该类型对原始报文进行vxlan报文封装时,会剥离其外层的vlan tag。在解封装vxlan报文时,若内层报文带有vlan tag,则替换成指定vlan tag后再转发。如果内层报文不带有vlan tag,则添加指定vlan tag后再转发。
Default:该类型接口接收所有报文。不论其是否带有vlan tag,不论是对原始报文进行封装vxlan,还是解封装vxlan报文。该类型接口都不会对报文进行vlan tag处理。包括添加,替换,剥离。
在这里插入图片描述
Vlan接入VXLAN隧道:在部署网路时候,如果一个物理接口收到N个携带vlan tag的报文, 且这些报文都需要进入vxlan隧道,这时候如果使用二层子接口接入vxlan隧道的方式,则需要创建N个二层子接口,并进行配置。增加了配置的繁杂度。此时vlan接入vxlan隧道的方式则可以很好的解决这个问题。
只需要在物理接口下允许携带这些vlan tag的报文通过,然后在vlan下绑定VNI对应的BD信息。即可将这些报文接入对应的vxlan隧道。
在这里插入图片描述
报文进入vxlan隧道后,在vtep1上,如何对报文进行vxlan报文封装,解封装。在网络中又是如何进行转发的?
举个栗子:
VMA要和VMC同网段进行通信时候。
在这里插入图片描述
首先VMA会发送ARP请求报文,请求VMC的mac地址。
在这里插入图片描述
VTEP1收到VMA发送的ARP请求报文后,根据报文中的vlan信息判断报文需要进入的VXLAN隧道。且对应的VNI为5000。
在这里插入图片描述
然后将报文的VMA的mac学习到本地的mac地址表中,并记录VNI为5000,入接口绑定为PORT1。
在这里插入图片描述
此时VTEP1发现报文是ARP请求报文。因此对报文按照头端复制的机制,向所有VTEP对端进行广播处理。VTEP1对报文进行复制并且封装上VXLAN信息后,发送给所有同属于VNI为5000的VXLAN隧道邻居。
在这里插入图片描述
封装后的报文根据外层IP和mac信息,在IP网络中进行传输。直至到达对端VTEP。
在这里插入图片描述

VTEP2和3对报文进行解封装。
在这里插入图片描述

剥离vxlan信息后,得到vma发送的原始报文,VTEP2和3将VMA的mac地址学习到本地的MAC地址表中。并记录其VNI为5000,地址为IP1。
在这里插入图片描述
Vtep2和3将报文广播到对应的vlan中,VMB和VMC收到VMA发送的ARP后,VMB发现目的IP不是本机IP,就会将报文丢弃
在这里插入图片描述
VMC发现目的IP是自己,则对ARP请求做出应答。
在这里插入图片描述
VMC向VMA发送ARP应答报文,VTEP3收到VMC发送的ARP应答报文后。根据报文中的VLAN100判断该报文需要进入vxlan隧道。且对应的VNI为5000。
在这里插入图片描述
此时VTEP3将VMC的mac地址学习到本地的MAC地址表中,并记录其VNI为5000,入接口为port3。查找mac地址表,发现MAC表中,MACA的VNI为5000,对端VTEP地址为IP1。
在这里插入图片描述

从而封装vxlan信息,并将报文发送给VTEP1
在这里插入图片描述

VTEP1对报文进行解封装,得到VMC发送的原始报文
在这里插入图片描述
VTEP1将VMC的mac地址学习到mac地址表中,并记录对应的VNI为5000,远端的VTEP地址为IP3。查找MAC地址表发现VMA的MAC地址的出端口为PORT1,从而 VTEP1将解封装后的报文发送给VMA。
在这里插入图片描述

至此,VMA和VMC就可以相互通信。
在这里插入图片描述

VMA要和VMC不同网段进行通信时候。需要在三层网关上部署BDIF接口。VM请求网关的ARP信息。其广播和单播报文的转发流程和同网段类似。
在这里插入图片描述
VXLAN应用场景
在典型的“Spine-Leaf”结构中,数据中心组网中,企业用户拥有多个部门,每个部门中拥有多个VM,同部门的VM属于同一个网段,不同部门的VM属于不同网段。
此时,如何部署VXLAN使,不同部门VM之间,同一个部门的VM之间,VM和Internet之间,可以相互访问?
在这里插入图片描述

首先,部署vxlan的二层网关,将leaf1和leaf2,作为vxlan的vtep,两个leaf之间搭建VXLAN隧道,并且在每个leaf上部署vxlan二层网关,即可实现同一个部门的VM相互通信
在这里插入图片描述

其次,部署VXLAN的三层网关,根据VXLAN三层网关的位置不同,可分为VXLAN集中式三层网关和VXLAN分布式三层网关。
在VXLAN集中式三层网关中,Spine和leaf设备都作为vxlan的VTEP。Leaf作为二层接入,Spine承担三层网关功能,此时在leaf1和Spine1之间,Leaf2和Spine2之间,分别搭建vxlan隧道,并在spine上部署三层网关,即可实现不同部门的VM之间、VM和Internet之间的相互通信。
在这里插入图片描述
在VXLAN分布式三层网关中,leaf节点作为网关中的VTEP,同一个Leaf节点,可以做vxlan的二层网关和三层网关,此时在单个leaf上部署vxlan三层网关,即可实现该leaf下不同部门本地VM之间的三层通信。
在这里插入图片描述

不同leaf下部署VXLAN的三层网关,两个VXLAN三层网关之间,通过BGP动态建立VXLAN隧道,并通过BGP的remote-nexthop属性,发布本网关下挂的主机路由信息,给其他BGP邻居,即可实现跨Leaf节点下的不同部门之间的相互通信。

在这里插入图片描述
VXLAN集中式三层网关与VXLAN分布式三层网关对比
在这里插入图片描述
在前面介绍的网络中,VM与Leaf之间,Leaf与Spine之间都是通过单归方式接入。这种组网接入方式显然不能满足用户对VXLAN网络可靠性的需求。
在这里插入图片描述

这时可以采用堆叠方式或者M-LAG双规接入方式,提升接入层的可靠性。并采用多活网关的方式,提升核心层的可靠性。
接入层设备数量繁多,可以将多台接入层设备组合在一起,虚拟化成一台交换设备,所有配置均在一台虚拟交换机上进行,从而简化了接入层设备的运维复杂度。
在这里插入图片描述

此外堆叠系统内成员交换机之间冗余备份的同时,能够利用跨设备的以太串口,实现链路间的负载分担,堆叠通过集中配置的方式,使得部署较为简单,但是堆叠系统无法进行独立升级,且升级期间业务中断时间较长,
在这里插入图片描述
在这里插入图片描述

此时可以使用M-LAG双归接入方式,提升接入层的可靠性,在此方式下组成的MLAG的两台设备,不需要同时升级 ,保证了升级过程中业务流量的转发。但其与堆叠方式的配置相比较为复杂。
在这里插入图片描述

采用多活网关的方式提升核心层的可靠性
核心层设备物理位置较为分散,传统的设备及备份无法满足要求。必须通过协议级备份才能满足要求。在多活网关组网中,通过给SPine配置相同的IP地址和MAC地址等网关信息,
在这里插入图片描述

将他们对外模拟成VXLAN网络中的一个虚拟的VTEP,然后在所有SPine设备上配置三层网关
在这里插入图片描述

使流量无论发送到哪个spine,该设备都能提供服务,将报文正确转发给下一跳设备
在这里插入图片描述

此外多活网关中的多台Spine之间,形成负载分担关系,共同进行流量转发。
在这里插入图片描述

当网络中网络设备越来越多,网络结构越来越复杂时,为了方便对网络各节点的控制与部署,可以通过控制器的方式部署VXLAN的网络。
在这里插入图片描述

控制器是统一的网络控制平台通过netconf协议控制VXLAN之间的隧道的建立
通过OpenFlow的协议来控制报文在隧道中的转发。
在这里插入图片描述