前面三篇讲了 VXLAN 怎么封装、EVPN 怎么学 MAC。但真正把数据中心网络跑起来,还得回答一个问题:网关放在哪,跨子网流量怎么走。这篇就把架构和转发路径讲透。
核心变化只有一个:网关从"一对核心设备"下沉到"每台接入交换机"。这一下沉,带来的是一整套转发逻辑的重写——包括 IRB 的两种模式。
架构演进:园区那套为什么不够用
传统园区网是三层架构:核心层(Core)→ 汇聚层(Aggregation)→ 接入层(Access)。核心层负责高速转发,汇聚层做策略和网关,接入层接终端。
这套结构在园区里很合理,但搬到数据中心就撞墙了:
| 挑战 | 说明 |
|---|---|
| 东西向流量爆炸 | 园区里流量是"南北向"(用户访问服务器)。数据中心里是东西向——虚机之间、分布式存储之间。三层架构的核心层会被打穿 |
| 虚机迁移 | 迁移要求二层可达,传统架构跨不了三层边界 |
| 多租户隔离 | 云环境下要几千个互相隔离的租户,VLAN 只有 4094 个 |
| 弹性扩缩容 | 传统架构扩容要动核心,改一次配置全网震一下 |
| 虚拟化 | 一台物理服务器上跑几十台虚机,接入层的 MAC 表、ARP 表规模爆炸 |
Spine-Leaf:CLOS 架构
数据中心的答案是 Spine-Leaf(也叫 CLOS 架构,源自电话交换网的设计):
┌────────┐ ┌────────┐ ┌────────┐
│ Spine1 │ │ Spine2 │ │ Spine3 │ 骨干层
└───┬────┘ └───┬────┘ └───┬────┘
│ │ │
┌──────┼────────────┼────────────┼──────┐
│ │ │ │ │
┌───┴──┐ ┌─┴────┐ ┌────┴─┐ ┌──────┴┐ ┌───┴──┐
│Leaf1 │ │Leaf2 │ │Leaf3 │ │Leaf4 │ │Leaf5 │ 接入层
└──┬───┘ └──┬───┘ └──┬───┘ └───┬───┘ └──┬───┘
│ │ │ │ │
服务器 服务器 服务器 服务器 服务器
规则:Leaf 只连 Spine,Spine 只连 Leaf,【同层不互连】
★ 任意两台 Leaf 之间,都是"Leaf → Spine → Leaf",固定 2 跳
★ 每条 Leaf↔Spine 链路都跑 ECMP → 带宽随 Spine 数量线性增长
★ 扩容只需加一对 Leaf + 加线到所有 Spine,不影响存量
三个关键特性:
- 等跳数:任意两点路径长度相同,时延可预测——这对分布式存储、AI 训练这类对时延敏感的业务很重要;
- 无阻塞:每条上行链路都参与 ECMP,没有 STP 那种"阻塞一半"的浪费;
- 横向扩展:加 Spine 提升带宽,加 Leaf 提升接入密度,各自独立。
Underlay 与 Overlay:两层各干各的
这是数据中心网络最重要的分层概念:
| Underlay(承载网) | Overlay(业务网) | |
|---|---|---|
| 干什么 | 保证任意两台 VTEP 之间三层可达 | 承载虚机的二层/三层业务流量 |
| 跑什么协议 | IS-IS / OSPF(IGP)+ BGP(大规模用 EBGP) | VXLAN + BGP EVPN |
| 谁关心 | 网络工程师 | 网络工程师 + 云平台 |
| 对业务感知 | 完全无感(不知道有虚机) | 知道每个租户、每个虚机 |
| 拓扑 | Spine-Leaf 物理拓扑 | 逻辑上的全互联隧道 |
Underlay 设计有几个硬要求:
- 必须支持 ECMP:Spine-Leaf 的价值全在多路径负载,IGP 要配好等价路由;
- MTU 要放大:VXLAN 多套 50 字节,物理口 MTU 建议 1600 以上,否则大包会被丢(而且很难查);
- 路由协议选择:中小规模用 IS-IS 或 OSPF;大规模(几百台 Leaf)用 EBGP——因为 BGP 的收敛和策略控制更可控;
- Loopback 做 VTEP 源:VTEP 地址一定配在 Loopback 上,这样任何一条物理链路断了,隧道都不受影响。
网关放哪:集中式 vs 分布式
VXLAN 只解决二层。跨子网需要三层网关,网关的位置决定了整个架构的性能。
┌────────────────────────────────┐
│ 核心网关(唯一的三层出口) │ ← 所有跨子网流量都到这
└────────────┬───────────────────┘
│
┌────────────┴────────────┐
Leaf1 Leaf2
│ │
VM-A (10.1.1.1) VM-B (10.1.2.1)
VM-A 访问 VM-B:
Leaf1 → 核心网关 → Leaf2
★ 明明在同一对机柜里,却要跑到核心再回来 —— 这就是"发夹弯"
问题:核心带宽成为瓶颈;核心设备要存所有租户的 ARP 和路由;
东西向流量越大,核心压力越大
分布式网关把网关下沉到每台 Leaf:
- 每台 Leaf 上都创建所有子网的网关(VBDIF),配同一个网关 IP;
- 但每台 Leaf 的 Router MAC 不同——这是 EVPN 能区分"谁是真正的转发者"的关键;
- 跨子网流量本地 Leaf 直接转发,不用绕核心;
- ARP 表项也分散到各 Leaf,不再集中压在一台设备上。
VBDIF:BD 的三层接口
传统网络里,VLAN 的三层接口是 VLANIF。VXLAN 里对应的概念是 VBDIF:
| 传统 VLAN | VXLAN | |
|---|---|---|
| 二层域 | VLAN | BD(Bridge Domain) |
| 三层接口 | VLANIF | VBDIF |
| 标识 | VLAN ID(12 位) | VNI(24 位) |
| 跨子网转发 | VLANIF 之间查路由 | VBDIF 之间查路由 |
在分布式网关下,同一台 Leaf 上有多个 VBDIF(对应多个子网),它们之间互访就是本机三层转发,连隧道都不用建。
IRB 的两种模式:对称与非对称
跨 VTEP 的跨子网转发,有两条实现路线。这是全篇最需要搞懂的部分。
非对称 IRB(Asymmetric IRB)
① Leaf1(Ingress)收到帧
· 查 VBDIF10 的路由表 → 命中 10.1.2.0/24,下一跳是 VM-B 的 IP
· 查 EVPN Type 2 得到 VM-B 的 MAC
· 封装:内层目的 MAC = 【VM-B 的 MAC】
内层目的 IP = VM-B 的 IP
隧道用 【L2VNI 20】(目的子网的 VNI)
② Leaf2(Egress)收到帧
· 内层目的 MAC 是 VM-B 的 MAC → 直接【二层转发】
· 不查路由表
★ "非对称" = Ingress 做三层,Egress 只做二层
★ 要求:每台 Leaf 上都要有【所有子网】的 VBDIF 和 ARP 表项
★ 问题:VTEP 和子网一多,每台 Leaf 的表项规模爆炸
对称 IRB(Symmetric IRB)
① Leaf1(Ingress)收到帧
· 查【VRF 路由表】→ 命中 10.1.2.0/24
下一跳 = Leaf2 的 Router MAC(靠 Type 2 的
Router's MAC 扩展团体学到)
· 封装:内层目的 MAC = 【Leaf2 的 Router MAC】
内层目的 IP = VM-B 的 IP
隧道用 【L3VNI 1000】(不是 L2VNI!)
② Leaf2(Egress)收到帧
· 内层目的 MAC 是自己的 Router MAC
→ 知道"这是要我做三层转发的"
· 查 VRF 路由表 + ARP → 得到 VM-B 的 MAC
· 【三层转发】给 VM-B
★ "对称" = 两端都做三层查找
★ 好处:隧道里用的是 L3VNI,每台 Leaf 只需要【一个 L3VNI + 一个 VRF】,
不需要为每个子网都建 VBDIF → 规模可以做得很大
★ 这是【分布式网关的主流方案】
两种模式对比
| 非对称 IRB | 对称 IRB | |
|---|---|---|
| 隧道承载 VNI | L2VNI(目的子网的) | L3VNI |
| 内层目的 MAC | 目的虚机的 MAC | 对端 VTEP 的 Router MAC |
| Ingress 动作 | 三层转发(查 VBDIF 路由) | 三层转发(查 VRF 路由) |
| Egress 动作 | 二层转发 | 三层转发 |
| 每台 Leaf 需要的表项 | 所有子网的 VBDIF + 全量 ARP/MAC | 一个 VRF + 一个 L3VNI |
| 扩展性 | 差(子网多了撑不住) | 好 |
| ARP 泛洪 | 较多 | 少(ARP 抑制更彻底) |
| 现状 | 早期方案,小规模还在用 | 主流 |
四种转发场景,一张表说完
| 场景 | Ingress 做什么 | 隧道 | Egress 做什么 |
|---|---|---|---|
| 同 Leaf · 同子网 | 查 MAC 表,本地二层转发 | 不用隧道 | — |
| 跨 Leaf · 同子网 | 查 MAC 表(EVPN Type 2 学到) | L2VNI | 二层转发 |
| 同 Leaf · 跨子网 | 查 VBDIF 路由,本地三层转发 | 不用隧道 | — |
| 跨 Leaf · 跨子网 (对称 IRB) | 查 VRF 路由 → 封装对端 Router MAC | L3VNI | 查 VRF + ARP,三层转发 |
| 跨 Leaf · 跨子网 (非对称 IRB) | 查 VBDIF 路由 + ARP → 封装目的虚机 MAC | L2VNI | 二层转发 |
记住这个判断法:看隧道里用的是 L2VNI 还是 L3VNI。用 L2VNI = 非对称;用 L3VNI = 对称。再看内层目的 MAC——是虚机的 MAC 还是 VTEP 的 Router MAC,也能立刻分辨。
MAC 迁移:虚机搬家的过程
虚机从 Leaf1 迁到 Leaf2,整个过程是这样的:
- 虚机在 Leaf2 上线,Leaf2 学到该 MAC,产生一条 Type 2 路由,序列号 = 1;
- Leaf1 收到这条 Type 2,发现序列号比自己的大(自己原本是 0 或不带),于是撤销自己的路由,更新表项指向 Leaf2;
- 其他 Leaf 收到序列号更大的路由,也把 MAC 指向 Leaf2;
- 如果 Leaf1 本机还有该 MAC 的表项(虚机已经走了),Leaf1 会主动撤销并更新;
- 迁移期间可能出现短暂的 MAC 表项震荡,靠 MAC Mobility 的序列号比较收敛。
这也是为什么虚机迁移一定要在同一个 VXLAN 域内——跨 VXLAN 域迁移需要更复杂的方案(比如 DCI)。
配置要点
# ① 二层:BD + L2VNI
bridge-domain 10
vxlan vni 5010
# ② 三层:VPN 实例 + L3VNI
ip vpn-instance VPN_A
ipv4-family
route-distinguisher 100:1
vpn-target 1:1 export-extcommunity
vpn-target 1:1 import-extcommunity
evpn vpn-instance EVPN_A bd-mode
route-distinguisher 100:1
vpn-target 1:1 export-extcommunity
vpn-target 1:1 import-extcommunity
vxlan vni 1000 # ★ L3VNI
# ③ 网关接口:VBDIF 绑定 VPN 实例
interface Vbdif10
ip binding vpn-instance VPN_A
ip address 192.168.10.1 255.255.255.0
mac-address 0000-5e00-0101 # ★ 每台 Leaf 不同!
# ④ NVE
interface Nve1
source 1.1.1.1
vni 5010 head-end peer-list protocol bgp # ★ 由 BGP EVPN 动态发现
vni 1000 head-end peer-list protocol bgp
三个容易忽略的点:
- 每台 Leaf 的 VBDIF 网关 IP 相同,但 MAC 必须不同。相同 MAC 会导致对端分不清是谁发的;
- L3VNI 要和 VRF 绑定,否则跨子网转发时找不到出接口;
- NVE 的 peer-list 要写
protocol bgp,才是动态发现。写死 IP 就退回静态方案了。
验证与排错
# 转发路径相关
display ip routing-table vpn-instance VPN_A # ★ VRF 路由表(对称 IRB 查这个)
display ip routing-table vpn-instance VPN_A 192.168.20.1 verbose
display arp vpn-instance VPN_A # VRF 的 ARP
display mac-address bridge-domain 10 # BD 的 MAC
# VXLAN / EVPN
display vxlan vni
display vxlan tunnel
display bgp evpn all routing-table mac-route # Type 2
# 确认 Router MAC(对称 IRB 的关键)
display interface Vbdif10 # 看本机网关 MAC
display bgp evpn all routing-table mac-route verbose # 看对端带的 Router's MAC
排错思路:
- 同子网通、跨子网不通 → 三层问题。先查
display ip routing-table vpn-instance里有没有目的网段; - VRF 里有路由但 ping 不通 → 查 L3VNI 有没有配、NVE 上有没有通告这个 VNI;
- 对端收到包但不转发 → 对称 IRB 场景下查内层目的 MAC 是不是对端 VTEP 的 Router MAC。如果不是,说明 Type 2 没带 Router's MAC 扩展团体;
- 大包不通、小包通 → 经典 MTU 问题。查物理口 MTU 和两端是否一致,建议统一提到 1600+。
一句话总结:Spine-Leaf 解决带宽和时延,Underlay 只管三层可达、Overlay 跑 VXLAN+EVPN 承载业务;网关从集中式下沉到分布式以消除发夹弯。转发判断看隧道里是 L2VNI 还是 L3VNI:L2VNI = 非对称(Ingress 做三层)、L3VNI = 对称(两端都做三层)。主流是对称 IRB。
📌 本篇整理自 2024–2025 的「数通」学习笔记(HCIE-Datacom 方向)
合并了原始笔记中「数据中心面临的挑战 / 虚拟化 / 层次模型介绍 / 园区架构 / 园区网典型组网架构及案例实践 / 分布式网关 / IRB转发原理 / mac迁移 / 网络割接」几页。
原笔记里 IRB 转发过程是胶片截图 + 箭头标注(含 VBDIF、L2VNI/L3VNI、Router's MAC 等关键词),本文重新整理成"四种转发场景"的对照表和两种 IRB 模式的封装对比图。
配置命令保留华为 VRP 原样。