Introducción
Este documento describe las herramientas nativas incluidas en ACI que se pueden utilizar para depurar problemas de reenvío.
Antecedentes
El material de este documento se extrajo del libro Troubleshooting de Cisco Application Centric Infrastructure, Second Edition, específicamente del capítulo Reenvío de Intra-Fabric - Herramientas.
Además, se pueden encontrar explicaciones más detalladas de ELAM y Ftriage en la biblioteca Cisco Live On-Demand en la sesión BRKDCN-3900b.
¿En Qué Pueden Ayudar Estas Herramientas?
Para solucionar un problema de reenvío desde una perspectiva de ACI, debe entender:
- ¿Qué switch recibe un flujo?
- ¿Qué decisión de reenvío toma ese switch?
- ¿El switch lo está descartando?
ACI incluye varias herramientas que permiten al usuario obtener información detallada sobre lo que está sucediendo en un flujo específico. En las siguientes secciones se muestran estas herramientas en detalle, por lo que aquí solo se proporciona una introducción general.
SPAN y ERSPAN
SPAN y ERSPAN son herramientas que permiten replicar todo o parte del tráfico recibido en una ubicación específica en otra ubicación. Se espera que el dispositivo final al que se envía el tráfico replicado esté ejecutando algún tipo de aplicación de analizador/rastreador de paquetes. El SPAN tradicional implica replicar el tráfico que se recibe en un puerto y que se transmite a través de otro puerto. ACI permite hacerlo además de ERSPAN.
ERSPAN sigue el mismo concepto excepto replicar el tráfico fuera de un puerto local; el tráfico replicado se encapsula en GRE y se envía a un destino remoto. En ACI, este destino de ERSPAN solo se debe aprender como un punto final de Capa 3 y puede ser cualquier EPG en cualquier VRF.
Es una buena idea tener siempre los destinos SPAN conectados al fabric para minimizar el tiempo de preparación durante la resolución de problemas y permitir una rápida configuración y captura de sesiones ERSPAN.
ELAM
Overview
Embedded Logic Analyzer Module (ELAM) es una herramienta que permite al usuario establecer condiciones en el hardware y capturar el primer paquete o trama que coincida con las condiciones establecidas. Una captura correcta hace que el estado de ELAM se muestre como "activado". Una vez que se activa, la ELAM se inhabilita y se puede recopilar un volcado para analizar el gran número de decisiones de reenvío que el ASIC del switch está tomando con ese paquete/trama. ELAM se implementa en el nivel ASIC y no afecta a la CPU ni a otros recursos del switch.
Los ejemplos de reenvío de este libro utilizan ELAM como medio para verificar lo que está sucediendo con el flujo. Ejemplos muestra la versión de la CLI de hoja y la aplicación ELAM Assistant.
Esta guía no cubre el uso de ELAM en switches de hoja de primera generación (switches sin sufijo EX, FX o FX2).
Antes de utilizar la herramienta, es importante comprender la estructura de la sintaxis del comando.
Ejemplo en la CLI de hoja:
vsh_lc [This command enters the line card shell where ELAMs are run]
debug platform internal <asic> elam asic 0 [refer to the ASICs table]
Establecer condiciones en "desencadenador"
trigger reset [ensures no existing triggers are running]
trigger init in-select <number> out-select <number> [determines what information about a packet is displayed and which conditions can be set]
set outer/inner [sets conditions]
start [starts the trigger]
status [checks if a packet is captured]
Generar el volcado que contiene el análisis de paquetes
ereport [display detailed forwarding decision for the packet]
Continúe ingresando el comando status para ver el estado del disparador. Una vez que se detecta un paquete que coincide con las condiciones definidas en el ASIC, la salida del estado muestra "desencadenado". Una vez que se ha activado la ELAM, los detalles de las decisiones de reenvío del switch se pueden mostrar con 'Report'. Antes de la versión 4.2 de ACI, se debe utilizar 'report'.
ASIC
Dentro de la sintaxis de ELAM, observe que se debe especificar el ASIC. Dado que el ASIC depende del modelo de switch, consulte esta tabla para determinar qué ASIC debe especificar:
Tabla ASICs
Familia de tarjetas de switch/línea |
Asic para Elam |
-Switches EX/LC |
TAH |
-Switches FX(P)/LC |
ROC |
-Switches/LC FX2 |
ROC |
Switches C (9364C, 9332C) |
ROC |
-Switches GX |
APLICACIÓN |
-Switches GX2 |
CHO |
-Switches FX3 |
ROC |
ELAM Trigger in-select
El otro componente del ELAM que debe entenderse cuando se ejecuta desde la CLI es el in-select. El comando in-select define qué encabezados se espera que tenga el paquete/trama y cuáles coinciden.
Por ejemplo, un paquete proveniente de un puerto de enlace descendente que no esté encapsulado VXLAN sólo tendría encabezados de capa 2, capa 3 y capa 4 externos.
Un paquete procedente de un puerto de panel frontal (enlace descendente) encapsulado en VXLAN (como Cisco ACI Virtual Edge en modo VXLAN) o procedente de una columna ascendente tendría encapsulado VXLAN. Esto significa que tendría encabezados de capa 2, capa 3 y capa 4 tanto internos como externos.
Todas las opciones de desencadenador son:
leaf1# vsh_lc
module-1# debug platform internal tah elam asic 0
module-1(DBG-elam)# trigger reset
module-1(DBG-elam)# trigger init in-select ?
10 Outerl4-innerl4-ieth
13 Outer(l2|l3|l4)-inner(l2|l3|l4)-noieth
14 Outer(l2(vntag)|l3|l4)-inner(l2|l3|l4)-ieth
15 Outer(l2|l3|l4)-inner(l2|l3|l4)-ieth
6 Outerl2-outerl3-outerl4
7 Innerl2-innerl3-innerl4
8 Outerl2-innerl2-ieth
9 Outerl3-innerl3
Si se selecciona in-select 6, la única opción es establecer condiciones y mostrar encabezados de los encabezados externos de capa 2, 3 o 4. Si se selecciona in-select 14, la única opción es establecer condiciones para y ver los detalles de los encabezados de las capas 2, 3 y 4 interna y externa.
Nota de prácticas recomendadas:
Para capturar un paquete que viene con encapsulación VLAN en un puerto de link descendente, utilice 'in-select 6'
Para capturar un paquete con encapsulación VXLAN (ya sea desde una columna o desde una hoja de datos con encapsulación VXLAN), utilice in-select 14.
ELAM Trigger out-select
La opción out-select permite controlar qué resultados de búsqueda se muestran en el informe de ELAM. Para la mayoría de los propósitos prácticos, out-select 0 se puede utilizar ya que contiene la mayor parte de la información, incluido el vector de descarte, que indica si el resultado de la búsqueda es descartar el paquete/trama.
Tenga en cuenta que cuando el informe en lugar del informe o el detalle del informe se utiliza para obtener resultados de ELAM, el vector de descarte solo aparece en out-select 1. Sin embargo, siempre se puede realizar un informe o informe detallado con out-select 0.
Condiciones del conjunto de ELAM
ELAM soporta una gran cantidad de condiciones de Capa 2, 3 y 4 para buscar en un paquete. La especificación de inner vs. outer determina si la condición se puede verificar en el encabezado interno (paquete encapsulado VXLAN) o en el encabezado externo.
Ejemplo de ARP:
set outer arp source-ip-address 10.0.0.1 target-ip-address 10.0.0.2
Ejemplo de dirección MAC:
set outer l2 src_mac aaaa.bbbb.cccc dst_mac cccc.bbbb.aaaa
Ejemplo de dirección IP en el encabezado interno:
set inner ipv4 src_ip 10.0.0.1 dst_ip 10.0.0.2
Visualización del informe de ELAM
Verifique que la ELAM se haya desencadenado con el estado:
module-1(DBG-elam-insel6)# status
ELAM STATUS
===========
Asic 0 Slice 0 Status Armed
Asic 0 Slice 1 Status Triggered
El informe se puede utilizar para mostrar el resultado de la ELAM en un formato fácil de entender. Observe que el informe ELAM se guarda en la carpeta /var/log/dme/log/ en el switch. Hay dos archivos para el ELAM debajo de la carpeta.
- elam_<timestamp>.txt
- Pretty_Elam_<timestamp>.txt
Ejemplo de ELAM completo
Este ejemplo capturaría un tráfico no encapsulado VXLAN (coincidente en el encabezado externo) proveniente de un puerto de link descendente en un switch -EX:
module-1# debug platform internal tah elam asic 0
module-1(DBG-elam)# trigger reset
module-1(DBG-elam)# trigger init in-select 6 out-select 0
module-1(DBG-elam-insel6)# set outer ipv4 src_ip 10.0.0.1 dst_ip 10.0.0.2
module-1(DBG-elam-insel6)# start
module-1(DBG-elam-insel6)# status
module-1(DBG-elam-insel6)# ereport
Aplicación ELAM Assistant
Los ejemplos de solución de problemas de este manual también muestran el uso de la aplicación ELAM Assistant que se puede descargar a través del centro de aplicaciones Cisco DC (https://dcappcenter.cisco.com). Esta herramienta automatiza la implementación y la interpretación de los ELAM a través de la GUI en el APIC.
Este ejemplo muestra la implementación de un ELAM que coincide con una IP de origen y destino específica en el puerto de enlace descendente del nodo 101
ElamAssistant
ElamAssistant - Detalle
ELAM Assistant también permite un uso sencillo de parámetros de correspondencia más complejos, como la interfaz de origen o los valores VXLAN.
fTriage
fTriage es una herramienta basada en APIC CLI que pretende proporcionar una automatización integral de la configuración e interpretación de ELAM. La premisa de la herramienta es que un usuario puede definir un flujo específico, así como la hoja donde se espera que comience el flujo. A continuación, la herramienta ejecuta ELAM en cada nodo, uno por uno, para examinar el flujo de reenvío. Es particularmente útil en topologías grandes donde no está claro qué trayectoria toma un paquete.
fTriage genera un archivo de registro grande que contiene la salida de cada comando ejecutado. El nombre de este archivo está visible en las primeras líneas de la salida fTriage.
La finalización del triaje puede tardar hasta 15 minutos.
Examples
Asigne el flujo para la comunicación enrutada entre 10.0.1.1 y 10.0.2.1 a partir de la hoja 104:
ftriage route -ii LEAF:104 -dip 10.0.2.1 -sip 10.0.1.1
Diseñe un flujo de capa 2 a partir de la hoja 104:
ftriage bridge -ii LEAF:104 -dmac 02:02:02:02:02:02
Se puede ver la ayuda completa de fTriage ejecutando ftriage —help en el APIC.
tcpdump
tcpdump se puede aprovechar en los switches ACI para capturar el tráfico desde y hacia el plano de control. Tenga en cuenta que sólo el tráfico del plano de control enviado a la CPU del switch se puede observar en una captura tcpdump. Algunos ejemplos son: protocolos de ruteo, LLDP/CDP, LACP, ARP, etc. Para capturar el tráfico del plano de datos (y del plano de control), utilice SPAN o ELAM.
Para capturar en la CPU, especifique la interfaz kpm_inb. La mayoría de las opciones y filtros tcpdump tradicionales están disponibles.
Ejemplo para capturar el ICMP destinado a una SVI en el switch de hoja:
leaf205# tcpdump -ni kpm_inb icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on kpm_inb, link-type EN10MB (Ethernet), capture size 65535 bytes
20:24:12.921981 IP 10.0.2.100 > 10.0.2.1: ICMP echo request, id 62762, seq 4096, length 64
20:24:12.922059 IP 10.0.2.1 > 10.0.2.100: ICMP echo reply, id 62762, seq 4096, length 64
20:24:13.922064 IP 10.0.2.100 > 10.0.2.1: ICMP echo request, id 62762, seq 4352, length 64
20:24:13.922157 IP 10.0.2.1 > 10.0.2.100: ICMP echo reply, id 62762, seq 4352, length 64
20:24:14.922231 IP 10.0.2.100 > 10.0.2.1: ICMP echo request, id 62762, seq 4608, length 64
20:24:14.922303 IP 10.0.2.1 > 10.0.2.100: ICMP echo reply, id 62762, seq 4608, length 64
Además, la opción -w permite que tcpdump escriba la captura de paquetes en un archivo PCAP para que se pueda abrir en herramientas como Wireshark.
Para utilizar tcpdump en la interfaz eth0, que es la interfaz fuera de banda en el switch. Esto es útil para resolver problemas de conectividad de cualquier tráfico que pase a través del puerto físico fuera de banda del switch. Esto sería principalmente tráfico basado en el plano de control como SSH, SNMP, etc.
Contadores atómicos a demanda
Los contadores atómicos a demanda están diseñados para contar los paquetes dentro de un flujo específico cuando salen de un link ascendente de hoja y se reciben en otro puerto de fabric de hoja. Permiten cierta granularidad en cuanto a si los paquetes se perdieron o se recibieron en exceso.