この製品のマニュアルセットは、偏向のない言語を使用するように配慮されています。このマニュアルセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザーインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブランゲージに対する取り組みの詳細は、こちらをご覧ください。
このドキュメントは、米国シスコ発行ドキュメントの参考和訳です。リンク情報につきましては、日本語版掲載時点で、英語版にアップデートがあり、リンク先のページが移動/変更されている場合がありますことをご了承ください。あくまでも参考和訳となりますので、正式な内容については米国サイトのドキュメントを参照ください。
目次
この章の内容は、次のとおりです。
コントロール プレーン ポリシング(CoPP)はコントロール プレーンを保護し、それをデータ プレーンから分離することによって、ネットワークの安定性、到達可能性、およびパケット配信を保証します。
この機能により、コントロール プレーンにポリシー マップを適用できるようになります。 このポリシー マップは通常の QoS ポリシーのように見え、ルータまたはレイヤ 3 スイッチの任意の IP アドレスに宛てられたすべてのトラフィックに適用されます。 ネットワーク デバイスへの一般的な攻撃ベクトルは、過剰なトラフィックがデバイス インターフェイスに転送されるサービス拒絶(DoS)攻撃です。
Cisco NX-OS デバイスは、DoS 攻撃がパフォーマンスに影響しないようにするために CoPP を提供します。 このような攻撃は誤って、または悪意を持って実行される場合があり、通常は、スーパーバイザ モジュールまたは CPU 自体に宛てられた大量のトラフィックが含まれます。
スーパーバイザ モジュールは、管理対象のトラフィックを次の 3 つの機能コンポーネント(プレーン)に分類します。
スーパーバイザ モジュールには、マネージメント プレーンとコントロール プレーンの両方が搭載され、ネットワークの運用にクリティカルなモジュールです。 スーパーバイザ モジュールの動作が途絶したり、スーパーバイザ モジュールが攻撃されたりすると、重大なネットワークの停止につながります。 たとえばスーパーバイザに過剰なトラフィックが加わると、スーパーバイザ モジュールが過負荷になり、NX-OS デバイス全体のパフォーマンスが低下する可能性があります。 またたとえば、スーパーバイザ モジュールに対する DoS 攻撃は、コントロール プレーンに対して非常に高速に IP トラフィック ストリームを生成することがあります。これにより、コントロール プレーンは、これらのパケットを処理するために大量の時間を費やしてしまい、本来のトラフィックを処理できなくなります。
次に、DoS 攻撃の例を示します。
これらの攻撃によりデバイスのパフォーマンスが影響を受け、次のようなマイナスの結果をもたらします。
サービス品質の低下(音声、ビデオ、または重要なアプリケーション トラフィックの低下など)
ルート プロセッサまたはスイッチ プロセッサの高い CPU 使用率
ルーティング プロトコルのアップデートまたはキープアライブの消失によるルート フラップ
不安定なレイヤ 2 トポロジ
CLI との低速な、または応答を返さない対話型セッション
メモリやバッファなどのプロセッサ リソースの枯渇
着信パケットの無差別のドロップ
注意 |
コントロール プレーンの保護策を講じることで、スーパーバイザ モジュールを偶発的な攻撃や悪意ある攻撃から確実に保護することが重要です。 |
コントロール プレーンを保護するために、Cisco NX-OS デバイスはコントロール プレーンに向かうさまざまなパケットを異なるクラスに分離します。 クラスの識別が終わると、Cisco NX-OS デバイスはパケットをポリシングします。これにより、スーパーバイザ モジュールに過剰な負担がかからないようになります。
コントロール プレーンには、次のような異なるタイプのパケットが到達します。
これらのさまざまなパケットはすべて、コントロール プレーンへの悪意ある攻撃に利用され、Cisco NX-OS デバイスに過剰な負荷をかける可能性があります。 CoPP は、これらのパケットを異なるクラスに分類し、これらのパケットをスーパーバイザが受信する速度を個別に制御するメカニズムを提供します。
効果的に保護するために、Cisco NX-OS デバイスはスーパーバイザ モジュールに到達するパケットを分類します。これにより、パケット タイプに応じて異なるレート制御ポリシーを適用できます。 たとえば、Hello メッセージなどのプロトコル パケットには厳格さを緩め、IP オプションがセットされているためにスーパーバイザ モジュールに送信されるパケットには厳格さを強めることが考えられます。 クラス マップとポリシー マップを使用して、パケットの分類およびレート制御ポリシーを設定します。
パケットの分類には、次のパラメータを使用できます。
パケットの分類が終わると、Cisco NX-OS デバイスはさまざまなメカニズムを使用して、スーパーバイザ モジュールに到達するパケットのレートを制御します。
ポリシング レートは 1 秒間あたりのパケット(PPS)という形式で指定されます。 分類されたそれぞれのフローは、PPS で表すポリシング レート制限を指定することによって個別にポリシングできます。
Cisco NX-OS デバイスの初回起動時には、DoS 攻撃からスーパーバイザ モジュールを保護するためのデフォルト copp-system-policy が Cisco NX-OS ソフトウェアによってインストールされます。 最初のセットアップ ユーティリティで、次のいずれかの CoPP ポリシー オプションを選択することにより、展開シナリオの CoPP ポリシー テンプレートを選択できます。
Default:レイヤ 2 およびレイヤ 3 ポリシー。CPU にバインドされているスイッチド トラフィックとルーテッド トラフィックの間で適切なポリシング バランスを提供します。
Layer 2:レイヤ 2 ポリシー。CPU にバインドされているレイヤ 2 トラフィック(たとえば BPDU)により多くのプリファレンスを与ます。
Layer 3:レイヤ 3 ポリシー。CPU にバインドされているレイヤ 3 トラフィック(たとえば、BGP、RIP、OSPF など)により多くのプリファレンスを与えます。
オプションを選択しなかった場合や、セットアップ ユーティリティを実行しなかった場合には、Cisco NX-OS ソフトウェアにより Default ポリシングが適用されます。 最初はこのデフォルト ポリシーを使用し、必要に応じて CoPP ポリシーを変更することを推奨します。
デフォルトの copp-system-policy ポリシーには、基本的なデバイス操作に最も適した値が設定されています。 DoS に対抗する実際の保護要件に適合するよう、特定のクラスやアクセス コントロール リスト(ACL)を追加する必要があります。
default、Layer 2 および Layer 3 テンプレートを切り替えるには、setup コマンドを使って設定ユーティリティを再び入力することができます。
このポリシーは、スイッチにデフォルトで適用されます。 これには、ほとんどのネットワーク導入に適したポリサー レートを持つクラスが含まれています。 このポリシー テンプレートを変更することはできませんが、デバイスの CoPP 設定を変更できます。 セットアップ ユーティリティを実行してデフォルトの CoPP ポリシー プロファイルをセットアップすると、CoPP ポリシーに対して既に行われたすべての変更が削除されます。
このポリシーの設定は次のとおりです。
policy-map type control-plane copp-system-policy class copp-s-default police pps 400 class copp-s-ping police pps 100 class copp-s-l3destmiss police pps 100 class copp-s-glean police pps 500 class copp-s-l3mtufail police pps 100 class copp-s-ttl1 police pps 100 class copp-s-ip-options police pps 100 class copp-s-ip-nat police pps 100 class copp-s-ipmcmiss police pps 400 class copp-s-ipmc-g-hit police pps 400 class copp-s-ipmc-rpf-fail-g police pps 400 class copp-s-ipmc-rpf-fail-sg police pps 400 class copp-s-dhcpreq police pps 300 class copp-s-dhcpresp police pps 300 class copp-s-igmp police pps 400 class copp-s-routingProto2 police pps 1300 class copp-s-eigrp police pps 200 class copp-s-pimreg police pps 200 class copp-s-pimautorp police pps 200 class copp-s-routingProto1 police pps 1000 class copp-s-arp police pps 200 class copp-s-ptp police pps 1000 class copp-s-bpdu police pps 12000 class copp-s-cdp police pps 400 class copp-s-lacp police pps 400 class copp-s-lldp police pps 200 class copp-icmp police pps 200 class copp-telnet police pps 500 class copp-ssh police pps 500 class copp-snmp police pps 500 class copp-ntp police pps 100 class copp-tacacsradius police pps 400 class copp-stftp police pps 400 class copp-ftp police pps 100 class copp-http police pps 100
このポリシー テンプレートを変更することはできませんが、デバイスの CoPP 設定を変更できます。 セットアップ ユーティリティを実行してレイヤ 2 CoPP ポリシー プロファイルをセットアップすると、CoPP ポリシーに対して行われたすべての変更が削除されます。
このポリシーの設定は次のとおりです。
policy-map type control-plane copp-system-policy class copp-s-default police pps 400 class copp-s-ping police pps 100 class copp-s-l3destmiss police pps 100 class copp-s-glean police pps 500 class copp-s-l3mtufail police pps 100 class copp-s-ttl1 police pps 100 class copp-s-ip-options police pps 100 class copp-s-ip-nat police pps 100 class copp-s-ipmcmiss police pps 400 class copp-s-ipmc-g-hit police pps 400 class copp-s-ipmc-rpf-fail-g police pps 400 class copp-s-ipmc-rpf-fail-sg police pps 400 class copp-s-dhcpreq police pps 300 class copp-s-dhcpresp police pps 300 class copp-s-igmp police pps 400 class copp-s-routingProto2 police pps 1200 class copp-s-eigrp police pps 200 class copp-s-pimreg police pps 200 class copp-s-pimautorp police pps 200 class copp-s-routingProto1 police pps 900 class copp-s-arp police pps 200 class copp-s-ptp police pps 1000 class copp-s-bpdu police pps 12300 class copp-s-cdp police pps 400 class copp-s-lacp police pps 400 class copp-s-lldp police pps 200 class copp-icmp police pps 200 class copp-telnet police pps 500 class copp-ssh police pps 500 class copp-snmp police pps 500 class copp-ntp police pps 100 class copp-tacacsradius police pps 400 class copp-stftp police pps 400 class copp-ftp police pps 100 class copp-http police pps 100
このポリシー テンプレートを変更することはできませんが、デバイスの CoPP 設定を変更できます。 セットアップ ユーティリティを実行してレイヤ 3 CoPP ポリシー プロファイルをセットアップすると、CoPP ポリシーに対して行われたすべての変更が削除されます。
このポリシーの設定は次のとおりです。
policy-map type control-plane copp-system-policy class copp-s-default police pps 400 class copp-s-ping police pps 100 class copp-s-l3destmiss police pps 100 class copp-s-glean police pps 500 class copp-s-l3mtufail police pps 100 class copp-s-ttl1 police pps 100 class copp-s-ip-options police pps 100 class copp-s-ip-nat police pps 100 class copp-s-ipmcmiss police pps 400 class copp-s-ipmc-g-hit police pps 400 class copp-s-ipmc-rpf-fail-g police pps 400 class copp-s-ipmc-rpf-fail-sg police pps 400 class copp-s-dhcpreq police pps 300 class copp-s-dhcpresp police pps 300 class copp-s-igmp police pps 400 class copp-s-routingProto2 police pps 4000 class copp-s-eigrp police pps 200 class copp-s-pimreg police pps 200 class copp-s-pimautorp police pps 200 class copp-s-routingProto1 police pps 4000 class copp-s-arp police pps 200 class copp-s-ptp police pps 1000 class copp-s-bpdu police pps 6000 class copp-s-cdp police pps 200 class copp-s-lacp police pps 200 class copp-s-lldp police pps 200 class copp-icmp police pps 200 class copp-telnet police pps 500 class copp-ssh police pps 500 class copp-snmp police pps 500 class copp-ntp police pps 100 class copp-tacacsradius police pps 400 class copp-stftp police pps 400 class copp-ftp police pps 100 class copp-http police pps 100
(注) |
copp-s-x という名前のクラスはスタティック クラスです。 ACL は、スタティックとダイナミックの両方のクラスに関連付けることができます。 |
特定のポリシーの 1 秒間あたりのパケット(PPS)の合計(ポリシーの各クラス部分の PPS の合計)の上限は、PPS のクレジット制限(PCL)の上限になります。 特定のクラスの PPS が増加して PCL 超過すると、設定が拒否されます。 目的の PPS を増やすには、PCL を超える PPS の分を他のクラスから減少させる必要があります。
Cisco NX-OS デバイスは、管理インターフェイス(mgmt0)をサポートしないハードウェア ベースの CoPP だけをサポートします。 アウトオブバンド mgmt0 インターフェイスは CPU に直接接続するため、CoPP が実装されているインバンド トラフィック ハードウェアは通過しません。
mgmt0 インターフェイスで、ACL を設定して、特定タイプのトラフィックへのアクセスを許可または拒否することができます。
この機能にはライセンスは不要です。 ライセンス パッケージに含まれていない機能はすべて Cisco NX-OS システム イメージにバンドルされており、追加費用は一切発生しません。 NX-OS ライセンス方式の詳細については、『Cisco NX-OS Licensing Guide』を参照してください。
CoPP に関する注意事項と制約事項は次のとおりです。
導入のシナリオに応じてデフォルト、L2、または L3 ポリシーを選択し、観察された動作に基づいて、CoPP ポリシーを後で変更することを推奨します。
CoPP のカスタマイズは継続的なプロセスです。 CoPP を設定するときには、特定の環境で使用されるプロトコルや機能に加えて、サーバ環境に必要なスーパーバイザ機能を考慮する必要があります。 これらのプロトコルや機能が変更されたら、CoPP を変更する必要があります。
CoPP を継続的にモニタすることを推奨します。 ドロップが発生した場合は、CoPP がトラフィックを誤ってドロップしたのか、または誤動作や攻撃に応答してドロップしたのかを判定してください。 どちらの場合も、状況を分析して、別の CoPP ポリシーを使用するか、またはカスタマイズ済み CoPP ポリシーを変更する必要があるかどうかを評価します。
Cisco NX-OS ソフトウェアは、出力 CoPP とサイレント モードをサポートしません。 CoPP は入力だけでサポートされます。service-policy output copp は、コントロール プレーン インターフェイスには適用できません。
新しい CoPP ポリシーの作成はサポートされていません。
IPv6 と IPv4 の CoPP ACL エントリでは、別々の TCAM リージョンを使用します。 IPv6 CoPP が動作するには、IPv6 ACL SUP TCAM リージョン(ipv6-sup)がゼロ以外のサイズに切り分けられている必要があります。 詳細については、ACL TCAM リージョンおよびACL TCAM リージョン サイズの設定のトピックを参照してください。
CoPP には、すべての IPv4 CoPP ACL、IPv6 CoPP ACL および ARP ACL で最大 76 個のエントリを設定できます。 システムは、72 個のスタティック エントリでプログラムされます(20 個の内部エントリ、43 個の IPv4 ACL エントリ、および 9 つの IPv6 ACL エントリ)。 残りの 4 つのエントリを設定できます。 さらにエントリを作成する必要がある場合は、未使用のスタティックな CoPP ACE を削除する必要があります。その後、追加エントリを作成します。
CoPP 機能をサポートしない Cisco NX-OS リリースから CoPP 機能をサポートする Cisco NX-OS リリースにアップグレードする場合は、スイッチの起動時にデフォルト ポリシーを使って CoPP が自動的にイネーブルにされます。 別のポリシー(デフォルト、 l3、 l2)をイネーブルにするには、アップグレード後にセットアップ スクリプトを実行する必要があります。 CoPP 保護を設定しない場合、NX-OS デバイスは DoS 攻撃に対して脆弱な状態のままになります。
CoPP 機能をサポートする Cisco NX-OS リリースから、新しいプロトコルの追加クラスを含む CoPP 機能をサポートする Cisco NX-OS リリースにアップグレードする場合は、CoPP の新しいクラスを使用可能にするためにセットアップ ユーティリティを実行する必要があります。
セットアップ スクリプトは、CPU に着信するさまざまなフローに対応するポリシング レートを変更するため、デバイスにトラフィックが発生する時間ではなく、スケジュールされたメンテナンス期間にセットアップ スクリプトを実行することを推奨します。
コントロール プレーン ポリシーのコントロール プレーン クラス マップを設定する必要があります。
トラフィックを分類するには、既存の ACL に基づいてパケットをマッチング(照合)します。 ACL キーワード permit および deny は、マッチング時には無視されます。
IPv4 または IPv6 パケットのポリシーを設定できます。
クラス マップ内で ACE ヒット カウンタを使用する場合は、IP ACL が設定済みであることを確認してください。
CoPP のポリシー マップを設定する必要があります。ポリシー マップにはポリシング パラメータを含めます。 クラスのポリサーを設定しなかった場合、デフォルトの PPS をサポートします。
IPv4 または IPv6 パケットのポリシーを設定できます。
コントロール プレーン クラス マップが設定してあることを確認します。
コマンドまたはアクション | 目的 | |
---|---|---|
ステップ 1 | configure terminal 例: switch# configure terminal switch(config)# |
グローバル コンフィギュレーション モードを開始します |
ステップ 2 | policy-map type control-plane policy-map-name 例: switch(config)# policy-map type control-plane copp-system-policy switch(config-pmap)# |
コントロール プレーン ポリシー マップを指定し、ポリシー マップ コンフィギュレーション モードを開始します。 ポリシー マップ名は最大 64 文字で、大文字と小文字は区別されます。 |
ステップ 3 | class {class-map-name [insert-before class-map-name2] | class} 例: switch(config-pmap)# class ClassMapA switch(config-pmap-c)# |
コントロール プレーン クラス マップ名またはクラス デフォルトを指定し、コントロール プレーン クラス コンフィギュレーション モードを開始します。 |
ステップ 4 | police [pps] {pps-value} [bc] burst-size [bytes | kbytes | mbytes | ms | packets | us] 例: switch(config-pmap-c)# police pps 100 bc 10 |
1 秒間あたりのパケット(PPS)およびコミット済みバースト(BC)に関するレート制限を指定します。 PPS の範囲は 0 ~ 20,000 です。 デフォルト PPS は 0 です。 BC の範囲は 0 ~ 512000000 です。 デフォルト BC サイズの単位はバイトです。 |
ステップ 5 | exit 例: switch(config-pmap-c)# exit switch(config-pmap)# |
ポリシー マップ クラス コンフィギュレーション モードを終了します。 |
ステップ 6 | exit 例: switch(config-pmap)# exit switch(config)# |
ポリシー マップ コンフィギュレーション モードを終了します。 |
ステップ 7 | show policy-map type control-plane [expand] [name class-map-name] 例: switch(config)# show policy-map type control-plane |
(任意) コントロール プレーン ポリシー マップの設定を表示します。 |
ステップ 8 | copy running-config startup-config 例: switch(config)# copy running-config startup-config |
(任意) 実行コンフィギュレーションを、スタートアップ コンフィギュレーションにコピーします。 |
コントロール プレーン ポリシー マップを設定します。
コマンドまたはアクション | 目的 | |
---|---|---|
ステップ 1 | configure terminal 例: switch# configure terminal switch(config)# |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 | control-plane 例: switch(config) # control-plane switch(config-cp)# |
コントロール プレーン コンフィギュレーション モードを開始します。 |
ステップ 3 | [no] service-policy input policy-map-name 例: switch(config-cp)# service-policy input copp-system-policy |
入トラフィックのポリシー マップを指定します。 |
ステップ 4 | exit 例: switch(config-cp)# exit switch(config)# |
コントロール プレーン コンフィギュレーション モードを終了します。 |
ステップ 5 | show running-config copp [all] 例: switch(config)# show running-config copp |
(任意) CoPP 設定を表示します。 |
ステップ 6 | copy running-config startup-config 例: switch(config)# copy running-config startup-config |
(任意) リブートおよびリスタート時に実行コンフィギュレーションをスタートアップ コンフィギュレーションにコピーして、変更を永続的に保存します。 |
CoPP の設定情報を表示するには、次の show コマンドのいずれかを入力します。
コマンド |
目的 |
---|---|
show ip access-lists [acl-name] |
CoPP の ACL を含め、システム内で設定されているすべての IPv4 ACL を表示します。 |
show class-map type control-plane [class-map-name] |
このクラス マップにバインドされている ACL を含め、コントロール プレーン クラス マップの設定を表示します。 |
show ipv6 access-lists |
CoPP IPv6 ACL を含め、デバイス上で設定されているすべての IPv6 ACL を表示します。 |
show arp access-lists |
CoPP ARP ACL を含め、デバイス上で設定されているすべての ARP ACL を表示します。 |
show policy-map type control-plane [expand] [name policy-map-name] |
コントロール プレーン ポリシー マップと関連するクラス マップおよび PPS の値を表示します。 |
show running-config copp [all] |
実行コンフィギュレーション内の CoPP 設定を表示します。 |
show running-config aclmgr [all] |
実行コンフィギュレーションのユーザ設定によるアクセス コントロール リスト(ACL)を表示します。 all オプションを使用すると、実行コンフィギュレーションのデフォルト(CoPP 設定)とユーザ定義による ACL の両方が表示されます。 |
show startup-config copp [all] |
スタートアップ コンフィギュレーション内の CoPP 設定を表示します。 |
show startup-config aclmgr [all] |
スタートアップ コンフィギュレーションのユーザ設定によるアクセス コントロール リスト(ACL)を表示します。 all オプションを使用すると、スタートアップ コンフィギュレーションのデフォルト(CoPP 設定)とユーザ定義による ACL の両方が表示されます。 |
コマンドまたはアクション | 目的 | |
---|---|---|
ステップ 1 | switch# show copp status | CoPP 機能の設定ステータスを表示します。 |
次に、CoPP 設定ステータスを表示する例を示します。
switch# show copp status
コマンドまたはアクション | 目的 | |
---|---|---|
ステップ 1 | switch# show policy-map interface control-plane | 適用された CoPP ポリシーの一部であるすべてのクラスに関して、パケット レベルの統計情報を表示します。 統計情報は、OutPackets(コントロール プレーンに対して許可されたパケット)と DropPackets(レート制限によってドロップされたパケット)に関して指定します。 |
次に、CoPP をモニタする例を示します。
switch# show policy-map interface control-plane Control Plane service-policy input: copp-system-policy-default class-map copp-system-class-igmp (match-any) match protocol igmp police cir 1024 kbps , bc 65535 bytes conformed 0 bytes; action: transmit violated 0 bytes; class-map copp-system-class-pim-hello (match-any) match protocol pim police cir 1024 kbps , bc 4800000 bytes conformed 0 bytes; action: transmit violated 0 bytes; ....
CoPP クラスに対するレート制限がディセーブルにされていると、CPU が大量のトラフィックを受けやすい状態になります。
CPU が保護されていること、および過剰な外部トラフィックがデバイス インターフェイス、スーパーバイザ モジュールおよび CPU に送信されていないことを確認してください。
コマンドまたはアクション | 目的 | |
---|---|---|
ステップ 1 | configure terminal 例: switch# configure terminal switch(config)# |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 | copp rate-limit disable 例: switch(config)# copp rate-limit disable |
CPU に送信されるデフォルトの 1 秒あたりのパケット数をディセーブルにし、各キューで最大限のレートで CPU にパケットを送信できるようにします。 このコマンドを実行すると、CoPP レート制限がすべてのクラスに対してディセーブルにされたことを通知する警告メッセージが表示されます。 したがって、CPU はトラフィック攻撃を受けやすくなります。 できるだけ早く no copp rate-limit disable コマンドを実行してください。 |
ステップ 3 | show policy-map interface control-plane 例: switch(config)# show policy-map interface control-plane |
(任意) 適用された CoPP ポリシーに含まれるすべてのクラスに関して、パケット レベルの統計情報を表示します。 統計情報は、OutPackets(コントロール プレーンに対して許可されたパケット)と DropPackets(レート制限によってドロップされたパケット)に関して指定します。 |
ステップ 4 | no copp rate-limit disable 例: switch(config)# no copp rate-limit disable |
各キューで CPU に送信されるパケットのレート制限をデフォルト値にリセットします。 |
ステップ 5 | exit 例: switch(config)# exit |
グローバル コンフィギュレーション モードを終了します。 |
コマンドまたはアクション | 目的 | |
---|---|---|
ステップ 1 | switch# show policy-map interface control-plane | (任意) 現在適用されている CoPP ポリシーおよびクラスごとの統計情報を表示します。 |
ステップ 2 | switch# clear copp statistics | CoPP 統計情報をクリアします。 |
次に、インターフェース環境で、CoPP 統計情報をクリアする例を示します。
switch# show policy-map interface control-plane switch# clear copp statistics
ip access-list copp-sample-acl permit udp any any eq 3333 permit udp any any eq 4444
次に、CoPP の新規クラスおよび関連する ACL を作成する例を示します。
class-map type control-plane copp-sample-class match access-group name copp-sample-acl
次に、CoPP ポリシーにクラスを追加する例を示します。
policy-map type control-plane copp-system-policy Class copp-sample-class Police pps 100
次に、既存のクラス(copp-s-bpdu)の PPS を変更する例を示します。
policy-map type control-plane copp-system-policy Class copp-s-bpdu Police pps <new_pps_value>
ipv6 access-list copp-system-acl-eigrp6 10 permit 88 any ff02::a/128
class-map type control-plane copp-s-eigrp match access-grp name copp-system-acl-eigrp6
policy-map type control-plane copp-system-policy class copp-s-eigrp police pps 100
ARP ACL では ARP TCAM を使用します。 この TCAM のデフォルト サイズは 0 です。 ARP ACL を CoPP で使用するには、その前に、この TCAM をゼロ以外のサイズに切り分ける必要があります。
hardware profile tcam region arpacl 128 copy running-config startup-config reload
arp access-list copp-arp-acl permit ip 20.1.1.1 255.255.255.0 mac any
ARP ACL をクラスに関連付けて、CoPP ポリシーにそのクラスを追加する手順は、IP ACL の場合の手順と同じです。
class-map type control-plane copp-sample-class match access-group name copp-arp-acl
policy-map type control-plane copp-system-policy no class-abc
no class-map type control-plane copp-abc
policy-map type control-plan copp-system-policy class copp-ping insert-before copp-icmp
次に、ACL、クラス、ポリシー、および個別のクラス ポリシングの CoPP の設定例を示します。
IP access list copp-system-acl-eigrp
10 permit eigrp any 224.0.0.10/32
IP access list copp-system-acl-icmp
10 permit icmp any any
IP access list copp-system-acl-igmp
10 permit igmp any any
IP access list copp-system-acl-ntp
10 permit udp any any eq ntp
20 permit udp any eq ntp any
IP access list copp-system-acl-pimreg
10 permit pim any any
IP access list copp-system-acl-ping
10 permit icmp any any echo
20 permit icmp any any echo-reply
IP access list copp-system-acl-routingproto1
10 permit tcp any gt 1024 any eq bgp
20 permit tcp any eq bgp any gt 1024
30 permit udp any 224.0.0.0/24 eq rip
40 permit tcp any gt 1024 any eq 639
50 permit tcp any eq 639 any gt 1024
70 permit ospf any any
80 permit ospf any 224.0.0.5/32
90 permit ospf any 224.0.0.6/32
IP access list copp-system-acl-routingproto2
10 permit udp any 224.0.0.0/24 eq 1985
20 permit 112 any 224.0.0.0/24
IP access list copp-system-acl-snmp
10 permit udp any any eq snmp
20 permit udp any any eq snmptrap
IP access list copp-system-acl-ssh
10 permit tcp any any eq 22
20 permit tcp any eq 22 any
IP access list copp-system-acl-stftp
10 permit udp any any eq tftp
20 permit udp any any eq 1758
30 permit udp any eq tftp any
40 permit udp any eq 1758 any
50 permit tcp any any eq 115
60 permit tcp any eq 115 any
IP access list copp-system-acl-tacacsradius
10 permit tcp any any eq tacacs
20 permit tcp any eq tacacs any
30 permit udp any any eq 1812
40 permit udp any any eq 1813
50 permit udp any any eq 1645
60 permit udp any any eq 1646
70 permit udp any eq 1812 any
80 permit udp any eq 1813 any
90 permit udp any eq 1645 any
100 permit udp any eq 1646 any
IP access list copp-system-acl-telnet
10 permit tcp any any eq telnet
20 permit tcp any any eq 107
30 permit tcp any eq telnet any
40 permit tcp any eq 107 any
IP access list copp-system-dhcp-relay
10 permit udp any eq bootps any eq bootps
IP access list test
statistics per-entry
10 permit ip 1.2.3.4/32 5.6.7.8/32 [match=0]
20 permit udp 11.22.33.44/32 any [match=0]
30 deny udp 1.1.1.1/32 any [match=0]
IPv6 access list copp-system-acl-dhcpc6
10 permit udp any any eq 546
IPv6 access list copp-system-acl-dhcps6
10 permit udp any ff02::1:2/128 eq 547
20 permit udp any ff05::1:3/128 eq 547
IPv6 access list copp-system-acl-eigrp6
10 permit 88 any ff02::a/128
IPv6 access list copp-system-acl-v6routingProto2
10 permit udp any ff02::66/128 eq 2029
20 permit udp any ff02::fb/128 eq 5353
IPv6 access list copp-system-acl-v6routingproto1
10 permit 89 any ff02::5/128
20 permit 89 any ff02::6/128
30 permit udp any ff02::9/128 eq 521
class-map type control-plane match-any copp-icmp
match access-group name copp-system-acl-icmp
class-map type control-plane match-any copp-ntp
match access-group name copp-system-acl-ntp
class-map type control-plane match-any copp-s-arp
class-map type control-plane match-any copp-s-bfd
class-map type control-plane match-any copp-s-bpdu
class-map type control-plane match-any copp-s-dai
class-map type control-plane match-any copp-s-default
class-map type control-plane match-any copp-s-dhcpreq
match access-group name copp-system-acl-dhcps6
class-map type control-plane match-any copp-s-dhcpresp
match access-group name copp-system-acl-dhcpc6
match access-group name copp-system-dhcp-relay
class-map type control-plane match-any copp-s-eigrp
match access-group name copp-system-acl-eigrp
match access-group name copp-system-acl-eigrp6
class-map type control-plane match-any copp-s-glean
class-map type control-plane match-any copp-s-igmp
match access-group name copp-system-acl-igmp
class-map type control-plane match-any copp-s-ipmcmiss
class-map type control-plane match-any copp-s-l2switched
class-map type control-plane match-any copp-s-l3destmiss
class-map type control-plane match-any copp-s-l3mtufail
class-map type control-plane match-any copp-s-l3slowpath
class-map type control-plane match-any copp-s-pimautorp
class-map type control-plane match-any copp-s-pimreg
match access-group name copp-system-acl-pimreg
class-map type control-plane match-any copp-s-ping
match access-group name copp-system-acl-ping
class-map type control-plane match-any copp-s-ptp
class-map type control-plane match-any copp-s-routingProto1
match access-group name copp-system-acl-routingproto1
match access-group name copp-system-acl-v6routingproto1
class-map type control-plane match-any copp-s-routingProto2
match access-group name copp-system-acl-routingproto2
class-map type control-plane match-any copp-s-selfIp
class-map type control-plane match-any copp-s-ttl1
class-map type control-plane match-any copp-s-v6routingProto2
match access-group name copp-system-acl-v6routingProto2
class-map type control-plane match-any copp-snmp
match access-group name copp-system-acl-snmp
class-map type control-plane match-any copp-ssh
match access-group name copp-system-acl-ssh
class-map type control-plane match-any copp-stftp
match access-group name copp-system-acl-stftp
class-map type control-plane match-any copp-tacacsradius
match access-group name copp-system-acl-tacacsradius
class-map type control-plane match-any copp-telnet
match access-group name copp-system-acl-telnet
policy-map type control-plane copp-system-policy
class copp-s-selfIp
police pps 500
class copp-s-default
police pps 400
class copp-s-l2switched
police pps 200
class copp-s-ping
police pps 100
class copp-s-l3destmiss
police pps 100
class copp-s-glean
police pps 500
class copp-s-l3mtufail
police pps 100
class copp-s-ttl1
police pps 100
class copp-s-ipmcmiss
police pps 400
class copp-s-l3slowpath
police pps 100
class copp-s-dhcpreq
police pps 300
class copp-s-dhcpresp
police pps 300
class copp-s-dai
police pps 300
class copp-s-igmp
police pps 400
class copp-s-routingProto2
police pps 1300
class copp-s-v6routingProto2
police pps 1300
class copp-s-eigrp
police pps 200
class copp-s-pimreg
police pps 200
class copp-s-pimautorp
police pps 200
class copp-s-routingProto1
police pps 1000
class copp-s-arp
police pps 200
class copp-s-ptp
police pps 1000
class copp-s-bfd
police pps 350
class copp-s-bpdu
police pps 12000
class copp-icmp
police pps 200
class copp-telnet
police pps 500
class copp-ssh
police pps 500
class copp-snmp
police pps 500
class copp-ntp
police pps 100
class copp-tacacsradius
police pps 400
class copp-stftp
police pps 400
control-plane
service-policy input copp-system-policy
セットアップ ユーティリティを使用して、デフォルト CoPP ポリシーを変更または再適用する例を次に示します。
switch# setup ---- Basic System Configuration Dialog ---- This setup utility will guide you through the basic configuration of the system. Setup configures only enough connectivity for management of the system. *Note: setup is mainly used for configuring the system initially, when no configuration is present. So setup always assumes system defaults and not the current system configuration values. Press Enter at anytime to skip a dialog. Use ctrl-c at anytime to skip the remaining dialogs. Would you like to enter the basic configuration dialog (yes/no): yes Create another login account (yes/no) [n]: n Configure read-only SNMP community string (yes/no) [n]: n Configure read-write SNMP community string (yes/no) [n]: n Enter the switch name : switch Continue with Out-of-band (mgmt0) management configuration? (yes/no) [y]: n Configure the default gateway for mgmt? (yes/no) [y]: n Enable the telnet service? (yes/no) [n]: y Enable the ssh service? (yes/no) [y]: n Configure the ntp server? (yes/no) [n]: n Configure CoPP System Policy Profile ( default / l2 / l3 ) [default]: l2 The following configuration will be applied: switchname switch telnet server enable no ssh server enable policy-map type control-plane copp-system-policy ( l2 ) Would you like to edit the configuration? (yes/no) [n]: n Use this configuration and save it? (yes/no) [y]: y [########################################] 100%
ここでは、CoPP の実装に関する追加情報について説明します。
関連項目 |
マニュアル タイトル |
---|---|
ライセンス |
|
コマンド リファレンス |
目次
- コントロール プレーン ポリシングの設定
- CoPP の概要
- コントロール プレーンの保護
- コントロール プレーンのパケット タイプ
- CoPP の分類
- レート制御メカニズム
- CoPP ポリシー テンプレート
- デフォルト CoPP ポリシー
- レイヤ 2 CoPP ポリシー
- レイヤ 3 CoPP ポリシー
- CoPP クラス マップ
- 1 秒間あたりのパケットのクレジット制限
- CoPP と管理インターフェイス
- CoPP のライセンス要件
- CoPP の注意事項と制約事項
- CoPP のアップグレードに関する注意事項
- CoPP の設定
- コントロール プレーン クラス マップの設定
- コントロール プレーン ポリシー マップの設定
- コントロール プレーン サービス ポリシーの設定
- CoPP show コマンド
- CoPP 設定ステータスの表示
- CoPP のモニタ
- CoPP クラスに対するレート制限のディセーブル化と再イネーブル化
- CoPP 統計情報のクリア
- CoPP の設定例
- CoPP の設定例
- 例:セットアップ ユーティリティによるデフォルト CoPP ポリシーの変更または再適用
- CoPP に関する追加情報
この章の内容は、次のとおりです。
- CoPP の概要
- コントロール プレーンの保護
- CoPP ポリシー テンプレート
- CoPP クラス マップ
- 1 秒間あたりのパケットのクレジット制限
- CoPP と管理インターフェイス
- CoPP のライセンス要件
- CoPP の注意事項と制約事項
- CoPP のアップグレードに関する注意事項
- CoPP の設定
- CoPP show コマンド
- CoPP 設定ステータスの表示
- CoPP のモニタ
- CoPP クラスに対するレート制限のディセーブル化と再イネーブル化
- CoPP 統計情報のクリア
- CoPP の設定例
- CoPP の設定例
- 例:セットアップ ユーティリティによるデフォルト CoPP ポリシーの変更または再適用
- CoPP に関する追加情報
CoPP の概要
コントロール プレーン ポリシング(CoPP)はコントロール プレーンを保護し、それをデータ プレーンから分離することによって、ネットワークの安定性、到達可能性、およびパケット配信を保証します。
この機能により、コントロール プレーンにポリシー マップを適用できるようになります。 このポリシー マップは通常の QoS ポリシーのように見え、ルータまたはレイヤ 3 スイッチの任意の IP アドレスに宛てられたすべてのトラフィックに適用されます。 ネットワーク デバイスへの一般的な攻撃ベクトルは、過剰なトラフィックがデバイス インターフェイスに転送されるサービス拒絶(DoS)攻撃です。
Cisco NX-OS デバイスは、DoS 攻撃がパフォーマンスに影響しないようにするために CoPP を提供します。 このような攻撃は誤って、または悪意を持って実行される場合があり、通常は、スーパーバイザ モジュールまたは CPU 自体に宛てられた大量のトラフィックが含まれます。
スーパーバイザ モジュールは、管理対象のトラフィックを次の 3 つの機能コンポーネント(プレーン)に分類します。
- データ プレーン
- すべてのデータ トラフィックを処理します。 NX-OS デバイスの基本的な機能は、インターフェイス間でパケットを転送することです。 スイッチ自身に向けられたものでないパケットは、中継パケットと呼ばれます。 データ プレーンで処理されるのはこれらのパケットです。
- コントロール プレーン
- ルーティング プロトコルのすべての制御トラフィックを処理します。 ボーダー ゲートウェイ プロトコル(BGP)や Open Shortest Path First(OSPF)プロトコルなどのルーティング プロトコルは、デバイス間で制御パケットを送信します。 これらのパケットはルータのアドレスを宛先とし、コントロール プレーン パケットと呼ばれます。
- 管理プレーン
- コマンドライン インターフェイス(CLI)や簡易ネットワーク管理プロトコル(SNMP)など、NX-OS デバイスを管理する目的のコンポーネントを実行します。
スーパーバイザ モジュールには、マネージメント プレーンとコントロール プレーンの両方が搭載され、ネットワークの運用にクリティカルなモジュールです。 スーパーバイザ モジュールの動作が途絶したり、スーパーバイザ モジュールが攻撃されたりすると、重大なネットワークの停止につながります。 たとえばスーパーバイザに過剰なトラフィックが加わると、スーパーバイザ モジュールが過負荷になり、NX-OS デバイス全体のパフォーマンスが低下する可能性があります。 またたとえば、スーパーバイザ モジュールに対する DoS 攻撃は、コントロール プレーンに対して非常に高速に IP トラフィック ストリームを生成することがあります。これにより、コントロール プレーンは、これらのパケットを処理するために大量の時間を費やしてしまい、本来のトラフィックを処理できなくなります。
次に、DoS 攻撃の例を示します。
これらの攻撃によりデバイスのパフォーマンスが影響を受け、次のようなマイナスの結果をもたらします。
サービス品質の低下(音声、ビデオ、または重要なアプリケーション トラフィックの低下など)
ルート プロセッサまたはスイッチ プロセッサの高い CPU 使用率
ルーティング プロトコルのアップデートまたはキープアライブの消失によるルート フラップ
不安定なレイヤ 2 トポロジ
CLI との低速な、または応答を返さない対話型セッション
メモリやバッファなどのプロセッサ リソースの枯渇
着信パケットの無差別のドロップ
注意
コントロール プレーンの保護策を講じることで、スーパーバイザ モジュールを偶発的な攻撃や悪意ある攻撃から確実に保護することが重要です。コントロール プレーンの保護
コントロール プレーンのパケット タイプ
コントロール プレーンには、次のような異なるタイプのパケットが到達します。
- 受信パケット
- ルータの宛先アドレスを持つパケット。 宛先アドレスには、レイヤ 2 アドレス(ルータ MAC アドレスなど)やレイヤ 3 アドレス(ルータ インターフェイスの IP アドレスなど)があります。 これらのパケットには、ルータ アップデートとキープアライブ メッセージも含まれます。 ルータが使用するマルチキャスト アドレス宛てに送信されるマルチキャスト パケットも、このカテゴリに入ります。
- 例外パケット
- スーパーバイザ モジュールによる特殊な処理を必要とするパケット。 たとえば、宛先アドレスが Forwarding Information Base(FIB; 転送情報ベース)に存在せず、結果としてミスとなった場合は、スーパーバイザ モジュールが送信側に到達不能パケットを返します。 他には、IP オプションがセットされたパケットもあります。
- リダイレクト パケット
- スーパーバイザ モジュールにリダイレクトされるパケット。 ダイナミック ホスト コンフィギュレーション プロトコル(DHCP)スヌーピングやダイナミック アドレス解決プロトコル(ARP)インスペクションなどの機能は、パケットをスーパーバイザ モジュールにリダイレクトします。
- 収集パケット
- 宛先 IP アドレスのレイヤ 2 MAC アドレスが FIB に存在していない場合は、スーパーバイザ モジュールがパケットを受信し、ARP 要求をそのホストに送信します。
これらのさまざまなパケットはすべて、コントロール プレーンへの悪意ある攻撃に利用され、Cisco NX-OS デバイスに過剰な負荷をかける可能性があります。 CoPP は、これらのパケットを異なるクラスに分類し、これらのパケットをスーパーバイザが受信する速度を個別に制御するメカニズムを提供します。
CoPP ポリシー テンプレート
Cisco NX-OS デバイスの初回起動時には、DoS 攻撃からスーパーバイザ モジュールを保護するためのデフォルト copp-system-policy が Cisco NX-OS ソフトウェアによってインストールされます。 最初のセットアップ ユーティリティで、次のいずれかの CoPP ポリシー オプションを選択することにより、展開シナリオの CoPP ポリシー テンプレートを選択できます。
Default:レイヤ 2 およびレイヤ 3 ポリシー。CPU にバインドされているスイッチド トラフィックとルーテッド トラフィックの間で適切なポリシング バランスを提供します。
Layer 2:レイヤ 2 ポリシー。CPU にバインドされているレイヤ 2 トラフィック(たとえば BPDU)により多くのプリファレンスを与ます。
Layer 3:レイヤ 3 ポリシー。CPU にバインドされているレイヤ 3 トラフィック(たとえば、BGP、RIP、OSPF など)により多くのプリファレンスを与えます。
オプションを選択しなかった場合や、セットアップ ユーティリティを実行しなかった場合には、Cisco NX-OS ソフトウェアにより Default ポリシングが適用されます。 最初はこのデフォルト ポリシーを使用し、必要に応じて CoPP ポリシーを変更することを推奨します。
デフォルトの copp-system-policy ポリシーには、基本的なデバイス操作に最も適した値が設定されています。 DoS に対抗する実際の保護要件に適合するよう、特定のクラスやアクセス コントロール リスト(ACL)を追加する必要があります。
default、Layer 2 および Layer 3 テンプレートを切り替えるには、setup コマンドを使って設定ユーティリティを再び入力することができます。
デフォルト CoPP ポリシー
このポリシーは、スイッチにデフォルトで適用されます。 これには、ほとんどのネットワーク導入に適したポリサー レートを持つクラスが含まれています。 このポリシー テンプレートを変更することはできませんが、デバイスの CoPP 設定を変更できます。 セットアップ ユーティリティを実行してデフォルトの CoPP ポリシー プロファイルをセットアップすると、CoPP ポリシーに対して既に行われたすべての変更が削除されます。
このポリシーの設定は次のとおりです。
policy-map type control-plane copp-system-policy class copp-s-default police pps 400 class copp-s-ping police pps 100 class copp-s-l3destmiss police pps 100 class copp-s-glean police pps 500 class copp-s-l3mtufail police pps 100 class copp-s-ttl1 police pps 100 class copp-s-ip-options police pps 100 class copp-s-ip-nat police pps 100 class copp-s-ipmcmiss police pps 400 class copp-s-ipmc-g-hit police pps 400 class copp-s-ipmc-rpf-fail-g police pps 400 class copp-s-ipmc-rpf-fail-sg police pps 400 class copp-s-dhcpreq police pps 300 class copp-s-dhcpresp police pps 300 class copp-s-igmp police pps 400 class copp-s-routingProto2 police pps 1300 class copp-s-eigrp police pps 200 class copp-s-pimreg police pps 200 class copp-s-pimautorp police pps 200 class copp-s-routingProto1 police pps 1000 class copp-s-arp police pps 200 class copp-s-ptp police pps 1000 class copp-s-bpdu police pps 12000 class copp-s-cdp police pps 400 class copp-s-lacp police pps 400 class copp-s-lldp police pps 200 class copp-icmp police pps 200 class copp-telnet police pps 500 class copp-ssh police pps 500 class copp-snmp police pps 500 class copp-ntp police pps 100 class copp-tacacsradius police pps 400 class copp-stftp police pps 400 class copp-ftp police pps 100 class copp-http police pps 100レイヤ 2 CoPP ポリシー
このポリシー テンプレートを変更することはできませんが、デバイスの CoPP 設定を変更できます。 セットアップ ユーティリティを実行してレイヤ 2 CoPP ポリシー プロファイルをセットアップすると、CoPP ポリシーに対して行われたすべての変更が削除されます。
このポリシーの設定は次のとおりです。
policy-map type control-plane copp-system-policy class copp-s-default police pps 400 class copp-s-ping police pps 100 class copp-s-l3destmiss police pps 100 class copp-s-glean police pps 500 class copp-s-l3mtufail police pps 100 class copp-s-ttl1 police pps 100 class copp-s-ip-options police pps 100 class copp-s-ip-nat police pps 100 class copp-s-ipmcmiss police pps 400 class copp-s-ipmc-g-hit police pps 400 class copp-s-ipmc-rpf-fail-g police pps 400 class copp-s-ipmc-rpf-fail-sg police pps 400 class copp-s-dhcpreq police pps 300 class copp-s-dhcpresp police pps 300 class copp-s-igmp police pps 400 class copp-s-routingProto2 police pps 1200 class copp-s-eigrp police pps 200 class copp-s-pimreg police pps 200 class copp-s-pimautorp police pps 200 class copp-s-routingProto1 police pps 900 class copp-s-arp police pps 200 class copp-s-ptp police pps 1000 class copp-s-bpdu police pps 12300 class copp-s-cdp police pps 400 class copp-s-lacp police pps 400 class copp-s-lldp police pps 200 class copp-icmp police pps 200 class copp-telnet police pps 500 class copp-ssh police pps 500 class copp-snmp police pps 500 class copp-ntp police pps 100 class copp-tacacsradius police pps 400 class copp-stftp police pps 400 class copp-ftp police pps 100 class copp-http police pps 100レイヤ 3 CoPP ポリシー
このポリシー テンプレートを変更することはできませんが、デバイスの CoPP 設定を変更できます。 セットアップ ユーティリティを実行してレイヤ 3 CoPP ポリシー プロファイルをセットアップすると、CoPP ポリシーに対して行われたすべての変更が削除されます。
このポリシーの設定は次のとおりです。
policy-map type control-plane copp-system-policy class copp-s-default police pps 400 class copp-s-ping police pps 100 class copp-s-l3destmiss police pps 100 class copp-s-glean police pps 500 class copp-s-l3mtufail police pps 100 class copp-s-ttl1 police pps 100 class copp-s-ip-options police pps 100 class copp-s-ip-nat police pps 100 class copp-s-ipmcmiss police pps 400 class copp-s-ipmc-g-hit police pps 400 class copp-s-ipmc-rpf-fail-g police pps 400 class copp-s-ipmc-rpf-fail-sg police pps 400 class copp-s-dhcpreq police pps 300 class copp-s-dhcpresp police pps 300 class copp-s-igmp police pps 400 class copp-s-routingProto2 police pps 4000 class copp-s-eigrp police pps 200 class copp-s-pimreg police pps 200 class copp-s-pimautorp police pps 200 class copp-s-routingProto1 police pps 4000 class copp-s-arp police pps 200 class copp-s-ptp police pps 1000 class copp-s-bpdu police pps 6000 class copp-s-cdp police pps 200 class copp-s-lacp police pps 200 class copp-s-lldp police pps 200 class copp-icmp police pps 200 class copp-telnet police pps 500 class copp-ssh police pps 500 class copp-snmp police pps 500 class copp-ntp police pps 100 class copp-tacacsradius police pps 400 class copp-stftp police pps 400 class copp-ftp police pps 100 class copp-http police pps 100CoPP クラス マップ
ポリシー内のクラスには、次の 2 つのタイプがあります。
(注)
copp-s-x という名前のクラスはスタティック クラスです。
ACL は、スタティックとダイナミックの両方のクラスに関連付けることができます。
1 秒間あたりのパケットのクレジット制限
特定のポリシーの 1 秒間あたりのパケット(PPS)の合計(ポリシーの各クラス部分の PPS の合計)の上限は、PPS のクレジット制限(PCL)の上限になります。 特定のクラスの PPS が増加して PCL 超過すると、設定が拒否されます。 目的の PPS を増やすには、PCL を超える PPS の分を他のクラスから減少させる必要があります。
CoPP のライセンス要件
この機能にはライセンスは不要です。 ライセンス パッケージに含まれていない機能はすべて Cisco NX-OS システム イメージにバンドルされており、追加費用は一切発生しません。 NX-OS ライセンス方式の詳細については、『Cisco NX-OS Licensing Guide』を参照してください。
CoPP の注意事項と制約事項
CoPP に関する注意事項と制約事項は次のとおりです。
導入のシナリオに応じてデフォルト、L2、または L3 ポリシーを選択し、観察された動作に基づいて、CoPP ポリシーを後で変更することを推奨します。
CoPP のカスタマイズは継続的なプロセスです。 CoPP を設定するときには、特定の環境で使用されるプロトコルや機能に加えて、サーバ環境に必要なスーパーバイザ機能を考慮する必要があります。 これらのプロトコルや機能が変更されたら、CoPP を変更する必要があります。
CoPP を継続的にモニタすることを推奨します。 ドロップが発生した場合は、CoPP がトラフィックを誤ってドロップしたのか、または誤動作や攻撃に応答してドロップしたのかを判定してください。 どちらの場合も、状況を分析して、別の CoPP ポリシーを使用するか、またはカスタマイズ済み CoPP ポリシーを変更する必要があるかどうかを評価します。
Cisco NX-OS ソフトウェアは、出力 CoPP とサイレント モードをサポートしません。 CoPP は入力だけでサポートされます。service-policy output copp は、コントロール プレーン インターフェイスには適用できません。
新しい CoPP ポリシーの作成はサポートされていません。
IPv6 と IPv4 の CoPP ACL エントリでは、別々の TCAM リージョンを使用します。 IPv6 CoPP が動作するには、IPv6 ACL SUP TCAM リージョン(ipv6-sup)がゼロ以外のサイズに切り分けられている必要があります。 詳細については、ACL TCAM リージョンおよびACL TCAM リージョン サイズの設定のトピックを参照してください。
CoPP には、すべての IPv4 CoPP ACL、IPv6 CoPP ACL および ARP ACL で最大 76 個のエントリを設定できます。 システムは、72 個のスタティック エントリでプログラムされます(20 個の内部エントリ、43 個の IPv4 ACL エントリ、および 9 つの IPv6 ACL エントリ)。 残りの 4 つのエントリを設定できます。 さらにエントリを作成する必要がある場合は、未使用のスタティックな CoPP ACE を削除する必要があります。その後、追加エントリを作成します。
CoPP のアップグレードに関する注意事項
CoPP には、アップグレードに関する次の注意事項があります。
CoPP 機能をサポートしない Cisco NX-OS リリースから CoPP 機能をサポートする Cisco NX-OS リリースにアップグレードする場合は、スイッチの起動時にデフォルト ポリシーを使って CoPP が自動的にイネーブルにされます。 別のポリシー(デフォルト、 l3、 l2)をイネーブルにするには、アップグレード後にセットアップ スクリプトを実行する必要があります。 CoPP 保護を設定しない場合、NX-OS デバイスは DoS 攻撃に対して脆弱な状態のままになります。
CoPP 機能をサポートする Cisco NX-OS リリースから、新しいプロトコルの追加クラスを含む CoPP 機能をサポートする Cisco NX-OS リリースにアップグレードする場合は、CoPP の新しいクラスを使用可能にするためにセットアップ ユーティリティを実行する必要があります。
セットアップ スクリプトは、CPU に着信するさまざまなフローに対応するポリシング レートを変更するため、デバイスにトラフィックが発生する時間ではなく、スケジュールされたメンテナンス期間にセットアップ スクリプトを実行することを推奨します。
コントロール プレーン クラス マップの設定
手順コントロール プレーン ポリシーのコントロール プレーン クラス マップを設定する必要があります。
トラフィックを分類するには、既存の ACL に基づいてパケットをマッチング(照合)します。 ACL キーワード permit および deny は、マッチング時には無視されます。
IPv4 または IPv6 パケットのポリシーを設定できます。
コマンドまたはアクション 目的 ステップ 1 configure terminal
例:switch# configure terminal switch(config)#グローバル コンフィギュレーション モードを開始します
ステップ 2 class-map type control-plane match-any class-map-name
例:switch(config)# class-map type control-plane ClassMapA switch(config-cmap)#コントロール プレーン クラス マップを指定し、クラス マップ コンフィギュレーション モードを開始します。 デフォルトのクラス マッチングは match-any です。 名前は最大 64 文字で、大文字と小文字は区別されます。
(注) class-default、match-all、および match-any をクラス マップ名に使用することはできません。
ステップ 3 match access-group name access-list-name
例:switch(config-cmap)# match access-group name MyAccessList(任意) IP ACL のマッチングを指定します。 複数の IP ACL のマッチングを行う場合は、このステップを繰り返します。
(注) ACL キーワード permit および deny は、CoPP マッチング時には無視されます。
ステップ 4 exit
例:switch(config-cmap)# exit switch(config)#クラスマップ コンフィギュレーション モードを終了します。
ステップ 5 show class-map type control-plane [class-map-name]
例:switch(config)# show class-map type control-plane(任意) コントロール プレーン クラス マップの設定を表示します。
ステップ 6 copy running-config startup-config
例:switch(config)# copy running-config startup-config(任意) 実行コンフィギュレーションを、スタートアップ コンフィギュレーションにコピーします。
コントロール プレーン ポリシー マップの設定
手順CoPP のポリシー マップを設定する必要があります。ポリシー マップにはポリシング パラメータを含めます。 クラスのポリサーを設定しなかった場合、デフォルトの PPS をサポートします。
IPv4 または IPv6 パケットのポリシーを設定できます。
コマンドまたはアクション 目的 ステップ 1 configure terminal
例:switch# configure terminal switch(config)#グローバル コンフィギュレーション モードを開始します
ステップ 2 policy-map type control-plane policy-map-name
例:switch(config)# policy-map type control-plane copp-system-policy switch(config-pmap)#コントロール プレーン ポリシー マップを指定し、ポリシー マップ コンフィギュレーション モードを開始します。 ポリシー マップ名は最大 64 文字で、大文字と小文字は区別されます。
ステップ 3 class {class-map-name [insert-before class-map-name2] | class}
例:switch(config-pmap)# class ClassMapA switch(config-pmap-c)#コントロール プレーン クラス マップ名またはクラス デフォルトを指定し、コントロール プレーン クラス コンフィギュレーション モードを開始します。
ステップ 4 police [pps] {pps-value} [bc] burst-size [bytes | kbytes | mbytes | ms | packets | us]
例:switch(config-pmap-c)# police pps 100 bc 101 秒間あたりのパケット(PPS)およびコミット済みバースト(BC)に関するレート制限を指定します。 PPS の範囲は 0 ~ 20,000 です。 デフォルト PPS は 0 です。 BC の範囲は 0 ~ 512000000 です。 デフォルト BC サイズの単位はバイトです。
ステップ 5 exit
例:switch(config-pmap-c)# exit switch(config-pmap)#ポリシー マップ クラス コンフィギュレーション モードを終了します。
ステップ 6 exit
例:switch(config-pmap)# exit switch(config)#ポリシー マップ コンフィギュレーション モードを終了します。
ステップ 7 show policy-map type control-plane [expand] [name class-map-name]
例:switch(config)# show policy-map type control-plane(任意) コントロール プレーン ポリシー マップの設定を表示します。
ステップ 8 copy running-config startup-config
例:switch(config)# copy running-config startup-config(任意) 実行コンフィギュレーションを、スタートアップ コンフィギュレーションにコピーします。
コントロール プレーン サービス ポリシーの設定
手順
コマンドまたはアクション 目的 ステップ 1 configure terminal
例:switch# configure terminal switch(config)#グローバル コンフィギュレーション モードを開始します。
ステップ 2 control-plane
例:switch(config) # control-plane switch(config-cp)#コントロール プレーン コンフィギュレーション モードを開始します。
ステップ 3 [no] service-policy input policy-map-name
例:switch(config-cp)# service-policy input copp-system-policy入トラフィックのポリシー マップを指定します。
ステップ 4 exit
例:switch(config-cp)# exit switch(config)#コントロール プレーン コンフィギュレーション モードを終了します。
ステップ 5 show running-config copp [all]
例:switch(config)# show running-config copp(任意) CoPP 設定を表示します。
ステップ 6 copy running-config startup-config
例:switch(config)# copy running-config startup-config(任意) リブートおよびリスタート時に実行コンフィギュレーションをスタートアップ コンフィギュレーションにコピーして、変更を永続的に保存します。
CoPP show コマンド
CoPP の設定情報を表示するには、次の show コマンドのいずれかを入力します。
コマンド
目的
show ip access-lists [acl-name]
CoPP の ACL を含め、システム内で設定されているすべての IPv4 ACL を表示します。
show class-map type control-plane [class-map-name]
このクラス マップにバインドされている ACL を含め、コントロール プレーン クラス マップの設定を表示します。
show ipv6 access-lists
CoPP IPv6 ACL を含め、デバイス上で設定されているすべての IPv6 ACL を表示します。
show arp access-lists
CoPP ARP ACL を含め、デバイス上で設定されているすべての ARP ACL を表示します。
show policy-map type control-plane [expand] [name policy-map-name]
コントロール プレーン ポリシー マップと関連するクラス マップおよび PPS の値を表示します。
show running-config copp [all]
実行コンフィギュレーション内の CoPP 設定を表示します。
show running-config aclmgr [all]
実行コンフィギュレーションのユーザ設定によるアクセス コントロール リスト(ACL)を表示します。 all オプションを使用すると、実行コンフィギュレーションのデフォルト(CoPP 設定)とユーザ定義による ACL の両方が表示されます。
show startup-config copp [all]
スタートアップ コンフィギュレーション内の CoPP 設定を表示します。
show startup-config aclmgr [all]
スタートアップ コンフィギュレーションのユーザ設定によるアクセス コントロール リスト(ACL)を表示します。 all オプションを使用すると、スタートアップ コンフィギュレーションのデフォルト(CoPP 設定)とユーザ定義による ACL の両方が表示されます。
CoPP のモニタ
手順
コマンドまたはアクション 目的 ステップ 1 switch# show policy-map interface control-plane 適用された CoPP ポリシーの一部であるすべてのクラスに関して、パケット レベルの統計情報を表示します。
統計情報は、OutPackets(コントロール プレーンに対して許可されたパケット)と DropPackets(レート制限によってドロップされたパケット)に関して指定します。
次に、CoPP をモニタする例を示します。
switch# show policy-map interface control-plane Control Plane service-policy input: copp-system-policy-default class-map copp-system-class-igmp (match-any) match protocol igmp police cir 1024 kbps , bc 65535 bytes conformed 0 bytes; action: transmit violated 0 bytes; class-map copp-system-class-pim-hello (match-any) match protocol pim police cir 1024 kbps , bc 4800000 bytes conformed 0 bytes; action: transmit violated 0 bytes; ....CoPP クラスに対するレート制限のディセーブル化と再イネーブル化
手順CoPP で制御される速度より速くデータを転送するには、CoPP クラスに対するデフォルトのレート制限をディセーブルにし、デバイスでの最大許容値にレートを設定します。 パケットは最大限の速度で CPU に送信されるようになりますが、これらのパケットを処理するレートは CPU 能力に依存します。 データ転送後に、CoPP クラスに対するレート制限を再びイネーブルにする必要があります。重要:CoPP クラスに対するレート制限がディセーブルにされていると、CPU が大量のトラフィックを受けやすい状態になります。
コマンドまたはアクション 目的 ステップ 1 configure terminal
例:switch# configure terminal switch(config)#グローバル コンフィギュレーション モードを開始します。
ステップ 2 copp rate-limit disable
例:switch(config)# copp rate-limit disableCPU に送信されるデフォルトの 1 秒あたりのパケット数をディセーブルにし、各キューで最大限のレートで CPU にパケットを送信できるようにします。
重要:このコマンドを実行すると、CoPP レート制限がすべてのクラスに対してディセーブルにされたことを通知する警告メッセージが表示されます。 したがって、CPU はトラフィック攻撃を受けやすくなります。 できるだけ早く no copp rate-limit disable コマンドを実行してください。
ステップ 3 show policy-map interface control-plane
例:switch(config)# show policy-map interface control-plane(任意) 適用された CoPP ポリシーに含まれるすべてのクラスに関して、パケット レベルの統計情報を表示します。
統計情報は、OutPackets(コントロール プレーンに対して許可されたパケット)と DropPackets(レート制限によってドロップされたパケット)に関して指定します。
ステップ 4 no copp rate-limit disable
例:switch(config)# no copp rate-limit disable各キューで CPU に送信されるパケットのレート制限をデフォルト値にリセットします。
ステップ 5 exit
例:switch(config)# exitグローバル コンフィギュレーション モードを終了します。
CoPP の設定例
関連する IP ACL を使用したサンプル CoPP クラスの作成
次に、CoPP の新規クラスおよび関連する ACL を作成する例を示します。
class-map type control-plane copp-sample-class match access-group name copp-sample-acl次に、CoPP ポリシーにクラスを追加する例を示します。
policy-map type control-plane copp-system-policy Class copp-sample-class Police pps 100次に、既存のクラス(copp-s-bpdu)の PPS を変更する例を示します。
policy-map type control-plane copp-system-policy Class copp-s-bpdu Police pps <new_pps_value>ダイナミック クラス(IPv6 ACL)の作成
次に、IPv6 ACL を作成する例を示しますipv6 access-list copp-system-acl-eigrp6 10 permit 88 any ff02::a/128既存または新規の CoPP のクラスと ACL を関連付ける
次に、ACL を既存または新規の CoPP クラスに関連付ける例を示します。class-map type control-plane copp-s-eigrp match access-grp name copp-system-acl-eigrp6CoPP ポリシーにクラスを追加
次に、クラスがまだ追加されていない場合に、CoPP ポリシーにクラスを追加する例を示します。policy-map type control-plane copp-system-policy class copp-s-eigrp police pps 100ARP ACL ベースのダイナミック クラスの作成
ARP ACL では ARP TCAM を使用します。 この TCAM のデフォルト サイズは 0 です。 ARP ACL を CoPP で使用するには、その前に、この TCAM をゼロ以外のサイズに切り分ける必要があります。
hardware profile tcam region arpacl 128 copy running-config startup-config reloadARP ACL の作成
arp access-list copp-arp-acl permit ip 20.1.1.1 255.255.255.0 mac anyARP ACL をクラスに関連付けて、CoPP ポリシーにそのクラスを追加する手順は、IP ACL の場合の手順と同じです。
CoPP の設定例
次に、ACL、クラス、ポリシー、および個別のクラス ポリシングの CoPP の設定例を示します。
IP access list copp-system-acl-eigrp 10 permit eigrp any 224.0.0.10/32 IP access list copp-system-acl-icmp 10 permit icmp any any IP access list copp-system-acl-igmp 10 permit igmp any any IP access list copp-system-acl-ntp 10 permit udp any any eq ntp 20 permit udp any eq ntp any IP access list copp-system-acl-pimreg 10 permit pim any any IP access list copp-system-acl-ping 10 permit icmp any any echo 20 permit icmp any any echo-reply IP access list copp-system-acl-routingproto1 10 permit tcp any gt 1024 any eq bgp 20 permit tcp any eq bgp any gt 1024 30 permit udp any 224.0.0.0/24 eq rip 40 permit tcp any gt 1024 any eq 639 50 permit tcp any eq 639 any gt 1024 70 permit ospf any any 80 permit ospf any 224.0.0.5/32 90 permit ospf any 224.0.0.6/32 IP access list copp-system-acl-routingproto2 10 permit udp any 224.0.0.0/24 eq 1985 20 permit 112 any 224.0.0.0/24 IP access list copp-system-acl-snmp 10 permit udp any any eq snmp 20 permit udp any any eq snmptrap IP access list copp-system-acl-ssh 10 permit tcp any any eq 22 20 permit tcp any eq 22 any IP access list copp-system-acl-stftp 10 permit udp any any eq tftp 20 permit udp any any eq 1758 30 permit udp any eq tftp any 40 permit udp any eq 1758 any 50 permit tcp any any eq 115 60 permit tcp any eq 115 any IP access list copp-system-acl-tacacsradius 10 permit tcp any any eq tacacs 20 permit tcp any eq tacacs any 30 permit udp any any eq 1812 40 permit udp any any eq 1813 50 permit udp any any eq 1645 60 permit udp any any eq 1646 70 permit udp any eq 1812 any 80 permit udp any eq 1813 any 90 permit udp any eq 1645 any 100 permit udp any eq 1646 any IP access list copp-system-acl-telnet 10 permit tcp any any eq telnet 20 permit tcp any any eq 107 30 permit tcp any eq telnet any 40 permit tcp any eq 107 any IP access list copp-system-dhcp-relay 10 permit udp any eq bootps any eq bootps IP access list test statistics per-entry 10 permit ip 1.2.3.4/32 5.6.7.8/32 [match=0] 20 permit udp 11.22.33.44/32 any [match=0] 30 deny udp 1.1.1.1/32 any [match=0] IPv6 access list copp-system-acl-dhcpc6 10 permit udp any any eq 546 IPv6 access list copp-system-acl-dhcps6 10 permit udp any ff02::1:2/128 eq 547 20 permit udp any ff05::1:3/128 eq 547 IPv6 access list copp-system-acl-eigrp6 10 permit 88 any ff02::a/128 IPv6 access list copp-system-acl-v6routingProto2 10 permit udp any ff02::66/128 eq 2029 20 permit udp any ff02::fb/128 eq 5353 IPv6 access list copp-system-acl-v6routingproto1 10 permit 89 any ff02::5/128 20 permit 89 any ff02::6/128 30 permit udp any ff02::9/128 eq 521 class-map type control-plane match-any copp-icmp match access-group name copp-system-acl-icmp class-map type control-plane match-any copp-ntp match access-group name copp-system-acl-ntp class-map type control-plane match-any copp-s-arp class-map type control-plane match-any copp-s-bfd class-map type control-plane match-any copp-s-bpdu class-map type control-plane match-any copp-s-dai class-map type control-plane match-any copp-s-default class-map type control-plane match-any copp-s-dhcpreq match access-group name copp-system-acl-dhcps6 class-map type control-plane match-any copp-s-dhcpresp match access-group name copp-system-acl-dhcpc6 match access-group name copp-system-dhcp-relay class-map type control-plane match-any copp-s-eigrp match access-group name copp-system-acl-eigrp match access-group name copp-system-acl-eigrp6 class-map type control-plane match-any copp-s-glean class-map type control-plane match-any copp-s-igmp match access-group name copp-system-acl-igmp class-map type control-plane match-any copp-s-ipmcmiss class-map type control-plane match-any copp-s-l2switched class-map type control-plane match-any copp-s-l3destmiss class-map type control-plane match-any copp-s-l3mtufail class-map type control-plane match-any copp-s-l3slowpath class-map type control-plane match-any copp-s-pimautorp class-map type control-plane match-any copp-s-pimreg match access-group name copp-system-acl-pimreg class-map type control-plane match-any copp-s-ping match access-group name copp-system-acl-ping class-map type control-plane match-any copp-s-ptp class-map type control-plane match-any copp-s-routingProto1 match access-group name copp-system-acl-routingproto1 match access-group name copp-system-acl-v6routingproto1 class-map type control-plane match-any copp-s-routingProto2 match access-group name copp-system-acl-routingproto2 class-map type control-plane match-any copp-s-selfIp class-map type control-plane match-any copp-s-ttl1 class-map type control-plane match-any copp-s-v6routingProto2 match access-group name copp-system-acl-v6routingProto2 class-map type control-plane match-any copp-snmp match access-group name copp-system-acl-snmp class-map type control-plane match-any copp-ssh match access-group name copp-system-acl-ssh class-map type control-plane match-any copp-stftp match access-group name copp-system-acl-stftp class-map type control-plane match-any copp-tacacsradius match access-group name copp-system-acl-tacacsradius class-map type control-plane match-any copp-telnet match access-group name copp-system-acl-telnet policy-map type control-plane copp-system-policy class copp-s-selfIp police pps 500 class copp-s-default police pps 400 class copp-s-l2switched police pps 200 class copp-s-ping police pps 100 class copp-s-l3destmiss police pps 100 class copp-s-glean police pps 500 class copp-s-l3mtufail police pps 100 class copp-s-ttl1 police pps 100 class copp-s-ipmcmiss police pps 400 class copp-s-l3slowpath police pps 100 class copp-s-dhcpreq police pps 300 class copp-s-dhcpresp police pps 300 class copp-s-dai police pps 300 class copp-s-igmp police pps 400 class copp-s-routingProto2 police pps 1300 class copp-s-v6routingProto2 police pps 1300 class copp-s-eigrp police pps 200 class copp-s-pimreg police pps 200 class copp-s-pimautorp police pps 200 class copp-s-routingProto1 police pps 1000 class copp-s-arp police pps 200 class copp-s-ptp police pps 1000 class copp-s-bfd police pps 350 class copp-s-bpdu police pps 12000 class copp-icmp police pps 200 class copp-telnet police pps 500 class copp-ssh police pps 500 class copp-snmp police pps 500 class copp-ntp police pps 100 class copp-tacacsradius police pps 400 class copp-stftp police pps 400 control-plane service-policy input copp-system-policy
例:セットアップ ユーティリティによるデフォルト CoPP ポリシーの変更または再適用
セットアップ ユーティリティを使用して、デフォルト CoPP ポリシーを変更または再適用する例を次に示します。
switch# setup ---- Basic System Configuration Dialog ---- This setup utility will guide you through the basic configuration of the system. Setup configures only enough connectivity for management of the system. *Note: setup is mainly used for configuring the system initially, when no configuration is present. So setup always assumes system defaults and not the current system configuration values. Press Enter at anytime to skip a dialog. Use ctrl-c at anytime to skip the remaining dialogs. Would you like to enter the basic configuration dialog (yes/no): yes Create another login account (yes/no) [n]: n Configure read-only SNMP community string (yes/no) [n]: n Configure read-write SNMP community string (yes/no) [n]: n Enter the switch name : switch Continue with Out-of-band (mgmt0) management configuration? (yes/no) [y]: n Configure the default gateway for mgmt? (yes/no) [y]: n Enable the telnet service? (yes/no) [n]: y Enable the ssh service? (yes/no) [y]: n Configure the ntp server? (yes/no) [n]: n Configure CoPP System Policy Profile ( default / l2 / l3 ) [default]: l2 The following configuration will be applied: switchname switch telnet server enable no ssh server enable policy-map type control-plane copp-system-policy ( l2 ) Would you like to edit the configuration? (yes/no) [n]: n Use this configuration and save it? (yes/no) [y]: y [########################################] 100%