2. VXLAN协议精要

VXLAN(Virtual eXtensible LAN)的本质,是在三层可达的 IP 网络之上,用“MAC-in-UDP”的方式重建一个二层广播域。理解它,关键要抓住四件事:报文长什么样、VNI 代表什么、谁负责封装与解封装、以及广播/未知单播/组播(BUM)流量怎么走。这四点决定了跨数据中心互联时,哪些流量能通、哪些会绕行、哪些会泛洪。

一、封装格式:从原始以太帧到 UDP 载荷

VXLAN 把原始的二层帧整体作为“内层载荷”,外面依次套上 VXLAN 头、UDP 头、外层 IP 头和外层以太头。内层帧的源/目的 MAC 在隧道中保持不变,外层 IP 负责在三层网络中寻址到对端 VTEP。VXLAN 头固定 8 字节,其中 24 位 VNI 字段是核心标识;UDP 目的端口默认使用 4789(早期也有厂商使用 8472),源端口通常由内层帧的哈希计算得出,用于 ECMP 负载分担。

需要特别注意的是,VXLAN 本身不提供加密和完整性校验,它只是封装与标识。跨数据中心场景中,如果流量要经过不可信网络,通常需要叠加 IPsec 或 MACsec。此外,外层 IP 的 MTU 必须比内层 MTU 多出至少 50 字节(外层以太 14 + 外层 IP 20 + UDP 8 + VXLAN 8),因此内层 1500 字节的帧要求底层链路至少支持 1550 字节,否则会因分片或丢弃导致大包不通。

VXLAN 报文封装结构(外层 → 内层) 外层以太头 14 B 外层 IP 头 20 B UDP 头 8 B · Dst 4789 VXLAN 头 8 B · VNI 24 bit 内层原始以太帧 内层 MAC 保持不变 · 载荷 封装开销: 14 + 20 + 8 + 8 = 50 字节。内层 1500 B 帧 → 外层需 ≥ 1550 B,底层链路 MTU 不足会导致大包丢弃或分片。 VNI 位于 VXLAN 头中,24 位可提供约 1600 万个二层网段标识,远大于传统 VLAN 的 4094 个。 VNI 语义 • 标识一个二层广播域(类似 VLAN ID) • 同一 VNI 内的主机处于同一逻辑二层网络 • 不同 VNI 之间默认二层隔离,需三层互通 • 跨 DC 互联时,VNI 需全局统一规划,避免冲突 VTEP 角色 • 隧道端点:负责 VXLAN 封装与解封装 • 每个 VTEP 有唯一外层 IP(源/目的地址) • 维护本地 MAC 表与远端 VTEP 映射 • 可为硬件交换机、软件 vSwitch 或网关设备

二、VNI 语义:不只是“大号 VLAN”

VNI(VXLAN Network Identifier)是 24 位标识,用来区分不同的二层广播域。它的语义与 VLAN ID 类似,但作用域和规划方式不同。VLAN ID 通常只在本地交换网络内有意义,而 VNI 在 VXLAN 隧道两端必须一致,否则报文会被丢弃或落入错误的广播域。跨数据中心互联时,VNI 规划要作为全局资源统一管理,常见做法是按业务或租户分配号段,例如:

  • 10000–10999:生产业务区
  • 11000–11999:测试业务区
  • 20000–20999:跨 DC 互联专用 VNI

需要强调的是,VNI 只解决“属于哪个二层域”,不解决“能不能互通”。同一 VNI 内的主机可以二层通信,不同 VNI 之间必须经过三层网关。因此,VNI 规划往往和 IP 网段规划、网关位置一起设计,而不是单独分配。

三、VTEP 角色:隧道端点与转发表

VTEP(VXLAN Tunnel End Point)是 VXLAN 的“出入口”。它有两个关键地址:一个是本地二层接口上的 MAC 地址,用于连接内层主机;另一个是外层 IP 地址,用于在底层网络中寻址对端 VTEP。当一台主机发送帧时,本地 VTEP 根据目的 MAC 查找转发表:如果目的 MAC 在本地,直接二层转发;如果目的 MAC 在远端,则封装成 VXLAN 报文,外层目的 IP 填对端 VTEP 地址,通过底层网络送达。

VTEP 的转发表通常由控制平面或数据平面学习生成。控制平面方式包括 EVPN、OpenFlow 等,数据平面方式则是通过泛洪和学习动态建立。跨数据中心场景中,由于时延和规模限制,通常更推荐使用 EVPN 作为控制平面,避免大规模泛洪。

四、BUM 流量处理:泛洪、组播与头端复制

BUM 指广播(Broadcast)、未知单播(Unknown Unicast)和组播(Multicast)。在传统二层网络中,BUM 流量会在整个广播域内泛洪。VXLAN 中,BUM 流量的处理方式决定了网络的效率和可扩展性,常见有三种:

方式 原理 适用场景
组播 底层网络启用组播,VTEP 加入同一组播组,BUM 报文封装为组播目的 IP 中小规模、底层支持组播
头端复制 入口 VTEP 为每个远端 VTEP 复制一份单播报文,分别发送 大规模、底层不支持组播
EVPN 控制平面 通过 BGP EVPN 发布 MAC/IP 路由,减少未知单播泛洪 跨 DC、大规模、要求高可控性

头端复制的优点是底层网络无需组播,缺点是入口 VTEP 需要维护远端 VTEP 列表,复制数量随规模线性增长。组播方式对底层网络有要求,但入口压力较小。EVPN 则通过控制平面提前分发 MAC 可达信息,把“未知单播”变成“已知单播”,从根本上减少泛洪。

五、分布式网关:让跨子网流量就近转发

传统集中式网关把所有跨子网流量都拉到一台核心网关设备,容易形成瓶颈和绕行。分布式网关把网关功能下沉到每台 VTEP 上,每台 VTEP 都具备三层转发能力,主机所在 VTEP 直接完成跨子网转发,无需绕行到中心设备。其关键机制是:每台 VTEP 上为每个 VNI 配置一个分布式网关 IP 和 MAC,并通过 EVPN 发布该网关 MAC/IP 路由,使远端 VTEP 知道如何到达。

在跨数据中心互联中,分布式网关通常与 EVPN 配合:本 DC 内 VTEP 之间直接转发,跨 DC 流量则通过 DC 边界网关(DCGW)或 EVPN 路由反射器交换路由。这样既保证了本 DC 内流量的就近转发,又实现了跨 DC 的二层扩展和三层互通。

实践提示:规划 VXLAN 时,先确认底层 MTU 是否满足 1550 字节以上;再确认 VNI 全局唯一;最后根据规模选择 BUM 处理方式。跨 DC 场景优先考虑 EVPN 控制平面 + 分布式网关,可显著减少泛洪和绕行。
常见误区:认为 VNI 相同就一定能通。实际上,VNI 相同只是二层域一致,还需要 VTEP 之间外层 IP 可达、隧道建立成功、转发表正确,才能完成封装与解封装。