从 UD 切换到 RC 连接时要在 ibverbs 中更改什么

问题描述

我正在查看 Mellanox 的 ibverbs 代码
通过 ibverbs 进行发送/接收操作。
代码正在使用 UD 连接。
但是当我将
qp_type = IBV_QPT_UD 更改为 IBV_QPT_RC

时它不起作用

在这种情况下,除了 qp_type 之外,我还需要更改什么?

代码可以在这里找到repo
https://github.com/alokprasad/books-src/tree/master/rdma-src-mellanox
在 basic_send 和 basic_recv 下

解决方法

RC 连接需要一个已连接的通道。
在这种情况下,应该使用RDMA CM建立一个rdma通道,然后可以使用RC。
在此示例中,通信使用 UD,因为主机和客户端之间没有“握手”。 并且UD包可能因各种原因被主机丢弃,因此被称为“不可靠数据报”。