Control Plane Policing Configuration

This chapter contains basic information and a sample configuration of CPU queue properties. The device has multiple CPU queues for managing and classifying control traffic and offers rate limiters for control plane protection. Various types of CPU port-bound packets are queued into different CPU queues, each with different properties such as rate, queue limit, monitoring status, and drop status.

Control plane policing (CoPP) manages the traffic flow destined to the host router CPU for control plane processing. CoPP limits the traffic forwarded to the host CPU and avoids impact on system performance.

CoPP has organized the handling of control packets by providing per-protocol hardware CPU queues. So, control packets are queued in different CPU queues based on protocol.
Per-protocol CPU queue rate limits and buffer allocations are programmed during router initialization, thus, every CPU queue is rate-limited to a default stable and balanced behavior across protocols.
When control packets are received at a higher rate than the programmed rate, the excess traffic is dropped at the queue level in the packet processor hardware itself.
All CPU queues are pre-programmed with default rate limits and buffer allocations to ensure a default stable and balanced behavior across protocols.

Topology

A network traffic simulator device connects to a router (R1) to generate and send various types of network traffic. The router, which has CoPP configured, manages and limits traffic destined for its CPU using multiple CPU queues with specific properties for different control traffic types. Another traffic simulator device connects to the router to generate or receive traffic, testing the router's CPU queues and CoPP configurations to handle different traffic loads and types.

Figure 49. Simple configuration of CPU Queuing

The CPU queue rates are listed for each protocol queue.

Table 46.

Default CPU queues

Protocol Queues

Default Rate in packets per second (PPS)

Maximum configurable rate in (PPS)

Description

Best-effort

2113

2113

L3 Known Unicast packet matching the local route (not matching any other rule) .

IPMC-miss

2113

2113

IP Multicast Route-DST-Lookup miss packets.

L3-miss

211

211

IP L3 Route-DST-Lookup miss packets.

SFLOW

32000

100000

SFLOW Sampled Packets

BGP

1500

1500

BGP packets with TCP port 179(both Server and Client)

VRRP

1024

1024

VRRP ipv4/ipv6 packets: IP protocol number 112

LDP-RSVP

500

500

RSVP and LDP packets

RSVP: IP protocol 46

LDP: L4 source/destination port number:646

RIP

500

500

RIP/RIPv1/RIPNG packets : UDP DST port 520/521

OSPF

2000

2000

OSPF packets (IP protocol 89)

DHCP

100

2048

DHCP: DHCP ipv4/ipv6 server/client packets

UDP source/destination port number:ipv4( 67/68) ipv6(546/547)

ND

6000

6000

ICMPv6 packets: IP next header number 58

PIM

4000

4000

Protocol Independent Multicast packets: IP protocol number 103 and DMAC: 01:00:5e:00:00:0D

ARP

6000

6000

ARP packets: Ether-type 0x0806

IGMP

4000

4000

Internet Group Management Protocol (IP protocol 2)

BPDU

10000

10000

xSTP : DMAC 0180:C200:0000

Provider Bridging : DMAC 0180:C200:0008

LACP : DMAC 0180:C200:0002, ethertype:0x8809, subtype:1/2

DOT1X/AUTHD : DMAC 0180:C200:0003

LLDP : DMAC 0180:C200:000E

EFM : DMAC 0180:C200:0002, ethertype:0x8809, subtype:3

ELMI : DMAC 0180:C200:0007

LBD : DMAC 010f:E200:0007, ethertype:0x8918

MCEC IDP : UDP source/destination port 1025

MLAG PDU : DMAC 0180:C200:0000

CCM

1000

1000

UDLD mode : DMAC: 0100.0CCC.CCCC

CFM packets : Ether type : 0x8902, DMAC : 0108.c200.0030

G8032 packets : DMAC 0119:A700:00XX

BFD

2000

2000

Software-BFD Single hop packets: UDP port 3784, TTL 255

Software-BFD Multi hop packets: UDP port 4784

IS-IS

500

1000

ISIS (DMAC 0180:C200:0014/0015)

ESIS (DMAC 0900:2B00:0004/0005)

ESIS = End System-to-Intermediate System (ISIS point-to-point case)

ACL

200

200

ACL based logging packets

VXLAN

500

500

ARP,RARP and ND cache queue for packets coming on VXLAN access ports

DAIVM

100

500

Guest VM packets

Validate the default CPU queue rates by using the command show cpu-queue details.

