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ユニキャストトラフィックフローに適用されます。Junos OSリリース15.1X49-D60以降、IPv6ユニキャストトラフィックのECMPフローベース転送は、すべてのSRXシリーズファイアウォールとvSRX仮想ファイアウォールインスタンスでサポートされます。マルチキャスト フローはサポートされていません。
ジュニパーネットワークスのセキュリティ デバイスでは、転送テーブルにインストールできる ECMP セット内のネクストホップ アドレスの最大数は 16 です。ECMP セットに 16 個を超えるネクストホップ アドレスがある場合、最初の 16 個のアドレスのみが使用されます。
シャーシ クラスタの導入では、ローカル インターフェイスはパケットが到着したインターフェイスと同じノード上にあるインターフェイスであり、リモート インターフェイスは他のシャーシ クラスタ ノード上にあるインターフェイスです。ECMP ルートのシャーシ クラスタ内にローカル インターフェイスとリモート インターフェイスの両方がある場合、ローカル インターフェイスがネクスト ホップに優先されます。
ネクストホップ アドレスが ECMP セットの一部ではなくなった場合、またはルート変更によりルーティング テーブルから削除された場合、ネクストホップを使用するフローは再ルーティングされ、セッションは影響を受けません。フローの再ルートは、ネクストホップ アドレスを奪う設定変更があった場合や、管理者がネクストホップ インターフェイスを削除せずにダウンさせた場合にも発生します。インターフェイスが削除されたか、セッションが意図的にクリアされたために、ネクストホップアドレスがルーティングテーブルから削除された場合、セッションは再ルーティングされずに強制終了されます。
ECMP セット内のインターフェイスは、同じセキュリティ ゾーンに配置することをお勧めします。フローが再ルーティングされ、再ルーティングされたフローが元のルートとは異なるセキュリティ ゾーンのインターフェイスを使用する場合、セッションは強制終了されます。
ジュニパーネットワークスのセキュリティデバイスでECMPフローベース転送を設定するには、まず、1つ以上のpolicy-statement
設定ステートメントを [edit policy-options
] 階層レベルで含めて、 アクション load-balance per-flow
を使用して負荷分散ルーティングポリシーを定義します。次に、ルーティング テーブルから転送テーブルにエクスポートされたルートにルーティング ポリシーを適用します。これを行うには、[] 階層レベルに および 設定ステートメントを含めforwarding-table
export
ますedit routing-options
。
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 つ を選択し、転送テーブルにインストールします。
SRXシリーズファイアウォールとvSRX仮想ファイアウォールインスタンスでのECMPフローベース転送は、IPv4およびIPv6ユニキャストトラフィックフローに適用されます。Junos OSリリース15.1X49-D60およびJunos OSリリース17.3R1以降、IPv6ユニキャストトラフィックのECMPフローベース転送は、すべてのSRXシリーズファイアウォールとvSRX仮想ファイアウォールインスタンスでサポートされます。マルチキャスト フローはサポートされていません。
リバーストラフィック用ECMP
Junos OSリリース17.3以降、リバーストラフィックのECMPサポートを有効にすると、SRXシリーズファイアウォールはハッシュアルゴリズムを使用して、フロー内のリバーストラフィックに使用するインターフェイスを決定します。このプロセスは、パケットがあるパスで送信元から宛先に移動し、送信元に戻るときに異なるパスをたどる非対称ルーティングに似ています。
この機能を有効にしない場合、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クイック構成
この例をすばやく設定するには、次のコマンドをコピーしてテキストファイルに貼り付け、改行を削除して、ネットワーク構成に合わせて必要な詳細を変更し、 階層レベルのCLI [edit]
にコマンドをコピーして貼り付けます。
## 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 security
、 show policy-options
、および のコマンドを発行show interfaces
して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 ネットワーク宛てのパケットは、リスト内の任意のネクスト ホップを使用できます。
変更履歴テーブル
機能のサポートは、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がプラットフォームでサポートされているかどうかを判断します。