Introducción
Este documento describe los pasos utilizados para realizar la operaciónm an ELAM (Lógica integrada yalyzer Module) en una serie de módulos ASIC Cisco Nexus 9000 CloudScale, cubre los resultados más relevantes y describe cómo interpretar los resultados.
Consejo: Refiérase al documento Descripción General de ELAM para ver una descripción general de ELAM.
Hardware aplicable
El procedimiento descrito en este documento se aplica solamente al siguiente 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 |
|
|
Procedimiento ELAM Nexus Tahoe ASIC
Topología

Paso 1 - Verificar ASIC, Slice y SrcId del puerto
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
Precaución: ELAM debe utilizarse sólo en una ventana de terminal, ya que mantiene el contenido global para cada porción, lu-a2d, etc.
Por ejemplo, un canal de puerto (PO) puede tener dos enlaces, Eth 1/53, que corresponde a la división 0 y Eth 1/54, que corresponde a la división 1. La configuración de ELAM en dos ventanas de terminal separadas a la vez para las diferentes porciones no ayudará, ya que la última parte (digamos la sección 1) sobrescribirá la primera (división 0), terminando obteniendo el mismo resultado en ambas ventanas de terminal.
Puede verificar esta información por partida doble a través de:
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
Paso 2: Conexión al módulo
N9K-C92160YC-X-2# attach mod 1
Paso 3 - Ingrese al modo de configuración ELAM y especifique el ASIC adecuado del Paso 1
module-1# debug platform internal tah elam asic 0
Paso 4: Configuración del disparador ELAM
Nota: Hay muchas opciones que puede especificar aquí dependiendo del paquete/flujo capturado
module-1(TAH-elam)# trigger init asic 0 slice 1 lu-a2d 1 in-select 6 out-select 0 use-src-id 48
Consejo:
- Si los puertos de ingreso y de egreso están en diferentes segmentos en el mismo ASIC, entonces ELAM en el segmento de egreso no capturará el paquete saliente porque el paquete no pasará a través de los bloques LUX en el sector de egreso y, por lo tanto, omitirá ELAM.
- lu-a2d 0 se utiliza para ELAM inverso donde el disparador se basa en el resultado y lu-a2d 1 se utiliza para ELAM donde el disparador se basa en los atributos del paquete
- Use always 6 for in-select y 0 for out-select
Advertencia: No utilice 0 después de lu-a2d ya que esto podría bloquear el switch - consulte CSCvd64106 para obtener más detalles
Paso 5 - Configure los disparadores ELAM usando SRC & DEST IP
En este ejemplo, nuestra IP de origen es 192.0.2.2 y la IP de destino es 192.0.2.1 como se muestra a continuación:
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: Asegúrese de "reiniciar" ya que el comando "set" prevalecerá en todos los ELAM y puede hacer que no se active o active en campos inesperados.
Paso 6 - Inicie el 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
Paso 7 - Verifique si su ELAM se activó y luego revise los resultados
Nota: A partir de NX-OS 7.0(3)I5(2) y posteriores, hay una versión breve del informe ELAM como se muestra a continuación. Si está ejecutando pre-7.0(3)I5(2); continúe con la sección "Visualización de los resultados de ELAM...". sección.
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" le proporcionará un resultado más detallado descrito en la sección posterior. Este es también el resultado predeterminado en las versiones anteriores.
- El Dst Idx es el niv_idx de la interfaz de egreso. Esto se puede verificar y/o hacer referencia con "show hardware internal tah interface ex/y | i niv"
- dmod y dpid corresponden a la interfaz de egreso. Esto se puede comprobar con "show system internal ethpm info int ex/y | i dpid"
- Además, "show interface hardware-mapping" se puede utilizar para validar el dmod/dpid.
NOTAS:
1. Cuando se trata de confirmar si el paquete está siendo realmente descartado, el "Descarte Final" es el ÚNICO que se debe considerar. En otras palabras, si bien puede ver excepciones arrojadas en otros campos como LUA/B/C/D, eso no significa necesariamente que el paquete esté siendo descartado. Revise cuidadosamente este resultado (hable con el TAC según sea necesario).
2. El tráfico dirigido a la CPU tendrá el indicador sup_hit establecido (detalle del informe | grep sup_hit).
- Puede decodificar la razón utilizando 'show system internal access-list sup-redirect-stats all' y coincidiendo con el índice sup
- Asegúrese de que esté configurado el 'modo de ruteo del sistema' correcto (show system routing mode)
- Según las pautas y limitaciones documentadas en Consideraciones para la Implementación de VXLAN
-
El modo de routing del sistema: template-vxlan-Scale" no se aplica a Cisco NX-OS versión 7.0(3)I5(2) y posteriores.
-
Cuando se utiliza VXLAN BGP EVPN en combinación con Cisco NX-OS versión 7.0(3)I4(x) o NX-OS versión 7.0(3)I5(1), el "Modo de routing del sistema: template-vxlan-Scale" se requiere en las siguientes plataformas de hardware:
-
Para cambiar el "Modo de routing del sistema" es necesario volver a cargar el switch.
Ejemplo de tráfico que experimenta 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
Visualización de los resultados de ELAM para las versiones de NX-OS anteriores a 7.0(3)I5(2)
+ ¿Tiene este encabezado 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
+ Verificar 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
+ Verifique SRC MAC (puede ver esto también en el paso anterior):
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
+ ¿Es esto un nuevo aprendizaje?
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
+ Comprobación de SRC y 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
+ Verificar el SRC_ID de ingreso:
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
+ Si ELAM no se activa, tendrá el siguiente aspecto:
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 <<<<<<
ELAM encapsulado VXLAN:
Dado que los paquetes VXLAN se encapsularían, el ELAM necesita ser activado en el encabezado INNER en lugar del encabezado OUTER - Consulte el ejemplo a continuación para una trama 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
Configuración de ELAM posterior a NX-OS 7.0(3)I7(2)
Después de NX-OS 7.0(3)I7(2), ahora ELAM se puede activar globalmente sin especificar el número ASIC o Slice para mayor facilidad. Consulte el ejemplo siguiente:
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