Inhalt

Einleitung

Voraussetzungen

Anforderungen

Verwendete Komponenten

Konventionen

Was ist ein Fehler bei der Speicherzuweisung?

Symptome

Fehler "EXEC konnte nicht erstellt werden" oder wenn die Konsole nicht reagiert

Verständnis der Fehlermeldung

Mögliche Ursachen

Im Prozessorspeicher ("Pool-Prozessor" auf allen Plattformen)

Im Paketspeicher ("I/O" oder "Processor" auf High-End-Routern, "PCI" auf der Serie 7200 und VIP-Karten)

Fehlerbehebung

Sicherheitsbezogenes Problem

Die Speichergröße unterstützt das Cisco IOS Software-Image nicht.

Speicherverlust-Bug

Der *Dead*-Prozess

Große Menge an Arbeitsspeicher für normale oder ungewöhnliche Prozesse

Speicherfragmentierungsproblem oder Fehler

Speicherzuweisungsfehler bei Prozess = Unterbrechungsstufe

Speichererschöpfung durch Herunterladen nach Benutzer-Zugriffslisten

Bekannte Probleme

Bekanntes 70x0-Problem beim Laden großer Cisco IOS-Software aus Flash oder Netboot

IP-Eingang und CiscoWorks UT Discovery

Nicht genügend gemeinsam genutzter Speicher für die Schnittstellen

Buffer-Leak

Geringer Arbeitsspeicher auf dem Router

IPFAST-4-RADIXDELETE: Fehler beim Löschen des Präfixeintrags [IP_address]/[dec] (erwartet [hex], erhalten [hex])

%SYS-2-CHUNKEXPANDFAIL: Der Chunk-Pool für die TACL-Bitmap konnte nicht erweitert werden. Kein Speicher verfügbar

Zusammenfassung

Fehler bei der Speicherzuweisung für den Pool "Prozessor"

Pool-Fehler bei der E/A-Speicherzuweisung ("Prozessor" bei High-End-Routern, "PCI" bei der Serie 7200)

Zugehörige Informationen

Einleitung

In diesem Dokument werden die Symptome und mögliche Ursachen eines Fehlers bei der Speicherzuweisung (MALLOCFAIL) beschrieben und es wird im Detail beschrieben, wie diese Probleme behoben werden können.

Voraussetzungen

Anforderungen

Es gibt keine spezifischen Anforderungen für dieses Dokument.

Verwendete Komponenten

Die Informationen in diesem Dokument basierend auf folgenden Software- und Hardware-Versionen:

- Alle Cisco IOS®-Softwareversionen

- Alle Cisco Router

Hinweis: Dieses Dokument gilt nicht für Cisco Catalyst Switches, die CatOS- oder MGX-Plattformen verwenden.

Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die möglichen Auswirkungen aller Befehle verstehen.

Konventionen

Weitere Informationen zu Dokumentkonventionen finden Sie unter Cisco Technical Tips Conventions (Technische Tipps von Cisco zu Konventionen).

Was ist ein Fehler bei der Speicherzuweisung?

Speicherzuordnungsfehler bedeutet entweder:

- Der Router hat den gesamten verfügbaren Speicher (vorübergehend oder dauerhaft) genutzt, oder

- Der Speicher ist in so kleine Teile fragmentiert, dass der Router keinen verwendbaren verfügbaren Block finden kann. Dies kann mit dem Prozessorspeicher (der vom Cisco Internet Operating System [Cisco IOS] verwendet wird) oder mit dem Paketspeicher (der von eingehenden und ausgehenden Paketen verwendet wird) geschehen.

Symptome

Symptome eines Fehlers bei der Speicherzuweisung sind u. a.:

- Die Konsolen- oder Protokollmeldung: "%SYS-2-MALLOCFAIL: Fehler bei der Speicherzuweisung von 1028 Bytes aus 0x6015EC84, Pool Processor, alignment 0"

- Abgelehnte Telnet-Sitzungen

- Der Befehl show processor memory wird unabhängig von dem Befehl angezeigt, den Sie auf einer Konsole eingeben

- Keine Ausgabe von einigen show-Befehlen

- Meldungen "Nicht genügend Arbeitsspeicher"

- Die Konsolenmeldung "EXEC konnte nicht erstellt werden - kein Speicher oder zu viele Prozesse"

- Router hängt, keine Konsolenantwort

Fehler "EXEC konnte nicht erstellt werden" oder wenn die Konsole nicht reagiert

Wenn ein Router nicht über genügend Arbeitsspeicher verfügt, ist es in einigen Fällen nicht möglich, eine Telnet-Verbindung zum Router herzustellen. An diesem Punkt ist es wichtig, auf den Konsolenport zuzugreifen, um Daten für die Fehlerbehebung zu erfassen. Wenn Sie eine Verbindung zum Konsolenport herstellen, sehen Sie Folgendes:

%% Unable to create EXEC - no memory or too many processes

