How to Configure Teaming Network Adapters on Windows Server 2022
NIC Teaming combines multiple physical network adapters into a single logical adapter, providing increased bandwidth and automatic failover when an individual adapter or switch port fails. Windows Server 2022 supports two fundamentally different teaming technologies: Load Balancing and Failover (LBFO), the native Windows NIC Teaming feature, and Switch-Embedded Teaming (SET), which is exclusively for Hyper-V virtual switch environments. This guide covers both approaches in detail, including team creation, teaming modes, load distribution algorithms, and RDMA configuration for high-performance workloads.
LBFO vs Switch-Embedded Teaming (SET)
LBFO (Load Balancing and Failover) is the traditional NIC Teaming implementation available since Windows Server 2012. It creates a team at the OS level that appears as a single virtual adapter to the operating system and all higher-level components. LBFO supports teaming for any workload—including the management OS, file sharing, iSCSI, and Hyper-V virtual switch uplinks. It supports Switch Independent, LACP (IEEE 802.3ad), and Static (Generic) teaming modes. LBFO is managed via the NetLbfo PowerShell module.
Switch-Embedded Teaming (SET) is a newer alternative specifically designed for Hyper-V hosts running Windows Server 2016 and later. SET integrates teaming directly into the Hyper-V virtual switch, eliminating the need for a separate team adapter. SET supports RDMA on team members, which is not possible with LBFO-based teams. SET only supports Switch Independent mode and a subset of load distribution algorithms. If you are building a Hyper-V host and need RDMA for Storage Spaces Direct (S2D) or SMB Direct, you must use SET.
The key rule: use LBFO for non-Hyper-V servers or when you need LACP/Static teaming mode. Use SET for Hyper-V hosts where RDMA is required.
Creating an LBFO Team with New-NetLbfoTeam
First, identify the available network adapters on your server:
Get-NetAdapter | Select-Object Name, InterfaceDescription, Status, LinkSpeed, MacAddress
Create a basic team with Switch Independent mode and Dynamic load distribution (the recommended defaults for most environments):
New-NetLbfoTeam -Name "ServerTeam" `
-TeamMembers "Ethernet1", "Ethernet2" `
-TeamingMode SwitchIndependent `
-LoadBalancingAlgorithm Dynamic `
-Confirm:$false
Verify the team was created and is in the Up state:
Get-NetLbfoTeam -Name "ServerTeam" | Format-List *
After creation, you can check the team adapter in the network adapter list:
Get-NetAdapter | Where-Object {$_.InterfaceDescription -like "*team*"}
NIC Teaming Modes
The teaming mode defines how the team interacts with the upstream network switch or switches:
Switch Independent is the most common mode. The physical adapters can be connected to different switches—the switch has no knowledge of the team. The server manages all load balancing and failover internally. This is the safest choice because it tolerates switch failures.
LACP (IEEE 802.3ad), also called Dynamic in some interfaces, requires the upstream switch to support and be configured for LACP. Both the server and the switch negotiate the team using the Link Aggregation Control Protocol. LACP provides autonegotiation of team membership and can dynamically add or remove ports. All team members must be connected to the same switch (or a stack/virtual chassis that appears as one switch).
Static (Generic) teaming requires manual configuration on both the server and the switch. No negotiation protocol is used. The switch must be configured with a static EtherChannel or port trunk matching the server’s team. This mode requires careful coordination with network administrators.
# Create a team with LACP mode (requires switch support)
New-NetLbfoTeam -Name "LACPTeam" `
-TeamMembers "Ethernet1", "Ethernet2" `
-TeamingMode LACP `
-LoadBalancingAlgorithm HyperVPort `
-Confirm:$false
# Create a team with Static mode
New-NetLbfoTeam -Name "StaticTeam" `
-TeamMembers "Ethernet3", "Ethernet4" `
-TeamingMode Static `
-LoadBalancingAlgorithm Dynamic `
-Confirm:$false
Load Distribution Algorithms
The load balancing algorithm determines how outbound traffic is distributed across team members:
Dynamic (recommended for most workloads) distributes flows dynamically based on current utilisation. It adjusts distribution in real time to prevent any single adapter from becoming a bottleneck. Available in Windows Server 2012 R2 and later.
HyperVPort distributes traffic based on the Hyper-V virtual machine switch port. Each VM is assigned to one team member, and all traffic from that VM goes through that member. This is recommended for Hyper-V hosts using LBFO because it provides consistent bandwidth per VM and prevents reordering of packets within a single VM’s flow.
TransportPorts (Address Hash on some versions) hashes the combination of source/destination IP addresses and TCP/UDP port numbers to assign flows to team members. This provides reasonable distribution for servers with many concurrent connections to different destinations.
IPAddresses hashes only source and destination IP addresses. Simpler than TransportPorts but can result in poor distribution if traffic is dominated by a few IP pairs.
# Change load balancing algorithm on an existing team
Set-NetLbfoTeam -Name "ServerTeam" -LoadBalancingAlgorithm Dynamic
# Verify the change
Get-NetLbfoTeam -Name "ServerTeam" | Select-Object Name, TeamingMode, LoadBalancingAlgorithm
Adding and Removing Team Members
Add a new adapter to an existing team with Add-NetLbfoTeamMember:
# Add a third adapter to the team
Add-NetLbfoTeamMember -Name "Ethernet3" -Team "ServerTeam" -Confirm:$false
# Verify team members
Get-NetLbfoTeamMember -Team "ServerTeam" |
Select-Object Name, Team, OperationalStatus, TransmitLinkSpeed
Set a specific team member as the standby (active backup) adapter rather than having it participate in load distribution:
# Set Ethernet3 as standby only (won't carry traffic unless others fail)
Set-NetLbfoTeamMember -Name "Ethernet3" -Team "ServerTeam" -AdministrativeMode Standby
# Restore Ethernet3 to active participation
Set-NetLbfoTeamMember -Name "Ethernet3" -Team "ServerTeam" -AdministrativeMode Active
Remove a team member:
Remove-NetLbfoTeamMember -Name "Ethernet3" -Team "ServerTeam" -Confirm:$false
Monitoring Team Status
Monitor the overall team health and individual member status:
# Get overall team status
Get-NetLbfoTeam | Select-Object Name, TeamingMode, LoadBalancingAlgorithm, Status
# Get detailed member status
Get-NetLbfoTeamMember |
Select-Object Name, Team, OperationalStatus, AdministrativeMode, TransmitLinkSpeed
# Get team NIC (virtual adapter) status and IP information
Get-NetLbfoTeamNic | Select-Object Name, Team, VlanID, Primary
# Check all team events
Get-WinEvent -LogName "Microsoft-Windows-NdisImPlatform/Operational" -MaxEvents 30 |
Select-Object TimeCreated, Id, Message
You can also monitor the team’s virtual adapter statistics:
Get-NetAdapterStatistics -Name "ServerTeam" |
Select-Object Name, ReceivedBytes, SentBytes, ReceivedUnicastPackets, SentUnicastPackets
Switch-Embedded Teaming (SET) for Hyper-V Hosts
SET integrates the teaming function into the Hyper-V Virtual Switch. When you create a virtual switch and specify multiple physical adapters as uplinks, SET automatically handles the teaming. The management OS accesses the network through a virtual management adapter (vNIC) attached to the virtual switch.
Create a SET-enabled Hyper-V virtual switch using New-VMSwitch:
# Create an External virtual switch with SET teaming across two physical adapters
New-VMSwitch -Name "SETSwitch" `
-NetAdapterName "Ethernet1", "Ethernet2" `
-EnableEmbeddedTeaming $true `
-AllowManagementOS $true
# Verify the switch and its team status
Get-VMSwitch -Name "SETSwitch" | Select-Object Name, EmbeddedTeamingEnabled, NetAdapterInterfaceDescriptions
After creating the SET switch, configure the management vNIC:
# Add a management vNIC for the host OS
Add-VMNetworkAdapter -ManagementOS -Name "Management" -SwitchName "SETSwitch"
# Add a storage vNIC for SMB traffic
Add-VMNetworkAdapter -ManagementOS -Name "SMB01" -SwitchName "SETSwitch"
Add-VMNetworkAdapter -ManagementOS -Name "SMB02" -SwitchName "SETSwitch"
# Assign IP addresses to vNICs
New-NetIPAddress -InterfaceAlias "vEthernet (Management)" -IPAddress 192.168.1.10 -PrefixLength 24
New-NetIPAddress -InterfaceAlias "vEthernet (SMB01)" -IPAddress 10.10.1.11 -PrefixLength 24
New-NetIPAddress -InterfaceAlias "vEthernet (SMB02)" -IPAddress 10.10.1.12 -PrefixLength 24
RDMA with SET (RoCE and iWARP)
RDMA (Remote Direct Memory Access) allows network data transfers to bypass the operating system CPU, dramatically reducing latency and CPU overhead for storage traffic. Windows Server 2022 supports RDMA over two physical transport protocols: RoCE (RDMA over Converged Ethernet, typically using DCB/Priority Flow Control) and iWARP (Internet Wide Area RDMA Protocol, which runs over standard TCP/IP).
RDMA through SMB (SMB Direct) requires that the vNIC on the management OS has RDMA enabled. With SET, you can enable RDMA on individual vNICs and pin them to specific physical adapters for predictable performance:
# Enable RDMA on SMB vNICs (requires RDMA-capable physical adapters)
Enable-NetAdapterRdma -Name "vEthernet (SMB01)"
Enable-NetAdapterRdma -Name "vEthernet (SMB02)"
# Verify RDMA is enabled on the vNICs
Get-NetAdapterRdma | Select-Object Name, Enabled, Operational
# Pin SMB01 vNIC to Ethernet1 physical adapter (for traffic pinning)
Set-VMNetworkAdapterTeamMapping -ManagementOS `
-VMNetworkAdapterName "SMB01" `
-PhysicalNetAdapterName "Ethernet1"
Set-VMNetworkAdapterTeamMapping -ManagementOS `
-VMNetworkAdapterName "SMB02" `
-PhysicalNetAdapterName "Ethernet2"
# Verify the team mapping
Get-VMNetworkAdapterTeamMapping -ManagementOS
Verify that SMB Direct (RDMA for SMB) is operational:
Get-SmbClientNetworkInterface | Select-Object InterfaceIndex, FriendlyName, RdmaCapable, Speed
Get-SmbServerNetworkInterface | Select-Object InterfaceIndex, FriendlyName, RdmaCapable
Removing an LBFO Team
Before removing a team, ensure no services or VMs depend on the team adapter. Any static IP addresses assigned to the team adapter should be moved to a physical adapter first:
# List team details before removal
Get-NetLbfoTeam -Name "ServerTeam"
# Remove the team (releases physical adapters back to individual use)
Remove-NetLbfoTeam -Name "ServerTeam" -Confirm:$false
# Verify the physical adapters are back to standalone operation
Get-NetAdapter | Where-Object {$_.Name -like "Ethernet*"} |
Select-Object Name, Status, LinkSpeed
Summary
NIC Teaming on Windows Server 2022 offers two distinct paths: LBFO for general-purpose teaming with support for LACP and static modes, and SET for Hyper-V hosts requiring RDMA and storage acceleration. LBFO with Dynamic load balancing is the right choice for file servers, web servers, and most application servers. SET is essential for Hyper-V hosts running Storage Spaces Direct or any workload requiring SMB Direct over RDMA. Understanding the teaming modes, load distribution algorithms, and standby member configuration allows you to build a network adapter infrastructure that is both resilient and capable of delivering the throughput your workloads demand.