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/NAK | RDMA 位於此層 |
| 上層 | verbs API、MPI、NCCL(通過 UCX/SHARP)、儲存(SRP、iSER、NVMe/IB)、IPoIB | 應用程式所使用的內容 |
尋址與身份
| 識別碼 | 長度 | 分配方 | 含義 |
|---|---|---|---|
| GUID | 64 位 | 製造商 | 端口、節點或系統的永久身份(類似 MAC 地址) |
| LID(本地識別碼) | 16 位 | 子網管理器 | 子網內的地址;轉發表使用 LID |
| GID | 128 位 | SM(前綴)+ GUID | 子網前綴 + GUID;用於跨子網及 RoCE |
| PKey(分區密鑰) | 16 位 | SM | 分區成員關係(類似 VLAN);完全成員/受限成員 |
| QPN | 24 位 | 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)(其餘處於待命狀態)。它執行以下工作:
- 通過在網絡中發送定向路由管理數據包(VL15/QP0 上的 SMP)來發現拓撲——覆蓋每個交換機和 HCA 端口。
- 分配 LID,並配置端口(速率、寬度、MTU、VL 仲裁、PKey)。
- 計算路由——最小跳數、上下(up-down)、胖樹、dragonfly+、自適應路由——並將結果編程到每台交換機的線性轉發表中。
- 定期以及在收到陷阱通知(端口上/下線)時進行掃描,繞開故障重新路由。
- 運行子網管理代理(SA),為主機的路徑查詢提供應答。
OpenSM(開源)和廠商的網絡管理器(UFM)都實現了這一功能;網絡管理器也是全局匯總端口錯誤、鏈路速率/寬度協商結果和光模組 DDM 的地方(鏈路可靠性與監測)。
鏈路協商
鏈路啟動時,兩端會將寬度(1x/2x/4x)和速率(每通道速率)協商到共同支援的最高值。若鏈路以 2x 或比預期低一代的速率啟動,相當於以太網中的「以 10G 而不是 25G 建立鏈路」:可能是某條通道的光纖或激光器問題、臨界電纜,或光模組代際不匹配(速率與速度)。網絡管理器會報告協商後的狀態;主機上可通過 ibstat / ibportstate 查看。
管理與診斷工具
| 工具 | 用途 |
|---|---|
ibstat、ibstatus | 本地端口狀態、速率、寬度、LID |
ibnetdiscover | 拓撲轉儲 |
ibdiagnet | 全網檢查:錯誤、速率/寬度不匹配、GUID 重複、電纜資訊 |
perfquery、ibqueryerrors | 逐端口計數器:符號錯誤、鏈路斷開、鏈路恢復、端口接收錯誤、過量緩衝區溢出、VL15 丟棄、FEC 計數器 |
mlxlink、mlxcables | 逐端口 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 transceiver 和 DDM 中查看。若某端口的協商速率低於額定速率,值得在工作台上讀取鏈路兩端的模組。