Inhalt

Einführung

Voraussetzungen

Anforderungen

Verwendete Komponenten

Konventionen

Hohe CPU-Auslastung durch den SNMP ENGINE-Prozess verursacht

Von der NMS-Station abgefragte große Route- und/oder ARP-Tabellen

Polling bestimmter MIBs

Zugehörige Informationen

Ähnliche Diskussionen in der Cisco Support Community

Einführung

In diesem Dokument wird erläutert, wie die hohe CPU-Auslastung in einem Router aufgrund des SNMP ENGINE-Prozesses, der auf dem Router ausgeführt wird, insbesondere bei Low-End-Routern, behoben werden kann.

Voraussetzungen

Anforderungen

Die Leser dieses Dokuments sollten folgende Themen kennen:

- SNMP

- Cisco IOS

Verwendete Komponenten

Die Informationen in diesem Dokument basieren auf Routern mit Cisco IOS® Software.

Die Informationen in diesem Dokument wurden von den Geräten in einer bestimmten Laborumgebung erstellt. Alle in diesem Dokument verwendeten Geräte haben mit einer leeren (Standard-)Konfiguration begonnen. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die potenziellen Auswirkungen eines Befehls verstehen.

Konventionen

Weitere Informationen zu Dokumentkonventionen finden Sie in den Cisco Technical Tips Conventions.

Hohe CPU-Auslastung durch den SNMP ENGINE-Prozess verursacht

Manchmal werden Meldungen wie diese in der Router-Konsole angezeigt:

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

Sie bedeuten, dass der SNMP-Agent auf dem Gerät zu viel Zeit benötigt hat, um eine Anfrage zu bearbeiten.

Sie können die Ursache einer hohen CPU-Verwendung in einem Router mithilfe des Befehls show process cpu ermitteln.

Das folgende Beispiel zeigt die Ausgabe des Befehls show process cpu.

cacuk#show process cpu

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

one minute: 0%;

five minutes: 0%

PID

Laufzeit(ms)

Angefordert

Sekunden

5 Sek.

1 Minute

5 Minuten

TTY

Prozess

1

68

258816

0

0,00 %

0,00 %

0,00 %

0

Belastungsmessgerät

2

0

1

0

0,00 %

0,00 %

0,00 %

0

OSPF Hello

1

788132

131.480

5994

0,00 %

0,00 %

0,00 %

0

Header überprüfen

4

0

1

0

0,00 %

0,00 %

0,00 %

0

Chunk-Manager

5

56

131

427

0,00 %

0,00 %

0,00 %

0

Pool-Manager

69

202.700

421730

480

0,00 %

0,01 %

0,00 %

0

IP-SNMP

71

1193648

211250

5650

0,00 %

0,19 %

0,15 %

0

SNMP-MOTOR

Der Befehl debug snmp überprüft, welche Objekt-IDs (OIDs) oder Management Information Base (MIBs) zum gegebenen Zeitpunkt abgefragt werden.

Hinweis: Das Ausführen eines Debuggens über ein Produktionsnetzwerk kann den Router überlasten.

Es gibt zwei mögliche Ursachen für eine hohe CPU-Auslastung im Zusammenhang mit dem Simple Network Management Protocol (SNMP):

1. Große Route- und/oder ARP-Tabellen, die von der NMS-Station abgefragt werden

2. Polling bestimmter MIBs

Von der NMS-Station abgefragte große Route- und/oder ARP-Tabellen

Die Netzwerkmanagementstation fragt Router für die gesamte Routing-Tabelle ab, um weitere Netzwerke kennenzulernen. Diese Informationen werden verwendet, um andere Router zu finden und sie über ihr Wissen über die Netzwerke um sie herum abzufragen. Auf diese Weise kann die Managementstation die Topologie des gesamten Netzwerks erlernen.

Der Router speichert die Routing-Tabelle in einem Hash-Format, das eine schnelle Routensuche erleichtert. Die SNMP-Antworten für die Route müssen jedoch in lexikografischer Reihenfolge gemäß RFC1213 zurückgegeben werden. Daher muss für jede SNMP-Anforderung, die der Router empfängt, die Hashtabelle lexikografisch sortiert werden, bevor eine SNMP-Antwort-PDU erstellt werden kann. Je größer die Routing-Tabelle, desto größer ist die CPU-Intensität der Sortierung.

