はじめに
このドキュメントでは、ポートチャネルロードバランシングの極性が発生する可能性があるシナリオについて説明し、そのような状況を回避する方法に関する提案を示します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
使用するコンポーネント
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景
偏波は、ハッシュアルゴリズムがネットワーク内の特定のパスを選択し、冗長パスを使用しないままにする問題です。
トポロジ
コンフィギュレーション
N7K1とN7K2はVPC内で接続され、Po100、Po200、Po300、およびPo301はVPCポートチャネル内にあります。
N7K1とN7K2は純粋なL2スイッチとして機能し、これらのスイッチではルーティングは行われません。
すべてのスイッチが同じポートチャネルロードバランシングアルゴリズムを実行している。
送信元から宛先へのトラフィックが同じVLAN内にあるか(ルーティングなし)、N7K3またはN7k4で発生したルーティングと異なるVLANにあるかに関係なく、N7K1およびN7K2から出るトラフィックで極性の問題が見られます。
Traffic flow
送信元は宛先に複数のストリームを送信します(複数の送信元および宛先IPアドレスを使用し、L4ポート情報もパケットによって異なります)。理想的な状況でトラフィックがポートチャネルメンバーインターフェイス間で均等に分散されるように、トラフィックを適切に組み合わせて使用します。
送信元からのトラフィックはN7k3/N7k4に到達し、N7K1/N7K2を経由して宛先に到達します。
N7K1およびN7K2上のPo100およびPo200のメンバーリンクの中の1つのリンクがトラフィックの約99 %を送信し、他のリンクはアイドル状態のままになります。つまり、各スイッチN7K1とN7K2では、4/2と4/3の一方のリンクが99 %のユニキャストトラフィックを伝送し、もう一方のリンクが1 %未満のトラフィックを伝送します。同様に、9/2と9/3の一方のリンクでは99 %のトラフィックが伝送され、もう一方のリンクでは1 %未満のトラフィックが伝送されます。「トラブルシューティング」セクションの出力は、N7K1のPo100およびPo200メンバーインターフェイスのトラフィックを示しています。N7K2でも同様の出力が表示されます。
使用されているポートチャネルロードバランシングアルゴリズムのタイプに関係なく、N7K1/N7K2ペアとN7K3/N7K4ペアで同じポートチャネルロードバランシングアルゴリズムが使用されている限り、問題が発生する可能性があります。ポートチャネルのロードバランシングアルゴリズムを確認するコマンドを次に示します。
N7K1# show port-channel load-balance
Warning: Per Packet Load balance configuration has higher precedence
System config:
Non-IP: src-dst mac
IP: src-dst ip-l4port-vlan rotate 0
Port Channel Load-Balancing Configuration for all modules:
Module 1:
Non-IP: src-dst mac
IP: src-dst ip rotate 0
Module 2:
Non-IP: src-dst mac
IP: src-dst ip rotate 0
Module 3:
Non-IP: src-dst mac
IP: src-dst ip rotate 0
Module 4:
Non-IP: src-dst mac
IP: src-dst ip-l4port-vlan rotate 0
Module 7:
Non-IP: src-dst mac
IP: src-dst ip-l4port-vlan rotate 0
Module 8:
Non-IP: src-dst mac
IP: src-dst ip-l4port-vlan rotate 0
Module 9:
Non-IP: src-dst mac
IP: src-dst ip-l4port-vlan rotate 0
トラブルシューティング
ポートチャネルで不均等なロードバランシングが見られる場合は、極性が原因である可能性があります。
トラフィックがN7K3およびN7K4スイッチに到達すると、N7K4のPo301およびN7K3のPo300を介してN7K1/N7K2スイッチに転送されます。ここで、ロードバランシングアルゴリズムが起動し、一部のフローはN7K1に転送され、他のフローはN7K2に転送されます。
最初に、すべてのトラフィックがeth1/1のスイッチN7K3/N7K4に着信し、src-dst IPアドレスとl4ポートの情報に基づいて、特定のフローがN7K1に向かうリンク上でハッシュされ、他のフローがN7K2に向かうリンク上でハッシュされます。ハッシュは、スイッチによって計算されるrbh値に基づいて実行されます。説明を簡単にするため、使用されているロードバランシングアルゴリズムに基づいて、スイッチが着信トラフィックを2つのフロー(フローXとフローY)に分離すると仮定します。フローXは1つのポートチャネルメンバーリンクから送信され、フローYは他のポートチャネルメンバーリンクから送信されます。
これで、トラフィックがN7K1/N7K2ペアに着信する場合、2つの可能性があります。(XとYは交換可能です)。
ケース1:
N7K3はフローXをN7K1に、フローYをN7K2に送信
N7K4はフローYをN7K1に、フローXをN7K2に送信
ケース2:
N7K3はフローXをN7K1に、フローYをN7K2に送信
N7K4はフローXをN7K1に、フローYをN7K2に送信
ケース1では、N7K1とN7K2は両方のタイプのフロー(フローXとフローY)を受信し、N7K3/N7K4と同じポートチャネルロードバランシングアルゴリズムを使用しても、フローが異なるリンクのPo100とPo200から出力されるため、偏波は見られません。したがって、ポートチャネルメンバーインターフェイス間のトラフィック分散が向上します。
ケース2では、N7K1はフローXのみを受信し、N7K2はフローYのみを受信するため、これらのスイッチで使用されているポートチャネルのロードバランシングアルゴリズムがN7K3/N7K4ペアで使用されているものと同じである場合は、偏波が発生する可能性があります。N7K1とN7K2は同じポートチャネルロードバランシングアルゴリズムを使用するため、N7K1はPo100/Po200の1つのメンバーリンクでのみフローXを送信し、他のメンバーリンクはトラフィックを転送しません。同様に、N7K2はPo100/Po200の1つのメンバーリンクでのみフローYを送信し、他のメンバーリンクはトラフィックを転送しません。
スイッチN7K1とN7K2が受信するトラフィックはすでに最初に分類されているため、スイッチN7K1/N7K2からのすべての着信トラフィックの送信には1つのポートチャネルメンバーリンクだけが使用され、他のメンバーリンクからは何も送信されません。着信トラフィックレートが単一のポートチャネルリンクの帯域幅を超えた場合、他のポートチャネルメンバーリンクはこのトラフィックを転送しないため、追加のトラフィックはドロップされます。
ポートチャネルで3つ以上のリンクが使用されている場合にも、同様の問題が発生する可能性があります。たとえば、1つのポートチャネルで4つのリンクが使用されている場合、ハッシングの状況に応じて、極性は発生しないか、4つのポートチャネルメンバーリンクのうちの2つだけを使用してすべての着信トラフィックを転送する部分極性が発生します。他の2つのリンクは転送しません
偏波は設計が原因で発生するため、偏波が発生しないことを確認するために設計を分析することが重要です。N7k1上のPo100とPo200で発生する偏波を示す出力を次に示します(同様の出力はN7K2でも確認できます)。
N7K1# show port-channel summary | i 200
200 Po200(SU) Eth LACP Eth9/2(P) Eth9/3(P)
N7K1# show port-channel traffic interface port-channel 200
NOTE: Clear the port-channel member counters to get accurate statistics
ChanId Port Rx-Ucst Tx-Ucst Rx-Mcst Tx-Mcst Rx-Bcst Tx-Bcst
------ --------- ------- ------- ------- ------- ------- -------
200 Eth9/2 0.0% 99.99% 44.44% 4.00% 0.0% 100.00%
200 Eth9/3 0.0% 0.00% 55.55% 96.00% 0.0% 0.0%
N7K1# show port-channel summary | i 100
100 Po100(SU) Eth LACP Eth4/2(P) Eth4/3(P)
N7K1# show port-channel traffic interface port-channel 100
NOTE: Clear the port-channel member counters to get accurate statistics
ChanId Port Rx-Ucst Tx-Ucst Rx-Mcst Tx-Mcst Rx-Bcst Tx-Bcst
------ --------- ------- ------- ------- ------- ------- -------
100 Eth4/2 0.0% 99.99% 40.55% 7.00% 0.0% 100.00%
100 Eth4/3 0.0% 0.00% 54.44% 93.00% 0.0% 0.0%
回避策
このセクションでは、極性の発生を防ぐために使用する回避策の一部について説明します。
- 適切な設計:偏波の主な原因は不適切な設計であるため、トポロジに偏波の余地がないようにネットワーク設計を変更するのが最善の方法です。
設計を変更できない場合は、次の操作を実行できます。
- スイッチの各レベルで異なるポートチャネルロードバランシングアルゴリズムを使用します(N7K1/N7k2ペアで1つのアルゴリズムを、N7K3//N7k4ペアで異なるアルゴリズムを使用します)。ロードバランシングアルゴリズムが変更されると、N7k1/N7k2スイッチは、N7k3/N7k4スイッチで使用される情報以外の情報に基づいて着信トラフィックをハッシュします。したがって、発信トラフィックはすべてのポートチャネルメンバーリンクを使用します。(どのアルゴリズムを選択するかは、スイッチが受信するトラフィックのタイプによって決まります)。
- 同じロードバランシングアルゴリズムを使用する場合は、スイッチの各レベルで異なる回転値を使用します。
rotate コマンドは、ユーザ設定のバイトによってハッシュ入力をオフセットすることで、ハッシュアルゴリズムにランダム性を導入し、極性の回避に役立ちます。(N7k1/N7k2ペアには1つの回転値を使用し、N7k3/N7k4ペアには別の回転値を使用します)。