作为云计算核心技术之一的“服务器虚拟化”已经被数据中心普遍应用。随着企业业务的发展,虚拟机数量的快速增长和虚拟机迁移已成为一个常态性业务。由此也给传统网络带来了以下一些问题:
1、虚拟机规模受网络规格限制
在传统二层网络环境下,数据报文是通过查询mac地址表进行二层转发。而接入侧二层设备的MAC地址表容量有限,无法支撑大量虚拟机的接入需求。
2、传统网络的隔离能力有限
VLAN作为当前主流的网络隔离技术,由于IEEE 802.1Q中定义的VLAN ID只有12比特,仅能表示4096个VLAN,无法满足大量租户的隔离需求。
3、虚拟机迁移范围受限
为了虚拟机迁移过程中业务不中断,需要保证虚拟机迁移前后的IP地址、MAC地址不变。这就决定了,虚拟机迁移必须发生在一个二层域中。而传统数据中心网络的二层域,将虚拟机迁移限制在了一个较小的局部范围内。
针对上述问题,为了满足云计算的网络能力需求,逐步演化出了Overlay网络技术。Overlay技术有多种,例如VXLAN、NVGRE、STT等。本文就来介绍目前获得最广泛支持的VXLAN技术。
VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网),是由IETF定义的NVO3(Network Virtualization over Layer 3)标准技术之一,本质上是一种隧道技术。通过将原始数据帧添加VXLAN头后封装在UDP报文中,并以传统IP网络的传输方式转发该UDP报文。报文到达目的端点后,去掉外层封装的部分,将原始数据帧交付给目标终端。
VXLAN网络模型
VXLAN是在三层网络上构建虚拟二层网络,实现主机之间的二层互通。相对于VLAN,VXLAN具有更好的灵活性与扩展性:
1、针对虚拟机规模受网络规格限制
虚拟机发出的数据包封装在IP数据包中,对网络只表现为封装后的网络参数。因此,极大降低了大二层网络对MAC地址规格的需求。
2、针对网络隔离能力限制
VXLAN技术扩展了隔离标识的位数(24比特),理论上可以达到16M的租户隔离,极大扩展了隔离数量。VXLAN引入了类似VLAN ID的网络标识,称为VNI(VXLAN Network ID),由24比特组成,理论上支持多达16M的租户,从而满足了大量租户隔离的需求。
3、针对虚拟机迁移范围受网络架构限制
VXLAN将以太报文封装在IP报文之上,通过路由在网络中传输,构建出了大二层网络,虚拟机迁移不受网络架构限制。而且路由网络具备良好的扩展能力、故障自愈能力、负载均衡能力。
VXLAN采用了MAC-in-UDP的报文封装模式,在原始数据帧上依次添加VXLAN首部、UDP首部、IP首部和以太帧首部。
VXLAN网络中报文的转发一般分为两大类,一类为BUM报文转发(广播、组播、未知单播);另一类为已知单播报文转发。下面分别就以这两类报文的转发流程做介绍。
BUM报文转发
BUM报文在VXLAN中有多种方式可以实现:头端复制、集中复制、组播复制。其中集中复制、组播复制的部署稍复杂,下面只以常用的头端复制方式进行说明。
BUM报文转发流程如下:
已知单播报文转发
以VM_C向VM_A进行ARP应答为例,已知单播报文转发流程如下:
集中式网关部署
集中式网关是指将三层网关集中部署在Spine设备上,如下图所示,所有跨子网的流量都经过三层网关进行转发,实现流量的集中管理。
集中式网关部署方式可以对跨子网流量进行集中管理,网关的部署和管理比较简单,但是因为同Leaf下跨子网流量也需要经过Spine转发,所以流量转发路径不是最优。同时,所有通过三层转发的终端租户的表项都需要在Spine上生成。但是,Spine的表项规格有限,当终端租户的数量越来越多时,容易成为网络瓶颈。
分布式网关部署
VXLAN分布式网关是将Leaf节点作为VXLAN隧道端点VTEP,每个Leaf节点都可作为VXLAN三层网关,Spine节点不感知VXLAN隧道,只作为VXLAN报文的转发节点。
在Leaf上部署VXLAN三层网关,即可实现同Leaf下跨子网通信。此时,流量只需要在Leaf节点进行转发,不再需要经过Spine节点,从而节约了大量的带宽资源。同时,Leaf节点只需要学习自身连接主机的ARP表项,而不必像集中三层网关一样,需要学习所有主机的ARP表项,解决了集中式三层网关带来的ARP表项瓶颈问题,网络规模扩展能力强。
对于分布式网关场景,因为需要在三层网关间传递主机路由才能保证主机间互通,所以需要有控制平面来进行路由的传递。为此,VXLAN引入了EVPN(Ethernet VPN)作为VXLAN的控制平面。EVPN参考了BGP/MPLS IP VPN的机制,通过扩展BGP协议新定义了几种BGP EVPN路由,通过在网络中发布路由来实现VTEP的自动发现、主机地址学习。