CodingBox ドキュメント

NVMe over Fabrics:FC-NVMe、NVMe/TCP、NVMe/RoCE とその光モジュール

サーバー内部で NVMe が SCSI に取って代わったのは、フラッシュが十分に高速でプロトコルオーバーヘッドが表面化するようになったからです。NVMe over Fabrics (NVMe-oF)は同じコマンドセットをネットワーク越しに運び、共有ストレージがその速度に追随できるようにします。NVMe-oF は3種類のトランスポート上で動作し、それぞれが 3種類のネットワーク——つまり3種類の光学部品と3組の物理層ルール——に対応します。このページではそれらを比較し、各トランスポートがリンクに何を要求するかを説明します。

なぜ NVMe-oF なのか

観点SCSI 時代(FCP、iSCSI)NVMe-oF
コマンドキュー1キュー、約 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はい、クレジットによる非常に低い同じファブリックと SFP 上で SCSI の FCP と並行して動作。ゾーニングとネームサーバーは変わらない(FC のプロトコル基礎
NVMe/RoCE v2RDMA 対応 NIC を用いた Ethernet 25/100/200/400GPFC/ECN(DCQCN)が必要非常に低いUDP/IP 上の RDMA verbs。エンドツーエンドでロスレス構成が必要(ロスレス Ethernet
NVMe/TCP任意の Ethernet/IPいいえ——TCP が損失を処理する低~中専用の NIC やスイッチ機能は不要。ルーティング可能。エンタープライズにおける主流の選択肢
NVMe/IBInfiniBandはい、クレジットによる非常に低いHPC/AI ストレージ(InfiniBand

この4つはすべて NVMe-oF のアーキテクチャを共有しています。ディスカバリーコントローラーがホストにどのサブシステムが存在するかを伝え、ホストはキューを I/O コントローラーへ接続します。ANA(非対称ネームスペースアクセス)がマルチパスを扱います。

各トランスポートが物理層に求めるもの

トランスポートリンクの要件光学部品
FC-NVMeクリーンな FC リンク——CRC/ITW がほぼゼロ、クレジットを使い切らないFC SFP 16/32/64GFC、ベンダー検証済み(FC の光学部品
NVMe/RoCE損失ゼロ:FEC 有効、RoCE クラスで PFC 有効、CRC エラーなし(フレームを1つ失うだけで、go-back-N 再送により RDMA キューが停止する)25G SFP28 / 100G QSFP28 / 400G。ラック内は DAC、列内は SR/AOC、部屋間は LR/DR。PMD ごとの FEC
NVMe/TCP通常どおり。損失は正確性ではなくレイテンシを犠牲にする任意の Ethernet 光学部品
NVMe/IBInfiniBand ファブリックに準ずるIB のケーブルと光学部品(IB のケーブル

とりわけ敏感なのが RoCE です。Rx パワーが限界に近い、あるいはコネクターが汚れているリンクは CRC エラーを生みますが、これは TCP であれば黙って吸収される一方で、 RDMA キューを目に見える形で停止させます。ポートのエラーカウンターと連動するストレージのレイテンシスパイクが、その兆候です(Rx パワーとリンクバジェットVDM と FEC 指標)。

選び方

状況適切なトランスポート
既存の FC SAN、オールフラッシュアレイFC-NVMe——同じファブリック、同じ光学部品、ターゲットごとに有効化
グリーンフィールドの Ethernet ストレージ、複数ベンダー混在、拠点間ルーティングNVMe/TCP
レイテンシが重要、単一ベンダーの Ethernet、社内にロスレスの知見があるNVMe/RoCE
IB ファブリックを持つ HPC/AI クラスターNVMe/IB、または IB 上の並列ファイルシステム
Ethernet でスケールアウトする GPU クラスター別のストレージネットワーク上の NVMe/RoCE または NVMe/TCP(GPU ファブリック

運用上の注意点

  • 可能であればストレージとコンピュートでネットワークを分離する——最低でもトラフィッククラスは分離する。RoCE には専用のロスレスクラスが必要です。
  • MTU:Ethernet トランスポートでは 9000。エンドツーエンドで統一します。
  • マルチパス:2つのファブリック、または2組の VLAN/リーフ。ANA 対応のイニシエーター。
  • 監視:ポートごとの CRC/FEC とポーズカウンター、加えて DDM のトレンド——劣化する光学部品は、故障するかなり前からテールレイテンシとして現れます(監視)。
  • ファームウェア:NIC/HBA とアレイのファームウェア互換性マトリクスは、光学部品の互換性と同じくらい重要です(SAN における光学部品)。

CodingBox では

NVMe-oF ファブリックの光学部品は、通常の FC、Ethernet、IB のモジュールです。違うのは、トランスポートが許容するエラーの少なさです。設置前にベンチで識別情報とベースラインの DDM を読み取ること(Check transceiverDDM)、そしてアレイとスイッチのベンダーが受け入れる識別情報をコーディングすること(ベンダーロック)が、プログラマーに関わる作業です。

これらのファブリックが載るアダプター——100G/200G の NIC、そのケージ、PCIe の制約、モジュールポリシー: 光ポートを持つ NIC


この記事に不正確な点や誤りを見つけた場合は、該当する箇所を選択して Ctrl+Enter を押すと、できます。