第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字节 序列号/长度标识

VXLAN 报文结构 - 图示

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 封装过程

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 硬件加/解封装

思考

  1. VXLAN 使用 UDP 传输,UDP 本身不可靠。如果 VXLAN 隧道上发生报文丢失,上层协议如何应对?
  2. VXLAN 头部中的 VNI 是 24 位。如果使用 Control Word,Control Word 中是否也携带 VNI 信息?
  3. VXLAN 外层 IP 的目的地址如何确定?如果目的 VTEP 有多个 IP 地址,选择哪个作为隧道目的地址?

下篇预告:第179篇:VXLAN 隧道与 VTEP 发现