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.
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:
|Name||Interface description||Link speed|
|NIC1||Network Adapter #1||25 Gbps|
|NIC2||Network Adapter #2||25 Gbps|
|NIC3||Network Adapter #3||25 Gbps|
|NIC4||Network Adapter #4||25 Gbps|
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.
# 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.
# 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"
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!