Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Convenzioni

Utilizzo elevato della CPU causato dal processo del motore SNMP

Tabelle ARP e/o route di grandi dimensioni sottoposte a polling dalla stazione NMS

Polling di alcuni MIB

Informazioni correlate

Discussioni correlate nella Cisco Support Community

Introduzione

Questo documento spiega come risolvere i problemi relativi all'elevato utilizzo della CPU in un router a causa del processo SNMP ENGINE in esecuzione nel router, soprattutto nei router di fascia bassa.

Prerequisiti

Requisiti

Questo documento è utile per conoscere i seguenti argomenti:

- SNMP

- Cisco IOS

Componenti usati

Le informazioni di questo documento si basano sui router con software Cisco IOS®.

Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.

Convenzioni

Per ulteriori informazioni sulle convenzioni usate, consultare il documento Cisco sulle convenzioni nei suggerimenti tecnici.

Utilizzo elevato della CPU causato dal processo del motore SNMP

A volte messaggi come questo possono apparire nella console del router:

%SNMP-3-CPUHOG: Processing [chars] of [chars]

Significa che l'agente SNMP sul dispositivo ha impiegato troppo tempo per elaborare una richiesta.

È possibile determinare la causa dell'uso elevato della CPU in un router usando l'output del comando show process cpu.

Nell'esempio seguente viene mostrato l'output del comando show process cpu.

cacuk#show process cpu

CPU utilization for five seconds: 0%/0%;

one minute: 0%;

five minutes: 0%

PID

Runtime (ms)

Richiamato

Secs

5 sec

1 min.

5 Min.

TTY

Processo

1

68

258816

0

0.00%

0.00%

0.00%

0

Misuratore carico

2

0

1

0

0.00%

0.00%

0.00%

0

OSPF Hello

3

788132

131480

5994

0.00%

0.00%

0.00%

0

Controlla heap

4

0

1

0

0.00%

0.00%

0.00%

0

Gestione blocchi

5

56

131

427

0.00%

0.00%

0.00%

0

Gestione pool

69

202700

421730

480

0.00%

0.01%

0.00%

0

SNMP IP

71

1193648

211250

5650

0.00%

0.19%

0.15%

0

SNMP ENGINE

Il comando debug snmp controlla quali ID oggetto (OID) o MIB (Management Information Base) vengono sottoposti a query in quel momento.

Nota: l'esecuzione del debug su una rete di produzione può sovraccaricare il router.

L'elevato utilizzo della CPU in relazione al protocollo SNMP (Simple Network Management Protocol) può essere dovuto a due cause:

1. Tabelle ARP e/o di route di grandi dimensioni sottoposte a polling dalla stazione NMS

2. Polling di alcuni MIB

Tabelle ARP e/o route di grandi dimensioni sottoposte a polling dalla stazione NMS

La stazione di gestione della rete richiede ai router l'intera tabella dei percorsi per informazioni sulle altre reti. Utilizza queste informazioni per trovare altri router e interrogarli sulla loro conoscenza delle reti circostanti. In questo modo, la stazione di gestione può imparare la topologia dell'intera rete.

Il router memorizza la tabella di routing in un formato hash, in modo da velocizzare le ricerche dei percorsi. Tuttavia, le risposte SNMP per la route devono essere restituite in ordine lessicografico in base alla RFC1213. Pertanto, per ciascuna richiesta SNMP ricevuta dal router, è necessario ordinare la tabella hash in modo lessicografico prima di poter creare una PDU di risposta SNMP. Più grande è la tabella di route, maggiore sarà l'intensità di ordinamento della CPU.

L'SNMP è un processo a bassa priorità per quanto riguarda lo scheduler della CPU, quindi un altro processo che richiede risorse CPU ha la priorità. Pertanto, mentre in questo scenario si verificano picchi della CPU, non dovrebbero influire sulle prestazioni.

Raccomandazione 1: Uso dei comandi di visualizzazione snmp-server

Per evitare problemi di prestazioni, imporre al router di terminare in modo anomalo le query per la tabella di routing dal server del sistema di gestione di rete. Configurare il router in modo che risponda con un messaggio completo non appena riceve l'inizio di una richiesta per la tabella di routing, come indicato di seguito:

snmp-server view cutdown iso included

!--- ISO is used as a starting point as it is the snmp 'root'.

snmp-server view cutdown 1.3.6.1.2.1.4.21 excluded

snmp-server view cutdown 1.3.6.1.2.1.4.22 excluded

snmp-server view cutdown 1.3.6.1.2.1.3 excluded

snmp-server view cutdown 1.3.6.1.6.3.15 excluded

!--- The additional object snmpUsmMIB is excluded.

snmp-server view cutdown 1.3.6.1.6.3.16 excluded

