Administrator
Published on 2026-04-21 / 1 Visits
0
0

【Overlay网络】VXLAN的二层MAC学习及BUM报文转发

一、Overlay介绍

图1-1所示,Overlay网络是将已有的物理网络(Underlay网络)作为基础,在其上建立叠加的逻辑网络,实现网络资源的虚拟化。

图1-1 Overlay网络概念图

Overlay网络是建立在已有物理网络上的虚拟网络,具有独立的控制和转发平面,对于连接到Overlay的终端设备(例如服务器)来说,物理网络是透明的,从而可以实现承载网络和业务网络的分离。

为什么需要Overlay网络?

作为云计算核心技术之一的“服务器虚拟化”已经被数据中心普遍应用。随着企业业务的发展,虚拟机数量的快速增长和虚拟机迁移已成为一个常态性业务。由此也给传统网络带来了以下一些问题:

  • 虚拟机规模受网络规格限制

    在传统二层网络环境下,数据报文是通过查询MAC地址表进行二层转发,而网络设备MAC地址表的容量限制了虚拟机的数量。

  • 网络隔离能力限制

    当前主流的网络隔离技术是VLAN,由于IEEE 802.1Q中定义的VLAN ID只有12比特,仅能表示4096个VLAN,无法满足大二层网络中标识大量租户或租户群的需求。

  • 虚拟机迁移范围受网络架构限制

    为了保证虚拟机迁移过程中业务不中断,则需要保证虚拟机的IP地址、MAC地址等参数保持不变,这就要求业务网络是一个二层网络,且要求网络本身具备多路径的冗余备份和可靠性。传统的STP、设备虚拟化等技术只适用于中小规模的网络。

针对上述问题,为了满足云计算虚拟化的网络能力需求,逐步演化出了Overlay网络技术。

  • 针对虚拟机规模受网络规格限制

    虚拟机发出的数据包封装在IP数据包中,对网络只表现为封装后的网络参数。因此,极大降低了大二层网络对MAC地址规格的需求。

  • 针对网络隔离能力限制

    Overlay技术扩展了隔离标识的位数(24比特),极大扩展了隔离数量。

  • 针对虚拟机迁移范围受网络架构限制

    Overlay将以太报文封装在IP报文之上,通过路由在网络中传输。通过路由网络,虚拟机迁移不受网络架构限制。而且路由网络具备良好的扩展能力、故障自愈能力、负载均衡能力。

Overlay技术有多种,例如VXLAN、NVGRE、STT等,其中VXLAN是目前获得最广泛支持的Overlay技术。

二、什么是VXLAN

VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网),是由IETF定义的NVO3(Network Virtualization over Layer 3)标准技术之一,采用MAC-in-UDP的报文封装模式,如图2-1所示,原始报文在VXLAN接入点(被称为VTEP)加上VXLAN帧头后再被封装在UDP报头中,并使用承载网络的IP/MAC地址作为外层头进行封装,承载网络只需要按照普通的二三层转发流程进行转发即可。

图2-1 VXLAN报文格式

以VXLAN技术为基础的Overlay网络架构模型如图2-2所示。

图2-2 VXLAN网络模型

  • VTEP(VXLAN Tunnel Endpoints,VXLAN隧道端点)

    VXLAN网络的边缘设备,是VXLAN隧道的起点和终点,进行VXLAN报文的封装、解封装等处理。VTEP既可以部署在网络设备上(网络接入交换机),也可以部署在vSwitch上(服务器上的虚拟交换机)。

  • VNI(VXLAN Network Identifier,VXLAN 网络标识符)

    VNI是一种类似于VLAN ID的网络标识,用来标识VXLAN二层网络。一个VNI代表一个VXLAN段,不同VXLAN段的虚拟机不能直接二层相互通信。

  • VXLAN隧道

    两个VTEP之间建立的逻辑隧道,用于传输VXLAN报文。业务报文在进入VXLAN隧道时进行VXLAN、UDP、IP头封装,然后通过三层转发透明地将报文转发给远端VTEP,远端VTEP对报文进行解封装处理。

VXLAN报文转发过程

下面以同网段的VM间相通简单介绍VXLAN网络中的报文转发过程。

图2-3 VXLAN报文转发过程示意图

  1. VM1发送目的地址为VM2的报文。

  2. VTEP1收到该报文后进行VXLAN封装,封装的外层目的IP为VTEP2。封装后的报文,根据外层MAC和IP信息,在IP网络中进行传输,直至到达对端VTEP2。

  3. VTEP2收到报文后,对报文进行解封装,得到VM1发送的原始报文,然后将其转发至VM2。

三、二层MAC学习及BUM报文转发

在VXLAN网络中,同子网虚拟机的互通是通过查找MAC表进行转发。如下图所示,VM1给VM2发送报文时,经过VTEP1转发,VTEP1上需要学习到VM2的MAC地址。

最初的VXLAN标准并没有定义控制平面,VTEP之间无法传递学习到的主机MAC地址。但是VXLAN有着与传统以太网非常相似的MAC学习机制,当VTEP接收到VXLAN报文后,会记录源VTEP的IP、虚拟机MAC和VNI到本地MAC表中,这样当VTEP接收到目的MAC为此虚拟机的MAC时,就可以进行VXLAN封装并转发。

图3-1 MAC学习示意图

以VTEP2学习到VM1的MAC过程为例:

  1. VM1发送目的地址为VM2的报文。

  2. VTEP1接收到报文后,进行VXLAN封装,并将其转发至VTEP2。同时,VTEP1可以学习到VM1的MAC地址、VNI、入接口。

  3. VTEP2接收到报文后,对报文进行解封装。同时,VTEP2可以学习到VM1的MAC地址、VNI、入接口(为VTEP1)。

经过上述流程,VTEP1和VTEP2可以学习到VM1的MAC地址。VTEP1和VTEP2学习到VM2的MAC地址过程与之类似。

BUM报文转发

三类报文的统称:BUM = Broadcast + Unknown Unicast + Multicast

前面描述的报文转发过程都是已知单播报文转发,如果VTEP收到一个未知地址的BUM报文(广播、组播、未知单播)如何处理呢。与传统以太网BUM报文转发类似,VTEP会通过泛洪的方式转发流量。

图3-2 BUM报文转发示意图

以上图中VM1想向VM2发送报文为例,因为VM1不知道VM2的MAC地址,所以会发送ARP广播报文请求VM2的MAC地址。

  1. VM1发送ARP广播请求,请求VM2的MAC地址。

  2. VTEP1收到ARP请求后,因为是广播报文,VTEP1会在该VNI内查找所有的隧道列表,依据获取的隧道列表进行报文封装后,向所有隧道发送报文,从而将报文转发至同子网的VTEP2和VTEP3。

    同时,VTEP1会学习到VM1的MAC地址。

  3. VTEP2和VTEP3接收到报文后,进行解封装,得到VM1发送的原始ARP报文,然后转发至VM2和VM3。

    同时VTEP2、VTEP3会学习到VM1的MAC地址。

  4. VM2和VM3接收到ARP请求后,比较报文中的目的IP地址是否为本机的IP地址。VM3发现目的IP不是本机IP,故将报文丢弃;VM2发现目的IP是本机IP,则对ARP请求做出应答。

    ARP应答报文为已知单播报文,转发流程与前文描述的一致,此处不在赘述。

  5. 经过ARP应答流程,VTEP1和VM1就可以学习到VM2的MAC地址。后续的转发流程同已知单播转发流程一致。


Comment