上一篇讲了 VXLAN 怎么封装、隧道怎么建。但静态配 VTEP 只能应付小规模——VTEP 一多就是 N² 条配置。这篇讲用 BGP 自动发现 VTEP 和 MAC 的方案:EVPN。

EVPN 的本质一句话:把二层的学习过程从"数据平面泛洪"搬到"控制平面 BGP"。原来靠泛洪问"这个 MAC 在哪",现在直接由 BGP 告诉你。

EVPN 是什么

EVPN(Ethernet VPN)不是新协议,它是 BGP 的一个地址族(AFI 25 / SAFI 70)。你原来用 BGP 传 IPv4 路由、用 MP-BGP 传 VPNv4 路由,现在用同一个 BGP 传二层可达性信息。

它的前身是 VPLS(用 MPLS 做二层 VPN),但 VPLS 有个致命问题:它靠泛洪学习 MAC(flood-and-learn),VTEP 一多,泛洪流量指数级增长。

flood-and-learn(传统 VXLAN)EVPN
MAC 学习数据平面泛洪 + 反向学习控制平面 BGP 通告
未知单播/广播全网泛洪(BUM 流量大)抑制泛洪(ARP 抑制、MAC 已学到就不泛洪)
VTEP 发现手工配 peer-listType 3 自动发现
多归属不支持(或靠 STP)ESI + DF 选举,支持双活
收敛速度慢(要等泛洪)快(BGP 撤销即知)

五种路由类型

EVPN 一共定义了五种路由类型(Type 1~5),每种解决一个具体问题:

EVPN 五种路由类型:Type 1 A-D 路由、Type 2 MAC/IP 路由、Type 3 IMET 路由、Type 4 ES 路由、Type 5 IP Prefix 路由
▲ EVPN 五种路由类型各自解决什么问题

Type 3 · IMET 路由:先把隧道建起来

全称 Inclusive Multicast Ethernet Tag Route。这是 EVPN 里最先工作的一个——没有它,其他一切都免谈。

所以排错第一步永远是:Type 3 收到了吗?

Type 2 · MAC/IP 路由:EVPN 的核心

这是最重要的一种,用来通告 MAC 地址和 ARP/IP 信息。一条 Type 2 路由的关键字段:

字段说明
RD路由标识符,让相同 MAC 前缀能共存
ESIEthernet Segment Identifier,多归属时标识同一段接入链路
Ethernet Tag ID通常填 0(VLAN-based 模式)或 VLAN ID
MAC Address虚机的 MAC(48 位)
IP Address虚机的 IP(32/128 位)。可以不带,带了才能做 ARP 抑制
MPLS Label1对应 L2VNI,二层转发用
MPLS Label2对应 L3VNI,三层转发用(分布式网关场景)

Type 2 分两种:

ARP 抑制的价值很大:原来每次跨 VTEP 访问都要泛洪一次 ARP 广播,现在直接查 EVPN 表。在一个几千台虚机的数据中心里,这能省掉绝大部分 BUM 流量。

Type 1 · A-D 路由:快速收敛与多归属

全称 Ethernet Auto-Discovery Route。它的作用是提前通告"我这段链路在不在"。

Type 4 · ES 路由:多归属的 DF 选举

全称 Ethernet Segment Route。当一台服务器双归到两台 Leaf(这叫多归属),两台 Leaf 需要选一个 DF(Designated Forwarder,指定转发者)来决定谁负责向服务器转发 BUM 流量——否则服务器会收到两份。

Type 4 路由就是用来做这个选举的:携带 ESI 和 VTEP IP,配合 DF 选举算法(基于 VNI 的哈希)选出 DF。

多归属还有几种模式,按可靠性递增:

模式说明
单活(Single-Active)只有一台 Leaf 转发,另一台待命
双活(All-Active)两台都转发,需要 DF 选举 + 别名 + 水平分割(Split-Horizon)防环

Type 5 · IP Prefix 路由:三层也走 EVPN

Type 2 通告的是"某个 IP 主机",但如果要通告一整段 IP 前缀(比如 10.1.0.0/16)呢?用 Type 5。

两个关键扩展团体属性

EVPN 路由除了标准属性,还靠几个扩展团体属性携带额外信息。分布式网关能不能工作,全看这两个:

Router's MAC Extended Community

这是分布式网关的命脉。在分布式网关下,每台 VTEP 都配了同一个网关 IP(比如都是 192.168.10.1),但各自的 Router MAC 不同。

Type 2 路由带上这个属性后:

MAC Mobility Extended Community

虚机迁移时,同一个 MAC 会从一台 VTEP 跑到另一台,这时两条 Type 2 路由会冲突。用这个属性解决:

EVPN 的完整工作流程

从零到通
① 承载网就绪
   VTEP 之间三层可达(IS-IS / OSPF)+ BGP EVPN 邻居建立(Established)

② 隧道自动发现
   每台 VTEP 为每个 VNI 发 Type 3(IMET)路由
   → 收到对端的 VTEP IP,自动建立全互联 BUM 隧道
   ★ 这一步做完,VXLAN 的"二层网络"就通了

③ MAC 学习
   虚机上线 → 本端 VTEP 学到 MAC
   → 用 Type 2 路由通告给所有对端 VTEP
   → 对端直接写进转发表,【不需要泛洪】

