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 µs | 10–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 v2 | RDMA 対応 NIC を用いた Ethernet 25/100/200/400G | PFC/ECN(DCQCN)が必要 | 非常に低い | UDP/IP 上の RDMA verbs。エンドツーエンドでロスレス構成が必要(ロスレス Ethernet) |
| NVMe/TCP | 任意の Ethernet/IP | いいえ——TCP が損失を処理する | 低~中 | 専用の NIC やスイッチ機能は不要。ルーティング可能。エンタープライズにおける主流の選択肢 |
| NVMe/IB | InfiniBand | はい、クレジットによる | 非常に低い | 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/IB | InfiniBand ファブリックに準ずる | 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 transceiver、 DDM)、そしてアレイとスイッチのベンダーが受け入れる識別情報をコーディングすること(ベンダーロック)が、プログラマーに関わる作業です。
これらのファブリックが載るアダプター——100G/200G の NIC、そのケージ、PCIe の制約、モジュールポリシー: 光ポートを持つ NIC。