!--- The additional object snmpVacmMIB is excluded.

snmp-server view cutdown 1.3.6.1.6.3.18 excluded

!--- The additional object snmpCommunityMIB is excluded.

snmp-server community public view cutdown RO

snmp-server community private view cutdown RW

Attenzione: nell'esempio precedente, snmpUsmMIB è escluso, snmpVacmMIB è escluso e snmpCommunityMIB è escluso. Insieme, questi oggetti possono essere utilizzati per ottenere informazioni sugli utenti configurati e sulle stringhe della community per ottenere l'accesso amministrativo al dispositivo. Si consiglia di escludere questi oggetti dalla visualizzazione su qualsiasi dispositivo accessibile agli utenti pubblici.

Questa configurazione blocca le richieste per recuperare la tabella di route (ipRouteTable) e la tabella ARP (Address Resolution Protocol) (ipNetToMediaTable), ma consente il passaggio di tutte le altre richieste. Se si dispone di versioni precedenti del software Cisco IOS®, l'oggetto MIB ipRouteTable non verrà riconosciuto. Utilizzare quindi la configurazione seguente:

snmp-server view cutdown iso included

!--- ISO is used as a starting point as it is the snmp 'root'.

snmp-server view cutdown 1.3.6.1.2.1.4.21 excluded

snmp-server view cutdown 1.3.6.1.2.1.4.22 excluded

snmp-server view cutdown at excluded

snmp-server view cutdown 1.3.6.1.6.3.15 excluded

!--- The additional object snmpUsmMIB is excluded.

snmp-server view cutdown 1.3.6.1.6.3.16 excluded

!--- The additional object snmpVacmMIB is excluded.

snmp-server view cutdown 1.3.6.1.6.3.18 excluded

!--- The additional object snmpCommunityMIB is excluded.

snmp-server community public view cutdown RO

snmp-server community private view cutdown RW

Attenzione: nell'esempio precedente, snmpUsmMIB è escluso, snmpVacmMIB è escluso e snmpCommunityMIB è escluso. Insieme, questi oggetti possono essere utilizzati per ottenere informazioni sugli utenti configurati e sulle stringhe della community per ottenere l'accesso amministrativo al dispositivo. Si consiglia di escludere questi oggetti dalla visualizzazione su qualsiasi dispositivo accessibile agli utenti pubblici.

In entrambi gli esempi è possibile sostituire le stringhe della community.

Di conseguenza, il router non restituisce più la tabella ARP o la tabella del percorso IP quando viene interrogata. In questo modo si impedisce ai processi di rilevamento della rete SNMP di creare picchi di CPU sul router in questione, ma si rimuove anche un grado di gestibilità dal router.

I router che in precedenza non presentavano picchi della CPU possono iniziare a farlo se viene modificata la tabella di routing. La quantità di cicli necessari per rispondere alle richieste della tabella di route IP è una funzione del numero di route nella tabella di routing. Se il numero di route aumenta, aumenta anche l'utilizzo della CPU.

Raccomandazione 2: Attiva CEF

È stata apportata una modifica al codice Cisco IOS per consentire al protocollo SNMP di interrogare la tabella Cisco Express Forwarding (CEF) per le voci di routing se viene utilizzata la commutazione CEF. Ciò migliora notevolmente la situazione. Se il CEF è abilitato, l'agente SNMP risponde a un'operazione get-next/get-bulk per le tabelle di routing o ARP con le informazioni della base FIB (Forwarding Information Base). Il file FIB viene archiviato in ordine lessicografico e non è necessario alcun ordinamento. Senza l'abilitazione del CEF, l'agente SNMP risponde con le informazioni provenienti dalla base RIB (Routing Information Base), che devono essere ordinate lessicograficamente causando un utilizzo elevato della CPU.

Fare clic sul collegamento seguente per visualizzare informazioni dettagliate sull'ID del bug.

CSCdk54265 (solo utenti registrati) - L'HOG della CPU viene generato quando si esegue il polling della tabella di routing tramite SNMP dalla Network Management Station.

Polling di alcuni MIB

Le applicazioni di gestione della rete recuperano spesso informazioni dai dispositivi che utilizzano SNMP. Un esempio potrebbe essere Resource Manager Essentials (RME), un'applicazione della suite di prodotti CiscoWorks 2000. RME può recuperare le informazioni flash definite in CISCO-FLASH-MIB. Se il dispositivo dispone di un disco flash ATA, l'utilizzo della CPU potrebbe saltare.

Fare clic sul collegamento seguente per visualizzare informazioni dettagliate sull'ID del bug.

CSCdt97325 (solo utenti registrati)

Per verificare e applicare la soluzione, attenersi alla seguente procedura:

