什么是VXLAN?为什么需要VXLAN?
1. VXLAN 基础回顾
在排障之前,先回忆一下 VXLAN 的核心原理:
- VTEP(VXLAN Tunnel EndPoint):VXLAN 隧道端点,负责把二层帧封装成 UDP 报文。
- VNI(VXLAN Network Identifier):类似 VLAN ID,用于区分不同租户或逻辑二层。
- 封装方式:原始二层帧 + VXLAN Header + UDP + IP + MAC。
- 控制平面:可以是 Flood & Learn(EVPN 前用的方式)或 BGP EVPN。
搞清楚这几个概念,排障时才能有方向。

2. 常见导致“虚拟机不通”的原因
2.1 Underlay 网络未打通
- VXLAN 是基于 UDP 封装的,如果底层 IP 网络都不通,VXLAN 就无从谈起。
- 检查点:
- VTEP IP 是否互通?
- MTU 设置是否足够(VXLAN 封装后会增加 50 字节左右)?
- Underlay 路由是否完整?
2.2 VNI 映射不一致
- 如果两端 VXLAN 使用的 VNI 不一样,等于两个不同的虚拟网络,自然无法互通。
- 检查点:
- VLAN 与 VNI 的绑定关系是否一致?
- 同一租户的 VNI 是否完全匹配?

2.3 VTEP 配置错误
- VTEP 地址配置错误或未激活,会导致 VXLAN 隧道无法封装报文。
- 检查点:
- VTEP 接口(Loopback、NVE 等)是否配置正确?
- show nve interface / display vxlan tunnel 查看隧道是否 UP?


编辑
建立VXLAN隧道示意图
2.4 学习不到 MAC 地址
- VXLAN 需要学习虚拟机的 MAC 地址,才能正确转发。
- 检查点:
- ARP 报文能否封装并传输?
- 是否有 Flood & Learn 或 EVPN 控制平面?
- show vxlan mac 是否能看到远端虚拟机的 MAC?
3. 特殊情况:虚拟机自身配置错误
- 子网不一致:虚拟机 IP 配置在不同网段,必然不通。
- 默认网关缺失:不同子网之间通信必须走网关,如果没配置,ping 不通很正常。
- 安全策略限制:云平台 / 虚拟化平台(如 VMware、KVM)可能有安全组或 ACL 限制东西向流量。
4. 进阶排查点
4.1 MTU 设置问题
VXLAN 封装后,每个报文会额外增加 50 字节左右的头部(Outer MAC + Outer IP + UDP + VXLAN Header)。
- 如果底层链路 MTU 没有调大,就可能出现 报文被丢弃 的情况。
- 检查点:
- 用 ping -M do -s 1472 <VTEP IP> 测试是否能通过(假设 MTU 1500)。
- 建议将物理网络 MTU 设置为 1550 或 1600,保证 VXLAN 业务不被丢包。
4.2 控制平面未建立
在大规模数据中心里,一般不会只靠 Flood & Learn,而是使用 BGP EVPN 来分发 MAC 和 ARP 信息。
- 如果 EVPN 会话未建立,VTEP 就学不到远端 MAC。
- 检查点:
- show bgp l2vpn evpn summary 查看 EVPN 邻居是否正常。
- show bgp l2vpn evpn route 是否有对端的 MAC/IP 路由。
- 确认 Route-Target(RT)配置一致。
4.3 网关部署模式错误
VXLAN 跨子网通信时,必须经过三层网关。常见有两种模式:
-
- 集中式网关:所有三层转发都交给核心设备完成。
- 缺点:跨租户、大规模环境中,容易形成瓶颈。
- 集中式网关:所有三层转发都交给核心设备完成。
- 分布式网关(Distributed Anycast Gateway):每个 ToR 都配置一个网关,虚拟机上送报文直接在本地转发。
- 如果网关没配置正确,虚拟机即使在 VXLAN 内,也 ping 不通对端。
- 检查点:
- 确认三层网关的 IP 是否一致(Anycast 模式)。
- 确认 ARP 能否学习到远端虚拟机网关的 MAC。
4.4 多租户隔离问题
VXLAN 的初衷就是实现多租户隔离。如果不小心:
- 把不同租户的 VNI 配到了一起;
- 或者 Route-Target 配置错误,导致不同租户的 EVPN 表混淆; 就会出现虚拟机“莫名其妙能互通”或“怎么都不通”。
4.5 安全与策略限制
有些时候问题根本不在 VXLAN,而在外围设备:
- 防火墙、ACL 阻断了 VXLAN 的 UDP 端口(4789 默认)。
- 虚拟化平台本身有安全组策略,阻止虚拟机 ARP 或 VXLAN 流量。
5. VXLAN 排障逻辑(逐层排查)
当虚拟机之间不通时,可以按照下面这个逻辑逐步检查:
- Underlay 网络层
- VTEP Loopback 是否互通?
- MTU 是否足够?
- 物理链路是否有丢包?
- Overlay 隧道层
- VXLAN NVE 接口是否 UP?
- VXLAN 隧道是否建立?
- VNI 映射是否一致?
- 控制平面层
- EVPN 邻居是否建立?
- 是否学习到远端 MAC/IP 路由?
- 虚拟机层
- 虚拟机是否在同一子网?
- 默认网关配置是否正确?
- 是否有安全组 / ACL 限制?
6. 总结
VXLAN 的排障思路,其实就是一个逐层剥洋葱的过程:
- 先看底层 Underlay,确保物理 IP 网络能承载 VXLAN;
- 再看 Overlay,确认 VTEP 和 VNI 配置无误;
- 然后是 控制平面,验证 MAC/ARP/路由能否同步;
- 最后才是虚拟机和安全策略。
很多人一开始上手 VXLAN 时容易“慌”,因为它涉及的组件太多。但只要建立这种逐层排查的逻辑,就能很快定位问题。
阅读剩余
版权声明:
作者:SE_YJ
链接:https://www.cnesa.cn/7540.html
文章版权归作者所有,未经允许请勿转载。
THE END