什么是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。

搞清楚这几个概念,排障时才能有方向。

什么是VXLAN?为什么需要VXLAN?
VXLAN报文格式(以外层IP头为IPv4格式为例)

2. 常见导致“虚拟机不通”的原因

2.1 Underlay 网络未打通

  • VXLAN 是基于 UDP 封装的,如果底层 IP 网络都不通,VXLAN 就无从谈起
  • 检查点:
    • VTEP IP 是否互通?
    • MTU 设置是否足够(VXLAN 封装后会增加 50 字节左右)?
    • Underlay 路由是否完整?

2.2 VNI 映射不一致

  • 如果两端 VXLAN 使用的 VNI 不一样,等于两个不同的虚拟网络,自然无法互通。
  • 检查点:
    • VLAN 与 VNI 的绑定关系是否一致?
    • 同一租户的 VNI 是否完全匹配?

什么是VXLAN?为什么需要VXLAN?
VXLAN网络模型示意

2.3 VTEP 配置错误

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

什么是VXLAN?为什么需要VXLAN?

什么是VXLAN?为什么需要VXLAN?

​编辑

建立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 没有调大,就可能出现 报文被丢弃 的情况。
  • 检查点:
    • 用&nbsp;ping -M do -s 1472 <VTEP IP>&nbsp;测试是否能通过(假设 MTU 1500)。
    • 建议将物理网络 MTU 设置为&nbsp;1550 或 1600,保证 VXLAN 业务不被丢包。

4.2 控制平面未建立

在大规模数据中心里,一般不会只靠 Flood & Learn,而是使用&nbsp;BGP EVPN&nbsp;来分发 MAC 和 ARP 信息。

  • 如果 EVPN 会话未建立,VTEP 就学不到远端 MAC。
  • 检查点:
    • show bgp l2vpn evpn summary&nbsp;查看 EVPN 邻居是否正常。
    • show bgp l2vpn evpn route&nbsp;是否有对端的 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 排障逻辑(逐层排查)

当虚拟机之间不通时,可以按照下面这个逻辑逐步检查:

  1. Underlay 网络层
  • VTEP Loopback 是否互通?
  • MTU 是否足够?
  • 物理链路是否有丢包?
  1. Overlay 隧道层
  • VXLAN NVE 接口是否 UP?
  • VXLAN 隧道是否建立?
  • VNI 映射是否一致?
  1. 控制平面层
  • EVPN 邻居是否建立?
  • 是否学习到远端 MAC/IP 路由?
  1. 虚拟机层
  • 虚拟机是否在同一子网?
  • 默认网关配置是否正确?
  • 是否有安全组 / ACL 限制?

6. 总结

VXLAN 的排障思路,其实就是一个逐层剥洋葱的过程:

  • 先看底层&nbsp;Underlay,确保物理 IP 网络能承载 VXLAN;
  • 再看&nbsp;Overlay,确认 VTEP 和 VNI 配置无误;
  • 然后是&nbsp;控制平面,验证 MAC/ARP/路由能否同步;
  • 最后才是虚拟机和安全策略。

很多人一开始上手 VXLAN 时容易“慌”,因为它涉及的组件太多。但只要建立这种逐层排查的逻辑,就能很快定位问题。

阅读剩余
THE END