Wenn die vorherige Meldung angezeigt wird, ist nicht einmal genügend Arbeitsspeicher verfügbar, um eine Konsolenverbindung zu ermöglichen. Es gibt Schritte, die Sie durchführen können, um die Datenerfassung über die Konsole zu ermöglichen. Wenn Sie dem Router helfen, Speicher freizugeben, kann die Konsole reagieren, und Sie können dann die erforderlichen Daten vom Router zur Fehlerbehebung erfassen.

Hinweis: Wenn Border Gateway Protocol (BGP) auf dem Router konfiguriert ist, können Sie unter Erzielen eines optimalen Routings und Reduzieren des BGP-Speicherverbrauchs den mit diesem Prozess verbundenen Speicherverbrauch lesen.

Führen Sie die folgenden Schritte aus, um Daten zu erfassen, wenn sich der Konsolenport unter sehr niedrigen Speicherbedingungen befindet:

1. Trennen Sie die LAN- und WAN-Kabel von den Schnittstellen des Routers. Dies kann dazu führen, dass der Router keine Pakete mehr weiterleitet.

2. Überprüfen Sie die Konsole erneut. Sind Sie in der Lage, eine Antwort zu erhalten und Befehle auszuführen? Nach einigen Augenblicken muss genügend Arbeitsspeicher verfügbar sein, damit die Konsole reagieren kann.

3. Erfassen Sie die erforderlichen Informationen im privilegierten EXEC-Modus (Router-Nr.). Sie sollten mindestens die vollständige Ausgabe der folgenden Befehle sammeln: show memory allocations-process totals (oder show memory summary, wenn show memory allocations-process totals nicht verfügbar ist), show logging und, wenn möglich, show technical-support.

4. Nachdem Sie die erforderlichen Daten gesammelt haben, schließen Sie alle LAN- und WAN-Verbindungen wieder an, und überwachen Sie weiterhin die Speichernutzung des Routers.

Verständnis der Fehlermeldung

Wenn Sie den Befehl show logging ausführen, müssen Sie Folgendes sehen:

%SYS-2-MALLOCFAIL: Memory allocation of [X] bytes failed from

0x6015EC84, pool [Pool], alignment 0 -Process=

"[Process]" ipl= 6, pid=5

[X] = die Anzahl der Bytes, die der Router zuteilen wollte, aber nicht genügend freien Speicher finden konnte

[Pool] gibt an, ob der Prozessorspeicher ('Pool-Prozessor') oder der Paketspeicher ('Pool-I/O') betroffen ist. High-End-Router (Serie 7000, 7500) haben ihre Puffer im DRAM (Dynamic Random Access Memory), sodass ein Mangel an Paketspeicher als "Pool-Prozessor" gemeldet werden kann. Karten der Serie 7200 und VIP-Karten (Versatile Interface Processor) können auch Fehler in Pool-Protokollsteuerungsinformationen ("Pool PCI") für den Paketspeicher melden.

[Prozess] ist der Prozess, der durch den Mangel an Speicher beeinträchtigt wurde.

Mögliche Ursachen

Im Prozessorspeicher ("Pool-Prozessor" auf allen Plattformen)

Die Speichergröße unterstützt das Cisco IOS Software-Image nicht.

Speicherverlust-Bug

Große Menge an Arbeitsspeicher für normale oder ungewöhnliche Prozesse

Speicherfragmentierungsproblem oder Fehler

Fehler bei der Speicherzuweisung am Prozess = <Unterbrechungsstufe>

Bekannte Probleme

Bekanntes 70x0-Problem beim Laden großer Cisco IOS-Software aus Flash oder Netboot

IP-Eingang und CiscoWorks UT Discovery

Im Paketspeicher ("I/O" oder "Processor" auf High-End-Routern, "PCI" auf der Serie 7200 und VIP-Karten)

Nicht genügend gemeinsam genutzter Speicher für die Schnittstellen

Buffer-Leak

Router mit wenig schnellem Speicher

Fehlerbehebung

Sicherheitsbezogenes Problem

Häufig werden MALLOCFAIL-Fehler durch ein Sicherheitsproblem verursacht, z. B. durch einen Wurm oder einen Virus, der in Ihrem Netzwerk operiert. Dies ist besonders wahrscheinlich der Grund, wenn in letzter Zeit keine Änderungen am Netzwerk vorgenommen wurden, z. B. ein Cisco IOS-Upgrade für den Router. In der Regel kann eine Konfigurationsänderung, z. B. das Hinzufügen zusätzlicher Leitungen zu den Zugriffslisten, die Auswirkungen dieses Problems mildern. Die Seite Cisco Product Security Advisories and Notices enthält Informationen zur Erkennung der wahrscheinlichsten Ursachen und der am häufigsten auftretenden Problemumgehungen.

Weitere Informationen finden Sie unter:

- 100 Fragen und Antworten zu Bedrohungen aus dem Internet

- Cisco Bedrohungsschutz

