抓包实战:拆解Vxlan静态集中式网关的报文,看懂MAC-in-UDP封装全过程

发布时间:2026/5/26 2:48:08

抓包实战:拆解Vxlan静态集中式网关的报文,看懂MAC-in-UDP封装全过程 VXLAN报文深度解析从抓包实战看MAC-in-UDP封装原理当两个不同网段的主机通过VXLAN隧道通信时数据包会经历怎样的变形我们以一次简单的跨网段ping为例在ENSP环境中抓取VTEP之间的链路报文逐层拆解这个套娃式的封装过程。你会发现看似普通的ICMP请求背后隐藏着三层网络与二层隧道的精妙配合。1. 实验环境搭建与抓包准备在开始解剖VXLAN报文前需要构建一个典型的静态集中式网关实验环境。我们使用三台设备组成基础拓扑VTEP1作为三层网关配置VBDIF接口处理跨网段路由VTEP2连接VLAN 10的主机PC1192.168.10.1/24VTEP3连接VLAN 20的主机PC2192.168.20.1/24关键配置要点包括# VTEP1上的VXLAN网关配置示例 interface Vbdif10 ip address 192.168.10.254 255.255.255.0 interface Vbdif20 ip address 192.168.20.254 255.255.255.0在物理链路上如VTEP1-VTEP2之间部署Wireshark抓包工具过滤条件设置为udp.port 4789。此时从PC1(192.168.10.1)执行ping 192.168.20.1会触发完整的通信流程PC1检查目标IP是否同网段 → 发现跨网段 → 发送ARP请求网关MAC网关VTEP1回应ARP → PC1封装ICMP请求发给网关VTEP1查询路由表 → 通过VXLAN隧道转发给VTEP3VTEP3解封装后发给PC2 → 反向路径同理提示在真实抓包时建议先清除ARP缓存arp -d确保捕获到完整的ARP交互过程。2. ARP请求的VXLAN封装剖析当PC1首次访问跨网段目标时产生的ARP请求报文会经历最典型的封装变形。我们对比隧道入口和出口处的抓包结果封装层原始ARP报文PC1发出VXLAN封装后VTEP间传输外层MACPC1的MAC → 广播MACVTEP2接口MAC → 下一跳MAC外层IP-VTEP2的隧道IP → VTEP1的隧道IPUDP头-源端口随机(通常32768)目的端口4789VXLAN头-8字节头部包含24位VNI本例为10内层帧原始ARP请求以太类型0x0806与原始ARP完全一致关键转换过程发生在VTEP2上收到PC1的广播ARP后识别其所属的BDBridge Domain查询该BD映射的VNIVXLAN Network Identifier根据配置的peer-list确定远端VTEP地址1.1.1.1进行MAC-in-UDP封装外层以太头使用物理接口MAC外层IP头源为本地NVE地址目的为对端NVE地址UDP头固定目的端口4789源端口通过哈希计算VXLAN头设置标志位和24位VNI# 简化的封装逻辑伪代码 def vxlan_encap(original_frame, vni, local_vtep, remote_vtep): outer_eth Ether(srclocal_phy_mac, dstnext_hop_mac) outer_ip IP(srclocal_vtep, dstremote_vtep) udp UDP(sportrandom_hash(), dport4789) vxlan_header VXLAN(flags0x08, vnivni) return outer_eth / outer_ip / udp / vxlan_header / original_frame注意静态配置下VTEP之间的映射关系是手动指定的这与BGP EVPN等动态方式不同。3. ICMP报文的双层地址转换当ARP过程完成后真正的ICMP请求会展现更复杂的地址转换。我们以PC1 ping PC2的请求报文为例隧道外侧观察VTEP1-VTEP3链路外层以太头源MAC为VTEP1出接口MAC目的MAC为VTEP3的下一跳MAC外层IP头源1.1.1.1VTEP1的NVE地址目的3.3.3.3VTEP3的NVE地址UDP头源端口为动态哈希值目的端口仍为4789VXLAN头VNI变为20对应PC2所在的BD隧道内侧观察解封装后内层以太头源MACPC1的MAC目的MACVTEP1的VBDIF10 MAC内层IP头源IP192.168.10.1目的IP192.168.20.1ICMP数据与原始报文完全一致这个过程中存在两个关键转换点入口VTEPVTEP1收到PC1发往网关的ICMP请求路由查询发现下一跳需要通过VNI 20的隧道到达保留原始帧不变添加VXLAN头部出口VTEPVTEP3剥离外层封装根据VNI将帧送入对应的BD通过关联的接口转发给PC2# 在VTEP上验证转发表的命令示例 display vxlan vni 20 verbose display bridge-domain 204. 故障排查实战技巧当VXLAN通信出现问题时通过系统化的抓包分析可以快速定位故障层。以下是典型的排查路径场景1跨网段ping不通检查物理链路是否正常TCP/IP三层可达在VTEP间执行ping 3.3.3.3确认VXLAN隧道状态display vxlan tunnel检查BD与VNI的映射关系display bridge-domain display vxlan vni验证网关ARP学习display arp all场景2单向通信对比双向路径的封装参数外层目的IP是否正确VNI是否匹配对端配置UDP端口是否为4789检查ACL或安全策略display acl all验证路由对称性display ip routing-table常见封装问题对照表现象可能原因验证方法外层目的IP错误静态peer配置错误display current-configurationVNI不匹配BD与VNI映射错误display vxlan vniUDP端口非4789设备兼容性问题抓包验证内层目的MAC错误网关ARP异常display arp在实际项目中我曾遇到一个典型案例某次升级后跨设备通信时断时续。抓包发现部分报文的外层源IP变成了物理接口地址而非NVE地址最终确认是设备BUG导致封装异常。这类问题只有通过逐层解析报文才能准确定位。

相关新闻