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 フローベース転送を設定するには、まず [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 つ を選択し、転送テーブルにインストールします。
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シリーズ ファイアウォールはハッシュ アルゴリズムを使用して、フロー内のリバース トラフィックに使用するインターフェイスを決定します。このプロセスは、パケットが送信元から宛先までを 1 つのパスで通過し、送信元に戻るときに異なるパスを取る非対称ルーティングと似ています。
この機能を有効にしない場合、SRXシリーズファイアウォールは、リバーストラフィック用の受信インターフェイスに設定されたECMP内のルートを選択します。これがデフォルトの動作です。
[edit security flow] 階層の allow-reverse-ecmp 設定ステートメントを使用して、ECMP フローベース転送を設定し、ECMP セット内のリバース トラフィック転送用のルートを選択する際にハッシュ アルゴリズムを使用します。つまり、この機能を有効にすると、SRXシリーズファイアウォールは、受信インターフェイスへのルートを選択するのではなく、ハッシュアルゴリズムを使用して、ECMPセット内のリバーストラフィック用のルートを選択します。
ECMP フローベースのポリシーはゾーンベースであるため、ECMP リバース ルックアップ サポートにより、リバース トラフィックに使用されるエグレス インターフェイスが、到着トラフィックに使用されるイングレス インターフェイスと同じゾーンにあることが保証されます。
ECMP セット内のインターフェイスは、同じセキュリティ ゾーンに存在する必要があります。エグレスインターフェイスゾーンがイングレスインターフェイスゾーンと異なる場合、セッションを作成することはできますが、パケットはドロップされます。
リバースECMPを有効にする場合は、次の条件に注意し、それを回避するためのアクションを実行してください。 ECMPフローベースの転送を使用すると、SRXシリーズファイアウォールにより、アップストリームデバイスがセッションの一方向のトラフィックのみを見るようにすることができます。TCP-proxy や SYN-proxy など、セッション状態を維持するアップストリーム デバイスで問題が発生する可能性があります。この問題は、非同期ルーティングの動作と似ています。
例: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 ネットワーク宛てのパケットは、リスト内の任意のネクスト ホップを使用できます。
変更履歴
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。特定の機能がお使いのプラットフォームでサポートされているかどうかを確認するには、 Feature Explorer を使用します。