Copy
R1#show cpu-queue details
* - Can not configure the parameter
Cpu queue                                       Rate In PPS                                Monitor Status                                Lossy Status
Name          Configured  Default   Max Rate Allowed  Configured    Default     Configured  Default
===========   ==========  =======   ================  ===========   ==========  =========== ==========
best-effort      -         2113       2113               -          * no-monitor     -         * lossy
ipmc-miss        -         2113       2113               -          * no-monitor     -         * lossy
l3-miss          -         211        211                -          * no-monitor     -         * lossy
sflow            -         32000      100000             -            monitor        -         * lossy
bgp              -         1500       1500               -            monitor        -           lossless
vrrp             -         1024       1024                -           monitor        -           lossless
rip              -         500        500                -            monitor        -           lossless
ospf             -         2000       2000               -            monitor        -           lossless
dhcp             -         100        2048               -            no-monitor     -           lossy
nd               -         6000       6000               -            monitor        -           lossless      
pim              -         4000       4000               -            * no-monitor   -         * lossy
arp              -         6000       6000               -            monitor        -           lossless
igmp             -         4000       4000               -            * no-monitor   -         * lossy
bpdu             -         10000      10000              -            monitor        -           lossless
ccm              -         1000       1000                -           no-monitor     -           lossy
bfd              -         2000       2000               -            no-monitor     -           lossy
ptp              -         1000       1000               -            no-monitor     -           lossy
isis             -         500        1000               -            monitor        -           lossless
trill-isis       -         1000       1000               -            monitor        -           lossless
acl              -         200        1000               -          * no-monitor     -         * lossy
vxlan            -         500        500                -            monitor        -           lossy
daivm            -         100        500                -            no-monitor     -           lossy
Enable the feature before validating the CPU queue for each protocol.
The monitor option starts generating operational logs for the number of dropped packets and the percentage.
Copy
OcNOS(config)#2021 Nov 16 11:40:24.188 : OcNOS : HSL : CRITI : [CPU_QUEUE_IS_FULL_2]: 967368133 packets dropped at queue bpdu due to queue full. Average CPU queue rate is 99% (499 pkts/sec).

Configuring CPU Queuing Lossless

When lossless is configured on a CPU queue, control traffic to that queue is treated as lossless. The traffic is not dropped on the CPU queue; instead, it creates backpressure on the ingress port. If the ingress port runs out of buffering resources, the control traffic is dropped. This can also cause other traffic on the same port to be dropped, which will be seen as IBP discards on the incoming port. Lossless mode provides better fairness in serving control traffic from different data ports. In lossy mode, control traffic will be tail-dropped from any port.

Copy
R1#configure terminal
R1(config)#cpu-queue bpdu rate 600 lossless no monitor
R1(config)#exit

Validation

Confirm the configurations with the following commands:

Copy
R1#show running-config | in cpu
cpu-queue bpdu rate 600 lossless no-monitor 
R2#show cpu-queue details
* - Can not configure the parameter
Cpu queue                     Rate In PPS                       Monitor Status       Lossy Status
Name          Configured  Default   Max Rate Allowed  Configured    Default     Configured  Default
===========   ==========  =======   ================  ===========   ==========  =========== ==========
best-effort      -         2113      2113                -         * no-monitor        -   * lossy
ipmc-miss        -         2113      2113                -         * no-monitor        -   * lossy
l3-miss          -         211       211                 -         * no-monitor        -   * lossy
sflow            -         32000     100000              -           monitor           -   * lossy
bgp              -         1500      1500                -           monitor           -     lossless
vrrp             -         1024      1024                 -           monitor           -     lossless
rip              -         500       500                 -           monitor           -     lossless
ospf             -         2000      2000                -           monitor           -     lossless
dhcp             -         100       2048                -           no-monitor        -     lossy
nd               -         6000      6000                -           monitor           -     lossless    
pim              -         4000      4000                -           * no-monitor      -     lossy
arp              -         6000      6000                -           monitor           -     lossless
igmp             -         4000      4000                -         * no-monitor        -   * lossy
bpdu            600        10000     10000            no-monitor     monitorloss     less   lossless 
ccm              -         1000      1000                 -           no-monitor       -     lossy
bfd              -         2000      2000                -           no-monitor       -     lossy
ptp              -         1000      1000                -           no-monitor       -     lossy
isis             -         500       1000                -           monitor          -     lossless
trill-isis       -         1000      1000                -           monitor          -     lossless
acl              -         200       1000                -         * no-monitor       -   * lossy
vxlan            -         500       500                 -           monitor          -     lossy
daivm            -         100       500                 -           no-monitor       -     lossy
R1#show interface cpu counters rate kbps
Load interval: 30 second
+-------------------+--------------+-------------+--------------+-------------+
|    CPU Queue(%)   |    Rx kbps   |    Rx pps   |    Tx kbps   |    Tx pps   |
+-------------------+--------------+-------------+--------------+-------------+
 bpdu         ( 99%) -              -             38.41          599
