Choosing the Best NIC Teaming Load Balancing Policy in vSphere
Frequently, on my professional services engagements, my customer will ask me which NIC Teaming Load Balancing option is the best choice when configuring virtual switch port group in VMware vSphere. The following represents my typical answer:
Here are guidelines for choosing the best NIC Teaming Load Balancing policy:
- Based on IP hash – Use this only for Etherchannel (port channel). If the uplinks on a standard virtual switch or distributed virtual switch connect to an Etherchannel, then set the NIC Teaming Load Balancing to IP Hash for each virtual port group that uses these uplinks. This could also be used when implementing new features in vSphere 5.1 and 5.5 that allow LACP to be configured on the physical uplinks of a distributed virtual switch.
- Based on originating virtual port – This is the default. It has traditionally been the best setting for most virtual port groups, whenever Etherchannel is not involved. It is still the best setting in most cases when Ethernet is not involved for standard virtual port groups, Load Based Teaming (LBT) is often preferred in this case for distributed port groups
- Based on source MAC hash – This is seldom used, but is preferred whenever you want to control the placement of VMs based on their MAC address assignments.
- Based on physical NIC load – This is also called Load Based Teaming (LBT). It is a fairly new feature on dvSwitches and is typically preferred over port-based teaming, because the two perform identically, except that LBT includes intelligence to migrate virtual adapters from a busy uplink to a lesser active uplink. In many cases, this is preferred over using Etherchannel to provide a scalable NIC Team that does not require special settings on the physical switch, so it is easy to manage. However, Ethernet is still preferred in cases where the best resiliency, scalability, and performance is needed.
- Explicit Failover – Used in cases where the administrator prefers to manually balance the workload by placing some VMs and vmkernel virtual adapters on specific port groups that utilize a specific set of active ports. A common example, is where the Management Network and vMotion are the placed on a virtual switch by themselves – often the Management Network is set to use vmnic0 as Active and vmnic1 as Standby and vice versa for the vMotion port.