SNMP ist für den CPU-Scheduler ein Prozess mit niedriger Priorität, sodass ein weiterer Prozess, der CPU-Ressourcen erfordert, Priorität hat. Daher sollten CPU-Spitzen in diesem Szenario nicht die Leistung beeinträchtigen.

Empfehlung 1: Befehle für die SNMP-Serveransicht verwenden

Um Leistungsprobleme zu vermeiden, erzwingen Sie den Router, Abfragen für die Routing-Tabelle vom Netzwerkmanagement-Systemserver vorzeitig zu beenden. Konfigurieren Sie den Router so, dass er mit einer vollständigen Nachricht antwortet, sobald er den Beginn einer Anforderung für die Routing-Tabelle empfängt:

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

Vorsicht: Im obigen Beispiel ist snmpUsmMIB ausgeschlossen, snmpVacmMIB ist ausgeschlossen, und snmpCommunityMIB ist ausgeschlossen. Zusammen können diese Objekte verwendet werden, um Informationen über konfigurierte Benutzer und Community-Strings abzurufen, um Administratorzugriff auf das Gerät zu erhalten. Es wird empfohlen, diese Objekte auf allen Geräten, auf die öffentliche Benutzer zugreifen können, von der Ansicht auszuschließen.

Diese Konfiguration blockiert Anforderungen zum Abrufen der Routing-Tabelle (ipRouteTable) und der ARP-Tabelle (Address Resolution Protocol) (ipNetToMediaTable), lässt jedoch alle anderen Anforderungen durch. Wenn Sie eine ältere Version der Cisco IOS®-Software haben, wird das MIB-Objekt ipRouteTable nicht erkannt. Verwenden Sie daher stattdessen die folgende Konfiguration:

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

Vorsicht: Im obigen Beispiel ist snmpUsmMIB ausgeschlossen, snmpVacmMIB ist ausgeschlossen, und snmpCommunityMIB ist ausgeschlossen. Zusammen können diese Objekte verwendet werden, um Informationen über konfigurierte Benutzer und Community-Strings abzurufen, um Administratorzugriff auf das Gerät zu erhalten. Es wird empfohlen, diese Objekte auf allen Geräten, auf die öffentliche Benutzer zugreifen können, von der Ansicht auszuschließen.

In beiden Beispielen können Sie eigene Community Strings ersetzen.

Diese Konfigurationen führen dazu, dass der Router bei der Abfrage nicht mehr die ARP-Tabelle oder die IP-Routing-Tabelle zurückgibt. Dadurch wird verhindert, dass SNMP-Netzwerkerkennungen CPU-Spitzen auf dem betreffenden Router erzeugen, aber auch eine gewisse Verwaltbarkeit vom Router entfernt.

Router, bei denen zuvor keine CPU-Spitzen auftraten, beginnen dies möglicherweise, wenn die Routing-Tabelle geändert wird. Die Anzahl der Zyklen, die erforderlich sind, um auf Anfragen in der IP-Routing-Tabelle zu antworten, hängt von der Anzahl der Routen in der Routing-Tabelle ab. Wenn die Anzahl der Routen zunimmt, nimmt auch die CPU-Auslastung zu.

Empfehlung 2: CEF aktivieren

Im Cisco IOS-Code wurde eine Änderung vorgenommen, damit SNMP bei Verwendung von CEF-Switching die Cisco Express Forwarding (CEF)-Tabelle für Routingeinträge abfragen kann. Dadurch wird die Situation deutlich verbessert. Wenn CEF aktiviert ist, antwortet der SNMP-Agent auf einen Get-Next/Get-Bulk-Vorgang für die Routing- oder ARP-Tabellen mit Informationen aus der Forwarding Information Base (FIB). Die FIB wird in lexikografischer Reihenfolge gespeichert und es ist keine Sortierung erforderlich. Wenn CEF nicht aktiviert ist, antwortet der SNMP-Agent mit Informationen aus der Routing Information Base (RIB), die in eine lexikografische Reihenfolge sortiert werden muss, die eine hohe CPU verursacht.

Folgen Sie dem unten angezeigten Link zur Bug-ID, um detaillierte Informationen zu Bugs zu erhalten.

CSCdk54265 (nur registrierte Kunden) - Beim Polling der Routing-Tabelle über SNMP von der Netzwerkmanagement-Station wird ein CPU-HOG generiert.

Polling bestimmter MIBs

