Sommario

Introduzione

Dispositivi interessati

Procedura Nexus Tahoe ASIC ELAM

Topologia

Passaggio 1 - Verifica dell'ASIC, della slice e dell'SrcId della porta

Fase 2 - Collegamento al modulo

Passaggio 3 - Accedere alla modalità di configurazione ELAM e specificare l'ASIC corretto dal Passaggio 1

Passaggio 4 - Configurare il trigger ELAM

Fase 5 - Impostazione dei trigger ELAM utilizzando SRC e DEST IP

Passaggio 6 - Avviare l'ELAM

Passaggio 7 - Verificare se la ELAM è stata attivata, quindi esaminare i risultati

Visualizzazione dei risultati ELAM per le versioni NX-OS precedenti alla 7.0(3)I5(2)

VXLAN Encapsulated ELAM:

Configurazione ELAM dopo NX-OS 7.0(3)I7(2)

Introduzione

In questo documento vengono descritte le procedurem an ELAM (Embedded Logic Analyzer Module) su una serie di moduli ASIC Cisco Nexus 9000 CloudScale, descrive gli output più rilevanti e come interpretare i risultati.

Suggerimento: Fare riferimento al documento ELAM Overview per una panoramica su ELAM.

Dispositivi interessati

La procedura illustrata in questo documento è applicabile solo ai seguenti componenti hardware:

N9K-C93180YC-EX

N9K-C92304QC

N9K-X9736C-EX

N9K-C92300YC

N9K-C93108TC-EX

N9K-X9788TC-FX

N9K-X9732C-EX

N9K-X97284YC-FX

N9K-X97160YC-EX

N9K-C93180YC-FX

N9K-C93180LC-EX

N9K-C93108TC-FX

N9K-C92160YC-X

N9K-C9348GC-FXP

N9K-C9272Q

N9K-X9732C-FX

N9K-C9236C

N9K-C9336C-FX2

N9K-C93240YC-FX2

N9K-C93300YC-FX2

N9K-C9364C

N9K-C932C

Procedura Nexus Tahoe ASIC ELAM

Topologia

Passaggio 1 - Verifica dell'ASIC, della slice e dell'SrcId della porta

N9K-C92160YC-X-2# show hardware internal tah interface e1/49

IfIndex: 436232192

DstIndex: 5952

IfType: 26

Asic: 0 <<<<<<<<< Asic: 0

AsicPort: 56

SrcId: 48 <<<<<<<< Slice: 1 <<<<<<<<< PortOnSlice: 24

Attenzione: ELAM deve essere utilizzato solo su una finestra di terminale in quanto si mantiene il contenuto globale per ciascuna slice, lu-a2d, ecc.

Ad esempio, una porta-canale (PO) può avere due collegamenti, Eth 1/53 che corrisponde alla slice 0 e Eth 1/54 che corrisponde alla slice 1. L'impostazione di ELAM su due finestre di terminale separate alla volta per le diverse slice non è di aiuto in quanto l'ultima slice (ad esempio la slice 1) sovrascrive la prima (slice 0), ottenendo lo stesso risultato su entrambe le finestre di terminale.

È possibile verificare queste informazioni tramite:

N9K-C92160YC-X-2# show system internal ethpm info interface e1/49 | i i src

IF_STATIC_INFO: port_name=Ethernet1/49,if_index:0x1a006000,ltl=5952,slot=0, nxos_port=192,dmod=1,dpid=56,

unit=0,queue=65535,xbar_unitbmp=0x0,ns_pid=255,slice_num=1,port_on_slice=24,src_id=48

Fase 2 - Collegamento al modulo

N9K-C92160YC-X-2# attach mod 1

Passaggio 3 - Accedere alla modalità di configurazione ELAM e specificare l'ASIC corretto dal Passaggio 1

module-1# debug platform internal tah elam asic 0

Passaggio 4 - Configurare il trigger ELAM

Nota: È possibile specificare diverse opzioni in base al pacchetto/flusso acquisito

module-1(TAH-elam)# trigger init asic 0 slice 1 lu-a2d 1 in-select 6 out-select 0 use-src-id 48

Suggerimento:

