MX シリーズ ルーター上のトラフィックのロード バランシングに使用されるアルゴリズムについて
デバイスのイングレス インターフェイスでパケットを受信すると、パケット転送エンジン(PFE)は、転送ネクスト ホップを識別するための検索を実行します。同じネクスト ホップ宛先への複数の等価コスト パス(ECMP)がある場合、イングレス PFE は、ネクスト ホップ間でフローを分散するように設定できます。同様に、アグリゲート イーサネットなどの集約インターフェイスのメンバー リンク間でトラフィックの分散が必要になる場合があります。実際の転送ネクスト ホップの選択は、選択されたパケット ヘッダー フィールドと インターフェイス インデックスなどのいくつかの内部フィールドに対するハッシュ計算結果に基づいています。ハッシュ アルゴリズムで使用されるフィールドの一部を設定できます。
MPC(モジュラー ポート コンセントレータ)とタイプ 5 FPC を備えた MX シリーズ ルーターの場合、サポートされるトラフィック タイプのハッシュを
forwarding-options enhanced-hash-key
階層レベルで設定します。デフォルトで含まれるトラフィック ファミリーの詳細は以下のとおりです。Junos OS リリース 18.3R1 では、拡張ハッシュを計算するためのデフォルトの方法が変更され、IP トンネル、IPv6 フロー、および PPPoE ペイロードがファミリー マルチサービスとして送信され、エントロピーが向上しました。これらのデフォルトは、それぞれの no- コマンドを設定することで無効にできます。
DPC を搭載した MX シリーズ ルーターの場合、サポートされるトラフィック タイプのハッシュを
forwarding-options hash-key
階層レベルで設定します。
Junos はさまざまなタイプのロード バランシングをサポートしています。
プレフィックス単位のロード バランシング – 各プレフィックスは、1 つの転送ネクスト ホップにのみマッピングされます。
パケット単位のロード バランシング – アクティブ ルート内の宛先のすべてのネクスト ホップ アドレスが転送テーブルにインストールされます(Junos の パケット単位 のロード バランシングという用語は、他のベンダーが フロー単位 のロード バランシングと呼ぶ場合と同じです)。詳細については、「 パケット単位のロード バランシングの設定」 を参照してください。
ランダムパケットロードバランシング - ネクストホップは、各パケットに対してランダムに選択されます。この方法は、アグリゲート イーサネット インターフェイスと ECMP パス用に MPC ライン カードを備えた MX ルーターで使用できます。パケット単位のランダム スプレー ロード バランシングを設定するには、階層レベルで
per-packet
ステートメントを[edit interfaces aex aggregated-ether-options load-balance]
含めます。詳細については、「例:アグリゲート イーサネット ロード バランシングの設定 」を参照してください。パケット単位のランダムスプレーロードバランシング – 適応型ロードバランシングオプションに障害が発生した場合、パケット単位のランダムスプレーロードバランシングが最後の手段として機能します。これにより、帯域幅を考慮することなく、ECMP のメンバーが均等にロードされます。パケットごとにパケットの並べ替えが発生するため、アプリケーションが並べ替えを吸収する場合にのみ推奨されます。パケット単位のランダム スプレーにより、パケット ハッシュを除くソフトウェア エラーの結果として発生するトラフィックの不均衡が解消されます。
Junos OSリリース20.2R1以降、MX240、MX480、MX960ルーターで、MPC10E(MPC10E-15C-MRATE、MPC10E-10C-MRATE)ラインカード、MX2010およびMX2020ルーターとMX2K-MPC11Eラインカードを使用して、パケットランダムロードバランシングを設定できます。
次のような追加の構成オプションも用意されています。
スロット単位のハッシュ関数構成 –この方法は、PIC スロットごとに固有のロードバランス ハッシュ値に基づき、DPCE および MS-DPC ライン カードを備えた M120、M320、MX シリーズ ルーターでのみ有効です。
対称型ロード バランシング –この方法は、802.3ad LAG で対称型ロード バランシングを提供します。対称ロード バランシングに使用されるハッシュは、階層の
interface
レベルで設定されます。これにより、所定の二重トラフィック フローが同じデバイスを双方向に通過し、MX シリーズ ルーターで利用できるようになります。
MX MPC および T シリーズ タイプ 5 FPC の仕様
MX MPC および T シリーズ タイプ 5 FPC のハッシュ計算アルゴリズムは、レイヤー 3 アドレスまたはレイヤー 4 トランスポート ポートをスワップしたパケットに対して同一の結果を生成します。たとえば、送信元アドレス 192.0.2.1 および宛先アドレス 203.0.113.1 を持つパケットのハッシュ計算結果は、送信元アドレス 203.0.113.1 および宛先アドレス 192.0.2.1 を持つパケットのハッシュ計算結果と同じです。
パケットの再注文を回避するために、フラグメント化された IPv4 パケットのハッシュ計算では、レイヤー 4 トランスポート プロトコル ポートは決して使用されません。これは、ヘッダー内のビットによって識別されるフローの最初のフラグメント、およびゼロ以外のフラグメントオフセットによって more fragment
識別される後続のすべてのフラグメントに当てはまります。最初のフラグメントと後続のフラグメントは、常に同じネクスト ホップを介して転送されます。
Junos 18.3R1 以降で使用されるハッシュ アルゴリズム
ほとんどの場合、レイヤー 3 とレイヤー 4 のフィールド情報をハッシュ計算に含めると、トラフィックの公平な分散に十分な結果が生成されます。ただし、IP-in-IP や GRE トンネリングなどの場合、レイヤー 3 とレイヤー 4 のフィールド情報だけでは、ロード バランシングに十分なエントロピーを持つハッシュを生成できない場合があります。たとえば、MX シリーズ ルーターが GRE フローを転送する導入では、通常、GRE カプセル化トンネルは、同じ送信元と宛先と同じ GRE キーを持つ単一のフローとして発生します。また、トンネル上のトラフィック 量が増加すると、脂肪の流れによってリンクの使用率が不均衡に大きくなる可能性があります。もう 1 つの例として、アクセス デバイスから中央ブロードバンド ネットワーク ゲートウェイ(BNG)へのルーター バックホール ブロードバンド 加入者トラフィックがある加入者エッジ導入で、MX PE ルーターが VPLS PE デバイスとして使用されている場合です。このような場合、ハッシュに使用できるのは、加入者のMACアドレスとBNGルーターのMACアドレスのみです。しかし、BNG MAC が少なく、加入者 MAC が比較的少ない場合、一般的なレイヤー 3 フィールドとレイヤー 4 フィールドでは、最適なロード バランシングのためのハッシュを作成するには不十分です。
このため、Trio MPC を搭載し、Junos OS リリース 18.3R1 以降を実行している MX シリーズ ルーターでは、デフォルト enhanced-hash-key
の計算が変更されました。変更の概要は次のとおりです。
GRE パケットの場合、外部 IP パケットがフラグメント化されたパケット(最初のフラグメントまたは後続のフラグメント)ではなく、内部パケットが IPv4 または IPv6 である場合、内部パケットからの送信元アドレスと宛先アドレスは、外部の送信元アドレスと宛先アドレスに加えてハッシュ計算に使用されます。内部 IP パケットのプロトコルが TCP または UDP で、内部 IP パケットがフラグメント(最初のフラグメントまたは後続のフラグメント)でない場合、内部パケットのレイヤー 4 ポートも含まれます。同様に、外部 IP パケットがフラグメント パケットではなく、内部パケットが MPLS の場合、上位の内部ラベルがハッシュ計算に含まれます。
PPPoE パケットの場合、内部パケットが IPv4 または IPv6 の場合、内部パケットからの送信元アドレスと宛先アドレスが含まれます。内部 IP パケットのプロトコルが TCP または UDP で、内部 IP パケットがフラグメントでない場合、レイヤー 4 ポートが含まれます。PPPoE 内部パケット フィールドを含めることは、階層レベルで
forwarding-options enhanced-hash-key family multiservice
オプションをno-payload
設定することで無効にできます。IPv6 の場合、IPv6 ヘッダー フロー ラベル フィールドはハッシュ計算に含まれます。 RFC 6437 では、IPv6 ヘッダーの 20 ビット フロー ラベル フィールドについて説明しています。階層でオプションを
no-flow-label
設定して、forwarding-options enhanced-hash-key family inet6
新しいデフォルトを無効にします。
IPv4 経由で送信される GRE トラフィックに使用されるハッシュ フィールド
このリストは、Junos 18.3R1 以降のフラグメント化されていないパケットのハッシュ計算で使用されるフィールドを示しています。デフォルトでは、特に明記されていない限り、フィールドはハッシュ計算で使用されます。また、ハッシュで使用されるIPフィールドとポートフィールドは対称的で、フィールドをスワップしてもハッシュ結果は変更されません。
IPv4、GRE
GRE キー
送信元と宛先のアドレス。対称
プロトコル
DSCP(無効)
受信インターフェイス インデックス(無効)
IPv4、GRE の IPv4
ペイロード(内部 IPv4:送信元と宛先のポート、IP アドレス)対称
GRE キー
GRE プロトコル = IPv4
送信元と宛先のアドレス。対称
プロトコル
DSCP(無効)
受信インターフェイス インデックス(無効)
IPv4、GRE の IPv6
ペイロード(内部 IPv6:送信元と宛先のポート、IP アドレス)対称
GRE キー
GRE プロトコル = IPv6
送信元と宛先のアドレス。対称
プロトコル
DSCP(無効)
受信インターフェイス インデックス(無効)
IPv4、GRE の MPLS
ペイロード(内部 MPLS:トップ ラベル)
GRE キー
GRE プロトコル = MPLS
送信元と宛先のアドレス。対称
プロトコル
DSCP(無効)
受信インターフェイス インデックス(無効)
Junos 17.2 以降で使用されている IPv4、L2TPv2
オプションを設定することで、L2TPv2トンネルIDとセッションIDを
forwarding-options enhanced-hash-key family inet l2tp-tunnel-session-identifier
有効化できます。ジュニパーでは、このオプションをデフォルトで有効にすることは推奨されません。これは、L2TP セッション識別は宛先 UDP ポートの一致(1701)に基づいているため、このポートは L2TP トランスポートに排他的に使用されない可能性があるため、パケットからのトンネルおよびセッション ID フィールドの抽出が常に正確であるとは限りません。セッションID
トンネル ID
送信元と宛先のポート
送信元と宛先のアドレス。対称
プロトコル(UDP)
DSCP(無効)
受信インターフェイス インデックス(無効)
IPv6 経由で送信される GRE トラフィックに使用されるハッシュ フィールド
このリストは、フラグメント化されていないパケットのハッシュ計算で使用されるフィールドを示しています。デフォルトでは、特に明記されていない限り、フィールドはハッシュ計算で使用されます。また、ハッシュで使用されるIPフィールドとポートフィールドは対称的で、フィールドをスワップしてもハッシュ結果は変更されません。
IPv6、GRE
GRE キー
送信元と宛先のアドレス。対称
次のヘッダー
フロー ラベル(Junos 18.3 以降)
トラフィック クラス(無効)
受信インターフェイス インデックス(無効)
IPv6、GRE の IPv4(Junos 18.3 以降)
ペイロード(内部 IPv4:送信元と宛先のポート、IP アドレス)対称
GRE キー
GRE プロトコル = IPv4
送信元と宛先のアドレス。対称
次のヘッダー
フロー ラベル(Junos 18.3 以降)
トラフィック クラス(無効)
受信インターフェイス インデックス(無効)
IPv6、GRE の IPv6(Junos 18.3 以降)
ペイロード(内部 IPv6:送信元と宛先のポート、IP アドレス)対称
GRE キー
GRE プロトコル = IPv6
送信元と宛先のアドレス。対称
次のヘッダー
フロー ラベル(Junos 18.3 以降)
トラフィック クラス(無効)
受信インターフェイス インデックス(無効)
IPv6、GRE(Junos 18.3 以降)の MPLS
ペイロード(内部 MPLS:トップ ラベル)、対称
GRE キー
GRE プロトコル = MPLS
送信元と宛先のアドレス。対称
次のヘッダー
フロー ラベル
トラフィック クラス(無効)
受信インターフェイス インデックス(無効)
IPv4 に使用されるハッシュ フィールド
このリストには、フラグメント化されていないパケットのハッシュ計算で使用されるフィールドが表示されます(特に記載されている場合を除く)。デフォルトでは、特に明記されていない限り、フィールドはハッシュ計算で使用されます。また、IP フィールドとポート フィールドのハッシュは対称的で、フィールドをスワップしてもハッシュ結果は変更されません。
IPv4、TCP または UDP ではなく、フラグメント化されたパケット
送信元と宛先のアドレス。対称
プロトコル
DSCP(無効)
受信インターフェイス インデックス(無効)
IPv4、TCP、UDP、フラグメント化されていないパケット
送信元と宛先のポート。対称
送信元と宛先のアドレス。対称
プロトコル
DSCP(無効)
受信インターフェイス インデックス(無効)
IPv4、PPTP
16 ビットの GRE キー
送信元と宛先のアドレス。対称
プロトコル
DSCP(無効)
受信インターフェイス インデックス(無効)
IPv4、GTP、UDP トラフィックから宛先ポート 2152 へ
オプションで GPRS トンネリング プロトコル(GTP)トンネル エンドポイント識別子(TEID)を
forwarding-options enhanced-hash-key family inet gtp-tunnel-endpoint-identifier
有効にできます。ジュニパーでは、このオプションをデフォルトで有効にすることは推奨されません。これは、GTP セッション識別は宛先 UDP ポート一致(2152)に基づいているため、このポートは GTP トランスポートに排他的に使用されない可能性があるため、パケットからの TEID フィールドの抽出が常に正確であるとは限りません。GTP TEID(無効)
送信元と宛先のポート
送信元と宛先のアドレス。対称
プロトコル
DSCP(無効)
受信インターフェイス インデックス(無効)
IPv6 に使用されるハッシュ フィールド
このリストには、フラグメント化されていないパケットのハッシュ計算で使用されるフィールドが表示されます(特に記載されている場合を除く)。デフォルトでは、特に明記されていない限り、フィールドはハッシュ計算で使用されます。また、IP フィールドとポート フィールドのハッシュは対称的で、フィールドをスワップしてもハッシュ結果は変更されません。
IPv6、TCP および UDP 以外のパケット、または発信元によってフラグメント化された TCP および UDP パケット
送信元と宛先のアドレス。対称
次のヘッダー
フロー ラベル(Junos 18.3 以降)
トラフィック クラス(無効)
受信インターフェイス インデックス(無効)
IPv6、フラグメント化されていない TCP および UDP パケット
送信元と宛先のポート。対称
送信元と宛先のアドレス。対称
次のヘッダー
フロー ラベル(Junos 18.3 以降)
トラフィック クラス(無効)
受信インターフェイス インデックス(無効)
IPv6、PPTP
16 ビットの GRE キー
送信元と宛先のアドレス。対称
次のヘッダー
フロー ラベル(Junos 18.3 以降)
トラフィック クラス(無効)
受信インターフェイス インデックス(無効)
IPv6、GTP
階層レベルで GPRS トンネリング プロトコル(GTP)トンネル エンドポイント識別子(TEID)を
forwarding-options enhanced-hash-key family inet gtp-tunnel-endpoint-identifier
有効にできます。ジュニパーでは、このオプションをデフォルトで有効にすることは推奨されません。これは、GTP セッション識別は宛先 UDP ポート一致(2152)に基づいているため、このポートは GTP トランスポートに排他的に使用されない可能性があるため、パケットからの TEID フィールドの抽出が常に正確であるとは限りません。GTP TEID(デフォルトでは無効になっており、階層レベルで
forwarding-options enhanced-hash-key family inet gtp-tunnel-endpoint-identifier
有効にします。送信元と宛先のポート
送信元と宛先のアドレス。対称
次のヘッダー
フロー ラベル(Junos 18.3 以降)
トラフィック クラス(無効)
受信インターフェイス インデックス(無効)
マルチサービスに使用されるハッシュ フィールド
ファミリー マルチサービス ハッシュ設定は、ルーターに入るパケットに、または vpls
bridge
としてfamily ccc
適用されます。このリストは、フラグメント化されていないパケットのハッシュ計算で使用されるフィールドを示しています。デフォルトでは、特に明記されていない限り、フィールドはハッシュ計算で使用されます。また、ハッシュで使用されるIPフィールドとポートフィールドは対称的で、フィールドをスワップしてもハッシュ結果は変更されません。
イーサネット、非 IP または非 MPLS
設定されている場合、ペイロード情報は、最大 2 つの VLAN タグを持つタグなしパケットまたはパケットから抽出されます。
外部 802.1p(無効)
送信元と宛先のMAC。対称
受信インターフェイス インデックス(無効)
イーサネット、IPv4
ペイロード(内部 IPv4:送信元と宛先のポート、IP アドレス)対称
外部 802.1p(無効)
送信元と宛先のMAC。対称
受信インターフェイス インデックス(無効)
イーサネット、IPv6
ペイロード(内部 IPv6:送信元と宛先のポート、IP アドレス)対称
外部 802.1p(無効)
送信元と宛先のMAC。対称
受信インターフェイス インデックス(無効)
イーサネット、MPLS
ペイロード(内部 MPLS:トップ ラベルと内部 IPv4 および IPv6 フィールド)対称。関連情報については 、MPLS、Junos 18.3 以降で使用されるハッシュ フィールドを参照してください。
外部 802.1p(無効)
送信元と宛先のMAC。対称
受信インターフェイス インデックス(無効)
PPPoE の IPv4(データ パケット)
ペイロード(内部 IPv4:送信元と宛先のポート、IP アドレス)対称
PPP プロトコル IPv4 バージョン 0x1、タイプ 0x1
外部 802.1p(無効)
送信元と宛先のMAC。対称
受信インターフェイス インデックス(無効)
PPPoE の IPv6(データ パケット)
ペイロード(内部 IPv6:送信元と宛先のポート、IP アドレス)対称
PPP プロトコル IPv6 バージョン 0x1、タイプ 0x1
外部 802.1p(無効)
送信元と宛先のMAC。対称
受信インターフェイス インデックス(無効)
MPLS、Junos 18.3 以降に使用されるハッシュ フィールド
このリストは、フラグメント化されていないパケットのハッシュ計算で使用されるフィールドを示しています。デフォルトでは、特に明記されていない限り、フィールドはハッシュ計算で使用されます。また、ハッシュで使用されるIPフィールドとポートフィールドは対称的で、フィールドをスワップしてもハッシュ結果は変更されません。
MPLS、カプセル化された IPv4 または IPv6
-
ペイロード(内部 IPv4:送信元と宛先のポート、IP アドレス)対称
-
ペイロード(内部 IPv6:送信元と宛先のポート、IP アドレス、次のヘッダー)対称
-
ラベル 1.16(20 ビット)
-
外部ラベル EXP(無効)
受信インターフェイス インデックス(無効)
-
MPLS、IPv4、IPv6(イーサネット擬似ワイヤ)
ペイロード(イーサネット擬似ワイヤの IPv4/IPv6)
-
ラベル 2.16(20 ビット)
-
外部ラベル EXP(無効)
-
ラベル 1(20 ビット)
受信インターフェイス インデックス(無効)
-
MPLS、MPLS in Ethernet Pseudo-Wire
-
ペイロード(イーサネット擬似ワイヤの MPLS ラベル スタック エントリーの上位 2 つのラベル)
-
ラベル 2.16(20 ビット)
-
外部ラベル EXP(無効)
-
ラベル 1(20 ビット)
-
受信インターフェイス インデックス(無効)
-
MPLS、エントロピー ラベル
エントロピーラベルが検出されると、ペイロードフィールドは処理されず、指標はハッシュ計算に含まれません。
-
ラベル 1.16(20 ビット)
-
外部ラベル EXP(無効)
受信インターフェイス インデックス(無効)
-
Junos 14.1 から Junos 18.3 への MPLS に使用されるハッシュ フィールド
このリストは、フラグメント化されていないパケットのハッシュ計算で使用されるフィールドを示しています。デフォルトでは、特に明記されていない限り、フィールドはハッシュ計算で使用されます。また、ハッシュで使用されるIPフィールドとポートフィールドは対称的で、フィールドをスワップしてもハッシュ結果は変更されません。
MPLS、カプセル化された IPv4 または IPv6
ペイロード(内部 IPv4:送信元と宛先のポート、IP アドレス)対称
ペイロード(内部 IPv6:送信元と宛先のポート、IP アドレス、次のヘッダー)対称
ラベル 2.8(20 ビット)
外部ラベル EXP(無効)
ラベル 1(20 ビット)
受信インターフェイス インデックス(無効)
MPLS、IPv4、IPv6(イーサネット擬似ワイヤ)
ペイロード(イーサネット擬似ワイヤの IPv4/IPv6)
ラベル 2.8(20 ビット)
外部ラベル EXP(無効)
ラベル 1(20 ビット)
受信インターフェイス インデックス(無効)
-
MPLS、MPLS in Ethernet Pseudo-Wire
-
ペイロード(イーサネット擬似ワイヤの MPLS ラベル スタック エントリーの上位 2 つのラベル)
-
ラベル 2.16(20 ビット)
-
外部ラベル EXP(無効)
-
ラベル 1(20 ビット)
-
受信インターフェイス インデックス(無効)
-
MPLS、エントロピー ラベル
エントロピーラベルが検出されると、ペイロードフィールドは処理されず、指標はハッシュ計算に含まれません。
ラベル 2.8(20 ビット)
外部ラベル EXP(無効)
ラベル 1(20 ビット)
受信インターフェイス インデックス(無効)
MPC 搭載 MX シリーズ ルーターのハッシュ計算およびロード バランシングに関する Junos アップデートのリスト
Junos Release |
Change |
18.3R1 |
デフォルトのハッシュ計算には、IPv6 フロー ラベル、内部 GRE ヘッダー、内部 PPPoE が含まれます。 MPLS ラベル スタックの奥行きを 16 ラベルに増やします。 |
17.2R1 |
L2TP カプセル化された IPv4 および IPv6 パケットのロード バランシング。 |
16.1R1 |
制御ワードを使用した EoMPLS ペイロード ハッシュを含む。 送信元のみおよび宛先のみのベースのハッシュを導入します。 |
15.1R1 |
AE メンバー リンク全体で静的インターフェイスをターゲットに分散します。 デフォルトのハッシュ計算には、MPLS カプセル化 PPPoE ペイロードの送信元、宛先、MAC が含まれます。 |
14.2R3 |
LAGとMC-LAGの拡張性が向上します。 |
14.2R2 |
10G、40G、100Gリンクを備えたアグリゲートイーサネットバンドルを提供します。 |
14.1R1 |
aeX インターフェイスの作成を. アグリゲート イーサネット インターフェイス名スペースを増やします。 ECMP ネクスト ホップに適応型ロード バランシングを提供します。 |
13.3R1 |
適応型、パケット単位、ランダム単位、定期的な再調整のロード バランシングに関する機能強化が含まれています。 |
11.4R1 |
は、ECMP のネクスト ホップ全体で負荷共有を提供します。 |