Die Speichergröße unterstützt das Cisco IOS Software-Image nicht.

Überprüfen Sie zunächst die Download Software Area auf die minimale Speichergröße für das Feature-Set und die Version, die Sie ausführen. Vergewissern Sie sich, dass es ausreichend ist. Die Speicheranforderungen unter Cisco.com entsprechen den empfohlenen Mindestgrößen für das ordnungsgemäße Funktionieren des Routers in den meisten Unternehmensnetzwerken. Die tatsächlichen Speicheranforderungen variieren je nach Protokollen, Routing-Tabellen und Datenverkehrsmustern.

Hinweis: Nur registrierte Cisco Benutzer haben Zugriff auf interne Informationen und Tools von Cisco.

Speicherverlust-Bug

Wenn Sie den Befehl show memory allocations-process totals (Gesamtsummen anzeigen), den Befehl show memory summary oder den Befehl show technical-support (im privilegierten Modus) von Ihrem Cisco Gerät ausgegeben haben, können Sie mit dem Output Interpreter mögliche Probleme und Korrekturen anzeigen.

Hinweis: Nur registrierte Cisco Benutzer haben Zugriff auf interne Informationen und Tools von Cisco.

Ein Speicherleck tritt auf, wenn ein Prozess Speicher anfordert oder zuweist und dann vergisst, den Speicher freizugeben (freizugeben), wenn er mit dieser Aufgabe fertig ist. Dadurch wird der Speicherblock reserviert, bis der Router neu geladen wird. Im Laufe der Zeit werden immer mehr Speicherblöcke durch diesen Prozess zugewiesen, bis kein freier Speicher verfügbar ist. Je nach Schweregrad der Situation mit zu wenig Speicher können Sie den Router nur neu laden, um ihn wieder betriebsbereit zu machen.

Dies ist ein Bug des Cisco Internet Operating System (Cisco IOS). Um sie loszuwerden, sollten Sie ein Upgrade auf die neueste Version Ihres Releasezugs durchführen. Wenn Sie beispielsweise Cisco IOS Software 11.2(14) ausführen, sollten Sie ein Upgrade auf das neueste 11.2(x)-Image durchführen.

Wenn das Problem dadurch nicht behoben wird, oder wenn Sie den Router nicht aktualisieren möchten, geben Sie den Befehl show processes memory in regelmäßigen Abständen über einen bestimmten Zeitraum ein (z. B. alle paar Stunden oder Tage, je nachdem, ob Sie ein schnelles oder langsames Leck haben). Überprüfen Sie, ob der freie Speicher weiter abnimmt und nie zurückgegeben wird. Die Rate, mit der freier Speicher verschwindet, hängt davon ab, wie oft das Ereignis auftritt, das zu dem Leck führt. Da der Speicher nie freigegeben wird, können Sie den Prozess verfolgen, der den Speicher verwendet, wenn Sie Speicherabbilder im Laufe der Zeit erstellen. Denken Sie daran, dass verschiedene Prozesse Speicher nach Bedarf zuweisen und freigeben, sodass Sie Unterschiede sehen können, aber wenn das Leck andauert, müssen Sie einen Prozess sehen, der ständig mehr Speicher verbraucht.

Hinweis: Es ist normal, dass bei einigen Prozessen, wie Border Gateway Protocol (BGP) oder Open Shortest Path First (OSPF)-Router, mehr als ein Megabyte Arbeitsspeicher verwendet werden. Dies bedeutet nicht, dass sie undicht sind.

Um den Prozess zu identifizieren, der mehr Arbeitsspeicher belegt, vergleichen Sie die Spalte "Halten" des Befehls "Arbeitsspeicher anzeigen" über das Zeitintervall. Manchmal kann man sehr deutlich sehen, dass ein Prozess mehrere Megabyte Speicher hält. Manchmal braucht es mehrere Schnappschüsse, um den Schuldigen zu finden. Wenn ein großer Teil des Speichers verloren gegangen ist, rufen Sie den Befehl show memory allocations-process totals oder show memory summary zur weiteren Fehlerbehebung auf. Wenden Sie sich dann an das Cisco Technical Assistance Center (TAC), und stellen Sie die erfassten Informationen zusammen mit einer Zusammenfassung des technischen Supports des Routers bereit.

Mit dem Output Interpreter Tool können Sie eine Analyse des Befehls show memory allocations-process totals oder show memory summary output empfangen.

Hinweis: Nur registrierte Cisco Benutzer haben Zugriff auf interne Informationen und Tools von Cisco.

Die Tabelle enthält die ersten drei Zeilen des Befehls show memory summary:

Router>show memory summary

Head       Total (b)   Used (b)  Free (b)   Lowest (b)  Largest (b)

Processor   60AB4ED0   5550384     2082996   3467388    3464996     3454608

I/O         40000000   16777216    1937280   14839936   14839936    14838908