- Se le porte in entrata e in uscita si trovano su fette diverse sullo stesso ASIC, ELAM sulla fetta in uscita non acquisirà il pacchetto in uscita perché il pacchetto non attraverserà i blocchi LUX sulla fetta in uscita e quindi ignorerà ELAM.

- lu-a2d 0 è utilizzato per l'ELAM inverso, in cui il trigger è basato sul risultato, e lu-a2d 1 è utilizzato per l'ELAM, in cui il trigger è basato sugli attributi del pacchetto

- Utilizzare sempre 6 per la selezione in ingresso e 0 per la selezione in uscita

Avviso: Non usare 0 dopo lu-a2d perché si potrebbe verificare un arresto anomalo dello switch. Per ulteriori informazioni, vedere CSCvd64106.

Fase 5 - Impostazione dei trigger ELAM utilizzando SRC e DEST IP

Nell'esempio, l'indirizzo IP di origine è 192.0.2.2 e l'indirizzo IP di destinazione è 192.0.2.1, come mostrato di seguito:

module-1(TAH-elam-insel6)# reset

module-1(TAH-elam-insel6)# set outer ipv4 dst_ip 192.0.2.1 src_ip 192.0.2.2

Nota: Assicurarsi di "reimpostare" poiché il comando "set" prevarrà in tutti gli ELAM e può impedire che venga attivato o attivato su campi imprevisti.

Passaggio 6 - Avviare l'ELAM

module-1(TAH-elam-insel6)# start

GBL_C++:  [MSG] tahusd_elam_wrapper_init:36:asic type 5 inst 0 slice 1 a_to_d 1 insel 6 outsel 0

GBL_C++:  [MSG] Inside tahusd_elam_wrapper_init

GBL_C++:  [MSG] tahusd_elam_wrapper_enable:7e:asic type 5 inst 0 slice 1 a_to_d 1

GBL_C++:  [MSG]   - writing data=0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001FD901C4E2A0000000000000000000002000000000000000000000000000000000000000000000000000000030001

GBL_C++:  [MSG]   - writing mask=0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001FFFFFFFFFFFE00000000000000000000038000000000000000000000000000000000000000000000000000001FF001

Passaggio 7 - Verificare se la ELAM è stata attivata, quindi esaminare i risultati

Nota: a partire da NX-OS 7.0(3)I5(2) e versioni successive, è disponibile una breve versione del report ELAM, come illustrato di seguito. Se si sta eseguendo una versione precedente alla 7.0(3)I5(2); continuare con "Visualizzazione dei risultati ELAM..." sezione.

module-1(TAH-elam-insel6)# report

SUGARBOWL ELAM REPORT SUMMARY

slot - 1, asic - 1, slice - 1

============================

Incoming Interface: Eth1/49

Src Idx : 0xd, Src BD : 10

Outgoing Interface Info: dmod 1, dpid 14

Dst Idx : 0x602, Dst BD : 10

Packet Type: IPv4

Dst MAC address: CC:46:D6:6E:28:DB Src MAC address: 00:FE:C8:0E:27:15

.1q Tag0 VLAN: 10,  cos = 0x0

Dst IPv4 address: 192.0.2.1 Src IPv4 address: 192.0.2.2

Ver     =  4, DSCP    =    0, Don't Fragment = 0

Proto   =  1, TTL     =   64, More Fragments = 0

Hdr len = 20, Pkt len =   84, Checksum       = 0x667f

L4 Protocol  : 1

ICMP type    : 0

ICMP code    : 0

Drop Info:

----------

LUA:

LUB:

LUC:

LUD:

Final Drops:

- La CLI "report detail" fornisce un output più dettagliato descritto nella sezione successiva. questo è anche l'output predefinito delle versioni precedenti.

- Dst Idx è il valore niv_idx dell'interfaccia di uscita. Per controllare questa condizione, fare riferimento a "show hardware internal tah interface ex/y" | i.niv"

- dmod e dpid corrispondono all'interfaccia in uscita. È possibile controllare questa condizione tramite il comando "show system internal ethpm info int ex/y" | i dpid"

- Inoltre, il comando "show interface hardware-mapping" può essere usato per convalidare il dmod/dpid.

NOTE:

