第174篇:EVPN 的 MAC/IP 路由通告

关键词:EVPN Type2路由、MAC路由、IP路由、MAC-IP绑定、Active-DAC、Standby-DAC

一、引言

EVPN Type 2 路由(MAC/IP 可达性路由)是 EVPN 控制平面的核心。它通过 MP-BGP 显式通告 MAC 地址和可选的 IP 地址绑定信息,使所有 VTEP 能够精确知道每个 MAC 地址位于哪个 VTEP 下。这种显式通告机制彻底消除了传统 VPLS 中未知单播报文的泛洪,实现了精确转发,是 EVPN 相比 VPLS 在扩展性和性能方面的根本优势。

二、核心概念

2.1 Type 2 路由结构

EVPN Type 2 路由的 NLRI 格式:

字段 长度 说明
Route Type 1字节 固定为 2
Route Length 1字节 可变
ESI Length 1字节 ESI 长度(0=无ES, 10=标准ES)
ESI 0-20字节 Ethernet Segment Identifier
MAC Length 1字节 MAC 地址长度(固定6)
MAC Address 6字节 通告的 MAC 地址
IP Address Length 1字节 0=无IP, 4=IPv4, 16=IPv6
IP Address 0/4/16字节 可选的 IP 地址

2.2 Type 2 路由分类

类型 IP 地址字段 说明
MAC-only 长度=0 仅通告 MAC 地址
MAC+IPv4 长度=4 通告 MAC 和 IPv4 绑定
MAC+IPv6 长度=16 通告 MAC 和 IPv6 绑定
MAC+IP 移动 长度>0, 多NextHop 支持 IP 移动性

2.3 MAC 路由 vs MAC+IP 路由

维度 MAC-only 路由 MAC+IP 路由
NLRI RD:ESI:MAC RD:ESI:MAC:IP
用途 二层转发查找 二层+三层转发查找
网关ARP 需要ARP泛洪 无需ARP泛洪(BGP已通告IP绑定)
性能 一般 优(消除ARP泛洪)

MAC 路由 vs MAC+IP 路由 - 图示

三、技术细节

3.1 MAC 路由学习流程

MAC 路由学习流程 - 图示

3.2 MAC 路由的防环机制

EVPN 通过以下机制防止 MAC 路由环路:

机制 说明
ESI 比较 同一 ES 下仅 Active VTEP 通告 Type 2 路由
Next-Hop 自环检测 不接收 Next-Hop 为自身的路由
BGP AS_PATH BGP 环路检测(适用于 eBGP 场景)

3.3 多归属场景下的 MAC 路由

当 CE 通过多个 VTEP(同一 ES)接入时:

状态 Active VTEP Standby VTEP
正常 通告 Type 2 路由(带 ESI) 不通告(等待切换)
Active 故障 Standby 切换为 Active 通告 Type 2 路由
同步期间 保持 Active,不撤销路由 学习 MAC 表但不通告

四、实战配置/案例分析

4.1 华为 EVPN Type 2 路由配置

# ========== VTEP1: 启用MAC+IP路由通告 ==========
[EVPN-PE1] vxlan vni 1000
[EVPN-PE1-vxlan-vni-1000] route-distinguisher 10.1.1.1:1000
[EVPN-PE1-vxlan-vni-1000] route-target both evpn 1000:1000
[EVPN-PE1-vxlan-vni-1000] mac-ip-advertisement enable
  # 启用MAC+IP联合通告

# 配置Ethernet Segment(多归属)
[EVPN-PE1] bridge ethernet-segment 1
[EVPN-PE1-ethernet-segment-1] priority 32768
[EVPN-PE1-ethernet-segment-1] interface 100ge 1/0/1

# BGP EVPN地址族
[EVPN-PE1] bgp 65001
[EVPN-PE1-bgp-65001] address-family evpn
[EVPN-PE1-bgp-65001-evpn] network-type mac-ip
  # 通告MAC+IP路由类型

4.2 验证 Type 2 路由

# 查看EVPN Type2路由
<EVPN-PE1> display bgp evpn routing-table type 2
  Total: 5 routes

  *> RD: 10.1.1.1:1000
     ESI: 0000.0000.0000.0000.0001
     MAC: 00:11:22:33:44:55
     IP: 192.168.1.10
     NextHop: 10.1.1.1
     Type: Active-DAC

  *> RD: 10.1.1.1:1000
     ESI: 0000.0000.0000.0000.0002
     MAC: 00:AA:BB:CC:DD:EE
     IP: 192.168.1.20
     NextHop: 10.1.2.1
     Type: Active-DAC

