IP : Cisco Express Forwarding(CEF)

CEF の極性

2016 年 10 月 27 日 - 機械翻訳について
その他のバージョン: PDFpdf | 英語版 (2015 年 8 月 22 日) | フィードバック

概要

このドキュメントでは、シスコ エクスプレス フォワーディング(CEF)の極性が原因で、宛先ネットワークへの冗長パスの使用が最適ではない状況がどのように発生するかを説明します。 CEF の極性は、ハッシュ アルゴリズムが特定のパスを選択し、冗長パスがまったく使用されない状態になると発生します。

著者:Cisco TAC エンジニア、Anvitha Prabhu、Shashank Singh、 Shridhar Dhodapkar

前提条件

要件

このドキュメントに関する固有の要件はありません。

使用するコンポーネント

このドキュメントの情報は、Supervisor Engine 720 が稼働する Cisco Catalyst 6500 スイッチに基づくものです。

このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されたものです。 このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。 ネットワークが稼働中の場合は、コマンドが及ぼす潜在的な影響を十分に理解しておく必要があります。

背景説明

CEF は、Enhanced Interior Gateway Routing Protocol(EIGRP)や Open Shortest Path First(OSPF)などのルーティング プロトコルによりデータが取り込まれたルーティング テーブルに基づいてパケットを交換します。 CEF は、ルーティング テーブル(RIB)の計算後にロード バランシングを実行します。 階層型ネットワーク設計では、複数のレイヤ 3(L3)等コスト冗長パスが存在することがあります。 トラフィックがアクセス レイヤからディストリビューションおよびコアを介してデータセンターに流れる場合に、このトポロジを検討してください。

                                         

ルータ 1(R1)(左上)からネットワーク 10.1.1.1 に到達するための 2 つの等コスト パス(L1、L2)があるとします。 この 2 つのリンクのうちいずれを使用するかは、ハッシュ アルゴリズムによって決定されます。 デフォルトでは、送信元 IP(SIP)および宛先 IP(DIP)がハッシュ アルゴリズムのパラメータとして使用されます。

ハッシュ アルゴリズムの仕組みを次に説明します。

パスが 2 つだけの場合は、スイッチ/ルータが SIP または DIP の下位ビットに対し排他的論理和(XOR)演算を実行します(2 つのリンクのいずれかを選択する必要がある場合は 1 ビット、3 ~ 4 リンクの場合は 2 ビットなど)。 同じ SIP と DIP の XOR 演算は、常に同じリンクのパケットを使用する結果となります。

次にパケットはディストリビューション レイヤに渡され、このレイヤで同じハッシュ アルゴリズムが同じハッシュ入力を使用して実行され、すべてのフローに対して 1 つのリンクが選択されます。このため、もう 1 つのリンクが十分に利用されない状態になります。 このプロセスは CEF の極性と呼ばれます(同一ハッシュ アルゴリズムと同一ハッシュ入力を使用し、その結果すべてのフローに対して 1 つの等コスト マルチパス(ECMP)が使用されること)。

次の例で、このプロセスを詳しく説明します。

                  

  1. 送信元が 10.240.18.1、宛先が 10.240.20.1 のトラフィックは、ルータ A からネットワークに入り、CEF で切り替えられます。 10.240.20.0/24 ネットワークへの等コスト パスが 2 つ存在するため、パケットの送信元アドレスと宛先アドレスがハッシュ アルゴリズムに使用され、その結果として宛先へ到達するための特定パスが算出されます。 この場合、パケットが辿るパスはルータ C へ向かっています。 パケットはそこからルータ F に移動し、その後最終宛先へ移動します。

  2. 送信元が 10.240.18.2、宛先が 10.240.20.1 のトラフィックは、ルータ A からネットワークに入り、同様に CEF で切り替えられます。 10.240.20.0/24 ネットワークへは 2 つの等コスト パスがあるため、パケットの送信元アドレスと宛先アドレスがハッシュ アルゴリズムに使用され、CEF がパスを選択します。 この場合、パケットが辿るパスはルータ B へ向かっています。

  3. 送信元が 10.240.18.3、宛先が 10.240.20.1 のトラフィックは、ルータ A からネットワークに入り、同様に CEF で切り替えられます。 10.240.20.0/24 ネットワークへは 2 つの等コスト パスがあるため、パケットの送信元アドレスと宛先アドレスがハッシュ アルゴリズムに使用され、CEF がパスを選択します。 この場合、パケットが辿るパスはルータ B へ向かっています。

  4. 10.240.18.2 と 10.240.18.3 から送信されたパケットはどちらもルータ B に到達します。ここでも、ルータ B から 10.240.20.1 に到達する 2 つの等コスト パスがあります。 この場合も、ハッシュ アルゴリズムでこれらの送信元と宛先のペアが実行され、ルータ A で生成されたハッシュ アルゴリズムと同じ結果が得られます。 つまり、両方のパケット ストリームは 1 つのパス(この場合はルータ E へのリンク)を通過します。 ルータ D へのリンクはトラフィックを受信しません。

  5. 10.240.18.2 と 10.240.18.3 から送信されたトラフィックは ルータ E に着信した後で、ルータ F へのパスに切り替えられ、最終宛先へ向かいます。

