第340篇:EVPN VXLAN 多活网关部署失败排错
关键词:EVPN、VXLAN、多活网关、Type-2 MAC学习、ARP代理、BGP EVPN、华为CE系列
一、案例背景
某金融企业数据中心部署EVPN VXLAN架构,目标是实现服务器多归属接入和跨子网无缝漫游。在部署多活网关(Active-Active Gateway)模式时,发现部分服务器的跨Leaf通信出现丢包,ARP解析失败率高达60%。
网络架构: - Spine层:4台CE6865(VTEP) - Leaf层:8台CE6860(VTEP+网关) - 服务器:约500台虚拟机/物理机,通过双归接入2台Leaf - Overlay网络:EVPN VXLAN,VNI 100-110
故障现象: 1. 同一VXLAN内、同一子网的双归服务器之间通信丢包率60% 2. ARP请求能够发出,但ARP响应无法返回 3. 单归属服务器通信正常,仅双归属服务器异常 4. 跨VXLAN子网的通信也受影响
二、需求分析与方案设计
2.1 EVPN多活网关原理
EVPN多活网关(Active-Active Gateway)允许同一广播域内的多台VTEP设备同时作为网关,服务器可以双归属到不同的Leaf,提高可靠性。

2.2 多活网关关键机制
| 机制 | 说明 | EVPN Route Type |
|---|---|---|
| ES(Ethernet Segment) | 定义多归属接入域 | Type-1 ES Route |
| MAC/IP地址绑定 | 通告MAC和IP的绑定关系 | Type-2 MAC/IP Route |
| Ingress Replication | 组播/广播流量复制 | Type-2 MAC/IP Route |
| DHCP Relay | DHCP跨VXLAN中继 | Type-5 IP Prefix Route |
| Gateway Anycast IP | 多活网关共享Gateway IP | Type-2 Gateway IP Route |
2.2.1 EVPN Route Type详解
| Route Type | Route Identifier | 用途 | 关键属性 |
|---|---|---|---|
| Type-1 (ES) | ESI | 通告Ethernet Segment成员 | ESI、Flag(M位)、MAC列表 |
| Type-2 (MAC/IP) | ESI+MAC+IP | MAC/IP地址通告 | ESI、MAC、IP、Flags |
| Type-3 (IMET) | VNI+IP | VTEP发现(Ingress Replication) | VNI、VTEP IP、MAC |
| Type-4 (ES Import) | ESI+RT | ES到VNI的导入关系 | ESI、Import RT |
| Type-5 (IP Prefix) | VNI+Prefix | IPv4/IPv6前缀通告 | Prefix、Gateway IP、Flags |
EVPN Type-1~5 深度对照
| Route Type | NLRI格式 | 目的 | 应用场景 | 是否携带ESI | 路由唯一性 |
|---|---|---|---|---|---|
| Type-1 | ESI(10字节) + Flags | 通告ES成员信息,使远端VTEP知晓多归属拓扑 | 服务器双归、MLAG、Active-Active网关 | 是 | ESI全局唯一 |
| Type-2 | ESI + MAC(6字节) + IP(可选) + Ethernet Tag | 通告MAC学习信息,支持MAC移动性通知 | VXLAN内二层通信、跨VTEP MAC解析 | 是 | MAC+ETag组合唯一 |
| Type-3 | Ethernet Tag + VTEP IP | 通告VTEP可达性,用于Ingress Replication成员发现和BGP Auto-Cost计算 | 广播/未知单播泛洪、VTEP间链路开销计算 | 否 | VTEP IP+ETag唯一 |
| Type-4 | Ethernet Tag + Import RT | 通告Import RT列表,使远端VTEP将IR转换为BMP(Best-Multicast-Point) | 组播优化、减少泛洪流量 | 否 | Import RT唯一 |
| Type-5 | IPv4/IPv6 Prefix + Gateway IP | 通告全局唯一的IP前缀路由,实现三层网关功能 | Active-Active网关、跨VXLAN L3路由、IP路由聚合 | 否 | Prefix全局唯一 |
Type-2 vs Type-5 选型决策树: - 需要MAC移动性(虚拟机vMotion)→ Type-2 - 需要跨VXLAN IP路由聚合 → Type-5 - 需要Anycast Gateway → Type-2(Gateway IP Route)或 Type-5 - 大规模网络(路由数>10万)→ Type-5(可聚合) - 华为CE系列推荐:Type-5 + Type-2混合,MAC本地学习用Type-2,网关路由用Type-5
2.2.2 Ingress Replication vs Multicast VXLAN 对比
| 对比项 | Ingress Replication (IR) | Multicast VXLAN |
|---|---|---|
| 原理 | 源VTEP向所有已知VTEP复制报文 | 源VTEP发送组播报文,网络层复制 |
| Underlay要求 | 单播可达即可 | 需要PIM-SM组播路由 |
| 配置复杂度 | 低 | 高 |
| 带宽效率 | 低(重复发送) | 高(网络复制) |
| 扩展性 | 受VTEP数量限制 | 不受VTEP数量限制 |
| 适用场景 | VTEP<100的中小型网络 | VTEP>100的大型网络 |
| 华为推荐 | 默认推荐 | 大规模数据中心 |

