linux-rdma/rdma-core
GitHub: linux-rdma/rdma-core
Linux 内核 InfiniBand/RDMA 子系统的用户空间库与守护进程,提供 RDMA 硬件驱动用户空间接口和高性能网络通信的基础支持。
Stars: 2284 | Forks: 873
[](https://dev.azure.com/ucfconsort/rdma-core/_build/latest?definitionId=2&branchName=master)
# RDMA Core 用户空间库与守护进程
这是 Linux Kernel 的 drivers/infiniband
子系统的用户空间组件。具体而言,它包含以下
设备节点的用户空间库:
- /dev/infiniband/uverbsX (libibverbs)
- /dev/infiniband/rdma_cm (librdmacm)
- /dev/infiniband/umadX (libibumad)
libibverbs RDMA 内核驱动程序的用户空间组件包含在
providers/ 目录下。包含对以下内核 RDMA 驱动程序的
支持:
- bnxt_re.ko
- efa.ko
- erdma.ko
- iw_cxgb4.ko
- hfi1.ko
- hns-roce-hw-v2.ko
- ionic_rdma.ko
- irdma.ko
- ib_qib.ko
- mana_ib.ko
- mlx4_ib.ko
- mlx5_ib.ko
- ib_mthca.ko
- ocrdma.ko
- qedr.ko
- rdma_rxe.ko
- siw.ko
- vmw_pvrdma.ko
还提供了以下额外的服务守护进程:
- srp_daemon (ib_srp.ko)
- iwpmd (用于 iwarp 内核 provider)
- ibacm (用于 InfiniBand 通信管理助手)
# 构建
本项目使用基于 cmake 的构建系统。快速开始:
```
$ bash build.sh
```
*build/bin* 将包含示例程序,*build/lib* 将包含
共享库。此构建配置为“原地”运行所有程序,
且无法被安装。
### Debian 系
```
$ apt-get install build-essential cmake gcc libudev-dev libnl-3-dev libnl-route-3-dev ninja-build pkg-config valgrind python3-dev cython3 python3-docutils pandoc
```
支持的发行版:
* Debian 9 (stretch) 或更高版本
* Ubuntu 16.04 LTS (xenial) 或更高版本
### Fedora, CentOS 8
```
$ dnf builddep redhat/rdma-core.spec
```
注意:Fedora Core 将 'ninja' 命令命名为 'ninja-build'。
### openSUSE
```
$ zypper install cmake gcc libnl3-devel libudev-devel ninja pkg-config valgrind-devel python3-devel python3-Cython python3-docutils pandoc
```
## 在 CentOS 7, Amazon Linux 2 上构建
安装所需的软件包:
```
$ yum install cmake gcc libnl3-devel libudev-devel make pkgconfig valgrind-devel
```
建议在 CentOS 7 或 Amazon Linux 2 上的开发者安装更现代化的
工具以获得最佳体验。
CentOS 7:
```
$ yum install epel-release
$ yum install cmake3 ninja-build pandoc
```
Amazon Linux 2:
```
$ amazon-linux-extras install epel
$ yum install cmake3 ninja-build pandoc
```
注意:EPEL 将 'ninja' 命令命名为 'ninja-build',将 'cmake'
命令命名为 'cmake3'。
# 用法
要使用任一可用的驱动程序在现有接口上设置软件 RDMA,请使用
以下命令,将 `` 替换为您选择的驱动程序
名称(`rdma_rxe` 或 `siw`),并将 `` 替换为与该
驱动程序对应的类型(`rxe` 或 `siw`)。
```
# modprobe
# rdma link add type netdev
```
请注意,您需要足够新版本的 `iproute2` 才能使上述
命令正常工作。
您可以使用 `ibv_devices` 或 `rdma link` 来验证设备是否
已成功添加。
# 报告 Bug
Bug 应报告至 邮件列表
在您的 Bug 报告中,请包含:
* 有关您系统的信息:
- Linux 发行版及版本
- Linux 内核及版本
- InfiniBand 硬件及固件版本
- ……任何其他相关信息
* 如何重现该 Bug。
* 如果该 Bug 是崩溃,请提供崩溃发生时打印的准确输出,
包括产生的任何内核消息。
# 提交补丁
请参阅[为 rdma-core 贡献代码](Documentation/contributing.md)。
# 稳定分支
稳定版本会定期发布并包含向后移植的修复(参见 Documentation/stable.md)
目前仍在维护的最低版本是 'v33.X'
标签:Bash脚本, InfiniBand, RDMA, 客户端加密, 系统底层, 网络通信