Remote Direct Memory Access, or RDMA, allows a network device to transfer data directly to and from application memory on another system, increasing throughput and lowering latency in certain networking environments.
The major difference is that iWARP performs RDMA over TCP, while RoCEv2 uses UDP.
On devices with RDMA capabilities, RDMA is supported on the following operating systems:
To avoid performance degradation from dropped packets, enable link level flow control or priority flow control on all network interfaces and switches.
![]() |
NOTES:
|
For Intel Ethernet devices that support RDMA on Linux or FreeBSD, use the drivers shown in the following table.
Device | Linux | FreeBSD | Supported Protocols | ||
---|---|---|---|---|---|
Base Driver | RDMA Driver | Base Driver | RDMA Driver | ||
Intel® Ethernet 800 Series | ice | irdma | ice | irdma | RoCEv2, iWARP |
Intel® Ethernet X722 Series | i40e | irdma | ixl | not supported | iWARP |
At a high level, installing and configuring RDMA on Linux or FreeBSD consists of the following steps. See the README file inside the appropriate RDMA driver tarball for full details.
Devices based on the Intel Ethernet 800 Series support RDMA in a Linux VF on supported Windows or Linux hosts. Refer to the README file inside the Linux RDMA driver tarball for more information on how to load and configure RDMA in a Linux VF.
Network Direct (ND) allows user-mode applications to use RDMA features.
![]() |
NOTE: User mode applications may have prerequisites such as Microsoft HPC Pack or Intel MPI Library, refer to your application documentation for more details. |
The Intel® Ethernet User Mode RDMA Provider is supported on Microsoft Windows Server.
Follow the steps below to install user-mode Network Direct features.
\APPS\PROSETDX
and then the Windows subfolder corresponding to your version of Windows (32-bit or 64-bit).Winx64
or Win32
folder, double-click on DxSetup.exe
to launch the install wizard.![]() | NOTE: If Windows Firewall is disabled or you are using a third party firewall, you will need to add this rule manually. |
RDMA Network Direct Kernel (NDK) functionality is included in the Intel base networking drivers and requires no additional features to be installed.
If you want to allow NDK's RDMA functionality across subnets, you will need to select "Enable RDMA routing across IP Subnets" on the RDMA Configuration Options screen during base driver installation.
To avoid performance degradation from dropped packets, enable priority flow control (PFC) or link level flow control on all network interfaces and switches.
![]() |
NOTE: On systems running a Microsoft Windows Server operating system, enabling *QoS/priority flow control will disable link level flow control. |
Use the following PowerShell* commands to enable PFC on Microsoft Windows Server:
Install-WindowsFeature -Name Data-Center-Bridging -IncludeManagementTools
New-NetQoSPolicy "SMB" -NetDirectPortMatchCondition 445 -PriorityValue8021Action 3
Enable-NetQosFlowControl -Priority 3
Disable-NetQosFlowControl -Priority 0,1,2,4,5,6,7
New-NetQosTrafficClass -Name "SMB" -Priority 3 -BandwidthPercentage 60 -Algorithm ETS
Set-NetQosDcbxSetting -Willing $FALSE
Enable-NetAdapterQos -Name "Slot1 4 2 Port 1"
You can check that RDMA is enabled on the network interfaces using the following Microsoft PowerShell command:
Get-NetAdapterRDMA
Use the following PowerShell command to check if the network interfaces are RDMA capable and multichannel is enabled:
Get-SmbClientNetworkInterface
Use the following PowerShell command to check if Network Direct is enabled in the operating system:
Get-NetOffloadGlobalSetting | Select NetworkDirect
Use netstat to make sure each RDMA-capable network interface has a listener at port 445 (Windows Client OSs that support RDMA may not post listeners). For example:
netstat.exe -xan | ? {$_ -match "445"}
To enable RDMA functionality on virtual adapter(s) connected to a VMSwitch, you must:
Under certain circumstances, you may disable these settings by default. You can manually set these options in the Adapter Settings panel of Intel PROSet ACU, in the Advanced tab of the adapter properties dialog box, or with the following PowerShell commands:
Set-NetAdapterAdvancedProperty -Name <nic_name> -RegistryKeyword *SRIOV -RegistryValue 1
Set-NetAdapterAdvancedProperty -Name <nic_name> -RegistryKeyword *VMQ -RegistryValue 1
Set-NetAdapterAdvancedProperty -Name <nic_name> -RegistryKeyword RdmaMaxVfsEnabled -RegistryValue <1-32>
NDK Mode 3 allows kernel mode Windows components to use RDMA features inside Hyper-V guest partitions. To enable NDK mode 3 on an Intel Ethernet device, do the following:
New-VMSwitch -Name <switch_name> -NetAdapterName <device_name>
-EnableIov $true
Set-NetAdapterAdvancedProperty -Name <device_name> -RegistryKeyword RdmaMaxVfsEnabled -RegistryValue <Value: 0 - 32>
Get-NetAdapterRdma | Disable-NetAdapter
Get-NetAdapterRdma | Enable-NetAdapter
Add-VMNetworkAdapter -VMName <vm_name> -VMNetworkAdapterName <device_name> -SwitchName <switch_name>
Set-VMNetworkAdapterRdma -VMName <vm_name> -VMNetworkAdapterName <device_name> -RdmaWeight 100
Set-VMNetworkAdapter -VMName <vm_name> -VMNetworkAdapterName <device_name> -IovWeight 100
Set-NetAdapterAdvancedProperty -Name <device_name> -RegistryKeyword RdmaVfEnabled -RegistryValue 1
Get-NetAdapterRdma | Enable-NetAdapterRdma
NDK allows Windows components (such as SMB Direct storage) to use RDMA features.
This section outlines the recommended way to test RDMA for Intel Ethernet functionality and performance on Microsoft Windows operating systems.
Note that since SMB Direct is a storage workload, the performance of the benchmark may be limited to the speed of the storage device rather than the network interface being tested. Intel recommends using the fastest storage possible in order to test the true capabilities of the network device(s) under test.
Test instructions:
New-SmbShare -Name <SMBsharename> -Path <SMBsharefilepath> -FullAccess <domainname>\Administrator,Everyone
New-SmbShare -Name RAMDISKShare -Path R:\RAMDISK -FullAccess group\Administrator,Everyone
.\diskspd.exe -b4K -d60 -h -L -o16 -t16 -r -w0 -c10G \\<SMBserverTestIP>\<SMBsharename>\test.dat
You can use perfmon, or other performance monitoring tool, to monitor and display RDMA counters and statistics. Refer to Microsoft documentation for more details. Use the Register-IntelEthernetRDMACounterSet cmdlet registers the RDMA statistics counters for the specific device with perfmon. Refer to Configuring with Windows PowerShell for more information about how to install and use Intel Ethernet cmdlets. You can use the following PowerShell command to register the RDMA statistics for all supported devices:
Register-IntelEthernetRDMACounterSet
You can use the following PowerShell cmdlet to unregister the RDMA statistics:
Unregister-IntelEthernetRDMACounterSet
Copyright (C) 2019 - 2023, Intel Corporation. All rights reserved.
This software and the related documents are Intel copyrighted materials, and your use of them is governed by the express license under which they were provided to you ("License"). Unless the License provides otherwise, you may not use, modify, copy, publish, distribute, disclose or transmit this software or the related documents without Intel's prior written permission.
This software and the related documents are provided as is, with no express or implied warranties, other than those that are expressly stated in the License.
Intel technologies may require enabled hardware, software or service activation.
No product or component can be absolutely secure.
Your costs and results may vary.
Intel, the Intel logo, and other Intel marks are trademarks of Intel Corporation or its subsidiaries.
*Other names and brands may be claimed as the property of others.