# 查看MAC地址表(EVPN学习)
<EVPN-PE1> display mac-address vni 1000
  MAC Address      Type     Interface         VNI
  0011-2233-4455   BGP      Tunnel-Source     1000
  00AA-BBCC-DDEE   BGP      Tunnel-Dest:10.1.2.1 1000

4.3 故障排查:MAC 路由未通告

故障场景:VTEP1 学习到 CE 的 MAC 地址,但未通过 BGP 通告 Type 2 路由。

# Step 1: 检查本地MAC表
<EVPN-PE1> display mac-address vni 1000
  0011-2233-4455  Dynamic  100ge1/0/1  1000
  # MAC已学习

# Step 2: 检查BGP EVPN路由
<EVPN-PE1> display bgp evpn routing-table type 2
  # 无Type2路由

# Step 3: 检查MAC-IP通告配置
<EVPN-PE1> display current-configuration | include mac-ip
  # 发现: mac-ip-advertisement 未启用

# Step 4: 修正配置
[EVPN-PE1-vxlan-vni-1000] mac-ip-advertisement enable

# Step 5: 检查ES配置(如果是多归属场景)
<EVPN-PE1> display ethernet-segment 1
  # 如果是非活动ES, Type2路由不会被通告
  # 确认该VTEP在ES中为Active状态

四(续)、高级主题

4.4 MAC-IP 路由老化与撤销机制

EVPN Type 2 路由的生命周期管理对网络稳定性至关重要:

触发条件 行为 收敛时间
本地 MAC 老化超时 VTEP 撤销对应的 Type 2 路由 取决于 MAC 老化时间(默认 300s)
CE 接口 Down VTEP 立即撤销该接口下学习的所有 MAC 路由 秒级
ESI 故障(Active 链路中断) Active VTEP 撤销路由,Standby 接管并通告 亚秒级
VTEP 故障 BGP 会话超时后,对端撤销路由 BGP Hold Timer(默认 180s,建议缩短)
VNI 删除 撤销该 VNI 下所有 Type 2 路由 立即
# 调整MAC老化时间(缩短收敛)
[EVPN-PE1-vxlan-vni-1000] mac-ageout 60
  # 将MAC老化时间从300s缩短到60s

# 调整BGP Hold Timer(加速故障检测)
[EVPN-PE1-bgp-65001] timer connect 3 keepalive 1 hold 6
  # Connect=3s, Keepalive=1s, Hold=6s

# 查看MAC老化计时器
<EVPN-PE1> display mac-address vni 1000 aging-timer
  MAC Address      Remaining
  0011-2233-4455   45s
  00AA-BBCC-DDEE   30s

4.5 BGP Type 2 路由优选规则

当同一 MAC 地址存在多条 Type 2 路由时,VTEP 按以下优先级选择最优路由:

优先级 比较项 规则
1 ESI 非空 vs ESI 为空 ESI 非空优先(多归属场景更精确)
2 Active-DAC vs Standby-DAC Active-DAC 优先
3 Next-Hop 可达性 优先选择可达的 Next-Hop
4 BGP Local Preference 值越大越优
5 AS_PATH 长度 越短越优
6 Router ID 越小越优
# 查看Type2路由的详细信息(含优选属性)
<EVPN-PE1> display bgp evpn routing-table type 2 verbose
  *> RD: 10.1.1.1:1000
     ESI: 0000.0000.0000.0000.0001
     MAC: 00:11:22:33:44:55
     IP: 192.168.1.10
     NextHop: 10.1.1.1
     Type: Active-DAC
     LocPrf: 100
     Valid: Yes, Best: Yes
     Origin: I

  >  RD: 10.1.1.2:1000     # 非最优(Standby-DAC)
     ESI: 0000.0000.0000.0000.0001
     MAC: 00:11:22:33:44:55
     IP: 192.168.1.10
     NextHop: 10.1.2.1
     Type: Standby-DAC
     LocPrf: 100
     Valid: Yes, Best: No

4.6 大规模 MAC 表优化策略

当 VNI 内 MAC 地址数量达到数万级别时,需要采取优化措施:

