CodingBox 說明文件

IB 協議與傳輸:層級、QP、RDMA 與子網管理器

InfiniBand 從一開始就被設計為讓電腦之間直接訪問彼此記憶體的網絡,而不是在陌生節點之間傳送數據包。它的層級、尋址和管理方式對以太網工程師來說顯得陌生,但一旦掌握了詞彙就很簡單——這也解釋了為甚麼物理層要遵循如此嚴格的標準。本頁是協議視角;光模組內容見 InfiniBand 光模組

內容說明
物理層通道(1x、4x、8x、12x)、每通道信號(從 NRZ 到 HDR 的 PAM4……參見 速率)、編碼(QDR 及之前為 8B/10B,FDR 起為 64B/66B)、FEC(FDR 起可選,HDR/NDR 採用 RS-FEC)光模組的世界
鏈路層帶 LID 的本地路由頭(LRH)、虛擬通道(VL0–VL14 為數據,VL15 為管理)、按 VL 劃分的基於信用的流量控制、鏈路層 CRC(ICRC/VCRC)天生無損
網絡層帶 128 位 GID 的全局路由頭(GRH),用於多子網路由在單個集群內較少使用
傳輸層帶發送/接收佇列的佇列對(QP)、服務類型 RC/UC/UD/XRC、按 MTU 分段、用於可靠服務的 ACK/NAKRDMA 位於此層
上層verbs API、MPI、NCCL(通過 UCX/SHARP)、儲存(SRP、iSER、NVMe/IB)、IPoIB應用程式所使用的內容

尋址與身份

識別碼長度分配方含義
GUID64 位製造商端口、節點或系統的永久身份(類似 MAC 地址)
LID(本地識別碼)16 位子網管理器子網內的地址;轉發表使用 LID
GID128 位SM(前綴)+ GUID子網前綴 + GUID;用於跨子網及 RoCE
PKey(分區密鑰)16 位SM分區成員關係(類似 VLAN);完全成員/受限成員
QPN24 位HCA佇列對編號——端口內的端點

佇列對與傳輸服務

佇列對是 HCA 中由應用程式擁有的一個發送佇列和一個接收佇列。提交給它的工作請求由硬件執行;完成事件進入完成佇列。服務類型:

類型可靠面向連接用途
RC——可靠連接是(ACK/NAK、重傳)是,每個對端一個 QP大多數 RDMA 流量;MPI、NCCL、儲存
UC——不可靠連接少見
UD——不可靠數據報否,所有對端共用一個 QP管理、IPoIB、組播
XRC——擴展可靠連接跨進程共享接收佇列用於減少大型 MPI 作業的 QP 數量
RD——可靠數據報基本不使用

RDMA 操作(READ、WRITE、原子操作)直接在兩台主機的應用緩衝區之間搬運數據,無需任一方 CPU 拷貝;SEND/RECEIVE 用於傳送消息。記憶體必須先被註冊(鎖定並分配密鑰),HCA 才能訪問它。GPUDirect RDMA 將這一能力擴展到 GPU 記憶體(GPU 網絡)。

流量控制與 MTU

每條鏈路都運行按虛擬通道劃分的基於信用的流量控制:接收方聲明緩衝空間,發送方發送的數據永遠不超過對方能夠接收的量。不會因擁塞而丟幀;相反,反壓會向上游傳播——這與 Fibre Channel 的信用機制是同樣的權衡,也是單條慢速或出錯鏈路會拖慢整個作業的原因。鏈路 MTU 為 256–4096 位元組(典型值 4096);路徑 MTU 由端到端協商確定。服務等級(SL)映射到虛擬通道以區分流量類別,自適應路由可以引導流量繞開擁塞鏈路。

子網管理器

每個子網恰好有一個活動的子網管理器(SM)(其餘處於待命狀態)。它執行以下工作:

  1. 通過在網絡中發送定向路由管理數據包(VL15/QP0 上的 SMP)來發現拓撲——覆蓋每個交換機和 HCA 端口。
  2. 分配 LID,並配置端口(速率、寬度、MTU、VL 仲裁、PKey)。
  3. 計算路由——最小跳數、上下(up-down)、胖樹、dragonfly+、自適應路由——並將結果編程到每台交換機的線性轉發表中。
  4. 定期以及在收到陷阱通知(端口上/下線)時進行掃描,繞開故障重新路由。
  5. 運行子網管理代理(SA),為主機的路徑查詢提供應答。

OpenSM(開源)和廠商的網絡管理器(UFM)都實現了這一功能;網絡管理器也是全局匯總端口錯誤、鏈路速率/寬度協商結果和光模組 DDM 的地方(鏈路可靠性與監測)。

鏈路協商

鏈路啟動時,兩端會將寬度(1x/2x/4x)和速率(每通道速率)協商到共同支援的最高值。若鏈路以 2x 或比預期低一代的速率啟動,相當於以太網中的「以 10G 而不是 25G 建立鏈路」:可能是某條通道的光纖或激光器問題、臨界電纜,或光模組代際不匹配(速率與速度)。網絡管理器會報告協商後的狀態;主機上可通過 ibstat / ibportstate 查看。

管理與診斷工具

工具用途
ibstatibstatus本地端口狀態、速率、寬度、LID
ibnetdiscover拓撲轉儲
ibdiagnet全網檢查:錯誤、速率/寬度不匹配、GUID 重複、電纜資訊
perfqueryibqueryerrors逐端口計數器:符號錯誤、鏈路斷開、鏈路恢復、端口接收錯誤、過量緩衝區溢出、VL15 丟棄、FEC 計數器
mlxlinkmlxcables逐端口 PHY 詳情以及電纜/光模組 EEPROM、DDM、FEC 直方圖
ibportstate強制指定速率/寬度、重置端口

符號錯誤和鏈路恢復是物理層計數器——相當於以太網的 CRC/FEC,與接收光功率和潔淨度相關(網絡)。

一段話說清 InfiniBand 與 RoCE 的區別

RoCE v2 在 UDP/IP/以太網之上承載相同的 verbs/RDMA 傳輸;它用 IP 路由取代子網管理器,用 VLAN 取代 PKey,用 PFC/ECN(DCQCN)取代信用流量控制——而後者必須正確配置才能實現無損(無損以太網互連)。光模組在物理上完全相同;不同的只是身份編碼和主機策略。

在 CodingBox 中

InfiniBand 模組的讀取方式與其他 QSFP/OSFP 相同:身份資訊(包括 SFF-8636 位元組 164 中的 InfiniBand 速率位,或 CMIS applications 欄位)、逐通道 DDM 和校驗和,均可在 Check transceiverDDM 中查看。若某端口的協商速率低於額定速率,值得在工作台上讀取鏈路兩端的模組。


如果您發現本文有不準確之處或錯誤,請選取相應片段並按 Ctrl+Enter,即可