ストレージ向けロスレス Ethernet:DCB、PFC、ECN
Ethernet は輻輳するとフレームを破棄しますが、Fibre Channel や RDMA 向けに作られたストレージプロトコルは、フレームが決して失われないことを前提としています。Data Center Bridging(DCB)は、優先度ごとのフロー制御と帯域割り当てによってこのギャップを埋め、RoCE はその上に輻輳シグナリングを加えます。結果として得られるロスレス性は、最も弱いリンクの水準でしかありません。100万フレームに1つを落とすような限界品質の光学部品は、ストレージのインシデントになります。このページではそのメカニズムを説明し、物理層の要件に落とし込みます。
DCB のツール一式
| 規格 | 名称 | 機能 |
|---|---|---|
| IEEE 802.1Qbb | PFC——優先度ベースフロー制御 | トラフィッククラス(0–7)ごとのポーズフレーム:輻輳した受信側は、ポート全体を止めずに1クラスだけを止める |
| IEEE 802.1Qaz | ETS——拡張伝送選択 | クラスごとの帯域幅の保証配分(例:ストレージ 50 %、LAN 50 %) |
| IEEE 802.1Qaz | DCBX——DCB エクスチェンジ | スイッチと NIC 間で PFC/ETS 設定を LLDP ベースでネゴシエート |
| IEEE 802.1Qau | CN——輻輳通知 | 導入例はまれ |
| RFC 3168 + DCQCN | ECN マーキング+レート制御 | キューが積み上がるとスイッチがパケットにマークを付け、RoCE の NIC は PFC が必要になる前にフローを減速させる |
RoCE がロスレスを保つ仕組み
- ストレージ/RDMA トラフィックには、DSCP または 802.1p により専用の優先度 (多くは 3 か 4)がタグ付けされます。
- 経路上のすべてのポートでその優先度のみ PFC を有効化し、リンク速度とケーブル長(伝送中バイト数)に応じたバッファのヘッドルームを確保します。
- ECN のしきい値がパケットに早期にマークを付け、NIC はDCQCN を実行してレートを下げるため、PFC は最後の手段としてのみ発動します。
- ETS は LAN の負荷がかかっている状況でも、ストレージクラスの帯域を保証します。
- DCBX は NIC とスイッチの設定を一致させます。不一致があるとロスレス性は気付かれないまま損なわれます。
FC と InfiniBand は、すべてのリンクでクレジットを使うことにより標準でこれを実現しますが、Ethernet では設定・検証・監視が必要です(FC のプロトコル基礎、 InfiniBand のトランスポート)。
起こり得る問題
| 問題 | 影響 | 検出方法 |
|---|---|---|
| 1ホップで PFC が無効、または優先度の誤り | 高負荷時にドロップ。RDMA が再送し、レイテンシがスパイクする | 本来ゼロであるべきポーズカウンターが増加。該当クラスでドロップ |
| PFC ストーム | 詰まった受信側が上流を無期限にポーズさせ、輻輳がファブリック全体に広がる | ポーズフレームの氾濫。ウォッチドッグカウンター |
| PFC デッドロック | Clos ファブリックでの循環的なバッファ依存。該当クラスの全トラフィックが停止する | 解除にはデッドロック検出/ウォッチドッグが必要 |
| 長いケーブル/光学部品に対してヘッドルームが小さすぎる | PFC があってもドロップが発生する | ポーズカウンターが動作中にもドロップが発生 |
| ECN のしきい値が不適切 | 早すぎるとスループット低下、遅すぎると PFC が氾濫する | ECN マークカウンター、NIC の CNP カウンター |
| リンクの物理エラー(CRC、訂正不能な FEC) | フロー制御では回収できないフレーム損失 | ポートエラーカウンター、FEC カウンター——VDM と FEC 指標 |
DCB を使わない iSCSI
iSCSI は TCP 上で動作し、損失が発生しても持ちこたえますが、その代償としてレイテンシと再送が発生します。DCB の有無にかかわらず推奨される方法は次のとおりです。
- ファブリックごとに専用の VLAN/サブネットを用意し、2つのファブリックとホスト側の MPIO を使う。
- エンドツーエンドでジャンボフレーム(MTU 9000)を使う。
- イニシエーターとターゲットの間でオーバーサブスクリプションを避け、アレイに見合った 25G/100G のアップリンクを用意する。
- 25G 以上のすべてのリンクで FEC を有効にし、CRC カウンターをゼロに保つ。
- マイクロバーストを平滑化するため、iSCSI クラスに PFC を任意で使う(多くのアレイが推奨している)。
物理層の要件
| 要件 | 理由 | 実務上の対応 |
|---|---|---|
| 25G 以上のすべてのリンクでFEC を有効にし、両端を一致させる | RoCE は、保護されていない 25G/50G レーンの生の BER に耐えられない | FEC とリンクトレーニング |
| CRC と訂正不能 FEC を 0 に保つ | フレームを1つ失うだけでキューが停止する | 増加があれば即座にアラートを出す |
| Rx パワーが余裕を持って範囲内にある | 限界品質の光学部品は温度変化でエラーがバースト的に発生する | Rx パワーとリンクバジェット |
| 速度/デュプレックス/AN の一致 | DAC は両端で AN とリンクトレーニングが必要 | 銅線と DAC |
| ケーブル長がヘッドルームの想定内にある | ヘッドルームは伝送中バイト数から計算される | ラック内は DAC、列内は SR/AOC、部屋間は DR/LR を優先する |
| NIC とスイッチが識別情報を受け入れる | 拒否された光学部品はリンク断、または速度低下にフォールバックする | ベンダーロック |
監視チェックリスト
- ポートごと:優先度別の送受信ポーズフレーム、ECN マーク、クラス別ドロップ、 CRC、FEC の訂正/訂正不能、リンクフラップ。
- NIC ごと:CNP の送受信、再送、順序逆転、タイムアウト。
- 光学部品ごと:Rx/Tx パワーと温度のトレンド(監視)。
- ストレージのテールレイテンシのスパイクを、以上の項目と突き合わせます——原因はアレイよりも物理層にあることが多いのです。
CodingBox では
ロスレスファブリックは、単により高い基準を課された普通の光学部品から成り立っています。ベンチでの受入検査——識別情報、チェックサム、 標準的な値と照らした実測 DDM、ベースラインの保存——こそが、1本の不良リンクがアプリケーションのレイテンシ SLA を損なうようなファブリックから、限界品質のモジュールを締め出す方法です(Check transceiver、 DDM)。
他のフォワーディングの仕組みの中で PFC と ECN がどのような位置づけにあり、物理層のエラーがそこにどう現れるか: フォワーディングの基礎。