Ce document explique le mécanisme SPD (Selective Packet Discard) et comment il peut être surveillé et réglé.
Remarque : Ce document n'explique pas comment dépanner un nombre croissant de pertes d'entrée dans la sortie show interfaces sur un routeur Internet de la gamme Cisco 12000. Pour plus d'informations sur ce problème, référez-vous à Dépannage des pertes d'entrée sur le routeur Internet de la gamme Cisco 12000.
Pour plus d'informations sur les conventions utilisées dans ce document, reportez-vous à Conventions relatives aux conseils techniques Cisco.
Aucune condition préalable spécifique n'est requise pour ce document.
Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :
Routeur de la gamme Cisco 7200
Routeur de la gamme Cisco 7500
Routeur Internet de la gamme Cisco 12000
Toutes les versions du logiciel Cisco IOS®
Les informations présentées dans ce document ont été créées à partir de périphériques dans un environnement de laboratoire spécifique. All of the devices used in this document started with a cleared (default) configuration. Si vous travaillez dans un réseau opérationnel, assurez-vous de bien comprendre l'impact potentiel de toute commande avant de l'utiliser.
Le SPD (Selective Packet Discard) est un mécanisme permettant de gérer les files d'attente d'entrée au niveau du processus sur le processeur de routage (RP). L'objectif de SPD est d'accorder la priorité aux paquets de protocole de routage et aux autres keepalives de couche 2 de contrôle du trafic importants pendant les périodes de congestion de la file d'attente au niveau du processus.
Historiquement, sur des plates-formes telles que les systèmes Cisco 7x00 et CEF 7500 (non-Cisco Express Forwarding), un nombre important de paquets de transit ont été transférés par le processeur de routage afin de remplir le cache de commutation rapide. Par conséquent, SPD était requis dans ce cas pour hiérarchiser les paquets de protocole de routage sur les paquets de transit qui partagent la même file d'attente.
Actuellement, sur le routeur Internet de la gamme Cisco 12000 et sur le routeur CEF 7500, seul le trafic destiné au routeur lui-même est envoyé au niveau du processus. Dans ce cas, SPD est utilisé pour hiérarchiser les paquets de protocole de routage lorsque du trafic de gestion tel que SNMP (Simple Network Management Protocol) est présent ou lorsqu'une attaque par déni de service (DoS) envoie du trafic au RP se produit.
Sur la gamme Cisco 12000, lorsqu'une carte de ligne détermine qu'un paquet entrant doit être pointé vers le RP pour traitement, le paquet transite dans la matrice de commutation en tant que cellules Cisco et est finalement reçu par la baie de porte programmable de segmentation et de réassemblage de cellules Cisco (CSAR).
Son objectif est de gérer le trafic entre la matrice de commutation et le processeur RP, et c'est là que les contrôles SPD sont effectués. Cela s'applique aux paquets IP, aux paquets CLNS (Connectionless Network Service), aux messages de test d'activité de couche 2 et aux paquets similaires transmis au RP. SPD effectue deux vérifications et peut potentiellement déposer un paquet dans l'un de ces deux états :
Vérification de l'état SPD
Vérification de la file d'attente d'entrée
La file d'attente du processus IP sur le RP est divisée en deux parties : une file d'attente de paquets générale et une file d'attente prioritaire. Les paquets placés dans la file d'attente de paquets générale sont soumis au contrôle d'état SPD et ceux qui sont placés dans la file d'attente prioritaire ne le sont pas. Les paquets qui remplissent les conditions requises pour la file d'attente de paquets prioritaire sont des paquets de priorité élevée, tels que ceux de priorité IP 6 ou 7, et ne doivent jamais être supprimés. Les non-qualificatifs peuvent toutefois être supprimés ici en fonction de la longueur de la file d'attente de paquets générale selon l'état SPD. La file d'attente de paquets générale peut se situer dans trois états et, par conséquent, les paquets de faible priorité peuvent être traités différemment :
NORMAL: taille de la file d'attente <= min
DÉPOUILLEMENT DE LA PLAGE : min <= taille de la file d'attente <= max
DROIT COMPLET : max <= taille de file d'attente
Dans l'état NORMAL, nous n'abandonnons jamais des paquets bien formés et mal formés.
Dans l'état RANDOM DROP, nous abandonnons aléatoirement les paquets bien formés. Si le mode agressif est configuré, nous abandonnons tous les paquets mal formés ; sinon, nous les traitons comme des paquets bien formés.
Note : Ces gouttes aléatoires sont appelées vidages SPD. En fait, lorsque l'interface est surchargée, des vidages se produisent. Les erreurs de mémoire tampon entraînent l'incrémentation du compteur de vidage.
Dans l'état FULL DROP, nous abandonnons tous les paquets bien formés et mal formés. Ces valeurs minimum (73 par défaut) et maximum (74 par défaut) proviennent de la plus petite file d'attente du châssis, mais peuvent être remplacées par les commandes globales ip spd queue min-threshold et ip spd queue max-threshold.
Le SPD peut être configuré pour deux modes différents : normal (par défaut) et agressif. La seule différence entre les deux est la manière dont le routeur comptabilise les paquets IP non valides (somme de contrôle non valide, version incorrecte, longueur d'en-tête incorrecte, longueur de paquet incorrecte). Les paquets IP mal formés sont abandonnés par SPD lorsque nous sommes en mode aggessif et dans l'état d'abandon aléatoire. Le mode agressif peut être configuré à l'aide de la commande ip spd mode agressif.
Remarque : Le mode agressif n'est pas mis en oeuvre sur le routeur Internet de la gamme Cisco 12000, car les paquets IP mal formés sont abandonnés directement par la carte de ligne d'entrée, et ces paquets ne sont pas punis sur le processeur de routage Gigabit (GRP). Par conséquent, le mode agressif n'est pas nécessaire sur cette plate-forme particulière.
La file d'attente d'entrée est conservée par interface matérielle, partagée entre toutes les sous-interfaces. Sans SPD, tous les paquets sont abandonnés si la file d'attente d'entrée est pleine lorsque le paquet est reçu. La taille de la file d'attente d'entrée par défaut est 75 et est configurable par interface à l'aide de la commande de configuration d'interface hold-queue [size] dans. Le nombre de paquets dans la file d'attente d'entrée est visible dans le champ « file d'attente d'entrée » de la commande show interfaces.
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
Remarque : La réduction de la taille de la file d'attente d'entrée sur une interface peut entraîner un nombre énorme de pertes d'entrée sur toutes les autres interfaces. Assurez-vous d'avoir une taille minimale de file d'attente d'entrée d'au moins 75.
Même avec SPD, le comportement des paquets IP normaux n'est pas modifié ; cependant, les paquets de protocole de routage reçoivent une priorité plus élevée parce que SPD reconnaît les paquets de protocole de routage par le champ de priorité IP. Par conséquent, si la priorité IP est définie sur 6, la priorité est attribuée au paquet.
Le SPD donne la priorité à ces paquets en permettant au logiciel de les mettre en file d'attente dans la file d'attente d'entrée au niveau du processus au-dessus de la limite normale de la file d'attente d'entrée. Le nombre de paquets autorisés au-delà de la limite normale est appelé la tête de file d'attente spd, la valeur par défaut étant 100, ce qui signifie qu'un paquet de priorité élevée n'est pas abandonné si la taille de la file d'attente d'attente d'entrée est inférieure à 175 (taille par défaut de la file d'attente d'entrée + taille de la tête de file d'attente spd).
À partir de la version 12.0(22)S du logiciel Cisco IOS, la valeur par défaut de la salle de tête de spd est 1000 pour le routeur Internet de la gamme Cisco 12000 afin de prendre en charge les réseaux SP de plus grande taille. Ceci est dû au fait que l'appairage BGP (Border Gateway Protocol) est utilisé avec un nombre croissant de voisins pour annoncer un nombre croissant de routes sur des interfaces toujours plus rapides. Une seule suppression de BGP peut souvent entraîner des milliers de pertes de file d'attente d'entrée sur une seule interface, ce qui peut considérablement entraver les temps de convergence.
La salle de tête SPD est configurable à l'aide de la commande spd headroom. Son niveau actuel est visible dans la sortie de la commande show spd ou show ip spd.
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
Remarque : La taille de la file d'attente normale IP peut également être surveillée par la commande show ip spd.
Les paquets non IP, tels que les paquets CLNS ISIS (Connectionless Network Service Intermediate System-to-Intermediate System), les paquets PPP (Point-to-Point Protocol) et les keepalives HDLC (High-Level Data Link Control), étaient, jusqu'à récemment, traités comme des priorités normales en raison de leur niveau de priorité de couche 2 au lieu de couche 3. En outre, les protocoles IGP (Interior Gateway Protocol) fonctionnant au niveau de la couche 3 ou supérieure ont reçu la priorité sur les paquets IP normaux, mais ont reçu la même priorité que les paquets BGP. Ainsi, pendant la convergence BGP ou pendant les périodes d'activité BGP très élevée, les HELLO et les keepalives IGP ont souvent été abandonnés, ce qui a entraîné la désactivation des contiguïtés IGP.
Étant donné que la stabilité IGP et de la liaison sont plus précaires et plus cruciales que la stabilité BGP, ces paquets ont maintenant la priorité la plus élevée et se voient attribuer une marge de sécurité SPD étendue avec une valeur par défaut de 10 paquets. Cela signifie que ces paquets ne sont pas abandonnés si la taille de la file d'attente d'entrée est inférieure à 185 (taille par défaut de la file d'entrée + taille de la salle de tête de spd + espace de tête étendu spd).
La salle des têtes de SPD étendue est configurable à l'aide de la commande spd extended [size], et son niveau actuel peut être vu à partir de la sortie de la commande show spd ou show ip spd.
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
Remarque : Sur les routeurs Internet de la gamme Cisco 12000, les keepalives HDLC et PPP, ainsi que les paquets de protocole de routage ISIS CLNS, sont traités comme hautement prioritaires et peuvent être mis en file d'attente dans la tête SPD étendue depuis la version 12.0(12)S1 du logiciel Cisco IOS. Depuis la version 12.0(18)S du logiciel Cisco IOS, tous les paquets IGP peuvent également être mis en file d'attente dans la salle de tête SPD étendue.
Les valeurs par défaut, antérieures à la version 12.0(22)S du logiciel Cisco IOS, sont les suivantes :
Taille de la file d'attente d'entrée = 75
Taille de la tête de réseau SPD = 100
Taille de la tête de lit étendue = 10
Les valeurs par défaut, après la version 12.0(22)S du logiciel Cisco IOS, sont les suivantes :
Taille de la file d'attente d'entrée = 75
Taille de la tête de réseau SPD = 1000
Taille de la tête de lit étendue = 10
Dans le premier cas, ceci donne :
Les paquets IP ayant une priorité normale sont autorisés à mettre en file d'attente jusqu'à la limite de file d'attente par défaut (75)
Les paquets IP de haute priorité sont autorisés à mettre en file d'attente jusqu'à la limite de file d'attente par défaut + spd_headroom (175 ou 1075 selon la version du logiciel Cisco IOS)
Les paquets CLNS, IGP et LC keepalive sont autorisés à mettre en file d'attente jusqu'à la limite de file d'attente par défaut + spd_headroom + spd_ext_headroom (185 ou 1085 en fonction de la version du logiciel Cisco IOS).
Voici quelques conseils/informations supplémentaires sur SPD :
Par défaut, SPD est activé. Il peut être activé/désactivé à l'aide de la commande globale spd enable.
Initialement, SPD n’était disponible que sur les interfaces PoS (Packet Over Sonet).
Avant la version 12.0(21)S du logiciel Cisco IOS, SPD ne fonctionnait pas sur les cartes de ligne Gigabit Ethernet (moteur 1 et moteur 2) et Fast Ethernet installées sur un routeur Internet de la gamme Cisco 12000. La file d'attente en attente d'entrée a dû être augmentée pour stocker les paquets excédentaires.
Sur le routeur de la gamme Cisco 7200/7500, le compteur SPD vidange (abandons) peut être vu dans le résultat de la commande show interfaces depuis la version 12.1(1), 12.1(1)T et 12.0(9)ST du logiciel Cisco IOS pour la mise en file d'attente non FIFO (First In First Out) depuis et 12.2(7), 12.2(7)T et 12.1(7)E pour la mise en file d'attente FIFO. Sur les autres versions et sur le routeur Internet de la gamme Cisco 12000, ce compteur n'est visible qu'en entrant la commande show interface switching. Par exemple, la commande show interface pos 0/1 switching peut être utilisée pour afficher les vidages SPD, les pertes agressives et la priorité.
Voici un exemple :
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