如何让服务器通过 RDMA 写入客户端设备的内存区域

How to get the server to write to memory region of client device over RDMA

如标题所示,我正在尝试将数据发送到客户端(通过 RDMA)而不是客户端发送到服务器。我在该主题上可以找到的所有示例都是服务器的客户端。有什么resources/references可以参考的吗?

将 libibverbs 库用于 RDMA 动词时,在大多数情况下,没有客户端和服务器的概念。一个使用带外通道(TCP 或 RDMA CM)在两个队列对之间建立连接,然后使用交换的连接信息配置 QP。建立连接后,如果 QP 配置允许,双方都可以使用 RDMA 单侧操作。

此类应用程序的一个示例是 perftest,它与 TCP(或 RDMA CM)交换连接信息,然后测量 RDMA 单侧和双侧操作的性能。

有了librdmacm和rsockets,就有了服务器(监听ID或socket)和客户端的概念。尽管如此,在建立连接后,双方都可以使用 RDMA。您可以在 rdma-core 存储库中找到两者的示例。例如,rping uses RDMA CM and invokes RDMA reads and writes from the server to the client, and riostream 使用 rsockets 并从客户端和服务器调用 RDMA 写入。