Gesamt = Der gesamte verfügbare Arbeitsspeicher, nachdem das Systemabbild geladen und seine Datenstrukturen erstellt hat.

Verwendet = die aktuell zugewiesene Speicherkapazität.

Frei = die aktuell verfügbare Speicherkapazität.

Niedrigster Wert = der niedrigste vom Router seit dem letzten Start aufgezeichnete freie Speicher.

Größter = der größte freie Speicherblock, der derzeit verfügbar ist.

Der Befehl show memory allocation-process totals enthält die gleichen Informationen wie die ersten drei Zeilen des Befehls show memory summary.

Folgendes können Sie aus der Ausgabe des Befehls show processes memory lernen:

Router>show processes memory

Total: 3149760, Used: 2334300, Free: 815460

PID   TTY   Allocated    Freed      Holding    Getbufs    Retbufs   Process

0     0     226548       1252       1804376    0          0         *Initialization*

0     0     320          5422288    320        0          0         *Scheduler*

0     0     5663692      2173356    0          1856100    0         *Dead*

1     0     264          264        3784       0          0         Load Meter

2     2     5700         5372       13124      0          0         Virtual Exec

3     0     0            0          6784       0          0         Check heaps

4     0     96           0          6880       0          0         Pool Manager

5     0     264          264        6784       0          0         Timers

6     0     2028         672        8812       0          0         ARP Input

7     0     96           0          6880       0          0         SERIAL A' detect

8     0     504          264        7024       0          0         ATM ILMI Input

9     0     0            0          6784       0          0         ILMI Process

10    0     136          0          6920       0          0         M32_runts pring

11    0     136          0          6920       0          0         Call drop procs

12    0     340          340        12784      0          0         ATMSIG Timer

13    0     445664       442936     13904      0          0         IP Input

14    0     2365804      2357152    17992      0          0         CDP Protocol

15    0     528          264        7048       0          0         MOP Protocols

16    0     188          0          9972       0          0         IP Background

17    0     0            1608       6784       0          0         TCP Timer

18    0     5852116      0          14236      0          0         TCP Protocols

Zugewiesen = Die Gesamtzahl der Bytes, die vom Prozess seit dem Router-Start zugewiesen wurden.

Freed = Die Gesamtzahl der Bytes, die von diesem Prozess freigegeben wurden.

Holding = Die Gesamtzahl der Bytes, die derzeit von diesem Prozess gespeichert werden. Dies ist die wichtigste Spalte für die Fehlerbehebung, da sie die tatsächliche Menge an Speicher anzeigt, die diesem Prozess zugewiesen wurde. Holding entspricht nicht notwendigerweise Allocations minus Freed (Zugewiesen minus Freigegeben), da einige Prozesse einen Speicherblock zuweisen, der später von einem anderen Prozess an den freien Pool zurückgegeben wird.

Der *Dead*-Prozess

Der *Dead* Prozess ist kein echter Prozess. Dort wird der im Rahmen eines anderen beendeten Prozesses zugewiesene Speicher berücksichtigt. Der diesem Prozess zugewiesene Speicher wird vom Kernel freigegeben und bei Bedarf vom Router selbst an den Speicherpool zurückgegeben. So behandelt Cisco IOS den Arbeitsspeicher. Ein Speicherblock gilt als ausgefallen, wenn der Prozess, der den Block erstellt hat, beendet wird (nicht mehr läuft). Jeder Block verfolgt die Adresse und PID des Prozesses, der ihn erstellt hat. Wenn der Prozess, den der Scheduler aus einem Block pid ermittelt, während der periodischen Speicherabfrage nicht mit dem Prozess übereinstimmt, an den sich der Block erinnert, wird der Block als tot markiert.

Daher wurde Speicher, der als zum Prozess *Dead* gehörend markiert wurde, unter der Kontrolle eines Prozesses zugewiesen, der nicht mehr ausgeführt wird. Es ist normal, einen beträchtlichen Teil des Speichers in einem solchen Zustand zu haben. Hier ein Beispiel:

Der Arbeitsspeicher wird zugewiesen, wenn die Network Address Translation (NAT) während einer Telnet-Sitzung konfiguriert wird. Dieser Speicher wird im Rahmen des Telnet-Prozesses ("Virtual Exec") berücksichtigt. Nachdem dieser Vorgang beendet wurde, wird der Speicher für die NAT-Konfiguration weiterhin verwendet. Dies wird mit dem *toten* Prozess angezeigt.

Sie können sehen, unter welchem Kontext der Speicher dem show memory dead unter der Spalte "Was":

Router#show memory dead

Head   Total(b)    Used(b)    Free(b)  Lowest(b) Largest(b)

I/O    600000    2097152     461024    1636128    1635224    1635960

Processor memory

Address  Bytes Prev.    Next     Ref  PrevF   NextF   Alloc PC  What

1D8310       60 1D82C8   1D8378     1                  3281FFE   Router Init

2CA964       36 2CA914   2CA9B4     1                  3281FFE   Router Init

