第257篇:EVPN Type2/Type3 路由详解
关键词:EVPN路由类型、Type2 MAC/IP、Type3 Inclusive Multicast、ESI、MD、ETAG、华为CloudEngine
一、引言
第256篇中,我们介绍了BGP EVPN作为VXLAN控制面的整体架构和配置方法。BGP EVPN之所以能替代传统MAC自学习和静态VTEP配置,核心在于它定义了一套全新的路由类型,将这些二层网络信息作为BGP路由进行分发。
EVPN定义了多达6种路由类型(Type1~Type5),每种路由类型承载不同的语义。其中,Type2(MAC/IP Advertisement Route)和Type3(Inclusive Multicast Ethertag Route)是数据中心场景中最核心的两种路由类型,分别解决"VM的MAC地址在哪里"和"同一个VNI下有哪些VTEP"这两个基础问题。
本文将深入剖析Type2和Type3路由的内部结构、生成逻辑、分发流程,以及它们在故障场景下的行为。
二、EVPN 路由类型总览
BGP EVPN使用独立的地址族(AFI=25, SAFI=7),路由类型(Route Type)标识在Route Type字段中(1字节):
| 路由类型 | 名称 | 用途 |
|---|---|---|
| Type1 | ETH_AUTO_DIScovery_ETHERNET_SEGMENT | ES(Ethernet Segment)发现,用于多宿主场景 |
| Type2 | MAC/IP Advertisement | MAC地址/IP地址通告,核心转发信息 |
| Type3 | Inclusive Multicast Ethertag | VTEP自动发现,泛洪域成员列表 |
| Type4 | MAC Mobility | MAC地址移动通告,用于虚拟机迁移场景 |
| Type5 | IPv4/IPv6 Prefix | 三层路由通告,用于EVPN网关场景 |
Route Distinguisher(RD)的生成规则为:RD =
三、Type2 路由(MAC/IP Advertisement Route)深度剖析
3.1 Type2 路由的作用
Type2路由是EVPN的核心,它通告了一条完整的MAC地址(或MAC+IP地址)与VTEP的映射关系。当Leaf-01从下联端口学习到某台VM的MAC地址后,立即生成一条Type2路由并通过BGP通告给所有其他VTEP。这样,任何其他VTEP需要转发到该VM时,直接从本地EVPN转发表中查询到目标VTEP地址,无需泛洪。
3.2 Type2 路由的格式
Type2路由的MP_REP_NLRI(地址信息)格式如下:
| 字段 | 长度 | 说明 |
|---|---|---|
| Route Type | 1 Byte | 固定为 0x02,标识为Type2路由 |
| Ethernet Tag ID | 4 Bytes | VNI 值,标识所属以太网段 |
| Flags | 1 Byte | Bit 0: H Flag(1=主机MAC, 0=非主机MAC) Bit 1: I Flag(1=携带IP地址, 0=仅MAC) |
| MAC Length | 1 Byte | 固定为 6(MAC地址长度) |
| Ethernet Destination Address | 6 Bytes | MAC地址 |
| IP Address Length | 1 Byte | 可选,仅当 I Flag=1 时存在 |
| IP Address | 4/16 Bytes | 可选,仅当 I Flag=1 时存在(IPv4=4, IPv6=16) |
| Router MAC | 6 Bytes | 可选,仅单臂网关模式使用 |
| ESI Length | 1 Byte | 可选,取值 0~18 |
| ESI | ESI Length Bytes | 可选,Ethernet Segment Identifier |
| MPLS Label Stack | 可变 | 可选,仅非VXLAN场景使用 |
3.3 Type2 路由的生成时机
Type2路由的生成遵循以下规则:
- 本地学习触发:当VTEP从下联端口收到带有新MAC地址的报文时,生成Type2路由
- ARP触发:当VTEP(作为网关)完成本地ARP解析,获得IP↔MAC映射时,生成Type2路由
- DHCP触发:当VTEP上的DHCP Relay为VM分配IP地址后,生成Type2路由
Type2路由的撤销(Withdraw)时机: 1. MAC地址老化超时(默认300秒) 2. 下联端口Down 3. 收到更高优先级的Type2路由(如ESI冲突解决)
3.4 Type2 路由的示例
假设Leaf-01学习到VM-A的MAC地址为00:50:56:AA:BB:CC,IP地址为172.16.100.10,所属VNI为10001。
Leaf-01生成的Type2路由信息: - Route Type: 0x02 - ETAG-ID (VNI): 10001 - Flags: I=1, H=1(携带IP地址,为主机MAC) - MAC Address: 00:50:56:AA:BB:CC - IP Address: 172.16.100.10 - Next Hop: Leaf-01的Loopback IP(10.255.254.1)
# 在 Leaf-01 上查看 Type2 路由
Leaf-01> display bgp evpn routing-table type2
Ethernet Segment Information:
Route Distinguisher : 2:10001:0
Ethernet Tag Id : 10001
MAC Address : 0050-56AA-BBCC
IP Address : 172.16.100.10
NextHop : 10.255.254.1
Flags : Host IP
Preference : 1
learnt from : Local
Ethernet Segment Information:
Route Distinguisher : 2:10001:0
Ethernet Tag Id : 10001
MAC Address : 0050-56DD-EEFF
IP Address : 172.16.100.20
NextHop : 10.255.254.2
Flags : Host IP
Preference : 1
learnt from : 10.255.255.1 (Spine-01)
四、Type3 路由(Inclusive Multicast Ethertag Route)深度剖析
4.1 Type3 路由的作用
Type3路由通告了某个VNI(Ethernet Tag)的所有VTEP成员列表。它解决的核心问题是:当VTEP需要发送广播/组播/未知单播报文时,它应该将报文复制并发送到哪些远端VTEP?
在传统泛洪机制中,这个问题通过组播组或手动配置的头端复制列表来解决。Type3路由通过BGP自动分发VTEP列表,使每个VTEP都能获知同一VNI下的所有成员VTEP。
4.2 Type3 路由的格式
| 字段 | 长度 | 说明 |
|---|---|---|
| Route Type | 1 Byte | 固定为 0x03,标识为Type3路由 |
| Ethernet Tag ID | 4 Bytes | VNI 值,标识所属以太网段 |
| Implication Flag | 1 Bit | 1=Inclusive Multicast Ethertag Route(包含VTEP列表) 0=MAC Mobility Notification Route(MAC移动通知) |
| ESI Length | 1 Byte | 可选,取值 0~18 |
| ESI | ESI Length Bytes | 可选,Ethernet Segment Identifier |
Type3路由的Next Hop为发送该路由的VTEP自身的Loopback IP。
4.3 Type3 路由的分发流程

