2. EVPN基础架构与MX实现
EVPN(Ethernet VPN)本质上是一套用 BGP 作为控制平面、用隧道封装作为数据平面的二层/三层 VPN 技术。它把 MAC 地址、IP 地址、ARP/ND 表项等“转发状态”从数据平面剥离出来,改由 BGP 在 PE 之间分发,从而避免传统 VPLS 依赖泛洪学习带来的扩展性问题。在 Juniper MX 系列平台上,EVPN 由 evpn 这一 BGP NLRI 地址族承载,配合 VXLAN、MPLS 或 PBB-EVPN 等封装实现多租户业务承载。
一、EVPN 的五类核心路由
EVPN 的控制平面由若干种路由类型(Route Type)组成,每种类型承载不同的转发语义。理解它们的区别,是排查 EVPN 故障和设计多租户方案的基础。
- Type 1(Ethernet Auto-Discovery,A-D 路由):用于多归(multihoming)场景,携带 ESI(Ethernet Segment Identifier)和 LACP 信息,实现全活(All-Active)或单活接入,并支持快速收敛与水平分割。
- Type 2(MAC/IP Advertisement 路由):最核心的一类,通告单个 MAC 地址(可附带 IP),用于 MAC 学习、ARP/ND 抑制和主机路由。多租户场景下,每个 VNI/EVPN 实例内的主机 MAC 都通过 Type 2 分发。
- Type 3(Inclusive Multicast Ethernet Tag 路由):用于建立 BUM(广播、未知单播、组播)流量的复制列表,即“入口复制”的成员发现机制。它携带 VTEP 地址,是 VXLAN 泛洪树的基础。
- Type 4(Ethernet Segment Route):配合 Type 1 用于多归 PE 之间的指定转发者(DF)选举,确保同一 ES 上只有一个 PE 转发 BUM 流量。
- Type 5(IP Prefix Route):用于三层 EVPN 场景,通告 IP 前缀,实现对称 IRB 或 L3VPN over EVPN,是数据中心互联和租户间路由的关键。
在 MX 上,这些路由由 protocols bgp 下的 family evpn 承载,通过 show route table bgp.evpn.0 或 show evpn database 观察。例如一条 Type 2 路由的 NLRI 形如 [2]:[0]:[48]:[00:11:22:33:44:55]:[32]:[10.10.10.1],其中各字段依次为路由类型、ESI、MAC 长度、MAC、IP 长度和 IP。
二、BGP EVPN 地址族与 MX 控制平面
EVPN 在 BGP 中作为独立的 NLRI 地址族运行,Juniper 使用 family evpn signaling 表示。与 IPv4/IPv6 unicast 不同,EVPN 地址族需要与 route-distinguisher、vrf-target 以及 EVPN 实例绑定,才能正确导入导出路由。
MX 系列对 EVPN 的控制平面支持体现在几个层面:
- BGP EVPN 会话:可在 iBGP 或 eBGP 下启用
family evpn signaling,支持路由反射器(RR)架构,便于大规模租户扩展。 - EVPN 实例:通过
routing-instances <name> protocols evpn定义,绑定 VNI、RD、RT 和封装方式。 - 多归支持:通过
esi和es-import配置,配合 Type 1/4 路由实现 All-Active 接入。 - ARP/ND 抑制:MX 可基于 Type 2 路由中的 IP 信息代理应答 ARP,减少 BUM 泛洪。
下面这张图展示了 EVPN 控制平面与数据平面在 MX 上的整体关系:BGP EVPN 地址族承载五类路由,EVPN 实例将路由映射到 VNI,数据平面再根据封装类型选择 VXLAN 或 MPLS 隧道转发。
三、MX 上的封装选择:VXLAN 还是 MPLS
控制平面统一为 BGP EVPN 后,数据平面封装可以不同。MX 系列支持的主要封装方式包括:
| 封装类型 | 典型场景 | MX 配置要点 | 转发特征 |
|---|---|---|---|
| VXLAN | 数据中心 Leaf-Spine、多租户 Overlay | encapsulation vxlan,配置 vni 与 VTEP 源地址 |
UDP 4789,VNI 24 位,入口复制 BUM |
| MPLS | 运营商 L2VPN/L3VPN、跨域 EVPN | encapsulation mpls,依赖 LSP 或 SR |
标签栈,支持 L2VPN 与 L3VPN 统一承载 |
| PBB-EVPN | 大规模二层域、MAC 地址压缩 | encapsulation pbb-evpn,B-MAC 封装 |
B-MAC 隔离,减少核心 MAC 表项 |
选择封装时,核心判断依据是:业务是否需要跨数据中心三层互联、是否已有 MPLS 核心、以及租户规模对 MAC 表项的压力。例如在纯数据中心场景,VXLAN 更常见;而在运营商场景,MPLS 封装能与现有 L3VPN 基础设施复用。
四、一个可参考的 MX EVPN 配置片段
下面给出一个 VXLAN 封装的 EVPN 实例示例,用于说明控制平面与数据平面如何绑定。参数为教学示例,实际部署需按规划调整。
set routing-instances TENANT-A instance-type evpn
set routing-instances TENANT-A vlan-id 100
set routing-instances TENANT-A routing-interface irb.100
set routing-instances TENANT-A vtep-source-interface lo0.0
set routing-instances TENANT-A protocols evpn encapsulation vxlan
set routing-instances TENANT-A protocols evpn vni 10010
set routing-instances TENANT-A protocols evpn extended-vni-list all
set routing-instances TENANT-A route-distinguisher 65100:10010
set routing-instances TENANT-A vrf-target target:65100:10010
set protocols bgp group EVPN type internal
set protocols bgp group EVPN local-address 10.0.0.1
set protocols bgp group EVPN family evpn signaling
set protocols bgp group EVPN neighbor 10.0.0.2
配置完成后,可用以下命令验证控制平面是否正常:
show bgp summary
show route table bgp.evpn.0
show evpn database
show evpn instance TENANT-A extensive
若 show evpn database 中能看到远端 MAC 与 VTEP 地址,且 show route table bgp.evpn.0 中存在 Type 2 和 Type 3 路由,说明控制平面已建立。数据平面则需进一步检查 VXLAN 隧道是否可达、VNI 是否匹配、以及 ARP 抑制是否生效。
family evpn signaling 已在 BGP 邻居上协商成功。若邻居未协商该地址族,Type 2/3 路由不会交换,EVPN 数据库将为空。此外,VXLAN 封装要求 VTEP 源接口(通常为 lo0.0)在 IGP 中可达。
总结来看,EVPN 在 MX 上的实现可以概括为:BGP EVPN 地址族负责五类路由的分发,EVPN 实例负责 VNI/RD/RT 的绑定,数据平面根据业务场景选择 VXLAN、MPLS 或 PBB-EVPN 封装。掌握这三层关系,就能在多租户环境中灵活设计并快速定位问题。