④ ARP 抑制
   Type 2 带了 IP → 对端 VTEP 本地就有 IP-MAC 映射
   → 虚机发 ARP 请求时,VTEP 直接代答,不泛洪

⑤ 跨子网转发(分布式网关)
   Type 2 带 L3VNI + Router's MAC 扩展团体
   → 本地 VTEP 查到对端 VTEP 的 Router MAC
   → 内层目的 MAC 填它,封装后发出去

⑥ 多归属
   Type 1(A-D)+ Type 4(ES)→ DF 选举 + 快速收敛

⑦ MAC 迁移
   Type 2 带 MAC Mobility → 序列号比较,谁新听谁的

集中式网关 vs 分布式网关下的 EVPN

集中式网关分布式网关
网关在哪只在核心/边界设备每台 Leaf 都有
L3VNI 数量只在网关设备上每台 Leaf 都要有
Type 2 是否带 L3VNI网关设备发的带所有 Leaf 发的都带
Router's MAC 扩展团体需要必须(否则跨子网转不了)
ARP 表项分布集中在网关,网关压力大分布在各 Leaf,压力分散
转发路径跨子网要绕核心本地直接转,路径最短

配置:华为 EVPN over VXLAN

huawei · ① BD 与 VNI
bridge-domain 10
 vxlan vni 5010                    # L2VNI
#
interface Vbdif10
 ip binding vpn-instance VPN_A
 ip address 192.168.10.1 255.255.255.0    # 分布式网关:每台 Leaf 都配这个地址
huawei · ② EVPN 实例
evpn vpn-instance EVPN_A bd-mode
 route-distinguisher 100:1
 vpn-target 1:1 export-extcommunity
 vpn-target 1:1 import-extcommunity
 # 三层:绑定 L3VNI
 vxlan vni 1000                    # L3VNI
huawei · ③ BGP EVPN 地址族
bgp 100
 peer 2.2.2.2 as-number 100
 peer 2.2.2.2 connect-interface LoopBack0

 l2vpn-ad-family                    # ★ 华为的 EVPN 地址族
  peer 2.2.2.2 enable
  peer 2.2.2.2 advertise-community  # 要带 RT 和扩展团体,必须开
  peer 2.2.2.2 reflect-client       # 如果是 RR 场景

 ipv4-family vpn-instance VPN_A
  import-route direct

★ 三层要用起来,还得在 VPN 实例里引入路由,
  否则 Type 5 / Type 2 的 L3 部分没有来源

验证与排错

huawei
# EVPN 路由(按类型看)
display bgp evpn all routing-table                    # ★ 所有 EVPN 路由
display bgp evpn all routing-table ad-route           # Type 1
display bgp evpn all routing-table mac-route          # ★ Type 2(最常看)
display bgp evpn all routing-table inclusive-route    # ★ Type 3(隧道发现)
display bgp evpn all routing-table es-route           # Type 4
display bgp evpn all routing-table prefix-route       # Type 5

# 隧道与表项
display vxlan tunnel                          # VXLAN 隧道
display vxlan vni                             # VNI 状态
display mac-address bridge-domain 10          # 本地 MAC
display bgp evpn all routing-table mac-route 2  # 查某个 MAC 的通告情况

# 邻居
display bgp peer l2vpn-ad                    # EVPN 地址族邻居

排错按"依赖顺序"往下走,不要乱猜:

  1. EVPN 邻居 Established 吗(display bgp peer l2vpn-ad)—— 没起来后面都别查;
  2. Type 3 收到了吗(inclusive-route)—— 没收到说明 VNI 配置或 RT 不匹配,隧道建不起来;
  3. Type 2 收到了吗(mac-route)—— 隧道通了但没有 MAC 路由,查两端 VNI/RT 是否一致;
  4. 跨子网不通 —— 查 Type 2 有没有带 L3VNI 和 Router's MAC 扩展团体,以及本机有没有 L3VNI 的 VRF;
  5. 多归属服务器收到重复包 —— 查 Type 4 的 DF 选举是否正常,两台 Leaf 是不是都以为自己是 DF。

一句话总结:Type 3 建隧道、Type 2 学 MAC 和抑制 ARP、Type 1 管快速收敛与多归属别名、Type 4 选 DF、Type 5 通三层的网段。两个扩展团体属性是灵魂:Router's MAC 让分布式网关能跨子网转发,MAC Mobility 让虚机迁移能收敛。

📌 本篇整理自 2024–2025 的「数通」学习笔记(HCIE-Datacom 方向)

合并了原始笔记中「EVPN vxlan 介绍 / EVPN原理 / EVPN路由 / EVPN 表项 / EVPN工作流程 / EVPN接入 / EVPN配置案例 / evpn vxlan 配置 / 类型概括 / type 1~5 类 / type-ARP路由 / type 2 -MAC路由」近二十页。
原笔记以胶片截图为主(含 display bgp evpn 输出与组网图),本文把五种路由类型重新组织成"各解决什么问题"的叙事,并补齐了 ESI、DF 选举、MAC Mobility 序列号等细节。
配置命令保留华为 VRP 原样(EVPN 地址族在华为叫 l2vpn-ad-family)。