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.