La documentazione per questo prodotto è stata redatta cercando di utilizzare un linguaggio senza pregiudizi. Ai fini di questa documentazione, per linguaggio senza di pregiudizi si intende un linguaggio che non implica discriminazioni basate su età, disabilità, genere, identità razziale, identità etnica, orientamento sessuale, status socioeconomico e intersezionalità. Le eventuali eccezioni possono dipendere dal linguaggio codificato nelle interfacce utente del software del prodotto, dal linguaggio utilizzato nella documentazione RFP o dal linguaggio utilizzato in prodotti di terze parti a cui si fa riferimento. Scopri di più sul modo in cui Cisco utilizza il linguaggio inclusivo.
Cisco ha tradotto questo documento utilizzando una combinazione di tecnologie automatiche e umane per offrire ai nostri utenti in tutto il mondo contenuti di supporto nella propria lingua. Si noti che anche la migliore traduzione automatica non sarà mai accurata come quella fornita da un traduttore professionista. Cisco Systems, Inc. non si assume alcuna responsabilità per l’accuratezza di queste traduzioni e consiglia di consultare sempre il documento originale in inglese (disponibile al link fornito).
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.
Questo documento è utile per conoscere i seguenti argomenti:
SNMP
Cisco IOS
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.
Per ulteriori informazioni sulle convenzioni usate, consultare il documento Cisco sulle convenzioni nei suggerimenti tecnici.
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:
Tabelle ARP e/o di route di grandi dimensioni sottoposte a polling dalla stazione NMS
Polling di alcuni MIB
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.
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.
È 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.
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:
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.
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 viewiso included !--- ISO is used as a starting point as it is the snmp 'root'. Router(config)#snmp-server viewciscoFlashMIB excluded !--- The additional object snmpUsmMIB is excluded. Router(config)#snmp-server view1.3.6.1.6.3.15 excluded !--- The additional object snmpVacmMIB is excluded. Router(config)#snmp-server view1.3.6.1.6.3.16 excluded !--- The additional object snmpCommunityMIB is excluded. Router(config)#snmp-server view1.3.6.1.6.3.18 excluded Router(config)#snmp-server communityview Router(config)#snmp-server communityro view Router(config)#exit Router#rw
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.
Verificare che sia implementata correttamente:
Router#show run ... snmp-server viewiso included !--- ISO is used as a starting point as it is the snmp 'root'. snmp-server viewciscoFlashMIB excluded snmp-server view !--- The additional object snmpUsmMIB is excluded. snmp-server viewinternet.6.3.15 excluded internet.6.3.16 excluded !--- The additional object snmpVacmMIB is excluded. snmp-server viewinternet.6.3.18 excluded !--- The additional object snmpCommunityMIB is excluded. snmp-server communityview 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.
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.
Revisione | Data di pubblicazione | Commenti |
---|---|---|
1.0 |
27-Feb-2014 |
Versione iniziale |