Introduction to SMB Multichannel on Windows Server 2019
SMB Multichannel is a performance and availability feature introduced in SMB 3.0 that allows a single SMB session to use multiple network connections simultaneously. When a client and server both have multiple network adapters, SMB Multichannel automatically discovers all available paths and aggregates their bandwidth for a single file transfer. This dramatically increases throughput for large file operations and improves fault tolerance — if one network adapter or cable fails, the SMB session continues on the remaining paths without interruption.
Windows Server 2019 enables SMB Multichannel by default, and it requires no explicit configuration in most cases. However, understanding how it works and how to verify it is functioning correctly is essential for performance optimisation, especially in environments with multiple 10 GbE or 25 GbE adapters or RDMA-capable adapters for SMB Direct.
How SMB Multichannel Works
SMB Multichannel operates in three scenarios. With multiple network adapters per node, it uses all adapters for parallel data transfers. With RSS-capable (Receive Side Scaling) adapters, it creates multiple parallel connections over a single adapter’s multiple CPU queues. With RDMA-capable adapters (for SMB Direct), it bypasses the TCP/IP stack entirely, using direct memory-to-memory transfers at extremely high throughput and low CPU utilisation.
Check whether SMB Multichannel is enabled on the server:
Get-SmbServerConfiguration | Select EnableMultiChannel
Check client-side SMB Multichannel setting:
Get-SmbClientConfiguration | Select EnableMultiChannel
Both should return True. If either is False, enable it:
Set-SmbServerConfiguration -EnableMultiChannel $true -Force
Set-SmbClientConfiguration -EnableMultiChannel $true -Force
Verifying Network Adapter RSS Capability
For SMB Multichannel to use multiple connections over a single adapter, the adapter must support RSS. Check RSS capability:
Get-NetAdapterRss | Select Name, Enabled, MaxProcessors, MaxProcessorNumber
Enable RSS on an adapter that has it disabled:
Enable-NetAdapterRss -Name "Ethernet 1"
Configure RSS processor affinity to spread load across all CPUs:
Set-NetAdapterRss -Name "Ethernet 1" -MaxProcessors 8 -BaseProcessorNumber 0 -MaxProcessorNumber 15
Configuring SMB Direct (RDMA)
SMB Direct provides the highest performance tier of SMB Multichannel. First, verify the adapters support RDMA:
Get-NetAdapterRdma | Select Name, InterfaceDescription, Enabled
Enable RDMA on adapters that have it disabled:
Enable-NetAdapterRdma -Name "Storage NIC 1"
Enable-NetAdapterRdma -Name "Storage NIC 2"
Verify RDMA is enabled and the driver reports the correct RDMA technology:
Get-NetAdapterAdvancedProperty -Name "Storage NIC 1" | Where-Object {$_.RegistryKeyword -like "*RDMA*"}
Enable SMB Direct on the server:
Get-SmbServerConfiguration | Select EnableSMBDirect
Set SMB Direct to use a specific network adapter by configuring a QoS policy:
Set-SmbServerConfiguration -Smb2DialectMax SMB311 -EnableSMBDirect $true -Force
Verifying Active Multichannel Connections
The most reliable way to verify SMB Multichannel is working is to check active SMB sessions and their connections. Connect to a remote SMB share from a client, then from the server run:
Get-SmbMultichannelConnection | Select ServerName, ClientIPAddress, ServerIPAddress, SelectedClientIPAddress, SelectedServerIPAddress, ChannelCount
View detailed multichannel connection information:
Get-SmbMultichannelConnection -ServerName "FileServer01" | Format-List *
A ChannelCount greater than 1 confirms SMB Multichannel is active. To see the network interfaces used:
Get-SmbMultichannelConstraint
Constraining Multichannel to Specific Interfaces
In some environments you want to restrict which network interfaces SMB Multichannel uses. For example, you may want SMB traffic only on the storage VLANs and not on the management network:
# Constrain SMB to use only the storage network adapters
New-SmbMultichannelConstraint -ServerName "SoFSServer" -InterfaceAlias "HostTeam-Storage"
Remove a multichannel constraint:
Remove-SmbMultichannelConstraint -ServerName "SoFSServer" -InterfaceAlias "HostTeam-Storage"
View current constraints:
Get-SmbMultichannelConstraint
Performance Testing SMB Multichannel
Use the DiskSpd tool (available from Microsoft) to test SMB throughput with Multichannel active. Copy DiskSpd to the client and run a throughput test to an SMB share:
diskspd.exe -b1M -d30 -o4 -t4 -Si -w0 \FileServer01VMStoragetestfile.dat
This runs a 30-second sequential read test with 4 threads and 4 outstanding I/Os per thread against a file on the SMB share. Compare results with SMB Multichannel enabled versus disabled to see the bandwidth improvement.
SMB Multichannel is a zero-cost performance and availability enhancement that every Windows Server 2019 administrator should ensure is functioning in their environment. With RDMA adapters, the performance gains are dramatic — capable of delivering hundreds of gigabits per second of SMB throughput for large-scale file and virtual machine storage operations.