RDMA软件架构

RDMA 的软件架构按层次可分成两部分,即 rdma-core 和内核 RDMA 子系统,分别运行在 Linux 系统中的用户态和内核态。整个软件架构适用于所有类型的 RDMA 网卡,不管网卡执行了哪种 RDMA 协议(InfiniBand/RoCE/ iWARP)。

一、rdma-core

rdma-core 是开源的 RDMA 用户态软件包,包含了各种子功能动态库、不同厂商网卡的用户态驱动程序、API 帮助手册以及测试工具等,并提供 Verbs API 给应用程序调用。

rdma-core 的代码可在 GitHub 网站获取:rdma-core

其代码根目录中有以下内容:

rdma-core$ tree -L 1
.
├── buildlib
├── build.sh
├── ccan
├── CMakeLists.txt
├── COPYING.BSD_FB
├── COPYING.BSD_MIT
├── COPYING.GPL2
├── COPYING.md
├── debian
├── Documentation
├── ibacm
├── infiniband-diags
├── iwpmd
├── kernel-boot
├── kernel-headers
├── libibmad
├── libibnetdisc
├── libibumad
├── libibverbs
├── librdmacm
├── MAINTAINERS
├── providers
├── pyverbs
├── rdma-ndd
├── README.md
├── redhat
├── srp_daemon
├── suse
├── tests
└── util

比较重要的几个目录

二、内核RDMA子系统

内核 RDMA 子系统指的是开源的Linux 内核代码中和 RDMA 有关的子系统,包含 RDMA内核框架及各厂商的 RDMA 网卡驱动程序。内核 RDMA 子系统是 Linux 内核的一部分,随 Linux 内核的代码进行维护。其一方面提供内核态的 Verbs API 给其他内核模块使用,另一方面对接用户态的 Verbs API。

内核 RDMA 子系统在操作系统中生成了如下 3 个设备文件,供用户态的程序访问。

rdma-core 中包含了访问这三个文件的用户态库,所以应用程序一般不直接访问它们。

  • /dev/infiniband/uverbsX(libibverbs)
  • /dev/infiniband/rdma_cm(librdmacm)
  • /dev/infiniband/umadX(libibumad)

内核 RDMA 子系统的代码位于 Linux 内核的 drivers/infiniband 目录下。虽然目录名为

infiniband,但实际为所有的 RDMA 网络协议共用。

linux-5.8.1/drivers/infiniband$ tree -L 1
.
├── core
├── hw
├── Kconfig
├── Makefile
├── sw
└── ulp

core:内核RDMA子系统的核心,整合整个子系统,支撑用户态组件。向上对接用户态Verbs API,向下对接内核态的设备驱动程序。

sw:包含具有特殊功能的软件模块,比如Soft-Roce,用于在普通以太网卡上搭建虚拟RDMA操作环境。

hw:RDMA网卡的内核态驱动程序

三、RDMA软件架构总览

完整版

简化版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想打球的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值