Introduzione
In questo documento vengono descritti gli strumenti nativi inclusi in ACI che possono essere utilizzati per eseguire il debug dei problemi di inoltro.
Premesse
Il materiale di questo documento è stato estratto dal libro Troubleshooting Cisco Application Centric Infrastructure, Second Edition, in particolare dal capitolo Intra-Fabric forward - Tools.
Inoltre, spiegazioni più dettagliate su ELAM e Ftriage sono disponibili nella libreria CiscoLive On-Demand nella sessione BRKDCN-3900b.
Come Possono Essere Utilizzati Questi Strumenti?
Per risolvere un problema di inoltro dalla prospettiva ACI, occorre comprendere:
- Quale switch riceve un flusso?
- Quale decisione di inoltro sta prendendo lo switch?
- L'interruttore la sta sganciando?
ACI include diversi strumenti che consentono all'utente di ottenere informazioni dettagliate su quanto accade a un flusso specifico. Nelle sezioni seguenti vengono illustrati in dettaglio questi strumenti, pertanto viene fornita solo un'introduzione generale.
SPAN ed ERSPAN
SPAN ed ERSPAN sono entrambi strumenti che consentono la replica di tutto o parte del traffico ricevuto in un percorso specifico in un altro percorso. È previsto che il dispositivo finale a cui viene inviato il traffico replicato esegua un tipo di applicazione packet sniffer/analyzer. Lo SPAN tradizionale implica la replica del traffico ricevuto su una porta e il passaggio su un'altra porta. ACI supporta questa operazione in aggiunta a ERSPAN.
ERSPAN segue lo stesso concetto ad eccezione della replica del traffico in uscita da una porta locale; il traffico replicato viene incapsulato nel GRE e inviato a una destinazione remota. In ACI, questa destinazione ERSPAN deve essere appresa solo come endpoint di layer 3 e può essere qualsiasi EPG in qualsiasi VRF.
È consigliabile disporre sempre di destinazioni SPAN collegate al fabric per ridurre al minimo i tempi di preparazione durante la risoluzione dei problemi e consentire una rapida configurazione e acquisizione della sessione ERSPAN.
ELAM
Panoramica
Embedded Logic Analyzer Module (ELAM) è uno strumento che consente all'utente di impostare le condizioni nell'hardware e acquisire il primo pacchetto o frame che soddisfa le condizioni impostate. Se l'acquisizione ha esito positivo, lo stato ELAM viene visualizzato come "attivato". Una volta attivato, l'ELAM viene disabilitato e si può raccogliere un dump per analizzare il vasto numero di decisioni di inoltro che l'ASIC dello switch sta prendendo con quel pacchetto/frame. La tecnologia ELAM viene implementata a livello di ASIC e non influisce sulla CPU o su altre risorse dello switch.
Gli esempi di inoltro in questo libro utilizzano ELAM come mezzo per verificare ciò che sta accadendo con il flusso. Gli esempi mostrano sia la versione CLI foglia che l'applicazione ELAM Assistant.
Questa guida non copre l'uso di ELAM sugli switch foglia di prima generazione (switch senza suffisso EX, FX o FX2).
Prima di utilizzare lo strumento, è importante conoscere la struttura della sintassi del comando.
Esempio nella CLI foglia:
vsh_lc [This command enters the line card shell where ELAMs are run]
debug platform internal <asic> elam asic 0 [refer to the ASICs table]
Imposta condizioni su "trigger"
trigger reset [ensures no existing triggers are running]
trigger init in-select <number> out-select <number> [determines what information about a packet is displayed and which conditions can be set]
set outer/inner [sets conditions]
start [starts the trigger]
status [checks if a packet is captured]
Genera il dump contenente l'analisi del pacchetto
ereport [display detailed forwarding decision for the packet]
Continuare a immettere il comando status per visualizzare lo stato del trigger. Quando sull'ASIC viene rilevato un pacchetto che soddisfa le condizioni definite, l'output dello stato visualizza "triggered". Una volta attivato il modulo ELAM, i dettagli delle decisioni di inoltro dello switch possono essere mostrati con "report". Prima di ACI versione 4.2, è necessario usare "report".
ASIC
All'interno della sintassi ELAM, è necessario specificare l'ASIC. Poiché l'ASIC dipende dal modello di switch, fare riferimento a questa tabella per determinare l'ASIC da specificare:
Tabella ASIC
Famiglia di switch/schede di linea |
Asic per Elam |
Switch/LC -EX |
TAH |
Switch/LC -FX(P) |
ROC |
-FX2 switch/LC |
ROC |
Switch C (9364C,9332C) |
ROC |
Switch -GX |
APP |
Switch -GX2 |
CHO |
-FX3 switch |
ROC |
Trigger ELAM in-select
L'altro componente dell'ELAM che deve essere compreso quando si esegue dalla CLI è in-select. Il comando in-select definisce le intestazioni del pacchetto/frame che devono avere e le intestazioni che devono corrispondere.
Ad esempio, un pacchetto proveniente da una porta downlink non incapsulata in VXLAN avrebbe solo intestazioni di layer 2, layer 3 e layer 4 esterne.
Un pacchetto proveniente da una porta del pannello anteriore (downlink) incapsulata dalla VXLAN (ad esempio Cisco ACI Virtual Edge in modalità VXLAN) o proveniente da un dorso a monte avrebbe l'incapsulamento della VXLAN. Ciò significa che potrebbe avere sia intestazioni di livello 2, livello 3 e livello 4 esterne che interne.
Tutte le opzioni di trigger sono:
leaf1# vsh_lc
module-1# debug platform internal tah elam asic 0
module-1(DBG-elam)# trigger reset
module-1(DBG-elam)# trigger init in-select ?
10 Outerl4-innerl4-ieth
13 Outer(l2|l3|l4)-inner(l2|l3|l4)-noieth
14 Outer(l2(vntag)|l3|l4)-inner(l2|l3|l4)-ieth
15 Outer(l2|l3|l4)-inner(l2|l3|l4)-ieth
6 Outerl2-outerl3-outerl4
7 Innerl2-innerl3-innerl4
8 Outerl2-innerl2-ieth
9 Outerl3-innerl3
Se è selezionato in-select 6, l'unica opzione è quella di impostare le condizioni e visualizzare le intestazioni dal layer 2, 3 o 4 esterno. Se è selezionato in-select 14, l'unica opzione è quella di impostare le condizioni per e vedere i dettagli delle intestazioni Layer 2, 3 e 4 esterne e interne.
Nota sulle procedure ottimali:
Per catturare un pacchetto con incapsulamento VLAN su una porta di download, usare 'in-select 6'
Per acquisire un pacchetto con incapsulamento VXLAN (da una spine o da una vleaf con incapsulamento VXLAN), usare in-select 14.
Selezione uscita trigger ELAM
La selezione in uscita consente di controllare quali risultati di ricerca vengono visualizzati nel report ELAM. Per motivi più pratici, è possibile usare out-select 0 perché contiene la maggior parte delle informazioni, incluso il vettore di rilascio, che indica se il risultato della ricerca è il rifiuto del pacchetto/frame.
Quando il report anziché il report o i dettagli del report vengono utilizzati per ottenere i risultati ELAM, il vettore di rilascio viene visualizzato solo in out-select 1. Tuttavia, è sempre possibile eseguire report o report dettagliati con out-select 0.
Condizioni ELAM set
ELAM supporta una grande quantità di condizioni di layer 2, 3 e 4 da cercare in un pacchetto. Se si specifica inner vs. outer si determina se la condizione può essere verificata nell'intestazione interna (pacchetto incapsulato VXLAN) o nell'intestazione esterna.
Esempio ARP:
set outer arp source-ip-address 10.0.0.1 target-ip-address 10.0.0.2
Esempio di indirizzo MAC:
set outer l2 src_mac aaaa.bbbb.cccc dst_mac cccc.bbbb.aaaa
Esempio di indirizzo IP nell'intestazione interna:
set inner ipv4 src_ip 10.0.0.1 dst_ip 10.0.0.2
Visualizzazione del report ELAM
Verificare che l'ELAM sia stato attivato con lo stato:
module-1(DBG-elam-insel6)# status
ELAM STATUS
===========
Asic 0 Slice 0 Status Armed
Asic 0 Slice 1 Status Triggered
report può essere utilizzato per visualizzare il risultato dell'ELAM in un formato di facile comprensione. Il report ELAM viene salvato nella cartella /var/log/dme/log/ dello switch. Ci sono due file per l'ELAM sotto la cartella.
- elam_<timestamp>.txt
- nice_elam_<timestamp>.txt
Esempio di ELAM completo
Nell'esempio, viene catturato un traffico non VXLAN incapsulato (che corrisponde all'intestazione esterna) proveniente da una porta downlink su uno switch -EX:
module-1# debug platform internal tah elam asic 0
module-1(DBG-elam)# trigger reset
module-1(DBG-elam)# trigger init in-select 6 out-select 0
module-1(DBG-elam-insel6)# set outer ipv4 src_ip 10.0.0.1 dst_ip 10.0.0.2
module-1(DBG-elam-insel6)# start
module-1(DBG-elam-insel6)# status
module-1(DBG-elam-insel6)# ereport
Applicazione ELAM Assistant
Gli esempi di risoluzione dei problemi in questo manuale mostrano anche l'uso dell'app ELAM Assistant che può essere scaricata tramite Cisco DC App Center (https://dcappcenter.cisco.com). Questo strumento automatizza l'installazione e l'interpretazione degli ELAM tramite la GUI sull'APIC.
L'esempio mostra la distribuzione di un ELAM corrispondente a un IP di origine e di destinazione specifico sulla porta downlink del nodo 101
ElamAssistant
ElamAssistant - Dettaglio
L'ELAM Assistant consente inoltre di utilizzare facilmente parametri di corrispondenza più complessi, quali l'interfaccia di origine o i valori VXLAN.
fTriage
fTriage è uno strumento basato su APIC CLI destinato a fornire un'automazione completa della configurazione e dell'interpretazione ELAM. La premessa dello strumento è che l'utente può definire un flusso specifico e la foglia in cui si prevede che il flusso abbia inizio. Lo strumento esegue quindi ELAM su ciascun nodo, uno alla volta, per esaminare il flusso di inoltro. È particolarmente utile nelle topologie di grandi dimensioni dove non è chiaro quale percorso debba seguire un pacchetto.
fTriage genera un file di log di grandi dimensioni contenente l'output di ciascun comando eseguito. Il nome di questo file è visibile nelle prime righe dell'output di Triage.
Il completamento del triage può richiedere fino a 15 minuti.
Esempi
Mappare il flusso per la comunicazione instradata tra 10.0.1.1 e 10.0.2.1 a partire da foglia 104:
ftriage route -ii LEAF:104 -dip 10.0.2.1 -sip 10.0.1.1
Mappare un flusso di layer 2 a partire da foglia 104:
ftriage bridge -ii LEAF:104 -dmac 02:02:02:02:02:02
Per visualizzare la guida completa di fTriage, eseguire ftriage —help sull'APIC.
tcpdump
tcpdump può essere utilizzato sugli switch ACI per acquisire il traffico da e verso il control-plane. Notare che solo il traffico del control plane inviato alla CPU dello switch può essere osservato in un'acquisizione tcpdump. Alcuni esempi sono: protocolli di routing, LLDP/CDP, LACP, ARP e così via. Per acquisire il traffico del piano dati (e del control plane), utilizzare SPAN e/o ELAM.
Per eseguire l'acquisizione sulla CPU, specificare l'interfaccia kpm_inb. Sono disponibili la maggior parte delle opzioni e dei filtri tcpdump tradizionali.
Esempio di acquisizione di un messaggio ICMP destinato a una SVI sullo switch foglia:
leaf205# tcpdump -ni kpm_inb icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on kpm_inb, link-type EN10MB (Ethernet), capture size 65535 bytes
20:24:12.921981 IP 10.0.2.100 > 10.0.2.1: ICMP echo request, id 62762, seq 4096, length 64
20:24:12.922059 IP 10.0.2.1 > 10.0.2.100: ICMP echo reply, id 62762, seq 4096, length 64
20:24:13.922064 IP 10.0.2.100 > 10.0.2.1: ICMP echo request, id 62762, seq 4352, length 64
20:24:13.922157 IP 10.0.2.1 > 10.0.2.100: ICMP echo reply, id 62762, seq 4352, length 64
20:24:14.922231 IP 10.0.2.100 > 10.0.2.1: ICMP echo request, id 62762, seq 4608, length 64
20:24:14.922303 IP 10.0.2.1 > 10.0.2.100: ICMP echo reply, id 62762, seq 4608, length 64
Inoltre, l'opzione -w permette a tcpdump di scrivere l'acquisizione del pacchetto su un file PCAP in modo che possa essere aperta in strumenti come Wireshark.
Utilizzare tcpdump sull'interfaccia eth0, ossia l'interfaccia fuori banda sullo switch. Questa opzione permette di risolvere i problemi di connettività del traffico che attraversa la porta fisica fuori banda dello switch. Si tratterebbe principalmente di traffico control plane, ad esempio SSH, SNMP e così via.
Contatori atomici su richiesta
I contatori atomici su richiesta hanno lo scopo di contare i pacchetti all'interno di un flusso specifico quando lasciano su un uplink foglia e vengono ricevuti su un'altra porta fabric foglia. Permettono una certa granularità nel determinare se i pacchetti sono stati persi o ricevuti in eccesso.