CoPP(Control Plane Policing)とは、トラフィック分類のためのACL設定例

CoPPは、コントロールプレーンのCPUに着信するトラフィックを制御できる機能です。

アクセススイッチを導入する際には、CoPP機能やそのデフォルト値を意識することはないかと思いますが、ハイパフォーマンスが要求されるよくあるコアスイッチをリプレースする際にはネットワーク構成や通信要件によっては要注意な機能とも言えます。

ハイエンドモデルのCatalystでデフォルトで有効になっていることを知らず、あるいは、そのデフォルト値を意識しなかった結果、痛い目に合ったNWエンジニアは少なからずいるかと。

CoPPの技術解説については以下のリンク先の記事で5分くらいで理解できます。

→ CoPP( Control Place Policing )とは

※ ローエンドのスイッチでは「 mls qos copp protocol 」コマンドで設定します。
※ Nexusスイッチは class-map/policy-map のtypeで「control-plane」を指定します。
※ Cisco ASRルータなど機種により、出力レート制限「service-policy output」も可能。
※ 設定例のACLの「permitに合致したトラフィックはポリシング対象」という意味です。

上図は概念図ですが、Catalystの場合の詳細は、パケットが着信すると「Packet Buffer」→「CEF/FIB Lookup」→ Processor Switched Packets に対してCoPPが適用されます。

CoPPで処理された後にコントロールプレーンに着信するトラフィックには、管理系のTelnet、SSH、SNMPなどやICMPトラフィック、ルーティングアップデートなどが含まれます。

CoPPには色々な制約がありますので、詳細は該当機種の該当マニュアルを熟読しましょう。

チューニングした後、最も多かった問い合わせがACLに「log」オプションつけていいですか?という経験があるので、個人的な想いで、logキーワードはダメという仕様だけ特筆しました。

今回はネットワークエンジニアのお仕事での苦い過去を書きたかったのではなく、このCoPPがCCNP/CCIE Enterpriseの試験範囲なので紹介しています。昔からの技術なのですが。

・ 350-401 ENCORでは「セキュリティ」分野の項目で「CoPP」と書かれています。

・ 300-410 ENARSIでは「インフラストラクチャセキュリティ」で次の記載があります。

CoPP(Control Plane Policing)のトラブルシューティング(Telnet、SSH、HTTP(S)、SNMP、EIGRP、OSPF、BGP)

CCNPでもCCIEでも「セキュリティ」分野に分類されていますが、それはCoPPがDoS攻撃などのトラフィックからCPUを守るという基本コンセプトがあるからです。

どういう内容で出題されるのかまだ試験を確認していませんが、CiscoのマニュアルにCoPPのトラフィック分類の基本ACL例が紹介されており、そこでこの試験範囲に合致するTelnet、SSH、HTTP(S)、SNMP、EIGRP、OSPF、BGPのキーワードがあるので以下に紹介します。

CoPPトラフィック分類の基本ACLの設定例

・ ACL 101:クリティカル トラフィック
・ ACL 102:重要トラフィック
・ ACL 103:通常トラフィック
・ ACL 104:不要なトラフィックを明示的に拒否(対象)
・ ACL 199:その他すべてのトラフィック

ポリシーが入力だけに適用されることが前提である場合は、双方向に一致するポリシーを定義する必要はありません。トラフィックは一方向(CoPPが有効な機器へ)だけで識別します。

※ 設定例では「10.9.9.9」がCoPPが有効なCiscoデバイスとします。

※ 次のACLは通信の許可/拒否ではなく「分類」です。通信制限は「policy」で決定します。

◆ ACL 101:クリティカル トラフィック(例:BGP通信)

・ ピアのBGPポートからこのCoPPが有効な機器へのBGP通信を対象とする例

access-list 101 permit tcp host 192.168.1.1 host 10.9.9.9 eq bgp
access-list 101 permit tcp host 192.168.1.1 eq bgp host 10.9.9.9

◆ ACL 102:重要トラフィック(例:TACACS+、SSH、SNMP、NTP通信)

・ TACACSホストからのリターントラフィックを対象

access-list 102 permit tcp host 192.168.1.2 host 10.9.9.9 established

・ サブネットからCoPPが有効なCiscoデバイスへのSSHアクセスを対象

access-list 102 permit tcp 192.168.1.0 0.0.0.255 host 10.9.9.9 eq 22

・ NMSホストからCoPPが有効なCiscoデバイスへのSNMPアクセスを対象

access-list 102 permit udp host 192.168.1.3 host 10.9.9.9 eq snmp

・ CoPPが有効なCiscoデバイスへの既知のクロックからのNTPパケットを対象

access-list 102 permit udp host 192.168.1.4 host 10.9.9.9 eq ntp

◆ ACL 103:通常トラフィック(例:traceroute / ping 通信)

・ CoPPが有効なCiscoデバイスからの traceroute トラフィックを対象

access-list 103 permit icmp any any ttl-exceeded
access-list 103 permit icmp any any port-unreachable

・ ping を発信したCoPPが有効なCiscoデバイスに応答の受信トラフィックを対象

access-list 103 permit icmp any any echo-reply

・ CoPPが有効なCiscoデバイスへのpingパケットを対象

access-list 103 permit icmp any any echo

◆ ACL 104:不要クラス用の定義(分類とモニタを目的でありドロップ対象)

・ UDPポート1434 を宛先とするすべてのトラフィックをポリシング用の対象

access-list 104 permit udp any any eq 1434

◆ ACL 199:その他すべてのトラフィックの定義

・ その他すべてのトラフィック用に ACL199を定義する例

access-list 199 permit ip any any

冒頭でも申し上げた通り、これらのACLは通信を許可、拒否するACLというよりも「分類」のためのACLであり、最終的なアクション(パケットの制御)はc、lass-mapとpolicy-mapにて定義されます。設定後のステータスは show policy-map control-plane で確認できます。

  • このエントリーをはてなブックマークに追加