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 )。