2.2.3 ES分裂脑(Split-Brain)防护
ES分裂脑是指同一ES内的多台VTEP无法正确协调,导致数据环路或丢包。
| 防护机制 | 原理 | 配置方式 |
|---|---|---|
| MLAG检测 | 通过MLAG心跳检测对端存活 | auto-detect mlag |
| Inband检测 | 通过ES接口发送检测报文 | auto-detect inband |
| ES Max-Active | 限制同时活跃的VTEP数量 | maximum-active N |
| IETF Inband | 标准化带内检测 | auto-detect ietf-inband |
2.2.4 多DC互联EVPN设计模式对比
| 设计模式 | 架构特点 | 收敛时间 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|---|
| 集中式网关 | 网关在Spine/Agg层,Leaf纯转发 | 快 | 架构简单、MAC表集中 | 东西向三角流量、汇聚瓶颈 | 小型DC、南北向为主 |
| 分布式网关 | 网关下沉至Leaf,本地终结 | 快 | 东西向本地交换、高带宽 | MAC表分散、需EVPN同步 | 大规模DC、东西向为主 |
| 多活网关(Active-Active) | 同子网多Leaf同时作网关 | 中 | 最高可用、服务器双归 | 配置复杂、需ES+Type-5 | 高可用、双归服务器 |
| 混合网关 | 部分子网集中+部分分布式 | 中 | 灵活、按业务选择 | 运维复杂、排错难 | 多业务混合DC |
| EVPN-MH多DC | 跨DC多活,Type-5路由同步 | 慢(跨DC) | 跨DC无缝漫游、统一IP | DC间链路要求高 | 多DC容灾、跨DC业务 |
| VXLAN-GRE混合 | DC内VXLAN+DC间GRE | 慢 | DC间兼容性好 | 隧道管理复杂 | 异构DC互联 |
2.3 故障排查思路

