10个版本

0.7.0 2024年5月16日
0.6.6 2024年1月23日
0.6.1 2023年12月22日
0.5.6 2023年9月7日
0.4.4 2023年5月9日

#430 in 网络编程

Download history 165/week @ 2024-05-16 10/week @ 2024-05-23 8/week @ 2024-05-30 3/week @ 2024-06-27 30/week @ 2024-07-04

1,371 每月下载量
rrppcc 中使用

MIT 许可证

215KB
5K SLoC

rrddmma

Rust RDMA库。

Crates.io Crates.io License

该库更适合学术研究而非工业应用。它高度针对Mellanox/NVIDIA ConnectX网络适配器系列。

警告:接口不稳定,正在持续变化!

链接

此库支持与ibverbs库的多种链接方式。

  1. 首先,此库尊重现有的MLNX_OFED安装。它在v4.9-x和v5.x版本上都能工作。

    • MLNX_OFED v4.9-x将启用实验性verbs。 (待办)
    • MLNX_OFED v5.x将启用mlx5dv_*功能。 (待办)
  2. 否则,rrddmma将通过pkg-config尝试找到现有的libibverbs安装。

    • 这将启用mlx5dv_*功能。 (待办)
  3. 否则,rrddmma将尝试下载rdma-core并从源代码构建。您需要确保依赖项已正确安装。在Ubuntu和其他基于Debian的操作系统上,这些是

    sudo apt install -y build-essential cmake gcc libclang-dev libudev-dev libsystemd-dev \
                        libnl-3-dev libnl-route-3-dev ninja-build pkg-config valgrind \
                        python3-dev cython3 python3-docutils pandoc
    

    从源代码构建与前面两种方法不同,因为libibverbs是静态链接的,无法在运行时检测提供者。此库目前仅允许mlx5提供者。

    • 这将启用mlx5dv_*功能。 (待办)

一些设计原则

有缺陷方法中的恐慌

在可失败的方法(即返回Result的方法)中恐慌是一个公认的不良设计模式。然而,在RDMA中并非如此,因为实际上有两种不同类型的错误

  • 编程错误:这些是由程序员在没有遵循手册说明时产生的逻辑错误。例如,忘记在为它创建或绑定对等方之前将QP绑定到本地端口。这些错误应在开发和测试期间捕获,永远不应该在生产环境中发生,并且无法恢复。对于这些错误,rrddmma会引发恐慌。
  • 运行时错误:这些是由 libibverbs 库报告的错误,例如由于资源耗尽而无法创建 QP。这些错误是可恢复的,应由调用者处理。rrddmma 对这些错误返回 Err

依赖项

~3–6.5MB
~126K SLoC