2CAA04      112 2CA9B4   2CAAA0     1                  3A42144   OSPF Stub LSA RBTree

2CAAA0       68 2CAA04   2CAB10     1                  3A420D4   Router Init

2ED714       52 2ED668   2ED774     1                  3381C84   Router Init

2F12AC       44 2F124C   2F1304     1                  3A50234   Router Init

2F1304       24 2F12AC   2F1348     1                  3A420D4   Router Init

2F1348       68 2F1304   2F13B8     1                  3381C84   Router Init

300C28      340 300A14   300DA8     1                  3381B42   Router Init

Wenn ein Speicherleck erkannt wird und der *Dead*-Prozess derjenige zu sein scheint, der den Speicher belegt, schließen Sie Folgendes ein: show memory dead in den Informationen enthalten, die dem Cisco TAC bereitgestellt wurden.

Große Menge an Arbeitsspeicher für normale oder ungewöhnliche Prozesse

Dies ist eine der schwierigsten Ursachen zu überprüfen. Das Problem ist gekennzeichnet durch einen großen freien Speicher, aber einen kleinen Wert in der Spalte "Niedrigste". In diesem Fall führt ein normales oder abnormales Ereignis (z. B. eine große Routing-Instabilität) dazu, dass der Router eine ungewöhnlich große Menge an Prozessorspeicher für einen kurzen Zeitraum verwendet, während dem der Speicher ausgelaufen ist. Während dieses Zeitraums meldet der Router MALLOCFAIL. Es kann vorkommen, dass kurz danach der Speicher freigegeben wird und das Problem verschwindet (z. B. das Netzwerk stabilisiert sich). Der Speichermangel kann auch auf eine Kombination von Faktoren zurückzuführen sein, z. B.:

- Ein Speicherleck, das eine große Menge an Speicher belegt hat, und dann eine Netzwerkinstabilität drückt den freien Speicher auf Null

- Der Router verfügt nicht über ausreichend Arbeitsspeicher, um damit zu beginnen. Das Problem wird jedoch nur während eines seltenen Netzwerkereignisses erkannt.

Wenn der Router nicht neu gestartet wurde, geben Sie den show memory allocating-process totals (oder show memory summary wenn show memory allocating-process totals  nicht verfügbar ist), und sehen Sie sich die ersten drei Zeilen an. Die Protokollmeldungen können Hinweise darauf geben, welcher Prozess viel Speicher beansprucht hat:

Wenn die Speicherauslastung aufgrund eines Problems groß ist:

- Normalerweise besteht die Lösung darin, mehr Speicher zu installieren.

- seltenen oder ungewöhnlichen Ereignisses, beheben Sie das entsprechende Problem. Sie können dann entscheiden, zusätzliche Speicher für zukünftige "Versicherung" zu kaufen.

Speicherfragmentierungsproblem oder Fehler

Diese Situation bedeutet, dass ein Prozess eine große Menge an Prozessorspeicher belegt hat und dann den Großteil oder den gesamten Speicher freigegeben hat. Außerdem bleiben Fragmente von Speicher erhalten, die entweder von diesem Prozess oder von anderen Prozessen zugewiesen werden, die während des gesamten Problems Speicher zugewiesen haben. Wenn dasselbe Ereignis mehrmals auftritt, kann der Speicher in sehr kleine Blöcke fragmentiert werden, sodass alle Prozesse, die einen größeren Speicherblock benötigen, nicht die erforderliche Speichermenge erhalten können. Dies kann sich auf den Router-Betrieb auswirken, da Sie keine Verbindung zum Router herstellen können und eine Aufforderung erhalten, wenn der Speicher stark fragmentiert ist.

Dieses Problem wird durch einen niedrigen Wert in der "Größten" Spalte (unter 20.000 Bytes) der show memory -Befehl, aber einen ausreichenden Wert in der Spalte "Freed" (1MB oder mehr), oder eine andere große Disparität zwischen den beiden Spalten. Dies kann der Fall sein, wenn der Arbeitsspeicher des Routers sehr knapp wird, da im Cisco IOS keine Fragmentierungsroutine vorhanden ist.

Wenn Sie eine Speicherfragmentierung vermuten, fahren Sie einige Schnittstellen herunter. Dadurch können die fragmentierten Blöcke freigegeben werden. Wenn das funktioniert, verhält sich der Speicher normal, und Sie müssen nur noch mehr Speicher hinzufügen. Wenn Sie Schnittstellen herunterfahren hilft es nicht, kann es ein Fehler sein. Die beste Vorgehensweise besteht darin, sich mit den von Ihnen erfassten Informationen an Ihren Cisco Support-Mitarbeiter zu wenden.

Speicherzuweisungsfehler bei Prozess = Unterbrechungsstufe

Diese Situation kann durch den Prozess in der Fehlermeldung erkannt werden. Wenn der Prozess wie im nächsten Beispiel als <Interrupt-Level> aufgeführt wird, wird der Speicherzuweisungsfehler durch ein Softwareproblem verursacht.

