バッファ間クレジット管理とは
すべてのとおり
環境
- FlexPod
- ファイバチャネル
回答
バッファ間クレジット(BBクレジット)の仕組み
- Fiber Channelでは、ハードウェアベースのフロー制御にBBクレジット メカニズムを使用します。このメカニズムでは、ポートがポートの処理バッファに合わせてフレームのフローを調整できます。
- バッファ間クレジットを使用してフロー制御を管理し、受信側のスイッチ デバイスを飽和状態にすることなく送信できるフレーム数を特定します。このメカニズムにより、スイッチ ハードウェアで輻輳が原因のフレームの破棄が発生しなくなります。
- あるポートのクレジット数は、フレームの確認応答を受け取るまでの間にポートが送信できるフレーム数です。BBクレジットの管理は、相互に接続された2つのFiber Channelポート間で行われます。
例:
- 1つのNポートと1つのFポート
- 2つのEポート
- ポイントツーポイント トポロジの2つのNポート
- アービトレーテッド ループの各種のモード
フレームの確認応答メカニズムでは、受信側で利用可能な個々のバッファについて、受信ポートから送信ポートにR_RDY(Receiver Ready)プリミティブが送信されます。
送信ポートは受信側の空きバッファ数を保持し、これが0になるまでフレームの送信を継続します。
BBクレジットは、クラス2およびクラス3のサービスで使用され、受信側から送信側に送信されるR_RDY(Receiver Ready)に基づいて管理されます。ノードのペアは、FLOGI/PLOGIの実行時に、それぞれの使用可能なクレジット数を伝達します。送信側は、この値を使用して受信バッファの使用状況を追跡し、必要に応じて送信ペースを調整します。FCスイッチでは、使用可能なBBクレジットを次のように追跡します。
- 送信側は、データ フレームを送信する前に、FLOGIで受信側から伝達されたBBクレジットの値にカウンタを設定します。
- 送信側からデータ フレームが1つ送信されるたびに、カウンタの値が1つ減ります。
- データ フレームを受け取った受信側は、ステータス フレーム(R_RDY)を送信側に送信し、データ フレームを受け取ったこと、および別のデータ フレームを受け取る準備ができたことを通知します。
- 送信側がR_RDYを受け取るたびに、カウンタの値が1つ増えます。
注: VC_RDY は、 Virtual Channel ( VC; 仮想チャネル)テクノロジで使用される Brocade 独自のバージョンの R_RDY です。このドキュメントでは、R_RDYとVC_RDYの両方について「R_RDY」と記述しています。
特定のリンク速度と長さで必要な BB クレジットの数はいくつですか。
上記の計算は、 MetroCluster FC バックエンド構成には適用されません。 |
- ファブリック ログイン時、リンク両端のNポートとFポートの間でBBクレジットが確立されます。各ポートが提供できるBBクレジットの最大数を宣言し、少ない方が使用されます。
- ホストとターゲットのHost Bus Adapter(HBA;ホスト バス アダプタ)では、BBクレジット数は固定で、変更することはできません。ただし、ファイバチャネルスイッチは、指定された速度とリンク距離を考慮して、各ポートの BB_Credit を内部的に計算します。
- 特定の距離に必要なBBクレジット数を求める計算式を次に示します(最大フレーム サイズを想定)。
(X * Y / 2) + 6 = B
B = 必要なBBクレジット数
X = 距離(km)* (念のため、実際の距離の1.5倍に設定)
Y = 速度
6 = ファブリック サービスに必要なポートあたりのバッファ数(常に6)
注:リンクで QoS が有効になっている場合は、 QoS 管理に必要なクレジットをさらに 14 クレジットまで考慮する必要があります。
特定のスイッチで使用可能なBBクレジットの最大数がわかっている場合は、次の計算式を使用して、そのBBクレジットに対して設定可能な理論上の最大距離を計算できます。
X = (B - 6) / (Y / 2)
X = 理論上の最大距離*
B = 使用可能なBBクレジット数
Y = 速度
たとえば、1つのISLを4Gbpsで実行しているBrocade 200Eの場合、理論上の最大距離は次のようになります。
x = (144 – 6) / (4 / 2)
x = 138 / 2
x = 69km
必要なバッファ数はフレーム サイズから計算することもできます。平均的なフレーム サイズ(1024バイトなど)の場合は、2倍のBBクレジットを割り当てるか、長距離のLS設定モードで距離を2倍にします。
1. スイッチに必要な距離の値を計算して、割り当てる BB クレジット数を決定するには、次の式を使用します。
- desired_distance = [(実際の推定距離 * 2112) / 平均ペイロード サイズ] ->最も近い整数に四捨五入したもの
- 平均ペイロード サイズ = 1024バイト
- この例では、実際の推定距離は200kmとします。
- desired_distance = [(200 * 2112) / 1024] ->最も近い整数に四捨五入 = 412
- Brocade スイッチで
portcfglongdistance
コマンドを使用して LS モードを設定するときに、実際の 200km に対して desired_distance の値を「 412 」と入力します - リンクは 4 Gbps E_Port に接続されています。これにより、Fabric OSで正しい数のBBクレジットが割り当てられます。
2. 長距離接続に使用する速度を決定します。この例では8Gbpsです。
3. 接続速度の data_rate 値を調べます。エンコードが8b / 10b、ボー レート1.0625Gb/秒の1Gb Fiber Channelリンクの場合、ちょうど1Gbpsのデータ フローを処理できます。Fiber Channelのギガビットの値は次のとおりです。
- 1Gbpsで1.0625
- 2Gbpsで2.125
- 4Gbpsで4.25
- 8Gbpsで8.5
4. 次の計算式を使用して、割り当てる BB クレジット数を計算します。
- BBクレジット = [esired_distance * (データ速度 / 2.125)] ->最も近い整数に四捨五入
- 手順1と手順3で求めたesired_distanceとデータ速度を代入すると、BBクレジットの計算は次のようになります。
- BBクレジット = [(412 * 4.25) / 2.125] ->最も近い整数に四捨五入 = 824
十分な BB クレジットがない場合はどうなりますか?
- 使用可能なバッファが十分でない場合でも、トラフィックはFCネットワークで送信されます。ただし、ライン レートが低速になります。この状態はBBクレジットの枯渇と呼ばれ、BBクレジットがなくなるまではトラフィックの送信が継続されます。
- 実際にBBクレジットのプールが0になると、クレジットが補充されるかリンクがリセットされるまで、ポートはフレームを送信できなくなります。
- リンクの両端でBBクレジットが一致しない場合、ファブリック セグメンテーションが発生し、スイッチ間リンクが稼働しなくなることがあります。両端のログでエラー メッセージを確認し、ISLが稼働しない原因を特定します。
注:特定の実装で FC フレームサイズの割合が高い場合、最大サイズよりもかなり小さいと、さらに多くの BB クレジットが必要になることがあります。
バッファ クレジット リカバリ
Eポートでのみサポートされる機能で、意図せずに失われたBBクレジットをスイッチが自動的にリカバリすることができます。BBクレジット リカバリにより、クレジットが失われたことにより発生するリンクのパフォーマンス低下を防ぐことができます。詳細については、スイッチ ベンダーのマニュアルを参照してください。
追加情報
N/A