摘要:本节以集中式VXLAN网络(手工方式建立VXLAN隧道)为例,分别介绍相同子网内、不同子网间是如何进行通信的。在了解转发机制的前提下,我们先来看下VXLAN网关有哪些种类。
和VLAN类似,不同VNI之间的主机,以及VXLAN网络和非VXLAN网络中的主机不能直接相互通信。为了满足这些通信需求,VXLAN引入了VXLAN网关的概念。VXLAN网关分为二层网关和三层网关:
根据三层网关部署方式的不同,VXLAN三层网关又可以分为集中式网关和分布式网关。
集中式网关是指将三层网关集中部署在一台设备上,如下图所示,所有跨子网的流量都经过这个三层网关转发,实现流量的集中管理。
图1-10 VXLAN集中式网关组网图
部署集中式网关的优点和缺点如下:
通过部署分布式网关可以解决集中式网关部署的缺点。VXLAN分布式网关是指在典型的“Spine-Leaf”组网结构下,将Leaf节点作为VXLAN隧道端点VTEP,每个Leaf节点都可作为VXLAN三层网关(同时也是VXLAN二层网关),Spine节点不感知VXLAN隧道,只作为VXLAN报文的转发节点。如下图所示,Server1和Server2不在同一个网段,但是都连接到同一个Leaf节点。Server1和Server2通信时,流量只需要在该Leaf节点上转发,不再需要经过Spine节点。
部署分布式网关时:
图1-11 VXLAN分布式网关示意图
VXLAN分布式网关具有如下特点:
如图1-12所示,VM_A、VM_B和VM_C同属于10.1.1.0/24网段,且同属于VNI 5000。此时,VM_A想与VM_C进行通信。
由于是首次进行通信,VM_A上没有VM_C的MAC地址,所以会发送ARP广播报文请求VM_C的MAC地址。
图1-12 同子网VM互通组网图
下面就让我们根据ARP请求报文及ARP应答报文的转发流程,来看下MAC地址是如何进行学习的。
结合图1-13,我们来一起了解一下ARP请求报文的转发流程。
图1-13 ARP请求报文转发流程示意
可以看到,这里封装的外层源IP地址为本地VTEP(VTEP_1)的IP地址,外层目的IP地址为对端VTEP(VTEP_2和VTEP_3)的IP地址;外层源MAC地址为本地VTEP的MAC地址,而外层目的MAC地址为去往目的IP的网络中下一跳设备的MAC地址。封装后的报文,根据外层MAC和IP信息,在IP网络中进行传输,直至到达对端VTEP。
VM_B和VM_C接收到ARP请求后,比较报文中的目的IP地址是否为本机的IP地址。VM_B发现目的IP不是本机IP,故将报文丢弃;VM_C发现目的IP是本机IP,则对ARP请求做出应答。下面,让我们看下ARP应答报文是如何进行转发的。
结合图1-14,我们来一起了解一下ARP应答报文的转发流程。
图1-14 ARP应答报文转发流程示意
可以看到,这里封装的外层源IP地址为本地VTEP(VTEP_3)的IP地址,外层目的IP地址为对端VTEP(VTEP_1)的IP地址;外层源MAC地址为本地VTEP的MAC地址,而外层目的MAC地址为去往目的IP的网络中下一跳设备的MAC地址。
封装后的报文,根据外层MAC和IP信息,在IP网络中进行传输,直至到达对端VTEP。
至此,VM_A和VM_C均已学习到了对方的MAC地址。之后,VM_A和VM_C将采用单播方式进行通信。单播报文的封装与解封装过程,与图1-14中所展示的类似,本文就不再赘述啦!
如图1-16所示,VM_A和VM_B分别属于10.1.10.0/24网段和10.1.20.0/24网段,且分别属于VNI 5000和VNI 6000。VM_A和VM_B对应的三层网关分别是VTEP_3上BDIF 10和BDIF 20的IP地址。VTEP_3上存在到10.1.10.0/24网段和10.1.20.0/24网段的路由。此时,VM_A想与VM_B进行通信。
图1-15 不同子网VM互通流程示意
由于是首次进行通信,且VM_A和VM_B处于不同网段,VM_A需要先发送ARP广播报文请求网关(BDIF 10)的MAC。获得网关的MAC后,VM_A先将数据报文发送给网关;之后网关也将发送ARP广播报文请求VM_B的MAC,获得VM_B的MAC后,网关再将数据报文发送给VM_B。以上MAC地址学习的过程与集中式VXLAN中同子网互通流程中MAC地址学习的流程一致,不再赘述。现在假设VM_A和VM_B均已学到网关的MAC、网关也已经学到VM_A和VM_B的MAC,下面就让我们看下数据报文是如何从VM_A发送到VM_B的。
图1-16 不同子网VM互通报文转发流程
如上图所示,数据报文从VM_A发送到VM_B的流程如下:
封装后的报文,根据外层MAC和IP信息,在IP网络中进行传输,直至到达对端VTEP。
封装后的报文,根据外层MAC和IP信息,在IP网络中进行传输,直至到达对端VTEP。
报文到达VTEP_2后,VTEP_2对报文进行解封装,得到内层的数据报文,并将其发送给VM_B。
VM_B回应VM_A的流程与上述过程类似,本文就不再赘述啦!
本文分享自华为云社区《为VXLAN技术介绍:什么是VXLAN-002》,原文作者:The one。
点击关注,第一时间了解华为云新鲜技术~