EVPN / VXLAN 技术深度指南
这是一套以网络工程师视角整理的 EVPN/VXLAN 深度复习材料。重点不是背术语,而是把 Underlay → MP-BGP EVPN Control Plane → RD/RT Policy → VRF RIB/FIB → VXLAN Data Plane 串成一个完整的故障排查与 Traffic Flow 模型。
1. 核心 Mental Model:先分清 Control Plane 与 Data Plane
Control Plane
EVPN over MP-BGP,通过 TCP 179 交换 MAC、IP Prefix、VTEP Next-Hop、RD、RT 等可达性与策略信息。
Data Plane
VXLAN 使用 UDP 4789 把真实用户流量封装在 VTEP 到 VTEP 的 Outer IP Packet 中。
Underlay
IP Fabric(常见 eBGP / OSPF / IS-IS)只需要确保所有 VTEP Loopback 彼此可达,并提供 ECMP。
因此,当你查看 Type-2、Type-5、RD、RT、VRF Import Policy 时,你是在看 Control Plane。这时并没有发生用户 Packet 的 VXLAN Encapsulation。只有真正有数据转发时,才进入 Data Plane。
2. 为什么现代 Data Center 采用 EVPN/VXLAN,而不是只用 VLAN + STP
传统 VLAN + Trunk + STP 并不是不能工作。两个机柜、十几个 VLAN 时完全可行。真正的问题是规模、故障域、带宽利用率与 Multi-Tenancy。
| 传统问题 | EVPN/VXLAN 的改善 |
|---|---|
| STP 为避免 Layer-2 Loop 会 Block 冗余链路 | Spine-Leaf Underlay 全部是 Routed Link,配合 ECMP,所有 Uplink 可同时使用 |
| 大 Layer-2 Broadcast Domain 扩展后故障影响大 | 物理网络保持 Layer-3,Layer-2 是 Overlay 上的逻辑 Segment |
| 增加 VLAN 往往要在大量中间设备上 Extend Trunk | 中间 Spine 不需要 Tenant VLAN;只需要路由 Outer VTEP IP |
| VLAN ID 只有约 4094 个 usable IDs | VNI 是 24-bit,Overlay ID 空间约 16.7 million |
| 多租户会出现重复 VLAN ID 与 Overlapping IP | VNI + VRF + RD/RT 提供全局隔离与唯一性 |
3. Spine-Leaf + EVPN/VXLAN 整体架构
为什么 Leaf 与 Leaf 通常不直接互联?
典型 Clos/Spine-Leaf 设计中,每个 Leaf 向上连接所有 Spine。这样路径高度规则:Leaf → Spine → Leaf。没有复杂的横向二层互联,Underlay 没有传统 Layer-2 Loop,因此一般不依赖 STP 来阻断 Fabric 链路。
Spine 在 Data Plane 中通常只看 Outer IP Header。它不需要知道 Tenant 的 VLAN、MAC 或 Inner IP。因此你可以把 Spine 看作一个高速、可预测的 IP Transit 层。
4. Underlay 与 Overlay
Underlay
Underlay 的目标非常简单:让所有 VTEP Loopback IP 互相可达。例如:
Leaf A VTEP Loopback: 10.255.0.1/32
Leaf B VTEP Loopback: 10.255.0.2/32
Underlay requirement:
10.255.0.1 <---- IP Reachability / ECMP ----> 10.255.0.2
Underlay 可以使用 eBGP、OSPF 或 IS-IS。现代大规模 Data Center 很常见 eBGP Underlay。
Overlay
Overlay 建立在 Underlay IP 之上。EVPN 负责学习 Endpoint/Prefix,VXLAN 负责 Tunnel Encapsulation。
5. EVPN 与 MP-BGP:Control Plane 的核心
EVPN(Ethernet VPN)本身不是“VXLAN 封装”。EVPN 是一个 BGP Address Family,它使用 MP-BGP 传播二层与三层 Overlay 的可达性信息。
Transport
MP-BGP 使用 TCP 179。EVPN Route 是 BGP Update 中的 NLRI / Attributes。
传播什么
MAC、Host IP、IP Prefix、VTEP Next-Hop、RD、RT、Ethernet Segment 等。
EVPN 的价值之一,是减少传统 Flood-and-Learn。远端 Leaf 不需要靠全网 Flood 才知道某个 Host 在哪里;可以通过 Type-2 提前学习 Endpoint Reachability。
6. VXLAN:真正的 Data Plane Encapsulation
VXLAN(Virtual Extensible LAN)把原始 Ethernet Frame 封装在 UDP/IP 外层,通过 Routed Underlay 从 Ingress VTEP 送到 Egress VTEP。
| 字段 | 意义 |
|---|---|
| Outer Source IP | Ingress VTEP IP |
| Outer Destination IP | Egress VTEP IP |
| UDP Destination Port | 标准 VXLAN 使用 4789 |
| VNI | 24-bit VXLAN Network Identifier |
| Inner Ethernet/IP | 真正的 Tenant Packet |
Outer Ethernet
Outer IP: 10.255.0.1 -> 10.255.0.2
UDP: source ephemeral -> destination 4789
VXLAN: VNI = 1010
Inner Ethernet:
Host-A MAC -> Host-C MAC
Inner IP:
192.168.10.10 -> 192.168.10.20
Spine 只需要路由 10.255.0.1 → 10.255.0.2 的 Outer IP,不需要理解内部 Tenant MAC/IP。
7. VLAN、L2VNI、VRF、L3VNI 的正确对应关系
| 对象 | 典型关系 | 含义 |
|---|---|---|
| VLAN / Bridge Domain | 1 个 Broadcast Domain | Leaf 本地 Layer-2 Segment |
| L2VNI | 通常 1 个 L2VNI ↔ 1 个 Bridge Domain/VLAN | 将这个 Layer-2 Segment 延伸到 Overlay |
| VRF | 一个 VRF 可包含多个 L2VNI/Subnet | 独立的 Layer-3 Routing Table / Tenant Routing Context |
| L3VNI | 常见 1 个 VRF ↔ 1 个 L3VNI | Symmetric IRB 中跨 VTEP 的 Routed Transit Context |
例子:同一个 Customer-A / VRF PROD
VRF PROD
VLAN 10 -> L2VNI 1010 -> 192.168.10.0/24
VLAN 20 -> L2VNI 1020 -> 192.168.20.0/24
VLAN 30 -> L2VNI 1030 -> 192.168.30.0/24
VRF PROD -> L3VNI 50001
为什么 VNI 数量远大于 VLAN?
VLAN ID 是局部的 Layer-2 Identifier。不同 Leaf、不同 Tenant 可以重复使用 VLAN 100。VNI 是 Overlay Identifier,用于在更大的 Fabric 中区分逻辑网络。例如:
Leaf 1:
VLAN 100 -> Tenant A -> L2VNI 10100
Leaf 50:
VLAN 100 -> Tenant B -> L2VNI 20200
两个地方都叫 VLAN 100,但它们不是同一个 Overlay 网络。
8. RD 与 RT:Uniqueness 与 Policy
RD — Route Distinguisher
RD 解决的是“如果两个 VRF 都有相同 Prefix,BGP 怎么把它们当成不同 VPN Route?”的问题。它让 VPN Route 在 BGP 中保持唯一。
Tenant-A VRF PROD: RD 65000:1 + 192.168.10.0/24
Tenant-B VRF PROD: RD 65000:2 + 192.168.10.0/24
虽然 Prefix 相同,但 VPN NLRI 不同。
RD 不决定 Route 能否被 Import。
RT — Route Target
RT 是 BGP Extended Community,用于 Import/Export Policy。发送方 Export Route 时附带 RT;接收方对应 VRF / EVPN Instance 配置匹配的 Import RT,Route 才会进入该 Context。
Leaf B advertises:
Prefix: 192.168.20.0/24
RT: 65000:101
Leaf A / VRF PROD:
import RT 65000:101
Result:
Route can be imported into VRF PROD.
更严谨的 Scope
入门时常说“RD/RT = per VRF”,这只是简化。真实 EVPN 中:
- L2 EVPN Instance / MAC-VRF / EVI 可以有自己的 RD 与 RT,常关联 L2VNI。
- IP-VRF 也可以有自己的 RD 与 RT,常关联 L3VNI 与 Type-5。
- Cisco 等平台可能 Auto-Derive RD/RT,具体格式依 NX-OS Design 而异。
9. EVPN Route Types
Type-1
Ethernet Auto-DiscoveryEVPN Multi-Homing、ESI、快速收敛相关。
Type-2
MAC/IP Advertisement学习 Host MAC 与可选 Host IP。
Type-3
IMETInclusive Multicast / BUM membership。
Type-4
Ethernet SegmentMulti-Homing / Designated Forwarder。
Type-5 — IP Prefix Route
发布 Layer-3 IP Prefix Reachability,常用于 IP-VRF / L3 routing。
10. Type-2:MAC/IP Advertisement Route
Type-2 是 Endpoint-Level Reachability。它告诉其他 VTEP:“这个 MAC / Host IP 在我的 VTEP 后面。”
Host B:
MAC: 0050.56aa.bb20
IP: 192.168.20.20
VLAN: 20
L2VNI: 1020
Local Leaf: Leaf B
VTEP: 10.255.0.2
Leaf B advertises Type-2:
MAC/IP -> Next Hop 10.255.0.2
RT -> L2 EVPN Instance import/export policy
远端 Leaf 学到后,就可以把 MAC/IP 放入相应 EVPN/L2RIB 状态,而不需要依赖全网 Flood 才知道 Endpoint 在哪里。
11. Type-5:IP Prefix Route
Type-5 发布的是 Prefix,不是单个 Host MAC。例如 192.168.20.0/24。
EVPN Type-5 example:
Prefix: 192.168.20.0/24
Next Hop: 10.255.0.2
RD: 65000:1
RT: 65000:101
重点排障逻辑:
先在
show bgp l2vpn evpn 确认 Type-5 存在。检查 Route 携带的 RT 是否匹配目标 VRF 的 Import RT。
用
show ip route vrf <VRF> 确认 Route 真正进入 VRF RIB。再看 FIB / NVE / Data Plane。
12. Same Subnet 跨 Leaf:从 EVPN Control Plane 到 VXLAN Data Plane
Control Plane
- Leaf B 从本地 Interface 学到 Host C。
- Leaf B 产生 Type-2 Route,发布 Host C MAC/IP,Next-Hop = VTEP B。
- Leaf A 通过 MP-BGP EVPN 收到 Type-2,并安装到相应 L2VNI / L2RIB。
Data Plane
- Host A 发给同 Subnet Host C。
- Leaf A Lookup,发现 Host C 在 Remote VTEP B。
- Leaf A 用 L2VNI 1010 做 VXLAN Encapsulation。
- Spine 只路由 Outer IP 到 VTEP B。
- Leaf B Decapsulate,把原始 Ethernet Frame 送给 Host C。
13. Inter-Subnet:VLAN 10 → VLAN 20(Symmetric IRB)
Customer-A / VRF PROD
L3VNI 50001
Host A:
VLAN 10 / L2VNI 1010
IP 192.168.10.10
Leaf A
Host B:
VLAN 20 / L2VNI 1020
IP 192.168.20.20
Leaf B
完整 Traffic Flow
- Host A 判断
192.168.20.20不在本地 Subnet,于是送到 Default Gateway。 - Default Gateway 通常是 Distributed Anycast Gateway,在所有承载该 VLAN 的 Leaf 上使用相同 Gateway IP/MAC。
- Ingress Leaf A 在 VRF PROD 进行 Layer-3 Route Lookup。
- EVPN Control Plane 已让 Leaf A 知道 Destination Prefix/Endpoint 位于哪个 Remote VTEP。
- Symmetric IRB 中,跨 VTEP Routed Transit 使用 L3VNI 50001。
- Leaf B 收到 VXLAN Packet 后 Decapsulate,进入同一个 VRF,再把流量 Route 到 Destination L2VNI 1020。
- 最后从 VLAN 20 送到 Host B。
14. Spine 与 EVPN Route Reflector(RR)
Spine 的角色必须分开理解:
- Underlay Transit:几乎一定存在,负责 Routed Fabric。
- EVPN Route Reflector:可能存在,也可能由专用 RR 节点承担。
因此,当你在 Leaf 上执行 show bgp l2vpn evpn summary 看见两个 Neighbor,例如 10.10.95.121、10.10.95.122,这些 Neighbor 在这个命令语境中是 EVPN Overlay BGP Peers。它们可能物理上就是两个 Spine,但不要因此把“Underlay Neighbor”与“EVPN Neighbor”概念混为一谈。
15. Cisco NX-OS 常用 CLI
不同 NX-OS Release 的细节语法可能变化。排障时更重要的是知道自己要验证哪一层。
Underlay / Physical
show ip interface brief
show interface status
show interface counters errors
show port-channel summary
show ip route
show ip route 10.255.0.2
show bgp ipv4 unicast summary
ping 10.255.0.2 source 10.255.0.1
traceroute 10.255.0.2 source 10.255.0.1
EVPN BGP
show bgp l2vpn evpn summary
show bgp l2vpn evpn
show bgp l2vpn evpn neighbors
show bgp l2vpn evpn neighbors <peer-ip>
NVE / VXLAN
show nve interface nve 1
show nve peers
show nve peers detail
show nve vni
show nve vni detail
show nve vxlan-params
Type-2 / L2RIB / MAC-IP
show l2route evpn mac all
show l2route evpn mac-ip all
show mac address-table
show mac address-table vlan 10
show ip arp vrf PROD
Type-5 / VRF Route
show bgp l2vpn evpn
# 某些 NX-OS Release 支持 Route-Type Filter,
# 请用 context help 验证:
show bgp l2vpn evpn route-type ?
show ip route vrf PROD
show ip route vrf PROD 192.168.20.0/24
show bgp vrf PROD
show bgp vrf PROD ipv4 unicast
VLAN / VNI / VRF Mapping
show vlan brief
show nve vni
show running-config vlan 10
show running-config interface nve1
show vrf
show vrf detail
show running-config vrf PROD
16. 如何读 show bgp l2vpn evpn summary 的“两组输出”
BGP summary information for VRF default, address family L2VPN EVPN
Neighbor AS Up/Down State/PfxRcd
10.10.95.121 65001 1y27w 5448
10.10.95.122 65001 1y27w 5448
Neighbor Type-1 Type-2 Type-3 Type-4 Type-5
10.10.95.121 0 4394 0 0 1054
10.10.95.122 0 4394 0 0 1054
这不是“两套 BGP Session”。第一组是 Generic BGP Neighbor Summary;第二组是同一个 Neighbor 的 EVPN Route-Type Breakdown。
4394 Type-2
1054 Type-5
------------
5448 total EVPN prefixes
因此你可以快速验证 4394 + 1054 = 5448,正好对应上面的 State/PfxRcd。
17. Troubleshooting:从 Control Plane 一直验证到 Data Plane
Step 1 — 先定义 Scope
- 一个 Host?一个 VLAN/VNI?一个 VRF?一个 Rack?还是全 Fabric?
- Same Subnet 失败,还是 Inter-Subnet 失败?
- 只有 East-West,还是 North-South 也受影响?
Step 2 — Physical / Underlay
show interface counters errors
show port-channel summary
show ip route <remote-vtep>
ping <remote-vtep> source <local-vtep>
show bgp ipv4 unicast summary
确认 Link、Optics、CRC、Drops、Queue、MTU、ECMP 与 VTEP Reachability。
Step 3 — Overlay Session
show bgp l2vpn evpn summary
show nve peers
Step 4 — EVPN Route 有没有?
show bgp l2vpn evpn
show l2route evpn mac all
show l2route evpn mac-ip all
Step 5 — RT Policy 是否正确?
Route 即使存在 Global EVPN BGP Table,如果 RT 不匹配目标 VRF / EVPN Instance 的 Import RT,也不会进入目标 Context。
Step 6 — VRF RIB 是否真的安装?
show ip route vrf PROD 192.168.20.0/24
show bgp vrf PROD ipv4 unicast 192.168.20.0/24
Step 7 — NVE/VXLAN Data Plane
show nve peers
show nve vni
show nve interface nve 1
show interface counters errors
18. 放到 AI Data Center / GPU Cluster 场景中怎么理解
EVPN/VXLAN 本身不是 InfiniBand,也不是 NVLink。它解决的是大规模 Data Center Ethernet Fabric、Multi-Tenancy、VM/Container/Storage/Management 等网络的可扩展性与可运维性。
对于 AI Infrastructure,网络工程师还会同时面对:
GPU Fabric
InfiniBand 或 RoCE,强调低 Latency、高 Throughput、低 Packet Loss。
General DC Fabric
Spine-Leaf、EVPN/VXLAN、VRF、Routing、Cloud Interconnect。
Virtual / Container
KVM、Docker、Kubernetes 的底层连通、MTU、Overlay/Underlay 与故障边界。
面试时你可以把价值说得更贴近 AI:昂贵的 GPU 如果因为 Network Congestion、Packet Loss 或 Fabric Failure 在等待,会直接降低 GPU Utilization 并增加训练成本。
19. Interview Cheat Sheet(英文可直接复述)
EVPN vs VXLAN
“EVPN is the control plane and VXLAN is the data plane. EVPN runs as an MP-BGP address family over TCP 179 and distributes endpoint or prefix reachability. VXLAN encapsulates the actual tenant traffic over UDP 4789 between VTEPs.”
Why EVPN/VXLAN?
“A routed spine-leaf underlay gives us predictable ECMP and avoids large Layer-2 failure domains. VXLAN provides scalable overlay segmentation, while EVPN distributes MAC, IP and prefix reachability through MP-BGP instead of relying only on flood-and-learn.”
Type-2 vs Type-5
“Type-2 is a MAC/IP Advertisement route used for endpoint reachability. Type-5 is an IP Prefix route used for routed prefix reachability.”
RD vs RT
“RD makes VPN routes unique. RT controls import and export policy. RD is uniqueness; RT is route membership and policy.”
Troubleshooting
“I validate the dependency chain in order: physical and underlay reachability, EVPN adjacency, EVPN route presence, RT import policy, VRF RIB installation, and finally NVE/VNI data-plane forwarding.”
20. 参考资料与 Cisco CLI 依据
本网站的 CLI 以 Cisco Nexus NX-OS 为主,实际部署请以目标设备的 NX-OS Release Command Reference 为准。
- Cisco Nexus 9000 Series NX-OS VXLAN Configuration Guide:
VXLAN BGP EVPN Configuration & Verification - Cisco Nexus 9000 Series NX-OS Command Reference:
NVE Show Commands - Cisco EVPN examples include
show l2route evpn mac all、show l2route evpn mac-ip all、show nve peers、show nve vni等。