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

关键词

Type 2 路由、MAC/IP 通告、MAC 迁移、MAC 冻结、ARP 抑制、同步化、控制面学习


一、Type 2 路由详解

1.1 路由结构

Type 2 路由(MAC/IP Advertisement Route)是 EVPN 中最核心的路由类型:

NLRI for Type 2:
┌────────────────────────────────────────────┐
│ Route Distinguisher (RD) - 8 bytes        │
│ Ethernet Tag ID - 4 bytes                 │
│ MAC Address Length - 1 byte               │
│ MAC Address - 6 bytes                     │
│ IP Address Length - 1 byte                │
│ IP Address - 0/4/16 bytes                 │
│ MPLS Label1 - 3 bytes                     │
│ MPLS Label2 - 3 bytes (optional)          │
└────────────────────────────────────────────┘

关键字段说明:

字段 含义 说明
RD 路由标识符 使 MAC 地址全局唯一
MAC Address 客户 MAC 地址 6 字节
IP Address 关联的 IP 地址 IPv4(4B) 或 IPv6(16B)
MPLS Label1 内层 VNI/VXLAN 标签 标识 EVI
MPLS Label2 第二标签(可选) 用于 IRB 等场景

1.2 路由发布时机

PE 在以下事件触发时发布 Type 2 路由:

1. 新 MAC 学习(数据面 or DHCP/ARP 获取)
   客户 CE1 发送帧 → PE1 学习到 MAC_A
   → PE1 发布 Type 2: MAC_A → IP(N/A or from ARP)

2. ARP/ND 解析
   PE1 收到 CE1 的 ARP 请求/回复
   → 获取 MAC 和 IP 的绑定关系
   → 发布 Type 2: MAC_A → IP_A

3. MAC 迁移事件
   发现 MAC_A 从不同接口出现
   → 可能有环路或 VM 迁移
   → 更新 Type 2 路由

4. 手工触发
   refresh bgp evpn all

二、MAC 地址学习的过程

2.1 首次学习

PE1 初始状态:MAC-VRF 为空

CE1 向 CE2 发送第一帧(MAC_A → MAC_B):
  │
  ▼
PE1:
  ① 从 AC 接口收到帧
  ② 数据面学习:MAC_A → AC1(入接口)
  ③ 查 MAC_B → 未找到
  ④ 触发 Type 3 IMET 泛洪(不是数据面泛洪)
  ⑤ 同时发布 Type 2: MAC_A → IP_A
  │
  ▼
PE2 收到 Type 2 路由:
  ① 安装到 MAC-VRF: MAC_A → PE1(隧道转发)
  ② 不需要泛洪就能知道 MAC_A 的位置!
  │
  ▼
CE2 回复(MAC_B → MAC_A):
  ① PE2 查 MAC-VRF: MAC_A → PE1
  ② 直接通过隧道发送到 PE1(单播,不泛洪)
  ③ PE2 学习 MAC_B 并发布 Type 2

2.2 控制面 vs 数据面学习

对比 数据面学习(VPLS) 控制面学习(EVPN)
MAC 位置来源 数据面帧泛洪后的逆向学习 MP-BGP Type 2 路由
收敛速度 快(BGP 撤回 + 更新)
泛洪需求 必要 仅首次未知
ARP 学习 广播 ARP ARP 抑制(Proxy)
MAC 迁移 依赖 MAC 表老化 BGP 路由更新 + 序列号

三、MAC 迁移与 Mac Mobility

3.1 场景

VM 从 PE1 下迁移到 PE2 下:

          ┌─────────────┐
  VM ─────┤  ESI-1      │
  MAC=M   │  PE1        │
  IP=10.0 │  Type 2: M→PE1 │
          └─────────────┘
              │ 迁移
              ▼
          ┌─────────────┐
  VM ─────┤  ESI-2      │
  MAC=M   │  PE2        │
  IP=10.0 │  Type 2: M→PE2 │
          └─────────────┘

3.2 迁移检测

PE2 学习到 MAC=M 后发布 Type 2 路由,PE1 收到后发现:

PE1 收到 PE2 的 Type 2 路由(MAC=M, Next-Hop=PE2):
  ① 检查自己的 MAC-VRF
  ② MAC=M 已存在(从自己本地学习)
  ③ 触发 MAC 迁移检测

EVPN 迁移序列号机制:
  PE1 在自己发布的 Type 2 路由中携带序列号(Seq=0)
  PE2 在迁移后的 Type 2 路由中携带序列号(Seq=1)
  其他 PE 接收序列号更大的路由(更新转发表)

3.3 MAC 冻结(Mac Duplication Detection)

为防止 MAC 来回迁移导致的震荡,EVPN 支持MAC 冻结

检测到 MAC=M 在短时间内多次迁移:
  PE1 → PE2 → PE1 → PE2 → ...

触发 MAC 冻结条件(默认):
  3 次/180 秒

