"本地" RDMA 用于开发

11

我正在尝试构建和运行这里的RDMA示例。但因为我只是在探索,没有任何硬件能够管理RDMA。当我尝试运行示例代码时,会出现如下错误。

librdmacm: couldn't read ABI version.
librdmacm: assuming: 4
CMA: unable to get RDMA device list
error: ec = rdma_create_event_channel() failed (returned zero/null).

我能否使用本地实现的RDMA功能进行开发?我知道RDMA中的“R”代表远程,但我想这可能存在于测试/开发目的。

供参考,我正在Ubuntu 14.04上尝试,已安装libibverbs-devlibrdmacm-dev软件包以使代码编译。


你曾经成功解决过 error: ec = rdma_create_event_channel() failed (returned zero/null). 吗?我也卡在了这个错误上。 - Miket25
3个回答

2

1
我对这些东西还比较新,不太清楚iWarp是如何相关的。此外,我正在寻找权威答案,即已经做过并知道它有效的人。 - brooks94
1
我的理解是,RDMA 是抽象层,iWARP、InfiniBand 和 RoCE 是其实现。 - thenewguy617
1
RoCE是以太网L2上的RDMA,基本上就像FCoE一样,iWARP是在TCP上的RDMA。 - thenewguy617
OFED是软件堆栈,应该与所有设备透明地工作。 - thenewguy617
2
我支持@thenewguy617的观点。我实际上使用了TheGeekInTheCorner编写的所有代码,与SoftiWARP一起使用。我期望SoftiWARP能够与几乎任何动词程序配合使用。它也非常稳定。另一个可能性是使用SoftROCE。 - Anuj Kalia
1
哇,我很惊讶SoftRoCE存在。理论上来说,SoftiWARP可以使用LSO/LRO,这是现在大多数英特尔网卡都具备的功能,很有趣,我们可以看看哪个性能更好。 - thenewguy617

2
在这个问题被提出后,Soft-RoCE和iWARP驱动程序已经被集成到Linux内核中。以下是如何在具有名为eth0的以太网接口的系统上配置这些驱动程序的示例:
# apt-get install -y iproute2
# modprobe rdma_rxe
# modprobe siw
# rdma link add eth0_rxe type rxe netdev eth0
# rdma link add eth0_siw type siw netdev eth0
# ls /sys/class/infiniband
eth0_rxe  eth0_siw

-2

也许这就是你在寻找的内容:

https://community.mellanox.com/docs/DOC-2184

这是一份Soft RoCE安装指南。由于其详细且长,无法在此处复制粘贴。引用如下:

Soft-RoCE是RoCE的软件实现,允许RoCE在任何以太网网络适配器上运行,无论它是否提供硬件加速。

Soft-RoCE作为上游内核4.8(或更高版本)的一部分发布。可以使用Mellanox OFED 4.0或上游驱动程序。如果您安装了MLNX_OFED 4.0,则会自动获取Soft-RoCE内核模块和用户空间库。

本文演示了如何安装和设置上游Soft-RoCE(又名RXE),旨在供希望在任何第三方适配器上测试软件上的RDMA的IT经理和开发人员使用。


欢迎提供解决方案的链接,但请确保您的答案即使没有链接也是有用的:在链接周围添加上下文,以便其他用户知道它是什么以及为什么存在,然后引用您链接的页面中最相关的部分,以防目标页面不可用。仅仅是一个链接的答案可能会被删除。 - Filnor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接