背景
出于故障排除目的,可能需要调试vsphere环境中ESX主机之间的VMkernel网络连接,确保网络通信状态。本文主要说明了如何利用vmkping命令来完成该任务。
语法及使用
vmkping命令会以本地的VMkernel端口作为ping报文的发起源;
eg:vmkping -s 8972 -d x.x.x.x //ipv6地址需加-6参数,后跟v6地址
参数说明:
-------------------------------------------------------------------------------------------------------
-4 使用IPv4 ping测试 (不跟参数默认采用该选项t)
-6 使用IPv6 ping测试
-c <count> 指定 packet 发送的个数
-d 设置DF(不分段)位(IPv4)或禁用分段(IPv6)
-D vmkernel TCP堆栈调试模式
-i <interval> 指定ping间隔 (secs秒)
-I <interface> 传出接口-适用于IPv6范围或IPv4绕过路由查找
-N <next_hop> 指定下一跳ip IP*_NEXTHOP - bypasses routing lookup
for IPv4, 与-I 选项一并使用
-s <size> 指定发送icmp报的数据包字节数;缺省值为56,将其添加到8字节ICMP报头时将转换为64字节的ICMP帧。 (注意:这些大小不包括IP标头)
-t <ttl> 设置IPv4生存时间或IPv6跃点限制
-v verbose
-W <timeout> 指定未收到响应的情况下超时设置等待时长(秒)
-X 将结果输出为esxcli框架的XML格式
-S 指定网络堆栈实例名称。如未指定,则使用默认的netstack实例。
-------------------------------------------------------------------------------------------------------
==注意: == vmkernel TCP debug模式下, vmkping 遍历VSI和pings各种配置的地址。任何大于1500 MTU的数据包都是巨型帧。 ESXi/ESX 4.x, ESXi 5.x and 6.0已完全支持最大9000字节的帧。可以通过ESX主机上的命令行界面为每个vSwitch或VMkernel接口启用巨型帧,为了允许ESX主机将更大的帧发送到物理网络上,网络必须端到端支持巨型帧。多在iSCSI网络场景配置巨型帧,可以使用用户界面(UI)配置vSphere 5.1、vSphere 5.5和vSphere 6.0中所有iSCSI适配器的巨型帧。适用于软件iSCSI、从属硬件iSCSI和独立硬件iSCSI适配器。要在vSphere Web Client中为软件和从属硬件iSCSI适配器启用巨型帧,请更改MTU参数的默认值:
上述骤为该标准交换机上的所有物理NIC设置了MTU。 MTU值应设置为连接到标准交换机的所有NIC中最大的MTU大小。
eg2:vmkping -d -s 8972 x.x.x.x //巨型帧ping测试,结合-d和-s选项
注意ICMP报头的开销为28字节,因此MTU比通过上述方法建立的数字大28个字节.因此,要检查9000的MTU,您实际上需要将ping数据包大小设置为9000-28 = 8972.
如果在同一网络环境有多个vmkernel端口(例如iSCSI的心跳vmkernel端口),则该网络环境所有主机上的vmkernel端口都需要配置巨型帧(MTU:9000)。如果同一网络上还有其他vmkernel端口,它们的MTU值较低,则vmkping命令带有-s 8972 选项执行时将会失败,可使用-d选项在IPv4数据包上设置DF(不分段)位,来完成此类网络环境中的ping测试。
比如测试MTU=1500的网络,执行:
vmkping -I vmkX x.x.x.x -d -s 1472 //
esxcfg-route -l //查看ESXi主机的路由及转发表
esxcfg-nics -l //验证你当前SSH会话中的MTU大小
esxcfg-vmknic -l //查看网卡配置信息
esxcfg-vswitch -A vmkernel_port_group_namevSwitch //sw上创建端口组,eg:esxcfg-vswitch -A iSCSI vSwitch2
esxcfg-vswitch -m 9000 vSwitch2 //如Switch仅包含iSCSI端口组,则可将vSwitch的MTU指定为9000
esxcli network ip interface set -m 9000 -i vmk_interface //ESXi 5.x and 6.0上创建巨型帧端口
esxcli network ip interface list //查看当前端口是否支持巨型帧且已激活
注意: 如果按服务器的主机名ping时没有看到响应,请启动对IP地址的ping。通过对IP地址执行ping操作,可以确定问题是否是主机名解析问题引起的。如果要测试到另一台服务器上另一VMkernel端口的连接性,请记住使用VMkernel端口IP地址,因为服务器的主机名通常解析为远程服务器上的服务控制台地址。
vXlan 中vmkernel间网络测试
在vSphere 5.5中,VXLAN具有其自己的vmkernel网络堆栈,因此,必须使用以下命令从ESXi控制台完成对传输VLAN上两个不同vmknic之间的ping连接测试:
vmkping ++netstack=vxlan -d -s
esxcli network diag ping --netstack=vxlan --host --df --size=
————————————————
转自:https://blog.csdn.net/ximenjianxue/article/details/108447158