Introducción
Este documento describe los pasos utilizados para realizarm a ELAM (lógica integrada Analyzer Module) en una serie de módulos ASIC de Cisco Nexus 9000 CloudScale, abarca las salidas más relevantes y describe cómo interpretar los resultados.
Sugerencia: Consulte el documento Descripción General de ELAM para obtener una descripción general de ELAM.
Hardware aplicable
El procedimiento que se describe en este documento sólo se aplica 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-C923C |
N9K-C9336C-FX2 |
N9K-C93240YC-FX2
|
N9K-C93300YC-FX2 |
N9K-C936C |
N9K-C9332C |
|
|
Procedimiento ELAM ASIC de Nexus Tahoe
Topología
Paso 1 - Verificar el ASIC, el Slice y el 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 se debe utilizar solamente en una ventana de terminal ya que usted mantiene el contenido global para cada porción, lu-a2d, etc.
Por ejemplo, un canal de puerto (PO) puede tener dos links, Eth 1/53 que corresponde al segmento 0 y Eth 1/54 que corresponde al segmento 1. La configuración de ELAM en dos ventanas de terminal separadas a la vez para los diferentes segmentos no ayudará ya que el último sector (por ejemplo, el sector 1) sobrescribirá el primero (el sector 0), terminando obteniendo el mismo resultado en ambas ventanas de terminal.
Puede volver a comprobar esta información 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 - Ingresar al modo de configuración de ELAM y especificar el ASIC apropiado 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í en función del paquete/flujo que se captura
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 egreso están en diferentes segmentos en el mismo ASIC, la 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 segmento de egreso y, por lo tanto, omitirá la ELAM.
- lu-a2d 0 se utiliza para el ELAM inverso, donde el disparador se basa en el resultado y lu-a2d 1 se utiliza para el ELAM, donde el disparador se basa en los atributos del paquete
- Utilice siempre 6 para selección interna y 0 para selección externa
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 - Establecer los disparadores de 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 "restablecer", ya que el comando "establecer" prevalecerá en todos los ELAM y puede hacer que no se active o se active en campos inesperados.
Paso 6 - Iniciar 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 versiones posteriores, hay una versión breve del informe de ELAM, como se muestra a continuación. Si ejecuta una versión anterior a la 7.0(3)I5(2), continúe con la sección "Visualización de los resultados de ELAM...".
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 "informe detallado" le proporcionará un resultado más detallado que se describe en la sección posterior. Este es también el resultado predeterminado en versiones anteriores.
- El Dst Idx es el niv_idx de la interfaz de salida. Esto se puede verificar y/o hacer referencia a esto con "show hardware internal tah interface ex/y | i niv"
- El dmod y el dpid corresponden a la interfaz de salida. 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 se está descartando realmente, el campo "Descartes finales" es el ÚNICO a considerar. En otras palabras, si bien es posible que vea excepciones generadas en otros campos como LUA/B/C/D, esto no significa necesariamente que el paquete se esté descartando. Revise atentamente esta información (hable con el TAC si es necesario).
2. El tráfico dirigido a la CPU tendrá el indicador sup_hit establecido (detalles del informe) | grep sup_hit).
- Puede descodificar la razón usando 'show system internal access-list sup-redirect-stats all' y haciendo coincidir el índice sup
- Asegúrese de que el 'modo de ruteo del sistema' esté configurado correctamente (show system routing mode)
- Según las directrices y limitaciones documentadas en Consideraciones para la implementación de VXLAN
-
El "Modo de routing del sistema: template-vxlan-scale" no es aplicable 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), se requiere el "System Routing Mode: template-vxlan-scale" en las siguientes plataformas de hardware:
-
Para cambiar el "Modo de enrutamiento del sistema" es necesario volver a cargar el switch.
Ejemplo de tráfico que experimenta punt de 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
Visualización de los resultados de ELAM para las versiones de NX-OS anteriores a la 7.0(3)I5(2)
+ ¿Tiene un 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
+ Comprobar 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
+ Comprobar 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
+ Comprobar IP SRC y DST:
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
+ Compruebe su SRC_ID de entrada:
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 la 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, la ELAM debe activarse en el encabezado INNER en lugar del encabezado OUTER - Vea 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)
Tras NX-OS 7.0(3)I7(2), ELAM ahora se puede activar globalmente sin especificar el ASIC o el número de segmento 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