歡迎光臨
每天分享高質量文章

InfiniBand架構和技術實戰總結

OpenFabrics Enterprise Distribution (OFED)是一組開源軟體驅動、核心核心程式碼、中介軟體和支援InfiniBand Fabric的使用者級介面程式。

2005年由OpenFabrics  Alliance (OFA)釋出第一個版本。Mellanox OFED用於Linux,Windows (WinOF),包括各種診斷和效能工具,用於監視InfiniBand網路的執行情況,包括監視傳輸頻寬和監視Fabric內部的擁塞情況。

OpenFabrics Alliance (OFA)是一個基於開源的組織,它開發、測試、支援OpenFabrics企業發行版。該聯盟的任務是開發並推廣軟體,透過將高效訊息、低延遲和最大頻寬技術架構直接應用到最小CPU開銷的應用程式中,從而實現最大應用效率。

該聯盟成立於2004年6月,最初是OpenIB聯盟,致力於開發獨立於供應商、基於Linux的InfiniBand軟體棧。2005,聯盟致力於支援Windows,此舉將使軟體棧真正跨平臺。

2006年,該組織再次擴充套件其章程,包括對iWARP的支援,在2010年增加了對RoCE (RDMA over Converged)支援透過乙太網交付高效能RDMA和核心旁路解決方案。2014年,隨著OpenFabrics Interfaces工作組的建立,聯盟再次擴大,實現對其他高效能網路的支援。

Mellanox OFED是一個單一的軟體堆疊,包括驅動、中介軟體、使用者介面,以及一系列的標準協議IPoIB、SDP、SRP、iSER、RDS、DAPL(Direct Access Programming Library),支援MPI、Lustre/NFS over RDMA等協議,並提供Verbs程式設計介面;Mellanox OFED由開源OpenFabrics組織維護。

如果前面的軟體堆疊邏輯圖過於複雜,可以參考上面的簡明介紹圖。MLNX_OFED_LINUX (Mellanox OFED for Linux) 作為ISO映像提供,每個Linux發行版,包括原始碼和二進位制RPM包、韌體、實用程式、安裝指令碼和檔案。

下麵我們站在應用開發架構師或開發者的角度,分析、解讀下 InfiniBand的架構和服務能力(簡化的InfiniBand架構)。

 

InfiniBand的軟體架構

InfiniBand軟體棧的設計是為了簡化應用部署。IP和TCP套接字應用程式可以利用InfiniBand效能,而無需對執行在乙太網上的現有應用程式進行任何更改。這同樣適用於SCSI、iSCSI和檔案系統應用程式。位於低層InfiniBand配接器裝置驅動程式和裝置獨立API(也稱為verbs)之上的上層協議提供了行業標準介面,可以無縫部署現成的應用程式。

 

LinuxInfiniBand軟體架構。該軟體由一組核心模組和協議組成。還有一些關聯的使用者樣式共享庫,這些庫在圖中沒有顯示。在使用者級操作的應用程式對底層互連技術保持透明。本文的重點是討論應用程式開發人員需要知道什麼,才能使他們的IP、SCSI、iSCSI、套接字或基於檔案系統的應用程式在InfiniBand上執行。

對協議的操作、底層核心和HCA驅動程式的詳細討論超出了本文的範圍。但是,為了完整起見,下麵是核心級別的簡要概述,下麵將介紹InfiniBand特定模組和協議。

 

核心程式碼邏輯上分為三層: HCA驅動程式、核心InfiniBand模組上層協議使用者級訪問模組實現了必要的機制,允許從使用者樣式應用程式訪問InfiniBand硬體。核心InfiniBand模組包括InfiniBand裝置的核心級中間層,中間層允許訪問多個HCA NICs並提供一組公共共享服務,包括:


