Dans le cadre de la documentation associée à ce produit, nous nous efforçons d’utiliser un langage exempt de préjugés. Dans cet ensemble de documents, le langage exempt de discrimination renvoie à une langue qui exclut la discrimination en fonction de l’âge, des handicaps, du genre, de l’appartenance raciale de l’identité ethnique, de l’orientation sexuelle, de la situation socio-économique et de l’intersectionnalité. Des exceptions peuvent s’appliquer dans les documents si le langage est codé en dur dans les interfaces utilisateurs du produit logiciel, si le langage utilisé est basé sur la documentation RFP ou si le langage utilisé provient d’un produit tiers référencé. Découvrez comment Cisco utilise le langage inclusif.
Cisco a traduit ce document en traduction automatisée vérifiée par une personne dans le cadre d’un service mondial permettant à nos utilisateurs d’obtenir le contenu d’assistance dans leur propre langue. Il convient cependant de noter que même la meilleure traduction automatisée ne sera pas aussi précise que celle fournie par un traducteur professionnel.
Ce document décrit les causes et les solutions des rejets d'entrée pour les EoR Cisco Nexus 9500-R et Nexus 3000-R ToR. Un rejet d'entrée indique le nombre de paquets abandonnés dans la file d'attente d'entrée en raison d'un encombrement. Ce nombre inclut les chutes provoquées par la chute de la queue et la détection WRED (Weighted Random Early Detection).
Si vous constatez des chutes aléatoires/sporadiques/historiques (c'est-à-dire qu'elles ne se produisent plus), veuillez contacter le TAC de Cisco pour plus d'informations. Cette procédure pas à pas est utile lorsque les rejets en entrée sont incrémentés fréquemment.
La gamme R utilise l'architecture VOQ d'entrée. L'architecture VOQ émule les files d'attente de sortie dans le tampon d'entrée avec des files d'attente virtuelles. Chaque port de sortie comporte huit files d'attente pour le trafic de monodiffusion et huit files d'attente pour le trafic de multidiffusion. Le trafic peut être classé dans des classes de trafic en fonction de la valeur CoS (Class-of-Service) ou DSCP (Differentiated Services Code Point) dans les paquets, puis mis en file d'attente dans la file d'attente virtuelle correspondante pour cette classe de trafic.
La gamme R utilise un mécanisme de crédit distribué pour transférer le trafic sur le fabric. Avant qu'un paquet ne quitte la file d'attente de volume (VOQ), le planificateur de tampon d'entrée demande un crédit pour le port et la priorité spécifiques dans la mémoire tampon de sortie. Le crédit est demandé à un planificateur de crédit d'entrée pour le port et la priorité de destination. Si un espace tampon est disponible, le planificateur de sortie accorde l'accès et envoie l'octroi de crédit au planificateur de tampon d'entrée. Si aucun espace tampon n'est disponible dans la mémoire tampon de sortie, le planning de sortie n'accorde pas de crédit et le trafic est mis en mémoire tampon dans la file d'attente de volume jusqu'à ce que le prochain crédit soit disponible.
Vous trouverez ci-dessous le pipeline de transfert de paquets pour la plate-forme -R. Dans cet article, vous vous concentrez sur le composant Inbound Traffic Manager. Plus d'informations sur l'architecture sur ce lien
Le gestionnaire de trafic d'entrée (ITM) est un bloc du pipeline d'entrée. Il effectue des étapes liées au trafic de file d'attente dans la file d'attente de trafic, planifie le trafic pour la transmission sur le fabric et gère les crédits.
Le bloc de tampon VOQ d'entrée gère à la fois le tampon sur puce et le tampon de paquets hors puce. Les deux tampons utilisent l'architecture VOQ et le trafic est mis en file d'attente en fonction des informations du processeur de paquets du récepteur d'entrée (IRPP). Au total, 96 000 VOQ sont disponibles pour le trafic de monodiffusion et de multidiffusion.
Avant qu'un paquet ne soit transmis à partir du pipeline d'entrée, le paquet doit être planifié pour être transféré sur le fabric. Le planificateur d'entrée envoie une demande de crédit au planificateur de sortie situé dans le bloc du gestionnaire de trafic de sortie. Lorsque le gestionnaire de trafic d'entrée reçoit le crédit, il commence à envoyer le trafic au processeur de paquets de transmission d'entrée. Si le tampon de sortie est plein, le trafic sera mis en mémoire tampon dans la file d'attente dédiée représentée par le port de sortie et la classe de trafic.
En général, les rejets d'entrée peuvent être observés pour les raisons suivantes sur différents matériels Nexus
PID |
N9K-X9636C-R |
N9K-X9636Q-R |
N9K-X9636C-RX |
N9K-X96136YC-R |
N3K-C36180YC-R |
N3K-C3636C-R |
Tout au long de cet article, la valeur du compteur de « rejets d'entrée » et de tout compteur interne matériel qui fait référence aux mêmes va changer au fur et à mesure que les erreurs s'incrémentent pendant le test et les commandes pertinentes doivent être prises en direct.
Cette étape sera utile plus tard.
Dans notre cas, il s'agit de la file d'attente 7, la file d'attente par défaut. Il y a 8 files d'attente au total en entrée :
Nexus-R# bcm-shell mod 1 "diag counters g" | /|\ | J E R I C H O N E T W O R K I N T E R F A C E | \|/ | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | NBI | | RX_TOTAL_BYTE_COUNTER = 10,616,663,796 | TX_TOTAL_BYTE_COUNTER = 41,136 | | RX_TOTAL_PKT_COUNTER = 10,659,301 | TX_TOTAL_PKT_COUNTER = 606 | | RX_TOTAL_DROPPED_EOPS = 0 | | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | IRE | EPNI | | CPU_PACKET_COUNTER = 606 | | | NIF_PACKET_COUNTER = 10,659,302 | EPE_BYTES_COUNTER = 41,136 | | OAMP_PACKET_COUNTER = 0 | EPE_PKT_COUNTER = 606 | | OLP_PACKET_COUNTER = 0 | EPE_DSCRD_PKT_CNT = 0 | | RCY_PACKET_COUNTER = 0 | | | IRE_FDT_INTRFACE_CNT = 0 | | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | IDR | EGQ | | | | | MMU_IDR_PACKET_COUNTER = 10,659,302 | FQP_PACKET_COUNTER = 606 | | IDR_OCB_INTERFACE_COUNTER = 0 | PQP_UNICAST_PKT_CNT = 606 | | | PQP_DSCRD_UC_PKT_CNT = 0 | | | PQP_UC_BYTES_CNT = 48,408 | +-------------------------------------------+-------------------------------------------| PQP_MC_PKT_CNT = 0 | | IQM | PQP_DSCRD_MC_PKT_CNT = 0 | | | PQP_MC_BYTES_CNT = 0 | | ENQUEUE_PKT_CNT = 1,403,078 | EHP_UNICAST_PKT_CNT = 606 | | DEQUEUE_PKT_CNT = 1,403,078 | EHP_MC_HIGH_PKT_CNT = 0 | | DELETED_PKT_CNT = 0 | EHP_MC_LOW_PKT_CNT = 0 | | ENQ_DISCARDED_PACKET_COUNTER = 9,256,829 | DELETED_PKT_CNT = 0 | | Rejects: PORT_AND_PG_STATUS | | | | RQP_PKT_CNT = 606 | | | RQP_DSCRD_PKT_CNT = 0 | | | PRP_PKT_DSCRD_TDM_CNT = 0 | | | PRP_SOP_DSCRD_UC_CNT = 0 | | | PRP_SOP_DSCRD_MC_CNT = 0 | | | PRP_SOP_DSCRD_TDM_CNT = 0 | | | EHP_MC_HIGH_DSCRD_CNT = 0 | | | EHP_MC_LOW_DSCRD_CNT = 0 | | | ERPP_LAG_PRUNING_DSCRD_CNT = 0 | | | ERPP_PMF_DISCARDS_CNT = 0 | | | ERPP_VLAN_MBR_DSCRD_CNT = 0 | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | | FDA | | | CELLS_IN_CNT_P1 = 0 | CELLS_OUT_CNT_P1 = 0 | | | CELLS_IN_CNT_P2 = 0 | CELLS_OUT_CNT_P2 = 0 | +-------------------------------------------+-------------------------------------------| CELLS_IN_CNT_P3 = 0 | CELLS_OUT_CNT_P3 = 0 | | IPT | CELLS_IN_TDM_CNT = 0 | CELLS_OUT_TDM_CNT = 0 | | | CELLS_IN_MESHMC_CNT = 0 | CELLS_OUT_MESHMC_CNT = 0 | | EGQ_PKT_CNT = 606 --> CELLS_IN_IPT_CNT = 606 | CELLS_OUT_IPT_CNT = 606 | | ENQ_PKT_CNT = 1,403,084 | EGQ_DROP_CNT = 0 | | FDT_PKT_CNT = 1,402,472 | EGQ_MESHMC_DROP_CNT = 0 | | CRC_ERROR_CNT = 0 | EGQ_TDM_OVF_DROP_CNT = 0 | | CFG_EVENT_CNT = 606 * | | | CFG_BYTE_CNT = 48,408 | | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | FDT | FDR | | IPT_DESC_CELL_COUNTER = 5,609,892 | P1_CELL_IN_CNT = 0 | | IRE_DESC_CELL_COUNTER = 0 | P2_CELL_IN_CNT = 0 | | | P3_CELL_IN_CNT = 0 | | TRANSMITTED_DATA_CELLS_COUNTER = 5,609,892 | CELL_IN_CNT_TOTAL = 0 | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | /|\ | J E R I C H O F A B R I C I N T E R F A C E | \|/ |
Un compteur QUEUE_DELETED_PACKET_COUNTER supérieur à zéro indique que les paquets ont été SUPPRIMÉS par la file d'attente postérieure IQM (Inbound Queueing Manager). Cela est dû à une file d'attente active qui ne reçoit aucun crédit, ce qui suggère une mauvaise configuration du schéma de planification. Vous pouvez vérifier cela via bcm-shell mod X « getReg IQM_QUEUE_DELETED_PACKET_COUNTER »
ENQ_DISCARDED_PACKET_COUNTER signifie que les paquets ont été ignorés AVANT la mise en file d'attente. Vous pouvez également voir ce compteur dans BCM (la commande est désactivée en lecture) :
Vous pouvez toujours les remarquer rapidement avec show hardware internal errors module X (la commande s'efface en lecture) :
Affichage de Eth1/33 pour cet exemple. Dans un réseau réel, vous ne connaissez pas encore le port de sortie encombré.
Cette commande nous montre les détails du flux de VoQ d'entrée pour un port spécifique. En outre, il nous montre le solde de crédit actuel de la VoQ.
La VOQ du port est dérivée de cette manière :
Les LC sont basées sur 0 - Module 1 est 0, Module 2 est 1, etc.
Il existe 256 ID de port système par LC
ID = (LC * ID du port système) + numéro FP
Eth1/9 = (0 * 256) + 9 = 9
ID VOQ = 32 + (ID de port système * 8)
Eth1/9 = 32 + (9 * 8) = 104
Notre VOQ pour Eth1/9 sera donc 104, ce qui correspond à la sortie précédemment collectée
Si la file d'attente est 303, rappelez-vous que ces files d'attente sont en fait une plage de sorte qu'elle peut être 303 + 7 ou 303-7 - La question est, quel port a une VOQ qui correspond sur une plage de 296-303 ou alternativement, 303-310 ?
Il est connu que la file d'attente 7 sur Eth1/9 est congestionnée, donc 303 est en fait le plus haut de sa gamme, donc la plage de 296-303 est une estimation bien éduquée.
Afficher la même valeur pour la base 0 - Non affichée ici pour la concision ; vous remarquerez dans la colonne Voq que votre champ d'intérêt ne figure pas dans cet ASIC
Remarquez quelques points sur le résultat ci-dessus :
À ce stade, vous avez trouvé le port encombré de sortie : déterminez s'il y a un problème d'éclatement incorrect dans le réseau, vous avez configuré SPAN et votre port de destination est 1G tout en fournissant une ou plusieurs interfaces 10G ou s'il s'agit d'un problème de goulot d'étranglement/de conception.
Celles-ci sont plus avancées : elles ne sont pas nécessaires pour trouver le port congestionné de sortie dans des scénarios normaux.
attach module X show hardware internal jer-usd tm_debug asic <slot> module <module> show hardware internal jer-usd info voq [ asic <instance> ] [ port <port> ] [ ] show hardware internal jer-usd info non-empty voq asic [ <instance> ] [ ] show hardware internal jer-usd info voq-profile { QueueThreshold drop_p <dp> | OCBThreshold } [ asic <instance> ] [ port<port> ] [ ] show hardware internal jer-usd info voq-connector front-port <port> [ ] show hardware internal jer-usd stats vsq { front-port <port> | inband asic <slot> | recycle-port <port> asic <slot> } show hardware internal jer-usd ingress-vsq buffer-occupancy front-port <port> show hardware internal jer-usd info IQM { counter | rate } asic <instance> dst-port <port> [ interval <int> ] [ ] show hardware internal jer-usd info SCH { counter | rate } asic <instance> dst-port <port> [ interval <int> ] [ ]
bcm-shell mod X
diag cosq print_flow_and_up dest_id=<flow_id>
diag cosq voq id=<voqid> detailed=1
diag cosq qpair e2e ps=<id>
cosq conn ing
cosq conn egr
dump IPS_CR_BAL_TABLE <voqID>
getReg IQM_QUEUE_MAXIMUM_OCCUPANCY_QUEUE_SIZE
Considérez cette topologie dans laquelle le générateur de trafic envoie 2G de trafic vers chaque serveur :
Vérifiez rapidement quelles files d'attente ne sont pas vides - Notez qu'il y en a 4 :
Déterminez les interfaces auxquelles ces files d'attente appartiennent - Vérifiez d'abord ASIC 0 (il n'en montre qu'avec une seule interface) :
Répétez le même processus pour les trois autres valeurs de file d'attente : 247, 303 et 351.
Définition d’Eth1/33 en tant que port de destination SPAN tout en définissant Eth1/9 en tant que port source SPAN dans la direction RX
Envoi de paquets avec SRC 10.10.10.10 et DEST 192.168.10.10 où Eth1/9 se trouve dans 10.10.10.1/24 - Cela n'entraîne pas de rejet d'entrée ; cependant, vous voyez ce compteur :
Nexus-R# bcm-shell mod 1 "diag counters g" | /|\ | J E R I C H O N E T W O R K I N T E R F A C E | \|/ | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ _PACKET_COUNTER = 0 | DELETED_PKT_CNT = 12,027,201 | | | Discards: INVALID_OTM SRC_EQUAL_DEST +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+
Envoyer des paquets avec SRC 10.10.10.10 et DEST 192.168.10.10 où Eth1/9 se trouve dans 10.10.10.1/24 et Eth1/33 est un port L3 dans le sous-réseau 172.16.0.1/30 - Pas de compteur de dépôt, pas de rejet d'entrée même lorsque la destination est inconnu ..
Envoyer des paquets où Eth1/9 n'est qu'une liaison étendue (ou un port d'accès) : il s'agit d'un port de sortie d'entrée enregistré pendant que le port passe à un état de transmission STP.
Nexus-R(config)# int e1/9
Nexus-R(config-if)# switchport mode trunk
Nexus-R# bcm-shell mod 1 "diag counters g" | i i --|IQM|ENQ_DISCARD|Rejects +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ +-------------------------------------------+-------------------------------------------| PQP_MC_PKT_CNT = 1,678,949 | | IQM | PQP_DSCRD_MC_PKT_CNT = 11,369,033 | | ENQ_DISCARDED_PACKET_COUNTER = 1,289,182 | DELETED_PKT_CNT = 11,369,081 | | Rejects: QUEUE_NOT_VALID_STATUS | Discards: SRC_EQUAL_DEST | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+
Nexus-R# show span int e1/9
Vlan Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
VLAN0001 Desg BLK 2 128.9 P2p
VLAN0010 Desg BLK 2 128.9 P2p
<snip>
QUEUE_NOT_VALID_STATUS est une perte due à la décision de suppression du processeur de paquets (PP) ou à une destination non valide reçue des blocs de processeur de paquets (PP).
Envoi de 10G+ dans Eth1/9 entraînerait un type de perte différent, car vous atteignez Eth1/9 à la première place - Ne compte toujours pas comme une suppression d'entrée :
bcm-shell.0> diag counters g | /|\ | J E R I C H O N E T W O R K I N T E R F A C E | \|/ | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | NBI | | RX_TOTAL_BYTE_COUNTER = 53,913,106,009 | TX_TOTAL_BYTE_COUNTER = 1,164,231 | | RX_TOTAL_PKT_COUNTER = 54,145,395 | TX_TOTAL_PKT_COUNTER = 17,029 | | RX_TOTAL_DROPPED_EOPS = 0 | | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | IRE | EPNI | | CPU_PACKET_COUNTER = 17,010 | | | NIF_PACKET_COUNTER = 54,145,476 | EPE_BYTES_COUNTER = 5,721,307 | | OAMP_PACKET_COUNTER = 0 | EPE_PKT_COUNTER = 50,703 | | OLP_PACKET_COUNTER = 0 | EPE_DSCRD_PKT_CNT = 0 | | RCY_PACKET_COUNTER = 16,837 | | | IRE_FDT_INTRFACE_CNT = 0 | | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | IDR | EGQ | | | | | MMU_IDR_PACKET_COUNTER = 54,128,577 | FQP_PACKET_COUNTER = 50,703 | | IDR_OCB_INTERFACE_COUNTER = 0 | PQP_UNICAST_PKT_CNT = 50,683 | | | PQP_DSCRD_UC_PKT_CNT = 0 | | | PQP_UC_BYTES_CNT = 5,216,716 | +-------------------------------------------+-------------------------------------------| PQP_MC_PKT_CNT = 20 | | IQM | PQP_DSCRD_MC_PKT_CNT = 20 | | | PQP_MC_BYTES_CNT = 2,079 | | ENQUEUE_PKT_CNT = 5,463,323 | EHP_UNICAST_PKT_CNT = 50,683 | | DEQUEUE_PKT_CNT = 5,594,400 | EHP_MC_HIGH_PKT_CNT = 20 | | DELETED_PKT_CNT = 0 | EHP_MC_LOW_PKT_CNT = 0 | | ENQ_DISCARDED_PACKET_COUNTER = 48,716,055 | DELETED_PKT_CNT = 40 | | Rejects: VOQ_MX_QSZ_STATUS | | <snip>