2. VXLAN 技术原理深度解析
VXLAN(Virtual eXtensible LAN,虚拟可扩展局域网)是数据中心 Overlay 网络的核心封装技术,它把二层以太网帧封装进 UDP 报文,在 IP 网络之上构建出可跨三层、可大规模扩展的虚拟二层网络。理解 VXLAN,关键要抓住五个相互咬合的概念:封装格式、VNI 与 VLAN 映射、VTEP、泛洪与学习机制、Underlay 与 Overlay 关系。本节逐一展开,并给出可对照的报文结构与映射示例。
一、VXLAN 封装格式:把二层帧装进 UDP
VXLAN 的封装思路是“MAC in UDP”。原始的二层以太网帧被完整保留,作为内层载荷,外面依次加上 VXLAN 头、UDP 头、外层 IP 头和外层以太网头。外层头用于在 Underlay IP 网络中寻址和转发,内层帧用于在 Overlay 虚拟二层网络中表达真实的终端通信。
VXLAN 头固定 8 字节,其中最关键的是 24 位的 VNI(VXLAN Network Identifier)。24 位意味着 VNI 理论上有 224 ≈ 1677 万个可用标识,远超传统 VLAN 的 12 位 4094 个,这是 VXLAN 能支撑多租户大规模数据中心的基础。VXLAN 头中的 I 标志位表示 VNI 是否有效,通常置 1;保留字段一般填 0。UDP 目的端口默认使用 4789(早期部分实现用 8472),源端口由内层帧的哈希计算得出,用于在 Underlay 中实现等价多路径(ECMP)负载分担。
下面用一张信号链/封装结构图,把“内层帧 → VXLAN 头 → UDP 头 → 外层 IP 头 → 外层以太网头”的层次关系与关键字段直观呈现出来。
二、VNI 与 VLAN 映射:本地标识与全局标识的转换
VLAN 是本地链路概念,只在同一台交换机或同一段二层链路内有意义;VNI 是 Overlay 全局概念,在整个 VXLAN 域内唯一标识一个虚拟二层网络。终端发出的帧带的是 VLAN Tag,进入 VTEP 后需要把 VLAN 映射为 VNI,封装时写入 VXLAN 头;对端 VTEP 解封装后,再把 VNI 映射回本地 VLAN,交给本地二层转发。
映射关系通常有两种做法。第一种是“一对一映射”,例如 VLAN 10 ↔ VNI 1010、VLAN 20 ↔ VNI 1020,便于运维对照。第二种是“多对一映射”,把多个 VLAN 映射到同一个 VNI,用于把不同接入位置的同一租户二层域打通。需要注意,映射是本地行为,两端 VTEP 的 VLAN 编号可以不同,只要 VNI 一致,二层域就能互通。例如 A 端 VLAN 10 映射 VNI 5000,B 端 VLAN 30 也映射 VNI 5000,则两端终端处于同一 VXLAN 二层域。
三、VTEP:VXLAN 的起点与终点
VTEP(VXLAN Tunnel End Point,VXLAN 隧道端点)是执行封装与解封装的功能实体,通常位于 Leaf 交换机或支持 VXLAN 的服务器虚拟交换机上。每个 VTEP 至少有一个用于 Underlay 通信的 IP 地址,称为 VTEP IP 或源接口地址,它既是外层 IP 头的源地址,也是隧道对端的寻址目标。
VTEP 的核心职责包括:识别本地终端的 VLAN,查表得到 VNI;根据目的 MAC 与 VNI 找到对端 VTEP IP;完成封装并交给 Underlay 转发;收到报文后解封装,按 VNI 还原 VLAN 并转发给本地终端。VTEP 之间形成的是逻辑隧道,隧道本身不占用 Underlay 设备的表项,Underlay 只把它当作普通 IP/UDP 报文转发。
四、泛洪与学习机制:从数据平面学习到控制平面分发
VXLAN 默认采用“数据平面学习”模式。当 VTEP 收到一个未知单播、广播或组播帧时,需要把帧泛洪到同一 VNI 内的其他 VTEP。传统做法依赖 Underlay 组播,把每个 VNI 映射到一个组播组;但组播在数据中心 Underlay 中部署和运维复杂,因此更常见的是“头端复制”(Ingress Replication):由入口 VTEP 复制报文,分别单播发送给同一 VNI 内的所有对端 VTEP。
学习机制方面,数据平面学习通过泛洪后的响应报文,让 VTEP 记录“源 MAC—VNI—对端 VTEP IP”的映射关系,写入本地转发表。这种方式在小规模环境可用,但泛洪带来的流量和表项收敛速度在大规模多租户场景下会成为瓶颈。因此现代数据中心普遍引入 EVPN 作为控制平面,通过 BGP EVPN 的 MAC/IP 通告路由,把 MAC 地址、VNI 与 VTEP IP 的映射提前分发给所有相关 VTEP,实现“控制平面学习”,从而抑制泛洪、加快收敛。本节先建立数据平面学习的基本认识,EVPN 的详细机制将在后续章节展开。
五、Underlay 与 Overlay:承载与被承载的关系
Underlay 是物理或基础 IP 网络,由 Spine-Leaf 等设备组成,负责把 VTEP 之间的封装报文从一台设备送到另一台设备。它关心的是外层 IP 可达性、路由收敛和负载分担,不感知 VNI 和内层 MAC。Overlay 是建立在 Underlay 之上的虚拟网络,由 VXLAN 隧道和 VNI 构成,负责表达租户的二层域和三层网关语义。
两者是承载与被承载的关系:Underlay 提供 IP 连通性,Overlay 提供虚拟二层/三层服务。Underlay 的故障会直接影响 Overlay 隧道,但 Overlay 的 VNI 划分、MAC 学习与租户隔离对 Underlay 透明。工程上通常要求 Underlay 具备无阻塞或低收敛比的转发能力、稳定的路由协议(如 OSPF、IS-IS 或 BGP)以及合理的 ECMP 设计,才能让 Overlay 的泛洪、复制和隧道流量获得可预期的性能。
理解要点:VXLAN 不是替代 VLAN,而是在 VLAN 之上做了一次“全局化”和“隧道化”。VLAN 解决本地二层隔离,VNI 解决跨三层的大规模二层扩展;VTEP 是转换点,Underlay 是运输通道,Overlay 是租户看到的网络。
常见误区:把 VNI 当成 VLAN 的简单放大版。VNI 是全局标识,VLAN 是本地标识,二者通过 VTEP 上的映射表关联;两端 VLAN 编号不一致并不影响互通,只要 VNI 一致即可。另外,MTU 规划必须考虑 VXLAN 封装带来的额外开销(外层以太网头 14B + 外层 IP 头 20B + UDP 头 8B + VXLAN 头 8B,共约 50B),否则容易出现大包被丢弃或分片。
综合来看,VXLAN 的五个概念构成一条完整链路:终端帧带 VLAN 进入 VTEP,VTEP 按映射表把 VLAN 转成 VNI,加上 VXLAN/UDP/外层 IP 头完成封装,经 Underlay 送到对端 VTEP,对端解封装后按 VNI 还原 VLAN 并转发给终端。泛洪与学习机制决定未知流量如何扩散和转发表如何建立,Underlay 与 Overlay 的分层则决定了这套体系的可扩展性与运维边界。掌握这条链路,是后续配置 VXLAN 隧道、排查 Overlay 连通性以及引入 EVPN 控制平面的基础。