  Developers of networked systems often work with low-level RDMA libraries to
tailor network modules to take full advantage of offload capabilities offered
by RDMA-capable network controllers. Because of the huge design space of
networked data access protocols and variability in capabilities of RDMA
infrastructure, developers tend to reinvent and reimplement common data
exchange protocols, wasting months of development yet missing various
performance and system capabilities. In this work, we summarise and categorize
RDMA data exchange protocols and elaborate on what features they can offer to
networked systems and what implications they have on their memory and network
management.
