Windows Server 2012 R2 – NIC Teaming options

With Windows Server 2012, The new age of Windows teaming evolved. Very soon it was widely adapted – especially teaming along with Hyper-V. The key advantage which I see on using Windows Server teaming is the ease of configuration and the different teaming modes. And Switch Independent along with Hyper-V port was the recommended teaming option for Hyper-V.

All went well. Now we got Windows Server 2012 R2. As usual, I was playing around with Windows Server 2012 R2 and Hyper-V in the last few weeks. And the servers which I created was having Windows teaming – Switch Independent – HyperV Port. But later, I noticed one new load balancing algorithm named “Dynamic”. I couldn’t see much details around apart from few MVPs had touched on the overview. Off late, I came across Microsoft guide. Just a snip from this guide.

 

 Algorithms for load distribution

Outbound traffic can be distributed among the available links in many ways. One rule that guides any distribution algorithm is to try to keep all packets associated with a single flow (TCP-stream) on a single network adapter. This rule minimizes performance degradation caused by reassembling out-of-order TCP segments.

NIC teaming in Windows Server 2012 R2 supports the following traffic load distribution algorithms:

  • Hyper-V switch port. Since VMs have independent MAC addresses, the VM’s MAC address or the port it’s connected to on the Hyper-V switch can be the basis for dividing traffic. There is an advantage in using this scheme in virtualization. Because the adjacent switch always sees a particular MAC address on one and only one connected port, the switch will distribute the ingress load (the traffic from the switch to the host) on multiple links based on the destination MAC (VM MAC) address. This is particularly useful when Virtual Machine Queues (VMQs) are used as a queue can be placed on the specific NIC where the traffic is expected to arrive. However, if the host has only a few VMs, this mode may not be granular enough to get a well-balanced distribution. This mode will also always limit a single VM (i.e., the traffic from a single switch port) to the bandwidth available on a single interface. Windows Server 2012 R2 uses the Hyper-V Switch Port as the identifier rather than the source MAC address as, in some instances, a VM may be using more than one MAC address on a switch port.
  • Address Hashing. This algorithm creates a hash based on address components of the packet and then assigns packets that have that hash value to one of the available adapters. Usually this mechanism alone is sufficient to create a reasonable balance across the available adapters.

The components that can be specified, using PowerShell, as inputs to the hashing function include the following:

  •   Source and destination TCP ports and source and destination IP addresses (this is used by the user interface when “Address Hash” is selected)
  • Source and destination IP addresses only
  • Source and destination MAC addresses only

The TCP ports hash creates the most granular distribution of traffic streams resulting in smaller streams that can be independently moved between members. However, it cannot be used for traffic that is not TCP or UDP-based or where the TCP and UDP ports are hidden from the stack, such as IPsec-protected traffic. In these cases, the hash automatically falls back to the IP address hash or, if the traffic is not IP traffic, to the MAC address hash.

  • Dynamic. This algorithm takes the best aspects of each of the other two modes and combines them into a single mode.
    • Outbound loads are distributed based on a hash of the TCP Ports and IP addresses.  Dynamic mode also rebalances loads in real time so that a given outbound flow may move back and forth between team members.
    • Inbound loads are distributed as though the Hyper-V port mode was in use.   See Section 3.4 for more details.

The outbound loads in this mode are dynamically balanced based on the concept of flowlets.  Just as human speech has natural breaks at the ends of words and sentences, TCP flows (TCP communication streams) also have naturally occurring breaks.  The portion of a TCP flow between two such breaks is referred to as a flowlet.  When the dynamic mode algorithm detects that a flowlet boundary has been encountered, i.e., a break of sufficient length has occurred in the TCP flow, the algorithm will opportunistically rebalance the flow to another team member if appropriate.  The algorithm may also periodically rebalance flows that do not contain any flowlets if circumstances require it.    As a result the affinity between TCP flow and team member can change at any time as the dynamic balancing algorithm works to balance the workload of the team members.

In short, here is the best combination to be used in a real world scenario.

Switch Independent configuration / Address Hash distribution

This mode is best used for:

  • Active/Standby mode teams with just 2 team members; and
  • Teaming in a VM.

Switch Independent configuration / Hyper-V Port distribution

Will be best for Windows Server 2012 HyperV servers

Switch Independent configuration / Hyper-V Port distribution

This mode is best used for teaming in both native and Hyper-V environments- Obviously Windows Server 2012 R2 HyperV Infrastructure.

Exceptions

  • Teaming is being performed in a VM,
  • Switch dependent teaming (e.g., LACP) is required by policy, or
  • Operation of a two-member Active/Standby team is required by policy.

 

For anyone who is on HyperV implementation with Window Server 202 R2, Its worth reading this entire guide.

All credits to the author of this guide.

 

Comments

comments