3. VXLAN数据平面原理
VXLAN(Virtual Extensible LAN)的核心价值在于:它把二层以太网帧封装进UDP报文,在IP网络上构建出可跨三层路由域延伸的大二层网络。理解数据平面,关键要抓住四件事:封装格式长什么样、VNI与VLAN如何映射、VTEP扮演什么角色、BUM流量怎么处理。这四点决定了报文在Arista VTEP上如何被封装、转发和解封装。
一、VXLAN封装格式
VXLAN报文是在原始以太网帧外依次叠加VXLAN头、UDP头、外层IP头和外层以太网头。原始帧被称为内层帧(Inner Frame),外层头用于在Underlay网络中寻址。各字段含义如下:
- 外层以太网头:源MAC为本地VTEP的出口MAC,目的MAC为下一跳路由器的MAC(或目的VTEP的MAC,取决于是否同网段)。
- 外层IP头:源IP为本地VTEP的Loopback地址,目的IP为远端VTEP的Loopback地址;协议号为17(UDP)。
- UDP头:源端口由内层帧哈希计算得出,用于ECMP负载分担;目的端口固定为4789(IANA分配)。
- VXLAN头:8字节,其中VNI占24位,可支持约1600万个租户网络;I标志位为1表示VNI有效。
- 内层帧:完整的原始以太网帧,包含内层源/目的MAC、可选VLAN Tag和载荷。
由于外层新增了50字节(14外层以太网+20 IP+8 UDP+8 VXLAN),规划MTU时必须考虑。若内层帧为1518字节,封装后达到1568字节,因此Underlay链路MTU通常需设置为1600或更高,否则大包会被分片或丢弃。
二、VNI与VLAN映射
VNI是VXLAN网络标识符,长度为24位,用于区分不同的二层广播域。在Arista VTEP上,VNI与VLAN的映射关系通过VLAN-to-VNI映射表维护。典型映射方式有两种:
- 1:1映射:每个VLAN对应唯一VNI,适用于租户数量少、隔离要求高的场景。例如VLAN 100映射VNI 10100,VLAN 200映射VNI 10200。
- 多对一映射:多个VLAN映射到同一VNI,适用于同一租户内部多个子网共享广播域的场景,但需注意广播域扩大带来的影响。
在Arista EOS中,映射关系通过vxlan vlan 100 vni 10100命令配置。当本地VTEP收到来自VLAN 100的帧时,会查找映射表,将VNI 10100写入VXLAN头;远端VTEP解封装后,根据VNI查找本地对应的VLAN,再转发到相应接口。若远端未配置该VNI的映射,报文将被丢弃。
三、VTEP角色
VTEP(VXLAN Tunnel Endpoint)是VXLAN隧道的端点,负责封装和解封装。在Arista EVPN VXLAN架构中,VTEP通常部署在Leaf交换机上,分为两种角色:
- 本地VTEP:负责将本地接入的原始以太网帧封装为VXLAN报文,并发送到Underlay网络。其Loopback地址作为VXLAN隧道的源IP。
- 远端VTEP:负责接收VXLAN报文,解封装后根据VNI和内层目的MAC转发到本地接入端口。其Loopback地址作为隧道的目的IP。
在EVPN控制平面下,VTEP之间通过BGP EVPN邻居关系交换MAC/IP路由信息,形成分布式转发表。数据平面转发时,本地VTEP查EVPN表得到远端VTEP的IP地址,直接封装发送,无需泛洪。这种“控制平面学习、数据平面转发”的模式,是Arista EVPN VXLAN的核心机制。
四、BUM流量处理
BUM流量指广播(Broadcast)、未知单播(Unknown Unicast)和组播(Multicast)流量。在传统VLAN中,BUM流量通过泛洪处理;在VXLAN中,BUM流量需要跨隧道传输,处理方式有两种:
- 组播模式:Underlay网络启用组播,每个VNI映射一个组播组地址。BUM流量封装后发送到组播组,所有加入该组的VTEP都能收到。该模式配置简单,但需要Underlay支持PIM-SM等组播协议。
- 头端复制(Ingress Replication):本地VTEP根据EVPN控制平面学习到的远端VTEP列表,将BUM流量逐一复制并单播发送到每个远端VTEP。该模式不依赖组播,是Arista EVPN VXLAN的推荐方式。
在头端复制模式下,本地VTEP维护一个“BUM复制列表”,列表中的每个远端VTEP都会收到一份BUM报文副本。例如,某VNI下有3个远端VTEP,本地VTEP收到一个广播帧后,会复制3份,分别封装并发送到3个远端VTEP。这种方式增加了本地VTEP的CPU和带宽开销,但避免了组播协议的复杂性,且与EVPN控制平面天然契合。
五、Arista VTEP实现机制
Arista EOS在数据平面上的VXLAN实现具有以下特点:
- 硬件卸载:VXLAN封装/解封装由交换芯片(如Broadcom Trident/Tomahawk系列)硬件完成,CPU仅处理控制平面和异常报文,转发性能接近线速。
- ECMP负载分担:外层UDP源端口由内层帧的哈希值生成,使不同流量的VXLAN报文能够均匀分布到多条Underlay等价路径上,充分利用带宽。
- EVPN控制平面集成:VTEP通过BGP EVPN学习远端MAC/IP路由,生成VXLAN隧道表项。数据平面转发时直接查表封装,无需泛洪学习。
- ARP/ND抑制:EVPN控制平面可代理ARP响应,减少BUM流量中的ARP广播,进一步优化网络性能。
以下是一个Arista VTEP的典型配置片段,展示VNI与VLAN映射及VXLAN接口配置:
interface Vxlan1
vxlan source-interface Loopback0
vxlan udp-port 4789
vxlan vlan 100 vni 10100
vxlan vlan 200 vni 10200
!
interface Ethernet1
switchport access vlan 100
!
interface Loopback0
ip address 10.0.0.1/32
!
router bgp 65001
neighbor 10.0.0.2 remote-as 65001
neighbor 10.0.0.2 update-source Loopback0
address-family evpn
neighbor 10.0.0.2 activate
该配置中,Loopback0作为VXLAN隧道的源接口,VLAN 100映射到VNI 10100,VLAN 200映射到VNI 10200。BGP EVPN邻居关系建立后,VTEP之间交换MAC/IP路由,数据平面即可根据EVPN表项进行封装转发。实际部署时,需确保Underlay路由可达、MTU足够、UDP端口4789未被过滤,并通过show vxlan vni和show bgp evpn验证VNI状态和EVPN路由学习情况。
show vxlan vni查看VNI状态,show bgp evpn summary查看邻居状态,show interfaces vxlan1查看隧道接口统计。