1 个不稳定版本

0.3.0 2022年6月1日
0.2.0 2022年5月31日
0.1.3 2022年5月29日

#370 in #low-level

MIT 协议

225KB
6K SLoC

rdma

Latest Version Documentation License

低级RDMA API。

环境

此crate需要安装最新版本的rdma-core

请确保以下命令可以正常工作

$ pkg-config --modversion libibverbs
1.14.41.0
$ pkg-config --modversion librdmacm
1.3.41.0

输出还会显示所需的最小版本。

开发

示例

添加Soft-RoCE设备

sudo rdma link add rxe0 type rxe netdev ens33

rxe0是RDMA设备名称。您可以将其命名为您想要的任何名称。 ens33是网络设备的名称。网络设备的名称可能不同。您可以通过运行命令ifconfig来查看。

为中文用户提供了一个教程:https://zhuanlan.zhihu.com/p/361740115

如果您没有安装,请安装工具just

安装示例

just install-examples

运行示例rdma-devices

$ rdma-devices
| name | guid             |
| ---- | ---------------- |
| rxe0 | 26418cfffe021df9 |

运行示例rdma-pingpong

  • RC服务

    • 服务器端
      rdma-pingpong rc
      
    • 客户端
      rdma-pingpong rc 127.0.0.1
      
  • UD服务

    • 服务器端
      rdma-pingpong ud
      
    • 客户端
      rdma-pingpong ud 127.0.0.1
      

运行基准测试

just bench-pingpong-rc
just bench-pingpong-ud

运行示例rdma-async

rdma-async-rpc

内存管理

所有与原始内存相关的API都是不安全的。

我们正在探索如何在RDMA中提供一种安全且易于管理的内存方式。

示例rdma-async可能会给您一些启发。

资源管理

RDMA资源由引用计数管理。

下面的图表显示了资源之间的关系。

docs/ref/ref.svg

依赖关系

~0.6–8MB
~55K SLoC