In diesem Dokument wird der Selective Packet Discard (SPD)-Mechanismus erläutert und beschrieben, wie er überwacht und angepasst werden kann.
Hinweis: In diesem Dokument wird nicht erläutert, wie Sie eine zunehmende Anzahl von Eingabepausen in der Ausgabe von show interfaces auf einem Cisco Internet Router der Serie 1200 beheben können. Weitere Informationen zu diesem Problem finden Sie unter Fehlerbehebung bei Fehlern von Eingangssignalen auf dem Cisco Internet Router der Serie 12000.
Informationen zu Dokumentkonventionen finden Sie unter Cisco Technical Tips Conventions (Technische Tipps von Cisco zu Konventionen).
Für dieses Dokument bestehen keine besonderen Voraussetzungen.
Die Informationen in diesem Dokument basieren auf den folgenden Software- und Hardwareversionen:
Cisco Router der Serie 7200
Cisco Router der Serie 7500
Cisco Internet Router der Serie 1200
Alle Versionen der Cisco IOS®-Software
Die in diesem Dokument enthaltenen Informationen wurden aus Geräten in einer bestimmten Laborumgebung erstellt. Alle in diesem Dokument verwendeten Geräte haben mit einer leeren (Standard-)Konfiguration begonnen. Wenn Sie in einem Live-Netzwerk arbeiten, stellen Sie sicher, dass Sie die potenziellen Auswirkungen eines Befehls verstehen, bevor Sie es verwenden.
Selective Packet Discard (SPD) ist ein Mechanismus zur Verwaltung der Eingabewarteschlangen auf Prozessebene auf dem Routingprozessor (RP). Ziel des SPD ist es, Routing-Protokoll-Pakete und andere wichtige Layer-2-Keepalives für die Datenverkehrssteuerung in Zeiten von Warteschlangenüberlastungen auf Prozessebene vorrangig zu behandeln.
Bisher wurden auf Plattformen wie dem Cisco 7 x00- und dem CEF 7500-System (nicht Cisco Express Forwarding) zahlreiche Transitpakete vom Routingprozessor weitergeleitet, um den schnellen Switching-Cache aufzufüllen. Folglich musste SPD in diesem Fall die Routing-Protokoll-Pakete über die Transitpakete priorisieren, die dieselbe Warteschlange gemeinsam nutzen.
Derzeit wird auf dem Cisco Internet Router der Serie 1200 und dem CEF 7500 nur Datenverkehr an den Router selbst an die Prozessebene gesendet. In diesem Fall wird SPD verwendet, um Routing-Protokoll-Pakete zu priorisieren, wenn Management-Datenverkehr wie Simple Network Management Protocol (SNMP) vorhanden ist oder wenn ein Denial of Service (DoS)-Angriff zum Senden von Datenverkehr an den RP auftritt.
Wenn eine Linecard bei der Cisco Serie 1200 feststellt, dass ein eingehendes Paket zur Verarbeitung an den RP gesendet werden muss, wird das Paket als Cisco Cells über die Switch-Fabric übertragen und schließlich vom Cisco Cell Segmentation and Reassembly (CSAR) Field Programmable Gate Array (FPGA) empfangen.
Der Zweck besteht darin, den Datenverkehr zwischen der Switch-Fabric und der RP-CPU zu verarbeiten. Hier werden die SPD-Prüfungen durchgeführt. Dies gilt für IP-Pakete, CLNS-Pakete (Connectionless Network Service), Layer-2-Keepalives und ähnliche Pakete, die an den RP gesendet werden. SPD führt zwei Überprüfungen durch und kann ein Paket möglicherweise in einem der beiden Zustände verwerfen:
SPD-Länderprüfung
Prüfung der Eingangswarteschlange
Die IP-Prozesswarteschlange auf dem RP ist in zwei Teile unterteilt: eine allgemeine Paketwarteschlange und eine Prioritätswarteschlange. Pakete, die in die allgemeine Paketwarteschlange gestellt werden, werden der SPD-Zustandsprüfung unterzogen, Pakete, die in die Prioritätswarteschlange gestellt werden, nicht. Pakete, die für die priorisierte Paketwarteschlange qualifiziert sind, sind Pakete mit hoher Priorität, z. B. Pakete mit der IP-Priorität 6 oder 7, die niemals verworfen werden sollten. Die Nicht-Qualifizierer können hier jedoch je nach Länge der allgemeinen Paketwarteschlange in Abhängigkeit vom SPD-Status fallen gelassen werden. Die allgemeine Paketwarteschlange kann sich in drei Zustände befinden, sodass Pakete mit niedriger Priorität unterschiedlich behandelt werden können:
NORMAL: Warteschlangengröße <= min.
RANDOM-DROP: min <= Warteschlangengröße <= max.
VOLLSTÄNDIGER VERLUST: max <= Warteschlangengröße
Im NORMAL-Zustand verwerfen wir nie wohlgeformte und fehlerhafte Pakete.
Im RANDOM-DROP-Zustand verwerfen wir zufällig wohlgeformte Pakete. Wenn der aggressive Modus konfiguriert ist, werden alle fehlerhaften Pakete verworfen. Andernfalls behandeln wir sie als wohlgeformte Pakete.
Hinweis: Diese zufälligen Tropfen werden als SPD-Pinsel bezeichnet. Wenn die Schnittstelle überladen wird, treten meist Flushes auf. Pufferüberläufe führen dazu, dass der Flush-Zähler inkrementiert wird.
Im VOLLSTÄNDIGEN DROP-Status werden alle wohlgeformten und fehlerhaften Pakete verworfen. Diese Mindest- (Standard 73) und Höchstwerte (Standard 74) werden von der kleinsten Warteschlange im Chassis abgeleitet, können aber mit den globalen Befehlen ip spd queue min-threshold und ip spd queue max-threshold überschrieben werden.
SPD kann für zwei verschiedene Modi konfiguriert werden: normal (Standard) und aggressiv. Der einzige Unterschied zwischen beiden besteht darin, wie der Router ungültige IP-Pakete ausgibt (ungültige Prüfsumme, falsche Version, falsche Headerlänge, falsche Paketlänge). Fehlerhafte IP-Pakete werden vom SPD verworfen, wenn wir uns im aggressiven Modus und im Random-Dropdown-Status befinden. Der aggressive Modus kann mit dem Befehl ip spd mode Aggressive konfiguriert werden.
Hinweis: Der aggressive Modus ist auf dem Cisco Internet Router der Serie 12000 nicht implementiert, da fehlerhafte IP-Pakete direkt von der Eingangs-Linecard verworfen werden und diese Pakete nicht auf den Gigabit Route Processor (GRP) beschränkt sind. Daher ist auf dieser speziellen Plattform kein aggressiver Modus erforderlich.
Die Eingangswarteschlange wird pro Hardware-Schnittstelle verwaltet und von allen Subschnittstellen gemeinsam genutzt. Ohne SPD werden alle Pakete verworfen, wenn die Eingabewarteschlange voll ist, wenn das Paket empfangen wird. Die Standardgröße der Eingabewarteschlange beträgt 75 und kann über den Befehl hold-queue [size] in Schnittstellenkonfiguration pro Schnittstelle konfiguriert werden. Die Anzahl der Pakete in der Eingabewarteschlange wird im Feld "Input Queue" im Befehl show interfaces angezeigt.
router#show interfaces pos 3/0 POS3/0 is up, line protocol is up Hardware is Packet over SONET Internet address is 137.40.55.2/24 MTU 4470 bytes, BW 2488000 Kbit, DLY 100 usec, rely 255/255, load 1/255 Encapsulation PPP, crc 32, loopback not set Keepalive not set Scramble disabled LCP Open Open: IPCP, CDPCP, OSICP, TAGCP Last input 00:00:01, output 00:00:00, output hang never Last clearing of "show interface" counters 2w3d Queueing strategy: fifo Output queue 0/40, 0 drops; input queue 0/75, 0 drops 30 second input rate 9000 bits/sec, 0 packets/sec 30 second output rate 0 bits/sec, 0 packets/sec 456292 packets input, 917329913 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants, 0 throttles 0 parity 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort 112046977 packets output, 32078928095 bytes, 0 underruns 0 output errors, 0 applique, 3 interface resets 0 output buffer failures, 0 output buffers swapped out 1 carrier transitions
Hinweis: Wenn die Größe der Eingabewarteschlange auf einer Schnittstelle verringert wird, kann dies zu einer enormen Anzahl von Eingabepausen auf allen anderen Schnittstellen führen. Stellen Sie sicher, dass die Warteschlangengröße für die Eingangswarteschlange mindestens 75 beträgt.
Selbst bei SPD wird das Verhalten normaler IP-Pakete nicht geändert. Routing-Protokoll-Pakete erhalten jedoch eine höhere Priorität, da SPD Routing-Protokoll-Pakete nach dem IP-Rangfolgefeld erkennt. Wenn die IP-Rangfolge also auf 6 festgelegt ist, erhält das Paket Priorität.
SPD priorisiert diese Pakete, indem es der Software ermöglicht, sie in die Warteschlange für Eingaben auf Prozessebene oberhalb des normalen Grenzwerts für die Eingangswarteschlange einzustellen. Die Anzahl der Pakete, die den normalen Grenzwert überschreiten, wird als "spd-Headroom" (spd-Reserven) bezeichnet, der Standardwert ist 100. Dies bedeutet, dass ein Paket mit hoher Priorität nicht verworfen wird, wenn die Größe der Warteschlange mit Eingangswarteschlangen unter 175 (Standardgröße der Eingangswarteschlange + Größe des spd-Headroom) liegt.
Ab der Cisco IOS Software Version 12.0(22)S beträgt die Standardeinstellung für den spd-Headroom für den Cisco Internet Router der Serie 12000 1.000, um größere SP-Netzwerke unterzubringen. Dies liegt daran, dass Border Gateway Protocol (BGP)-Peering mit einer stetig wachsenden Anzahl von Nachbarn eingesetzt wird, um eine stetig wachsende Anzahl von Routen über immer schnellere Schnittstellen anzukündigen. Ein einziges Löschen von BGP kann häufig dazu führen, dass Tausende von Warteschlangen für die Eingabe in einer einzigen Schnittstelle entfernt werden, was Konvergenzzeiten erheblich beeinträchtigen kann.
Der SPD-Headroom kann mithilfe des Befehls spd Headroom konfiguriert werden. Die aktuelle Ebene ist in der Ausgabe des Befehls show spd oder show ip spd zu sehen.
Router#show spd Headroom: 1000, Extended Headroom: 10 Router#show ip spd Current mode: normal Queue min/max thresholds: 73/74, Headroom: 1000, Extended Headroom: 10 IP normal queue: 0, priority queue: 0. SPD special drop mode: none
Hinweis: Die Größe der normalen IP-Warteschlange kann auch mit dem Befehl show ip spd überwacht werden.
Nicht-IP-Pakete, z. B. CLNS ISIS-Pakete (Connectionless Network Service Intermediate System-to-Intermediate System), PPP-Pakete (Point-to-Point Protocol) und HDLC-Keepalives (High-Level Data Link Control), wurden bis vor kurzem als normale Priorität behandelt, da sie Layer 2 anstelle von Layer 3 waren. Darüber hinaus erhielten Interior Gateway Protocols (IGPs), die auf Layer 3 oder höher betrieben wurden, Priorität gegenüber normalen IP-Paketen, erhielten jedoch dieselbe Priorität wie BGP-Pakete. Während der BGP-Konvergenz oder in Zeiten sehr hoher BGP-Aktivität wurden also häufig IGP-Hellos und Keepalives verworfen, was dazu führte, dass IGP-Adjacencies ausfielen.
Da IGP- und Link-Stabilität anfälliger und wichtiger als die BGP-Stabilität sind, erhalten solche Pakete jetzt die höchste Priorität und erhalten erweiterten SPD-Headroom mit dem Standardwert von 10 Paketen. Dies bedeutet, dass diese Pakete nicht verworfen werden, wenn die Größe der Warteschlange für die Eingangs-Haltewarteschlange unter 185 liegt (Standardgröße der Eingangskwarteschlange + Größe des freien Reservats + erweiterten Reserven für die Ersatzteilbereitstellung).
Der erweiterte SPD-Headroom kann mit dem Befehl spd extended [size] konfiguriert werden. Der aktuelle Level ist in der Ausgabe des Befehls show spd oder show ip spd zu sehen.
Router#show ip spd Current mode: normal Queue min/max thresholds: 73/74, Headroom: 100, Extended Headroom: 10 IP normal queue: 0, priority queue: 0. SPD special drop mode: none
Hinweis: Auf dem Cisco Internet Router der Serie 1200 werden HDLC- und PPP-Keepalives zusammen mit CLNS ISIS-Routing-Protokollpaketen als Pakete mit hoher Priorität behandelt und möglicherweise seit Version 12.0(12)S1 in den erweiterten SPD-Headroom aufgenommen. Seit Version 12.0(18)S der Cisco IOS-Software können alle IGP-Pakete auch im erweiterten SPD-Headroom in die Warteschlange gestellt werden.
Die Standardwerte vor Cisco IOS Software Release 12.0(22)S sind:
Größe der Eingabewarteschlange = 75
SPD-Headroom-Größe = 100
Größere Belegschaft = 10
Nach der Cisco IOS Software-Version 12.0(22)S gelten folgende Standardwerte:
Größe der Eingabewarteschlange = 75
SPD-Headroom-Größe = 1.000
Größere Belegschaft = 10
Im ersten Fall ergeben sich folgende Vorteile:
IP-Pakete mit normaler Priorität können bis zur Standardwarteschlangengrenze (75) in Warteschlangen gesetzt werden.
IP-Pakete mit hoher Priorität können bis zum Grenzwert für die Standardwarteschlange + spd_Headroom (175 oder 1075, basierend auf der Cisco IOS-Softwareversion) in Warteschlange gestellt werden.
CLNS-, IGP- und LC-Keepalive-Pakete sind berechtigt, bis zur Standardwarteschlangengrenze + spd_headroom + spd_ext_headroom (185 oder 1085, basierend auf der Cisco IOS-Softwareversion) eine Warteschlange einzustellen.
Hier einige zusätzliche Tipps/Informationen zum EPD:
Standardmäßig ist SPD "on" (Ein). Sie kann mit dem globalen Befehl spd enable aktiviert/deaktiviert werden.
Zunächst war SPD nur auf den PoS-Schnittstellen (Packet Over Sonet) verfügbar.
Vor der Cisco IOS Software-Version 12.0(21)S funktionierte SPD nicht auf Gigabit Ethernet Line Cards (Engine 1 und Engine 2) und Fast Ethernet Line Cards, die in einem Cisco Internet Router der Serie 12000 installiert sind. Die Warteschlange für die Warteschlange für die Warteschlange für die Warteschleifeneingabe musste erhöht werden, um die überzähligen Pakete zu speichern.
Auf dem Cisco Router der Serie 7200/7500 ist der SPD-Flushes-Zähler in der Ausgabe des Befehls show interfaces seit den Cisco IOS Software Releases 12.1(1), 12.1(1)T und 12.0(9)ST für Warteschlangen ohne FIFO (First In First Out) und seit 11 zu sehen 2.2(7), 12.2(7)T und 12.1(7)E für FIFO-Warteschlangen. Bei anderen Versionen und auf dem Cisco Internet Router der Serie 1200 wird dieser Zähler nur durch Eingabe des Befehls show interface switching angezeigt. Mit dem Befehl show interface pos 0/1 switching können beispielsweise SPD-Pinsel, aggressive Drops und Priorität angezeigt werden.
Hier ein Beispiel:
7500_Router#show interfaces FastEthernet0/0/0 is up, line protocol is up Hardware is cyBus FastEthernet Interface, address is 0090.9282.7000 (bia 0090) MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec, rely 255/255, load 1/255 Encapsulation ARPA, loopback not set Keepalive set (10 sec) Full-duplex, 100Mb/s, 100BaseTX/FX ARP type: ARPA, ARP Timeout 04:00:00 Last input 00:00:01, output 00:00:01, output hang never Last clearing of "show interface" counters never Queueing strategy: fifo Output queue 0/40, 0 drops; input queue 0/75, 0 drops, 0 flushes 30 second input rate 4000 bits/sec, 9 packets/sec 30 second output rate 0 bits/sec, 0 packets/sec 2628397 packets input, 546327119 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants, 0 throttles 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored 0 watchdog, 0 multicast 0 input packets with dribble condition detected 264792 packets output, 225434458 bytes, 0 underruns 0 output errors, 0 collisions, 20 interface resets 0 babbles, 0 late collision, 0 deferred 22 lost carrier, 0 no carrier 0 output buffer failures, 0 output buffers swapped out