CodingBox 說明文件

NVMe over Fabrics:FC-NVMe、NVMe/TCP、NVMe/RoCE 及其光模組

NVMe 在伺服器內部取代了 SCSI,因為快閃記憶體足夠快,能夠暴露出協議本身的開銷; NVMe over Fabrics(NVMe-oF)將同一套命令集擴展到網絡之上,讓共享儲存也能跟上這一速度。它運行在三種傳輸方式之上,分別對應三類網絡——因而也對應三類光模組和三套物理層規則。本文比較這三者,並說明每一種對鏈路提出的要求。

為甚麼選擇 NVMe-oF

方面SCSI 時代(FCP、iSCSI)NVMe-oF
命令佇列單佇列,約 32–256 條命令最多 64k 個佇列 × 64k 條命令;設計上即為並行
每次 I/O 的協議開銷數十 µs 的 CPU 時間數 µs;RDMA 傳輸繞過 CPU
網絡增加的延遲典型 100–200 µs10–30 µs(RDMA/FC)、30–80 µs(TCP)
最適合HDD 和早期快閃記憶體陣列全快閃記憶體、解耦儲存、GPU 數據管道

傳輸方式

傳輸方式網絡無損?延遲說明
FC-NVMe(FC-NVMe-2)Fibre Channel 16/32/64GFC是,通過信用機制很低與 SCSI FCP 運行在同一網絡和同一批 SFP 上;分區和名稱伺服器不變(FC 協議基礎
NVMe/RoCE v2帶 RDMA NIC 的 25/100/200/400G 以太網需要 PFC/ECN(DCQCN)很低RDMA verbs 運行在 UDP/IP 之上;需要端到端的無損配置(無損以太網
NVMe/TCP任意以太網/IP否——丟包由 TCP 處理低到中無需特殊 NIC 或交換機功能;可路由;企業環境中的主流選擇
NVMe/IBInfiniBand是,通過信用機制很低HPC/AI 儲存(InfiniBand

四者共享同一套 NVMe-oF 架構:發現控制器告訴主機存在哪些子系統;主機將佇列 連接到 I/O 控制器;ANA(非對稱命名空間訪問)負責處理多路徑。

每種傳輸對物理層的要求

傳輸方式鏈路要求光模組
FC-NVMe乾淨的 FC 鏈路——CRC/ITW 接近零,信用未耗盡FC SFP 16/32/64GFC,經過廠商驗證(FC 光模組
NVMe/RoCE零丟包:開啟 FEC,在 RoCE 類別上開啟 PFC,無 CRC 錯誤(每丟失一幀都會以 go-back-N 重傳方式卡住 RDMA 佇列)25G SFP28 / 100G QSFP28 / 400G;機櫃內用 DAC,同排用 SR/AOC,跨機房用 LR/DR;FEC 按 PMD 而定
NVMe/TCP普通鏈路;丟包影響的是延遲,而非正確性任意以太網光模組
NVMe/IB與 InfiniBand 網絡相同IB 線纜和光模組(IB 佈線

RoCE 是最敏感的一個:接收光功率偏低或介面不潔淨的鏈路會產生 CRC 錯誤,這類錯誤在 TCP 下會被默默吸收,但會明顯卡住 RDMA 佇列。儲存延遲出現尖峰、且與端口錯誤計數器同步變化,就是這一問題的信號(接收光功率與鏈路預算VDM 與 FEC 指標)。

如何選擇

場景合適的傳輸方式
已有 FC SAN、全快閃記憶體陣列FC-NVMe——同一網絡,同一批光模組,按目標逐個啟用
新建以太網儲存、多廠商混用、跨站點路由NVMe/TCP
延遲敏感、單一廠商以太網、內部具備無損網絡經驗NVMe/RoCE
採用 IB 網絡的 HPC/AI 集群NVMe/IB,或基於 IB 的並行檔案系統
採用以太網橫向擴展的 GPU 集群NVMe/RoCE,或在獨立儲存網絡上使用 NVMe/TCP(GPU 網絡

運維要點

  • 分離組網:儲存與計算儘可能分開建網——至少劃分獨立的流量類別;RoCE 需要專屬的無損流量類別。
  • MTU:以太網傳輸上設為 9000;全程保持一致。
  • 多路徑:兩張網絡,或兩組 VLAN/leaf;啟動器需支援 ANA。
  • 監控:按端口監控 CRC/FEC 和暫停幀計數器,再加上 DDM 趨勢——衰退中的光模組會先表現為尾部延遲升高,早於其徹底故障(監控)。
  • 固件:NIC/HBA 與陣列的固件兼容性矩陣,和光模組兼容性同樣重要(SAN 中的光模組)。

在 CodingBox 中

NVMe-oF 網絡所用的光模組,就是普通的 FC、以太網或 IB 模組;區別在於該傳輸方式對錯誤的容忍度有多低。安裝前在工作台上讀取識別資訊、測量基線 DDM (Check transceiver(檢測光模組)、 DDM),以及寫入陣列和交換機廠商能夠接受的識別資訊(廠商鎖定),是這項工作中涉及編程器的部分。

這些網絡所運行的適配器——100G/200G NIC、其籠位、PCIe 限制和模組策略:帶光口的 NIC


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