三、技术细节与实施过程
3.1 ES配置检查
# Leaf-01检查ES配置
<CE6860-Leaf-01> display evpn ethernet-segment
Ethernet-Segment Information:
Ethernet-Segment Name : ES-DC1-RACK01
Ethernet-Segment ID : 0000.0000.0000.0001.0001
Auto-Ethernet-Segment ID : Disabled
Maximum Active : 2
Active : 1
# 检查ES绑定的接口
<CE6860-Leaf-01> display evpn ethernet-segment ES-DC1-RACK01
Ethernet-Segment Interface:
Interface : Eth-Trunk 10
Ethernet-Segment Name : ES-DC1-RACK01
Ethernet-Segment ID : 0000.0000.0000.0001.0001
Node ID : 1
# Leaf-02检查ES配置
<CE6860-Leaf-02> display evpn ethernet-segment ES-DC1-RACK01
Ethernet-Segment Interface:
Interface : Eth-Trunk 10
Ethernet-Segment Name : ES-DC1-RACK01
Ethernet-Segment ID : 0000.0000.0000.0001.0001
Node ID : 2
问题发现1:ES的Maximum Active设置为1,但应该设置为2(支持双活)。
3.2 BGP EVPN路由检查
# Leaf-01检查Type-1 ES Route
<CE6860-Leaf-01> display bgp evpn all routing-table route-type 1
Total number of routes: 2
ES-Route ID ESI Origin-VTEP Flags
ES-DC1-RACK01 0000:0000:0000:0001:0001 10.255.1.1 M=1
ES-DC1-RACK01 0000:0000:0000:0001:0001 10.255.2.1 M=2
# Leaf-02检查Type-1 ES Route
<CE6860-Leaf-02> display bgp evpn all routing-table route-type 1
Total number of routes: 1 <-- ⚠️ 只有1条,缺少Leaf-01的ES Route
ES-Route ID ESI Origin-VTEP Flags
ES-DC1-RACK01 0000:0000:0000:0001:0001 10.255.2.1 M=2
问题发现2:Leaf-02缺少Leaf-01发布的Type-1 ES Route,ES同步失败。
3.3 Type-2 MAC Route检查
# Leaf-01检查Type-2 MAC Route
<CE6860-Leaf-01> display bgp evpn all routing-table route-type 2
Total number of routes: 15
ESI MAC Address IP Address Origin-VTEP Flags
0000:0000:0000:0001:0001 00:11:22:33:44:01 10.100.1.10 10.255.1.1 M=1
0000:0000:0000:0001:0001 00:11:22:33:44:04 10.100.1.40 10.255.1.1 M=1
0000:0000:0000:0001:0001 00:11:22:33:44:04 10.100.1.40 10.255.2.1 M=2
# 注意到VM-04的MAC被Leaf-01和Leaf-02同时通告(M=1和M=2),但IP地址相同
# 这是正常的多活行为
问题发现3:Type-2 MAC Route中缺少部分MAC地址(VM-02和VM-03的MAC未在Leaf-01和Leaf-02之间完全同步)。
3.4 根因分析
经过逐一排查,确定以下根因:
- ES Maximum Active配置错误:配置为1而非2,导致ES只允许单活。
- ES Node ID配置错误:Leaf-02的Node ID配置为1(与Leaf-01相同),导致ES Route冲突。
- BGP EVPN Peer未全互联:部分Leaf之间未建立BGP EVPN会话,导致Type-1/Type-2路由无法同步。
四、实战配置/案例分析
4.1 正确的ES多活配置
# Leaf-01 ES配置(Node ID = 1)
<CE6860-Leaf-01> system-view
[CE6860-Leaf-01] evpn ethernet-segment ES-DC1-RACK01
[CE6860-Leaf-01-evpn-ES-DC1-RACK01] ethernet-segment-id 0000.0000.0000.0001.0001
[CE6860-Leaf-01-evpn-ES-DC1-RACK01] maximum-active 2 # 允许双活
[CE6860-Leaf-01-evpn-ES-DC1-RACK01] auto-detect mlag # MLAG自动检测
[CE6860-Leaf-01-evpn-ES-DC1-RACK01] quit
# 绑定ES到接口
[CE6860-Leaf-01] interface Eth-Trunk 10
[CE6860-Leaf-01-Eth-Trunk10] evpn ethernet-segment ES-DC1-RACK01 node-id 1 # Node ID = 1
[CE6860-Leaf-01-Eth-Trunk10] quit
# Leaf-02 ES配置(Node ID = 2)
<CE6860-Leaf-02> system-view
[CE6860-Leaf-02] evpn ethernet-segment ES-DC1-RACK01
[CE6860-Leaf-02-evpn-ES-DC1-RACK01] ethernet-segment-id 0000.0000.0000.0001.0001
[CE6860-Leaf-02-evpn-ES-DC1-RACK01] maximum-active 2
[CE6860-Leaf-02-evpn-ES-DC1-RACK01] auto-detect mlag
[CE6860-Leaf-02-evpn-ES-DC1-RACK01] quit
[CE6860-Leaf-02] interface Eth-Trunk 10
[CE6860-Leaf-02-Eth-Trunk10] evpn ethernet-segment ES-DC1-RACK01 node-id 2 # Node ID = 2
[CE6860-Leaf-02-Eth-Trunk10] quit
4.2 BGP EVPN全互联配置
# Leaf-01 BGP EVPN配置(与所有Leaf建立EVPN会话)
[CE6860-Leaf-01] bgp 65100
[CE6860-Leaf-01-bgp-65100] router-id 10.255.1.1
[CE6860-Leaf-01-bgp-65100] evpn enable
# iBGP EVPN Peer(RR或全互联)
[CE6860-Leaf-01-bgp-65100] peer 10.255.0.1 as-number 65100 # RR
[CE6860-Leaf-01-bgp-65100] peer 10.255.0.1 connect-interface LoopBack 100
[CE6860-Leaf-01-bgp-65100] peer 10.255.0.1 address-family evpn
[CE6860-Leaf-01-bgp-65100] peer 10.255.0.1 route-reflector-client
# IPv4 Unicast地址族
[CE6860-Leaf-01-bgp-65100] address-family ipv4
[CE6860-Leaf-01-bgp-65100-ipv4] peer 10.255.0.1 enable
[CE6860-Leaf-01-bgp-65100-ipv4] quit
[CE6860-Leaf-01-bgp-65100] quit
4.3 EVPN VXLAN网关配置
# Leaf-01多活网关配置
[CE6860-Leaf-01] evpn instance 100
[CE6860-Leaf-01-evpn-100] vni 100
[CE6860-Leaf-01-evpn-100] evpn-type evi
[CE6860-Leaf-01-evpn-100] source-interface Vlanif 100
[CE6860-Leaf-01-evpn-100] ip-mac binding learn enable
[CE6860-Leaf-01-evpn-100] arp broadcast enable
[CE6860-Leaf-01-evpn-100] quit
# 配置Vlanif网关(Anycast Gateway IP)
[CE6860-Leaf-01] interface Vlanif 100
[CE6860-Leaf-01-Vlanif100] ip address 10.100.1.254 255.255.255.0
[CE6860-Leaf-01-Vlanif100] evpn instance 100
[CE6860-Leaf-01-Vlanif100] evpn ip-advertisement gateway
[CE6860-Leaf-01-Vlanif100] quit
# VXLAN隧道绑定VNI
[CE6860-Leaf-01] vxlan vtep 10.255.1.1
[CE6860-Leaf-01-vtep-10.255.1.1] vxlan vni 100 interface Vlanif 100
[CE6860-Leaf-01-vtep-10.255.1.1] quit
4.3.1 完整配置模板(华为CE12800核心场景)
以下为华为CE12800完整EVPN VXLAN配置模板,覆盖VTEP、EVPN、VXLAN、BD、VRF等核心组件,可作为部署基线参考。
# =====================================================
# CE12800 EVPN VXLAN 完整配置模板
# 适用:Spine-Leaf架构,Leaf承载VTEP+多活网关
# =====================================================
# ---- 1. 系统基础 ----
sysname CE12800-Leaf01
interface LoopBack 100
description VTEP_Source_IP
ip address 10.255.1.1 32
quit
# ---- 2. BGP路由反射器(Underlay + EVPN) ----
bgp 65100
router-id 10.255.1.1
# IPv4 Unicast(Underlay IGP替代)
address-family ipv4 unicast
peer 10.255.0.1 as-number 65100
peer 10.255.0.1 connect-interface LoopBack 100
peer 10.255.0.1 route-reflector-client
# 发布LoopBack
network 10.255.1.1 32
quit
# EVPN Address-Family
address-family evpn
peer 10.255.0.1 as-number 65100
peer 10.255.0.1 connect-interface LoopBack 100
peer 10.255.0.1 route-reflector-client
quit
quit
# ---- 3. VRF(BGP VRF,承载Type-5网关路由) ----
bgp 65100
vpn-instance VXLAN_100
rd 65100:100
route-target import 65100:100
route-target export 65100:100
peer 10.255.0.1 as-number 65100
peer 10.255.0.1 connect-interface LoopBack 100
quit
quit
# ---- 4. VXLAN VTEP + VNI ----
vxlan vtep 10.255.1.1
vxlan vni 100 interface Vlanif 100
# 远端VTEP(或依赖Type-3 IMET自动发现)
destination-ip 10.255.2.1
destination-ip 10.255.3.1
destination-ip 10.255.4.1
quit
# ---- 5. EVPN Instance ----
evpn instance 100
vni 100
evpn-type evi
source-interface Vlanif 100
ip-mac binding learn enable
arp broadcast enable
# Type-5 IP前缀通告(Active-Active网关)
ip-advertisement gateway
quit
# ---- 6. Bridge Domain ----
bridge-domain 100
description VXLAN_VNI_100
evi 100
mac-limit 2000
quit
# ---- 7. 接入接口(服务器侧) ----
interface Eth-Trunk 10
mode l2
trunkport 100GE 1/0/1 100GE 1/0/2
description Server_Access
# 绑定ES(多归属)
evpn ethernet-segment ES-DC1-RACK01 node-id 1
quit
interface Bridge 100
port Eth-Trunk 10
port vni 100
quit
# ---- 8. Vlanif网关 ----
interface Vlanif 100
ip address 10.100.1.254 255.255.255.0
bridge-domain 100
vrf-instance VXLAN_100
evpn instance 100
evpn ip-advertisement gateway
quit
4.3.2 netmiko批量验证VTEP配置一致性
在大规模EVPN部署中,逐台手工检查VTEP配置不现实。以下Python脚本通过netmiko批量登录VTEP设备,自动比对关键配置项的一致性。
#!/usr/bin/env python3
"""
evpn_vtep_validator.py — 批量验证EVPN VTEP配置一致性
依赖: pip install netmiko pandas
用法: python evpn_vtep_validator.py --hosts vtep_hosts.csv
"""
import argparse
import csv
from netmiko import ConnectHandler
from netmiko.exceptions import NetmikoAuthenticationException, NetmikoTimeoutException
import re
def get_device_config(device: dict) -> dict:
"""通过netmiko登录设备并提取EVPN关键配置"""
conn = ConnectHandler(**device)
results = {
"hostname": "",
"vtep_ips": [],
"vnis": [],
"es_config": {},
"bgp_evpn_peers": [],
"errors": []
}
# 获取主机名
output = conn.send_command("display this interface LoopBack 100")
results["hostname"] = conn.find_prompt().replace(">", "").replace("#", "")
# 获取VTEP配置
output = conn.send_command("display vxlan vtep all")
vtep_matches = re.findall(r'Verification Source-IP\s+([\d.]+)', output)
results["vtep_ips"] = list(set(vtep_matches))
# 获取VNI列表
vni_matches = re.findall(r'VNI\s+(\d+)', output)
results["vnis"] = list(set(vni_matches))
# 获取ES配置
output = conn.send_command("display evpn ethernet-segment all")
es_ids = re.findall(r'Ethernet-Segment ID\s+([\d.]+)', output)
max_active = re.findall(r'Maximum Active\s+(\d+)', output)
for i, es_id in enumerate(es_ids):
results["es_config"][es_id] = {
"max_active": int(max_active[i]) if i < len(max_active) else 0
}
# 获取BGP EVPN Peer
output = conn.send_command("display bgp evpn all peer")
peer_ips = re.findall(r'BGP Peer IP\s+([\d.]+)', output)
results["bgp_evpn_peers"] = list(set(peer_ips))
conn.disconnect()
return results
def validate_consistency(all_configs: list[dict]) -> list[dict]:
"""对比所有VTEP的配置一致性,返回差异报告"""
issues = []
hostnames = [c["hostname"] for c in all_configs]
# 检查VTEP IP是否唯一
all_vtep_ips = []
for cfg in all_configs:
for ip in cfg["vtep_ips"]:
all_vtep_ips.append((cfg["hostname"], ip))
vtep_ip_counts = {}
for host, ip in all_vtep_ips:
vtep_ip_counts.setdefault(ip, []).append(host)
for ip, hosts in vtep_ip_counts.items():
if len(hosts) > 1:
issues.append({
"type": "CRITICAL",
"issue": f"VTEP IP {ip} 被多个设备使用: {', '.join(hosts)}",
"hosts": hosts
})
# 检查VNI范围是否一致
vni_sets = {c["hostname"]: set(c["vnis"]) for c in all_configs}
if len(vni_sets) > 1:
first_vnis = set(next(iter(vni_sets.values())))
for host, vnis in vni_sets.items():
diff = first_vnis.symmetric_difference(vnis)
if diff:
issues.append({
"type": "WARNING",
"issue": f"{host} 的VNI集合与其他设备不一致,差异: {diff}",
"hosts": [host]
})
# 检查ES Max-Active是否为2
for cfg in all_configs:
for es_id, info in cfg["es_config"].items():
if info["max_active"] != 2:
issues.append({
"type": "CRITICAL",
"issue": f"{cfg['hostname']} 的ES {es_id} Max-Active={info['max_active']},应为2",
"hosts": [cfg["hostname"]]
})
# 检查BGP EVPN Peer连通性
for cfg in all_configs:
expected_peers = set(c["hostname"] for c in all_configs) - {cfg["hostname"]}
if len(cfg["bgp_evpn_peers"]) < 1:
issues.append({
"type": "CRITICAL",
"issue": f"{cfg['hostname']} 没有BGP EVPN Peer",
"hosts": [cfg["hostname"]]
})
return issues
def main():
parser = argparse.ArgumentParser(description="EVPN VTEP配置一致性验证")
parser.add_argument("--hosts", required=True, help="CSV文件,包含ip,username,password,device_type")
args = parser.parse_args()
devices = []
with open(args.hosts) as f:
reader = csv.DictReader(f)
for row in reader:
devices.append({
"device_type": row["device_type"],
"host": row["ip"],
"username": row["username"],
"password": row["password"]
})
all_configs = []
for dev in devices:
try:
cfg = get_device_config(dev)
all_configs.append(cfg)
print(f"[OK] {cfg['hostname']} - VTEP: {cfg['vtep_ips']}, VNI: {cfg['vnis']}")
except (NetmikoAuthenticationException, NetmikoTimeoutException) as e:
print(f"[FAIL] {dev['host']} - {e}")
issues = validate_consistency(all_configs)
print(f"\n{'='*60}")
print(f"验证完成: 共检查 {len(all_configs)} 台设备,发现 {len(issues)} 个问题")
for issue in issues:
icon = "🔴" if issue["type"] == "CRITICAL" else "🟡"
print(f" {icon} [{issue['type']}] {issue['issue']}")
if __name__ == "__main__":
main()
vtep_hosts.csv 示例:
ip,username,password,device_type
10.255.1.1,admin,Huawei@123,huawei
10.255.2.1,admin,Huawei@123,huawei
10.255.3.1,admin,Huawei@123,huawei
10.255.4.1,admin,Huawei@123,huawei
4.4 验证测试
# 验证ES同步
<CE6860-Leaf-01> display evpn ethernet-segment summary
Ethernet-Segment Summary:
Total ES : 8
Active ES : 8
Maximum Active Config : 2
Auto-Detect Mode : MLAG
# 验证Type-1路由
<CE6860-Leaf-01> display bgp evpn all routing-table route-type 1 summary
Total Type-1 Routes: 16 (8 ES × 2 Members)
# 验证Type-2路由
<CE6860-Leaf-01> display bgp evpn all routing-table route-type 2 summary
Total Type-2 Routes: 50 (50 VMs)
# 验证Type-3 IMET路由(VTEP发现)
<CE6860-Leaf-01> display bgp evpn all routing-table route-type 3
Total number of routes: 8
Route Distinguisher: 10.255.1.1:100
PeerIP MAC-Address Flags
10.255.1.1 00EE.0000.0001 R=1 I=1 <-- Leaf-01自身
10.255.2.1 00EE.0000.0002 R=1 I=1 <-- Leaf-02
10.255.3.1 00EE.0000.0003 R=1 I=1 <-- Leaf-03
...
# 连通性测试
<VM-01> ping 10.100.1.20
PING 10.100.1.20: 56 data bytes
Reply from 10.100.1.20: bytes=56 Sequence=1 ttl=64 time=0.8 ms
Reply from 10.100.1.20: bytes=56 Sequence=2 ttl=64 time=0.9 ms
Reply from 10.100.1.20: bytes=56 Sequence=3 ttl=64 time=0.7 ms
--- 10.100.1.20 ping statistics ---
3 packet(s) transmitted, 3 packet(s) received, 0.00% packet loss
4.5 ES分裂脑排查步骤
当ES内两台VTEP都认为自己是对端Down,导致两台都成为Active时,即为分裂脑。
# 步骤1:检查ES状态
<CE6860-Leaf-01> display evpn ethernet-segment ES-DC1-RACK01
Ethernet-Segment Name : ES-DC1-RACK01
Active : 1 <-- 应该与对端一致
Maximum Active : 2
Auto-Detect Status : MLAG-UP <-- MLAG心跳正常
# 步骤2:检查MLAG心跳
<CE6860-Leaf-01> display mlag summary
MLAG Status: Up
Peer IP: 10.255.100.2
Heartbeat Interval: 3s
Heartbeat Lost: 0
# 步骤3:检查ES检测报文
<CE6860-Leaf-01> display evpn ethernet-segment ES-DC1-RACK01 statistics
Detect Packet Sent: 15234
Detect Packet Received: 15230 <-- 接收数≈发送数,正常
Detect Packet Lost: 4
# 步骤4:如对端Detect Packet Received为0,检查中间链路
# - MLAG心跳链路是否Up
# - 防火墙是否阻断检测报文(Dest UDP Port 4789)
4.6 ARP代理与网关IP通告验证
# 验证Anycast Gateway IP
<CE6860-Leaf-01> display bgp evpn all routing-table route-type 2 gateway
Total number of routes: 8
ESI MAC Address IP Address Origin-VTEP Flags
0000:0000:0000:0001:0001 00EE:0001:0000:0100 10.100.1.254 10.255.1.1 G=1 M=1 <-- Leaf-01
0000:0000:0000:0001:0001 00EE:0001:0000:0100 10.100.1.254 10.255.2.1 G=1 M=2 <-- Leaf-02
# Flag G=1 表示这是Gateway IP Route
# 两台Leaf都通告了相同的Gateway MAC和IP,这是正确的Anycast行为
# 验证ARP广播配置
<CE6860-Leaf-01> display evpn instance 100
EVPN Instance: 100
VNI: 100
ARP Broadcast: Enabled <-- 必须启用,否则ARP请求无法跨VXLAN复制
IP-MAC Binding Learn: Enabled
# 在VM侧验证ARP表
<VM-01> arp -a
Internet Address Physical Address Type
10.100.1.254 00-ee-00-01-00-01-00 dynamic <-- Gateway
10.100.1.20 00-11-22-33-44-02 dynamic <-- 同VXLAN的VM
4.7 EVPN VXLAN排错快速参考表
| 故障现象 | 可能原因 | 排查命令 | 修复方法 |
|---|---|---|---|
| 双归服务器丢包 | ES Max-Active配置错误 | display evpn ethernet-segment |
设置max-active=2 |
| ARP解析失败 | ARP广播未启用 | display evpn instance X |
启用arp broadcast |
| 跨Leaf不通 | Type-2路由未同步 | display bgp evpn route-type 2 |
检查BGP EVPN Peer |
| VXLAN隧道不通 | Underlay路由缺失 | display ip routing-table |
检查IGP路由 |
| 分裂脑 | MLAG心跳中断 | display mlag summary |
修复MLAG心跳链路 |
| DHCP失败 | DHCP Relay未配置 | display dhcp relay |
配置DHCP Relay |
| 广播风暴 | Ingress Replication异常 | display bgp evpn route-type 3 |
检查IMET路由 |
4.8 EVPN故障排查Mermaid流程图

