nexus-rdma#
Repository: guenterfischer-public/networking/nexus-rdma
Summary#
The nexus-rdma C++ library provides an abstraction layer for an RDMA driver communication. It abstracts the RDMA handling for both client and server side.
Its purpose is not to implement all possible RDMA capabilities, but rather to provide support for a standard use case (RDMA Write).
Design#
Implementation on both the client and server sides is divided into the control channel (RPC) and RDMA (VPI) part.
The RPC control channel is based on gRPC. It is used as side channel to exchange any kind of information that is required to set-up the RDMA communication.
The RDMA handling is based on ibverbs, rdma-core is used as underlying library.
The library supports the registration of multiple endpoints with multiple user memories each. Each user memory will be handled by one work request (WR). It is also possible to use a GPU or FPGA memory region. In this case the data will be transferred between NIC and GPU/FPGA using PeerDirect.
Data is transferred by using the “RDMA Write with Immediate” option. With that option, the server gets notified as soon as data has been written by the client.
Note
For more details, check the repository.