本文目录导读:

- 核心封装机制:MAC-in-UDP
- 关键角色:VTEP(VXLAN隧道端点)
- 实现扩展的关键:VNI(VXLAN网络标识符)
- 穿越三层网络:Overlay网络
- VXLAN虚拟扩展的完整流程
- VXLAN的局限性(对比其他技术)
- 与其他技术的对比
VXLAN(虚拟可扩展局域网)通过“MAC in UDP”的封装技术来实现网络虚拟化和大规模扩展,其核心原理可以概括为:将原始的二层以太网帧(包含MAC地址)封装在一个UDP数据包中,然后在底层的三层IP网络(通常是数据中心IP网络)中进行传输。
以下是其实现虚拟扩展的详细机制,分解为几个关键步骤和核心概念:
核心封装机制:MAC-in-UDP
这是最根本的原理。
-
原始数据包:虚拟机A(VM-A)想发送一个数据包给虚拟机B(VM-B),这个数据包是一个标准的二层以太网帧,包含源MAC(VM-A)、目标MAC(VM-B)和可能的VLAN标签。
-
VXLAN封装:当这个数据包到达与VM-A相连的VTEP(VXLAN隧道端点)时,VTEP会执行以下操作:
- 添加VXLAN头部:在原始以太网帧前添加一个8字节的VXLAN头部,这个头部最关键的是24位的VXLAN网络标识符(VNI,VXLAN Network Identifier),VNI用于区分不同的虚拟网络,类似于VLAN的ID,但扩展能力强得多(VLAN是12位,最多4096个;VNI是24位,最多1600万个)。
- 添加UDP头部:VXLAN头部再加上标准的UDP头部(通常目的端口为4789)。
- 添加外部IP头部:最后加上外部的IP头部,源IP地址是本地VTEP的IP地址,目的IP地址是远端VTEP的IP地址。
- 添加外部MAC头部:最后加一个外部的以太网帧头,用于在物理网络中进行下一跳转发。
-
解封装:远端VTEP收到这个UDP数据包后,会检查目的UDP端口(4789),确认是VXLAN流量,它剥离外部的IP/UDP头部和VXLAN头部,取出原始的以太网帧,然后根据VNI和原始目标MAC地址,将数据包转发给对应的VM-B。
形象比喻:
想象你要给一个住在另一个城市的朋友寄一封实体信(原始二层帧),你不能直接用信封在街上走(物理网络),你需要做的是:
- 把信放进一个VXLAN信封(VXLAN头部,写上VNI标签)。
- 把这个信封放进一个UDP包裹(UDP头部)。
- 把包裹放进一个快递包裹(外部IP头部,写上你朋友家地址和你家地址)。
- 把快递包裹交给快递员(物理网络)寄出去。 你的朋友收到后,拆开快递包裹和UDP包裹,取出VXLAN信封,看到VNI标签,最后取出里面的信。
关键角色:VTEP(VXLAN隧道端点)
VTEP是VXLAN架构的核心组件,它负责执行封装和解封装,VTEP可以是一个物理设备(如支持VXLAN的交换机、路由器)或一个软件实体(如运行在Hypervisor中的虚拟交换机,如Open vSwitch)。
- 硬件VTEP:通常在高性能的数据中心交换机上实现。
- 软件VTEP:最常见的实现方式是集成在虚拟化平台的Hypervisor中,VMware vSphere的vDS(虚拟分布式交换机)、KVM的Open vSwitch(OVS)都内置了VTEP功能。这是目前最主流的部署方式。
实现扩展的关键:VNI(VXLAN网络标识符)
VNI是VXLAN实现虚拟网络扩展的核心标识符。
- 巨大容量:24位的VNI可以支持多达1600万个隔离的虚拟网络,相比之下,传统VLAN只有12位,最多4096个,这彻底解决了云计算、多租户环境下网络隔离数量不足的瓶颈。
- 逻辑隔离:每个VNI代表一个独立的虚拟二层网络,即使两个虚拟机在不同的物理服务器上、VNI相同,它们就能像在同一个物理交换机上一样通信,VNI不同,则完全隔离。
- 租户隔离:不同的租户可以使用同一个物理网络,但它们的VM会被分配不同的VNI,从而实现彼此完全隔离。
穿越三层网络:Overlay网络
VXLAN是一个Overlay(叠加)网络技术。
- Underlay网络:指的是底层的物理IP网络(交换机、路由器、链路等),它负责在VTEP之间传输封装后的UDP数据包。
- Overlay网络:指的是由VNI定义的虚拟二层网络,VM感知不到Underlay网络的存在,它们只知道自己在一个二层域内。
核心优点:Overlay网络与Underlay网络解耦,这意味着:
- 虚拟机可以跨三层网络迁移:只要物理网络能路由UDP数据包,同一VNI下的VM就可以轻松迁移到不同的物理交换机、不同的数据中心。
- 不改变物理网络:无需升级现有的物理网络设备和配置,只需要VTEP支持VXLAN即可。
VXLAN虚拟扩展的完整流程
- VM-A(VNI=100) 发送ARP广播请求VM-B(VNI=100)的MAC地址。
- 本地VTEP 收到此广播帧,它查找本地转发表,发现目的MAC未知。
- 本地VTEP 将此ARP请求封装成VXLAN数据包(源IP: A端VTEP,目标IP: B端VTEP,UDP端口: 4789,VNI: 100),并发往Underlay网络。
- 物理网络 根据外部IP头,将VXLAN数据包路由到远端VTEP。
- 远端VTEP 解封装,检查VNI=100,然后将原始ARP请求广播给所有连接在VNI=100下的VM(包括VM-B)。
- VM-B 回复ARP应答(单播)。
- 远端VTEP 学习到VM-B的MAC地址和VNI的映射关系,并同样封装后发回。
- 本地VTEP 学习到VM-B的MAC地址和VNI的映射关系,此后,两个VM之间的通信就是直接的、单播的VXLAN隧道通信,不再需要ARP广播。
VXLAN的局限性(对比其他技术)
- 增加开销:封装过程会引入额外的头部(50字节左右),增加了网络带宽消耗。
- 需要硬件支持:软件VTEP(如OVS)对CPU资源消耗较大,在高性能场景下,推荐使用支持VXLAN卸载的网卡(如Mellanox、Intel等)或硬件VTEP。
- 故障排查复杂:由于是Overlay网络,排查问题需要同时理解Underlay和Overlay两层网络。
与其他技术的对比
| 特性 | VLAN | VXLAN |
|---|---|---|
| 网络标识符位数 | 12位 | 24位 |
| 最大数量 | 4096 | 约1600万 |
| 隔离范围 | 单个二层网络 | 跨三层网络的虚拟二层网络 |
| 底层依赖 | 需要物理交换机支持VLAN | 需要VTEP支持(硬件或软件) |
| 灵活性与扩展性 | 低,受限于物理网络拓扑 | 高,可以跨越物理边界 |
VXLAN通过MAC-in-UDP封装技术,结合1600万个VNI,成功地在现有IP网络上构建了大规模、灵活、隔离的虚拟二层网络,解决了传统VLAN在数量、跨三层网络等方面的瓶颈,是现代数据中心和云计算网络虚拟化的核心基石。
标签: 网络虚拟化