"%SYS-2-MALLOCFAIL: Memory allocation of 68 bytes failed from 0x604CEF48,

pool Processor, alignment 0-Process=

, ipl= 3"

Dies ist ein Bug des Cisco Internet Operating System (Cisco IOS). Sie können das Bug Toolkit verwenden, um nach einer passenden Bug-ID für dieses Problem zu suchen. Sobald der Softwarefehler erkannt wurde, aktualisieren Sie auf eine Cisco IOS-Softwareversion, die das Problem behebt.

Hinweis: Nur registrierte Cisco Benutzer haben Zugriff auf interne Informationen und Tools von Cisco.

Speichererschöpfung durch Herunterladen nach Benutzer-Zugriffslisten

Zugriffslisten können viel Speicher verbrauchen, wenn sie auf Benutzerbasis verwendet werden. Die Zugriffslisten sind zu groß, um als Mini-Zugriffskontrolllisten (ACLs) klassifiziert zu werden, und werden jetzt als Turbo-ACLs kompiliert. Jedes Mal, wenn dies auftritt, muss der TACL-Prozess aktiviert und die neue ACL verarbeitet werden. Dies kann zu Datenverkehr führen, der je nach Kompilierungszeit und verfügbarer Prozesszeit zugelassen oder abgelehnt wird.

Kompilierte ACLs müssen an XCM gesendet werden. Wenn nur begrenzter Speicherplatz verfügbar ist und der Speicher davon ausgeführt wird, werden die Konsolenmeldungen angezeigt, und die Speicherdefragmentierung wird gestartet.

Problemumgehung:

- Verwendung prägnanter ACLs, weniger Application Control Engines (ACEs), die als Mini-ACLs kompiliert werden können und sowohl den Speicherverbrauch als auch die Prozessleistung für die Kompilierung reduzieren können.

- Verwendung vordefinierter ACLs auf dem Router, auf die über das RADIUS-Attribut filterID verwiesen wird.

Bekannte Probleme

Bekanntes 70x0-Problem beim Laden großer Cisco IOS-Software aus Flash oder Netboot

Wenn ein 7000 Route Processor (RP) ein Image von Flash bootet, lädt er zuerst das ROM-Image und dann das Flash-Image in den Speicher. Der alte RP verfügt nur über 16 MB Arbeitsspeicher, und die Enterprise-Versionen der Cisco IOS Software, die nach Version 11.0 veröffentlicht wurden, sind nach dem Dekomprimieren größer als 8 MB. Wenn Sie das Image vom ROM und dann von Flash laden, kann dem 7000 RP der Speicher ausgehen, oder der Speicher kann während des Bootvorgangs fragmentiert werden, sodass der Router speicherbezogene Fehlermeldungen hat.

Die Lösung besteht darin, Fast Boot aus dem Konfigurationsregister zu aktivieren, sodass der RP nur eine minimale Teilmenge des Cisco IOS Software-Images im ROM lädt und dann die gesamte Cisco IOS Software aus Flash lädt. Um Fast Boot zu aktivieren, setzen Sie das Konfigurationsregister auf 0x2112. Dies kann auch den Bootvorgang beschleunigen.

IP-Eingang und CiscoWorks UT Discovery

Mit der UT Discovery-Funktion von CiscoWorks kann der freie Speicher auf einigen Ihrer Router sehr klein werden. Der Befehl show proc memory kann eine hohe Speicherkapazität anzeigen, die durch den "IP-Input"-Prozess aufrecht erhalten wird. Dies ist ein besonderer Fall des Problems der großen Speichermenge, die für normale oder ungewöhnliche Prozesse verwendet wird, bei dem "IP-Eingabe"-Prozess, was auch zu einem Problem mit der Speicherfragmentierung führen kann, wenn der Speicher aufgrund des niedrigen Speicherzustands fragmentiert wird.

Die Funktion "UT Discovery" veranlasst die Netzwerkmanagement-Station, einen Ping-Sweep für alle IPs in jedem erkannten Subnetz zu senden. Die Speicherprobleme werden durch die größere Größe des IP-Fast-Switching-Caches auf dem Router verursacht, da für jedes neue Ziel neue Cache-Einträge erstellt werden. Da die für die Einträge im Cache verwendete Maske davon abhängt, wie sie subnetziert ist, führt das Vorhandensein einer Adresse mit einer 32-Bit-Maske (z. B. einer Loopback-Adresse) in einem Hauptnetzwerk dazu, dass alle Einträge für dieses Netzwerk eine 32-Bit-Maske verwenden. Dies führt zur Erstellung einer großen Anzahl von Cache-Einträgen und zur Nutzung einer großen Speichermenge.

Die beste Lösung ist die Deaktivierung der UT-Erkennung. Gehen Sie dazu folgendermaßen vor:

1. Rufen Sie C:\Program Files\CSCOpx\etc\cwsi\ANIServer.properties auf.

