第179篇:VXLAN 隧道与 VTEP 发现
关键词:VTEP发现、静态VTEP、动态VTEP、PIM、Multicast、Head-End Replication、EVPN Type3
一、引言
在 VXLAN 网络中,源 VTEP 需要知道目的 VTEP 的 IP 地址才能建立隧道并转发数据。VTEP 发现(VTEP Discovery)解决了"谁在同一个 VXLAN 网络中"这个问题。VTEP 发现分为静态发现和动态发现两种方式:静态发现需要手工配置所有 VTEP 地址,适用于小规模网络;动态发现利用组播或控制平面自动发现 VTEP,适用于大规模网络。
二、核心概念
2.1 VTEP 发现方式对比
| 方式 | 机制 | 扩展性 | 适用场景 |
|---|---|---|---|
| 静态 VTEP | 手工配置 VTEP 地址 | 差(O(n²)配置) | 小规模(<10个VTEP) |
| 组播发现 | PIM 组播自动发现 | 中 | 传统数据中心 |
| EVPN 发现 | Type 3 路由自动发现 | 优 | 现代数据中心(推荐) |
2.2 静态 VTEP
静态 VTEP 需要管理员在每台设备上配置所有远端 VTEP 的 IP 地址:
| 优点 | 缺点 |
|---|---|
| 配置简单(小规模) | 配置量随 VTEP 数量线性增长 |
| 不依赖组播协议 | 新增 VTEP 需全网更新配置 |
| 确定性强 | 不支持动态 VTEP 加入 |
2.3 组播发现
利用 IP 组播实现 VTEP 自动发现:
| 组件 | 说明 |
|---|---|
| VNI-to-MAC 映射 | 将 VNI 映射到组播组地址 |
| PIM(Protocol Independent Multicast) | 组播路由协议,维护组播树 |
| 组播转发 | BUM 流量通过组播树泛洪到所有 VTEP |
2.4 EVPN 动态发现(推荐)
EVPN Type 3 路由(IMULT,Inclusive Multicast Ethernet Tag Route)实现 VTEP 自动发现:
| 特性 | 说明 |
|---|---|
| 无组播依赖 | 不依赖 Underlay 组播 |
| 精确发现 | 仅发现同一 VNI 的 VTEP |
| 单播 BUM | BUM 流量通过 Head-End Replication(单播复制) |
| 扩展性优 | 支持大规模 VTEP |
2.5 VTEP 的位置与类型
| VTEP 位置 | 设备类型 | 特点 |
|---|---|---|
| Leaf 交换机 | 物理交换机 | 分布式 VTEP,每台 Leaf 独立封装/解封装 |
| Spine 交换机 | 集中式 VTEP | 集中终结所有 VXLAN,配置简单但易成瓶颈 |
| Hypervisor | 虚拟交换机(OVS) | 软件 VTEP,直接在虚拟机所在宿主机完成封装 |
| 云管平台 | 集中控制器 | 通过 API 下发 VTEP 配置,适用于超大规模 |
2.6 VXLAN 隧道生命周期

