Einleitung
In diesem Dokument werden die erforderlichen Schritte beschrieben, umm an ELAM (Embedded Logicalyzer-Modul) auf einer Reihe von Cisco Nexus 9000 CloudScale ASIC-Modulen zu integrieren, deckt die wichtigsten Outputs ab und beschreibt, wie die Ergebnisse interpretiert werden.
Tipp: Im Dokument "ELAM Overview" (ELAM-Übersicht) finden Sie einen Überblick über ELAM.
Relevante Hardware
Das in diesem Dokument beschriebene Verfahren gilt nur für die folgende 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-C9332C |
|
|
Nexus Tahoe ASIC ELAM-Verfahren
Topologie
Schritt 1 - Überprüfen der ASIC, des Slice und der SrcId des Ports
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
Vorsicht: ELAM sollte nur in einem Terminal-Fenster verwendet werden, da Sie globale Inhalte für jedes Segment, lu-a2d usw. verwalten.
Beispielsweise kann ein Port-Channel (PO) zwei Verbindungen aufweisen, Eth 1/53, die Slice 0 entspricht, und Eth 1/54, die Slice 1 entspricht. Die gleichzeitige Einrichtung von ELAM auf zwei separaten Terminalfenstern für die verschiedenen Abschnitte ist nicht hilfreich, da letzterer Abschnitt (z. B. Abschnitt 1) den ersten Abschnitt (Abschnitt 0) überschreibt, sodass das gleiche Ergebnis auf beiden Terminalfenstern erzielt wird.
Sie können diese Informationen erneut überprüfen:
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
Schritt 2 - Anschließen an das Modul
N9K-C92160YC-X-2# attach mod 1
Schritt 3 - Wechseln in den ELAM-Konfigurationsmodus und Festlegen des richtigen ASIC aus Schritt 1
module-1# debug platform internal tah elam asic 0
Schritt 4 - Konfigurieren des ELAM-Triggers
Hinweis: Je nach Paket/Fluss, der erfasst wird, können Sie hier viele Optionen angeben.
module-1(TAH-elam)# trigger init asic 0 slice 1 lu-a2d 1 in-select 6 out-select 0 use-src-id 48
Tipp:
- Befinden sich die Eingangs- und Ausgangsports auf unterschiedlichen Slices im gleichen ASIC, erfasst ELAM im Ausgangssegment das ausgehende Paket nicht, da das Paket nicht durch die LUX-Blöcke im Ausgangssegment läuft und somit ELAM umgeht.
- lu-a2d 0 wird für Reverse-ELAM verwendet, wobei der Trigger auf dem Ergebnis basiert, und lu-a2d 1 wird für ELAM verwendet, wobei der Trigger auf Paketattributen basiert.
- Immer 6 für In-Select und 0 für Out-Select verwenden
Warnung: Verwenden Sie nach lu-a2d nicht 0, da dies den Switch zum Absturz bringen könnte. Weitere Informationen finden Sie unter CSCvd64106.
Schritt 5: Festlegen der ELAM-Trigger mithilfe von SRC und DEST IP
In diesem Beispiel lautet die Quell-IP 192.0.2.2, und die Ziel-IP lautet 192.0.2.1 (siehe unten):
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
Hinweis: Stellen Sie sicher, dass der Befehl "set" zurückgesetzt wird, da er in allen ELAMs verwendet wird und nicht in unerwarteten Feldern ausgelöst werden kann.
Schritt 6 - Starten des 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
Schritt 7: Überprüfen Sie, ob der ELAM ausgelöst wurde, und prüfen Sie die Ergebnisse.
Hinweis: Ab NX-OS 7.0(3)I5(2) gibt es eine kurze Version des ELAM-Berichts (siehe unten). Wenn Sie ELAM-Versionen vor 7.0(3)I5(2) verwenden, fahren Sie mit dem Abschnitt "Anzeigen der ELAM-Ergebnisse ..." fort.
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:
- Die CLI "report detail" bietet eine ausführlichere Ausgabe, die im späteren Abschnitt beschrieben wird. Dies ist auch die Standardausgabe für ältere Versionen.
- Der Dst Idx ist der niv_idx der Egress-Schnittstelle. Dies kann überprüft und/oder referenziert werden mit "show hardware internal tah interface ex/y | i niv"
- Die dmod und dpid entsprechen der Ausgangsschnittstelle. Dies kann mit "show system internal ethpm info int ex/y" | i dpid"
- Darüber hinaus kann "show interface hardware-mapping" verwendet werden, um dmod/dpid zu validieren.
HINWEISE:
1. Wenn es um die Bestätigung geht, ob das Paket tatsächlich verworfen wird, ist das Feld "Final Drops" das EINZIGE, das berücksichtigt werden muss. Mit anderen Worten: Auch wenn in anderen Feldern wie LUA/B/C/D Ausnahmen ausgelöst werden, bedeutet dies nicht unbedingt, dass das Paket verworfen wird. Bitte überprüfen Sie diese Ausgabe sorgfältig (sprechen Sie ggf. mit dem TAC).
2. Für den an die CPU gesendeten Datenverkehr wird das sup_hit-Flag festgelegt (Detail des Berichts). | grep sup_hit).
- Sie können den Grund dekodieren, indem Sie "show system internal access-list sup-redirect-stats all" verwenden und den sup-Index suchen.
- Stellen Sie sicher, dass der richtige 'System-Routingmodus' konfiguriert ist (System-Routingmodus anzeigen)
- Gemäß Richtlinien und Einschränkungen, die in Überlegungen zur VXLAN-Bereitstellung dokumentiert sind
-
Der Befehl "System Routing Mode: template-vxlan-scale" gilt nicht für Cisco NX-OS 7.0(3)I5(2) und höher.
-
Bei Verwendung von VXLAN BGP EVPN in Kombination mit Cisco NX-OS Version 7.0(3)I4(x) oder NX-OS Version 7.0(3)I5(1) ist der "System Routing Mode: template-vxlan-scale" auf den folgenden Hardwareplattformen erforderlich:
-
Zum Ändern des "System Routing Mode" (System-Routing-Modus) muss der Switch neu geladen werden.
Beispiel für Datenverkehr mit 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
Anzeigen der ELAM-Ergebnisse für NX-OS-Versionen vor 7.0(3)I5(2)
+ Gibt es hier einen 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 prüfen:
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
+ Überprüfen Sie SRC MAC (dies wird übrigens auch im vorherigen Schritt gezeigt):
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
+ Ist dies eine neue lernen?
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
+ SRC- und DST-IP überprüfen:
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
+ Überprüfen Sie Ihre Eingangs-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
+ Wenn ELAM nicht ausgelöst wird, sieht es wie folgt aus:
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-gekapselter ELAM:
Da VXLAN-Pakete gekapselt werden, muss der ELAM im INNER-Header und nicht im OUTER-Header ausgelöst werden - ein ARP-Frame ist im Beispiel unten dargestellt:
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-Konfiguration nach NX-OS 7.0(3)I7(2)
Nach NX-OS 7.0(3)I7(2) kann ELAM jetzt global ausgelöst werden, ohne dass die ASIC- oder Slice-Nummer angegeben werden muss - siehe folgendes Beispiel:
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