2. Fügen Sie "UTPingSweep=0" hinzu.

3. Starten Sie ANI neu.

Dies kann dazu führen, dass die Tabelle für die Benutzernachverfolgung einige Endserver verpasst oder veraltet ist (dies kann bei einer anderen Cisco Anwendung namens User Registration Tool, die auf UT basiert, ein Problem sein), hat jedoch keine Auswirkungen auf die Campus-Erkennung, die nur SNMP-Datenverkehr verwendet. CEF-Switching kann diese Situation ebenfalls verbessern (mit CEF wird der IP-Cache aus der Routing-Tabelle beim Start erstellt). Weitere Informationen zu CEF und anderen verfügbaren Switching-Pfaden finden Sie unter So wählen Sie den besten Router-Switching-Pfad für Ihr Netzwerk.

Es gibt viele andere Anwendungen, die zu ähnlich niedrigen Speicherkapazitäten führen können. In den meisten Fällen liegt die Ursache des Problems nicht beim Router, sondern bei der Anwendung selbst. Normalerweise müssen Sie in der Lage sein, diese Paketstürme zu verhindern, indem Sie die Konfiguration der Anwendung überprüfen.

Nicht genügend gemeinsam genutzter Speicher für die Schnittstellen

Einige Router (z. B. der Serien 2600, 3600 und 4000) benötigen einen minimalen E/A-Arbeitsspeicher, um bestimmte Schnittstellenprozessoren zu unterstützen.

Wenn der gemeinsam genutzte Arbeitsspeicher des Routers auch nach einem Neuladen zur Neige geht, können Sie die Schnittstellen physisch entfernen, um dieses Problem zu beheben.

Auf Routern der Serie 3600 den globalen Konfigurationsbefehl  memory-size iomem i/o-memory-percentage kann verwendet werden, um den prozentualen Anteil von DRAM für den E/A-Speicher und den Prozessorspeicher neu zuzuweisen. Die zulässigen Werte für den prozentualen E/A-Speicher sind 10, 15, 20, 25 (Standard), 30, 40 und 50 und 50. Für den E/A-Speicher sind mindestens 4 MB Arbeitsspeicher erforderlich.

Informationen zur Behebung dieses Problems finden Sie unter:

- Anforderungen an gemeinsamen Speicher für die 4000/4500/4700-Router

Buffer-Leak

Wenn Sie die Ausgabe eines  show buffers  Befehl oder  show technical-support  -Befehls (im Aktivierungsmodus) auf Ihrem Cisco Gerät aus, können Sie Output Interpreter verwenden, um potenzielle Probleme und Korrekturen anzuzeigen.

Hinweis: Nur registrierte Cisco Benutzer haben Zugriff auf interne Informationen und Tools von Cisco.

Wenn ein Prozess mit einem Puffer abgeschlossen ist, muss der Puffer freigegeben werden. Ein Pufferleck tritt auf, wenn der Code vergisst, einen Puffer zu verarbeiten, oder vergisst, diesen freizugeben, nachdem er mit dem Paket fertig ist. Daher wächst der Pufferpool weiter, da immer mehr Pakete in den Puffern feststecken. Sie können ein Pufferleck mit dem show buffers aus. Einige der Public Buffer-Pools müssen ungewöhnlich groß sein, mit wenigen freien Puffern. Nach einem Neuladen können Sie sehen, dass die Anzahl der freien Puffer nie nahe an die Gesamtzahl der Puffer herankommt.

Mit dem Output Interpreter Tool können Sie eine Analyse der show buffers Ausgabe.

Im Beispiel unten sind die mittleren Puffer betroffen. Die Fehlermeldung show buffers  gibt an, dass fast 8094 Puffer verwendet und nicht freigegeben werden (8122 insgesamt minus 28 freie Puffer):

Public buffer pools: Small buffers, 104 bytes (total 50, permanent 50):

50 in free list (20 min, 150 max allowed)

403134 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

Middle buffers, 600 bytes (total 8122, permanent 200):

28 in free list (10 min, 300 max allowed)

154459 hits, 41422 misses, 574 trims, 8496 created

Big buffers, 1524 bytes (total 50, permanent 50):

50 in free list (5 min, 150 max allowed)

58471 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

VeryBig buffers, 4520 bytes (total 10, permanent 10):

10 in free list (0 min, 100 max allowed)

0 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

Large buffers, 5024 bytes (total 0, permanent 0)

0 in free list (0 min, 10 max allowed)

0 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

Huge buffers, 18024 bytes (total 0, permanent 0):

0 in free list (0 min, 4 max allowed)

0 hits, 0 misses, 0 trims, 0 created

0 failures (0 no memory)