CEF の極性を回避する方法

  1. ネットワークの各レイヤで、ハッシュ入力設定を default(SIP および DIP)と full(SIP + DIP + レイヤ 4 ポート)の間で切り替えます。

    Catalyst 6500 では、複数のハッシュ アルゴリズムから選択できます。
    • Default:極性を避けるために各リンクに不均等に重み付けして、送信元と宛先の IP アドレスを使用します。
    • Simple:各リンクに均等に重み付けして、送信元と宛先の IP アドレスを使用します。
    • Full:不均等に重み付けして、送信元と宛先の IP アドレスとレイヤ 4 ポート番号を使用します。
    • Full Simple:各リンクに均等に重み付けして、送信元と宛先の IP アドレスとレイヤ 4 ポート番号を使用します。
        6500(config)#mls ip cef load-sharing ?
          full    load balancing algorithm to include L4 ports
          simple  load balancing algorithm recommended for a single-stage CEF router

        6500(config)#mls ip cef load-sharing full ?
          simple  load balancing algorithm recommended for a single-stage CEF router
          <cr>
    現時点では、使用されているロード シェアリング アルゴリズムを確認するコマンドは存在しません。 使用されている手法を調べる場合は、show running-config コマンドを使用して、現在の設定をチェックする方法が最適です。 mls ip cef load-sharing で始まる設定がない場合は、送信元と宛先を不均等に重み付けするデフォルトのアルゴリズムが使用されています。

    : 1)Catalyst 6500 はパケット別ロード シェアリングをサポートしていません。 2)full オプションには、ハッシュのユニバーサル ID は含まれていません。 マルチレイヤ トポロジのすべてのレイヤで使用される場合、極性が発生することがあります。 ロード シェアリングを改善し、使用するハードウェア隣接関係数を少なくするため、このコマンドで simple オプションを使用することを推奨します。

  2. ネットワークの各レイヤで、偶数の ECMP リンクと奇数の ECMP リンクを切り替えます。
    CEF ロード バランシングは、ルーティング テーブルにプロトコル ルートが挿入される方法には依存しません。 したがって、OSPF ルートは EIGRP と同じ動作を示します。 ロード シェアリングを連続的に実行する複数ルータがある階層型ネットワークでは、すべてのルータがロード シェアリングに同じアルゴリズムを使用します。

    デフォルトでは、ハッシュ アルゴリズムによるロード バランシングは次のようになります。
    1: 1
    2: 7-8
    3: 1-1-1
    4: 1-1-1-2
    5: 1-1-1-1-1
    6: 1-2-2-2-2-2
    7: 1-1-1-1-1-1-1
    8: 1-1-1-2-2-2-2-2
    コロンの前の番号は、等コスト パスの数を示します。 コロンの後の番号は、パスごとに転送されるトラフィックの比率を表します。

    この結果、次のようになります。
    • 2 つの等コスト パスの場合、ロード シェアリングは 50%-50% ではなく 46.666%-53.333% です。
    • 3 つの等コスト パスの場合、ロード シェアリングは(予期されるとおり)33.33%-33.33%-33.33% です。
    • 4 つの等コスト パスの場合、ロード シェアリングは 25%-25%-25%-25% ではなく 20%-20%-20%-40% です。

    これは、ECMP リンクの数が偶数の場合、トラフィックはロード バランシングされないことを示しています。
    CEF の極性を無効にする方法の 1 つとして、バージョン 12.2(17d)SXB2 で導入された極性防止重み付けがあります。

    極性防止重み付けを有効にするには、次のコマンドを入力します。
    6500(config)# mls ip cef load-sharing full simple
    等コスト パスが 2 つあり、この両方を均等に使用する必要がある場合は、このコマンドを使用します。 キーワード simple を追加すると、ハードウェアが Cisco IOS® CEF 隣接関係と同数の隣接関係を使用できるようになります。 キーワード simple を使用しない場合、ハードウェアはプラットフォームの極性を回避するために、追加の隣接関係エントリをインストールします。

  3. Cisco IOS では、CEF の極性を回避する上で役立つユニーク ID/ユニバーサル ID という概念が導入されました。 ユニバーサル アルゴリズム(現在の Cisco IOS バージョンのデフォルト)と呼ばれるこのアルゴリズムは、ハッシュ関数に 32 ビット ルータ固有の値を追加します。この値はユニバーサル ID と呼ばれ、スイッチの起動時にランダムに生成される値であり、手動で制御できます。 これにより、各ルータのハッシュ関数にユニーク ID がシードされ、同じ送信元/宛先のペアが、そのパス上の他のルータでは異なる値にハッシュされるようになります。 このプロセスにより、ネットワーク全体のロード シェアリングが向上し、極性の問題が回避されます。 このユニーク ID という概念は、ハードウェアの制限により等コスト パスの数が偶数の場合は機能しませんが、等コスト パスの数が奇数の場合に完全に機能します。 この問題を解決するため、Cisco IOS では、等コスト パスの数が偶数の場合に、等コスト リンクの数が奇数であるとシステムに認識させるために、ハードウェア隣接関係テーブルに 1 つのリンクが追加されます。
    ユニバーサル ID としてカスタマイズされた値を設定するには、次のように入力します。
    6500(config)ip cef load-sharing algorithm universal <id>


Document ID: 116376