第175篇:EVPN VXLAN 网关:集中式与分布式
关键词
集中式网关、分布式网关、Anycast Gateway、IRB、Symmetric IRB、Asymmetric IRB、VNI、L3VNI
一、为什么需要三层网关?
1.1 EVPN 的二层与三层
EVPN 的基本能力是在二层桥接不同站点的同一子网:
EVPN 二层桥接(L2VPN):
子网 A ────── EVPN ────── 子网 A
(10.1.1.0/24) (10.1.1.0/24)
但现实网络中,业务需要跨子网通信:
子网 A 子网 B
(10.1.1.0/24) ─── ??? ─── (10.2.2.0/24)
需要三层路由!
EVPN IRB(Integrated Routing and Bridging) 就是 EVPN 的三层路由能力。
二、集中式网关
2.1 架构
┌──────────────┐
│ 集中式网关 │
│ (Spine 或 │
│ 专用设备) │
│ 10.1.1.1 │
│ 10.2.2.1 │
└──────┬───────┘
│
| ┌──┴──┐ ┌──┴──┐ | ||
| PE1 Leaf | PE2 Leaf | |
| │ │ | ||
| CE1 10.1.1.10 | CE2 10.2.2.10 | |
| --- | --- | --- |
2.2 工作原理
CE1 (10.1.1.10) 访问 CE2 (10.2.2.10):
步骤 1:CE1 发送 ARP Request for 10.1.1.1(网关)
PE1 响应(或 ARP 抑制)
步骤 2:CE1 发 IP 包(src=10.1.1.10, dst=10.2.2.10)
→ 目的 MAC = 网关 MAC(10.1.1.1)
步骤 3:PE1 收到
查 MAC 表 → 目的 MAC=网关 MAC
这不是远程 MAC,而是本地网关的 MAC
→ 送三层处理
步骤 4:集中式网关接收 IP 包
查路由表 → 10.2.2.0/24 → 下一跳 CE2
封装新二层帧(源 MAC=网关 MAC, 目的 MAC=CE2 MAC)
从出接口发送
步骤 5:集中式网关的 MAC 表中有 CE2 的 MAC(来自 EVPN Type 2)
但 CE2 的 MAC 可能不在同一 VNI 下
→ 可能需要跨 VNI 转发
2.3 优缺点
| 优点 | 缺点 |
|---|---|
| 简单,网关集中配置 | 单点瓶颈(所有跨子网流量经过网关) |
| 网关策略统一 | 次优路径(流必须绕到网关) |
| 易于管理 | 网关故障影响大 |
| 安全策略集中 | 扩展性受限 |
三、分布式网关
3.1 架构
每个 Leaf(PE)都配置了所有子网的网关 IP(Anycast IP):
Spine
/ \
/ \
| PE1 Leaf1 Anycast GW IP: 10.1.1.1 10.2.2.1 | PE2 Leaf2 Anycast GW IP: 10.1.1.1 10.2.2.1 | |
|---|---|---|
| │ │ | ||
| CE1 10.1.1.10 | CE2 10.2.2.10 | |
| --- | --- | --- |
3.2 Anycast Gateway
所有 Leaf 配置相同的网关 IP 和 MAC 地址:
所有 Leaf 的配置:
interface Vlanif100
ip address 10.1.1.1 255.255.255.0 # Anycast IP
mac-address 0000-5e00-0101 # Anycast MAC(每 Leaf 相同)
CE 看到的网关:无论连接到哪个 Leaf,网关 IP 和 MAC 都是相同的。
优势: - CE 无需关心连接的 Leaf - VM 迁移到另一个 Leaf 下的端口时,无需 ARP 更新 - 故障切换时,CE 无感知
3.3 对称 IRB
分布式网关通常使用对称 IRB(Symmetric IRB):
CE1 (VNI 100) → PE1 → VNI 200 → PE2 → CE2 (VNI 200)
特点:
入方向:从 L2 VNI 到 L3 VNI 的转换
出方向:从 L3 VNI 到 L2 VNI 的转换
两层 VNI:L2 VNI(桥接)+ L3 VNI(路由)
L3VNI(三层 VNI):用于跨子网路由的 VNI:
# PE1 配置
bridge-domain 10 # L2 VNI = 100(子网 A)
vxlan vni 100
evpn
route-distinguisher 100:1
vpn-target 1:1 export-extcommunity
vpn-target 1:1 import-extcommunity
!
bridge-domain 20 # L2 VNI = 200(子网 B)
vxlan vni 200
evpn
route-distinguisher 100:2
vpn-target 2:2 export-extcommunity
vpn-target 2:2 import-extcommunity
!
bridge-domain 999 # L3 VNI = 999(用于三层路由)
vxlan vni 999
evpn
route-distinguisher 100:999
vpn-target 999:999 export-extcommunity
vpn-target 999:999 import-extcommunity
!
interface Vlanif100
ip address 10.1.1.1 255.255.255.0
mac-address 0000-5e00-0101 # Anycast MAC
!
interface Vlanif999 # L3 VNI 接口
ip address 10.99.99.1 255.255.255.0
3.4 分布式网关转发流程
CE1 (10.1.1.10, VNI 100) → CE2 (10.2.2.10, VNI 200)
① CE1 发送 IP 包到网关 10.1.1.1
目的 MAC = Anycast Gateway MAC
② PE1 收到:
- 查 MAC → 网关 MAC → 三层处理
- 查找 VRF 路由表 → 10.2.2.0/24 → 下一跳 PE2
- 封装:
外层:VXLAN (VNI 999 = L3VNI) ← 跨子网
内层:原始 IP 包
③ PE2 收到:
- VNI = 999 → 三层 VNI
- 弹出 VXLAN 头 → IP 包
- 查 VRF 路由 → 10.2.2.10 → 本地 VNI 200
- 封装:
外层:VXLAN (VNI 200 = L2VNI) ← 目标子网
内层:IP 包
④ CE2 收到 IP 包
四、非对称 IRB vs 对称 IRB
| 对比 | 非对称 IRB | 对称 IRB |
|---|---|---|
| 入方向处理 | L2→L3 路由 | L2→L3 VNI 转换 |
| 出方向处理 | L3→L2 路由 | L3 VNI→L2 转换 |
| 中间隧道 | L2 VNI(VNI 100) | L3 VNI(VNI 999) |
| 路由方式 | Ingress PE 查表转发 | egress PE 也查表 |
| 实现复杂度 | 低 | 高 |
| 扩展性 | 差(需要学习所有 MAC) | 好 |
| 是否推荐 | 不推荐 | 推荐 |
对称 IRB 是当前 EVPN VXLAN 分布式网关的标准实现。
五、集中式 vs 分布式对比
| 对比维度 | 集中式网关 | 分布式网关 |
|---|---|---|
| 网关位置 | 核心层 | 每台 Leaf |
| 流量路径 | 跨子网必须经过核心 | 本地 Leaf 直接路由 |
| 延迟 | 多一跳 | 最小 |
| 单点故障 | 有 | 无(Anycast 冗余) |
| VM 迁移 | 需更新网关 ARP | 无感 |
| 配置复杂度 | 低 | 高 |
| 适用规模 | 中小 | 大型数据中心 |
六、典型部署场景
6.1 中小数据中心:集中式网关
Spine 做集中式网关 + VXLAN 终结
Leaf 只做 VXLAN 桥接
优势:配置简单,策略在 Spine 统一
6.2 大型数据中心:分布式网关
Leaf 做分布式网关 + Anycast
Spine 只做 IP 转发
优势:
- 无次优路径
- VM 自由迁移
- 线性扩展
七、总结
| 知识点 | 核心要点 |
|---|---|
| IRB | EVPN 的三层路由能力:桥接 + 路由 |
| 集中式网关 | 网关在核心层,跨子网流量绕行核心 |
| 分布式网关 | 每台 Leaf 都有网关,Anycast IP/MAC |
| Anycast Gateway | 所有 Leaf 相同的网关 IP + MAC |
| L3 VNI | 跨子网路由时使用,区别于 L2 VNI |
| 对称 IRB | 推荐模式:Ingress 和 Egress 都做路由 |
八、思考
- 为什么 EVPN 需要 IRB?它解决了什么问题?
- 集中式网关和分布式网关的主要区别是什么?
- Anycast Gateway 为什么能支持 VM 迁移?
- L2 VNI 和 L3 VNI 分别用于什么场景?
- 对称 IRB 中的入方向和出方向分别使用哪个 VNI?
下篇预告:第176篇《EVPN 多归(Multi-homing)与 DF 选举》——一台 CE 连接多台 PE 时,EVPN 如何实现冗余接入并避免重复转发?