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软件架构总览

完整版

简化版

相关推荐

  1. <span style='color:red;'>RDMA</span> (1)

    RDMA (1)

    2024-07-20 11:10:02      25 阅读
  2. 软件架构设计 Azure架构

    2024-07-20 11:10:02       27 阅读
  3. 软件架构初探

    2024-07-20 11:10:02       21 阅读
  4. RDMA编程实例rdma_cm API

    2024-07-20 11:10:02       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 11:10:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 11:10:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 11:10:02       45 阅读
  4. Python语言-面向对象

    2024-07-20 11:10:02       55 阅读

热门阅读

  1. Qt: 窗口停靠框架

    2024-07-20 11:10:02       17 阅读
  2. 贪心算法思想

    2024-07-20 11:10:02       18 阅读
  3. 前端TS语法基础篇

    2024-07-20 11:10:02       19 阅读
  4. 编织文字之美:WebKit的CSS文本格式化能力全解析

    2024-07-20 11:10:02       20 阅读
  5. nosql--redis

    2024-07-20 11:10:02       22 阅读
  6. Unity | AssetBundle

    2024-07-20 11:10:02       18 阅读
  7. docker 安装MySQL 8.4.1

    2024-07-20 11:10:02       16 阅读
  8. React antd form表单未保存跳转页面提示

    2024-07-20 11:10:02       17 阅读
  9. c++中static_cast的用法

    2024-07-20 11:10:02       18 阅读
  10. 在ubuntu系统上安装qt 3

    2024-07-20 11:10:02       14 阅读