1. 程式人生 > 其它 >Infiniband技術規範之架構預覽 (1)

Infiniband技術規範之架構預覽 (1)

https://zhuanlan.zhihu.com/p/336680341


風口的DCN網路 長期研究資料中心網路方面的技術,wx公眾號“網路技術風雲匯”

本文摘自公眾號:網路技術風雲匯

IBA定義了一個系統區域網路(System Area Network,SAN),用於連線多個獨立處理器平臺(即主機處理器節點)、i/O平臺和i/O裝置(見圖6)。IBA SAN是一種通訊和管理基礎設施,支援一個或多個計算機系統的I/O和處理器間通訊(interprocessor communications, IPC)。IBA系統可以從一個擁有一個處理器和幾個I/O裝置的小型伺服器到安裝有數百個處理器和數千個I/O裝置的大型並行超級計算機。此外,IBA的網際網路協議(IP)友好性質允許橋接到internet、intranet或與遠端計算機系統的連線。

IBA定義了一種交換通訊結構(亦稱為Fabric,下同,可互換),允許許多裝置在受保護的遠端管理環境中以高頻寬和低延遲併發通訊。一個終端節點可以通過多個IBA埠進行通訊,並且可以利用IBA Fabric的多條路徑。IBA埠和路徑的多樣性可用於容錯和增加資料傳輸頻寬。

IBA硬體從CPU解除安裝大部分I/O通訊操作。這允許多個併發通訊,而無需與通訊協議相關的傳統開銷。IBA SAN提供其I/O和IPC客戶端零處理器拷貝資料傳輸,無需核心參與,並使用硬體提供高可靠性、容錯通訊。

IBA系統區域網由處理器節點和I/O單元組成,它們通過由級聯交換機和路由器組成的IBA Fabric連線。

IO單元的複雜程度可以從單個ASIC IBA連線裝置(如SCSI或LAN介面卡)到大型記憶體豐富的RAID子系統(其複雜性可與處理器節點媲美)到複雜的分散式並行檔案系統。

1 架構範圍

此InfiniBand架構規範定義了互連結構、路由元素、端節點、管理基礎設施以及通訊格式和協議。它不指定I/O命令或群集服務。

例如,考慮一個IBA-SCSI介面卡。IBA沒有定義磁碟I/O命令、SCSI介面卡如何與磁碟通訊、作業系統(OS)如何檢視磁碟裝置,也沒有定義叢集中哪個節點擁有磁碟介面卡。IBA是這些操作的基礎,但並不直接定義任何操作。相反,IBA定義瞭如何在處理器節點上的I/O驅動程式和SCSI介面卡之間傳輸資料和命令。

IBA在多計算機環境中處理I/O和IPC的資料通訊。它支援IO所需的高頻寬和可擴充套件性。它滿足了IPC所需的極低延遲和低CPU開銷。通過IBA,作業系統可以為客戶端提供繞過作業系統核心的通訊機制,直接訪問IBA網路通訊硬體,實現高效的訊息傳遞操作。

IBA非常適合最新的計算模型,是新形式I/O和叢集通訊的構建塊。IBA允許I/O單元之間以及與系統中的任何或所有處理器節點進行通訊。因此,I/O單元具有與任何處理器節點相同的通訊能力。

1.1 拓撲和元件

在較高的層次上,IBA充當終端節點的互連,如圖7所示。每個節點可以是處理器節點、I/O單元和/或到另一個網路的路由器。

IBA網路被細分為由路由器互連的子網,如圖8所示。端節點可以連線到一個子網或多個子網。

IBA子網由端節點、交換機、路由器和子網管理器組成,通過鏈路互連,如圖9所示。每個IBA裝置可以連線到一個或多個交換機和/或直接彼此連線。任何兩個IBA裝置之間可以存在多個鏈路。

