VXLAN 学习笔记(上篇)
一、为什么需要VXLAN?——从VLAN的局限性说起
1.1 VLAN的“天花板”
传统VLAN用12位的VLAN ID来标识网络,最多只能支持 4096个(实际可用4094个)隔离的网络。在传统企业网里这够用,但到了云计算时代——
-
一个公有云可能有成千上万个租户,每个租户需要独立的网络
-
虚拟机需要在不改变IP地址的情况下跨物理机甚至跨数据中心迁移
-
4096个VLAN根本不够分
通俗理解:VLAN就像一栋只有4096个房间的大楼,云计算时代租户太多,房间不够用了。VXLAN就是把这栋楼拆掉,重新盖一栋有1600多万个房间的超大公寓。
1.2 VXLAN是什么?
VXLAN全称 Virtual eXtensible Local Area Network(虚拟扩展局域网)。
一句话概括:VXLAN是一种“隧道技术”——它在现有的三层IP网络(Underlay)之上,搭建出一个虚拟的二层网络(Overlay)。
打个比方:
-
Underlay网络 = 现实中的高速公路网(物理设备、光纤、交换机)
-
Overlay网络 = 在高速公路上跑的“虚拟隧道”,隧道里跑的车(数据包)根本不用关心外面走的是哪条路
-
VXLAN隧道 = 隧道本身,把数据从A点“打包”送到B点再“拆包”
租户只知道自己在一个二层网络里,完全感知不到底下复杂的物理网络。
1.3 VXLAN vs VLAN:一张图看懂
| 标识符 | 12位 VLAN ID | 24位 VNI(VXLAN Network Identifier) |
| 最大数量 | 4096个 | 约1600万个(2²⁴) |
| 技术层级 | 数据链路层(L2) | Overlay网络(L2 over UDP) |
| 跨三层网络 | ❌ 不能跨三层 | ✅ 可以在三层网络上跑二层 |
| 适用场景 | 传统企业网隔离 | 云计算、多租户数据中心 |
核心差异一句话:VLAN是“在一个楼层里隔房间”,VXLAN是“在不同楼之间拉隧道”。
二、VXLAN核心概念(必须掌握的术语)
2.1 租户(Tenant)
租户就是使用网络资源的人或组织——可以是不同的业务部门、不同的公司客户。
在VXLAN里,每个租户通过一个VNI来标识和隔离。不同租户的流量就像住在不同公寓楼里的人,各走各的门,互不干扰。
2.2 VNI(VXLAN Network Identifier)⭐ 重中之重
VNI是VXLAN里最重要的概念,没有之一。
-
占 24位,取值范围 1 到 16777215
-
作用类似于VLAN ID,用来区分不同的VXLAN段
-
同一个VNI内的主机可以二层互通,不同VNI之间不能直接二层通信
记忆口诀:VNI = VXLAN的“门牌号”,24位足够给地球上一人发一个虚拟网络。
在分布式网关场景下,VNI还分为两种:
-
二层VNI:映射到广播域BD,负责同子网转发
-
三层VNI:关联VPN实例,负责跨子网转发
2.3 Underlay网络和Overlay网络
-
Underlay(底层网络) :物理网络——交换机、路由器、光纤、网线。负责把VXLAN封装后的报文从A点送到B点
-
Overlay(覆盖网络) :虚拟网络——建立在Underlay之上。租户只看到这个网络
通俗理解:Underlay是“公路”,Overlay是“公路上的隧道”。车在隧道里跑,不用管公路怎么拐弯。
2.4 NVE(Network Virtualization Edge)
NVE是实现网络虚拟化功能的实体,负责VXLAN报文的封装和解封装。
可以部署在:
-
硬件模式:物理交换机上(性能高)
-
软件模式:虚拟交换机vSwitch上(灵活)
-
混合模式:两者结合
2.5 VTEP(VXLAN Tunnel Endpoint)⭐ 核心组件
VTEP是VXLAN隧道的起点和终点,位于NVE内部。
每个VTEP有一个物理网络的IP地址,VXLAN报文的源IP和目的IP就是两端的VTEP IP。
一对VTEP IP地址就对应一条VXLAN隧道。
通俗理解:VTEP就是隧道的“入口”和“出口”——数据从A点的VTEP进去,封装好,穿过Underlay网络,从B点的VTEP出来,拆封。
2.6 BD(Bridge Domain,广播域)
BD是VXLAN网络中的二层广播域。
VNI和BD是 1:1映射 的关系——一个VNI对应一个BD,一个BD就是一个广播域。
通俗理解:BD就是VXLAN里的“虚拟交换机”,同一个BD里的主机可以互相“喊话”(广播)。
2.7 VBDIF接口(Virtual Bridge Domain Interface)
基于BD创建的三层逻辑接口,可以配置IP地址。
作用:实现不同网段的VXLAN之间通信,以及VXLAN和非VXLAN网络的通信。
通俗理解:VBDIF就是VXLAN里的“虚拟路由器”,让不同子网能互相访问。
2.8 VAP(Virtual Access Point,虚拟接入点)
VXLAN的业务接入点,可以是二层子接口或VLAN。
作用:把用户的流量“接进”VXLAN网络。
2.9 VXLAN网关
VXLAN网关分为两种:
-
二层网关:让终端接入VXLAN网络,同VNI内通信
-
三层网关:跨子网通信、访问外部网络
三层网关又有两种部署方式(后面详细讲):
-
集中式网关:一台设备管所有跨子网流量
-
分布式网关:每台Leaf都是网关
三、VXLAN报文封装格式(数据包长什么样)
3.1 封装层次(从内到外)
VXLAN采用 MAC-in-UDP 的封装方式。
原始数据包从内到外依次被包了四层“衣服”:
第1层(最内层) :原始二层以太网帧
-
包含源MAC、目的MAC、原始数据
第2层:VXLAN头部(8字节)
-
最关键的是 24位的VNI
-
还包含标志位、保留字段等
第3层:UDP头部(8字节)
-
目的端口号固定为 4789(VXLAN标准端口)
-
源端口号通常基于内层报文做哈希计算(用于负载均衡)
第4层(最外层) :IP头部(20字节)+ 外层以太网头部
-
源IP = 源端VTEP的IP
-
目的IP = 目的端VTEP的IP
3.2 封装开销
VXLAN封装总共增加约 50字节 的开销:
-
VXLAN头:8字节
-
UDP头:8字节
-
IP头:20字节
-
外层以太网头:约14字节
重要提醒:由于多了50字节的封装,网络MTU必须调整!建议 MTU ≥ 1550,否则报文会被分片,导致性能下降甚至通信失败。
3.3 通俗理解报文封装
想象一下寄快递:
-
原始数据 = 你要寄的物品
-
VXLAN头 = 快递单(写上VNI门牌号)
-
UDP头 = 快递公司的运单号
-
IP头 = 寄件地址和收件地址(VTEP IP)
-
外层以太网头 = 快递包装盒
VTEP就是“快递收发站”——收件时打包,送件时拆包。
四、VXLAN通信过程(数据怎么走的)
4.1 同VNI内通信(二层通信)
场景:VM1(VNI 100)要和VM2(VNI 100)通信,两台VM挂在不同的VTEP下。
步骤:
VM1发出数据帧:目的MAC = VM2的MAC
源VTEP收到:查询本地MAC表,找到VM2的MAC对应哪个远端VTEP
封装:加上VXLAN头(VNI=100)→ UDP头(端口4789)→ IP头(源=本端VTEP IP,目的=远端VTEP IP)→ 外层以太网头
Underlay传输:封装后的报文在物理IP网络中路由转发
目的VTEP收到:解封装 → 去掉外层头 → 检查VNI → 把原始帧发给VM2
核心要点:对VM1和VM2来说,它们就像连在同一个交换机上,完全不知道中间经历了封装和解封装。
4.2 跨VNI通信(三层通信)
不同VNI之间不能直接二层通信,需要三层网关(VBDIF接口)。
流程:
VM1发数据给网关MAC(VBDIF接口的MAC)
VTEP封装后发给三层网关所在的VTEP
三层网关解封装 → 查路由表 → 重新封装(VNI换成目标VNI)→ 发给目标VTEP
目标VTEP解封装 → 发给目标VM
通俗理解:不同VNI就像不同小区,进出要过“门卫”(三层网关)。
五、VXLAN的两种网关模式
5.1 集中式网关
特点:所有跨子网流量都集中到一台设备上处理。
优点:
-
管理简单,所有三层转发集中在一处
缺点:
-
转发路径不是最优(流量要绕到集中网关再回来)
-
ARP表项有瓶颈(所有终端的ARP都在这台设备上)
-
单点故障风险
适用场景:小型VXLAN网络,跨子网流量不大的情况。
5.2 分布式网关 ⭐ 主流方案
特点:在Spine-Leaf架构中,每台Leaf节点都是VTEP,同时也是三层网关。
优点:
-
流量路径最优(就近转发)
-
无ARP瓶颈(ARP表分散在各Leaf上)
-
高可用性好
适用场景:大型数据中心、云计算环境(绝大多数生产环境)。
5.3 控制平面的两种方式
方式一:Flood & Learn(泛洪学习)
-
早期实现方式,靠ARP广播来学习MAC地址
-
缺点:广播流量大,有广播风暴风险
方式二:BGP EVPN ⭐ 主流方案
-
通过BGP协议在VTEP之间交换MAC/IP路由信息
-
优点:主动学习、支持VM迁移、可扩展性强
-
生产环境几乎都用这个