1. Quando si tratta di confermare se il pacchetto viene effettivamente scartato, il campo "Gocce finali" è l'UNICO da considerare.  In altre parole, mentre si possono vedere eccezioni generate in altri campi come LUA/B/C/D, ciò non significa necessariamente che il pacchetto venga scartato. Esaminare attentamente i risultati ottenuti (se necessario, consultare il centro TAC).

2. Per il traffico indirizzato alla CPU viene impostato il flag sup_hit (rapporto dettagliato | grep sup_hit).

- È possibile decodificare il motivo utilizzando 'show system internal access-list sup-redirect-stats all' e associando l'indice sup

- Verificare che sia configurata la modalità di routing del sistema corretta (show system routing mode)

- Per linee guida e limitazioni documentate in Considerazioni sull'implementazione di VXLAN

- Il messaggio "System Routing Mode: template-vxlan-scale" non è applicabile a Cisco NX-OS versione 7.0(3)I5(2) e successive.

- Se si utilizza VXLAN BGP VPN in combinazione con Cisco NX-OS versione 7.0(3)I4(x) o NX-OS versione 7.0(3)I5(1), la "Modalità di routing del sistema: template-vxlan-scale" è richiesto sulle seguenti piattaforme hardware:

- Cisco Nexus 9300-EX Switch

- Cisco Nexus 9500 Switch con schede di linea X9700-EX

- La modifica della modalità "System Routing Mode" richiede un ricaricamento dello switch.

Esempio di traffico con punt CPU:

module-1(TAH-elam-insel6)# report

SUGARBOWL ELAM REPORT SUMMARY

=============================

Incoming Interface: Eth1/3

Src Idx : 0x9, Src BD : 23

Outgoing Interface Info: dmod 1, dpid 72

Dst Idx : 0x601, Dst BD : 802

Packet Type: IPv4

Dst MAC address: B0:8B:CF:A3:D0:4B

Src MAC address: 00:10:DB:FF:10:00

.1q Tag0 VLAN: 23,  cos = 0x0

Dst IPv4 address: 192.0.2.1

Src IPv4 address: 192.0.2.2

Ver     =  4, DSCP    =    2, Don't Fragment = 1

Proto   =  6, TTL     =   49, More Fragments = 0

Hdr len = 20, Pkt len =   60, Checksum       = 0x63c3

L4 Protocol  : 6

TCP Dst Port : 80

TCP Src Port : 46340

Sup hit: 1, Sup Idx : 2720  <<---- CPU punt, use below CLI to resolve the meaning of Sup Idx

Drop Info:

----------

LUA:

LUB:

LUC:

LUD:

Final Drops:

# show system internal access-list sup-redirect-stats all | grep 2720 2720  copp-system-p-acl-http 63

Visualizzazione dei risultati ELAM per le versioni NX-OS precedenti alla 7.0(3)I5(2)

+ L'intestazione è dot1q?

module-1(TAH-elam-insel6)# report | grep pr_lu_vec_l2v.qtag0 GBL_C++: [MSG] pr_lu_vec_l2v.qtag0_vld: 0x1 << dot1q yes? 0x1 GBL_C++: [MSG] pr_lu_vec_l2v.qtag0_cos: 0x0 GBL_C++: [MSG] pr_lu_vec_l2v.qtag0_de: 0x0 GBL_C++: [MSG] pr_lu_vec_l2v.qtag0_vlan: 0xA << VL 10

+ Controllo VLAN:

module-1(TAH-elam-insel6)# report | grep -1 fpx_lookup_vec.lkup.macsakey.key.fid

GBL_C++:  [MSG]         fpx_lookup_vec.lkup.macsakey.key.vld: 0x1

GBL_C++:  [MSG]         fpx_lookup_vec.lkup.macsakey.key.fid_type: 0x0

GBL_C++:  [MSG]         fpx_lookup_vec.lkup.macsakey.key.fid_vld: 0x0

GBL_C++:  [MSG]         fpx_lookup_vec.lkup.macsakey.key.fid: 0xA << dec 0xa = VL 10

GBL_C++:  [MSG]         fpx_lookup_vec.lkup.macsakey.key.mac: 0xFEC80E2715