4.4 Type3 路由与泛洪的关系
Type3路由本身不直接参与数据转发,它为VTEP构建了一份"泛洪列表"(Flood List)。当VTEP收到需要泛洪的报文时:
- 根据报文的VNI查找泛洪列表
- 泛洪列表中的所有VTEP IP即为报文复制的目标
- 源VTEP逐个封装VXLAN报文并发送到每个目标VTEP(头端复制)
关键区别:Type3路由只解决"往哪发"的问题,不解决"怎么发"的问题。报文仍然通过VXLAN隧道(UDP 4789)在Underlay网络上传输。
4.5 Type3 路由的示例
# 在 Leaf-01 上查看 Type3 路由
Leaf-01> display bgp evpn routing-table type3
Ethernet Segment Information:
Route Distinguisher : 3:10001:0
Ethernet Tag Id : 10001
NextHop : 10.255.254.1 (Self)
Preference : 1
learnt from : Local
Ethernet Segment Information:
Route Distinguisher : 3:10001:0
Ethernet Tag Id : 10001
NextHop : 10.255.254.2 (Leaf-02)
Preference : 1
learnt from : 10.255.255.1 (Spine-01)
Ethernet Segment Information:
Route Distinguisher : 3:10001:0
Ethernet Tag Id : 10001
NextHop : 10.255.254.3 (Leaf-03)
Preference : 1
learnt from : 10.255.255.1 (Spine-01)
Ethernet Segment Information:
Route Distinguisher : 3:10001:0
Ethernet Tag Id : 10001
NextHop : 10.255.254.4 (Leaf-04)
Preference : 1
learnt from : 10.255.255.1 (Spine-01)
五、Type2 与 Type3 的协同工作
5.1 单播转发场景
当VM-A(Leaf-01)发送单播报文到VM-B(Leaf-02)时:
- Leaf-01收到VM-A的原始以太网帧,目的MAC为VM-B的MAC
- Leaf-01查询EVPN转发表(由Type2路由生成),找到VM-B的MAC对应的VTEP地址(Leaf-02的Loopback IP)
- Leaf-01将报文封装为VXLAN,目的IP为Leaf-02的Loopback IP
- Underlay网络通过ECMP将报文转发到Leaf-02
- Leaf-02解封装后直接转发到VM-B
此场景仅依赖Type2路由,不涉及Type3路由。
5.2 广播泛洪场景
当VM-A发送ARP请求(目的MAC为FF:FF:FF:FF:FF:FF)时:
- Leaf-01收到ARP请求报文,识别为目的MAC为广播地址
- Leaf-01查询该VNI的泛洪列表(由Type3路由构建),得到[VTEP2, VTEP3, VTEP4]
- Leaf-01将ARP请求复制3份,分别封装VXLAN后发送到VTEP2、VTEP3、VTEP4
- 各VTEP解封装后泛洪到本地端口,VM-B的VTEP(Leaf-02)收到后,VM-B回复ARP响应
- Leaf-02学习到VM-A的MAC地址(从ARP响应的源MAC),生成Type2路由并通告
此场景依赖Type3路由(泛洪列表)和Type2路由(MAC学习后通告)。
5.3 ARP 抑制(ARP Suppression)
EVPN的一项重要优化是ARP抑制。在传统二层网络中,ARP请求需要泛洪到整个广播域。在EVPN中,由于Type2路由已经通告了IP↔MAC的映射关系,VTEP可以直接本地回复ARP请求,无需泛洪。
ARP请求流程(EVPN ARP抑制):
VM-A 发送 ARP Request: Who has 172.16.100.20?
↓
Leaf-01 (VTEP) 收到 ARP 请求
↓
Leaf-01 查询 Type2 路由表,找到 172.16.100.20 ↔ 00:50:56:DD:EE:FF ↔ Leaf-02
↓
Leaf-01 直接生成 ARP Reply: 172.16.100.20 is at 00:50:56:DD:EE:FF
↓
VM-A 收到 ARP 回复,更新本地 ARP 缓存
(无需泛洪到全网)
六、故障案例:Type2 路由震荡导致虚拟机通信闪断
6.1 故障现象
某企业数据中心中,Leaf-01下挂的一台VM频繁出现网络闪断,表现为每隔30~60秒中断数秒。经确认,该VM在同Leaf内的通信正常,跨Leaf通信出现闪断。
6.2 排查过程
第一步:检查Type2路由的稳定性
# 在 Leaf-02 上持续监控 Type2 路由
Leaf-02> display bgp evpn routing-table type2 vpn-instance VRF-TenantA
# 观察到 VM-A 的 Type2 路由反复出现和消失
# Route: 00:50:56:AA:BB:CC <-> 10.255.254.1 (Leaf-01)
# 状态: Installed → Withdrawn → Installed → Withdrawn ...
第二步:检查 Leaf-01 上 MAC 地址表的稳定性
Leaf-01> display mac-address 0050-56AA-BBCC
Mac Address : 0050-56AA-BBCC
VLAN : 100
Port : 10GE1/0/5
Type : Dynamic
Age : 2 seconds ← 持续重置
MAC地址持续老化并重新学习,说明下联端口存在链路闪断(Flapping)。
第三步:检查端口状态
Leaf-01> display interface 10GE1/0/5
Physical status : Up
Protocol status : Up
...
Input errors : 0
CRC errors : 247 ← 大量 CRC 错误
CRC错误表明链路存在物理层问题。
6.3 根因与解决
根因:服务器网卡与Leaf交换机之间的光模块老化,产生大量CRC错误。当CRC错误超过阈值时,端口协议状态暂时Down,导致MAC地址老化。重新UP后MAC重新学习,Type2路由重新生成并通告。这个"Up→Down→Up"的循环导致Type2路由震荡。
解决方案:
1. 更换服务器网卡的光模块
2. 在Leaf端口上配置mac-address flush delay,延缓MAC地址老化时间,减少路由震荡频率
3. 启用端口CRC错误告警,提前发现物理层劣化
# 延缓 MAC 地址老化
interface 10GE1/0/5
mac-address flush delay 10 # MAC 老化延迟 10 秒
七、总结
| 路由类型 | 承载信息 | 生成触发 | 核心用途 |
|---|---|---|---|
| Type2 | MAC↔VTEP映射(可选含IP) | MAC学习/ARP解析/DHCP | 单播转发、ARP抑制 |
| Type3 | VNI的VTEP成员列表 | VTEP上线/VNI创建 | 广播/组播/未知单播泛洪 |
| 对比维度 | Type2 | Type3 |
|---|---|---|
| 路由数量 | 每个VM一条 | 每个VNI×每个VTEP一条 |
| 路由变化频率 | 高(VM迁移/端口Down) | 低(VTEP增删) |
| 数据面依赖 | 直接(查Type2表转发) | 间接(构建泛洪列表) |
| 缺失影响 | 跨VTEP单播中断 | 广播泛洪失败 |
思考
- Type2路由在每个VTEP上可能产生数百万条路由条目(大规模虚拟化环境)。这对交换机的内存和CPU有什么影响?如何优化?
- Type3路由使用头端复制实现泛洪,当VTEP数量达到数百个时,一次广播可能产生数百份复制报文。是否存在带宽瓶颈?
- Type2路由的H Flag(Host Flag)用于标识该MAC是否属于主机(VM)。这个标志位在什么场景下有特殊意义?
下篇预告:第258篇:分布式网关与集中式网关对比