2.7 NVE(Network Virtual Endpoint)接口
NVE 是 VTEP 的逻辑配置接口,用于管理 VXLAN 隧道:
# NVE 接口配置
[NVE1] interface Nve1
[NVE1-Nve1] source LoopBack 0
# VTEP 隧道源 IP 使用 Loopback 接口
# 方式一:静态远端 VTEP
[NVE1-Nve1] vni 100 head-end peer-list 10.1.2.1
[NVE1-Nve1] vni 100 head-end peer-list 10.1.3.1
# 方式二:EVPN 动态发现(推荐)
[NVE1-Nve1] vni 100 head-end peer-list protocol bgp
[NVE1-Nve1] vni 200 head-end peer-list protocol bgp
多 VNI 隧道复用:同一对 VTEP 之间可以复用一条 VXLAN 隧道承载多个 VNI,外层 IP 相同,通过 VXLAN 头中的 VNI 字段区分不同的虚拟网络。
2.8 隧道健康检测
VTEP 通过以下机制检测隧道健康状态:
# 方式一:BFD for VXLAN(快速检测)
[NVE1] bfd bind peer-ip 10.1.2.1 source-ip 10.1.1.1
[NVE1] bfd detect-multiplier 3
[NVE1] bfd min-tx-interval 50
# 检测间隔 50ms, 3 倍超时 = 150ms
# 方式二:EVPN BGP KeepAlive
# 如果 BGP 会话中断 → VTEP 不可达 → 隧道自动 Down
# 默认 KeepAlive 60s, HoldTimer 180s
# 查看隧道状态
<NVE1> display vxlan tunnel
Tunnel Information:
Tunnel ID Source Destination VNI State Type
0x1000001 10.1.1.1 10.1.2.1 1000 Up dynamic(evpn)
0x1000002 10.1.1.1 10.1.3.1 1000 Up dynamic(evpn)
0x1000003 10.1.1.1 10.1.2.1 2000 Up dynamic(evpn)
2.9 BUM 流量复制数量分析
# Ingress Replication 的复制开销:
# VNI 100 下有 N 个远端 VTEP:
# 每个 BUM 帧 → 复制 N-1 份
# 当 N=50 时:
# 每个广播包在源 VTEP 被复制 49 次
# 源 VTEP 的出向带宽占用 = 原始带宽 × 49
# 当 N=500 时:
# 每个广播包被复制 499 次 → CPU 和带宽压力巨大
# BUM 优化策略:
# 1. ARP 抑制(EVPN Type 5 Gateway MAC/IP 抑制 ARP 广播)
# 2. 优化 MAC 学习(控制平面快速收敛,减少未知单播)
# 3. 分布式网关(缩小广播域范围,减少 BUM 传播范围)
# 4. 限制 VNI 内的 Leaf 数量(单个 VNI 建议不超过 100 个 Leaf)

三、技术细节
3.1 Head-End Replication(HER)
当使用 EVPN 发现 VTEP 时,BUM 流量通过 Head-End Replication 转发:

