メインコンテンツまでスキップ

NetApp_Insight_2020.png 

バッファ間クレジット管理とは

Views:
61
Visibility:
Public
Votes:
0
Category:
fabric-interconnect-and-management-switches
Specialty:
san
Last Updated:

すべてのとおり  

に適用されます

  • 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. 次の式を使用して、スイッチに必要な desired_distance の値を計算し、割り当てる BB クレジットの数を決定します。
    desired_distance = 最も近い整数への ROUNDUP [(real_ested_distance * 21121) /average_payload_size
    ここ
    で、 average_payload_size = 1024 バイト。この例では、実際の推定距離に 200 km を使用します。
    Desired_Distance = Roundup to nearest integer [(200*2112)/1024]=412
    Brocade スイッチで、 LS モードをportcfglongdistanceコマンドで設定する場合、 4Gbps E_Port に接続された実際の 200km リンクに対して、 desired_distance 値 412 を入力します。これにより、Fabric OSで正しい数のBBクレジットが割り当てられます。
  2. 長距離の接続に使用する速度を決定します。この例では8Gbpsです。
  3. 接続の速度に対応するデータ速度の値を調べます。エンコードが8b / 10b、ボー レート1.0625Gb/秒の1Gb Fiber Channelリンクの場合、ちょうど1Gbpsのデータ フローを処理できます。Fiber Channelのギガビットの値は次のとおりです。
  • 1Gbpsで1.0625
  • 2Gbpsで2.125
  • 4Gbpsで4.25
  • 8Gbpsで8.5
  1. 次の式を使用して、割り当てる BB クレジットの数を計算します。
    BB クレジット = ROUNDUP [ Desired_Distance *(data_rate /2.125)]
    ステップ 1 とステップ 3 の desired_distance と data_rate の値を使用して、 BB クレジットの値は
    次のように計算されます。 BB クレジット = ROUNDUP [(412*4.25)/2.125] = 824
十分な BB クレジットがない場合はどうなりますか?

使用可能なバッファが十分でない場合でも、トラフィックはFCネットワークで送信されます。ただし、ライン レートが低速になります。この状態はBBクレジットの枯渇と呼ばれ、BBクレジットがなくなるまではトラフィックの送信が継続されます。

実際にBBクレジットのプールが0になると、クレジットが補充されるかリンクがリセットされるまで、ポートはフレームを送信できなくなります。

リンクの両端でBBクレジットが一致しない場合、ファブリック セグメンテーションが発生し、スイッチ間リンクが稼働しなくなることがあります。両端のログでエラー メッセージを確認し、ISLが稼働しない原因を特定します。

:特定の実装で FC フレームサイズの割合が高い場合、最大サイズよりもかなり小さいと、さらに多くの BB クレジットが必要になることがあります。

バッファ クレジット リカバリ

Eポートでのみサポートされる機能で、意図せずに失われたBBクレジットをスイッチが自動的にリカバリすることができます。BBクレジット リカバリにより、クレジットが失われたことにより発生するリンクのパフォーマンス低下を防ぐことができます。詳細については、スイッチ ベンダーのマニュアルを参照してください。

追加情報

N/A