作成するファイアウォール フィルターの数の計画
ファイアウォールフィルターの数を増やす方法
デバイスのファイアウォールフィルターの数は、いくつかの方法で増やすことができます。
-
(QFX5220)512を超えるegress VLANフィルターを作成するには、最初のVLAN IDを6、2番目のVLAN IDを7、3番目のVLAN IDを 8 というように指定します。設定したVLANごとに、その数は1ずつ増加し、VLAN ID 1029まで続きます。作成するエグレス VLAN フィルターの数を 512 未満にしたいが、これらのフィルターの用語の総数を 512 より大きくしたい場合は、VLAN ID に同じ番号を付けてください。それ以外の場合、許可される用語またはフィルターの総数は 1024 未満になり、512 のままになります。
-
Junos OS リリース 19.1R1 以降、
egress-to-ingress
オプションを使用することで、QFX5110上のエグレス VLAN ファイアウォール フィルターの数を 1024 から 2048 に増やすことができます。このオプションは、[edit firewall]
階層のfrom
ステートメントの下に含めます。Junos OS Evolvedリリース19.4R2以降、
[edit system packet-forwarding-option firewall]
階層レベルのeracl-profile
ステートメントの下にegress-scale
オプションを含めることで、QFX5220上に最大2000個のエグレスファイアウォールフィルターを設定できます。この機能は、エグレス方向(デバイスから出るルーティングされたトラフィック)でのみサポートされます。この機能を設定する際は、以下の点を考慮してください。
-
同じ一致条件のフィルターを、異なるエグレスVLANまたはレイヤー3インターフェイスに適用することはできません。
-
GREインターフェイスにエグレススケーリングを適用することはできません。
-
パケットが異なる修飾子を持つ複数のフィルターに一致し、異なるエグレスインターフェイスに適用すると、予期しない動作が発生する可能性があります。
-
egress-scale
オプションは、グローバル モードでのみ設定できます。新しいcli設定は、グローバル モードで提供されます。ユーザーがERACLグループをegress-scale(egressからingress)モードで設定すると、IFP tcamスペースを使用せずにERACLを以前の方法で設定することはできません。つまり、混合モードでの ERACL はサポートされません。
-
TCAM
Junos OSリリース20.3R1以降を実行しているQFX5120-48YおよびEX4650スイッチの場合、ループバックインターフェイスのループバックフィルター条件の数をIPv6の場合は384(デフォルト)から768に、IPv4では384(デフォルト)から1152条件に増やすことができます。[editchassis]階層レベルで設定されたループバックファイアウォール最適化CLIを使用して最適化を有効にします。このコマンドにより、FPCが再起動し、サービスが停止します。CLIの詳細については、 https://www.juniper.net/documentation/us/en/software/junos/cli-reference/topics/ref/statement/chassis-loopback-firewall-optimization.html を参照してください。
ファイアウォールフィルター用のTCAM(Ternary Content Addressable Memory)は、256項に対応するスライスに分割されています。ファイアウォールフィルターを設定する場合、メモリスライス内のすべての項が同じタイプのフィルターに含まれ、同じ方向に適用されている必要があります。メモリスライスは、フィルターをコミットするとすぐに予約されます。例えば、ポートフィルターを作成して入力方向に適用すると、イングレスポートフィルターのみを格納するメモリスライスが予約されます。イングレスポートフィルターを1つだけ作成して適用し、そのフィルターに1つの条件しかない場合、このスライスの残りの部分は使用されず、他のフィルタータイプでは使用できません。
EVPN 環境では、QFX5200 シリーズ スイッチは最大 512 の TCAM エントリをサポートします。
例えば、1つのメモリスライスが埋められるように、それぞれ1項ずつ256個のイングレスポートフィルターを作成して適用するとします。これにより、イングレス フィルターに使用できるメモリ スライスがさらに 2 つ残ります。(この場合、イングレス条件の最大数は768です)。その後、1つの項でイングレスレイヤー3フィルターを作成して適用すると、別のメモリスライスがイングレスレイヤー3フィルター用に予約されます。以前と同様に、スライスの残りの部分は使用されず、異なるフィルタータイプでは使用できません。これで、任意のイングレス フィルター タイプで使用できるメモリ スライスが 1 つになりました。
ここで、VLAN イングレス フィルターを作成して適用すると仮定します。最終メモリスライスは、VLANイングレスフィルター用に予約されています。イングレスフィルターのメモリ割り当て(ここでもフィルターごとに1項と仮定)は次のとおりです。
-
スライス1: 256個のイングレスポートフィルターでいっぱい。これ以上イングレスポートフィルターをコミットすることはできません。
-
スライス2: 1つの条件を持つ1つのイングレスレイヤー3フィルターが含まれます。イングレスレイヤー3フィルターでは、さらに255条件コミットできます。
-
スライス3: 1つの項を持つ1つのイングレスVLANフィルタが含まれます。イングレスVLANフィルターでは、さらに255条件をコミットできます。
別の例を次に示します。1 つのフィルターに 1 つの項を持つ 257 個のイングレス ポート フィルターを作成すると仮定します。つまり、1 つのメモリ スライスが収容できるよりも多くの項を 1 つ作成します。フィルターを適用して設定をコミットすると、フィルターのメモリ割り当ては次のようになります。
-
スライス1: 256個のイングレスポートフィルターでいっぱい。これ以上イングレスポートフィルターを適用することはできません。
-
スライス2: イングレスポートフィルターが1つ含まれています。イングレスポートフィルターには、さらに255の用語を適用できます。
-
スライス3: このスライスは未割り当てです。任意のタイプ(ポート、レイヤー 3、または VLAN)のイングレスフィルターで 256 個の条件を作成して適用できますが、すべてのフィルターが同じタイプである必要があります。
上記の例はすべて、エグレスフィルターにも適用されます。違いは、IPv4 と IPv6 のレイヤー 3 フィルターが別々のスライスに格納されるため、4 つのメモリ スライスが使用されることです。エグレス フィルターのメモリ スライスはイングレス フィルターのメモリ スライスと同じサイズであるため、フィルターの最大数は同じになります(1024)。
設定するフィルタが多すぎるのを避ける
これらの制限のいずれかに違反し、準拠していない設定をコミットすると、Junos OSは過剰なフィルターを拒否します。例えば、300 のイングレス ポート フィルターと 300 のイングレス レイヤー 3 フィルターを設定し、設定をコミットしようとすると、Junos OS は次のことを行います(ここでも、フィルターごとに 1 つの条件を想定しています)。
-
300 個の入力ポート フィルターを受け入れます(2 つのメモリ スライスに格納)。
-
処理する最初の 256 個のイングレス レイヤー 3 フィルターを受け入れます(3 番目のメモリ スライスに格納)。
-
残りの 44 個のイングレス レイヤー 3 フィルターを拒否します。
デバイスを再起動する前に、設定から過剰なフィルター(たとえば、残りの 44 個のイングレス レイヤー 3 フィルター)を必ず削除してください。準拠していない構成のデバイスを再起動した場合、再起動後にどのフィルターがインストールされたかを予測するのは困難です。上記の例では、最初に拒否された 44 個のイングレス レイヤー 3 フィルターがインストールされ、最初に受け入れられた 44 個のポート フィルターが拒否される可能性があります。
TCAM エラー メッセージの設定
TCAMスペースが不足し、ファイアウォールフィルターをインストールできない場合は、次の方法でエラーメッセージを送信するようにスイッチを設定できます。
-
エラーメッセージをsyslogファイルに送信するには、
set system syslog file filename pfe emergency
を入力します。 -
set system syslog console pfe emergency
を入力して、エラーメッセージをコンソールに送信します。 -
SSH ターミナルセッションにエラーメッセージを送信するには、
set system syslog user user-login pfe emergency
を入力します。
プロファイルを使用してファイアウォールフィルターのスケールを拡大する方法
ファイアウォールフィルターを設定する場合、ファイアウォールフィルター設定の 条件ステートメントは、広範な一致条件を提供します。一致条件とは、一致と見なされるためにパケットに含まれる必要のあるフィールドと値です。要件に基づいて、単一または複数の一致条件を定義できます。パケットがフィルターに一致すると、デバイスは条件で指定されたアクションを実行します。ファイアウォールフィルターのスケーラビリティは、通常、使用する一致条件の数に依存します。
一般的なデプロイ シナリオでは、一致条件のサブセットのみを使用する必要があります。プロファイルの導入により、利用可能なファイアウォールフィルタープロファイルの1つを事前定義された一致条件とともに使用し、使用するファイアウォールフィルターの数を増やして最大スケールを達成することができます。
ファミリーinetおよびイーサネットベースのスイッチングのファイアウォールフィルタープロファイルを設定できます。ファイアウォールフィルタープロファイルを設定するには、[edit system packet-forwarding-options firewall]階層レベルでprofiles設定ステートメントを使用します。
プロファイルを選択するか、あるプロファイルから別のプロファイルに移動することによってファイアウォールフィルターのプロファイルを変更すると、パケット転送エンジンが再起動し、トラフィックフローが中断されます。
以下の表で、inet およびイーサネットベースのスイッチングのファイアウォール フィルター プロファイルと事前定義された一致条件について説明します。
ファミリータイプ | ファイアウォールフィルタープロファイル | 一致条件 (定義済み) | 構成階層 |
---|---|---|---|
inet (IPv4/IPv6) | profile1 |
ip-source-prefix-list protocol ネクストヘッダー 送信元ポート 宛先ポート 最初のフラグメント IS-fragment ICMPコード ICMPタイプ TCP確立 tcp イニシャル tcp フラグ |
[edit system packet-forwarding-options firewall profiles inet profile1 ] |
profile2 |
IP送信元アドレス IP6送信元アドレス ip-source-prefix-list ip6-source-prefix-list protocol ネクストヘッダー 送信元ポート 宛先ポート 最初のフラグメント IS-fragment ICMPコード ICMPタイプ TCP確立 tcp イニシャル tcp フラグ ティッカー 順位 トラフィッククラス ティッカー ホップ制限 |
[edit system packet-forwarding-options firewall profiles inet profile2 ] |
|
イーサネットスイッチング | profile1 |
送信元MACアドレス 宛先MACアドレス |
[edit system packet-forwarding-options firewall profiles ethernet-switching profile1 ] |
profile2 |
送信元MACアドレス 宛先MACアドレス イーサタイプ IP送信元アドレス ip-source-prefix-list IP プロトコル 送信元ポート 宛先ポート ネクストヘッダー |
[edit system packet-forwarding-options firewall profiles ethernet-switching profile2 ] |
|
ファイアウォールフィルタープロファイルを選択する場合、事前定義された一致条件サブセットの一部である一致条件を適用する必要があります。ファイアウォールフィルタープロファイルの事前定義された一致条件サブセットに含まれていない一致条件を適用すると、コミットエラーが発生します。例えば、inet フィルターに profile1
を選択し、事前定義された一致条件の一部ではない ip-destination-address
として一致条件を適用した場合、コミット操作中に、 ip-destination-address
一致が inet フィルターの profile1
に含まれていないことを示すエラーが表示されます。
show pfe filter hw profile-info
CLI コマンドを使用して、ファイアウォール フィルター プロファイルの詳細を表示できます。
ファイアウォールフィルターのスケールを最大限に高めるには、インターフェイスレベル(レイヤー2またはレイヤー3)フィルターを適用し、異なるパケット処理パイプラインのインターフェイス全体にフィルターを均等に分散することを推奨します。インターフェイスの各セットは、それらのインターフェイスで受信したパケットを処理するパケット処理パイプラインにマップされます。この場合、ファイアウォールフィルターは、それぞれのインターフェイスにマッピングされたパケット処理パイプラインのTCAMメモリスペースにインストールされます。
パケットがインターフェイスに入ると、ファイアウォールフィルターは、一致条件に基づいてパケット処理パイプライン内のパケットに対してフィルタリングアクションを実行してから、イグレスインターフェイスから出ます。複数のパケット処理パイプラインがある場合、パケットが複数のインターフェイスを介してデバイスに入ると、ファイアウォールフィルターは、それぞれのパケット処理パイプラインを通過するパケットに対してフィルタリングアクションを実行します。インターフェイス レベル フィルターを異なるパケット処理パイプラインのインターフェイス全体に均等に分散させると、拡張性が向上します
show pfe filter hw port-pipe-info
CLI コマンドを使用して、各物理インターフェイスがマッピングされているパケット処理パイプラインの詳細を表示できます。この CLI コマンドの出力には、パケット処理パイプラインにインストールされているファイアウォール フィルターに関する情報も表示されます。この情報を使用して、ファイアウォールフィルターを計画し、パイプライン全体に分散し、最大のスケールを実現できます。
次の show pfe filter hw port-pipe-info
CLI コマンドの出力例は、各物理インターフェイスがマッピングされているパケット処理パイプラインの詳細を示しています。
user@host> show pfe filter hw port-pipe-info IFD Pipe et-0/0/0 1 et-0/0/1 1 ... et-0/0/10 0
ポリサーがエグレスフィルターを制限する方法
一部のスイッチでは、設定したエグレスポリサーの数が、許可されるエグレスファイアウォールフィルターの総数に影響を与えることがあります。すべてのポリサーには、1024エントリのTCAMで2つのエントリを占める2つの暗黙的なカウンターがあります。これらは、ファイアウォール フィルターの用語でアクション修飾子として構成されているカウンターなど、カウンターに使用されます。(ポリサーのタイプに関係なく、1つはグリーンパケットに使用され、もう1つは非グリーンパケットに使用されるため、ポリサーは2つのエントリを消費します)。TCAMがいっぱいになると、カウンターを含む条件を持つエグレスファイアウォールフィルターをこれ以上コミットできなくなります。例えば、512 個のエグレス ポリサー(2 色、3 色、または両方のポリサー タイプの組み合わせ)を設定してコミットすると、カウンターのすべてのメモリ エントリーが使い果たされます。構成ファイルの後半で、カウンターを含む条件を持つ追加のエグレス ファイアウォール フィルターを挿入した場合、カウンターに使用できるメモリ領域がないため、これらのフィルターのどの条件 も コミットされません。
次に例をいくつか示します。
-
合計512のポリサーを含み、カウンターを含まないエグレスフィルターを設定するとします。構成ファイルの後半に、10 個の条件を持つ別のエグレス フィルターを含め、そのうちの 1 つにカウンター アクション修飾子を設定します。カウンターに十分な TCAM スペースがないため、このフィルターのどの条件もコミットされません。
-
合計500のポリサーを含むエグレスフィルターを設定すると、1000のTCAMエントリーが占有されるとします。構成ファイルの後半で、次の 2 つのエグレス フィルターを含めます。
-
20 個の項と 20 個のカウンターでフィルター A。すべてのカウンターに十分なTCAMスペースがあるため、このフィルターのすべての条件がコミットされます。
-
フィルター B はフィルター A の後にあり、5 つの項と 5 つのカウンターがあります。すべてのカウンターに十分なメモリ領域がないため、このフィルターのどの条件もコミットされません。(5 つの TCAM エントリが必要ですが、使用可能は 4 つだけです)。
-
この問題の発生を防ぐには、カウンターアクションを含むエグレスファイアウォールフィルター用語が、ポリサーを含む用語よりも構成ファイルの早い位置に配置されるようにします。この状況では、暗黙的なカウンターのための十分なTCAMスペースがない場合でも、Junos OSはポリサーをコミットします。たとえば、次のことを想定します。
-
カウンターアクションを含む1024個のエグレスファイアウォールフィルター条件があります。
-
構成ファイルの後半には、10語のエグレスフィルターがあります。どの条件にもカウンターはありませんが、1 つの用語にはポリサー アクション修飾子があります。
ポリサーの暗黙的なカウンターのための十分なTCAMスペースがない場合でも、10語でフィルターを正常にコミットできます。ポリサーはカウンターなしでコミットされます。
フィルター固有のポリシーの計画
ポリサーをフィルター固有に設定できます。つまり、Junos OSは、ポリサーが何回参照されても、ポリサーインスタンスを1つだけ作成します。これを行うと、レート制限が集約されて適用されるため、1 Gbps を超えるトラフィックを破棄するようにポリサーを設定し、そのポリサーを 3 つの異なる用語で参照する場合、フィルタで許可される合計帯域幅は 1 Gbps になります。ただし、フィルター固有のポリサーの動作は、ポリサーを参照するファイアウォール フィルターの用語が TCAM(Ternary Content Addressable Memory)にどのように格納されているかによって影響を受けます。フィルター固有のポリサーを作成し、それを複数のファイアウォール フィルター用語で参照する場合、用語が異なる TCAM スライスに格納されている場合、ポリサーは予想よりも多くのトラフィックを許可します。例えば、1 Gbps を超えるトラフィックを廃棄するようにポリサーを設定し、そのポリサーを 3 つの異なる用語で参照し、3 つの別々のメモリ スライスに格納する場合、フィルターで許容される総帯域幅は 1 Gbps ではなく 3 Gbps になります。
この予期しない動作が発生しないようにするには、上記の TCAM スライスに関する情報を使用して構成ファイルを整理し、特定のフィルター固有のポリサーを参照するすべてのファイアウォール フィルター条件が同じ TCAM スライスに保存されるようにします。
フィルターベース転送の計画
ファイアウォールフィルターを仮想ルーティングインスタンスとともに使用して、パケットがネットワーク内を移動する異なるルートを指定できます。フィルターベース転送と呼ばれるこの機能を設定するには、フィルターと一致条件を指定してから、パケットの送信先となる仮想ルーティング インスタンスを指定します。この方法で使用されるフィルターは、追加の TCAM でもメモリを消費します。詳細については 、FIP スヌーピング、FBF、および MVR フィルタの拡張性について を参照してください。このトピックの「 FBF フィルター VFP TCAM 消費」 セクションでは、フィルターベースの転送を使用する場合にサポートされるフィルターの数について具体的に説明します。
フィルターベースの転送は、一部のジュニパー製スイッチのIPv6インターフェイスでは機能しません。
変更履歴
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。 特定の機能がお使いのプラットフォームでサポートされているかどうかを確認するには、 Feature Explorer をご利用ください。
[edit system packet-forwarding-option firewall]
階層レベルの eracl-profile
ステートメントの下にegress-scale
オプションを含めることで、QFX5220上に最大2000個のエグレスファイアウォールフィルターを設定できます。egress-to-ingress
オプションを使用することで、QFX5110上のエグレス VLAN ファイアウォール フィルターの数を 1024 から 2048 に増やすことができます。