Flow Control Best Practice for a VMware vSphere ESXi and iSCSI SAN Environment

Setup the storage network with each end point (ESXi hosts and iSCSI storage modules) with flow control send (tx) only, and the data switches in between with flow control receive (rx) only.

ESXi hosts have flow control enabled by default (or more accurately - the vmnics are set to autonegotiate.) If you want to check or change the flow control settings on an ESXi host, use the ethtool via the command line as below:

To check the flow control settings (pause parameters) for a vmnic:

ethtool -a VMNICName

To disable auto-negotiation of flow control:

ethtool --pause VMNICName autoneg off

To enable flow control for send only

ethtool --pause VMNICName tx on rx off

Finally, to the save the configuration change on the ESXi host


The example output below is from a vSphere 5 ESXi host

Example Output (text):

~ # ethtool -a vmnic6
Pause parameters for vmnic6:
Autonegotiate: on
RX: off
TX: off
~ # ethtool --pause vmnic6 autoneg off
~ # ethtool --pause vmnic6 tx on rx off
rx unmodified, ignoring
~ # ethtool -a vmnic6
Pause parameters for vmnic6:
Autonegotiate: off
RX: off
TX: on
~ # /sbin/auto-backup.sh
Binary files /etc/vmware/dvsdata.db and /tmp/auto-backup.3629787//etc/vmware/dvsdata.db differ
Saving current state in /bootbank
Clock updated.
Time: 13:24:48 Date: 12/08/2011 UTC
~ #

Example Output (screenshot):
Note that the vmnic must be patched into a live switch port before it will display any of the pause parameters as being on.