什么是VXLAN

VXLAN概述作为云计算核心技术之一的“服务器虚拟化”已经被数据中心普遍应用 。随着企业业务的发展,虚拟机数量的快速增长和虚拟机迁移已成为一个常态性业务 。由此也给传统网络带来了以下一些问题:
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网络模型
VXLAN是在三层网络上构建虚拟二层网络,实现主机之间的二层互通 。相对于VLAN,VXLAN具有更好的灵活性与扩展性:
1、针对虚拟机规模受网络规格限制
虚拟机发出的数据包封装在IP数据包中,对网络只表现为封装后的网络参数 。因此,极大降低了大二层网络对MAC地址规格的需求 。
2、针对网络隔离能力限制
VXLAN技术扩展了隔离标识的位数(24比特),理论上可以达到16M的租户隔离,极大扩展了隔离数量 。VXLAN引入了类似VLAN ID的网络标识,称为VNI(VXLAN Network ID),由24比特组成,理论上支持多达16M的租户,从而满足了大量租户隔离的需求 。
3、针对虚拟机迁移范围受网络架构限制
VXLAN将以太报文封装在IP报文之上,通过路由在网络中传输,构建出了大二层网络,虚拟机迁移不受网络架构限制 。而且路由网络具备良好的扩展能力、故障自愈能力、负载均衡能力 。
VXLAN报文格式VXLAN采用了MAC-in-UDP的报文封装模式,在原始数据帧上依次添加VXLAN首部、UDP首部、IP首部和以太帧首部 。
什么是VXLAN

文章插图
 
  • VXLAN Header:VXLAN首部包含24比特的VNI字段和8比特的VXLAN标志位,其他为保留字段 。
  • UDP Header:UDP首部中,目的端口号固定为4789 。VXLAN首部和原始以太帧一起作为UDP的数据部分 。
  • Outer IP Header:IP首部的源IP地址为源端VTEP的IP地址,目的IP地址为目的端VTEP的IP地址 。
  • Outer MAC Header:以太帧首部的源MAC地址为源端VTEP的MAC地址,目的MAC地址为到达目的端VTEP的下一跳设备的MAC地址 。
VXLAN报文转发原理VXLAN网络中报文的转发一般分为两大类,一类为BUM报文转发(广播、组播、未知单播);另一类为已知单播报文转发 。下面分别就以这两类报文的转发流程做介绍 。
BUM报文转发
BUM报文在VXLAN中有多种方式可以实现:头端复制、集中复制、组播复制 。其中集中复制、组播复制的部署稍复杂,下面只以常用的头端复制方式进行说明 。
什么是VXLAN

文章插图
 
BUM报文转发流程如下:
  1. VM_A向VM_C发出ARP广播请求,请求VM_C的MAC地址,源MAC为MAC_A、目的MAC为全F 。
  2. VTEP_1收到ARP请求后,确定对应的VNI及VXLAN隧道头端复制列表 。VTEP_1会根据头端复制列表对报文进行复制及VXLAN封装,然后向各隧道发送 。
  3. 可以看到,外层目的IP地址为对端VTEP(VTEP_2和VTEP_3)的IP地址 。封装后的报文,根据外层MAC和IP信息,在IP网络中进行传输,直至到达对端VTEP 。
  4. 报文到达VTEP_2和VTEP_3后,VTEP对报文进行解封装,得到VM_A发送的原始报文 。同时,VTEP_2和VTEP_3记录VM_A的MAC地址、VNI和远端VTEP_1的IP地址的对应关系,并记录在本地MAC表中 。之后,VTEP_2和VTEP_3将原始报文发送给对应二层域内的主机 。


    推荐阅读