Storage Protocols

Linux Kernel Upstream Release Notes v6.5

The Server Message Block (SMB) protocol is a network file sharing protocol implemented in Microsoft Windows. The set of message packets that defines a particular version of the protocol is called a dialect.

The Microsoft SMB protocol is a client-server implementation and consists of a set of data packets, each containing a request sent by the client or a response sent by the server.

SMB protocol is used on top of the TCP/IP protocol or other network protocols. Using the SMB protocol allows applications to access files or other resources on a remote server, to read, create, and update them. In addition, it enables communication with any server program that is set up to receive an SMB client request.

System Requirements

The following are hardware and software prerequisites:

  • Two or more machines running Windows Server 2012 and above

  • One or more Mellanox ConnectX®-3, or ConnectX®-3 Pro adapters for each server

  • One or more Mellanox InfiniBand switches

  • Two or more QSFP cables required for InfiniBand

Verifying Network Adapter Configuration

Use the following PowerShell cmdlets to verify Network Direct is globally enabled and that you have NICs with the RDMA capability.

Run on both the SMB server and the SMB client.


PS $ Get-NetOffloadGlobalSetting | Select NetworkDirect PS $ Get-NetAdapterRDMA PS $ Get-NetAdapterHardwareInfo

Verifying SMB Configuration

Use the following PowerShell cmdlets to verify SMB Multichannel is enabled, confirm the adapters are recognized by SMB and that their RDMA capability is properly identified.

On the SMB client, run the following PowerShell cmdlets:


PS $ Get-SmbClientConfiguration | Select EnableMultichannel PS $ Get-SmbClientNetworkInterface

On the SMB server, run the following PowerShell cmdlets:


PS $ Get-SmbServerConfiguration | Select EnableMultichannel PS $ Get-SmbServerNetworkInterface PS $ netstat.exe -xan | ? {$_ -match "445"}

Note: The NETSTAT command confirms if the File Server is listening on the RDMA interfaces.

Verifying SMB Connection

To verify the SMB connection on the SMB client:

  1. Copy the large file to create a new session with the SMB Server.

  2. Open a PowerShell window while the copy is ongoing.

  3. Verify the SMB Direct is working properly and that the correct SMB dialect is used.


    PS $ Get-SmbConnection PS $ Get-SmbMultichannelConnection PS $ netstat.exe -xan | ? {$_ -match "445"}


    If you have no activity while you run the commands above, you might get an empty list due to session expiration and no current connections.

Verifying SMB Events that Confirm RDMA Connection

To confirm RDMA connection, verify the SMB events:

Open a PowerShell window on the SMB client. Run the following cmdlets.

Note: Any RDMA-related connection errors will be displayed as well.


PS $ Get-WinEvent -LogName Microsoft-Windows-SMBClient/Operational | ? Message -match "RDMA"

© Copyright 2023, NVIDIA. Last updated on May 23, 2023.