該體系結構針對包含多個獨立程序和執行緒(使用者)的單元進行了優化,如圖10所示。每個通道介面卡構成結構上的一個節點。該體系結構支援每個單元有多個通道介面卡,每個通道介面卡提供一個或多個連線到fabric的埠,在這種情況下,處理器節點呈現為(被當做)fabric的多個端節點。

在處理器節點中,訊息和資料服務是一個不在本文件範圍內的作業系統元件。本文件指定訊息和資料服務與通道介面卡之間介面的語義行為。這個語義介面被稱為IBA Verbs。Verbs描述配置、管理和操作主機通道介面卡所需的功能。這些Verbs標識每個特定功能需要包含的適當引數。本規範中定義的Verbs不是API,而是描述API必須提供的語義行為,以便使用者能夠直接訪問InfiniBand通道介面卡提供的服務。

IBA被構建為first order網路,因此它定義主機行為(Verbs)並定義記憶體操作,以便通道介面卡可以儘可能靠近儲存器複合體。它在同意的消費者之間提供獨立的直接訪問,而不管這些消費者是I/O驅動程式和I/O控制器,還是基於點對點通訊的軟體程序。IBA提供了通道語義(傳送和接收)和直接記憶體訪問,並提供了防止非參與使用者訪問的保護級別。

2 通訊

2.1 佇列

IBA操作的基礎是非同步性質,這意味著消費者可以排隊執行一系列服務請求。硬體用於儲存這些服務請求的佇列稱為工作佇列。工作佇列通常是成對建立的,稱為佇列對(Queue Pair,QP),一個用於傳送操作,另一個用於接收操作。一般來說,傳送工作佇列儲存導致(能使)資料在使用者的記憶體和另一個使用者的記憶體之間傳輸的指令,而接收工作佇列儲存關於將從另一個使用者接收到的資料放置在何處的指令。另一個使用者被稱為遠端使用者,即使它可能位於同一個節點上。IBA專門描述主機通道介面卡(HCA)的排隊關係,但不描述I/O單元,因為I/O單元不一定受制於主機環境中存在的第二方和第三方互操作性(即HCA供應商、OS供應商和IHV的I/O驅動程式或ISV的應用程式之間的互操作性)IPC)。下面介紹HCA佇列模型。

使用者提交一個工作請求(WR),這將導致一個稱為工作佇列元素(WQE)的指令被放置到適當的工作佇列中。通道介面卡按照wqe在工作佇列中的順序執行WQEs。當通道介面卡完成WQE時,完成佇列元素(CQE)被放置在完成佇列上。每個CQE指定完成工作所需的所有資訊,或者直接包含該資訊,或者指向包含該資訊的其他結構,例如關聯的WQE。

每個消費者可能有自己的一組工作佇列,每對工作佇列獨立於其他工作佇列。每個使用者建立一個或多個完成佇列,並將每個傳送和接收佇列關聯到特定的完成佇列。工作佇列對的傳送和接收佇列不一定都使用相同的完成佇列。

因為有些工作佇列需要來自遠端節點的確認,而有些wqe使用多個數據包來傳輸資料,所以通道介面卡可以同時有多個wqe在進行中,甚至來自同一個工作佇列。因此,cqe被髮布到完成佇列的順序是不確定的,除了相同工作佇列的cqe通常按照相應WQE被髮布到工作佇列4的順序被髮布(4:可靠資料報服務的接收完成是例外,因為在多個EE上下文上併發接收可能導致無序。)。

有三類傳送佇列操作send、遠端記憶體訪問(RDMA)和記憶體繫結。

• 對於SEND操作,WQE在消費者的記憶體空間中指定一個數據塊,以便硬體傳送到目的地,讓已經在目的地排隊的接收WQE指定資料的放置位置。

