CodingBox ドキュメント

ストレージ向けロスレス Ethernet:DCB、PFC、ECN

Ethernet は輻輳するとフレームを破棄しますが、Fibre Channel や RDMA 向けに作られたストレージプロトコルは、フレームが決して失われないことを前提としています。Data Center Bridging(DCB)は、優先度ごとのフロー制御と帯域割り当てによってこのギャップを埋め、RoCE はその上に輻輳シグナリングを加えます。結果として得られるロスレス性は、最も弱いリンクの水準でしかありません。100万フレームに1つを落とすような限界品質の光学部品は、ストレージのインシデントになります。このページではそのメカニズムを説明し、物理層の要件に落とし込みます。

DCB のツール一式

規格名称機能
IEEE 802.1QbbPFC——優先度ベースフロー制御トラフィッククラス(0–7)ごとのポーズフレーム:輻輳した受信側は、ポート全体を止めずに1クラスだけを止める
IEEE 802.1QazETS——拡張伝送選択クラスごとの帯域幅の保証配分(例:ストレージ 50 %、LAN 50 %)
IEEE 802.1QazDCBX——DCB エクスチェンジスイッチと NIC 間で PFC/ETS 設定を LLDP ベースでネゴシエート
IEEE 802.1QauCN——輻輳通知導入例はまれ
RFC 3168 + DCQCNECN マーキング+レート制御キューが積み上がるとスイッチがパケットにマークを付け、RoCE の NIC は PFC が必要になる前にフローを減速させる

RoCE がロスレスを保つ仕組み

  1. ストレージ/RDMA トラフィックには、DSCP または 802.1p により専用の優先度 (多くは 3 か 4)がタグ付けされます。
  2. 経路上のすべてのポートでその優先度のみ PFC を有効化し、リンク速度とケーブル長(伝送中バイト数)に応じたバッファのヘッドルームを確保します。
  3. ECN のしきい値がパケットに早期にマークを付け、NIC はDCQCN を実行してレートを下げるため、PFC は最後の手段としてのみ発動します。
  4. ETS は LAN の負荷がかかっている状況でも、ストレージクラスの帯域を保証します。
  5. 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 transceiverDDM)。

他のフォワーディングの仕組みの中で PFC と ECN がどのような位置づけにあり、物理層のエラーがそこにどう現れるか: フォワーディングの基礎


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