La documentazione per questo prodotto è stata redatta cercando di utilizzare un linguaggio senza pregiudizi. Ai fini di questa documentazione, per linguaggio senza di pregiudizi si intende un linguaggio che non implica discriminazioni basate su età, disabilità, genere, identità razziale, identità etnica, orientamento sessuale, status socioeconomico e intersezionalità. Le eventuali eccezioni possono dipendere dal linguaggio codificato nelle interfacce utente del software del prodotto, dal linguaggio utilizzato nella documentazione RFP o dal linguaggio utilizzato in prodotti di terze parti a cui si fa riferimento. Scopri di più sul modo in cui Cisco utilizza il linguaggio inclusivo.
Cisco ha tradotto questo documento utilizzando una combinazione di tecnologie automatiche e umane per offrire ai nostri utenti in tutto il mondo contenuti di supporto nella propria lingua. Si noti che anche la migliore traduzione automatica non sarà mai accurata come quella fornita da un traduttore professionista. Cisco Systems, Inc. non si assume alcuna responsabilità per l’accuratezza di queste traduzioni e consiglia di consultare sempre il documento originale in inglese (disponibile al link fornito).
In questo documento vengono descritte le cause e le soluzioni dei rigetti in input per Cisco Nexus 9500-R EoR e Nexus 3000-R ToR. Un rifiuto in input indica il numero di pacchetti scartati nella coda di input a causa di congestione. Questo numero include le cadute causate da tail drop e Weighted Random Early Detection (WRED).
Se si verificano cali casuali/sporadici/storici (che non si verificano più), contattare Cisco TAC per ulteriori indagini. Questa procedura dettagliata è utile quando gli input scartati vengono incrementati di frequente.
La serie R utilizza l'architettura Ingress VOQ. L'architettura VOQ emula le code in uscita nel buffer in entrata con le code virtuali. Ogni porta di uscita ha otto code per il traffico unicast e otto code per il traffico multicast. Il traffico può essere classificato in classi di traffico basate sul valore CoS (Class-of-Service) o DSCP (Differentiated Services Code Point) nei pacchetti e quindi accodato nella coda virtuale corrispondente per quella classe di traffico.
La serie R utilizza un meccanismo di credito distribuito per trasferire il traffico sulla struttura. Prima che un pacchetto lasci il VOQ, lo scheduler del buffer in entrata richiede un credito per la porta e la priorità specifiche nel buffer in uscita. Il credito viene richiesto a uno scheduler crediti in entrata per la porta e la priorità di destinazione. Se è disponibile spazio di buffer, lo scheduler di uscita concede l'accesso e invia la concessione di credito allo scheduler di buffer in entrata. Se nel buffer in uscita non è disponibile spazio di buffer, la programmazione in uscita non concede un credito e il traffico viene memorizzato nel VOQ finché non sarà disponibile il credito successivo.
Di seguito è riportata la pipeline di inoltro pacchetti per la piattaforma -R. In questo articolo viene esaminato il componente Gestione traffico in ingresso. Ulteriori dettagli sull'architettura in questo link
Il gestore del traffico in entrata (ITM) è un blocco nella pipeline in entrata. Esegue le fasi relative al traffico in coda in VOQ, pianifica il traffico per la trasmissione sulla struttura e gestisce i crediti.
Il blocco buffer VOQ in entrata gestisce sia il buffer on-chip che il buffer del pacchetto off-chip. Entrambi i buffer utilizzano l'architettura VOQ e il traffico viene accodato in base alle informazioni provenienti dall'IRPP (Ingress Receiver Packet Processor). Sono disponibili 96.000 VOQ per il traffico unicast e multicast.
Prima di trasmettere un pacchetto dalla pipeline in entrata, il pacchetto deve essere pianificato per il trasferimento sulla struttura. Lo scheduler in entrata invia una richiesta di credito allo scheduler in uscita che si trova nel blocco del gestore del traffico in uscita. Quando il gestore del traffico in entrata riceve il credito, inizia a inviare il traffico al processore di pacchetti di trasmissione in entrata. Se il buffer di uscita è pieno, il traffico verrà memorizzato nel buffer nella coda dedicata rappresentata dalla porta di uscita e dalla classe di traffico.
In genere, i rifiuti di input possono essere rilevati per i motivi seguenti in vari componenti hardware Nexus
PID |
N9K-X9636C-R |
N9K-X9636Q-R |
N9K-X9636C-RX |
N9K-X96136YC-R |
N3K-C36180YC-R |
N3K-C3636C-R |
In questo articolo, il valore del contatore dei "rigetti di input" e di qualsiasi contatore interno HW che fa riferimento allo stesso cambierà con l'aumento degli errori durante il test e i comandi rilevanti devono essere acquisiti in tempo reale.
Questo passaggio si rivela utile in seguito.
Nel nostro caso, è la coda 7, la coda predefinita - Ci sono 8 code totali in entrata:
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 valore di QUEUE_DELETED_PACKET_COUNTER maggiore di zero indica che i pacchetti sono stati ELIMINATI da IQM (Ingress Queueing Manager) after-enqueue. Ciò è dovuto al fatto che una coda attiva non riceve alcun credito che potrebbe suggerire una configurazione errata dello schema di pianificazione. È necessario verificare questa condizione tramite la modalità bcm-shell "getReg IQM_QUEUE_DELETED_PACKET_COUNTER"
ENQ_DISCARDED_PACKET_COUNTER indica che i pacchetti sono stati scartati PRIMA dell'accodamento. È possibile visualizzare questo insieme di contatori anche in BCM (il comando viene cancellato in lettura):
È sempre possibile notarli rapidamente con show hardware internal errors module X (il comando cancella alla lettura):
Visualizzazione di Eth1/33 per questo esempio. In una rete reale, non si conosce ancora la porta di uscita congestionata.
Questo comando mostra i dettagli del flusso per il VoQ in entrata per una porta specifica. Inoltre, mostra il saldo attivo corrente del VoQ.
Il VOQ della porta è derivato nel modo seguente:
I moduli LC sono basati su 0: il modulo 1 è 0, il modulo 2 è 1, ecc
Sono disponibili 256 ID porte di sistema per LC
ID = (LC * ID porta di sistema) + numero FP
Eth1/9 = (0 * 256) + 9 = 9
VOQ ID = 32 + (ID porta sistema * 8)
Eth1/9 = 32 + (9 * 8) = 104
Il VOQ per Eth1/9 sarà quindi 104, che corrisponde all'output precedentemente raccolto
Se la coda è 303, ricordare che queste code sono in realtà un intervallo, quindi possono essere 303 + 7 o 303-7. La domanda è: quale porta ha un VOQ che corrisponde a un intervallo di 296-303 o, in alternativa, 303-310?
È noto che la Coda 7 su Eth1/9 è congestionata, quindi 303 è in realtà il più alto nel suo range, quindi l'intervallo di 296-303 è una stima ben istruita.
Visualizzare lo stesso per l'elemento di base 0 - Non qui per brevità; nella colonna Voq si noterà che l'intervallo di interesse non è incluso nell'ASIC
Di seguito sono riportati alcuni elementi dell'output precedente:
A questo punto, è stata rilevata la porta congestionata in uscita - Determinare se si è verificato un errore di frammentazione nella rete, se è stato configurato SPAN e la porta di destinazione è 1G durante l'origine di una o più interfacce 10G o se si tratta di un problema di collo di bottiglia/progettazione.
Si tratta di funzionalità più avanzate. Non è necessario trovare una porta congestionata in uscita in scenari normali.
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
Considerare questa topologia in cui il Generatore traffico sta inviando 2G di traffico verso ciascun Server:
Verificare rapidamente quali code non sono vuote. Notare che sono presenti 4:
Determinare le interfacce a cui appartengono queste code. Controllare prima ASIC 0 (viene dimostrato con una sola interfaccia):
Ripetere la stessa procedura per gli altri tre valori di Coda: 247, 303 e 351.
Impostazione di Eth1/33 come porta di destinazione SPAN mentre impostazione di Eth1/9 come porta di origine SPAN in direzione RX
Invio di pacchetti con SRC 10.10.10.10 e DEST 192.168.10.10 dove Eth1/9 è in 10.10.10.1/24 - Non si verifica un'eliminazione degli input; tuttavia, viene visualizzato questo contatore:
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 +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+
Inviare pacchetti con SRC 10.10.10.10 e DEST 192.168.10.10 dove Eth1/9 è in 10.10.10.1/24 e Eth1/33 è una porta L3 nella subnet 172.16.0.1/30 - Nessun contatore di rilascio, nessun rifiuto di input anche quando la destinazione è sconosciuta.
Invia pacchetti dove Eth1/9 è solo un wide trunk (o porta di accesso) - È registrato come Input Discard mentre la porta passa a uno stato di inoltro 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 è una perdita di dati causata dalla decisione del processore pacchetti (PP) di eliminare o da una destinazione non valida ricevuta dai blocchi del processore pacchetti (PP).
Invia 10G+ in Eth1/9 causerebbe un tipo diverso di caduta mentre si sta massimizzando Eth1/9 in prima posizione - Conta ancora come Input Discard:
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>