Функционал очень полезный, делает прекрасную вещь – защищает CPU от всякого рода паразитного трафика (CoPP/CPP в терминологии Cisco), но из-за включения по умолчанию и отсутствием нормальной инфы в документации мы первично сталкивались с довольно большим количеством проблем.
Во первых, настройки cpu-guard, которые установлены по умолчанию почему то скрыты в конфиг-файле коммутатора и не показываются через команду show running-config all или show running-config cpu-guard all, которая показывает default’ы для других настроек. В ходе экспериментов выяснилось, что cpu-guard работает для всех протоколов из огромного списка с rate 100.
ZTE-5928(config)#cpu-guard pp interface gei-0/1/1/1 rate mode ? arp ARP protocol arp-vrrp ARP-VRRP protocol bpdu BPDU protocol dot1x DOT1X protocol group-mng Group manage icmp ICMP protocol igmp IGMP protocol ipv4-bgp IPv4 BGP protocol ipv4-dhcp IPv4 DHCP protocol ipv4-isis IPv4 ISIS protocol ipv4-ldp IPv4 LDP protocol ipv4-ospf IPv4 OSPF protocol ipv4-pim IPv4 PIM protocol ipv4-rip IPv4 RIP protocol ipv6-bgp IPv6 BGP protocol ipv6-dhcp IPv6 DHCP protocol ipv6-isis IPv6 ISIS protocol ipv6-ldp IPv6 LDP protocol ipv6-nd IPv6 ND protocol ipv6-ospf IPv6 OSPF protocol ipv6-pim IPv6 PIM protocol ipv6-rip IPv6 RIP protocol isis2 ISIS2 protocol lacp LACP protocol lldp LLDP protocol mac-ping MAC-PING protocol mld MLD protocol msdp MSDP protocol ntp NTP protocol ptp PTP protocol radius RADIUS protocol snmp SNMP protocol ssh SSH protocol tacacs TACACS protocol telnet TELNET protocol ttl TTL protocol udld UDLD protocol untrust UNTRUST protocol vbas VBAS protocol vrrp VRRP protocol
Во вторых, сам функционал cpu-guard перехватывает не только пакеты, которые направляются на CPU нашего устройства, но и обычные транзитные пакеты к другим destination. Поэтому даже если на коммутаторе нет dhcp_relay, но он является транзитным для нижестоящих, откуда идет много запросов (к примеру, после дерганья питания в районе) – наш корневой свич может дропать dhcp трафик, не давая клиентам быстро получить IP.
- cpu-guard pp interface xgei-0/1/2/1 rate mode telnet/ipv4-dhcp/ipv4-pim/igmp 1000 – выставляем повышенный порог для telnet/ipv4-dhcp/ipv4-pim/igmp трафика.
- cpu-guard pp interface xgei-0/1/1/16 mode ipv4-rip disable – отключаем cpu-guard для rip.
- show cpu-guard-log shelf 0 panel 1 level 1 – статистика дропов cpu-guard.
ZTE-5928#show cpu-guard-log shelf 0 panel 1 level 1 !<CPU GUARD LOG> [2017- 4-29 20:58:50] LIMIT SW(type:v4_mutilcast;port:28;MP:24;NP:28;passby:410)[FROM_BROADCOM] [2017- 4-29 20:59:41] RECOVER(type:v4_mutilcast;port:28;MP:20;NP:28) [2017- 4-29 21:31: 1] DETECT GLOBAL ATTACK(type:arp_request;MP:22;NP:27;passby:340)[FROM_BROADCOM] [2017- 4-29 21:31: 1] LIMIT HW(type:arp_request;port:8;MP:22;NP:27;passby:180)[FROM_BROADCOM] [2017- 4-29 21:31: 2] DETECT GLOBAL ATTACK(type:arp_request;MP:22;NP:27;passby:340)[FROM_BROADCOM] [2017- 4-29 21:31: 2] LIMIT HW(type:arp_request;port:7;MP:22;NP:27;passby:130)[FROM_BROADCOM] [2017- 4-29 21:31: 7] RECOVER(type:arp_request;port:8;MP:21;NP:31) [2017- 4-29 21:31: 7] RECOVER(type:arp_request;port:7;MP:21;NP:31) [2017- 4-29 21:33: 2] LIMIT SW(type:v4_mutilcast;port:28;MP:21;NP:28;passby:640)[FROM_BROADCOM] [2017- 4-29 21:33:22] LIMIT HW(type:arp_request;port:7;MP:23;NP:27;passby:210)[FROM_BROADCOM] [2017- 4-29 21:33:56] RECOVER(type:v4_mutilcast;port:28;MP:18;NP:27) [2017- 4-29 21:33:56] RECOVER(type:arp_request;port:7;MP:18;NP:27)