第179篇:VXLAN 隧道与 VTEP 发现
关键词
VTEP、VXLAN 隧道、隧道发现、Head-end Replication、Ingress Replication、EVPN 控制面
一、VTEP(VXLAN Tunnel End Point)
1.1 什么是 VTEP
VTEP(VXLAN Tunnel End Point) 是 VXLAN 隧道的端点,负责:
- 封装:将客户以太网帧封装到 VXLAN+UDP+IP 中
- 解封装:从 VXLAN+UDP+IP 中还原客户以太网帧
- VNI 映射:VNI ↔ Bridge Domain 的映射
- MAC 学习:学习远端 MAC 地址与 VTEP IP 的映射
VTEP1 VTEP2MAC-VRF VNI 100 VTEP IP 1.1.1.1 MAC-VRF VNI 100 VTEP IP 2.2.2.2 │ │ └─────────── VXLAN ────────┘ 隧道
1.2 VTEP 的位置
| 位置 | 设备类型 | 特点 |
|---|---|---|
| Spine | 集中式 VTEP | 终结所有 VXLAN,配置简单但瓶颈 |
| Leaf | 分布式 VTEP | 每台 Leaf 都是 VTEP,扩展性好 |
| 软件 VTEP | 虚拟交换机(OVS) | 运行在 Hypervisor 上 |
| 硬件 VTEP | 物理交换机 | 高性能硬件卸载 |
二、VTEP 的发现方式
VTEP 之间需要知道彼此的 IP 地址才能建立 VXLAN 隧道。发现方式主要有三种:
2.1 方式一:手动配置(Static)
# 在 VTEP1 上手动指定远端 VTEP
interface Nve1
source 1.1.1.1
vni 100 head-end peer-list 2.2.2.2 # 指定对端 VTEP
vni 100 head-end peer-list 3.3.3.3
优点:无需控制面协议,简单 缺点:扩展性差,变更需手工修改
2.2 方式二:组播发现(Multicast)
利用 Underlay 组播,VTEP 自动加入组播组:
Underlay 组播配置:
VTEP1、VTEP2 加入组播组 239.1.1.1
当 VTEP1 需要发送 BUM 到 VTEP2 时:
源 IP = VTEP1, 目的 IP = 239.1.1.1(组播)
PIM 组播路由将流量复制到 VTEP2
VTEP 从组播组收到 VXLAN 包后:
学习到远端 VTEP 的存在
建立到远端 VTEP 的单播隧道
优点:自动发现 缺点:需要 Underlay 支持组播(PIM)
2.3 方式三:EVPN 控制面(推荐)
这是当前主流的 VTEP 发现方式:
VTEP1 通过 MP-BGP EVPN 发布 Type 3(IMET)路由:
Type 3 路由(IMET):
RD: 100:1
Ethernet Tag ID: 0
IP Address: 1.1.1.1(VTEP1 的隧道源 IP)
VNI: 100
VTEP2 收到后:
知道 VNI 100 的远端 VTEP = 1.1.1.1
建立到 1.1.1.1 的 VXLAN 隧道
优点: - 无需组播 - 控制面感知所有 VTEP - 支持增量部署 - BGP 策略丰富
三、VXLAN 隧道建立与维护
3.1 隧道生命周期
VTEP1 VTEP2
│ │
│ 1. EVPN Type 3 (IMET) │
│────────────────────────────▶│
│ │
│ 2. EVPN Type 3 (IMET) │
│◀────────────────────────────│
│ │
│ 3. 隧道表添加条目 │
│ VTEP1 → VTEP2, VNI 100 │
│ │
│ 4. MAC 学习(通过 Type 2) │
│◀═══════════════════════════▶│
│ │
│ 5. 数据面隧道活跃 │
│◀══════ VXLAN 数据流 ═══════▶│
│ │
3.2 隧道表
<VTEP1> display vxlan tunnel
Tunnel Information:
Tunnel ID Source Destination VNI State Type
0x1000001 1.1.1.1 2.2.2.2 100 Up dynamic(evpn)
0x1000002 1.1.1.1 3.3.3.3 100 Up dynamic(evpn)
0x1000003 1.1.1.1 2.2.2.2 200 Up dynamic(evpn)
3.3 隧道健康检测
VTEP 可以通过以下方式检测隧道健康:
1. BFD for VXLAN
# 在华为设备上启用
interface Nve1
bfd bind peer-ip 2.2.2.2 source-ip 1.1.1.1
bfd detect-multiplier 3
bfd min-tx-interval 50
2. EVPN BGP KeepAlive
如果 BGP 会话中断 → VTEP 不可达 → 隧道 Down
3. PMTU 检测
检测隧道 MTU 是否一致
四、Head-end Replication(Head-end 复制)
4.1 概念
Head-end Replication 也叫 Ingress Replication,是 VTEP 处理 BUM 流量的方式:
VTEP1 需要广播一个帧到 VNI 100:
VTEP1 的 BUM 处理:
查 VNI 100 的远端 VTEP 列表:
VTEP2 (2.2.2.2)
VTEP3 (3.3.3.3)
VTEP1 复制帧 → 分别封装发送到 VTEP2 和 VTEP3
VTEP1 发送 2 个 VXLAN 包(一个到 VTEP2,一个到 VTEP3)
4.2 与组播方式对比
| 特性 | Ingress Replication | 组播复制 |
|---|---|---|
| Underlay 要求 | 仅 IP 路由 | 需要 PIM 组播 |
| 复制点 | Ingress VTEP(Head-end) | Underlay 核心 |
| CPU 负载 | 高(VTEP 逐包复制) | 低(硬件复制) |
| 带宽效率 | 每条流占用 1:N 倍带宽 | 核心层高效 |
| 配置复杂度 | 低 | 高 |
| 适用规模 | 小-中 | 大 |
当前主流选择:Ingress Replication - EVPN 控制面自动维护远端 VTEP 列表 - 不依赖 Underlay 组播 - 在 Leaf 数量不超过 100 时性能可接受
4.3 复制数量
VNI 100 下有 N 个远端 VTEP:
Ingress Replication:
每个 BUM 帧 → 复制 N-1 份
如果 N=50,每个广播包在 VTEP 被复制 49 次
如果 N=500,每个广播包被复制 499 次 → 性能压力
解决:EVPN 的 BUM 流量优化
- ARP 抑制(减少 ARP 广播)
- 优化 MAC 学习(减少未知单播)
- 使用分布式网关(减少广播域范围)
五、NVE 接口配置
5.1 NVE(Network Virtual Endpoint)
NVE 是 VTEP 的逻辑接口:
interface Nve1
description VTEP Interface for DC
source loopback0 # VTEP 源 IP(Loopback)
#
# 手动指定远端 VTEP(方式一)
vni 100 head-end peer-list 2.2.2.2
vni 100 head-end peer-list 3.3.3.3
#
# 或者通过 EVPN 自动学习(方式三,推荐)
vni 100 head-end peer-list protocol bgp
5.2 多 VNI 的隧道复用
同一 VTEP 可以服务多个 VNI,隧道可以复用:
interface Nve1
source loopback0
vni 100 head-end peer-list protocol bgp # VNI 100
vni 200 head-end peer-list protocol bgp # VNI 200
如果 VTEP2 同时在 VNI 100 和 VNI 200 中:
VTEP1→VTEP2 只需要一条 VXLAN 隧道
VNI 不同,但外层 IP 相同
在 VXLAN 头中通过 VNI 区分
六、实际排查案例
6.1 隧道无法建立
现象:VM 无法跨 Leaf 通信
排查步骤:
1. 检查 NVE 接口状态
<VTEP> display interface Nve1
→ NVE1 是否 Up
2. 检查 BGP EVPN 邻居
<VTEP> display bgp evpn peer
→ BGP 会话是否 Established
3. 检查 EVPN 路由
<VTEP> display bgp evpn all routing-table
→ Type 2 和 Type 3 路由是否正确收到
4. 检查 VXLAN 隧道
<VTEP> display vxlan tunnel
→ 隧道是否 Up
5. 检查 Underlay 连通性
<VTEP> ping -a 1.1.1.1 2.2.2.2
→ Loopback 之间是否可达
七、总结
| 知识点 | 核心要点 |
|---|---|
| VTEP | VXLAN 隧道端点,负责封装/解封装 |
| VTEP 发现 | 静态、组播、EVPN(推荐) |
| VXLAN 隧道 | VTEP 之间的逻辑隧道 |
| Ingress Replication | BUM 由 Ingress VTEP 逐包复制 |
| NVE 接口 | VTEP 的逻辑配置接口 |
| EVPN 控制面 | 通过 Type 3 路由自动发现远端 VTEP |
八、思考
- VTEP 在 VXLAN 中扮演什么角色?它的主要功能是什么?
- VTEP 的三种发现方式(静态、组播、EVPN)各有什么优缺点?
- Ingress Replication 和组播复制的区别是什么?为什么 Ingress Replication 是当前主流?
- BUM 流量在 Ingress Replication 模式下如何转发?
- 同一 VTEP 在不同 VNI 之间如何复用隧道?
下篇预告:第180篇《VXLAN underlay/overlay 架构设计》——从整体架构角度,理解 VXLAN 网络的 Underlay 和 Overlay 设计原则。