第178篇:VXLAN 报文封装与 UDP 端口
关键词:VXLAN封装、VNI、UDP 4789、Control Word、外层IP、外层UDP、NVE
一、引言
VXLAN(Virtual Extensible LAN,虚拟可扩展局域网)是由 VMware 提出并由 IETF 标准化的 overlay 封装协议(RFC 7348)。它通过将二层帧封装在 UDP 数据报中,在 IP 网络上实现二层的延伸。VXLAN 的核心设计理念是"将二层封装进三层"——利用现有的 IP 路由基础设施承载虚拟二层网络,从而实现跨物理网络的大规模二层扩展。
二、核心概念
2.1 VXLAN 报文结构
VXLAN 封装在原始以太网帧之外添加了四层头部:
| 层级 | 头部 | 长度 | 说明 |
|---|---|---|---|
| 外层以太网 | Ethernet Header | 14字节 | VTEP 间的物理链路封装 |
| 外层 IP | IPv4/IPv6 Header | 20/40字节 | VTEP 间的 IP 路由 |
| 外层 UDP | UDP Header | 8字节 | 固定端口 4789 |
| VXLAN | VXLAN Header | 8字节 | 含 24 位 VNI |
| 内层 | Ethernet Frame | 可变 | 原始客户二层帧 |
| 可选 | Control Word | 4字节 | 序列号/长度标识 |

2.2 VXLAN 头部字段详解
| 字段 | 长度 | 说明 |
|---|---|---|
| Flags | 8位 | 位7=1表示VNI有效 |
| Reserved | 24位 | 保留 |
| VNI | 24位 | Virtual Network Identifier(1-16777215) |
| Reserved | 32位 | 保留 |
2.3 UDP 端口 4789
VXLAN 固定使用 UDP 4789 端口:
| 端口 | 方向 | 说明 |
|---|---|---|
| 4789 | 源端口 | 固定 4789(部分实现使用动态端口) |
| 4789 | 目的端口 | 固定 4789 |
使用 UDP 的原因: - 穿越 NAT(UDP 比非标准协议更容易穿越防火墙) - 支持多租户(不同 VNI 共享同一端口) - 硬件 ASIC 支持(多数交换机 ASIC 原生支持 VXLAN)
三、技术细节
3.1 VXLAN 封装过程

3.2 MTU 计算
VXLAN 封装增加了额外的头部开销,需要调整 MTU:
| 头部 | 开销 |
|---|---|
| 外层以太网 | 14 字节 |
| 外层 IP(IPv4) | 20 字节 |
| 外层 UDP | 8 字节 |
| VXLAN Header | 8 字节 |
| Control Word | 4 字节(可选) |
| 总开销 | 50-54 字节 |
MTU 规划: - 客户 MTU = 1500 → Underlay MTU ≥ 1554 - 客户 MTU = 9000(Jumbo) → Underlay MTU ≥ 9054
3.3 VXLAN 与 Geneve/NVGRE 对比
| 特性 | VXLAN | Geneve | NVGRE |
|---|---|---|---|
| 封装协议 | UDP | UDP | GRE(非UDP) |
| 端口 | 4789 | 6081(默认) | 无(GRE over IP,协议号47) |
| VNI/VID | 24位 | 24位 | 24位 |
| 头部开销 | 50字节 | 可变 | 66字节 |
| 扩展性 | 固定 | 灵活选项 | 固定 |
| IETF RFC | 7348 | 8926 | 草案 |
四、实战配置/案例分析
4.1 华为 VXLAN 配置
# ========== VTEP配置 ==========
[VTEP1] sysname VXLAN-PE1
# 配置VXLAN源接口(LoopBack)
[VXLAN-PE1] interface LoopBack 0
[VXLAN-PE1-LoopBack0] ip address 10.1.1.1 32
# 配置VXLAN隧道接口
[VXLAN-PE1] interface Tunnel 1 mode vxlan
[VXLAN-PE1-Tunnel1] tunnel source LoopBack 0
[VXLAN-PE1-Tunnel1] tunnel destination 10.1.2.1
[VXLAN-PE1-Tunnel1] tunnel vni 1000
# 配置CE接口VNI映射
[VXLAN-PE1] interface 100ge 1/0/1
[VXLAN-PE1-100GE1/0/1] vxlan vni 1000
# 配置BD绑定VXLAN
[VXLAN-PE1] bridge-domain 100
[VXLAN-PE1-bridge-domain-100] interface 100ge 1/0/1
[VXLAN-PE1-bridge-domain-100] interface Tunnel 1
4.2 验证 VXLAN 封装
# 查看VXLAN隧道状态
<VXLAN-PE1> display vxlan tunnel
Tunnel Interface: Tunnel1
Mode: VXLAN
Source: 10.1.1.1
Destination: 10.1.2.1
VNI: 1000
State: Up
# 抓包验证VXLAN封装
<VXLAN-PE1> packet-capture interface Tunnel 1 start
<VXLAN-PE1> packet-capture display
# 外层: UDP 4789 → 4789
# VXLAN: VNI=1000
# 内层: 原始以太网帧
4.3 故障排查:VXLAN 隧道 Down
故障场景:VXLAN 隧道状态为 Down,Overlay 网络中断。
# Step 1: 检查隧道状态
<VXLAN-PE1> display vxlan tunnel
Tunnel1: Down
Error: Destination unreachable
# Step 2: 检查Underlay连通性
<VXLAN-PE1> ping -a 10.1.1.1 10.1.2.1
# 超时! Underlay不可达
# Step 3: 检查Underlay路由
<VXLAN-PE1> display ip routing-table 10.1.2.1
# 无路由到10.1.2.1
# Step 4: 检查Underlay IGP
<VXLAN-PE1> display isis peer
# IS-IS邻居Down, Underlay路由丢失
# Step 5: 恢复Underlay后验证
<VXLAN-PE1> display vxlan tunnel
Tunnel1: Up # VXLAN恢复
五、总结
| 项目 | 要点 |
|---|---|
| VXLAN 封装 | 二层帧 → VXLAN头 → UDP → IP → 以太网(5层封装) |
| VNI | 24位虚拟网络标识,支持 16M 个独立网络 |
| UDP 4789 | 标准 VXLAN 端口,穿越防火墙友好 |
| MTU 开销 | 额外 50-54 字节,Underlay MTU 需相应增大 |
| 硬件支持 | 多数现代 ASIC 支持 VXLAN 硬件加/解封装 |
思考
- VXLAN 使用 UDP 传输,UDP 本身不可靠。如果 VXLAN 隧道上发生报文丢失,上层协议如何应对?
- VXLAN 头部中的 VNI 是 24 位。如果使用 Control Word,Control Word 中是否也携带 VNI 信息?
- VXLAN 外层 IP 的目的地址如何确定?如果目的 VTEP 有多个 IP 地址,选择哪个作为隧道目的地址?
下篇预告:第179篇:VXLAN 隧道与 VTEP 发现