Nexus 9000 Cloud Scale ASIC (Tahoe) NX-OS ELAM
Nexus 9000 Cloud Scale ASIC (Tahoe) NX-OS ELAM
Nexus 9000 Cloud Scale ASIC (Tahoe) NX-OS ELAM
ELAM
Contents
Introduction
Applicable Hardware
Nexus Tahoe ASIC ELAM Procedure
Topology
Step 1 - Verify port's ASIC, Slice and SrcId
Step 2 - Attach to the module
Step 3 - Enter ELAM configuration mode and specify the proper ASIC from Step 1
Step 4 - Configure the trigger - (There are many options you can specify here)
Step 5 - Set the ELAM triggers using SRC & DEST IP from this example
Step 6 - Start the ELAM
Step 7 - Verify if your ELAM triggered and review the results
Viewing ELAM results for NX-OS versions pre-7.0(3)I5(2)
VXLAN Encapsulated ELAM:
ELAM configuration post NX-OS 7.0(3)I7(2)
Introduction
This document describes the steps used in order to perform an ELAM (Embedded Logic Analyzer
Module) on a series of Cisco Nexus 9000 CloudScale ASIC modules, covers the most relevant
outputs, and describes how to interpret the results.
Applicable Hardware
The procedure covered in this document is applicable to the following hardware only:
N9K-C93180YC-
N9K-C92304QC
EX
N9K-X9736C-EX N9K-C92300YC
N9K-C93108TC-
N9K-X9788TC-FX
EX
N9K-X97284YC-
N9K-X9732C-EX
FX
N9K-X97160YC- N9K-C93180YC-
EX FX
N9K-C93180LC- N9K-C93108TC-
EX FX
N9K-C9348GC-
N9K-C92160YC-X
FXP
N9K-C9272Q N9K-X9732C-FX
N9K-C9236C
Caution: ELAM should be used only on one terminal window as you maintain global content
for each slice, lu-a2d, etc.
For example a port-channel (PO) may have two links, Eth 1/53 which corresponds to slice 0
and Eth 1/54 which corresponds to slice 1. Setting up ELAM on two separate terminal
windows at a time for the different slices will not help as the latter slice (say slice 1) will
overwrite the first one (slice 0), ending up in getting the same result on both terminal
windows.
Tip:
● If the ingress and egress ports are on different slices on the same ASIC, then ELAM on
egress slice will not capture the outgoing packet because the packet will not go through the
LUX Blocks on the egress slice and hence will bypass ELAM.
● lu-a2d 0 is used for reverse ELAM where the trigger is based on the result and lu-a2d 1 is
used for ELAM where the trigger is based on packet attributes
● Use always 6 for in-select and 0 for out-select
Warning: Do not use 0 after lu-a2d as this might crash the switch - see CSCvd64106 for
more details
Step 5 - Set the ELAM triggers using SRC & DEST IP from this example
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
Note: Make sure to "reset" as the "set" command will prevail throughout ELAMs and can cause it
to not trigger or trigger on unexpected fields.
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=0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000001FD901C4E2A000000000000000000000200000000000000000000000000000000000
0000000000000000000030001
GBL_C++: [MSG] - writing
mask=0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000001FFFFFFFFFFFE000000000000000000000380000000000000000000000000000000000
00000000000000000001FF001
Step 7 - Verify if your ELAM triggered and review the results
Note: Starting with NX-OS 7.0(3)I5(2) and later, there's a brief version of the ELAM report as seen below. If you are running pre-7.0(3)I5(2); continue
to the "Viewing ELAM results..." section.
module-1(TAH-elam-insel6)# report
L4 Protocol : 1
ICMP type : 0
ICMP code : 0
Drop Info:
----------
LUA:
LUB:
LUC:
LUD:
Final Drops:
"report detail" will provide you a more verbose output described in the later section and the
default output on older releases.
The Dst Idx is the niv_idx of the egress interface. This can be checked with "show hardware
internal tah interface ex/y | i niv"
The dmod and dpid are also corresponding to the egress interface. This can be checked with
"show system internal ethpm info int ex/y | i dpid"
NOTES:
1. When it comes to confirming whether the packet is actually being dropped, the "Final
Drops" field is the ONLY one to consider. In other words, while you may see exceptions
thrown in other fields like LUA/B/C/D, that does not necessarily mean that the packet is being
dropped. Please review this output carefully.
2. Traffic punted to CPU will have the sup_hit flag set (report detail | grep sup_hit).
You can decode the reason by using 'show system internal access-list sup-
redirect-stats all' and matching the sup index Ensure that the correct 'system routing mode'
is configured (show system routing mode) Per guidelines and limitations documented in
Considerations for VXLAN Deployment The “System Routing Mode: template-vxlan-scale” is
not applicable to Cisco NX-OS Release 7.0(3)I5(2) and later.When using VXLAN BGP EVPN
in combination with Cisco NX-OS Release 7.0(3)I4(x) or NX-OS Release 7.0(3)I5(1), the
“System Routing Mode: template-vxlan-scale” is required on the following hardware
platforms:Cisco Nexus 9300-EX SwitchesCisco Nexus 9500 Switches with X9700-EX line
cardsChanging the “System Routing Mode” requires a reload of the switch.
Example of traffic experiencing CPU punt
module-1(TAH-elam-insel6)# report
Drop Info:
----------
LUA:
LUB:
LUC:
LUD:
Final Drops:
2720 copp-system-p-acl-http 63
Viewing ELAM results for NX-OS versions pre-7.0(3)I5(2)
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 <<<<<<
Post NX-OS 7.0(3)I7(2), ELAM can now be triggered globally without specifying the ASIC or Slice number for ease - See example below: