RDMA programming tutorial


Roland Dreier
Jason Gunthorpe



Session Type




This tutorial will introduce developers familiar with Linux networking to the Linux RDMA stack and how it can be used to implement high-performance communication for applications.  An outline of the proposed tutorial is:

* Key features of RDMA for high performance communication
  o Asynchronous work / completion queues
  o Kernel bypass
    . Transport offload from application CPUs, including reliability / retransmission
  o One-sided (and two-sided) ops
    . Send-receive vs RDMA read/write
    . Memory pre-registration / pinning
  o Transport
    . IB and RoCE
    . RoCE vs iWARP/TCP vs proprietary (eg AWS EFA)
    . RC vs UD
* Simple example application (RC pingpong)
  o Key objects: QP, CQ, MR
  o Register memory (extensions for accelerator memory, etc)
  o Connection establishment with IP addressing & librdmacm
  o Post work requests to send and receive work queues
  o Poll CQ
  o Compare with UD version