云数据中心网络从 VLAN 走向 Overlay 后,最常见的两类隧道封装是 VXLAN 和 GRE。它们都能把一段原始报文封装进新的三层报文里,让原本不在同一个二层网络或路由域中的主机跨越 Underlay 通信;但二者的设计目标、封装格式、可扩展性和云网络适配程度完全不同。
011. 先说结论
VXLAN 是面向大规模云数据中心多租户网络设计的二层 Overlay 技术,核心目标是替代 VLAN,并在 Leaf-Spine Underlay 之上承载海量虚拟网络。
GRE 是更通用的三层隧道封装技术,核心目标是“把一种三层协议封装进另一种三层协议”,常用于点到点隧道、跨网络互联、VPN、动态路由穿越等场景。
一句话区分:
VXLAN 更像“云数据中心里的虚拟二层交换网络”;GRE 更像“通用 IP 隧道工具”。
022. 二者解决的问题不同
VXLAN 解决什么问题
VXLAN 主要解决传统 VLAN 在云数据中心里的三个瓶颈:
- VLAN ID 只有 12 bit,最多约 4096 个,无法支撑大规模租户隔离
- 虚拟机和容器会在不同宿主机之间迁移,需要跨三层 Underlay 维持逻辑二层连通
- 东西向流量巨大,需要配合 Leaf-Spine、ECMP、硬件 offload 做规模化转发
VXLAN 的核心不是“打通一条隧道”,而是“构建很多张虚拟二层网络”。
GRE 解决什么问题
GRE 的目标更通用:
- 在两个三层节点之间建立隧道
- 承载原本 Underlay 不直接支持的协议
- 跨公网或跨运营商网络打通私有地址空间
- 让动态路由协议、组播或特殊协议穿越普通 IP 网络
GRE 的核心不是多租户大规模虚拟网络,而是“通用封装与点到点互联”。
033. 封装结构不同
VXLAN 封装
VXLAN 把原始二层以太帧封装进 UDP 报文中,默认目的端口是 4789。
Outer Ethernet
Outer IP
UDP
VXLAN Header
Inner Ethernet
Inner IP
TCP/UDP/ICMP
Payload关键点:
- 外层 IP 用于 Underlay 转发
- UDP 端口让物理网络可以基于五元组做 ECMP 哈希
- VXLAN Header 中的 VNI 用于标识虚拟网络
- 内层 Ethernet 是租户看到的原始二层报文
GRE 封装
GRE 直接在 IP 之上增加 GRE Header,IP Protocol 号是 47。
Outer Ethernet
Outer IP
GRE Header
Inner IP / Inner Ethernet / Other Protocol
Payload关键点:
- GRE 不依赖 UDP/TCP 端口
- GRE 可以封装多种三层协议,也可以通过扩展承载二层
- 普通 GRE 天然更像点到点隧道
- 由于没有 UDP 端口,传统 ECMP 设备可能只能看到外层源/目的 IP,负载分担粒度较粗
044. 标识空间不同:VNI vs Key
VXLAN 使用 VNI(VXLAN Network Identifier)标识虚拟网络。
- VNI 长度:24 bit
- 可支持约 1600 万个逻辑网络
- 面向多租户、大规模虚拟网络隔离
GRE 可以使用可选的 Key 字段区分隧道或租户。
- GRE Key 通常是 32 bit
- 是否启用取决于具体实现
- 标准 GRE 本身没有像 VXLAN VNI 那样围绕云租户网络形成统一生态
所以不能简单说 GRE Key 比 VNI 长就更适合云网络。云网络看重的不只是字段长度,还包括控制平面、硬件转发、ECMP、网关、VTEP 发现和运维生态。
055. ECMP 友好度不同
云数据中心 Underlay 通常依赖 ECMP 把东西向流量分散到多条 Spine 路径上。
VXLAN 使用 UDP 封装,外层报文有源 IP、目的 IP、源端口、目的端口、协议号。很多 VTEP 会根据内层五元组计算 UDP 源端口,让不同租户流量在 Underlay 中分散到不同路径。
VM A -> VM B: UDP Source Port 35001 -> Spine1
VM C -> VM D: UDP Source Port 42017 -> Spine2
VM E -> VM F: UDP Source Port 50123 -> Spine3GRE 没有 UDP 端口,很多网络设备只能基于外层源 IP、目的 IP、协议号做哈希。如果两个隧道端点之间流量很大,就容易落到同一条路径上,导致 ECMP 利用率不如 VXLAN。
这也是 VXLAN 更适合 Leaf-Spine 云数据中心的关键原因之一。
066. NAT 和防火墙穿越能力不同
VXLAN 基于 UDP,网络设备能识别端口,防火墙策略也比较直接:
- UDP 4789 是标准 VXLAN 端口
- 可以按 UDP 端口放行
- NAT 设备对 UDP 的处理通常更成熟
- 但生产数据中心 VXLAN 一般运行在受控 Underlay 内,不建议随意穿越公网 NAT
GRE 使用 IP Protocol 47,不是 TCP/UDP 端口。
- 某些 NAT 或防火墙对 GRE 支持不好
- 放行规则不是“端口放行”,而是协议号放行
- 多个 GRE 会话穿越同一个 NAT 时可能遇到识别和映射问题
因此跨复杂网络边界时,GRE 经常比 UDP 类隧道更容易被中间设备限制。
077. 二层语义不同
VXLAN 天生就是把二层以太帧封装到三层网络中。
这意味着 VXLAN 可以直接承载:
- ARP
- IPv4
- IPv6
- 广播
- 未知单播
- 组播
- 同一虚拟二层网络内的东西向通信
GRE 默认更偏向三层隧道,例如 IP over GRE。它也可以通过不同变体承载二层,例如 Ethernet over GRE、gretap,但这不是现代云数据中心的主流多租户模型。
088. 控制平面生态不同
VXLAN 在云数据中心里通常和控制平面一起使用:
- EVPN + VXLAN
- OpenStack Neutron + OVS/OVN
- Kubernetes CNI VXLAN 模式
- 云厂商 VPC 控制系统
- 硬件 VTEP
- 分布式网关
控制平面负责回答这些问题:
- 某个 VNI 对应哪个租户网络?
- 某个 MAC/IP 当前在哪个 VTEP?
- 哪些 VTEP 需要建立隧道?
- ARP/ND 如何抑制?
- 跨子网流量走哪个分布式网关?
GRE 也可以被路由协议、VPN 系统和 SDN 控制器管理,但它不是为大规模 L2 VNI、分布式网关和云租户生命周期设计出来的主流抽象。
099. 性能与硬件支持不同
VXLAN 已经成为主流云数据中心网络硬件的重点优化对象。
常见能力包括:
- 网卡 VXLAN checksum offload
- 网卡 TSO/GSO offload
- 交换机 VXLAN routing/bridging
- ASIC 硬件 VTEP
- DPU/SmartNIC 卸载 VXLAN、安全组、转发策略
GRE 也有硬件和内核支持,但在云数据中心大规模 Overlay 网络中的生态成熟度通常不如 VXLAN。
如果目标是构建 VPC、租户隔离、弹性迁移和分布式网关,VXLAN 的产业链更完整。
1010. MTU 开销不同
VXLAN 和 GRE 都会增加额外封装头,都会降低有效载荷空间。
常见 IPv4 VXLAN 封装开销:
Outer Ethernet 14B
Outer IP 20B
UDP 8B
VXLAN 8B
合计约 50B普通 IPv4 GRE 封装开销通常更小:
Outer IP 20B
GRE 4B
合计约 24B如果包含外层以太网头,链路上的总帧长度还要再加二层头部。
结论:GRE 头部通常更轻;VXLAN 头部更重,但换来 VNI、UDP ECMP 和云网络生态。
因此 VXLAN 环境常见做法是把 Underlay MTU 调大,例如 1550、1600 或 9000,避免 Overlay 报文因为额外封装而分片。
1111. 典型使用场景对比
| 场景 | 更常用选择 | 原因 |
|---|---|---|
| 云数据中心 VPC | VXLAN | VNI 支持大规模租户隔离,控制平面生态完整 |
| Kubernetes Pod Overlay | VXLAN | CNI 容易实现跨 Node 二层/三层 Overlay |
| EVPN 数据中心 Fabric | VXLAN | EVPN+VXLAN 是主流标准组合 |
| 点到点跨网络隧道 | GRE | 配置简单,适合三层互联 |
| 跑动态路由协议穿越公网或专线 | GRE/IPsec GRE | GRE 可承载路由协议,常与 IPsec 组合 |
| 需要 Underlay ECMP 充分分流 | VXLAN | UDP 源端口可参与五元组哈希 |
| 受限防火墙/NAT 环境 | VXLAN/其他 UDP 隧道通常更友好 | GRE 是 IP Protocol 47,不是端口 |
1212. VXLAN 与 GRE 对比总表
| 维度 | VXLAN | GRE |
|---|---|---|
| 技术定位 | 云数据中心二层 Overlay | 通用三层隧道封装 |
| 封装方式 | MAC-in-UDP | Protocol-in-IP |
| 默认协议/端口 | UDP 4789 | IP Protocol 47 |
| 网络标识 | 24 bit VNI | 可选 Key 字段 |
| 多租户规模 | 很强,约 1600 万 VNI | 可实现,但不是主流云网络抽象 |
| ECMP 友好度 | 强,UDP 源端口可参与哈希 | 较弱,传统设备哈希粒度有限 |
| NAT/防火墙 | 相对容易按 UDP 端口处理 | 依赖设备对 GRE 协议号支持 |
| 二层能力 | 原生承载以太帧 | 需 GRE 变体承载二层 |
| 控制平面生态 | EVPN、OVN、Neutron、CNI、VPC | 路由隧道、VPN、点到点互联 |
| 硬件卸载生态 | 云数据中心支持广泛 | 有支持,但云 Overlay 生态弱一些 |
| 典型用途 | VPC、虚拟网络、Pod 网络、EVPN Fabric | IP 隧道、跨网互联、GRE over IPsec |
1313. 在云数据中心里为什么更偏向 VXLAN
现代云数据中心选择 VXLAN,不是因为 GRE 不能封装,而是因为 VXLAN 更符合云网络的系统性需求:
- VNI 天然对应租户虚拟网络
- UDP 封装更适合 Leaf-Spine ECMP
- 可以承载完整二层语义,便于虚拟机迁移和虚拟子网抽象
- EVPN/SDN 控制平面生态成熟
- 交换机、网卡、DPU 对 VXLAN 的硬件卸载更普遍
- 和 VPC、安全组、分布式网关等云产品模型更匹配
GRE 的优势在于简单、通用、头部开销较低,适合点到点隧道和三层互联;但当规模上升到“成千上万个租户网络 + 海量宿主机 + 自动化控制平面”时,VXLAN 更容易形成标准化架构。
1414. 记忆口诀
记住这四句话即可:
- VXLAN 是云数据中心 Overlay 主力,GRE 是通用 IP 隧道工具。
- VXLAN 用 UDP + VNI,GRE 用 IP Protocol 47 + 可选 Key。
- VXLAN 更适合 ECMP、多租户、VPC、EVPN 和分布式网关。
- GRE 更适合点到点三层隧道、路由协议穿越和 GRE over IPsec。
最终选择原则:
构建云数据中心虚拟网络,优先 VXLAN;打通简单三层隧道或承载特殊协议,可以考虑 GRE。