Once upon time there was ‘ping’.  A nice tool to check connectivity.  Had the ability to set the df (don’t fragment bit) and set size so you could check end to end MTU.

Then along came ‘vmkping’, which is pretty much the same syntax as ping but ESX specific

Then along came multiple TCP/IP network stacks in ESX in vSphere 6.

So did VMware simple add an argument to ping/vmkping to select the tcp/stack?  No you get a whole new command.  Let me introduce…..

‘esxcli network diag ping’

So to ping a host on the vMotion network using a dedicated vmotion tcp/ip stack and checking for jumbo frames the syntax is

 esxcli network diag ping --df --size=8972 --netstack=vmotion --host

Why isn’t it a simple change to the existing commands?

And why are the network stacks case sensitive?  in powercli and here ‘vmotion’ needs to be all lower case.  But in the UI the labels are mixed case. i.e ‘vMotion’, and if you use that in the above you get


esxcli network diag ping --df --size=8972 --netstack=vMotion --host
Got no data from process: LANG=en_US.UTF-8
/bin/ping ++netstack=vMotion -d -s 8972 -X

Come on VMware (or should it be vmware or vMware).  Be consistent. Operate on the principle of least surprise.  If you are case sensitive, make the same case used throughout.  I shouldn’t have to go guessing capitalization or looking for for new syntax or commands when existing ones are OK.  Every other vendor I know (juniper, cisco etc.) all just add the option to select the routing-interface or stack or source to initiate the ping requests from.




vmk interfaces, ping and netstacks

Leave a Reply

Your email address will not be published. Required fields are marked *