3.2 VNI 到组播组映射
组播发现模式下,VNI 需要映射到组播组地址:
| 映射方式 | 公式 | 说明 |
|---|---|---|
| 自动映射 | 225.0.(VNI>>8)&255.(VNI&255) | RFC 7348 推荐 |
| 手动映射 | 管理员指定 | 灵活但需统一 |
3.3 EVPN Type 3 路由结构
| 字段 | 长度 | 说明 |
|---|---|---|
| Route Type | 1字节 | 固定为 3 |
| ETag | 2字节 | Ethernet Tag(等价于 VNI) |
| IP Address | 4字节 | VTEP 的 IP 地址 |
四、实战配置/案例分析
4.1 EVPN VTEP 发现配置
# ========== VTEP1 配置 ==========
[VTEP1] sysname EVPN-VTEP1
# VXLAN VNI
[EVPN-VTEP1] vxlan vni 1000
[EVPN-VTEP1-vxlan-vni-1000] route-distinguisher 10.1.1.1:1000
[EVPN-VTEP1-vxlan-vni-1000] route-target both evpn 1000:1000
[EVPN-VTEP1-vxlan-vni-1000] vxlan-source-interface LoopBack 0
[EVPN-VTEP1-vxlan-vni-1000] discovery mode evpn
# 使用EVPN动态发现
# BGP EVPN
[EVPN-VTEP1] bgp 65001
[EVPN-VTEP1-bgp-65001] router-id 10.1.1.1
[EVPN-VTEP1-bgp-65001] peer 10.1.2.1 as-number 65001
[EVPN-VTEP1-bgp-65001] peer 10.1.2.1 connect-interface LoopBack 0
[EVPN-VTEP1-bgp-65001] address-family evpn
[EVPN-VTEP1-bgp-65001-evpn] peer 10.1.2.1 enable
# 自动通告Type3路由(默认行为)
# 无需额外配置, VTEP自动通告自己的Type3路由
4.2 静态 VTEP 配置(小规模场景)
# ========== 静态VTEP配置 ==========
[VTEP1] vxlan vni 1000
[VTEP1-vxlan-vni-1000] vxlan-source-interface LoopBack 0
[VTEP1-vxlan-vni-1000] peer 10.1.2.1 vni 1000
[VTEP1-vxlan-vni-1000] peer 10.1.3.1 vni 1000
[VTEP1-vxlan-vni-1000] peer 10.1.4.1 vni 1000
# 手工配置所有远端VTEP
4.3 故障排查:VTEP 未自动发现
故障场景:新增 VTEP 后,原有 VTEP 未自动发现新成员。
# Step 1: 检查Type3路由
<EVPN-VTEP1> display bgp evpn routing-table type 3
# 无新增VTEP的Type3路由
# Step 2: 检查BGP EVPN邻居状态
<EVPN-VTEP1> display bgp evpn peer 10.1.5.1
State: Idle (BGP未建立)
# Step 3: 检查Underlay IP连通性
<EVPN-VTEP1> ping -a 10.1.1.1 10.1.5.1
# 超时
# Step 4: 检查IGP路由表
<EVPN-VTEP1> display ip routing-table 10.1.5.1
# 无路由到10.1.5.1
# 根因: 新增VTEP未加入Underlay IGP, 或IS-OSPF邻居未建立
# Step 5: 在新增VTEP上配置IGP
[VTEP-NEW] isis 1
[VTEP-NEW-isis1] network-entity 49.0001.0000.0000.0005.00
[VTEP-NEW-isis1] import-route direct
4.4 故障排查:VXLAN 隧道 Up 但 VM 不通
故障场景:VXLAN 隧道显示 Up,但跨 Leaf 的 VM 之间无法 ping 通。
# Step 1: 检查 VXLAN 隧道状态
<Leaf1> display vxlan tunnel
# 隧道 Up
# Step 2: 检查 MAC 学习(Type 2 路由)
<Leaf1> display bgp evpn routing-table type 2 vni 1000
# 对端 VM 的 MAC 地址是否存在?
# Step 3: 如果 Type 2 路由缺失,检查 MAC 表
<Leaf2> display mac-address vlan 1000
# VM2 的 MAC 是否已学习到?
# Step 4: 抓包分析 VXLAN 封装
<Leaf1> packet-capture interface Nve1
# 检查 VXLAN 报文是否正常发出
# 关注外层目的 IP 是否正确指向远端 VTEP
# Step 5: 检查 PMTU(路径 MTU)
<Leaf1> display interface Nve1
# MTU 是否匹配?VXLAN 额外开销 50 字节(8 以太网 + 20 IP + 8 UDP + 8 VXLAN)
# Underlay MTU 需要 ≥ 1550 才能承载 1500 的 VM 帧
4.5 VXLAN 故障排查清单
| 现象 | 排查步骤 | 关键命令 | 常见根因 |
|---|---|---|---|
| 隧道 Down | 1. 检查 BGP EVPN 邻居 2. 检查 Underlay 连通性 | display bgp evpn peer | Underlay 路由缺失 |
| VTEP 未发现 | 1. 检查 Type3 路由 2. 检查 NVE 配置 | display bgp evpn routing-table type 3 | NVE 发现模式未设为 evpn |
| VM 间不通 | 1. 检查 Type2 路由 2. 检查 MAC 表 | display bgp evpn routing-table type 2 | MAC 未学习到 |
| 大包不通 | 1. 检查 MTU 2. 检查 PMTU | display interface Nve1 | Underlay MTU < 1550 |
| 隧道频繁 Up/Down | 1. 检查链路状态 2. 检查 BFD | display bfd session | 链路抖动 |
| BUM 泛洪风暴 | 1. 检查 HER 复制 2. 检查 ARP | display vxlan statistics | 大量 ARP 广播 |
五、总结
| 项目 | 要点 |
|---|---|
| VTEP 发现 | 解决"谁在同一 VXLAN 网络中"的问题 |
| 静态发现 | 手工配置,小规模简单直接 |
| 组播发现 | PIM 组播,需要 Underlay 支持组播 |
| EVPN 发现 | Type 3 路由,推荐方式,无需组播 |
| HER | 源端复制 BUM 流量,取代组播泛洪 |
思考
- Head-End Replication 由源 VTEP 复制报文到所有远端 VTEP。如果 VTEP 数量很多(如 100 个),源 VTEP 的 CPU 和带宽压力如何?
- EVPN Type 3 路由的 Next-Hop 是 VTEP 的 IP 地址。如果 VTEP 的 IP 地址变更,Type 3 路由如何快速更新?
- 组播发现和 EVPN 发现在 BUM 流量处理上有什么区别?哪种方式的带宽效率更高?
下篇预告:第180篇:VXLAN underlay/overlay 架构设计