+ Controllare SRC MAC (è possibile vedere anche questo nel passaggio precedente):

module-1(TAH-elam-insel6)# report | grep -i fpx_lookup_vec.lkup.macsakey.key.mac

GBL_C++:  [MSG]         fpx_lookup_vec.lkup.macsakey.key.mac: 0xFEC80E2715 << 00fe.c80e.2715

GBL_C++:  [MSG]         fpx_lookup_vec.lkup.macsakey.key.mac: 0xFEC80E2715

GBL_C++:  [MSG]         fpx_lookup_vec.lkup.macsakey.key.mac: 0xFEC80E2715

GBL_C++:  [MSG]         fpx_lookup_vec.lkup.macsakey.key.mac: 0xFEC80E2715

GBL_C++:  [MSG]         fpx_lookup_vec.lkup.macsakey.key.mac: 0xFEC80E2715

+ Si tratta di una novità?

module-1(TAH-elam-insel6)# report | grep -1 fpx_lookup_vec.sa_notify_info

GBL_C++:  [MSG]         fpx_lookup_vec.lkup.ptvec.misc1.tcp_flags: 0x0

GBL_C++:  [MSG]   fpx_lookup_vec.sa_notify_info: 0x5200000C060

GBL_C++: [MSG] fpx_lookup_vec.sa_notify_info.enable: 0x0 << This will be set to 0x1 for learning to happen

GBL_C++:  [MSG]     fpx_lookup_vec.sa_notify_info.conv_learn_only: 0x0

+ Controllare SRC e DST IP:

module-1(TAH-elam-insel6)# report | grep vec_l3v.ip.*a

GBL_C++:  [MSG]     pr_lu_vec_l3v.ip.da: 0x00000000000000000c0000201 << DST IP: 192.0.2.1

GBL_C++:  [MSG]     pr_lu_vec_l3v.ip.sa: 0x00000000000000000c0000202 << SRC IP: 192.0.2.2

+ Verifica SRC_ID in entrata:

module-1(TAH-elam-insel6)# report | egrep SRC

GBL_C++:  [MSG]    SRCID: 0x30

module-1(TAH-elam-insel6)# report | grep vec.ihdr.ieth.hdr.src_idx

GBL_C++: [MSG] lurw_vec.ihdr.ieth.hdr.src_idx: 0xA9 << sh hardware internal tah int e1/49 | i i niv_idx

+ Se ELAM non si attiva, avrà il seguente aspetto:

module-1(TAH-elam-insel6)# report

GBL_C++:  [MSG] tahusd_elam_wrapper_report:27d:asic type 5 inst 0 slice 1 a_to_d 1 insel 6 outsel 0

GBL_C++:  [MSG] Inside tahusd_elam_wrapper_dav_report

GBL_C++: [MSG] ELAM not yet triggered <<<<<<

VXLAN Encapsulated ELAM:

Poiché i pacchetti VXLAN verrebbero incapsulati, l'ELAM deve essere attivato sull'intestazione INNER in contrapposizione all'intestazione OUTER - Vedere l'esempio seguente per un frame ARP:

module-1# debug platform internal tah elam asic 0

module-1(TAH-elam)# trigger init asic 0 slice 1 in-select 7 out-select 0 use-src-id 48

module-1(TAH-elam-insel7)# reset

module-1(TAH-elam-insel7)# set inner arp source-ip-addr 192.0.2.2 target-ip-addr 192.0.2.1

module-1(TAH-elam-insel7)# start

module-1(TAH-elam-insel7)# report

Configurazione ELAM dopo NX-OS 7.0(3)I7(2)

Dopo NX-OS 7.0(3)I7(2), ELAM può essere attivato a livello globale senza specificare il numero ASIC o Slice per maggiore facilità. Vedere l'esempio seguente:

Nexus-9K# debug platform internal tah elam

Nexus-9K(TAH-elam)# trigger init

Nexus-9K(TAH-elam-insel6)# reset

Nexus-9K(TAH-elam-insel6)# set outer ipv4 dst_ip 192.0.2.1 src_ip 192.0.2.2

Nexus-9K(TAH-elam-insel6)# start

Nexus-9K(TAH-elam-insel6)# report