フローの再マッピングを最小限に抑えるための復元力のあるハッシュの使用
ネットワーク エンドポイント間の展開では、確立された接続と、関連するレイヤー 2 およびレイヤー 3 パスを保持する必要があります。ネットワーク デバイスやサーバーの障害など、ネットワークに何らかの変更が発生した場合、パケットは新しいパスを取ります。
復元力のあるハッシュは、ネットワークの変更の影響を軽減します。レジリエント ハッシュを使用する各 ECMP には、負荷分散テーブル(マクロフロー テーブルとも呼ばれる)の 256 エントリ領域が割り当てられます。テーブル内の各エントリには、そのマクロフローに割り当てられたメンバーリンク ID が格納されます。
レジリエントハッシュは、以下のように機能します。
-
受信パケットをこれらのマクロフローエントリまたはバケットの1つにハッシュします。
-
次に、ECMP グループ内のパスにパケットをリンクします。
各メンバーリンク/パスを表すために「バスケット」を使用する場合、回復力のあるハッシュ操作は、バスケットの1つにバケット(マクロフロー)を入れるものとしてモデル化できます。
ECMP グループのバケットが N 個でパスが P 個の場合、以下のシーケンスを使用します。
-
最初のバケットマッピングは、ラウンドロビン方式を使用して生成されます。したがって、すべてのバケットは、ECMP グループ メンバー間でほぼ均等(N/P)に分散されます。その後、バケットはパスの追加または削除イベントに基づいて移動します。
N=64 バケットおよび P=4 パスの場合、64 個のバケットすべてをラウンドロビン方式で分散します。パスが 4 つあるので、スタックは 4 つあります。各スタックは 1 つのパスに対応します。各スタックのバケット数は同じで、N/P=16です。
Last_processed_path= 0(アルゴリズムのステップ5を参照)。
-
パスの障害や削除が発生した場合、障害が発生したパス/スタックから突然すべてのバケットを削除し、循環ラウンドロビン方式で残りのパス/スタックにプッシュします。
パス 3 (上の画像のスタック 3) を削除する場合は、スタック 3 (下図のオレンジ色) のすべてのバケットを残りのスタックに移動する必要があります。
-
パスが追加された場合は、循環ラウンドロビン方式で既存のパスからN/(P+1)バケットを突然削除し、新しく追加されたパス/スタックにプッシュします。
新しいパスを追加する場合は、既存のスタック (スタック 0、1、2) から N/P+1=64/4=16 バケットを移動する必要があります。オレンジ色のバケツはすべてスタック3に戻り、青いスタックは移動されず、そのまま残ります。
Last_processed_path= 0
-
ステップ 2 とステップ 3 の円形ラウンドロビン方向は逆です。循環ラウンドロビンが開始する最初のスタックを決定することが重要です。ステップ 2 の開始スタック インデックスとステップ 3 の開始スタックの前に
last_processed_path
インデックス ポインターを保持します。 -
5.
last_processed_path
を設定するには、次の手順を実行します。-
ステップ 2 のようにバケットをプッシュすると、
last_processed_path
は最後のバケットをプッシュした最後のスタックの次のスタックです。 -
ステップ 3 のようにバケットを削除すると、バケットが削除された最後のスタックが
last_processed_path
になります。
-
レジリエント ハッシュの制限と注意事項
-
レジリエントハッシュは、イコールコストBGPルートベースのECMPグループでのみサポートされています。BGPルートよりも優先度の高い他のプロトコルやスタティックルートを設定した場合、レジリエントハッシュはサポートされません。
-
復元力のあるハッシュは、混合速度LAGではサポートされていません。
-
128 方向の ECMP 復元力のあるハッシュは、現在の設計ではサポートされていません。64方向ECMP復元力のあるハッシュのみがサポートされます。
-
混合レート集約イーサネット(AE)と適応型ロードバランシング(ALB)AEは、現在の復元力のあるハッシュ設計ではサポートされていません。
ECMP の復元力のあるハッシュの設定
集合型イーサネットインターフェイスの復元力のあるハッシュの設定
user@router# set interface ae1 aggregated-ehter-options resilient-hash