Inleiding
Dit document beschrijft de stappen die zijn gebruikt omm en ELAM (Embedded Logic AnCatalyst Module) op een reeks Cisco Nexus 9000 CloudScale ASIC-modules, biedt ondersteuning voor de meest relevante uitgangen en beschrijft hoe de resultaten moeten worden geïnterpreteerd.
Tip: raadpleeg het ELAM-overzichtsdocument voor een overzicht van ELAM.
Toepasselijke hardware
De procedure die in dit document wordt bestreken, is alleen van toepassing op de volgende hardware:
N9K-C93180YC-EX |
N9K-C92304QC |
N9K-X9736C-EX |
N9K-C92300YC N |
N9K-C93108TC-EX |
N9K-X978TC-FX switch |
N9K-X9732C-EX |
N9K-X97284YC-FX switch |
N9K-X97160YC-EX |
N9K-C93180YC-FX switch |
N9K-C93180LC-EX |
N9K-C93108TC-FX |
N9K-C92160YC-X switch |
N9K-C9348GC-FXP switch |
N9K-C9272Q switch |
N9K-X9732C-FX switch |
N9K-C9236C switch |
N9K-C936C-FX2 switch |
N9K-C93240YC-FX2
|
N9K-C93300YC-FX2 |
N9K-C9364C switch |
N9K-C932C switch |
|
|
Nexus Tahoe ASIC ELAM Procedure
Topologie
Stap 1 - Controleer de ASIC, Slice en SRCid van de poort
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
Waarschuwing: ELAM mag alleen op één terminalvenster worden gebruikt, aangezien u voor elke plak, lu-a2d, etc. een globale inhoud bijhoudt.
Een poortkanaal (PO) kan bijvoorbeeld twee verbindingen hebben, Eth 1/53 wat overeenkomt met segment 0 en Eth 1/54 wat overeenkomt met segment 1. Het instellen van ELAM op twee afzonderlijke terminalvensters tegelijkertijd voor de verschillende plakken zal niet helpen aangezien de laatste plak (zeg plak 1) de eerste zal overschrijven (plak 0), eindigend in het krijgen van hetzelfde resultaat op beide terminalvensters.
U kunt deze informatie dubbel controleren via:
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
Stap 2 - Bevestig de module
N9K-C92160YC-X-2# attach mod 1
Stap 3 - Voer de ELAM-configuratiemodus in en specificeer de juiste ASIC uit stap 1
module-1# debug platform internal tah elam asic 0
Stap 4 - De ELAM-trigger configureren
Opmerking: er zijn veel opties die u hier kunt opgeven, afhankelijk van het pakket/de stroom die wordt opgenomen
module-1(TAH-elam)# trigger init asic 0 slice 1 lu-a2d 1 in-select 6 out-select 0 use-src-id 48
Tip:
- Als de in- en uitgangen op verschillende plakken op dezelfde ASIC staan, zal ELAM op de uitgang plak niet het uitgaande pakket opnemen omdat het pakket niet door de LUX-blokkeringen op de uitgang plak zal gaan en dus ELAM zal omzeilen.
- lu-a2d 0 wordt gebruikt voor reverse ELAM waarbij de trigger gebaseerd is op het resultaat en lu-a2d 1 wordt gebruikt voor ELAM waarbij de trigger gebaseerd is op pakketkenmerken
- Gebruik altijd 6 voor in-select en 0 voor out-select
Waarschuwing: gebruik geen 0 na lu-a2d omdat de switch hierdoor zou kunnen crashen - zie CSCvd64106 voor meer informatie
Stap 5 - Stel de ELAM-triggers in met SRC & DEST IP
In dit voorbeeld is onze Source IP 192.0.2.2 en Bestemming IP is 192.0.2.1 zoals hieronder wordt weergegeven:
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
Opmerking: Zorg ervoor dat de "reset" als de "set"-opdracht zal zegevieren in alle ELAM's en kan ervoor zorgen dat deze niet wordt geactiveerd of geactiveerd in onverwachte velden.
Stap 6 - Start de 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
Stap 7 - Controleer of uw ELAM is geactiveerd en bekijk de resultaten
Opmerking: beginnend met NX-OS 7.0(3)I5(2) en later is er een korte versie van het ELAM-rapport zoals hieronder te zien. Als u pre-7.0(3)I5(2) loopt; ga verder naar de sectie "Bekijkende ELAM resultaten...".
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:
- De CLI "Report Detail" biedt u een uitgebreidere uitvoer die in de laatste sectie wordt beschreven. Dit is ook de standaarduitvoer op oudere releases.
- De Dst Idx is de niv_idx van de uitgaande interface. Dit kan worden gecontroleerd en/of aangegeven met "Toon hardware interne tah interface ex/y | i niv"
- De dmod en dpid komen overeen met de uitgangsinterface. Dit kan worden gecontroleerd met "toon systeem interne ethpm info in ex/y | i dpid"
- Bovendien "toon interface hardware-mapping" kan worden gebruikt om de dmod/dpid te valideren.
OPMERKINGEN:
1. Als u wilt bevestigen of het pakket daadwerkelijk wordt gedropt, wordt het veld "Final Drops" ALS ENIGE in overweging genomen. Met andere woorden, terwijl u uitzonderingen kunt zien die in andere velden zoals LUA/B/C/D worden geworpen, betekent dat niet per se dat het pakket wordt gedropt. Controleer deze uitvoer zorgvuldig (bespreek dit indien nodig met de TAC).
2. Traffic punted to CPU heeft de sup_hit-vlag ingesteld (rapportdetail | grep sup_hit).
- U kunt de reden decoderen met 'toon systeem interne access-list sup-redirect-stats all' en de sup index
- Zorg ervoor dat de juiste 'systeem routing mode' is geconfigureerd (toon systeem routing mode)
- Per richtlijn en beperking gedocumenteerd in Overwegingen voor VXLAN-implementatie
-
De "System Routing Mode: template-VLAN-schaal" is niet van toepassing op Cisco NX-OS release 7.0(3)I5(2) en hoger.
-
Wanneer u VXLAN BGP EVPN in combinatie met Cisco NX-OS release 7.0(3)I4(x) of NX-OS release 7.0(3)I5(1) gebruikt, is de "System Routing Mode: template-VLAN-schaal" vereist op de volgende hardwareplatforms:
-
Het wijzigen van de "System Routing Mode" vereist een herlading van de switch.
Voorbeeld van verkeer met CPU punt:
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
ELAM-resultaten bekijken voor NX-OS-versies van voor-7.0(3)I5(2)
+ Heeft dit een dot1q header?
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
+ VLAN controleren:
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
+ Controleer SRC MAC (u kunt dit ook in de vorige stap zien):
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
+ Is dit een nieuwe manier van leren?
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
+ Controleer SRC en 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
+ Controleer uw toegang SRC_ID:
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
+ Als ELAM niet activeert, ziet het er als volgt uit:
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 ingesloten ELAM:
Aangezien VXLAN-pakketten worden ingekapseld, moet de ELAM worden geactiveerd op de INNER-header in plaats van op de BUITENheader - Zie voorbeeld hieronder voor een ARP-frame:
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
ELAM-configuratie na NX-OS 7.0(3)I7(2)
Na NX-OS 7.0(3)I7(2) kan ELAM nu wereldwijd worden geactiveerd zonder het ASIC- of Slice-nummer op te geven - Zie voorbeeld hieronder:
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