前面三篇讲了 VXLAN 怎么封装、EVPN 怎么学 MAC。但真正把数据中心网络跑起来,还得回答一个问题:网关放在哪,跨子网流量怎么走。这篇就把架构和转发路径讲透。

核心变化只有一个:网关从"一对核心设备"下沉到"每台接入交换机"。这一下沉,带来的是一整套转发逻辑的重写——包括 IRB 的两种模式。

架构演进:园区那套为什么不够用

传统园区网是三层架构:核心层(Core)→ 汇聚层(Aggregation)→ 接入层(Access)。核心层负责高速转发,汇聚层做策略和网关,接入层接终端。

这套结构在园区里很合理,但搬到数据中心就撞墙了:

挑战说明
东西向流量爆炸园区里流量是"南北向"(用户访问服务器)。数据中心里是东西向——虚机之间、分布式存储之间。三层架构的核心层会被打穿
虚机迁移迁移要求二层可达,传统架构跨不了三层边界
多租户隔离云环境下要几千个互相隔离的租户,VLAN 只有 4094 个
弹性扩缩容传统架构扩容要动核心,改一次配置全网震一下
虚拟化一台物理服务器上跑几十台虚机,接入层的 MAC 表、ARP 表规模爆炸

Spine-Leaf:CLOS 架构

数据中心的答案是 Spine-Leaf(也叫 CLOS 架构,源自电话交换网的设计):

spine-leaf
         ┌────────┐   ┌────────┐   ┌────────┐
         │ Spine1 │   │ Spine2 │   │ Spine3 │      骨干层
         └───┬────┘   └───┬────┘   └───┬────┘
             │            │            │
      ┌──────┼────────────┼────────────┼──────┐
      │      │            │            │      │
  ┌───┴──┐ ┌─┴────┐  ┌────┴─┐  ┌──────┴┐ ┌───┴──┐
  │Leaf1 │ │Leaf2 │  │Leaf3 │  │Leaf4  │ │Leaf5 │   接入层
  └──┬───┘ └──┬───┘  └──┬───┘  └───┬───┘ └──┬───┘
     │        │         │          │        │
   服务器   服务器    服务器     服务器   服务器

规则:Leaf 只连 Spine,Spine 只连 Leaf,【同层不互连】

★ 任意两台 Leaf 之间,都是"Leaf → Spine → Leaf",固定 2 跳
★ 每条 Leaf↔Spine 链路都跑 ECMP → 带宽随 Spine 数量线性增长
★ 扩容只需加一对 Leaf + 加线到所有 Spine,不影响存量

三个关键特性:

Underlay 与 Overlay:两层各干各的

这是数据中心网络最重要的分层概念:

Underlay(承载网)Overlay(业务网)
干什么保证任意两台 VTEP 之间三层可达承载虚机的二层/三层业务流量
跑什么协议IS-IS / OSPF(IGP)+ BGP(大规模用 EBGP)VXLAN + BGP EVPN
谁关心网络工程师网络工程师 + 云平台
对业务感知完全无感(不知道有虚机)知道每个租户、每个虚机
拓扑Spine-Leaf 物理拓扑逻辑上的全互联隧道

Underlay 设计有几个硬要求:

网关放哪:集中式 vs 分布式

VXLAN 只解决二层。跨子网需要三层网关,网关的位置决定了整个架构的性能。

集中式网关的"发夹弯"
        ┌────────────────────────────────┐
        │   核心网关(唯一的三层出口)      │  ← 所有跨子网流量都到这
        └────────────┬───────────────────┘
                     │
        ┌────────────┴────────────┐
     Leaf1                       Leaf2
       │                           │
   VM-A (10.1.1.1)            VM-B (10.1.2.1)

VM-A 访问 VM-B:
  Leaf1 → 核心网关 → Leaf2
  ★ 明明在同一对机柜里,却要跑到核心再回来 —— 这就是"发夹弯"

问题:核心带宽成为瓶颈;核心设备要存所有租户的 ARP 和路由;
      东西向流量越大,核心压力越大

分布式网关把网关下沉到每台 Leaf:

VBDIF:BD 的三层接口

传统网络里,VLAN 的三层接口是 VLANIF。VXLAN 里对应的概念是 VBDIF:

传统 VLANVXLAN
二层域VLANBD(Bridge Domain)
三层接口VLANIFVBDIF
标识VLAN ID(12 位)VNI(24 位)
跨子网转发VLANIF 之间查路由VBDIF 之间查路由

在分布式网关下,同一台 Leaf 上有多个 VBDIF(对应多个子网),它们之间互访就是本机三层转发,连隧道都不用建。

IRB 的两种模式:对称与非对称

跨 VTEP 的跨子网转发,有两条实现路线。这是全篇最需要搞懂的部分。

非对称 IRB 与对称 IRB 的报文封装对比:L2VNI 与 L3VNI 的区别
▲ 非对称 IRB 用 L2VNI 承载,对称 IRB 用 L3VNI 承载

非对称 IRB(Asymmetric IRB)

VM-A(10.1.1.1) 访问 VM-B(10.1.2.1),不同 Leaf
① 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)

同样的访问,对称 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
隧道承载 VNIL2VNI(目的子网的)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 MACL3VNI查 VRF + ARP,三层转发
跨 Leaf · 跨子网
(非对称 IRB)
查 VBDIF 路由 + ARP → 封装目的虚机 MACL2VNI二层转发

记住这个判断法:看隧道里用的是 L2VNI 还是 L3VNI。用 L2VNI = 非对称;用 L3VNI = 对称。再看内层目的 MAC——是虚机的 MAC 还是 VTEP 的 Router MAC,也能立刻分辨。

MAC 迁移:虚机搬家的过程

虚机从 Leaf1 迁到 Leaf2,整个过程是这样的:

  1. 虚机在 Leaf2 上线,Leaf2 学到该 MAC,产生一条 Type 2 路由,序列号 = 1;
  2. Leaf1 收到这条 Type 2,发现序列号比自己的大(自己原本是 0 或不带),于是撤销自己的路由,更新表项指向 Leaf2;
  3. 其他 Leaf 收到序列号更大的路由,也把 MAC 指向 Leaf2;
  4. 如果 Leaf1 本机还有该 MAC 的表项(虚机已经走了),Leaf1 会主动撤销并更新;
  5. 迁移期间可能出现短暂的 MAC 表项震荡,靠 MAC Mobility 的序列号比较收敛。

这也是为什么虚机迁移一定要在同一个 VXLAN 域内——跨 VXLAN 域迁移需要更复杂的方案(比如 DCI)。

配置要点

huawei · 分布式网关(对称 IRB)骨架
# ① 二层: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

三个容易忽略的点:

验证与排错

huawei
# 转发路径相关
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

排错思路:

一句话总结: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 原样。