Netzwerkverwaltungsanwendungen rufen häufig mithilfe von SNMP Informationen von Geräten ab. Ein Beispiel wäre Resource Manager Essentials (RME), eine Anwendung innerhalb der CiscoWorks 2000-Produktsuite. RME kann die in der CISCO-FLASH-MIB definierten Flash-Informationen abrufen. Wenn das Gerät über einen ATA-Flash-Datenträger verfügt, kann dies dazu führen, dass die CPU-Auslastung sprunghaft ansteigt.

Folgen Sie dem unten angezeigten Link zur Bug-ID, um detaillierte Informationen zu Bugs zu erhalten.

CSCdt97325 (nur registrierte Kunden)

Um die Problemumgehung zu überprüfen und anzuwenden, gehen Sie wie folgt vor:

1. Überprüfen Sie, ob das Gerät über eine ATA-Flash-Karte in einem der Steckplätze verfügt:

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#

Wenn Sie nicht sicher sind oder keine Ausgabe für den Befehl show diskX erhalten, führen Sie den Befehl show tech aus und suchen Sie nach der Festplatte.

2. Wenn Sie wissen, dass Sie eine ATA-Flash-Festplatte haben, können Sie die folgende Problemumgehung anwenden, um die SNMP-Abfragen auf der FLASH-MIB zu verhindern:

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#

Hinweis: Wählen Sie in jeder Zeile dasselbe Wort für das <any_word> in der obigen Konfiguration aus.

Vorsicht: Im obigen Beispiel ist snmpUsmMIB ausgeschlossen, snmpVacmMIB ist ausgeschlossen, und snmpCommunityMIB ist ausgeschlossen. Zusammen können diese Objekte verwendet werden, um Informationen über konfigurierte Benutzer und Community-Strings abzurufen, um Administratorzugriff auf das Gerät zu erhalten. Es wird empfohlen, diese Objekte auf allen Geräten, auf die öffentliche Benutzer zugreifen können, von der Ansicht auszuschließen.

3. Stellen Sie sicher, dass sie korrekt implementiert ist:

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

Hinweis: <any_word>, <write_community_string> und <read_community_string> sind die in der Konfiguration enthaltenen Elemente.

Vorsicht: Im obigen Beispiel ist snmpUsmMIB ausgeschlossen, snmpVacmMIB ist ausgeschlossen, und snmpCommunityMIB ist ausgeschlossen. Zusammen können diese Objekte verwendet werden, um Informationen über konfigurierte Benutzer und Community-Strings abzurufen, um Administratorzugriff auf das Gerät zu erhalten. Es wird empfohlen, diese Objekte auf allen Geräten, auf die öffentliche Benutzer zugreifen können, von der Ansicht auszuschließen.

4. Geben Sie den Befehl show proc cpu ein, um zu überprüfen, ob die CPU-Util für SNMP ausfällt, und suchen Sie nach dem IP_SNMP-Prozess.

Hinweis: Der Fehler CSCdt97325 wurde auch in einigen späteren Cisco IOS-Versionen behoben. Weitere Informationen finden Sie im Fehler.

Weitere Fehler im Zusammenhang mit Polling-MIBs:

Folgen Sie den unten stehenden Links zu Cisco Bug ID (Bug-ID), um detaillierte Informationen zu Bugs zu erhalten.

- CSCdm67427 (nur registrierte Kunden) - Beim Polling der ATM-Subschnittstelle wird die CPU-HOG-Nachricht vom Gerät zurückgegeben.

- CSCdu63734 (nur registrierte Kunden) - Flash MIB führt zu viele Anrufe an IFF durch.

- CSCdu48652 (nur registrierte Kunden) - Die Flash-MIB-Abfrage stürzt Sprachanrufe auf dem 7200 ab.

- CSCds53368 (nur registrierte Kunden) - Probleme mit dem ciscoFlashPartitionEntry-Objekt in CISCO-FLASH-MIB.

- CSCdu55091 (nur registrierte Kunden) - 2500 snmpgetnext für bestimmte SNMP-Objekte führt zur Rückverfolgung.

- CSCdx54836 (nur registrierte Kunden) - SNMP Polling auf Flash MIB verursacht eine hohe CPU-Auslastung auf dem Switch.

Zugehörige Informationen

- Fehlerbehebung bei hoher CPU-Auslastung auf Cisco Routern

- Technischer Support und Dokumentation - Cisco Systems