中間層主要功能


  • 通訊經理(CM) –CM提供了允許客戶建立連線所需的服務。

  • SA客戶端——SA(子網管理員)客戶端提供了允許客戶端與子網管理員通訊的功能。SA包含建立連線所需的重要資訊,如路徑記錄。

  • SMA-子網管理器代理響應子網管理包,允許子網管理器在每個主機上查詢和配置裝置。

  • PMA -效能管理代理響應允許檢索硬體效能計數器的管理包。

  • MAD服務——管理資料報(MAD)服務提供一組介面,允許客戶端訪問特殊的InfiniBand佇列對(QP), 0和1。

  • GSI -通用服務介面(GSI)允許客戶端在特殊QP1上傳送和接收管理包。

  • 佇列對(QP)——重定向高層管理協議,通常將共享對特殊QP1的訪問重定向到專用QP。這是為頻寬密集型的高階管理協議所需要的。

  • SMI -子網管理介面(SMI)允許客戶端在特殊QP0上傳送和接收資料包。這通常由子網管理器使用。

  • Verbs-對中間層提供由HCA驅動程式提供的Verbs訪問。InfiniBand體系結構規範定義了Vbers。Vbers是必須提供的函式的語意描述。中間層將這些語意描述轉換為一組Linux核心應用程式程式設計介面(API)。

  • 中間層還負責在異常程式終止或客戶端關閉後,對沒有釋放的已分配資源的資源跟蹤、取用計數和資源清理。


InfiniBand堆疊的最低層由HCA驅動程式組成。每個HCA裝置都需要一個特定於HCA的驅動程式,該驅動程式註冊在中間層,並提供InfiniBand Verbs。

 

如IPoIB,SRP,SDP,iSER等高階協議,採用標準資料網路,儲存和檔案系統應用在InfiniBand上操作。除了IPoIB提供了InfiniBand上TCP/IP資料流的簡單封裝外,其他更高階別的協議透明地支援更高的頻寬、更低的延遲、更低的CPU利用率和端到端服務,使用經過現場驗證的RDMA(遠端DMA)和InfiniBand硬體的傳輸技術。下麵將討論這些高階協議,以及如何快速啟用現有的應用程式對InfiniBand進行操作。

 

IB對基於IP的應用支援

在InfiniBand上評估任何基於IP的應用程式的最簡單方法是使用上層協議IP over IB (IPoIB)。在高頻寬的InfiniBand配接器上執行的IPoIB可以為任何基於ip的應用程式提供即時的效能提升。IPoIB支援在InfiniBand硬體上的(IP)隧道資料包。

如下圖,在Linux中,協議是作為標準的Linux網路驅動程式實現的,這允許任何使用標準Linux網路服務的應用程式或核心驅動程式在不修改的情況下使用InfiniBand傳輸。Linux核心2.6.11及以上版本支援IPoIB協議,並對InfiniBand核心層和基於Mellanox技術公司HCA的HCA驅動程式的支援。

這種在InfiniBand上啟用IP應用程式的方法對於頻寬和延遲不重要的管理、配置、設定或控制平面相關資料是有效的。由於應用程式繼續在標準TCP/IP網路棧上執行,應用程式完全不知道底層I/O硬體。然而,為了獲得充分的效能並利用InfiniBand體系結構的一些高階特性,應用程式開發人員也可以使用套接字直接協議(SDP)和相關的基於套接字的API。

InfiniBand不僅對基於IP的應用提供了支援,同時對基於Socket、SCSI和iSCSI,以及對NFS的應用程式提供了支援。

例如,在iSER協議中,採用了SCSI中間層的方法插入到Linux,iSER在額外的抽象層(CMA,Connection Manager Abstraction layer)上工作,實現對基於InfiniBand和iWARP的RDMA技術的透明操作。

 

這樣使得採用LibC介面的使用者應用程式和核心級採用Linux檔案系統介面的應用程式的透明化,不會感知底層使用的是什麼互連技術。具體技術細節,請參考梳理成文的“InfiniBand架構和技術實戰總結”電子書,目錄如下所示,點選原文連結獲取詳情。

InfiniBand軟體和協議在主要的Linux、Windows版本和虛擬機器監控程式(Hypervisor)平臺上得到了支援和支援。這包括Red Hat Enterprise Linux、SUSE Linux Enterprise Server、Microsoft Windows Server和Windows CCS (計算叢集伺服器)以及VMware虛擬基礎設施平臺。

推薦閱讀:

溫馨提示:

請搜尋“ICT_Architect”“掃一掃”二維碼關註公眾號,點選原文連結獲取更多技術文章

求知若渴, 虛心若愚

贊(0)

分享創造快樂