如何用vmkping命令调试vsphere环境中的VMkernel网络连接

背景

出于故障排除目的,可能需要调试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选项

如果在同一网络环境有多个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=

猜你喜欢

转载自blog.csdn.net/ximenjianxue/article/details/108447158
今日推荐