RDMA supports zero-copy networking by enabling the network adapter to transfer data directly to or from application memory, eliminating the need to copy data between application memory and the data buffers in the operating system. Such transfers require no work to be done by CPUs, caches, or context switches, and transfers continue in parallel with other system operations. When an application performs an RDMA Read or Write request, the application data is delivered directly to the network, reducing latency and enabling fast message transfer.
However, this strategy presents several problems related to the fact that the target node is not notified of the completion of the request (1-sided communications).
Much like other high performance computing (HPC) interconnects, RDMA has achieved limited acceptance as of 2013 due to the need to install a different networking infrastructure. However, new standards[specify] enable Ethernet RDMA implementation at the physical layer using TCP/IP as the transport, thus combining the performance and latency advantages of RDMA with a low-cost, standards-based solution.[citation needed] The RDMA Consortium and the DAT Collaborative[1] have played key roles in the development of RDMA protocols and APIs for consideration by standards groups such as the Internet Engineering Task Force and the Interconnect Software Consortium.[2]
Hardware vendors have started working on higher-capacity RDMA-based network adapters, with rates of 40Gbit/s reported.[3][4] Software vendors such as Red Hat and Oracle Corporation support these APIs in their latest products, and as of 2013 engineers have started developing network adapters that implement RDMA over Ethernet. Both Red Hat Enterprise Linux and Red Hat Enterprise MRG[5] have support for RDMA. Microsoft supports RDMA in Windows Server 2012 via SMB Direct.
Common RDMA implementations include the Virtual Interface Architecture, RDMA over Converged Ethernet (RoCE),[6] InfiniBand, and iWARP.
9.7.5. NFS over RDMA
Procedure 9.2. Enable RDMA from server
-
Ensure the RDMA rpm is installed and the RDMA service is enabled with the following command:
# yum install rdma; chkconfig --level 2345 rdma on
-
Ensure the package that provides the nfs-rdma service is installed and the service is enabled with the following command:
# yum install rdma; chkconfig --level 345 nfs-rdma on
-
Ensure that the RDMA port is set to the preferred port (default for Red Hat Enterprise Linux 6 is 2050). To do so, edit the
/etc/rdma/rdma.conf
file to set NFSoRDMA_LOAD=yes and NFSoRDMA_PORT to the desired port. -
Set up the exported filesystem as normal for NFS mounts.
Procedure 9.3. Enable RDMA from client
-
Ensure the RDMA rpm is installed and the RDMA service is enabled with the following command:
# yum install rdma; chkconfig --level 2345 rdma on
-
Mount the NFS exported partition using the RDMA option on the mount call. The port option can optionally be added to the call.
# mount -t nfs -o rdma,port=port_number