2. 传统网络隔离技术:VLAN、VXLAN 与 GRE 隧道对比
在多租户隔离场景中,网络隔离技术经历了从“基于端口/标签的二层隔离”到“基于隧道/封装的三层叠加网络”的演进。本章深入剖析 VLAN、VXLAN 和 GRE 三种核心技术的原理、封装格式、隔离能力及适用场景,为后续多租户故障定位奠定基础。
2.1 VLAN:基于 802.1Q 的二层隔离
VLAN(Virtual Local Area Network)通过在以太网帧中插入 4 字节的 802.1Q 标签,将物理局域网划分为多个逻辑广播域。每个 VLAN 对应一个独立的二层广播域,租户流量默认无法跨 VLAN 通信。
2.1.1 封装格式与隔离原理
| 字段 | 长度 | 说明 |
|---|---|---|
| TPID | 2 字节 | 固定值 0x8100,标识为 802.1Q 帧 |
| PCP | 3 位 | 优先级编码,用于 QoS |
| DEI | 1 位 | 丢弃合格指示 |
| VID | 12 位 | VLAN 标识符,取值范围 1–4094 |
VLAN 隔离的核心限制在于 VID 只有 12 位,最大支持 4094 个隔离域。在公有云或大型数据中心中,租户数量远超此上限,导致 VLAN 无法满足大规模多租户隔离需求。
关键限制: VLAN 是二层隔离技术,无法跨越三层网络边界。跨物理机架或跨数据中心的租户通信必须依赖三层路由或隧道封装,增加了网络复杂度。
2.1.2 VLAN 隔离的典型拓扑
2.2 VXLAN:基于 MAC-in-UDP 的大二层叠加网络
VXLAN(Virtual Extensible LAN)将二层以太网帧封装在 UDP 数据报中,通过 24 位 VNI(VXLAN Network Identifier)提供高达 1600 万个隔离域,彻底解决了 VLAN 的规模瓶颈。VXLAN 是当前云原生多租户网络隔离的事实标准。
2.2.1 封装格式与转发流程
+------------------+------------------+------------------+------------------+
| 外层 MAC 头 | 外层 IP 头 | 外层 UDP 头 | VXLAN 头 |
| (14/18 字节) | (20 字节) | (8 字节) | (8 字节) |
+------------------+------------------+------------------+------------------+
| 内层 MAC 头 | 内层 IP 头 | 内层 Payload | FCS |
| (14/18 字节) | (20 字节) | (可变) | (4 字节) |
+------------------+------------------+------------------+------------------+
| 字段 | 长度 | 说明 |
|---|---|---|
| VXLAN 标志 | 1 字节 | 标志位,I 位为 1 表示有效 VNI |
| 保留 | 3 字节 | 必须为 0 |
| VNI | 3 字节 | 24 位网络标识符,支持 16,777,216 个隔离域 |
| 保留 | 1 字节 | 必须为 0 |
关键优势: VXLAN 使用 UDP 封装,可以跨越三层网络边界。VTEP(VXLAN Tunnel Endpoint)负责封装/解封装,支持多播或 BGP EVPN 控制平面进行远端 MAC 学习。
2.2.2 VXLAN 多租户隔离架构
2.3 GRE:通用路由封装隧道
GRE(Generic Routing Encapsulation)是一种轻量级隧道协议,可以将任意网络层协议(如 IPv4、IPv6、MPLS)封装在另一个网络层协议中。GRE 本身不提供加密或隔离标识,通常与 IPsec 结合使用以增强安全性。
2.3.1 GRE 封装格式
+------------------+------------------+------------------+------------------+
| 外层 IP 头 | GRE 头 | 内层 IP 头 | 内层 Payload |
| (20 字节) | (4–20 字节) | (20 字节) | (可变) |
+------------------+------------------+------------------+------------------+
| 字段 | 长度 | 说明 |
|---|---|---|
| C / K / S 位 | 各 1 位 | 校验和、密钥、序列号标志 |
| 协议类型 | 2 字节 | 内层协议类型(如 0x0800 为 IPv4) |
| 密钥(可选) | 4 字节 | 用于标识隧道,可作为简单的隔离标识 |
注意: GRE 隧道本身不提供多租户隔离标识。若使用 GRE 进行多租户隔离,通常依赖 GRE Key 字段(32 位)区分不同租户,但 Key 字段为可选且无标准控制平面支持,管理复杂度高。
2.4 三种技术对比总结
| 对比维度 | VLAN (802.1Q) | VXLAN | GRE |
|---|---|---|---|
| 封装方式 | MAC 帧插入标签 | MAC-in-UDP | IP-in-IP(通用) |
| 隔离标识 | VID(12 位) | VNI(24 位) | GRE Key(32 位,可选) |
| 最大隔离域 | 4094 | 约 1600 万 | 约 43 亿(依赖 Key) |
| 跨三层能力 | 否(需路由) | 是(UDP 封装) | 是(IP 封装) |
| 控制平面 | 无(静态配置) | BGP EVPN(推荐) | 无(静态配置) |
| 多播依赖 | 否 | 可选(头端复制更常见) | 否 |
| MTU 开销 | +4 字节 | +50 字节 | +24–40 字节 |
| 多租户适用性 | 小规模(< 4000 租户) | 大规模(云原生标准) | 低(无标准隔离机制) |
2.5 选型建议与故障定位要点
- VLAN:适用于小型私有云或传统 IDC,租户数量少于 1000 的场景。故障定位时需关注 Trunk 端口配置、VLAN 修剪、STP 收敛问题。
- VXLAN:适用于公有云、容器平台、大规模多租户环境。故障定位重点包括 VTEP 连通性、VNI 映射、BGP EVPN 路由、UDP 端口 4789 可达性。
- GRE:适用于站点间简单隧道或与 IPsec 组合使用。故障定位需检查隧道 Keepalive、MTU 分片、GRE Key 一致性。
核心结论: 在多租户隔离场景中,VXLAN 凭借 24 位 VNI、标准控制平面(BGP EVPN)和跨三层能力,已成为云原生网络隔离的首选技术。VLAN 适用于边缘或存量场景,GRE 则更多作为补充隧道技术使用。