架構

關于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技術的透明操作。

這樣使得采用LibC接口的用戶應用程序和內核級采用Linux文件系統接口的應用程序的透明化,不會感知底層使用的是什么互連技術。

我還沒有學會寫個人說明!

日志易陳軍:創業之路本身就是試出來的

上一篇

一個知名網站的微服務架構最佳實現

下一篇

你也可能喜歡

關于InfiniBand知識和架構漫談

長按儲存圖像,分享給朋友

ITPUB 每周精要將以郵件的形式發放至您的郵箱


微信掃一掃

微信掃一掃
排球主场论坛