客户现场的使用场景是多套HPE C7000刀箱和其他HPE 机架式服务器混合组成VMware资源池,并启用了VMware的DVS(分布式交换机),大致拓扑如下:下图只画了1套C7000箱和1台机架式服务器,但客户现场刀箱和机架服务器很多。请注意,VMware DVS分布式交换机跨越了刀片服务器和外部的机架式服务器,虚拟机可以在刀片服务器和机架式服务器无缝迁移。
客户反馈的问题:
偶尔发现在刀片里的VM 与机架式服务器里的VM互相无法ping 通,而刀箱内部的任何VM之间都从来没有过这种现象。
当发生这个问题时,客户的临时解决办法就是迁移虚拟机到刀箱外部的机架式服务器即可解决ping通问题。但是不久还会出现刀片里的VM与机架服务器里的VM无法通信问题。
升级过VMware原厂,VMware给出的答复是H3C的C7000 VC 互联模块丢包。建议C7000 VC模块抓包分析,报文进入VC后是否丢失
NA
如果按照客户描述,下面红色线是两个VM通信的链路:中途包括上联TOR和汇聚层核心网络设备
,最后是刀片VC上联端口、刀片VC下联端口、刀片网卡、VMware分布式交换机。
【客户的诉求】
通过抓包,证明刀片VC收到机架式服务器回应的arp报文后正常的通过下联端口转发给刀片服务器。因为他们怀疑VC收到arp回应的报文后没有正常转发给刀片导致。
【抓包实现方法】
当问题发生时,同时在3个设备上抓包: 刀箱的上联TOR、刀箱VC、VMware分布式交换机
刀片VC和VMware DVS交换机抓包方法:
刀片VC可以把下联刀片服务器的某个port流量镜像到同侧VC上联端口,比如下图,把刀片bay1对应的VC下联端口d9 镜像到上联端口X3,然后VC的上联x3口直接连接抓包设备。注意,某个VC的上联只能mirror自己的下联某个刀片端口。因此需要2个抓包设备分别抓两侧的VC模块。
除了VC抓包外,虚拟机也可以镜像VMware 分布式交换机下联端口(VM)的流量到指定的抓包虚拟机端口,这样形成了2个层次的抓包,分别是VC层面和VMware 分布式交换机下联端口层面
1、 VCM里ethernet 菜单下面的“port monitoring” 功能就是理由VC上联端口镜像下联刀片网口流量的配置页面:
”
注意: 启用VC的mirror port功能后,VC的分析端口状态必须是 OK, 如果不是OK,需要检查vc的SFP模块是否兼容,与对端抓包设备网口是否协商正常。
上面VC侧的mirror port功能启用成功后,开始在VC1 x3口对端的抓包服务器开启tcpdump 抓包:
比如,连接VC1 x3口的抓包设备为linux 系统下的ens224f0端口开启tcpdump:
开始监听:
当VM1 去ping VM2的时候, 经过VC1的流量将被VC1的X3 镜像出来并被tcpdump抓取到报文。
另外,除了VC可以抓取刀片网口流量外, VMware的分布式交换机也能抓取到报文:
需要开启VCENTER里的分布式交换机的 “port monitoring” 功能:
然后专门部署1个VM 抓取DVS交换机内部流量:
比如: 要把linux1在DVS里的流量镜像到虚拟机linux-2, 在DVS的port mirroring 页面配置号source (被监控VM) 和Destination VM (抓包VM )即可:
综上: 通过同时监控VC流量和VMware DVS 流量,可以判断故障发生时arp报文在哪个层面上没有正常转发或接收。