What Is SMB Multichannel?

SMB Multichannel is a feature of the SMB 3.x protocol that allows a single SMB session to use multiple simultaneous network connections between a client and server. In traditional SMB, a single TCP connection limits throughput to one network path, regardless of how many network adapters or how much bandwidth is available. SMB Multichannel removes this constraint by aggregating multiple connections, giving you fault tolerance and increased throughput without complex bonding configurations.

Multichannel provides three key benefits: increased bandwidth by combining multiple connections across multiple NICs or multiple RSS queues on a single NIC; automatic failover so that if one NIC or path fails, the SMB session continues transparently on surviving connections; and reduced CPU load through Receive Side Scaling (RSS) spreading interrupt processing across multiple CPU cores.

SMB Multichannel is enabled by default on Windows Server 2022 and Windows 10/11 clients. You do not need to install any feature or flip a configuration toggle to enable it — it negotiates automatically when both endpoints support it and multiple usable network paths exist between them.

NIC Requirements for SMB Multichannel

SMB Multichannel activates based on the type and quantity of network adapters detected. There are three hardware scenarios that trigger Multichannel:

Scenario 1 — Multiple NICs: The client or server has two or more network interface cards with connectivity to the other endpoint. SMB opens one connection per available NIC, giving you bandwidth aggregation equal to the sum of all NIC speeds (assuming routing and switches support it).

Scenario 2 — RSS-capable NICs: A single NIC that supports RSS (Receive Side Scaling) allows SMB Multichannel to open multiple TCP connections over a single physical NIC, spreading the load across CPU cores. This improves throughput even with a single physical link by parallelizing the network stack.

Scenario 3 — RDMA-capable NICs (SMB Direct): NICs supporting RDMA (Remote Direct Memory Access) — such as Mellanox ConnectX (RoCE), iWARP NICs, or InfiniBand — allow SMB Direct, which is SMB over RDMA. When Multichannel is combined with SMB Direct, connections bypass the TCP stack entirely, delivering microsecond-level latency and maximum throughput.

Check whether your NICs support RSS and RDMA:

# Check RSS capability per adapter
Get-NetAdapterRss | Select-Object Name, Enabled, NumberOfReceiveQueues

# Check RDMA capability
Get-NetAdapterRdma | Select-Object Name, Enabled

# Check all adapter hardware info
Get-NetAdapter | Select-Object Name, InterfaceDescription, Speed, Status

Verifying SMB Multichannel Is Active

SMB Multichannel status is reported both at the server configuration level and per-connection level. First check that Multichannel is enabled on the server and client:

# On the SMB server
Get-SmbServerConfiguration | Select-Object EnableMultiChannel

# On the SMB client
Get-SmbClientConfiguration | Select-Object EnableMultiChannel

Both should return True. If either returns False, Multichannel was manually disabled and must be re-enabled:

Set-SmbServerConfiguration -EnableMultiChannel $true -Force
Set-SmbClientConfiguration -EnableMultiChannel $true -Confirm:$false

To see active Multichannel connections for established SMB sessions, use:

Get-SmbMultichannelConnection

This command lists each connection within active SMB sessions. Each row represents one TCP or RDMA channel. Key columns include:

ServerName — the file server being connected to. ClientInterfaceIndex / ServerInterfaceIndex — the NIC index on each end. ClientIpAddress / ServerIpAddress — the IP addresses used for this specific channel. ChannelState — should be Connected. IsRDMA — whether this channel uses SMB Direct over RDMA. CurrentTransferBytes — bytes transferred on this channel.

A healthy Multichannel session with two NICs on each side might show four channels (client NIC 1 to server NIC 1, client NIC 1 to server NIC 2, client NIC 2 to server NIC 1, client NIC 2 to server NIC 2).

# See per-session channel count
Get-SmbMultichannelConnection | Group-Object ServerName | 
    Select-Object Name, Count

Interface Constraints and Client Configuration

By default, SMB Multichannel uses all available network interfaces. In some environments you may want to restrict which interfaces SMB uses — for example, if you have a management NIC that should not carry file traffic, or if you want to force SMB traffic onto a dedicated high-speed network.

Use Set-SmbClientConfiguration to configure client-side Multichannel behavior:

# View current client Multichannel settings
Get-SmbClientConfiguration | Select-Object EnableMultiChannel, 
    RequireSecuritySignature, UseOpportunisticLocking

# Disable Multichannel on the client (not recommended in production)
Set-SmbClientConfiguration -EnableMultiChannel $false -Confirm:$false

To constrain which interfaces SMB Multichannel uses, configure SMB interface constraints. Constraints tell the SMB client to prefer or restrict certain interfaces:

# View current interface constraints
Get-SmbMultichannelConstraint

# Add a constraint to restrict SMB to a specific interface (by interface index)
$idx = (Get-NetAdapter -Name "Storage Network").InterfaceIndex
New-SmbMultichannelConstraint -ServerName "fileserver01" -InterfaceIndex $idx

# Remove a constraint
Remove-SmbMultichannelConstraint -ServerName "fileserver01" -InterfaceIndex $idx

Constraints are per-server-name, so you can send traffic to different file servers over different NICs. This is useful in Storage Spaces Direct (S2D) clusters where east-west storage traffic should stay on the RDMA fabric and client SMB access should use the standard Ethernet NICs.

SMB Direct (RDMA) with Multichannel

SMB Direct is the SMB 3.x feature that uses RDMA for data transfer, bypassing the CPU and OS network stack for file I/O. When combined with Multichannel, you get both bandwidth aggregation and RDMA efficiency. SMB Direct requires RDMA-capable NICs on both the client and server.

Verify SMB Direct is enabled and RDMA is being used:

# Check SMB Direct status on server
Get-SmbServerConfiguration | Select-Object EnableSMBDirect