1. Verificare se il dispositivo dispone di una scheda flash ATA in uno dei suoi slot:

Router#show disk1:

******** ATA Flash Card Geometry/Format Info ********

ATA CARD GEOMETRY

Number of Heads:        12

Number of Cylinders     906

Sectors per Cylinder    63

Sector Size             512

Total Sectors           684936

ATA CARD FORMAT

Number of FAT Sectors  84

Sectors Per Cluster    32

Number of Clusters     21372

Number of Data Sectors 684117

Base Root Sector       169

Base FAT Sector        1

Base Data Sector       201

Router#

In caso di dubbi o di mancata ricezione dell'output del comando show diskX, eseguire il comando show tech ed eseguire una ricerca del disco.

2. Una volta che si è certi di disporre di un disco flash ATA, è possibile applicare la seguente soluzione per evitare le query SNMP su FLASH-MIB:

Router(config)#snmp-server view

iso included

!--- ISO is used as a starting point as it is the snmp 'root'.

Router(config)#snmp-server view

ciscoFlashMIB excluded

!--- The additional object snmpUsmMIB is excluded.

Router(config)#snmp-server view

1.3.6.1.6.3.15 excluded

!--- The additional object snmpVacmMIB is excluded.

Router(config)#snmp-server view

1.3.6.1.6.3.16 excluded

!--- The additional object snmpCommunityMIB is excluded.

Router(config)#snmp-server view

1.3.6.1.6.3.18 excluded

Router(config)#snmp-server community

view

ro

Router(config)#snmp-server community

view

rw

Router(config)#exit

Router#

Nota: nella configurazione precedente, scegliere la stessa parola su ogni riga per <any_word>.

Attenzione: nell'esempio precedente, snmpUsmMIB è escluso, snmpVacmMIB è escluso e snmpCommunityMIB è escluso. Insieme, questi oggetti possono essere utilizzati per ottenere informazioni sugli utenti configurati e sulle stringhe della community per ottenere l'accesso amministrativo al dispositivo. Si consiglia di escludere questi oggetti dalla visualizzazione su qualsiasi dispositivo accessibile agli utenti pubblici.

3. Verificare che sia implementata correttamente:

Router#show run

...

snmp-server view

iso included

!--- ISO is used as a starting point as it is the snmp 'root'.

snmp-server view

ciscoFlashMIB excluded snmp-server view

internet.6.3.15 excluded

!--- The additional object snmpUsmMIB is excluded.

snmp-server view

internet.6.3.16 excluded

!--- The additional object snmpVacmMIB is excluded.

snmp-server view

internet.6.3.18 excluded

!--- The additional object snmpCommunityMIB is excluded.

snmp-server community

view

RW snmp-server community

view

RO

Nota: <any_word>, <write_community_string> e <read_community_string> sono quelli inclusi nella configurazione.

Attenzione: nell'esempio precedente, snmpUsmMIB è escluso, snmpVacmMIB è escluso e snmpCommunityMIB è escluso. Insieme, questi oggetti possono essere utilizzati per ottenere informazioni sugli utenti configurati e sulle stringhe della community per ottenere l'accesso amministrativo al dispositivo. Si consiglia di escludere questi oggetti dalla visualizzazione su qualsiasi dispositivo accessibile agli utenti pubblici.

4. Eseguire il comando show proc cpu per verificare se la CPU-Util per SNMP è inattiva e cercare il processo IP_SNMP.

Nota: il bug CSCdt97325 è stato risolto anche in alcune versioni più recenti di Cisco IOS, quindi verificare i dettagli.

Altri bug relativi al polling di MIB:

Seguire i collegamenti seguenti all'ID del bug Cisco e visualizzare informazioni dettagliate sul bug.

- CSCdm67427 (solo utenti registrati) - Il polling dell'interfaccia secondaria ATM restituisce il messaggio CPU HOG dal dispositivo.

- CSCdu63734 (solo utenti registrati) - Flash MIB effettua troppe chiamate ai fi.

- CSCdu48652 (solo utenti registrati) - La query MIB Flash blocca le chiamate vocali su 7200.

- CSCds53368 (solo utenti registrati) - Problemi con l'oggetto ciscoFlashPartitionEntry in CISCO-FLASH-MIB.

- CSCdu55091 (solo utenti registrati) - 2500 snmpgetnext per alcuni oggetti SNMP causa il ripristino della traccia.

- CSCdx54836 (solo utenti registrati) - Il polling SNMP su Flash MIB causa un elevato utilizzo della CPU sullo switch.

Informazioni correlate

- Risoluzione dei problemi relativi all'utilizzo elevato della CPU nei router Cisco

- Documentazione e supporto tecnico – Cisco Systems