フロー検出の設定と使用
フロー検出は、各フローに許可された帯域幅の違反について制御トラフィックのフローを監視し、原因フローとして識別されたトラフィックを管理します。トラフィックの抑制は、デフォルトの管理オプションです。フロー検出は通常、全体的なコントロールプレーンDDoS保護戦略の一部として実装されますが、新しい構成でのトラフィックフローのトラブルシューティングと把握にも役立ちます。フロー検出はデフォルトで無効になっています。
拡張加入者管理は、Junos OSリリース17.3R1の時点で、コントロールプレーンのDDoS保護のフロー検出をサポートしています。
開始する前に、コントロールプレーンのDDoS攻撃防御がネットワークに対して適切に設定されていることを確認してください。DDoS 防御の詳細については、 コントロール プレーンの DDoS 保護の設定 を参照してください。
不審フローの検出期間を設定する
DDoS 保護フロー検出は、明らかに良好なフローを考慮から除外する粗いテストに基づいて、フローが許可された帯域幅を超える場合は常に、監視対象のフローを疑わしいフローと見なします。疑わしいフローを詳しく調べるには、フローが一定期間帯域幅に違反したままになっている必要があります。その後、フロー検出は、フローが対処すべき原因となるフローと見なします。 flow-detect-time
ステートメントを含めてこの検出期間を設定することも、デフォルトの 3 秒にすることもできます。
拡張加入者管理は、Junos OSリリース17.3R1の時点でDDoS防御のためのフロー検出をサポートしています。
検出期間にはデフォルト値を使用することをお勧めします。
フロー検出によってフローが原因フローであると宣言されるまでの、フローが違反している必要がある期間を指定するには:
検出期間を設定します。
[edit system ddos-protection protocols protocol-group packet-type] user@host# set flow-detect-time seconds
たとえば、DHCPv4 ディスカバー パケット フローが、マプリット フローと見なされる前に 30 秒間、許容帯域幅に違反することを要求するには、次のステートメントを含めます。
[edit system ddos-protection protocols dhcpv4 discover] user@host# set flow-detect-time 30
原因フローの回復期間の設定
DDoS 攻撃防御フロー検知によって、疑わしいフローが原因であるフローが特定された後、そのフローがルーターにとって脅威ではなくなった時期を判断する必要があります。トラフィック フロー レートが許可された帯域幅内に戻った場合、回復期間中、レートは帯域幅内にとどまる必要があります。そうして初めて、フロー検出はフローが正常であると見なし、原因となるフローに対して制定されたトラフィック処理アクションを停止します。この回復期間を設定するには、 flow-recover-time
ステートメントを含めることも、デフォルトの 60 秒を使用することもできます。
違反後、フローが正常フローであると宣言するまでの、フローが許可された帯域幅内にある必要がある時間を指定するには:
回復期間を設定します。
[edit system ddos-protection protocols protocol-group packet-type] user@host# set flow-recover-time seconds
たとえば、DHCPv4 ディスカバー パケット フローが 5 分間(300 秒)回復していることを要求するには、次のステートメントを含めます。
[edit system ddos-protection protocols dhcpv4 discover] user@host# set flow-recover-time 300
原因フローのタイムアウト期間の設定
DDoS 防御フロー検出が疑わしいフローを原因フローとして識別すると、デフォルトでは、トラフィックフローが帯域幅制限を超えている限り、そのフローのトラフィックを抑制します。抑制は停止し、フローによる最後の違反からの時間が回復期間よりも長い場合、フローはフロー テーブルから削除されます。
または、 timeout-active-flows
ステートメントを含めることで、フロー検出を有効にし、設定可能なタイムアウト期間の間、原因となるフローを抑制することもできます。タイムアウト期間が経過すると、抑制が停止し、フロー テーブルからフローが削除されます。 flow-timeout-time
ステートメントを含めてタイムアウト期間を設定するか、デフォルトのタイムアウトである 300 秒に頼らざるを得ません。
フロー検出を有効にして、タイムアウト期間の間、原因となるフローを抑制できるようにするには:
たとえば、DHCPv4 検出パケット フローを 10 分間(600 秒)抑制するには、以下のステートメントを含めます。
[edit system ddos-protection protocols dhcpv4 discover] user@host# set timeout-active-flows user@host# setflow-timeout-time 600
各フロー集約レベルでのフロー検出の動作方法の設定
フロー検出をオンにすると、すべてのプロトコル グループとパケット タイプについて、デフォルトでトラフィック フローがモニタされます。ポリサー違反が発生すると、各不審なフローが調査され、違反の原因となったのが原因フローであるかどうかが判断されます。 flow-level-detection
ステートメントを含めることで、パケット タイプ(加入者、論理インターフェイス、物理インターフェイス)の各フロー集約レベルでフロー検出の動作を設定できます。
個々のフローアグリゲーション レベルでフロー検出が動作するには、パケット レベルでのフロー検出モードを automatic
または on
にする必要があります。
プロトコル グループおよびパケット レベルでのフロー検出と同様に、フロー集約レベルでのフロー検出では、次の 3 つのモードがサポートされています。
automatic—コントロールプレーンのDDoS保護ポリサーに違反した場合、疑わしいフローがこのアグリゲーションレベルではなく、より粗いアグリゲーションレベルである必要があるとフロー検出が判断するまで、このフロー集約レベルのトラフィックフローの不審な動作が監視されます。このレベルのフローは、その後、より粗いレベルでポリサーに違反しなくなるまで、再度検索されません。
off:このフロー集約レベルでは、トラフィック フローはモニタされません。
on:パケット レベルでのフロー検知が
on
に設定されている場合、現在 DDoS 防御ポリサーに違反していない場合でも、このフロー集約レベルのトラフィック フローは不審なフローがないか監視されます。このレベルで疑わしいフローが識別されたかどうかに関係なく、監視はこのレベルで続行されます。ただし、パケット レベル モードがautomatic
の場合、このレベルでトラフィック フローをチェックするには、ポリサーが違反している必要があります。
フローは、まず、粒度の細かい(帯域幅が最も低い)フロー集約レベルであるサブスクライバで調べられます。疑わしいフローが加入者レベルで見つからない場合、フローは論理インターフェイス レベルでチェックされます。最後に、容疑者が見つからない場合は、物理インターフェイス レベルでフローがチェックされます。いくつかの設定ミスがない限り、原因となるフローはこのレベルで検出する必要があります。
各フロー集約レベルでのフロー検出の動作を設定するには:
例えば、ポリサーが違反されている場合にのみ加入者レベルで疑わしいフローをチェックするようにフロー検出を設定し、論理インターフェイスレベルでは絶対にチェックせず、常に物理インターフェイスレベルでチェックするには、以下のステートメントを含めます。
[edit system ddos-protection protocols dhcpv4 discover] user@host# edit flow-level-detection user@host# set subscriber automatic user@host# set logical-interface off user@host# set physical-interface on
各フロー集約レベルでのフロー内のトラフィックの制御方法の設定
フロー検出が有効になっている場合、すべてのプロトコル グループとパケット タイプ、およびすべてのフロー アグリゲーション レベルで、原因となるフロー内のすべてのトラフィックがデフォルトでドロップされます。 flow-level-control
ステートメントを含めることで、フロー検出を設定し、個々のパケット タイプに対して異なる方法でトラフィックを制御することができます。特定のフロー集約レベル(加入者、論理インターフェイス、または物理インターフェイス)で制御動作を指定する必要があります。
パケット タイプに以下のモードのいずれかを使用するようにフロー検出フロー制御を設定できます。
すべてのトラフィックをドロップする - 帯域幅制限に違反しているフローが悪意のあるものであると考えられる場合に、すべてのトラフィックをドロップするようにフロー制御を設定します。この動作は、すべてのフロー集約レベルのデフォルトです。
トラフィックのポリシング - フロー制御を設定して、帯域幅を侵害しているフローをポリシングし、レートを帯域幅制限以下に強制します。この場合、フロー制御は単純なポリサーとして機能します。
すべてのトラフィックを保持 - フローが帯域幅制限に違反しているか、それ以下であるかにかかわらず、すべてのトラフィックを保持するようにフロー制御を設定します。このモードは、ネットワークのトラフィックフローをデバッグする必要がある場合に役立ちます。
フロー制御モードにより、ネットワーク内の制御トラフィックの管理方法を非常に柔軟に行うことができます。たとえば、すべての集約レベルのパケット タイプの制御フローが制限内に収まるようにのみ確認する場合は、フロー制御を設定して各レベルのトラフィックを規制できます。または、原因となるフローを検出して、あるレベルでは抑制するが、別のレベルでは許可された帯域幅へのトラフィックのみを制限する場合は、1 つのレベルですべてのトラフィックをドロップし、もう 1 つのレベルを設定してトラフィックをポリシングできます。
フロー検出が原因フロー内のトラフィックを制御する方法を設定するには:
たとえば、物理インターフェイスのすべてのトラフィックを設定された帯域幅以下に維持し、サブスクライバ レベルで原因となるフローを検出して抑制するようにフロー検出を設定するには、次のようにします。
[edit system ddos-protection protocols dhcpv4 discover] user@host# edit flow-level-control user@host# set subscriber drop user@host# set physical-interface police user@host# edit flow-level-detection user@host# set logical-interface off
この例では、論理インターフェイスは気にしないため、そのレベルではフロー検出がオフになっています。フロー検出が無効になっているため、そのレベルのフロー制御の状態は重要ではありません。
すべてのプロトコル グループとパケット タイプのフロー検出の有効化
デフォルトでは、フロー検出はすべてのプロトコルグループとパケットタイプで無効になっています。 flow-detection
ステートメントを含めて、フロー検出をグローバルに有効にする必要があります。その後、個々のパケットタイプのフロー検出を無効にした場合、このグローバルステートメントを使用して、そのような個々の設定をすべて上書きすることはできません。パケット設定レベルで、検出を再度有効にする必要があります。
フロー検出をグローバルに有効にするには:
フロー検出を設定します。
[edit system ddos-protection global] user@host# set flow-detection
以下のグループおよびパケットタイプには典型的なイーサネット、IP、または IPv6 ヘッダーがないため、フロー検出をグローバルに有効にすることはできません。
プロトコル グループ:
fab-probe
、frame-relay
、inline-ka
、isis
、jfm
、mlp
、pfe-alive
、pos
、およびservices
。パケット タイプ:
ip-options
プロトコル グループのunclassified
。
すべてのプロトコル グループとパケット タイプに対する原因フロー レポート レートの設定
フロー検出により、ラインカード上で追跡している疑わしいフローが実際に原因フローであることが確認されると、ルーティングエンジンにレポートを送信します。また、フロー検出は、その後、許可された帯域幅内に回復するか、クリアされた各原因フローを報告します。 flow-report-rate
ステートメントを含めることで、各ラインカードの毎秒のフロー数を制限できます。原因フローイベントは、デフォルトですべてのプロトコルグループとパケットタイプについて報告されます。報告されるフローが多すぎると、ルーティング エンジン フローへのホスト パスで輻輳が発生する可能性があります。
原因フローの最大レポート レートをグローバルに設定するには:
レポートレートを設定します。
[edit system ddos-protection global] user@host# set flow-report-rate rate
すべてのプロトコル グループとパケット タイプの違反報告率の設定
デフォルトでは、フロー検出は、すべてのプロトコルグループとパケットタイプについて、FPCでの帯域幅のすべての違反をルーティングエンジンに報告します。 violation-report-rate
ステートメントを含めることで、ラインカードからのフロー検出レポートにおける違反数を制限できるため、ルーターの負荷を軽減できます。デフォルト値に依存するのではなく、ネットワークに適したレポートレートを設定することをお勧めします。
最大帯域幅違反報告率をグローバルに設定するには:
レポートレートを設定します。
[edit system ddos-protection global] user@host# set violation-report-rate rate
パケットタイプの原因フローイベントの自動ロギングの無効化
デフォルトでは、フロー検出は、すべてのプロトコル グループとパケット タイプの疑わしいフローに関連付けられたポリサー違反イベント(違反レポート)と原因フロー イベント(フロー レポート)を自動的に記録します。no-flow-logging
ステートメントを含めることで、個々のパケット タイプの原因フロー イベントが自動的にログに記録されることを防止できます。不審なフロー違反イベントの自動ロギングは、[edit system ddos-protection global
階層レベルの disable-logging
ステートメントで無効化されます。
パケットタイプの自動犯人フローイベントロギングを無効にするには:
ログ記録を無効にします。
[edit system ddos-protection protocols protocol-group packet-type] user@host# set no-flow-logging
パケットタイプの不審フロー違反イベントの自動ロギングを無効にするには:
ログ記録を無効にします。
[edit system ddos-protection protocols protocol-group packet-type] user@host# set disable-logging
たとえば、DHCPv4 DISCOVER パケット フローの自動ロギングを無効にするには、以下のステートメントを含めます。
[edit system ddos-protection protocols dhcpv4 discover] user@host# set no-flow-logging
各フロー集約レベルでの最大フロー帯域幅の設定
flow-level-bandwidth
ステートメントを含めることで、個々のパケットタイプのトラフィックフローの最大許容帯域幅を設定できます。特定のフローアグリゲーションレベル(加入者、論理インターフェイス、または物理インターフェイス)での帯域幅の動作を指定する必要があります。デフォルトに依存するのではなく、ネットワークの帯域幅値を調整することをお勧めします。
各フローアグリゲーションレベルでトラフィックフローの最大帯域幅を設定するには:
たとえば、加入者レベルで 1000 pps、論理インターフェイス レベルで 5000 pps、物理インターフェイス レベルで 30,000 にフロー帯域幅を設定するには、次のようにします。
[edit system ddos-protection protocols dhcpv4 discover] user@host# edit flow-level-bandwidth user@host# set subscriber 1000 user@host# set logical-interface 5000 user@host# set physical-interface 30000
フロー検出の検証と管理
目的
コントロールプレーンDDoS保護設定の一部としてフロー検出に関する情報を表示またはクリアします。
拡張加入者管理は、Junos OSリリース17.3R1の時点で、コントロールプレーンのDDoS保護のフロー検出をサポートしています。
アクション
フロー検出の設定情報を表示するには:
user@host> show ddos-protection protocols flow-detection
検出および追跡されたフローの数、フローの送信元アドレス、到着インターフェイス、レートなど、フロー検出によって識別された原因フローに関する情報を表示するには:
user@host> show ddos-protection protocols culprit-flows
すべてのプロトコル グループのすべてのパケット タイプの原因フローをクリアするには:
user@host> clear ddos-protection protocols culprit-flows
特定のプロトコル グループ内のすべてのパケット タイプの原因フローをクリアするには:
user@host> clear ddos-protection protocols protocol-group culprit-flows
変更履歴テーブル
機能のサポートは、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がプラットフォームでサポートされているかどうかを判断します。