# Enable SMB Direct if disabled
Set-SmbServerConfiguration -EnableSMBDirect $true -Force

# Verify RDMA adapters are recognized by SMB
Get-SmbMultichannelConnection | Where-Object { $_.IsRDMA -eq $true } | 
    Select-Object ServerName, ClientIpAddress, ServerIpAddress, IsRDMA

For RoCE (RDMA over Converged Ethernet) NICs, Priority Flow Control (PFC) must be configured on the switches to prevent packet loss, since RDMA is loss-intolerant. Configure DCB (Data Center Bridging) on the NICs and switches:

Install-WindowsFeature -Name "Data-Center-Bridging"

# Create a QoS policy for SMB Direct traffic (DSCP 46 is common)
New-NetQosPolicy -Name "SMBDirect" -NetDirectPortMatchCondition 445 `
    -PriorityValue8021Action 3

# Enable PFC on the RDMA NIC for priority 3
Enable-NetQosFlowControl -Priority 3

# Disable PFC for all other priorities on SMB interface
Disable-NetQosFlowControl -Priority 0,1,2,4,5,6,7

Testing SMB Throughput Improvement

To measure the throughput benefit of Multichannel, copy a large file over an SMB share while monitoring channel utilization. Use robocopy with multiple threads and measure with Get-SmbMultichannelConnection during the transfer:

# Start a large file copy in the background
Start-Job -ScriptBlock {
    robocopy \fileserver01share C:TestCopy largefile.iso /MT:8 /NP
}

# Monitor Multichannel connections during transfer
while ($true) {
    Get-SmbMultichannelConnection | 
        Select-Object ServerName, ClientIpAddress, ServerIpAddress, 
            CurrentTransferBytes, IsRDMA
    Start-Sleep -Seconds 2
}

You can also use the built-in Windows Performance Monitor counters to measure SMB client throughput. Add these counters in perfmon.msc or PowerShell:

Get-Counter -Counter "SMB Client Shares(*)Bytes Total/sec" -SampleInterval 2 -MaxSamples 10

With two 10GbE NICs and no RDMA, expect throughput approaching 20 Gbps aggregate for large sequential reads. With 25GbE RDMA NICs and SMB Direct, throughput can saturate the wire with CPU utilization under 10%.

Troubleshooting Multichannel Not Working

Only one channel showing in Get-SmbMultichannelConnection: This usually means only one NIC is being used. Verify both NICs have routes to the file server. SMB Multichannel requires that the client can reach the server’s IP addresses from multiple client interfaces. Use Test-NetConnection -ComputerName fileserver01 -Port 445 from each NIC by temporarily binding the test to a specific source IP:

# Test connectivity via specific source IP
Test-NetConnection -ComputerName fileserver01 -Port 445 -InformationLevel Detailed

# Check routing table for all paths to server subnet
Get-NetRoute -DestinationPrefix "192.168.10.0/24" | 
    Select-Object InterfaceAlias, NextHop, RouteMetric

RSS queues not spreading load: RSS must be enabled and have multiple queues configured. Verify:

Get-NetAdapterRss -Name "Ethernet" | 
    Select-Object Name, Enabled, NumberOfReceiveQueues, MaxProcessors, 
        BaseProcessorNumber, MaxProcessorNumber

If RSS shows only 1 queue, update the NIC driver or check BIOS settings (some systems disable RSS in BIOS/UEFI).

Multichannel drops to single channel intermittently: This can indicate asymmetric routing or MTU mismatches between paths. Check that jumbo frames (if used) are consistently enabled across all NICs and switches in both paths:

Get-NetAdapterAdvancedProperty -Name "Ethernet*" -DisplayName "Jumbo Packet" | 
    Select-Object Name, DisplayValue

NIC Teaming vs SMB Multichannel

NIC Teaming (LBFO) and SMB Multichannel both aggregate bandwidth from multiple NICs, but they operate at different layers and serve different purposes. NIC Teaming operates at the network adapter layer and creates a single virtual NIC from multiple physical NICs. SMB Multichannel operates at the SMB session layer and creates multiple connections within one SMB session.

Microsoft’s guidance for Windows Server 2022 is to not combine NIC Teaming with SMB Multichannel for storage traffic. NIC Teaming presents a single IP and single MAC to the SMB stack, which means SMB Multichannel sees only one interface and cannot open multiple channels. You lose the Multichannel benefits. Additionally, LBFO teaming is deprecated as of Windows Server 2022 in favor of SET (Switch Embedded Teaming) for Hyper-V, and SET is designed to work alongside Multichannel rather than replacing it.

For dedicated storage networks, configure individual NICs without teaming and let SMB Multichannel manage the multiple paths natively. For convergent networks where storage, VM, and management traffic share NICs, use SET with Hyper-V and assign dedicated vNICs to storage traffic, then allow Multichannel to operate on those vNICs.

# Example: Create SET team in Hyper-V (not LBFO)
New-VMSwitch -Name "ConvergedSwitch" -NetAdapterName @("NIC1","NIC2") `
    -EnableEmbeddedTeaming $true -AllowManagementOS $true

# Add vNICs for storage traffic
Add-VMNetworkAdapter -ManagementOS -Name "SMBNic1" -SwitchName "ConvergedSwitch"
Add-VMNetworkAdapter -ManagementOS -Name "SMBNic2" -SwitchName "ConvergedSwitch"

# Assign VLANs for storage network isolation
Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "SMBNic1" `
    -Access -VlanId 300
Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "SMBNic2" `
    -Access -VlanId 300

After assigning IPs to the SMBNic1 and SMBNic2 adapters, SMB Multichannel will see two interfaces with connectivity to the storage network and automatically open multiple channels for file server sessions on that VLAN.