What's changed: Initial version
5.3CoPP (Control Plane Policing)
CoPP classifies and rate-limits traffic punted to the device's own CPU (the control plane), protecting routing protocols and management access from DoS and excessive control traffic. You build classes and rate design with MQC (class-map, policy-map, service-policy) and apply the policy to control-plane. The goal is to be able to judge why an ACL alone cannot protect the CPU and why an adjacency went down.
Forwarding on a router or switch happens in hardware (the data plane), but packets the device itself must process—OSPF hellos, BGP updates, ARP, ICMP, SNMP, SSH—are punted to the CPU for software handling. If an attacker floods that path, the CPU saturates: adjacencies time out, routes drop, and even management access is lost—the network collapses even though forwarding hardware is untouched. An interface ACL can drop transit traffic, but it cannot govern the volume of packets that legitimately target the device. CoPP is the mechanism built for that job.
5.3.1Why the control plane needs protection
- The control plane is the CPU-based processing that computes routes, maintains adjacencies, and manages the device. Packets that reach it leave ASIC fast-path forwarding and are handled one at a time in software, so its throughput is orders of magnitude lower than the data plane's. That is why even a modest attack volume can incapacitate a device.
- CoPP applies a service policy to the virtual interface named
control-plane, policing traffic bound for the CPU class by class. The key is that it is rate limiting rather than blocking: legitimate protocols still pass while only abnormal volume is dropped, aiming to keep adjacencies and management alive precisely when the device is busiest (that is, under attack). - Two mechanisms are easily confused with CoPP: CPPr (Control Plane Protection), which further subdivides the control plane into host, transit, and CEF-exception subinterfaces, and
access-class, which controls reachability of the management plane. Keep the mapping between planes (data, management, control) and tools straight.
5.3.2Building CoPP with MQC
- Step 1: classify. Define traffic types with ACLs and group them with statements such as
class-map match-all CM-ROUTING. In practice you separate routing (OSPF/BGP/EIGRP/HSRP), management (SSH, SNMP, NTP, syslog), reachability checks (ICMP), and undefined (the remainder) into purpose-based classes. Coarse classification puts attack-prone ICMP and adjacency-keeping hellos in the same bucket, dropping them together. - Step 2: define the policy. Under
policy-map PM-COPP, assign each class apolice <bps> conform-action transmit exceed-action drop. Give the routing class generous headroom (or deliberately leave it unpoliced) and constrain ICMP and undefined classes to low rates. Becauseclass class-defaultcatches everything unclassified, making it too strict kills protocols you did not anticipate. - Step 3: apply and verify. In
control-planemode, applyservice-policy input PM-COPP(the direction is input, meaning toward the CPU). Verify withshow policy-map control-plane, checking per-class conform/exceed byte counts and drops to see whether legitimate traffic is exceeding. A safe rollout is to start withexceed-action transmitto measure only, set rates from the measurements, and then switch to drop.
Most-tested: CoPP polices CPU-bound traffic class by class to protect the device from DoS and excessive control traffic, the MQC flow of class-map to policy-map to service-policy input under control-plane, and verification with show policy-map control-plane. Be ready to answer two causal questions instantly: an ACL cannot protect the CPU (wrong plane), and over-tight rates cause adjacency loss.
Suppose you deploy CoPP to rescue a core router whose CPU hit 95% under an ICMP flood. In a hurry, you attach an ACL of permit ip any any to class-map match-all CM-ALL, define a single class in policy-map PM-COPP with police 32000 conform-action transmit exceed-action drop, and apply service-policy input PM-COPP under control-plane. CPU utilization does drop—but within tens of seconds all OSPF adjacencies fail, BGP sessions drop, and SSH becomes unstable. Concluding "CoPP is dangerous, remove it" is wrong; the fault is in the classification design. Squeezing all CPU-bound traffic into 32 kbps in one class means OSPF hellos and BGP keepalives are judged as exceeding in the same bucket as the attacking ICMP, so packets essential to adjacency maintenance are dropped at random—and once the dead interval elapses, adjacencies tear down and routes disappear. The correct design is separating classes by purpose: leave CM-ROUTING (OSPF/BGP/EIGRP/HSRP) unpoliced or at a generously high rate, give CM-MGMT (SSH/SNMP/NTP/syslog) a moderate rate, constrain CM-ICMP to a low rate, and keep class-default for the remainder at a value that is not excessively tight. The diagnostic tool is equally fixed: show policy-map control-plane shows which class is exceeding, revealing at a glance whether the drops hit attack traffic or legitimate protocols. Rising exceed counts on CM-ROUTING are direct evidence that its rate is too low relative to measured demand. Procedurally, rather than applying exceed-action drop immediately, you should have measured first with transmit, learned each class's steady-state rate, and only then switched to drop with roughly two to three times headroom. CoPP is a mechanism that protects you and also one that can take you down by your own hand; class design and the evidence behind each rate are the real substance of the configuration.
| Example class | Traffic | Rate design | Symptom if over-constrained |
|---|---|---|---|
| CM-ROUTING | OSPF, BGP, EIGRP, HSRP | Unpoliced or generously high | Adjacency loss, route withdrawal, repeated reconvergence |
| CM-MGMT | SSH, SNMP, NTP, syslog | Moderate (enough for operations) | Dropped management sessions, monitoring gaps |
| CM-ICMP | Ping and reachability checks | Low rate | Intermittent connectivity-check failures |
| class-default | Everything unclassified | Low but not extreme | Failures of unanticipated protocols such as ARP |
Trap: "Applying an ACL to an interface also stops attacks on the CPU" is wrong—an interface ACL decides whether transit traffic is allowed and cannot govern the volume of legitimate-looking packets punted to the device. Protection comes from CoPP (service-policy input under control-plane). Also wrong: "CoPP simply denies the matched traffic"—its essence is per-class policing (rate limiting), and the biggest trap is that constraining everything in a single class takes down adjacencies too.
5.3.3Section summary
- CoPP polices traffic punted to the CPU on the control plane, protecting adjacencies and management from DoS and excessive control traffic (an interface ACL is no substitute)
- Build it with MQC: classify with ACLs, group with
class-map,policewithin apolicy-map, and applyservice-policy inputundercontrol-plane. Split classes by purpose (routing, management, ICMP, class-default) and design rates per class - Constraining everything in one class causes adjacency loss. Roll out by measuring with
exceed-action transmit, set rates from that data, and verify collateral damage via conform/exceed counters inshow policy-map control-plane
Sign in to track progress — Log in.
Quick check
(just a quick review)Q1. To rescue a core router saturated by an ICMP flood, a single CoPP class matching `permit ip any any` was defined with `police 32000 exceed-action drop` and applied under `control-plane`. CPU load dropped, but OSPF adjacencies and BGP sessions all failed immediately after. Which is the correct cause and remediation?
Q2. In a security design review, someone argues that "a strict extended ACL applied `in` on the border router's outside interface is sufficient protection against control-plane DoS." Which is the most appropriate objection?
Q3. After a CoPP policy is applied, operations reports sporadic SNMP polling gaps and dropped SSH sessions, with no attack observed. What is the most appropriate next check and action?
Keep track of your progress
The full study guide is free to read. Sign up free to practice with the question bank, track what you have read, review your mistakes, and highlight passages.