Dies ist ein Fehler der Cisco IOS-Software. Führen Sie ein Upgrade auf die neueste Version Ihres Releasezugs durch, um bekannte Bugs mit Pufferverlust zu beheben (z. B. wenn Sie Cisco IOS Software 11.2(14) verwenden, aktualisieren Sie auf das neueste 11.2(x)-Image. Wenn dies nicht hilfreich ist oder wenn ein Upgrade des Routers nicht möglich ist, geben Sie die folgenden Befehle für den Problempool aus, wenn der Router nicht über genügend Arbeitsspeicher verfügt. Diese Befehle können zusätzliche Informationen über den Inhalt der Puffer anzeigen:

- show buffer old  zeigt zugewiesene Puffer, die älter als eine Minute sind

- show buffer pool   (small - middle - big - verybig - large - huge)    zeigt eine Zusammenfassung der Puffer für den angegebenen Pool.

- show buffer pool (small - middle - big - verybig - large - huge) dump   zeigt ein Hex/ASCII-Dump aller Puffer, die einen bestimmten Pool verwenden.

Weitere Informationen finden Sie unter Fehlerbehebung bei Pufferleaks.

Geringer Arbeitsspeicher auf dem Router

Dieses Problem betrifft nur die Serie 7500. Wenn der Router nicht über ausreichend "schnellen" Arbeitsspeicher verfügt, kann er stattdessen seinen Dynamic RAM (DRAM) verwenden. Es sind keine Maßnahmen erforderlich.

IPFAST-4-RADIXDELETE: Fehler  trying  zum Löschen des Präfixeintrags [IP_address]/[dec] (erwartet [hex], erhalten [hex])

Die Fehlermeldung IPFAST-4-RADIXDELETE: Error try to delete prefix entry [IP_address]/[dec] (voraussichtlich [hex], got [hex]) (Fehler beim Löschen des Präfixeintrags [IP_Adresse]/[dec]) gibt an, dass die Tabelle "Router Fast Switching Cache" im Speicher beschädigt ist. Wenn der Router versucht, die Cache-Tabelle im Rahmen des normalen Prozesses oder der clear ip cache eingegeben wurde, kann das System aufgrund einer Speicherbeschädigung keine Einträge löschen. Wenn der Router einen solchen Eintrag nicht löscht, wird die Meldung IPFAST-4-RADIXDELETE ausgegeben.

Um ein Problem mit dem beschädigten Cache-Speicher einer Tabelle zu beheben, muss der Router neu gestartet werden. Ein Neustart kann die Speicherstrukturen des Systems wieder aufteilen und dem schnellen Cache ermöglichen, beschädigungsfrei wiederherzustellen.

%SYS-2-CHUNKEXPANDFAIL: Der Chunk-Pool für die TACL-Bitmap konnte nicht erweitert werden. Kein Speicher verfügbar

Grund für %SYS-2-CHUNKEXPANDFAIL: Der Blockpool für TACL-Bitmap konnte nicht erweitert werden. Die Fehlermeldung "Kein verfügbarer Speicher" gibt an, dass nicht genügend Prozessorspeicher zum Vergrößern des angegebenen Blockpools verfügbar ist. Es kann durch einen Prozess verursacht werden, der sich ungewöhnlich verhält.

Die Problemumgehung besteht darin, die Ausgabe dieser Befehle (basierend auf der Häufigkeit des Problems) regelmäßig zu erfassen, sodass die Speichernutzung des Routers überwacht werden kann:

- show processes memory sorted

- show memory statistics

- show memory allocating-process totals

Zusammenfassung

Fehler bei der Speicherzuweisung für den Pool "Prozessor"

Gehen Sie wie folgt vor:

1. Überprüfen Sie die Speicheranforderungen für die Version oder den Funktionsumfang der Cisco IOS-Software.

2. Falls möglich, aktualisieren Sie in Ihrem Release Train auf die neueste Version der Cisco IOS-Software.

3. Überprüfen Sie, ob eine große Speichermenge für normale oder ungewöhnliche Prozesse verwendet wird. Fügen Sie bei Bedarf weiteren Speicher hinzu.

4. Überprüfen Sie, ob es sich um ein Leck oder eine Fragmentierung handelt (Pufferleck auf High-End-Routern).

5. Sammeln Sie die relevanten Informationen und wenden Sie sich an das TAC.

Pool-Fehler bei der E/A-Speicherzuweisung ("Prozessor" bei High-End-Routern, "PCI" bei der Serie 7200)

Gehen Sie wie folgt vor:

1. Überprüfen Sie die Anforderungen an den gemeinsam genutzten Speicher (siehe Nicht genügend gemeinsam genutzter Speicher für die Schnittstellen).

2. Falls möglich, aktualisieren Sie in Ihrem Release Train auf die neueste Version der Cisco IOS Software.

3. Bestimmen Sie, welcher Pufferpool betroffen ist, erfassen Sie die relevanten Informationen, und wenden Sie sich an das Cisco TAC.

Zugehörige Informationen

- Fehlerbehebung bei Pufferlecks

- Beheben von Hängen des Routers

- Technischer Support und Downloads von Cisco