R1#show interface cpu counters queue-stats
E - Egress, I - Ingress, Q-Size is in bytes
 * indicates monitor is active
+-------------+--------------------+--------+-----------------+-------------------+-----------------+-------------------+
|  Interface  |   Queue/Class-map  | Q-Size |     Tx pkts     |      Tx bytes     |  Dropped pkts   |   Dropped bytes   |
+-------------+--------------------+--------+-----------------+-------------------+-----------------+-------------------+
 cpu           bpdu             (E) 320736   21703             1388992             5363326           343240064

Configuring CPU Queuing Lossy

When the lossy mode is configured on a CPU queue, control traffic from different ports is dropped at the CPU queue itself. This prevents backpressure on the incoming port and avoids IBP discards of data traffic. However, this mode loses fairness, as control traffic from different ports can be tail-dropped. In other words, higher amounts of control traffic from a single port can impact control plane sessions on another port.

Copy
R1#configure terminal
R1(config)#cpu-queue bpdu rate 500 lossy no monitor
R1(config)#exit

Validation

Confirm the configurations with the following commands:

Copy
R1#show running-config | in cpu
cpu-queue bpdu rate 500 lossy no-monitor 
R1#show cpu-queue details
* - Can not configure the parameter
Cpu queue                 Rate In PPS                    Monitor Status             Lossy Status
Name          Configured  Default   Max Rate Allowed  Configured    Default     Configured  Default
===========   ==========  =======   ================  ===========   ==========  =========== ==========
best-effort     -         2113      2113                -           * no-monitor     -      * lossy
ipmc-miss       -         2113      2113                -           * no-monitor     -      * lossy
l3-miss         -         211       211                 -           * no-monitor     -      * lossy
sflow           -         32000     100000              -             monitor        -      * lossy
bgp             -         1500      1500                -             monitor        -        lossless
vrrp            -         1024      1024                 -             monitor        -        lossless
rip             -         500       500                 -             monitor        -        lossless
ospf            -         2000      2000                -             monitor        -        lossless
dhcp            -         100       2048                -             no-monitor     -        lossy
nd              -         6000      6000                -             monitor        -        lossless  
pim             -         4000      4000                -           * no-monitor     -      * lossy
arp             -         6000      6000                -             monitor        -        lossless
igmp            -         4000      4000                -           * no-monitor     -      * lossy
bpdu           500        10000    10000          no-monitor          monitor      lossy      lossless 
ccm             -         1000     1000                  -             no-monitor     -        lossy
bfd             -         2000     2000                 -             no-monitor     -        lossy
ptp             -         1000     1000                 -             no-monitor     -        lossy
isis            -         500      1000                 -             monitor        -        lossless
trill-isis      -         1000     1000                 -             monitor        -        lossless
acl             -         200      1000                 -           * no-monitor     -      * lossy
vxlan           -         500      500                  -             monitor        -        lossy
daivm           -         100      500                  -             no-monitor     -        lossy
R1#show interface cpu counters queue-stats
E - Egress, I - Ingress, Q-Size is in bytes
 * indicates monitor is active
+-------------+--------------------+--------+-----------------+-------------------+-----------------+-------------------+
|  Interface  |   Queue/Class-map  | Q-Size |     Tx pkts     |      Tx bytes     |  Dropped pkts   |   Dropped bytes   |
+-------------+--------------------+--------+-----------------+-------------------+-----------------+-------------------+
 cpu           nd               (E) 0        17                1998                0                 0
 cpu           bpdu             (E) 86320    153802            9843328             39667426          2538702464
R1#show interface cpu counters rate kbps
Load interval: 30 second
+-------------------+--------------+-------------+--------------+-------------+
|    CPU Queue(%)   |    Rx kbps   |    Rx pps   |    Tx kbps   |    Tx pps   |
+-------------------+--------------+-------------+--------------+-------------+
 bpdu         ( 99%) -              -             31.97          499