版本说明:本课示例以 NVIDIA Cumulus Linux 5.10 官方文档为核对基线(2026-10-02),不表示所有 5.x 版本语法完全一致。先查看 /etc/os-release,并通过 sudo vtysh -c 'show version' 确认 FRR 版本。
命令执行环境:nv ...、ip ...、bridge ... 在 Linux shell 执行;FRR 查询统一写成 sudo vtysh -c 'show ...'。若已通过 sudo vtysh 进入 FRR CLI,只输入引号中的 show ... 即可。
Cumulus VX / Air 虚拟实验主要核验 Linux 软件数据平面;没有真实 Spectrum ASIC,不能按本课的硬件层要求验证 offload 或线速性能。
1. 总排障顺序#
流程 / 示例 复制
Interface
↓
Bond / ESI
↓
Bridge / VLAN / VNI
↓
Underlay
↓
EVPN Session
↓
EVPN Route
↓
EVPN Forwarding State
↓
Linux FDB
↓
ASIC / Data Plane
2. 第一层:Interface#
SHELL 复制
nv show interface
ip -br link
ip addr
关注:
admin / oper;
speed;
MTU;
Server Downlink;
Spine Uplink;
Bond;
Loopback/VTEP。
如果:
流程 / 示例 复制
admin up
oper down
优先查:
流程 / 示例 复制
Cable
Optics
Server NIC
Port Configuration
3. 第二层:Bond / Ethernet Segment#
SHELL 复制
nv show interface bond1
nv show evpn multihoming esi
nv show evpn vni 10010 multihoming esi
FRR:
SHELL 复制
sudo vtysh -c 'show evpn es'
sudo vtysh -c 'show evpn es-evi'
重点验证:
流程 / 示例 复制
bond1
↓
ESI
↓
Local ES
↓
Remote ES Peer
如果 Bond 存在但 FRR 的 show evpn es 看不到 ESI,应检查全局 MH 开关、bond 的 segment MAC/local-id,以及两台 Leaf 是否表示同一个 ES。
实验配置核对示例(Cumulus 5.10) :以下是配置命令,不是只读排障命令。假设 bond1 和上联 swp51/swp52 已按实际拓扑配置;同一 ES 的两台 Leaf 使用相同 segment MAC 与 local-id。VLAN-aware bridge、EVPN BGP 与 ARP suppression 等前置配置也需要具备。
若实验环境为 5.16.x,请把下面第一条命令替换为 nv set evpn multihoming state enabled,并核对其余命令的版本适用性。
SHELL 复制
nv set evpn multihoming enable on
nv set interface bond1 evpn multihoming segment mac-address 44:38:39:ff:00:aa
nv set interface bond1 evpn multihoming segment local-id 100
nv set interface swp51 evpn multihoming uplink on
nv set interface swp52 evpn multihoming uplink on
nv config apply
这里自动生成的 ESI 是第 8 课的 03:44:38:39:ff:00:aa:00:00:64。现场将 bond 和上联口替换成实际接口,并标记所有承担 VXLAN 传输的 MH uplinks。全部已标记上联 down 时,ES bonds 应进入 protodown;同时确认服务器的 LACP system identifier 与聚合状态。
语法有版本差异:较早版本(已核对 5.4 / 5.10 文档)使用 nv set evpn multihoming enable on;较新版本至少在 5.16 官方文档中已使用 nv set evpn multihoming state enabled,5.18 文档也使用该语法。这不表示 5.16 是首次变更版本,具体以所用版本的官方文档为准。在 Spectrum A1 上启用 MH 可能重启 switchd、复位网络端口,应用前需安排相应变更窗口。
4. 第三层:Bridge / VLAN / VNI#
SHELL 复制
nv show bridge
nv show bridge domain br_default
nv show bridge domain br_default vlan-vni-map
bridge link
bridge vlan
nv show evpn vni 10010
nv show bridge 是有效的桥列表概览;检查具体 bridge 的配置时使用 nv show bridge domain br_default,检查 VLAN/VNI 映射时使用 vlan-vni-map。
要验证:
流程 / 示例 复制
Server
↓
bond1
↓
VLAN10
↓
br_default
↓
VNI10010
↓
vxlan48
任何一层缺失,Overlay 都会异常。
5. 第四层:Underlay#
以下示例检查 Default VRF 中承载 VTEP IPv4 可达性的 IPv4 Unicast 地址族;与下一节的 L2VPN EVPN Overlay 查询分别核对。
SHELL 复制
sudo vtysh -c 'show bgp ipv4 unicast summary'
原来的 show bgp summary 是合法概览命令,显式指定 AFI/SAFI 可以让本节的观察范围更清楚。如果现场 Underlay 承载 IPv6 Unicast,使用 sudo vtysh -c 'show bgp ipv6 unicast summary';若采用其他路由协议,则检查对应协议与路由表。选择地址族应依据实际承载的路由,不能只根据 BGP 邻居地址是否为 IPv6 link-local 判断。
Linux:
SHELL 复制
ip route get 10.0.0.3
ping -I 10.0.0.1 10.0.0.3
核心:
流程 / 示例 复制
Remote VTEP 必须可达
记住:
流程 / 示例 复制
VTEP Ping Success
≠
EVPN Healthy
但 VTEP 不可达时,应优先修 Underlay。
6. 第五层:EVPN Session#
SHELL 复制
sudo vtysh -c 'show bgp l2vpn evpn summary'
检查:
流程 / 示例 复制
Neighbor
State
Uptime
PfxRcd
不要只看 Established,还要看是否真的收到 EVPN Routes。
7. 第六层:按 Route Type 查#
SHELL 复制
sudo vtysh -c 'show bgp l2vpn evpn route type ead'
sudo vtysh -c 'show bgp l2vpn evpn route type macip'
sudo vtysh -c 'show bgp l2vpn evpn route type multicast'
sudo vtysh -c 'show bgp l2vpn evpn route type es'
sudo vtysh -c 'show bgp l2vpn evpn route type prefix'
对应:
8. 第七层:EVPN Forwarding State#
SHELL 复制
sudo vtysh -c 'show evpn vni'
sudo vtysh -c 'show evpn mac vni 10010'
sudo vtysh -c 'show evpn mac vni all'
sudo vtysh -c 'show evpn es'
sudo vtysh -c 'show evpn es-evi'
NVUE:
SHELL 复制
nv show evpn vni 10010
nv show evpn vni 10010 mac
nv show evpn multihoming esi
nv show bridge domain br_default mac-table
nv show evpn vni 10010 mac 有官方出处,NVUE 命令参考注明从 5.4.0 引入;它显示 VNI 内的 EVPN MAC 状态。nv show bridge domain br_default mac-table 显示 bridge FDB,两者的观察层次不同,不能当作完全等价的替换。
9. 第八层:Linux FDB / Neighbor / Route#
SHELL 复制
bridge fdb show
ip neigh
ip route
Remote EVPN MAC 理想状态类似:
流程 / 示例 复制
BB
dev vxlan48
dst 10.0.0.3
extern_learn
这条链最重要:
流程 / 示例 复制
BGP EVPN RIB
↓
EVPN MAC State
↓
Linux FDB
如果在哪一层消失,故障域基本就能锁定。
10. 同一个 MAC 查三遍#
例如 BB:
BGP#
SHELL 复制
sudo vtysh -c 'show bgp l2vpn evpn route type macip'
问:
EVPN Data Plane#
SHELL 复制
sudo vtysh -c 'show evpn mac vni 10010'
问:
流程 / 示例 复制
zebra 已经形成 Remote MAC State 吗?
Linux FDB#
问:
流程 / 示例 复制
Kernel 已经形成 BB → VTEP 吗?
11. 同一个 ESI 也查三遍#
SHELL 复制
# Linux / NVUE:bond 与 ESI
nv show interface bond1
nv show evpn multihoming esi
# FRR:EVPN ES 转发状态
sudo vtysh -c 'show evpn es'
sudo vtysh -c 'show evpn es-evi'
# FRR:BGP 学到的 ES / ES-EVI 信息
sudo vtysh -c 'show bgp l2vpn evpn es'
sudo vtysh -c 'show bgp l2vpn evpn es-evi'
验证:
流程 / 示例 复制
Linux Bond
↓
EVPN Ethernet Segment
↓
BGP Type-1 / Type-4
12. Aliasing 排障#
现象:
流程 / 示例 复制
Remote Leaf 只能通过 Leaf01
不能走 Leaf02
重点:
SHELL 复制
sudo vtysh -c 'show evpn es'
sudo vtysh -c 'show bgp l2vpn evpn es-evi'
sudo vtysh -c 'show bgp l2vpn evpn route type macip'
nv show evpn multihoming esi
确认:
流程 / 示例 复制
MAC AA
↓
ESI100
↓
Leaf01 + Leaf02
是否完整。
13. Mass Withdrawal 验证#
正常:
流程 / 示例 复制
ESI100
Leaf01 + Leaf02
断开:
预期 Remote Leaf:
流程 / 示例 复制
Before:
AA → Leaf01 + Leaf02
After:
AA → Leaf02
重点观察 Type-1 / EAD Reachability 的变化。
14. 现场“10 分钟流程”#
流程 / 示例 复制
Server 不通
↓
① Interface / Bond
↓
② ESI / ES
↓
③ VLAN / VNI
↓
④ Underlay VTEP
↓
⑤ EVPN Session
↓
⑥ Type-2 / Type-1 / Type-4
↓
⑦ EVPN MAC State
↓
⑧ Linux FDB
↓
⑨ MTU / VXLAN / ASIC / Server
本课 5 个结论#
排障必须按层,不要随机试命令。
BGP RIB 和 EVPN Forwarding State 不是一回事。
EVPN-MH 必须同时查 MAC 和 ESI。
“同一个对象跨三层追踪”是最有效的方法。
命令存在版本差异,必须先确认 Cumulus/FRR 版本。
本课核对来源(2026-10-02) :NVIDIA 5.10:Troubleshooting EVPN ;NVUE:EVPN 查询命令 ;NVUE:Bridge 查询命令 ;NVIDIA 5.10:EVPN-MH 配置 ;NVIDIA 5.16:EVPN-MH 配置 ;NVIDIA 5.18:EVPN-MH 配置 ;FRR:BGP 地址族与 summary 查询 。