• 對於RDMA操作,WQE還指定遠端使用者記憶體中的地址。因此,RDMA操作不需要涉及目的地的接收工作佇列。RDMA操作有3種類型,RDMA-WRITE、RDMA-READ和ATOMIC。

  • RDMA-WRITE操作規定硬體將資料從使用者的記憶體傳輸到遠端使用者的記憶體。
  • RDMA-READ操作規定硬體將資料從遠端記憶體傳輸到使用者記憶體。
  • 原子ATOMIC操作規定硬體將執行遠端64位記憶體位置的讀取。目標返回讀取的值,並通過將更新後的值寫回同一位置,有條件地修改/替換遠端記憶體內容。

記憶體繫結MEMORY BINDING指示硬體更改記憶體註冊關係(見10.6.6.2節)。它將記憶體視窗與現有記憶體區域內的指定範圍相關聯(繫結)。記憶體繫結允許使用者指定它與其他節點共享註冊記憶體的哪些部分(即遠端節點可以訪問的記憶體),並指定讀寫許可權。結果產生一個記憶體鍵(R_KEY),使用者將其傳遞給遠端節點,供其在RDMA操作中使用。

只有一個接收佇列操作,它將指定一個接收資料緩衝區。

• RECEIVE WQE指定當另一個使用者執行SEND操作時,硬體將把從另一個使用者接收到的資料放置在何處。每次遠端使用者成功地執行傳送操作時,(本地?)硬體從接收佇列獲取下一個條目,將接收到的資料放置在該接收WQE中指定的記憶體位置,並在完成佇列上放置CQE,向使用者指示接收操作已完成。因此,執行傳送操作會導致遠端使用者處的接收佇列操作。

通常,RDMA操作不會在目的地使用receive WQE,但有一個例外。用於指定即時資料的RDMA寫入操作。即時資料(Immediate data)是可選地在SEND或RDMA WRITE指令中提供的32位資訊,作為操作的一部分進行傳輸,但不是將立即資料寫入記憶體,而是將資料視為另一條狀態資訊並作為接收CQE狀態的特殊欄位返回。這意味著具有即時資料的RDMA寫入將在目的地消耗一個接收WQE。

2.2 連線

IBA同時支援面向連線和資料報服務。對於連線的服務,每個QP只與一個遠端使用者相關聯。在這種情況下,QP上下文配置為遠端使用者的佇列對的標識。遠端使用者由埠和QP號碼標識。埠由本地ID(LID)和可選的全域性ID(GID)標識。在通訊建立過程中,該資訊和其他資訊在兩個節點之間交換。

3 通訊堆疊

IBA的通訊堆疊如圖13所示。該體系結構提供了許多IBA事務,消費者可以使用這些事務與遠端消費者執行事務。使用者向QP釋出工作佇列元素(WQE),通道介面卡解釋每個WQE以執行操作。

對於傳送佇列Send Queue操作,通道介面卡解釋WQE,建立請求訊息。如有必要,將訊息分為多個數據包,新增適當的路由標頭,並將資料包傳送到相應的埠。

埠邏輯通過鏈路傳輸資料包,交換機和路由器通過fabric將資料包中繼到目的地。

當目的地接收到資料包時,埠邏輯驗證資料包的完整性。通道介面卡將接收到的分組與特定QP相關聯,並使用該QP的上下文來處理分組並執行操作。如果需要,通道介面卡將建立一個響應(確認)訊息,並將該訊息傳送回發起方。

接收某些請求訊息會導致通道介面卡使用接收佇列中的WQE。當它這樣做時,與所消費的WQE相對應的CQE被放置在適當的完成佇列上,這使得向擁有QP的消費者發出工作完成。

4 IBA元件

IBA系統中的裝置分為:

  • 交換機
  • 路由器
  • 通道介面卡
  • 中繼器repeaters
  • 互連交換機、路由器、中繼器和通道介面卡。

鏈路管理基礎架構包括:

  • 子網管理器subnet managers
  • 一般服務代理general service agents

4.1 鏈路和中繼器

鏈路將通道介面卡、交換機、中繼器和路由裝置互連以形成一個Fabric/結構。鏈路可以是銅纜、光纜或背板上的印刷電路佈線。中繼器是一種透明的裝置,可以擴充套件鏈路的範圍。InfiniBand Architecture的第2卷規定了各種媒介型別的鏈路和中繼器要求,並定義了I/O裝置的各種模組形式。第1卷中描述的體系結構獨立於鏈路型別和外形因素。

