简介
VxLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网),是一种虚拟化隧道通信技术。它是一种 Overlay技术。
- 隧道技术:类似于之前写过的GRE隧道技术,VxLAN也是一种隧道技术。相当于在底层物理网络上,借助UDP层构建逻辑网络
- Overlay技术:覆盖网络技术,VxLAN是数据中心三大Overlay技术之一
Overlay技术简介
Overlay技术是一种网络架构上叠加的虚拟化技术模式,其大体框架是对基础网络不进行大规模修改的条件下,实现应用在网络上的承载,并能与其它网络业务分离,并且以基于IP的基础网络技术为主。Overlay技术是在现有的物理网络之上构建一个虚拟网络,上层应用只与虚拟网络相关。
在虚拟化云计算的场景下,一种普遍存在的需求是:虚拟机在数据中心任意网络位置之间都可以无感知迁移。但是由于物理方面的限制,这种前移在不借助一些技术的前提下是难以完成的。
容易理解的来说,Overlay技术是通过点到多点的隧道封装协议,完全忽略中间网络的结构和细节,把整个中间网络虚拟成一台“巨大无比的二层交换机”,常被称为所谓的“大二层”。从而,可以构建出自己的逻辑网络。
VxLAN
背景和需求
随着云上网络的发展,传统的物理意义上的网络会产生以下的问题:
- 虚拟机规模受MAC表大小限制。随着云上虚拟机数量的增多,MAC地址也呈现爆炸式的增长,但是交换机的内存总是有限的,无法无限扩展MAC表。
- 虚拟机需要能够进行迁移,且在迁移的过程中保证业务不中断。这就要求虚拟机迁移前后的IP地址、MAC地址、运行状态等状态不变。这就决定了虚拟机迁移必须发生在一个二层域中。例如在使用VLAN的传统网络拓扑中,如果要在VLAN 100部署虚拟机,那只能在支持VLAN 100的物理设备上部署。这就大大限制了迁移,例如无法在跨可用区或者跨Region的迁移。
- 传统网络的隔离能力有限,VLANID采用12比特进行区分,最多支持4000多个VLAN
VxLAN网络模型
主要有以下几个成员:
- VETP(VxLAN Tunnel Endpoints,VxLAN 隧道端点)
VETP是VxLAN 网络的边缘设备,用来进行 VxLAN 报文的处理(封包和解包)。VTEP 可以是网络设备(比如交换机),也可以是一台机器(比如虚拟化集群中的宿主机)。 - VNI(VxLAN Network Identifier,VxLAN 网络标识符)
VNI 是每个VXLAN 段的标识,24位,也就是一千多万。也就是说使用 VxLAN 搭建的公有云可以理论上可以支撑千万级别的租户。 - Tunnel(VxLAN 隧道)
是建立的逻辑上的信道
上图可以看出,创建在原来的 IP 网络上,只要是能够通过 IP 相互通信,就能部署 VxLAN。在 VxLAN 网络的每个端点都有一个 VTEP 设备,负责 VxLAN 协议报文的解包和封包,也就是在虚拟报文上封装 VTEP 通信的报文头部。
这样在物理网络上就可以创建多个VxLAN网络,不同节点的虚拟机能够通过隧道直连,通过VNI对隧道进行标识。
报文结构
内容 | 含义 |
Origin Frame | 原始报文/内层报文 |
VxLAN Header | 8 字节,其中最主要的是 VNID,占用 3 个字节(即 24 bit) |
UDP Header | 在 VXLAN 和原始二层帧的前面使用 8 字节 UDP 头部进行封装(MAC IN UDP),目的端口号缺省使用 4789,源端口按流随机分配(通过 MAC,IP,四层端口号进行 hash 操作) |
Outer IP Header | 宿主机的IP头部,20字节 |
Outer MAC Header | 宿主机的MAC头部,14字节 |
VTEP
VTEP有自己的转发表,转发表通过泛洪和学习机制来维护,对于目标MAC地址在转发表中不存在的未知单播,广播流量,都会被泛洪给除源VTEP外所有的VTEP。
目标VTEP响应数据包后,源VTEP会从数据包中学习到MAC,VNI和VTEP的映射关系,并添加到转发表中,后续当再有数据包转发到这个MAC地址时,VTEP会从转发表中直接获取到目标VTEP地址,从而发送单播数据到目标VTEP。
一个VxLAN报文需要确定两个地址信息:目的虚拟机的 MAC 地址和目的VTEP的 IP 地址,如果VNI也是动态感知的,那么VTEP就需要一个三元组:
根据实现的不同,一般分为两种方式:
- 多播:同一个VxLAN网络的VTEP加入同一个多播网络
- 控制中心:一个集中式的组件控制所有上述信息
需求解决
- 虚拟机规模受MAC表大小限制
既然无法无限扩展MAC表,就可以把大量VM的MAC地址隐藏起来。VTEP会将VM发出的原始报文封装成一个新的UDP报文,并使用物理网络的IP和MAC地址作为外层头,对网络中的其他设备只表现为封装后的参数。也就是说,网络中的其他设备看不到VM发送的原始报文。同样,VETP也不需要学习VM的MAC地址。 - 虚拟机需要能够进行迁移,且在迁移的过程中保证业务不中断
为了保证业务不中断,VM的迁移就必须发生在同一个二层域内。而VxLAN正是在三层网络上,构建一个无限大的二层网络。只要IP可达,这个大二层网络想做多大做多大。 - 传统网络的隔离能力有限
VNI由24位构成,理论上可以支撑千万租户
参考
深度好文:vxlan介绍VXLAN 基础教程:VXLAN 协议原理介绍vxlan 协议原理简介简析数据中心三大Overlay技术