このページの内容
ECMPフローベースフォワーディング
このトピックでは、Junos OS SRXシリーズファイアウォールとvSRX仮想ファイアウォールインスタンス上の転送およびリバースサイドトラフィックの等コストマルチパス(ECMP)の概要について説明します。Junos OS SRXシリーズファイアウォールとvSRX仮想ファイアウォールインスタンスでのECMP実装を包括的にカバーします。
ECMP フローベース転送について
等価コストマルチパス(ECMP)は、同じセッションまたはフローのトラフィック(つまり、同じ送信元と宛先を持つトラフィック)を等コストの複数のパスに伝送できるようにするネットワークルーティング戦略です。これは、同じ宛先へのリンクで未使用の帯域幅を最大限に活用することで、トラフィックの負荷分散と帯域幅の増加を可能にするメカニズムです。
パケットを転送する際、ルーティング技術はどのネクストホップパスを使用するかを決定する必要があります。決定を行う際、デバイスはフローを識別するパケットヘッダーフィールドを考慮に入れます。ECMPを使用する場合、ルーティングメトリック計算とハッシュアルゴリズムに基づいて等コストのネクストホップパスが識別されます。つまり、等コストのルートは、同じプリファレンス値とメトリック値を持ち、ネットワークに対するコストも同じになります。ECMP プロセスでは、ルーターのセットを識別し、各ルーターは宛先への正当な等コスト ネクスト ホップとなります。識別されたルートを ECMP セットと呼びます。ECMP はネクスト ホップ宛先のみに対処するため、ほとんどのルーティング プロトコルで使用できます。
等価コストマルチパス(ECMP)セットは、ルーティングテーブルに同じ宛先に対して等コストの複数のネクストホップアドレスが含まれている場合に形成されます。(等コストのルートは、同じプリファレンス値とメトリック値を持ちます。)アクティブルートにECMPが設定されている場合、Junos OSはハッシュアルゴリズムを使用して、転送テーブルにインストールするECMPセット内のネクストホップアドレスの 1つ を選択します。
ECMP セット内の複数のネクストホップ エントリーが転送テーブルにインストールされるように、Junos OS を設定できます。ジュニパーネットワークスのデバイスでは、フローごとのロードバランシングを実行して、ルーティングデバイス間の複数のパスにトラフィックを分散させることができます。ジュニパーネットワークスのセキュリティデバイスでは、送信元と宛先のIPアドレスとプロトコルを調べて、個々のトラフィックフローを決定します。同じフローのパケットは、同じインターフェイス上で転送されます。ECMP セットに追加または変更されても、インターフェイスは変更されません。これは、IDP、ALG、ルートベースVPNトンネルのセッション確立の最初のパス中にのみ変換が実行されるソースNATなどの機能にとって重要です。パケットがECMPセット内の特定のインターフェイスに到着した場合、セキュリティデバイスはリバーストラフィックが同じインターフェイスを経由して転送されるようにします。
セキュリティデバイスでのECMPフローベースの転送は、IPv4およびIPv6のユニキャストトラフィックフローに適用されます。IPv6ユニキャストトラフィックのECMPフローベース転送は、すべてのSRXシリーズファイアウォールとvSRX仮想ファイアウォールインスタンスでサポートされています。マルチキャストフローはサポートされていません。 機能エクスプローラー を使用して、特定の機能のプラットフォームおよびリリースサポートを確認します。
ジュニパーネットワークスのセキュリティデバイスでは、転送テーブルにインストールできるECMPセット内のネクストホップアドレスの最大数は16です。ECMP セットに 16 を超えるネクストホップアドレスが存在する場合、最初の 16 個のアドレスのみが使用されます。
シャーシクラスター導入では、ローカルインターフェイスはパケットが到着したインターフェイスと同じノード上にあるインターフェイスであり、リモートインターフェイスはもう一方のシャーシクラスターノード上にあるインターフェイスです。ECMP ルートがシャーシ クラスター内にローカル インターフェイスとリモート インターフェイスの両方を持つ場合、ローカル インターフェイスがネクスト ホップに優先されます。
ネクストホップアドレスがECMPセットに含まれていない場合、またはルート変更によりルーティングテーブルから削除された場合、ネクストホップを使用するフローは再ルーティングされ、セッションは影響を受けません。また、ネクストホップアドレスを削除する設定変更があった場合や、管理者がネクストホップインターフェイスを削除せずにダウンした場合にも、フローの再ルーティングが発生します。インターフェイスが削除されたか、セッションが意図的にクリアされたためにネクストホップアドレスがルーティングテーブルから削除された場合、セッションは再ルーティングされずに強制終了されます。
ECMP セット内のインターフェイスを同じセキュリティ ゾーンに配置することをお勧めします。フローが再ルーティングされ、再ルーティングされたフローが元のルートとは異なるセキュリティゾーンのインターフェイスを使用する場合、セッションは強制終了されます。
ジュニパーネットワークスセキュリティデバイス上でECMPフローベースの転送を設定するには、まず[edit policy-options]階層レベルで1つ以上のpolicy-statement設定ステートメントを含め、アクションload-balance per-flowを使用して負荷分散ルーティングポリシー定義します。次に、ルーティングテーブルから転送テーブルにエクスポートされたルートにルーティングポリシーを適用します。これを行うには、[edit routing-options]階層レベルでforwarding-tableおよびexport設定ステートメントを含めます。
Junos OS SRXシリーズファイアウォールとvSRX仮想ファイアウォールインスタンスへのECMP実装
SRXシリーズファイアウォールとvSRX仮想ファイアウォールインスタンスにECMPを設定し、フローごとのロードバランシングを実装し、ルーティングデバイス間の複数のパスにトラフィックを分散させることができます。等コストのルートは、同じプリファレンス値とメトリック値を持ちます。これらのデバイスは、送信元 IP アドレス、宛先 IP アドレス、プロトコルを調べて、個々のトラフィック フローを決定します。セキュリティポリシーで許可されている同じ送信元IPアドレス、宛先IPアドレス、プロトコル番号を持つトラフィックは、同じネクストホップに転送されます。これらのデバイス上の Junos OS は、ハッシュ ロジックでフロー情報を使用します。
Junos OS SRXシリーズファイアウォールとvSRX仮想ファイアウォールインスタンスでは、ルーティングテーブルに同じ宛先の複数のネクストホップアドレスが等コストで含まれている場合にECMPセットが形成されます。ECMP では、ECMP セット内の複数のネクストホップ エントリーを転送テーブルにインストールできます。同じフローのパケットは、同じインターフェイス上で転送されます。ECMP セットに追加または変更されても、インターフェイスは変更されません。
アクティブルートにECMPが設定されている場合、Junos OSはハッシュアルゴリズムを使用して、転送テーブルにインストールするECMPセット内のネクストホップアドレスの 1つ を選択します。
リバーストラフィックのECMP
Junos OSリリース17.3以降、リバーストラフィックのECMPサポートを有効にすると、SRXシリーズファイアウォールはハッシュアルゴリズムを使用してフロー内のリバーストラフィックに使用するインターフェイスを決定します。このプロセスは、パケットが送信元から宛先まで 1 つのパスで通過し、送信元に戻るときに異なるパスをたどる非対称ルーティングと似ています。
この機能を有効にしない場合、SRXシリーズファイアウォールは、デフォルトの動作であるリバーストラフィックの受信インターフェイスに設定されたECMP内のルートを選択します。
[edit security flow]階層のallow-reverse-ecmp設定ステートメントを使用して、ECMPフローベース転送が、逆トラフィックトランジット用に設定されたECMPセット内のルートを選択する際にハッシュアルゴリズムを使用するように設定します。つまり、この機能を有効にすると、受信インターフェイスへのルートを選択するのではなく、SRXシリーズファイアウォールはハッシュアルゴリズムを使用して、ECMPセット内のリバーストラフィック用のルートを選択します。
ECMP フローベースのポリシーはゾーンベースであるため、ECMP リバースルックアップのサポートにより、リバーストラフィックに使用されるエグレスインターフェイスが、到着トラフィックに使用されるイングレスインターフェイスと同じゾーンにあることが保証されます。
ECMP セット内のインターフェイスは、同じセキュリティ ゾーン内にある必要があります。egressインターフェイスゾーンがingressインターフェイスゾーンと異なる場合、セッションを作成できますが、パケットはドロップされます。
リバースECMPを有効にする場合は、以下の条件を認識し、これを回避するためのアクションを講じてください。 ECMPフローベース転送が使用されている場合、SRXシリーズファイアウォールにより、アップストリームデバイスにセッションの一方向トラフィックしか表示されなくなる可能性があります。TCPプロキシやSYNプロキシなど、セッション状態を維持するアップストリームデバイスで問題が発生する可能性があります。この問題は、非同期ルーティングの動作に似ています。
例:ECMP フローベース転送の設定
この例では、ECMP フローベース転送を設定する方法を示します。
要件
この機能を設定する前に、デバイスの初期化以外の特別な設定を行う必要はありません。
概要
この例では、SRXシリーズファイアウォール上で3つの静的ECMPルートを設定します。各静的ルートは、宛先サーバーに到達するために異なるネクストホップルーターを使用します。ルーターへのインターフェイスは、untrust セキュリティ ゾーンに割り当てられます。この例では、 load-balancing-policy という名前の負荷分散ルーティングポリシーを作成し、ルーティングテーブルから転送テーブルにエクスポートされるすべてのルートにポリシーを適用します。
設定
CLIクイックコンフィグレーション
この例をすばやく設定するには、以下のコマンドをコピーしてテキスト ファイルに貼り付け、改行を削除して、ネットワーク構成に合わせて必要な詳細を変更し、 [edit] 階層レベルのCLIにコマンドをコピー アンド ペーストします。
## Interfaces ## set interfaces ge-0/0/2 unit 0 family inet address 192.168.4.1/24 set interfaces ge-0/0/4 unit 0 family inet address 192.168.1.1/24 set interfaces ge-0/0/6 unit 0 family inet address 192.168.2.1/24 set interfaces ge-0/0/7 unit 0 family inet address 192.168.3.1/24 ## Static routes ## set routing-options static route 172.16.1.0/24 next-hop 192.168.1.2 set routing-options static route 172.16.1.0/24 next-hop 192.168.2.2 set routing-options static route 172.16.1.0/24 next-hop 192.168.3.2 ## Security zones, address book entry, and policy ## set security zones security-zone trust interfaces ge-0/0/2 set security zones security-zone untrust interfaces ge-0/0/4 set security zones security-zone untrust interfaces ge-0/0/6 set security zones security-zone untrust interfaces ge-0/0/7 set security address-book global address FTP-servers 172.16.1.0/24 set security policies from-zone trust to-zone untrust policy permit-ftp match source-address any set security policies from-zone trust to-zone untrust policy permit-ftp match destination-address FTP-servers set security policies from-zone trust to-zone untrust policy permit-ftp match application junos-ftp set security policies from-zone trust to-zone untrust policy permit-ftp then permit ## ECMP routing policy ## set policy-options policy-statement load-balancing-policy then load-balance per-flow set routing-options forwarding-table export load-balancing-policy
手順
ステップバイステップの手順
次の例では、設定階層のさまざまなレベルに移動する必要があります。
ECMPフローベース転送を設定するには:
-
インターフェイスを設定します。
[edit interaces] user@host# set ge-0/0/2 unit 0 family inet address 192.168.4.1/24 user@host# set ge-0/0/4 unit 0 family inet address 192.168.1.1/24 user@host# set ge-0/0/6 unit 0 family inet address 192.168.2.1/24 user@host# set ge-0/0/7 unit 0 family inet address 192.168.3.1/24
-
スタティックルートを設定します。
[edit routing-options] user@host# set static route 172.16.1.0/24 next-hop 192.168.1.2 user@host# set static route 172.16.1.0/24 next-hop 192.168.2.2 user@host# set static route 172.16.1.0/24 next-hop 192.168.3.2
-
trustとuntrustセキュリティゾーンを作成し、関連するインターフェイスを含めます。[edit security] user@host# set zones security-zone trust interfaces ge-0/0/2 user@host# set zones security-zone untrust interfaces ge-0/0/4 user@host# set zones security-zone untrust interfaces ge-0/0/6 user@host# set zones security-zone untrust interfaces ge-0/0/7
-
サーバーサブネットのアドレス帳エントリーを設定します。
このエントリは、セキュリティポリシーで使用されます。
[edit security address-book] user@host# set global address FTP-servers 172.16.1.0/24
-
セキュリティポリシーを設定します。
[edit security policies from-zone trust to-zone untrust] user@host# set policy permit-ftp match source-address any user@host# set policy permit-ftp match destination-address FTP-servers user@host# set policy permit-ftp match application junos-ftp user@host# set policy permit-ftp then permit
-
負荷分散のルーティングポリシーを作成します。
[edit policy-options] user@host# set policy-statement load-balancing-policy then load-balance per-flow
-
ルーティングポリシーは、ルーティングテーブルから転送テーブルにエクスポートされるすべてのルートに適用します。
[edit routing-options] user@host# set forwarding-table export load-balancing-policy
結果
設定モードから、 show interfaces、 show security、 show policy-options、 show routing-options コマンドを発行して設定を確認します。出力に意図した設定が表示されない場合は、この例の手順を繰り返して設定を修正します。
[edit]
user@host# show interfaces
ge-0/0/2 {
unit 0 {
family inet {
address 192.168.4.1/24;
}
}
}
ge-0/0/4 {
unit 0 {
family inet {
address 192.168.1.1/24;
}
}
}
ge-0/0/6 {
unit 0 {
family inet {
address 192.168.2.1/24;
}
}
}
ge-0/0/7 {
unit 0 {
family inet {
address 192.168.3.1/24;
}
}
}
user@host# show security
address-book {
global {
address FTP-servers 172.16.1.0/24;
}
}
policies {
from-zone trust to-zone untrust {
policy permit-ftp {
match {
source-address any;
destination-address FTP-servers;
application junos-ftp;
}
then {
permit;
}
}
}
}
zones {
security-zone trust {
interfaces {
ge-0/0/2.0;
}
}
security-zone untrust {
interfaces {
ge-0/0/4.0;
ge-0/0/6.0;
ge-0/0/7.0;
}
}
}
user@host# show policy-options
policy-statement load-balancing-policy {
then {
load-balance per-flow;
}
}
[edit]
user@host# show routing-options
static {
route 172.16.1.0/24 next-hop [ 192.168.1.2 192.168.2.2 192.168.3.2 ];
}
forwarding-table {
export load-balancing-policy;
}
デバイスの設定が完了したら、設定モードから commit を入力します。
検証
転送テーブルの検証
目的
すべてのECMPルートのルート情報が転送テーブルに表示されることを確認します。
アクション
動作モードから、 show route forwarding-table destination 172.16.1.0 コマンドを入力します。
user@host> show route forwarding-table destination 172.16.1.0
Routing table: default.inet
Internet:
Destination Type RtRef Next hop Type Index NhRef Netif
172.16.1.0/24 user 0 ulst 262142 2
192.168.1.2 ucst 560 2 ge-0/0/4.0
192.168.2.2 ucst 561 2 ge-0/0/6.0
192.168.3.2 ucst 562 2 ge-0/0/7.0
...
意味
出力では、ネクストホップタイプが ulstを示しています。これは、ルートに複数の適格なネクストホップがあることを意味します。172.16.1.0ネットワーク宛のパケットは、リスト内の任意のネクストホップを使用できます。
変更履歴テーブル
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がお使いのプラットフォームでサポートされているかどうかを確認します。
