2. VXLAN数据平面基础
VXLAN(Virtual eXtensible LAN)的核心思想,是把二层以太网帧封装进UDP报文,在IP网络上"打隧道"传输。理解数据平面,关键要抓住四件事:封装格式长什么样、VNI与BD如何对应、VTEP扮演什么角色、一个帧从源到目的究竟走了哪些步骤。本节围绕这四点展开,并结合Comware的实现要点说明。
一、VXLAN封装格式
VXLAN报文由"外层头 + VXLAN头 + 原始以太网帧"组成。外层是标准的UDP/IP封装,VXLAN头固定8字节,其后才是被封装的内层原始帧。各字段含义如下:
| 层次 | 关键字段 | 作用 |
|---|---|---|
| 外层以太头 | 源/目的MAC | 由承载网逐跳重写,指向下一跳 |
| 外层IP头 | 源IP=本端VTEP,目的IP=对端VTEP | 隧道端点的定位依据 |
| 外层UDP头 | 目的端口4789(可配置) | 标识VXLAN流量 |
| VXLAN头 | Flags、VNI(24位)、Reserved | VNI标识所属二层域 |
| 内层原始帧 | 内层源/目的MAC、原始载荷 | 被透明传输的用户数据 |
需要特别注意:VNI是24位,理论可支持约1600万个二层网段,远超传统VLAN的12位4094个。VNI只在外层VXLAN头中体现,内层原始帧里并不携带VNI信息,因此内层帧的VLAN标签在隧道中通常被剥离或保留由具体实现决定。
二、VNI与BD映射
在Comware设备上,VNI不会直接绑定到物理接口,而是先映射到一个BD(Bridge Domain,桥接域),再由BD关联二层接口或VSI虚接口。可以这样理解:BD是设备内部的"二层转发实例",VNI是这个实例在隧道网络中的"身份证"。映射关系为:
- 一个VNI对应一个BD,通常一一对应;
- BD内通过AC(接入电路)连接本地用户,通过VXLAN隧道连接远端VTEP;
- 同一BD内的MAC地址学习结果,会通过VXLAN隧道同步到对端VTEP。
典型配置片段如下,先建VSI并指定VXLAN,再绑定VNI:
vsi vpna
vxlan 10000
tunnel 1
tunnel 1 destination 2.2.2.2
interface Vsi-interface1
ip address 10.1.1.1 255.255.255.0
这里VSI相当于BD的载体,VNI 10000即该二层域的标识。对端VTEP地址2.2.2.2决定了隧道出口。
三、VTEP角色
VTEP(VXLAN Tunnel End Point)是隧道的端点,负责封装与解封装。按部署位置可分为两类:
- 硬件VTEP:由交换机、路由器等网络设备承担,性能高,是园区和数据中心的主流选择;
- 软件VTEP:由服务器上的vSwitch实现,常见于虚拟化环境。
在Comware组网中,VTEP通常由支持VXLAN的交换机担任。每个VTEP至少有一个用于隧道的源地址(本端VTEP IP),并维护一张VXLAN隧道表,记录对端VTEP地址与出接口。VTEP之间可以是全互联,也可以借助EVPN等控制平面动态建立隧道,避免手工配置N²条隧道。
四、隧道转发流程
下面这张图展示了一个帧从本地主机到远端主机的完整转发路径,包含封装、承载网转发、解封装三个阶段:
流程可归纳为:主机A发出原始帧 → VTEP-1查BD/VSI,确定VNI与对端VTEP → 封装外层UDP/IP/VXLAN头 → 承载网按外层目的IP逐跳转发 → VTEP-2收到后校验VNI,剥离外层头 → 按内层目的MAC在对应BD内转发给主机B。整个过程对两端主机完全透明,主机A、B感知不到隧道存在。
五、Comware实现要点
在Comware上落地VXLAN数据平面,需要关注以下几点:
- 隧道源地址:必须使用设备上已配置且路由可达的接口地址作为本端VTEP IP,通常用Loopback接口,保证隧道稳定。
- VSI与VNI绑定:通过
vsi视图下的vxlan命令指定VNI,并配置tunnel指向对端VTEP地址。 - AC接入:用户侧接口需绑定到VSI,可用
xconnect方式将接口与VSI关联,实现本地二层接入。 - MAC学习:默认采用数据平面泛洪+源MAC学习,也可结合EVPN控制平面实现MAC同步,减少泛洪。
- MTU:VXLAN封装会增加约50字节开销,承载网MTU需相应放大,否则大包会被分片或丢弃。