當前位置:
首頁 > 科技 > 關於InfiniBand知識和架構漫談

關於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串列鏈路可以在不同的信令速率下運行,然後可以捆綁在一起實現更高的吞吐量。原始信令速率與編碼方案耦合,產生有效的傳輸速率。編碼將通過銅線或光纖發送的數據的錯誤率降至最低,但也增加了一些開銷(例如,每8位數據傳輸10位)。

典型的實現是聚合四個鏈接單元(4X)。目前,InfiniBand系統提供以下吞吐量速率:

下面我們站在應用開發架構師或開發者的角度,分析、解讀下 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技術的透明操作。

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

溫馨提示:

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 架構師技術聯盟 的精彩文章:

詳解Kafka:大數據開發最火的核心技術
深入淺出:如何做好系統性能評估?

TAG:架構師技術聯盟 |