NVIDIA OFED堆栈架构
下图显示了NVIDIA OFED堆栈的示意图,以及上层协议(ULP)如何与硬件、内核和用户空间进行交互的接口。应用程序级别还显示了NVIDIA OFED适用于的市场的多功能性。
以下小节简要介绍了 NVIDIA OFED 堆栈的各种组件。
mlx4 VPI Driver
MLNX_OFED 不再支持此驱动程序。要使用 ConnectX-3 和ConnectX-3 Pro NIC,请参阅网络上提供的 MLNX_OFED LTS 版本。
mlx5 Driver/驱动程序
mlx5 是 NVIDIA 设计的 Connect-IB® 和 ConnectX®-4 及以上适配器的低级驱动程序实现。ConnectX®-4 及更高版本的适配器卡作为 VPI 适配器(Infiniband 和以太网)运行。mlx5 驱动程序由以下内核模块组成:
- 请注意,MLNX_OFED 不再支持 Connect-IB 卡。要使用此卡,请参阅网络上提供的 MLNX_OFED LTS 版本。
mlx5_core/内核
作为ConnectX®-4及以上适配卡所需的常用功能库(如复位后初始化设备)。mlx5_core 驱动程序还实现了 ConnectX®-4 及更高版本的以太网接口。mlx5 驱动程序不需要 mlx5_en 模块,因为以太网功能内置在 mlx5_core 模块中。
mlx5_ib
处理 InfiniBand 特定的功能并插入 InfiniBand 中间层。
libmlx5
libmlx5 是实现硬件特定用户空间功能的提供程序库(provider library)。如果固件和驱动程序不兼容,驱动程序将不会加载,并且会在 dmesg 中打印一条消息。以下是 libmlx5 Legacy和RDMA-Core环境变量:
- MLX5_FREEZE_ON_ERROR_CQE
- 导致进程挂在错误的完成循环中,该循环不会因错误或重试发生而刷新/
- 否则禁用
- MLX5_POST_SEND_PREFER_BF
- 配置每一个可以使用blue flame的工作请求都会使用蓝焰
- 否则,blue flame取决于消息的大小和数据包中的内联指示
- MLX5_SHUT_UP_BF
- 禁用blue flame功能
- 否则,请勿禁用
- MLX5_SINGLE_THREADED
- 所有自旋锁都被禁用
- 否则,启用自旋锁
- 由单线程应用程序使用,并希望节省使用自旋锁的开销。
- MLX5_CQE_SIZE
- 64—完成队列条目大小为 64 字节(默认)
- 128—完成队列条目大小为 128 字节
- MLX5_SCATTER_TO_CQE
- 小缓冲区分散到完成队列条目并由驱动程序操作。适用于RC运输。
- 默认为 1,否则禁用
以下是 只有libmlx5 Legacy 的环境变量:
- MLX5_ENABLE_CQE_COMPRESSION
- 通过在 PCIe 上将几个 CQE 压缩成更少量的字节来节省 PCIe 带宽。设置此变量可启用 CQE 压缩。
- 默认值 0(禁用)
- MLX5_RELAXED_PACKET_ORDERING_ON请参阅“乱序 (OOO) 数据放置”部分。
中间层核心/Mid-layer Core
核心服务包括管理接口(MAD)、连接管理器(CM)接口和子网管理员(SA)接口。该堆栈包括用于用户模式和内核应用程序的组件。核心服务在内核中运行,并为Verbs、CM 和管理的用户模式提供接口。
上层协议 (ULP)
IP over IB (IPoIB)
IP over IB (IPoIB) 驱动程序是基于 InfiniBand 的网络接口实现。IPoIB 通过 InfiniBand 连接或数据报传输服务封装 IP 数据报。IPoIB 在 IP 数据报前面附加一个封装头,并通过 InfiniBand 传输服务发送结果。传输服务默认为不可靠数据报 (UD),但如果支持 RC,它也可以配置为可靠连接 (RC)。该接口支持单播、组播和广播。有关详细信息,请参阅“ IP over InfiniBand (IPoIB) ” 部分。
RDMA 的 iSCSI 扩展 (iSER)
RDMA 的 iSCSI 扩展 (iSER) 将 iSCSI 协议扩展到 RDMA。它允许直接将数据传入和传出 SCSI 缓冲区,而无需中间数据副本。有关详细信息,请参阅“ RDMA 的 iSCSI 扩展 (iSER) ”部分。
SCSI RDMA 协议 (SRP)
SCSI RDMA 协议 (SRP) 旨在充分利用 InfiniBand 架构提供的协议卸载和 RDMA 功能。SRP 允许在 InfiniBand 架构上轻松使用大量 SCSI 软件。SRP 驱动程序(称为 SRP 发起程序)与 Linux 中的传统低级 SCSI 驱动程序不同。SRP Initiator 不控制本地 HBA;相反,它控制与 I/O 控制器(称为 SRP 目标)的连接,以通过 InfiniBand 结构提供对远程存储设备的访问。SRP 目标驻留在 I/O 单元中并提供存储服务。请参阅“ 2019-09-16_14-14-40_.SRP—SCSI RDMA 协议 v4.5-1.0.1.0 ”部分。
用户直接访问编程库 (uDAPL)
用户直接访问编程库 (uDAPL) 是一种标准 API,可通过 RDMA 互连 InfiniBand 和 RoCE 提升数据中心应用程序数据消息传递的性能、可扩展性和可靠性。uDAPL 接口由 DAT 协作定义。此版本的 DAT 1.2 和 2.0 规范的 uDAPL 参考实现包的发布时间与 Open Fabrics ( www.openfabrics.org ) 软件堆栈的 OFED 版本同步。
MPI
消息传递接口 (MPI) 是一种库规范,使并行软件库的开发能够利用并行计算机、集群和异构网络。NVIDIA OFED 在 InfiniBand 上包括以下 MPI 实现:
- Open MPI – Open MPI 项目的开源 MPI-2 实现
NVIDIA OFED 还包括 MPI 基准测试,例如 OSU BW/LAT、Intel MPI BeBenchmark 和 Presta。
InfiniBand 子网管理器
所有符合 InfiniBand 的 ULP 都需要始终正确运行在 InfiniBand 结构上运行的子网管理器 (SM)。SM 可以运行在任何节点或 IB 交换机上。OpenSM 是一个与 InfiniBand 兼容的子网管理器,它作为 NVIDIA OFED 1的一部分安装。
- OpenSM 默认关闭。有关启用它的详细信息,请参阅“ OpenSM ”部分。
诊断实用程序
NVIDIA OFED 包括以下两个诊断包,供网络和数据中心管理人员使用:
- ibutils—NVIDIA 诊断实用程序
- infiniband-diags—OpenFabrics Alliance InfiniBand 诊断工具
NVIDIA 固件工具 (MFT)
NVIDIA 固件工具包是一组用于单个 InfiniBand 节点的固件管理工具。MFT 可用于:
- 生成标准或定制的 NVIDIA 固件镜像
- 将固件镜像刻录到单个 InfiniBand 节点
MFT 包括一组用于执行固件更新和配置以及调试和诊断的工具,并提供 MST 服务。有关 MFT 中可用工具的完整列表,请参阅 MFT 文档 ( https://docs.mellanox.com/category/mft )。