鏈路和中繼器不能直接定址,但是鏈路狀態可以通過鏈路兩端的裝置來確定。

4.2 通道介面卡/通道介面卡

通道介面卡(或叫通道介面卡)是處理器節點和I/O單元中生成和使用資料包的IBA裝置。IBA定義了兩種型別的通道介面卡:主機通道介面卡(HCA)和目標通道介面卡(TCA)。HCA提供一個使用者介面,提供IBA Verbs指定的功能。IBA沒有為TCA指定使用者介面的語義。

通道介面卡是一種具有特殊保護功能的可程式設計DMA引擎,允許在本地和遠端啟動DMA操作

通道介面卡可以有多個埠。通道介面卡的每個埠都分配了一個本地ID(LID)或一系列LID。每個埠都有自己的一組傳送和接收緩衝區,這樣每個埠都能夠併發地傳送和接收。緩衝通過虛擬通道(VL)傳輸,每個VL都有自己的流量控制。

通道介面卡提供記憶體轉換和保護(MTP)機制,該機制將虛擬地址轉換為實體地址並驗證訪問許可權。本檔案未規定具體的記憶體管理機制,也未對TCA規定此類機制的要求。

通道介面卡以由傳送和接收工作佇列組成的佇列對(QP)的形式向其使用者提供通訊介面的多個例項。

子網管理器用每個物理埠(即埠的LID)的本地地址配置通道介面卡。為了配置通道介面卡而與子網管理器通訊的實體稱為子網管理代理(SMA)。

每個通道介面卡都有一個由通道介面卡供應商分配的全域性唯一識別符號(GUID)。由於子網管理器分配的本地ID不是持久的(即,可能會在每次關機後更改),因此通道介面卡GUID(稱為節點GUID)成為用於永久標識通道介面卡的主要物件。此外,每個埠都有一個由通道介面卡供應商分配的埠GUID。

4.3 交換機

交換機主要根據資料包的本地路由報頭中的目標地址來傳遞資料包。交換機還消耗和獲取管理交換機本身所需的資料包。可選地,交換機埠可以包含物理TCA埠的屬性。

IBA交換機是子網內路由的基本路由元件(子網間路由由IBA路由器提供)。交換機之間的鏈路通過中繼連線。

交換機公開兩個或多個埠,在這些埠之間中繼資料包。

子網中的每個目的地都配置了一個或多個唯一的本地識別符號(LID)。資料包包含一個指定目的地的地址。從交換機的角度來看,目的地表示通過交換機的路徑。交換機元素配置有轉發表。單個數據包在交換機內根據資料包的目標LID和交換機的轉發錶轉發到一個或多個出站埠。

IBA交換機支援單播轉發,也可以支援多播轉發。單播是將單個數據包傳送到單個目的地,而多播是結構/fabric將單個數據包傳送到多個目的地的能力。

子網管理器配置交換機,包括載入其轉發表。

為了最大限度地提高可用性,可以在交換機結構中部署端節點之間的多條路徑。如果交換機之間有多條路徑可用,子網管理器可以將這些路徑用於冗餘或基於目標LID的負載共享。在存在多條路徑的情況下,子網管理器可以通過重新載入fabric區域中受影響的交換機的轉發表,圍繞故障鏈路重新路由資料包。

4.4 路由器

和交換機一樣,路由器不生成也不消耗資料包(管理包除外)。他們只是把它們傳下去。路由器根據資料包的全域性路由報頭轉發資料包,並在資料包從子網傳遞到子網時實際替換包的本地路由頭。

IBA路由器是子網間路由的基本路由元件(子網內路由由IBA交換機提供)。路由器通過在子網之間中繼資料包來互連子網。

