How to Configure SMB Multichannel Advanced on Windows Server 2016
SMB Multichannel is a feature of the SMB 3.0 protocol in Windows Server 2016 that allows a single SMB session to use multiple network connections simultaneously. This delivers higher throughput, increased fault tolerance, and better CPU utilization when multiple network adapters or adapters with multiple queues are available on both the client and server. SMB Multichannel automatically detects and uses multiple paths without any manual configuration in most cases, but advanced tuning allows administrators to optimize its behavior for specific hardware and workloads. This guide covers verifying Multichannel operation, constraining it to specific interfaces, and tuning for RDMA-capable adapters.
SMB Multichannel supports three key scenarios: using multiple network adapters to aggregate bandwidth, using RSS (Receive Side Scaling) capable adapters to distribute CPU load across processor cores, and using RDMA (Remote Direct Memory Access) capable adapters such as RoCE or iWARP to achieve extremely low latency and high throughput with minimal CPU overhead. RDMA with SMB (also called SMB Direct) is particularly valuable for Hyper-V storage and Scale-Out File Server workloads where latency and CPU efficiency are critical.
Verifying SMB Multichannel Status
Check if SMB Multichannel is enabled on the server:
Get-SmbServerConfiguration | Select-Object EnableMultiChannel
Check the client-side Multichannel setting:
Get-SmbClientConfiguration | Select-Object EnableMultiChannel
If Multichannel is disabled, enable it:
Set-SmbServerConfiguration -EnableMultiChannel $true -Confirm:$false
Set-SmbClientConfiguration -EnableMultiChannel $true -Confirm:$false
View active SMB sessions and whether they are using Multichannel. The NumChannels value shows how many channels are in use:
Get-SmbMultichannelConnection
View detailed connection information including which adapters and IP addresses are being used:
Get-SmbMultichannelConnection -IncludeNotSelected
Configuring SMB Multichannel Constraints
By default, Multichannel uses all available adapters. In environments where some adapters are dedicated to management or other traffic, you may want to restrict Multichannel to specific interfaces. Create a Multichannel constraint to tie SMB traffic to specific interfaces by IP subnet:
New-SmbMultichannelConstraint -ServerName "FileServer01" -InterfaceIndex 12
View existing constraints:
Get-SmbMultichannelConstraint
Remove a constraint to allow all interfaces again:
Remove-SmbMultichannelConstraint -ServerName "FileServer01" -InterfaceIndex 12 -Confirm:$false
Viewing Network Adapter Capabilities
SMB Multichannel uses adapter capabilities (RSS, RDMA) to determine how to use each adapter. View the capabilities that Multichannel sees for each adapter:
Get-SmbClientNetworkInterface
Get-SmbServerNetworkInterface
The output shows RssCapable, RdmaCapable, and Speed for each interface. Multichannel prioritizes RDMA interfaces, then RSS interfaces, then standard interfaces.
Configuring SMB Direct (RDMA)
SMB Direct uses RDMA-capable network adapters for kernel-bypass data transfer, significantly reducing latency and CPU load. Verify RDMA capability on adapters:
Get-NetAdapterRdma
Enable RDMA on an adapter (for adapters that support it):
Enable-NetAdapterRdma -Name "Ethernet 3"
Verify the SMB Direct feature is installed and enabled:
Get-WindowsFeature SMBD
Install-WindowsFeature SMBD
View RDMA statistics during a file transfer to verify RDMA is being used:
Get-SmbClientNetworkInterface | Where-Object {$_.RdmaCapable -eq $true}
Tuning SMB Multichannel Credit Settings
SMB uses a credit-based flow control mechanism. In high-throughput scenarios, increasing the credit limits can improve performance by allowing more outstanding requests:
Set-SmbServerConfiguration -MaxChannelPerSession 32 -Confirm:$false
For very high throughput scenarios with multiple 10GbE or 25GbE adapters, tune the number of SMB instances the server maintains:
Set-SmbServerConfiguration -MaxThreadsPerQueue 20 -Confirm:$false
Monitoring Multichannel Performance
Monitor SMB performance counters to verify Multichannel is delivering expected throughput. Use Performance Monitor with the SMB Client Shares and SMB Server Shares counter sets. From PowerShell:
Get-Counter -Counter "SMB Client Shares(*)Data Bytes/sec" -SampleInterval 2 -MaxSamples 10
View current open SMB sessions and their channel count:
Get-SmbSession | Select-Object ClientUserName,ClientComputerName,NumChannels,SmbInstance
SMB Multichannel provides significant performance and availability improvements with minimal configuration overhead. In environments with modern RDMA-capable adapters, enabling SMB Direct and verifying Multichannel is fully operational can reduce storage latency by an order of magnitude compared to standard TCP/IP SMB, making it essential for high-performance Hyper-V and Scale-Out File Server deployments on Windows Server 2016.