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 |
|
#430 in 网络编程
1,371 每月下载量
在 rrppcc 中使用
215KB
5K SLoC
rrddmma
Rust RDMA库。
该库更适合学术研究而非工业应用。它高度针对Mellanox/NVIDIA ConnectX网络适配器系列。
警告:接口不稳定,正在持续变化!
链接
此库支持与ibverbs
库的多种链接方式。
-
首先,此库尊重现有的MLNX_OFED安装。它在v4.9-x和v5.x版本上都能工作。
MLNX_OFED v4.9-x将启用实验性verbs。(待办)MLNX_OFED v5.x将启用(待办)mlx5dv_*
功能。
-
否则,
rrddmma
将通过pkg-config
尝试找到现有的libibverbs
安装。这将启用(待办)mlx5dv_*
功能。
-
否则,
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