从零到三层互通用Wireshark抓包带你理解VXLAN跨子网转发全过程当我们在数据中心网络中谈论VXLAN时常常会听到大二层、Overlay网络这些概念。但真正理解VXLAN如何实现跨子网通信需要深入到数据包层面观察报文在每一跳的形态变化。本文将带你通过Wireshark抓包像观看一部网络协议纪录片一样直观理解VXLAN从二层封装到三层路由的全过程。1. 实验环境搭建与抓点规划在开始抓包前我们需要精心设计实验拓扑和抓包位置。不同于普通配置实验协议分析需要我们在关键网络节点部署抓包点就像在高速公路的每个收费站安装摄像头一样。实验采用华为eNSP模拟器搭建包含三台CE系列交换机其中CE1和CE2作为VTEPVXLAN Tunnel End PointCE3作为集中式网关。拓扑中设计了两个VXLAN网络VNI 10子网192.168.1.0/24VNI 20子网192.168.2.0/24关键抓包位置规划VTEP入口在CE1的物理接口GE1/0/0抓取原始以太网帧VTEP出口在CE1的NVE隧道接口抓取封装后的VXLAN报文Underlay网络在CE1与CE3间的物理链路抓取传输中的UDP报文网关入口在CE3的NVE接口抓取解封装前的VXLAN报文网关路由后在CE3的Vbdif接口抓取路由后的原始IP包提示在eNSP中抓包需要为每个链路创建抓包文件建议为每个抓点命名时包含节点和方向信息如CE1_GE1-0-0_inbound.pcap2. VXLAN初始封装从原始帧到Overlay报文当VNI 10网络中的主机192.168.1.100向192.168.2.100发送ICMP请求时让我们观察数据包在CE1 VTEP上的变形记。原始以太网帧抓点1Frame 1: 74 bytes on wire (592 bits) Destination: 00:11:22:33:44:55 (CE1的MAC) Source: aa:bb:cc:dd:ee:ff (Host1的MAC) Type: IPv4 (0x0800) Internet Protocol Version 4, Src: 192.168.1.100, Dst: 192.168.2.100 Version: 4 Header Length: 20 bytes Total Length: 60 Protocol: ICMP (1) Internet Control Message Protocol Type: 8 (Echo (ping) request)封装后的VXLAN报文抓点2Frame 2: 154 bytes on wire (1232 bits) Outer Ethernet II Destination: 33:33:33:33:33:33 (CE3的MAC) Source: 11:11:11:11:11:11 (CE1的MAC) Outer IPv4 Source: 1.1.1.1 (CE1的VTEP IP) Destination: 3.3.3.3 (CE3的VTEP IP) Outer UDP Source Port: 48728 Destination Port: 4789 (VXLAN IANA端口) VXLAN Header Flags: 0x08 (I flag set) VNI: 10 Inner Ethernet II Destination: 00:11:22:33:44:55 (原始帧目标MAC) Source: aa:bb:cc:dd:ee:ff (原始帧源MAC) Type: IPv4 (0x0800) [原始IP和ICMP内容不变]关键字段解析字段层级关键字段说明外层以太网目标MACUnderlay网络的下一跳MAC外层IP源/目的IPVTEP的环回口地址UDP头目的端口固定4789标识VXLAN协议VXLAN头VNI虚拟网络标识决定报文归属哪个Overlay网络内层以太网源/目的MAC原始主机的MAC地址这个变形过程展示了VXLAN的核心价值将原始二层帧完整封装在UDP报文中通过三层网络传输实现二层over三层的隧道效果。3. 跨子网路由网关处的报文手术当封装后的报文到达集中式网关CE3时会发生一系列复杂的处理流程。通过对比抓点4和抓点5的报文我们可以清晰地看到这一过程。网关接收到的VXLAN报文抓点4 与抓点2的结构完全一致只是外层源IP变为1.1.1.1外层目的IP为3.3.3.3。网关处理后的IP报文抓点5Frame 3: 74 bytes on wire (592 bits) Ethernet II Destination: 66:77:88:99:aa:bb (Host2的MAC) Source: cc:dd:ee:ff:00:11 (CE3的Vbdif20 MAC) IPv4 Source: 192.168.1.100 (原始源IP保持不变) Destination: 192.168.2.100 (原始目的IP) ICMP Type: 8 (Echo request)网关处理的三个关键步骤解封装剥离外层UDP/IP头根据VNI10将内层帧送入BD 10路由查找检查目的IP 192.168.2.100匹配Vbdif20接口路由重新封装以Vbdif20的MAC为源Host2的MAC为目的重新构造以太网帧注意在跨子网通信时网关不会保留原始帧的MAC地址而是执行完整的L3路由过程。这与同子网通信有本质区别。4. 回程报文完整的通信闭环为了全面理解VXLAN三层互通我们需要观察从192.168.2.100返回192.168.1.100的ICMP响应报文。这个过程中最有趣的是网关如何维护双向流的状态。回程报文的特殊处理网关收到来自Host2的原始帧目的MAC为Vbdif20执行路由查找发现目的IP属于Vbdif10接口检查ARP表获取Host1的MAC地址使用VNI10重新进行VXLAN封装关键对比项方向源VNI目的VNI外层源IP外层目的IP去程10-1.1.1.13.3.3.3回程20103.3.3.31.1.1.1这个对比展示了VXLAN网关的智能之处它能根据流量方向自动选择正确的VNI进行封装实现双向通信的无缝衔接。5. 深度解析Wireshark中的高级过滤技巧为了更高效地分析VXLAN流量我们需要掌握一些Wireshark高级过滤技巧。这些技巧能帮助我们在复杂的抓包文件中快速定位目标报文。常用显示过滤器# 过滤所有VXLAN报文 vxlan # 过滤特定VNI的流量 vxlan.vni 10 # 过滤跨子网通信的ICMP流量 icmp (ip.src 192.168.1.100 || ip.dst 192.168.1.100) # 查看ARP流量 arp || (vxlan eth.type 0x0806)关键统计功能Conversations统计查看各VTEP间的流量分布IO Graphs分析流量随时间变化趋势Flow Graph可视化端到端通信流程典型问题诊断方法隧道建立问题检查VTEP间能否ping通确认UDP 4789端口开放封装问题验证VNI配置一致性确认头端复制列表正确路由问题检查Vbdif接口状态和路由表是否正确在实际项目中我经常遇到VXLAN隧道两端配置不一致导致通信失败的情况。这时候对比两端抓包文件中的VXLAN头字段往往能快速定位问题根源。