处理:
  冻结该 MAC 地址,暂时不接受关于 MAC=M 的新路由
  日志告警,等待管理员介入

四、ARP 抑制

4.1 传统 ARP 问题

在没有 ARP 抑制的情况下:

CE1 (10.1.1.1) 需要 CE2 (10.1.1.2) 的 MAC 地址:
  ──▶ 广播 ARP Request(Who has 10.1.1.2?)
   │
   ▼
PE1 通过 Type 3(IMET)复制给 PE2、PE3...
   │
   ▼
CE2 回复 ARP Reply(10.1.1.2 is at MAC_B)
   │
   ▼
CE1 学到 MAC_B

即使 CE1 刚收到 CE2 的 IPv6 数据包,ARP 还是需要广播...
全网范围内的大量 ARP 请求 → 巨大开销

4.2 EVPN ARP 抑制原理

EVPN 让 PE 充当 ARP Proxy

CE1 发送 ARP Request(Who has 10.1.1.2?):
  │
  ▼
PE1 收到:
  ① 查 EVPN Type 2 路由库中是否有 10.1.1.2 的条目
  ② 有!(PE2 发布过 Type 2: MAC_B, IP=10.1.1.2)
  ③ PE1 直接代替 CE2 回复 ARP Reply
  ④ 无需泛洪到骨干网!
  │
  ▼
CE1 立即收到 ARP 回复,且只有本地流量

如果 PE1 没有 10.1.1.2 的信息 → 正常泛洪 ARP(触发 PE 学习)

4.3 ARP 抑制效果

场景 无抑制 有抑制
ARP 请求次数 每次广播到全网 仅首次广播
带宽浪费 极低
CE 响应延迟 高(跨网络) 低(PE 直接回复)
适用条件 PE 需要有 MAC+IP 绑定

五、含 IP 的 Type 2 vs 不含 IP 的 Type 2

场景 Type 2 包含 IP Type 2 不包含 IP
内容 MAC + IP 仅 MAC
来源 ARP/ND/DHCP Snooping 数据面 MAC 学习
ARP 抑制 支持 不支持
路由控制 更精确 较粗

最佳实践:在数据中心场景中,开启 ARP snooping 或 DHCP snooping,让 PE 能获取 MAC+IP 绑定,发布含 IP 的 Type 2 路由。


六、配置示例(华为)

6.1 基础 EVPN 配置

# PE1 配置
evpn-overlay enable                      # 使能 EVPN
#
bridge-domain 10                         # 创建桥接域
 vxlan vni 100                           # VNI = 100
 evpn                                    # EVPN 模式
  route-distinguisher 100:1
  vpn-target 1:1 export-extcommunity
  vpn-target 1:1 import-extcommunity
#
interface GigabitEthernet0/0/0.100
 vlan-type dot1q 100
 bridge-domain 10                        # 绑定桥接域
#
bgp 100
 peer 2.2.2.2 as-number 100
 peer 2.2.2.2 connect-interface LoopBack0
 #
 l2vpn-family evpn
  peer 2.2.2.2 enable
  peer 2.2.2.2 route-reflector-client

6.2 验证

# 查看 EVPN Type 2 路由
<PE1> display bgp evpn all routing-table

 EVPN instance 10:
  Route type: 2 (MAC/IP Advertisement)
  RD: 100:1
  MAC: 00e0-fc00-0001
  IP: 10.1.1.1
  VNI: 100
  Next Hop: 2.2.2.2
  Status: Established

# 查看 MAC-VRF 转发表
<PE1> display bridge-domain 10 mac-address

MAC Address    Type       Interface         VNI
00e0-fc00-0001 Dynamic    GE0/0/0.100       100
00e0-fc00-0002 Remote     Peer 2.2.2.2      100
                          (VXLAN Tunnel)

七、总结

知识点 核心要点
Type 2 路由 通告 MAC 地址和可选的 IP 地址
控制面学习 通过 MP-BGP 而非数据面泛洪学习 MAC
MAC 迁移 通过序列号机制检测和处理 MAC 移动
MAC 冻结 防止 MAC 频繁迁移导致路由震荡
ARP 抑制 PE 作为 ARP Proxy,减少广播流量
含 IP 的 Type 2 支持 ARP 抑制,更精确的路由控制

八、思考

  1. EVPN Type 2 路由包含哪些关键字段?IP 地址字段为什么是可选的?
  2. EVPN 如何实现 MAC 迁移检测?序列号机制是如何工作的?
  3. MAC 冻结(MAC Duplication Detection)的作用是什么?
  4. ARP 抑制的原理是什么?它依赖于 EVPN 的哪项能力?
  5. 含 IP 的 Type 2 路由和不含 IP 的 Type 2 路由有什么区别?

下篇预告:第175篇《EVPN VXLAN 网关:集中式与分布式》——在 EVPN+VXLAN 网络中,如何实现不同子网之间的三层转发?集中式网关和分布式网关分别适用于什么场景。