The Fundamentals of RDMA Programming (NTFRP-OD)

Remote Direct Memory Access, RDMA, enables server-to-server data movement directly between application memory without any CPU involvement. RDMA technology empowers advanced enterprise data centers and the world’s fastest supercomputers (HPC).

RDMA allows real CPU offloads and kernel bypass, and, as such, RDMA-based applications provide better utilization of network HW resources while increasing speed and lowering link latencies.

Mellanox leads the interconnect industry with RDMA supported hardware and has paved the way for RDMA programming. It has gained unique and extensive experience by accompanying the world’s leading HPC, storage, finance and cloud companies in RDMA application development projects.

This course provides application developers with the required knowledge and skills to start programming RDMA applications that run seamlessly over Ethernet (RoCE) and InfiniBand networks.

What will I learn?

This online course offers an innovative training experience, with short and focused videos, interactive quizzes and hands-on exercises needed to acquire the technical skills for programming RDMA-based applications.

This course allows C programmers to dive into the RDMA programming world without requiring previous experience in networking or RDMA programming.

We have also added Mellanox specialist tips and tricks, as well as do’s and don’ts so that the skills you acquire will truly serve you when you need them

Course Objectives

  • Detail the main transport types
  • Understand OS bypassing and transport offloads
  • Find Your RDMA Devices
  • Query device and port capabilities
  • Create Protection Domain
  • Create Completion Queue
  • Register Memory Region
  • Initialize the Queue Pair
  • Exchange connection information
  • Execute RDMA operation
  • Establish connection using RDMA_CM API


Application developers skilled in C programming who want to learn how to develop RDMA applications for Ethernet and InfiniBand networks.


Solid understanding of C programming

Course Topics

  • Introduction to RoCE
  • Introduction to InfiniBand
  • InfiniBand Architecture Layer Overview
  • Transport Layer
  • Transport Types
  • RDMA Basic Flow
  • Get the device list
  • Open the requested device
  • Query the device capabilities
  • Allocate a Protection Domain to contain your resources
  • Register a Memory Region  
  • Create a Completion Queue (CQ)
  • Create a Queue Pair (QP)
  • Bring up a Queue Pair (QP) 
  • Create Address vector
  • Post work requests and poll for completion
  • Cleanup