路由器公開一個或多個埠,在這些埠之間轉發資料包。路由器可以嵌入其他裝置,如通道介面卡或交換機。

路由器對終端節點不是完全透明的,因為源節點必須指定路由器的LID並提供目的地的GID。

每個子網都用稱為子網字首的子網標識唯一。子網管理器(通過PortInfo屬性)用該子網的子網字首對所有埠進行程式設計。當與埠GUID組合時,此組合將成為埠的自然GID。埠可能有其他本地管理的GID。

從路由器的角度來看,GID的子網字首部分表示通過路由器的路徑。IPv6指定路由器之間執行的協議以派生它們的轉發表。單個包在路由器內根據包的目的地GID和路由器的轉發錶轉發到一個或多個出站埠。

每個路由器通過下一個子網將資料包轉發到另一個路由器,直到資料包到達目標子網。最後一個路由器使用與目的地GID相關聯的LID作為目的地LID來發送包。

子網管理器用有關子網的資訊配置路由器,例如要使用哪個VL和分割槽資訊。

為了最大限度地提高可用性,可以在結構中部署子網之間的多條路徑。如果有多條路徑可用,路由器可能會將這些路徑用於冗餘或負載共享。當存在多個路徑時,路由器可以圍繞故障子網重新路由資料包。

4.5 管理元件

IBA管理提供了一個子網管理器和一個支援許多通用管理服務的基礎設施。管理基礎結構要求每個節點中都有一個子網管理代理,並定義了一個允許其他通用服務代理的通用服務介面。

該體系結構定義了一個公共管理資料報(MAD)訊息結構,用於管理器和管理代理之間的通訊。

4.5.1 子網管理器

子網管理器(SM)是連線到子網的實體,負責配置和管理交換機、路由器和通道介面卡。SM可以與其他裝置一起實現,例如通道介面卡或交換機。

IBA支援每個子網多個子網管理器的概念,並指定多個子網管理器如何協商一個成為主SM。不禁止合作SMs之間的其他方法來管理主/備用關係。

主SM:

• 發現子網拓撲結構,

• 為每個通道介面卡埠配置一系列LID、GIDs子網字首和P_Key,

• 為每個交換機配置一個LID、子網字首及其轉發資料庫,

• 維護子網的端節點和服務資料庫,從而提供一個GUID到LID/GID解析服務以及一個服務目錄。

4.5.2子網管理代理

每個節點提供一個子網管理代理(SMA),SM通過稱為子網管理介面(SMI)的已知介面訪問該代理。SMI允許LID路由包和直接路由包。直接路由提供了在配置交換機和終端節點之前進行通訊的方法。只有SMI允許直接路由資料包。

4.5.3一般服務代理

每個節點可以包含稱為通用服務代理(generalserviceagents,GSA)的附加管理代理,這些管理代理可以通過稱為通用服務介面(generalserviceinterface,GSI)的眾所周知的介面進行訪問。GSI僅支援LID路由。IBA定義的一般服務類別為:

子網管理(SA)-這是由SM提供的服務,允許節點訪問有關子網的資訊,以發現其他節點和服務,解析路徑,並註冊其服務。

  • 效能管理-監視和報告定義良好的效能計數器。
  • 基板管理-提供使用第2卷中定義的IB-ML進行機箱管理的功能。
  • SNMP隧道-通過定義傳送和接收SNMP訊息的方法提供SNMP功能。
  • 供應商定義-允許裝置供應商用於遠端配置和管理其裝置的專用擴充套件。
  • 通訊管理(ComMgt)-提供終端節點之間的連線建立和其他通訊管理功能。
  • 裝置管理(DevMgt)-提供I/O資源管理。
  • 特定於應用程式-此類定義了一組可供應用程式使用的通用方法。應用程式可以自由定義新的方法和屬性,但是它們必須符合本規範後面章節中描述的管理資料報格式和限制。

未完待續,請繼續關注公眾號“網路技術風雲匯”的後續更新,謝謝!

(二維碼自動識別)