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

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)

分享創造快樂