How to Set Up Windows Server 2016 SMB Multichannel

SMB Multichannel is a feature of the Server Message Block protocol that enables SMB to use multiple network connections simultaneously when multiple network paths exist between a client and a server. It provides automatic aggregation of network bandwidth across multiple interfaces, network fault tolerance when one path becomes unavailable, and the ability to utilize multiple RDMA-capable adapters. Windows Server 2016 includes SMB Multichannel by default and activates it automatically when appropriate network configurations are detected. This guide explains how to configure, verify, and optimize SMB Multichannel.

How SMB Multichannel Works

When a client establishes an SMB connection to a server, SMB Multichannel negotiates multiple channels over different network interfaces or network adapter RSS queues. Channels are added based on available network interfaces, RDMA capabilities, and RSS (Receive Side Scaling) queue counts. With standard NICs, Multichannel uses multiple IP addresses bound to different physical adapters to create parallel connections. With RDMA-capable adapters, each adapter can provide multiple channels based on its queue depth. Multichannel automatically balances I/O across available channels and fails over to remaining channels if one fails.

Prerequisites and Supported Configurations

SMB Multichannel works in three scenarios. When multiple network adapters are available on both client and server, each with a unique IP address, Multichannel creates one channel per adapter. When a single RSS-capable adapter is available, Multichannel creates multiple channels across RSS queues (up to 8 by default). When RDMA-capable adapters are present with SMB Direct, each RDMA queue pair becomes a separate channel. No special hardware is required to begin using SMB Multichannel with standard NICs. Ensure that multiple NICs are connected to the same subnet and that IP addresses are assigned appropriately.

Verifying SMB Multichannel is Enabled

SMB Multichannel is enabled by default on Windows Server 2016. To verify it is active on the server:

Get-SmbServerConfiguration | Select-Object EnableMultiChannel

To check the client configuration:

Get-SmbClientConfiguration | Select-Object EnableMultiChannel

Both should return True. To view active Multichannel connections from a client:

Get-SmbMultichannelConnection
Get-SmbMultichannelConnection | Format-Table -AutoSize

Disabling and Re-enabling SMB Multichannel

To disable SMB Multichannel for testing or troubleshooting on the server:

Set-SmbServerConfiguration -EnableMultiChannel $false -Confirm:$false

To disable on the client side:

Set-SmbClientConfiguration -EnableMultiChannel $false -Confirm:$false

To re-enable Multichannel on both server and client:

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

Configuring Network Adapters for Multichannel

For optimal Multichannel performance, ensure that network adapters are configured correctly. List all network adapters and their properties:

Get-NetAdapter | Select-Object Name, InterfaceDescription, Speed, Status

Verify that RSS is enabled on each adapter, as RSS allows a single NIC to use multiple Multichannel channels:

Get-NetAdapterRss | Select-Object Name, Enabled, NumberOfReceiveQueues

Enable RSS on an adapter if it is disabled:

Enable-NetAdapterRss -Name "Ethernet1"

Set the number of RSS queues to maximize Multichannel channels on a high-core-count server:

Set-NetAdapterRss -Name "Ethernet1" -NumberOfReceiveQueues 8

Managing Multichannel Constraints

In some configurations, you may want to restrict which interfaces SMB Multichannel uses to prevent it from using management adapters or slower interfaces. Use SMB Multichannel constraints to control which network adapters are available for Multichannel:

Get-SmbMultichannelConstraint

Add a constraint to restrict Multichannel to specific server-side interfaces by specifying the server name and interface index:

New-SmbMultichannelConstraint -ServerName "FileServer01" -InterfaceIndex 12

Remove a constraint to allow all interfaces again:

Remove-SmbMultichannelConstraint -ServerName "FileServer01" -InterfaceIndex 12 -Confirm:$false

Verifying Multichannel Negotiation

After establishing an SMB connection, confirm that Multichannel is actually in use and how many channels were negotiated. On the client, connect to a share and then query connection details:

Get-SmbMultichannelConnection -ServerName FileServer01 | Select-Object ServerName, ClientIpAddress, ServerIpAddress, ChannelCount

To get a detailed view of each individual channel in a Multichannel session:

Get-SmbMultichannelConnection -ServerName FileServer01 -IncludeNotSelected

Performance Monitoring for SMB Multichannel

Use Performance Monitor to track SMB Multichannel performance. Key counters are found under the SMB Direct Connection and SMB Client Shares categories. Monitor bytes read per second and bytes written per second across multiple channels to confirm bandwidth aggregation is working as expected. To get a quick view of network throughput on each adapter during an SMB transfer:

Get-NetAdapterStatistics | Select-Object Name, ReceivedBytes, SentBytes

Best Practices for SMB Multichannel

Use identical network adapters on both server and client for predictable Multichannel behavior. Assign each adapter a static IP address on a separate subnet to ensure Multichannel can distinguish between them. Enable RSS on all adapters to maximize the number of available channels per physical adapter. Use Multichannel constraints to prevent management or iSCSI adapters from being included in SMB Multichannel sessions. Combine SMB Multichannel with SMB Direct for RDMA adapters to achieve both bandwidth aggregation and low-latency RDMA benefits simultaneously. Regularly monitor active channels using Get-SmbMultichannelConnection to confirm Multichannel is operating as expected after any network changes.

SMB Multichannel on Windows Server 2016 provides a simple and automatic way to improve SMB file server performance and resilience by utilizing all available network paths, making it an essential feature for high-performance file server deployments and Hyper-V storage networks.