优化策略 方法 效果
抑制泛洪 MAC 配置 MAC 黑名单,不学习不泛洪的 MAC 减少 Type 2 路由数量 20-40%
分层 VNI 设计 按部门/楼层划分 VNI,避免单 VNI 过大型 分散 MAC 表压力
BGP Route Refresh 支持渐进式路由刷新,避免瞬时刷新风暴 降低 CPU 冲击
MAC 表分段老化 对不同 VLAN 设置不同老化时间 平衡收敛速度和稳定性
Type 2 路由聚合 将同一子网的多条 MAC 路由聚合通告 减少 BGP 表项
# 配置MAC地址抑制(不学习DHCP服务器等已知MAC)
[EVPN-PE1-vxlan-vni-1000] mac-blackhole 00:AA:BB:CC:DD:EE
  # 黑名单MAC不会触发Type2路由通告

# 配置BGP Type2路由最大数量(防DoS)
[EVPN-PE1-bgp-65001-evpn] mac-ip-max-routes 50000 warning-threshold 80
  # 超过40000条时发出告警

4.7 MAC-IP 移动性场景

虚拟机迁移(vMotion/Live Migration)时,MAC 地址从一个 VTEP 移动到另一个 VTEP:

MAC-IP 移动性场景 - 图示

移动性类型 MAC 变化 IP 变化 EVPN 处理
同 VNI 迁移 不变 不变 Type 2 路由更新 Next-Hop
跨 VNI 迁移 不变 不变 撤销旧 VNI Type 2,新 VNI 发布 Type 2
IP 变更 不变 变更 撤销旧 MAC+IP 路由,发布新 MAC+IP 路由
MAC 变更 变更 不变 撤销旧 MAC 路由,发布新 MAC 路由

4.8 Type 2 路由与 ARP 优化联动

启用 MAC+IP 联合通告后,ARP 流程完全被 BGP 取代:

传统 ARP 流程 EVPN MAC+IP 优化后
CE 发送 ARP Request(广播) CE 直接查本地 ARP 缓存
VTEP 泛洪 ARP 到所有 VTEP 无需泛洪
目标 CE 回复 ARP Reply 无 ARP 交互
源 VTEP 学习 MAC+IP 绑定 VTEP 从 BGP 路由表学习
VTEP 发布 Type 2 MAC+IP 路由 转发查 BGP MAC+IP 路由表
# 验证ARP优化效果
# 传统模式:CE发起ARP请求
<CE> display arp
  Internet Address    Physical Address    Type
  192.168.1.20        incomplete          ARS  # ARP等待中

# EVPN MAC+IP模式:无需ARP
<CE> display arp
  Internet Address    Physical Address    Type
  192.168.1.20        00:AA:BB:CC:DD:EE  BGP   # BGP下发的静态ARP
  # 状态为BGP, 由VTEP通过ARP Proxy直接回复

4.9 VTEP 间 Type 2 路由同步验证 Checklist

检查项 命令 预期结果
MAC+IP通告开关 display current-configuration \| include mac-ip-advertisement enable
Type 2 路由数量 display bgp evpn routing-table type 2 \| counting 与学习MAC数一致
路由状态 display bgp evpn routing-table type 2 \| include Best 全部标记为 Best
Next-Hop 可达 display ip routing-table <next-hop> 路由可达
BGP 邻居状态 display bgp evpn peer 所有 Peer Established
MAC 表类型 display mac-address vni 1000 \| include BGP 远程MAC类型为BGP
ESI 状态 display ethernet-segment Active 状态正确
路由更新频率 display bgp evpn peer <ip> | include Upd 无异常频繁更新

五、总结

项目 要点
Type 2 路由 EVPN 核心路由类型,通告 MAC/IP 可达性
MAC-only 仅二层转发,需 ARP 泛洪获取 IP
MAC+IP 二层+三层联合通告,消除 ARP 泛洪
ESI 作用 标识 Ethernet Segment,多归属场景必备
Active-DAC 多归属下仅 Active VTEP 通告 Type 2 路由

思考

  1. Type 2 路由携带 ESI 字段。如果 ESI 为 0(无 ESI),说明该 MAC 地址位于什么场景下?
  2. MAC+IP 路由消除了 ARP 泛洪。如果 CE 的 IP 地址变更,旧的 MAC+IP 路由如何撤销?BGP 的收敛时间对 IP 变更有什么影响?
  3. 在多归属场景下,如果 Active VTEP 故障,Standby VTEP 何时开始通告 Type 2 路由?切换期间是否有数据丢失?

下篇预告:第175篇:EVPN VXLAN 网关:集中式与分布式