前面讲的全是传统网络:VLAN 切广播域、STP 防环、OSPF/BGP 找路。这套东西在企业园区里够用,但到了数据中心就撑不住了。VXLAN 就是为数据中心重新设计的一套二层承载方案。
一句话概括 VXLAN:把二层帧整个装进 UDP 里,在三层网络上跑。这个"套娃"动作同时解决了三个老问题。
为什么需要 VXLAN
传统二层网络在数据中心场景下有三个绕不过去的墙:
| 问题 | 传统二层的困境 | VXLAN 怎么解 |
|---|---|---|
| 规模 | 802.1Q 的 VLAN ID 只有 12 位,最多 4094 个。多租户云环境里根本不够分 | VNI 是 24 位,约 1600 万 个 |
| 链路利用率 | STP 会把冗余链路阻塞掉一半,花钱买的带宽用不上 | VXLAN 跑在三层网络上,靠 ECMP 做多路径负载,链路全用上 |
| 虚机迁移 | 虚机迁移要求二层可达。传统二层网络跨不了三层边界,机柜之间搬不动 | VXLAN 隧道跨三层建二层,虚机可以在任意机柜之间迁移 |
再加上第四个隐含好处:租户隔离。每个 VNI 就是一个独立的二层域,天然把不同租户隔开。
VXLAN 的几个基本概念
| 概念 | 说明 |
|---|---|
| VNI | VXLAN Network Identifier,24 位,标识一个 VXLAN 网络。相当于 VLAN ID 的加强版 |
| VTEP | VXLAN Tunnel End Point,隧道端点。负责封装和解封装,是 VXLAN 的边界 |
| NVE | Network Virtualization Edge,华为设备上的逻辑接口,用来配置 VTEP 的源地址和 VNI 列表 |
| BD | Bridge Domain,广播域。VXLAN 里用 BD 承载 VNI,一个 BD 对应一个 VNI |
| VAP | Virtual Access Point,虚拟接入点。业务口(二层子接口)通过 VAP 绑定到 BD |
VTEP 有两种形态
- 硬件 VTEP:交换机/路由器自己做封装解封装,性能高,用于物理服务器和跨机柜互通;
- 软件 VTEP:服务器上的 vSwitch(OVS / 华为的 vSwitch)做封装,最靠近虚机,适合大规模云环境。
报文格式:MAC in UDP
VXLAN 的本质是把完整的二层帧当成数据,装进 UDP 报文里。所以叫 MAC-in-UDP。
┌────────┬────────────────┬────────────────────┬──────────┐
│ Flags │ Reserved │ VNI │ Reserved │
│ 8 bit │ 24 bit │ 24 bit │ 8 bit │
└────────┴────────────────┴────────────────────┴──────────┘
│ │
│ └── ★ 24 位 VNI,约 1600 万个隔离域
└── I 位:置 1 表示 VNI 字段有效(正常情况都是 1)
外层 UDP 端口:目的端口 4789(标准),源端口由内层帧哈希算出
★ 源端口哈希 = ECMP 负载分担的关键。不同流算出不同源端口,
底层交换机才能把它们散到不同链路上
封装后的完整结构
┌──────────────────────────────────────────────────────┐
│ 外层以太头 目的 MAC = 下一跳 VTEP 的 MAC │ ← 三层网络里逐跳变
├──────────────────────────────────────────────────────┤
│ 外层 IP 目的 IP = 对端 VTEP 的 IP │ ← 全程不变
│ 协议号 = 17(UDP) │
├──────────────────────────────────────────────────────┤
│ 外层 UDP 目的端口 4789 │
├──────────────────────────────────────────────────────┤
│ VXLAN 头 VNI = 5010 │ ← 标识租户/广播域
├──────────────────────────────────────────────────────┤
│ 内层以太头 目的 MAC = 虚机的 MAC │ ← 原始帧,原样封装
│ 源 MAC = 虚机的 MAC │
├──────────────────────────────────────────────────────┤
│ 内层 IP 虚机的原始 IP 报文 │
└──────────────────────────────────────────────────────┘
★ 内层帧在隧道里【完全透明】,中间设备看不到虚机的 MAC/IP
★ 只有两端 VTEP 才知道"里面是什么"
为什么要用 UDP 而不是直接 IP 封装?两个原因:① UDP 源端口可以做哈希,让 ECMP 能把不同流分散到不同链路;② 现成的 NAT / 防火墙能处理 UDP,穿透性好。
隧道是怎么建起来的
VTEP 之间要建隧道,得先知道"对端 VTEP 的 IP 是多少"。三种方式:
| 方式 | 怎么做 | 优缺点 |
|---|---|---|
| 静态手工配置 | 在 NVE 接口下用 head-end peer-list 手工列出所有对端 VTEP | 简单直观,但 N² 条配置,超过 10 台就没法维护 |
| BGP EVPN 动态建立 | 用 MP-BGP 的 EVPN 地址族自动发现对端 VTEP 和 MAC/IP | 主流方案。自动发现、支持多归属、可跨数据中心 |
| SDN 控制器下发 | 控制器统一编排,把 VTEP 和 VNI 映射推给设备 | 适合云平台,但强依赖控制器 |
静态方式的配置长这样(小规模或实验用):
# ① 配 BD 和 VNI 的映射
bridge-domain 10
vxlan vni 5010
# ② 配 NVE(VTEP 逻辑接口)
interface Nve1
source 1.1.1.1 # 本端 VTEP 地址(一般是 Loopback)
vni 5010 head-end peer-list 2.2.2.2 # 对端 VTEP 地址
# ③ 业务口绑定到 BD
interface GigabitEthernet0/0/1.10 mode l2
encapsulation dot1q vid 10
bridge-domain 10
# ④ 承载网:VTEP 之间要三层可达(跑 OSPF/IS-IS + BGP)
网络架构:集中式 vs 分布式网关
VXLAN 只管二层。虚机之间跨网段通信需要三层网关,而网关放在哪,决定了整个架构:
| 集中式网关 | 分布式网关 | |
|---|---|---|
| 网关位置 | 只在 一对核心交换机上(或防火墙/专用网关设备) | 每台 Leaf 交换机上都有 |
| 跨网段流量 | 全部绕到核心再回来("发夹弯") | 本地 Leaf 直接转发,不用绕核心 |
| 转发效率 | 低,核心压力大 | 高,路径最短 |
| 横向流量 | 受核心带宽限制 | 可以水平扩展 |
| 配置复杂度 | 简单,网关集中好管理 | 复杂,每台 Leaf 都要配 |
| 适用 | 小规模、东西向流量不大 | 大规模数据中心的主流 |
分布式网关里有两个关键概念,下一篇讲 EVPN 时会展开:
- L2VNI:承载二层业务,对应一个 BD;
- L3VNI:承载三层业务,用来做跨子网转发。每台 VTEP 上有一个 L3VNI 和对应的 VRF。
VXLAN 和传统 VLAN 的对比
| VLAN | VXLAN | |
|---|---|---|
| 标识长度 | 12 位 → 4094 个 | 24 位 → 约 1600 万 |
| 承载在什么之上 | 物理链路(二层) | UDP over IP(三层) |
| 跨三层 | 不行 | 可以(这是核心价值) |
| 环路处理 | STP 阻塞链路 | 靠三层路由 + ECMP,无阻塞 |
| MAC 表规模要求 | 一般 | 很大(多租户 + 虚机,MAC 数量爆炸) |
| 标准 | 802.1Q | RFC 7348 |
验证与排错
display vxlan vni # ★ VNI 列表与状态
display vxlan tunnel # ★ 隧道状态(up/down)
display bridge-domain # BD 与 VNI 的映射
display interface nve 1 # NVE 接口信息
display vxlan vni 5010 verbose # 某个 VNI 的详细信息
# 二层表项
display mac-address bridge-domain 10 # BD 里的 MAC 表
display mac-address vxlan # VXLAN 相关 MAC
# 承载网
display ip routing-table # VTEP 之间三层可达吗
ping -a 1.1.1.1 2.2.2.2 # 用 VTEP 源地址 ping 对端
排错顺序:
- 隧道起不来 → 先确认两个 VTEP 之间三层可达(
ping -a用源地址 ping),再查 UDP 4789 有没有被 ACL 拦; - 隧道 Up 但同 VNI 不通 → 查两端的 BD 和 VNI 映射是否一致(BD 10 → VNI 5010 必须两端一样);
- 跨网段不通 → 这是三层的事,查网关(分布式网关上要看 VBDIF 和 VRF 配置);
- 抓包看不到内层 → 正常。中间设备只能看到外层 UDP 包,要看内层得在 VTEP 上抓。
一句话总结:VXLAN = 把二层帧装进 UDP,用 24 位 VNI 替代 12 位 VLAN,在三层网络上跑出二层语义。它解决了规模、链路利用率、虚机迁移三个问题。隧道建立首选 BGP EVPN 动态方案,网关部署首选分布式——这两件事下一篇详细讲。
📌 本篇整理自 2024–2025 的「数通」学习笔记(HCIE-Datacom 方向)
合并了原始笔记中「VXLAN / vxlan 基本概念 / vxlan 网络架构 / vxlan 报文 / vxlan 隧道建立方式 / VXLAN&mpls」几页。
原笔记以胶片截图为主(报文格式图、组网图),本文把封装结构重画成了图,并补齐了 ECMP 源端口哈希、L2VNI/L3VNI 等细节。
配置命令保留华为 VRP 原样。