第257篇:EVPN Type2/Type3 路由详解
关键词
EVPN Type2、MAC/IP路由、EVPN Type3、IMET、Ingress Replication、BUM泛洪、ARP代理、MAC移动
一、EVPN Type 2 路由(MAC/IP Advertisement)
1.1 路由格式
Type 2 是 EVPN 中最核心的路由类型,用于通告主机的 MAC 地址和(可选的)IP 地址:
Type 2 路由 NLRI 格式:
┌─────────────────────────────────────────┐
│ Route Distinguisher (RD) - 8 字节 │
├─────────────────────────────────────────┤
│ Ethernet Tag ID - 4 字节 │
├─────────────────────────────────────────┤
│ MAC Address - 6 字节 │
├─────────────────────────────────────────┤
│ IP Address Length - 1 字节 │
├─────────────────────────────────────────┤
│ IP Address - 0/4/16 字节 │
├─────────────────────────────────────────┤
│ MPLS Label 1 (VNI) - 3 字节 │
├─────────────────────────────────────────┤
│ MPLS Label 2 (可选,仅多归) - 3 字节 │
└─────────────────────────────────────────┘
关键字段说明:
RD(Route Distinguisher):
格式:VTEP-IP:VNI 如 10.1.1.1:10001
确保不同 VTEP 发布的相同 MAC 路由可区分
Ethernet Tag ID:
通常为 0(默认),或关联 VLAN ID
MAC Address:
主机的 MAC 地址,6 字节
IP Address:
可选字段,0 字节表示仅 MAC(纯二层场景)
4 字节表示 IPv4
16 字节表示 IPv6
MPLS Label 1:
实际承载 VNI 值(24-bit)
1.2 Type 2 路由的生成
Type 2 路由的触发条件:
条件 1:本地 MAC 学习(数据面触发)
┌─ Leaf 通过数据面学习到新 MAC ──────────┐ 1. Leaf 从本地端口收到 VM A 的帧 2. 数据面学习:MAC AA:AA:AA:AA:AA:01 3. 关联 VNI 10001 4. 触发 EVPN Type 2 路由发布
条件 2:免费 ARP(GARP)触发
┌─ VM 启动时发送 GARP ───────────────────┐ 1. VM A 发送免费 ARP: "我是 192.168.1.10, MAC AA:AA..." 2. Leaf 捕获 GARP 3. 生成 Type 2 路由(含 IP + MAC) 4. 立即发布
条件 3:ARP 触发
┌─ VM 发送 ARP 请求后 ───────────────────┐ 1. VM A 发送 ARP: "Who has 192.168.1.1?" 2. Leaf 检查 ARP 源 MAC/IP 3. 如果 MAC/IP 不在表中 → 学习并发布
1.3 Type 2 路由的处理
本地 Leaf 发布 Type 2(源端):
1. 生成路由:
RD: 10.1.1.1:10001
MAC: AA:AA:AA:AA:AA:01
IP: 192.168.1.10
VNI: 10001
Next-Hop: 10.1.1.1(本地 VTEP IP)
2. 通过 BGP 发布到所有 iBGP 邻居
远端 Leaf 接收 Type 2(目的端):
1. BGP 接收路由
2. 验证 RT 匹配(import RT)
3. 安装到 EVPN 转发表:
MAC: AA:AA:AA:AA:AA:01
→ VTEP: 10.1.1.1
→ VNI: 10001
→ Outgoing Interface: NVE1
4. 如果包含 IP:
安装到 ARP 表:
IP: 192.168.1.10
→ MAC: AA:AA:AA:AA:AA:01
→ Remote(非本地)
5. 后续发往 AA:AA:AA:AA:AA:01 的帧:
直接 VXLAN 封装 → 发送到 10.1.1.1
1.4 MAC 移动(MAC Mobility)
MAC 移动场景:VM 从 Leaf1 迁移到 Leaf2
迁移前:
Leaf1 发布:MAC AA:AA:AA:AA:AA:01 → VTEP 10.1.1.1
VM 在 Leaf2 上线:
Leaf2 学习到 MAC AA:AA:AA:AA:AA:01
Leaf2 发布 Type 2:
MAC: AA:AA:AA:AA:AA:01
IP: 192.168.1.10
VNI: 10001
Next-Hop: 10.1.1.2(新的 VTEP)
Sequence: 1(MAC 移动序列号)
其他 Leaf 处理:
收到 Leaf2 的路由:
1. 检查 Sequence Number
2. Sequence 更高 → 新位置
3. 更新转发表:MAC → VTEP 10.1.1.2
4. 撤销旧的 Leaf1 路由
Leaf1 处理(源端):
感知到 MAC 已移走:
1. 撤销原 Type 2 路由
2. 清理本地 MAC 表
3. 完成迁移
MAC 移动保护:
在短时间内超过 N 次移动 → 触发防抖
# 华为配置
evpn mac-mobility
suppress-time 180 # 180秒内抑制重复移动
二、EVPN Type 3 路由(IMET)
2.1 路由格式
Type 3 用于BUM(广播、未知单播、组播)流量控制:
Type 3 路由 NLRI 格式:
Route Distinguisher (RD) - 8 字节 Ethernet Tag ID - 4 字节 IP Address Length - 1 字节 Originating Router IP Address - 4/16 字节 MPLS Label (VNI) - 3 字节
关键字段说明:
RD:同 Type 2,通常 VTEP-IP:VNI
Ethernet Tag ID: 标识广播域(VLAN),通常为 0
Originating Router IP: 发送 VTEP 的 IP 地址
MPLS Label (VNI): 该 VTEP 参与的 VNI
2.2 IMET 的工作机制
Type 3 路由建立 BUM 组:
场景:VNI 10001 有 4 个 VTEP 成员
Leaf1 发布 Type 3:
VNI: 10001
Originating Router: 10.1.1.1
Leaf2 发布 Type 3:
VNI: 10001
Originating Router: 10.1.1.2
Leaf3 发布 Type 3:
VNI: 10001
Originating Router: 10.1.1.3
Leaf4 发布 Type 3:
VNI: 10001
Originating Router: 10.1.1.4
每台 Leaf 收到所有 Type 3 后:
构建 VNI 10001 的 BUM 成员列表:
[10.1.1.1, 10.1.1.2, 10.1.1.3, 10.1.1.4]
2.3 Ingress Replication
Ingress Replication(入口复制)是 EVPN 默认的 BUM 转发方式:
转发流程:
Leaf1 需要发送 BUM 帧(如 ARP 请求):
1. 查 VNI 10001 的 BUM 成员列表:
[10.1.1.2, 10.1.1.3, 10.1.1.4](排除自己)
2. 原始帧(ARP 请求)封装为 3 份 VXLAN:
副本1:Outer IP 10.1.1.2 ← 发送到 Leaf2
副本2:Outer IP 10.1.1.3 ← 发送到 Leaf3
副本3:Outer IP 10.1.1.4 ← 发送到 Leaf4
3. 每份副本独立走 Underlay ECMP
优点:
不需要 IP 组播(无需 IGMP/PIM)
简单可靠
适用于任何 IP 网络(包括 WAN/DCI)
缺点:
入口 Leaf 需要复制 N 份(N=远端 VTEP 数量)
CPU 开销随 VTEP 数量线性增长
适合 VTEP < 100 的规模
优化:
# 华为开启 Head-End Replication 硬件加速
bridge-domain 10001
vxlan replication-type ingress # 硬件入口复制
2.4 BUM 流量优化
BUM 流量优化技术:
1. ARP 代理(消除 ARP 广播)
# 开启 ARP 代理
bridge-domain 10001
arp-proxy inner-ip enable
原理:Type 2 路由中已有所有主机的 MAC/IP
ARP 请求在 VTEP 直接代答
不需要泛洪到远端 VTEP
2. ND 代理(IPv6 版本)
bridge-domain 10001
nd-proxy inner-ip enable
3. 未知单播抑制
# 开启后,不可达的目的 MAC 帧被丢弃(不泛洪)
bridge-domain 10001
unknown-unicast-suppress enable
4. BUM 流量限速
# 限制 BUM 速率
bridge-domain 10001
vxlan bum-rate-limit 1000 # 限制 1000 pps
三、Type 2 + Type 3 协同工作
3.1 完整转发流程
VM A(Leaf1)首次访问 VM B(Leaf2):
Step 1:VM A 发送 ARP 请求
"Who has 192.168.1.20? Tell 192.168.1.10"
Step 2:Leaf1(VTEP1)处理
ARP 代理检查:
Type 2 路由中是否有 192.168.1.20?
情况 A:已有(之前已学习)
Leaf1 直接代答:192.168.1.20 → MAC BB:BB:BB:BB:BB:01
→ ARP 完成,不泛洪 ← 最理想
情况 B:没有(首次通信)
Leaf1 需要泛洪 ARP 请求:
查 Type 3 BUM 列表 → [Leaf2, Leaf3, Leaf4]
通过 Ingress Replication 发送 ARP 请求
Step 3:Leaf2 收到 ARP 请求
解封装后泛洪到本地 VM
VM B 回复 ARP
Step 4:Leaf2 学习到 VM A 的信息
通过 ARP 数据包获取:
MAC AA:AA:AA:AA:AA:01
IP 192.168.1.10
触发 Type 2 路由更新
发布到所有 Leaf
Step 5:Leaf1 收到 VM B 的 Type 2 路由
安装到 MAC 表:MAC BB:BB:BB:BB:BB:01 → VTEP 10.1.1.2
安装到 ARP 表:192.168.1.20 → MAC BB:BB:BB:BB:BB:01
Step 6:VM A → VM B 数据流(无需再泛洪)
VM A 发送以太网帧(dst MAC = BB:BB:BB:BB:BB:01)
Leaf1 查 MAC 表 → VTEP 10.1.1.2
封装 VXLAN → 发送到 10.1.1.2
Leaf2 解封装 → 转发给 VM B
关键点:
第一次通信需一次 ARP 泛洪
之后所有通信直接封装转发
如果开启 ARP 代理 → 第一次也不泛洪
3.2 故障处理
故障场景 1:VTEP 离线
Leaf3 故障:
1. BGP 邻居断连
2. Spine(RR)撤销 Leaf3 的所有路由
3. 其他 Leaf 收到撤销:
Type 2:删除 MAC → VTEP 10.1.1.3 的表项
Type 3:从 BUM 列表移除 10.1.1.3
收敛时间:BGP Hold Time(默认 180s,可调至 3s)
加速方案:
# BFD for BGP
bgp 65001
peer 10.1.0.1 bfd enable
peer 10.1.0.1 bfd min-tx-interval 100
peer 10.1.0.1 bfd min-rx-interval 100
BFD 检测时间:300ms → BGP 收敛 < 1s
故障场景 2:MAC 表老化
Leaf1 上的 VM A MAC 老化:
1. Leaf1 撤销 Type 2 路由(MACA → VTEP 10.1.1.1)
2. 其他 Leaf 删除 MACA 表项
3. 如果 VM A 仍然在线:
发送数据 → Leaf1 重新学习 → 重新发布 Type 2
不中断:重新学习后,业务自动恢复
四、查看 EVPN 路由
4.1 华为设备查看命令
# 查看 EVPN 路由表
display bgp evpn all routing-table
BGP Local router ID: 10.1.1.1
Total number of routes: 20
Route Distinguisher: 10.1.1.1:10001
Network Nexthop VNI Label
*> [2][0][48][AA:AA:AA:AA:AA:01]
10.1.1.1 10001 -
*> [3][0][32][10.1.1.1]
10.1.1.1 10001 -
*i [2][0][48][BB:BB:BB:BB:BB:01]
10.1.1.2 10001 -
# 查看 Type 2 详细信息
display bgp evpn routing-table mac-route
MAC address IP address VNI NextHop Seq
AA:AA:AA:AA:AA:01 192.168.1.10 10001 10.1.1.1 0
BB:BB:BB:BB:BB:01 192.168.1.20 10001 10.1.1.2 0
# 查看 Type 3 详细信息
display bgp evpn routing-table inclusive-multicast-route
VNI Originating Router NextHop
10001 10.1.1.1 10.1.1.1
10001 10.1.1.2 10.1.1.2
10001 10.1.1.3 10.1.1.3
五、总结
| 知识点 | 核心要点 |
|---|---|
| Type 2 路由 | 通告 MAC+IP,替代数据面 MAC 学习 |
| Type 2 触发 | 本地 MAC 学习、GARP、ARP 触发 |
| MAC 移动 | Sequence Number 标识迁移,自动更新 |
| Type 3 路由 | IMET,标识 VTEP 的 VNI 成员 |
| Ingress Replication | 入口 VTEP 复制 BUM 到所有成员 |
| ARP 代理 | Type 2 已有 IP-MAC 映射,VTEP 代答 |
| BUM 优化 | ARP 代理 + 未知单播抑制 + 速率限制 |
| 协同工作 | Type 2 处理单播,Type 3 处理 BUM |
| 故障收敛 | BFD 加速,MAC 重新学习自动恢复 |
六、思考
- EVPN Type 2 路由包含哪些核心字段?收到一条 Type 2 路由后,接收方 VTEP 会做哪几步处理?
- Ingress Replication 的工作原理是什么?相比 IP 组播有什么优点和缺点?
- 当 VM 从 Leaf1 迁移到 Leaf2 时,EVPN 如何感知并更新路由?MAC Mobility 的 Sequence Number 是如何工作的?
- ARP 代理如何减少 BUM 流量?如果所有主机的 MAC/IP 都已通过 Type 2 路由通告,ARP 请求还需要泛洪吗?
- 在首次通信场景中,Type 2 和 Type 3 路由如何协同完成 MAC 学习和转发?请描述完整流程。
下篇预告:第258篇《分布式网关与集中式网关对比》——数据中心 VXLAN 网关的两种部署方式,对比性能、扩展性、故障域,以及为什么分布式网关是 Spine-Leaf 的默认选择。