Create Switch Embedded Teaming using PowerShell

What is SET (Switch Embedded Teaming)?

Switch Embedded Teaming is the new and improved way to bond multiple network adapters together in Windows Server. Network adapter teaming on Windows Server can be done via two different ways in software. Commonly used is the traditional Load Balancing/Failover (LBFO) feature included with Windows Server. Windows Server 2016 introduced the new software based option SET (Switch Embedded Teaming). SET is the new advanced way used in Azure Stack HCI which also can be used in the normal version of Windows Server. For virtualization platforms it’s recommend to use SET to team multiple network adapters. SET integrates with the Hyper-V Virtual Switch.

SET has a couple of benefits over LBFO teaming:

  • Remote Direct Memory Access (RDMA).
  • SDN Quality of Service (QoS).
  • Virtual Machine Queues (VMQ).
  • Virtual Receive Side Scaling (RSS).
  • Transmit-side Checksum offloads (IPv4, IPv6, TCP).
  • Receive-side Checksum offloads (IPv4, IPv6, TCP).
  • Hyper-V Network Virtualization.
  • Datacenter bridging (DCB).

SET also has a couple of disadvantages:

  • Switch independent teaming mode only.
  • Only manageable via PowerShell or SCVMM so no GUI (shouldn’t be a problem for you experienced sysadmins).
  • SET is available on Windows Server 2016 or above.

Requirements

Like stated above you need atleast Windows Server 2016 to be able to use SET. Also all network adapters need to be identical. This can be check with the Get-NetAdapterAdvancedProperty PowerShell command.

The results should be similar to this table:

NameInterface descriptionLink speed
NIC1Network Adapter #125 Gbps
NIC2Network Adapter #225 Gbps
NIC3Network Adapter #325 Gbps
NIC4Network Adapter #425 Gbps
Network adapters

Creating a Switch Embedded Teaming vSwitch

First start with opening PowerShell as Admin on your Windows Server with the Hyper-V role installed. The SET is created with the New-VMSwitch command and the -EnableEmbeddedTeaming parameter.

For example:

# First list all network adapters. We need the NetAdapterName later
Get-NetAdapter

# Now we create the Hyper-V Virtual Switch with Switch Embedded Teaming Enabled
New-VMSwitch -Name "vSwitch" -NetAdapterName "NIC1","NIC2" -EnableEmbeddedTeaming $true

We now have a Hyper-V Virtual Switch named “vSwitch” with “NIC1” and “NIC2” created with Switch Embedded Teaming enabled. This means “NIC1” and “NIC2” are teamed with the Switch independent teaming option. It’s now possible to add Hyper-V Virtual Machines to this vSwitch. We can also add a network adapter and IP address on the Hyper-V host to the SET vSwitch via the Add-VMNetworkAdapter command and the -ManagementOS parameter.

For example:

# Add the new virtual network adapter and bind it to the management operating systems
Add-VMNetworkAdapter -ManagementOS -Name "LAN" -SwitchName "vSwitch"

# Add an IP address to the newly created virtual network adapter.
New-NetIPaddress -InterfaceAlias "vEthernet (LAN)" -IPAddress x.x.x.x -PrefixLenght 24 -DefaultGateway x.x.x.x

# Add a DNS servers to the newly created virtual network adapter.
Set-DNSClientServerAddress -InterfaceAlias "vEthernet (LAN)" -ServerAddresses x.x.x.x

The Hyper-V host system now has a virtual network adapter with an IP address, default gateway and DNS servers attached to the vSwitch with Switch Embedded Teaming enabled.

Managing a Switch Embedded Teaming vSwitch

A Switch Embedded Teaming vSwitch can be managed via PowerShell with the Set-VMSwitchTeam command.

For example change the network adapters active in the vSwitch:

# Change the active network adapters in the Switch Embedded Teaming vSwitch to NIC3 and NIC4
Set-VMSwitchTeam -Name "vSwitch" -NetAdapterName "NIC3","NIC4"

Conclusion

The information in this blog post should get you started with creating and managing your SET vSwitch to improve reliabilty and performance of your Hyper-V environment. If you have any questions or tips comment down below!

Leave a Reply

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