排错优先级矩阵:
| 优先级 | 检查项 | 影响范围 | 常用命令 |
|---|---|---|---|
| P0(最高) | Underlay连通性 | 全VXLAN中断 | ping VTEP-IP / display ip routing-table |
| P0 | VXLAN UDP 4789放行 | 全VXLAN中断 | display firewall session table |
| P1 | BGP EVPN Peer状态 | 路由不同步 | display bgp evpn all peer |
| P1 | ES配置(Max-Active/Node-ID) | 双归异常 | display evpn ethernet-segment |
| P2 | Type-1/Type-2路由完整性 | 部分通信异常 | display bgp evpn route-type 1/2 |
| P2 | ARP广播配置 | ARP解析失败 | display evpn instance X |
| P3 | VRF RT Import/Export | 跨VXLAN不通 | display vpn-instance |
| P3 | MTU/Jumbo Frame | 大包丢包 | display interface \| include MTU |
五、经验总结
| 序号 | 经验类别 | 经验内容 | 适用场景 |
|---|---|---|---|
| 1 | ES配置 | ES的Maximum Active必须设置为成员数,Node ID必须唯一 | EVPN多活 |
| 2 | BGP设计 | EVPN推荐使用RR架构避免全互联,大规模网络必备 | EVPN设计 |
| 3 | MAC同步 | Type-2 MAC Route是EVPN通信的基础,必须完整同步 | 故障排查 |
| 4 | ARP代理 | 多活网关必须启用ARP广播,确保ARP请求能被复制 | 网关配置 |
| 5 | MLAG检测 | ES自动检测建议使用MLAG模式,避免分裂脑 | 高可用 |
| 6 | 验证方法 | 部署后必须逐项验证Type-1/2/5路由的完整性 | 验收测试 |
| 7 | 排错顺序 | 先查ES→Type-1→Type-2→VXLAN隧道的顺序排查 | 故障排查 |
| 8 | 监控告警 | ES状态变化必须纳入监控,及时发现多活异常 | 运维监控 |
| 9 | 文档规范 | ES ID、Node ID必须有全局规划表 | 规划文档 |
| 10 | 培训提升 | EVPN概念复杂,网工必须深入理解ES和Route Type | 技能培训 |
思考
- EVPN多活网关中,如果ES的Node ID配置错误(两台Leaf使用相同的Node ID),会产生什么后果?
- EVPN Type-2路由中ESI(Ethernet Segment Identifier)的作用是什么?如果没有ESI,多活网关能否正常工作?
- Ingress Replication和Multicast VXLAN两种组播/广播转发方式相比,各有什么优缺点?如何选择?
下篇预告:第341篇:VXLAN 流量负载不均案例分析