Introdução
Este documento descreve as ferramentas incluídas nativamente na ACI que podem ser usadas para depurar problemas de encaminhamento.
Informações de Apoio
O material deste documento foi extraído do livro Troubleshooting Cisco Application Centric Infrastructure, Second Edition, especificamente do capítulo Encaminhamento IntraFabric - Ferramentas.
Além disso, explicações mais detalhadas sobre o ELAM e o Ftriage podem ser encontradas na biblioteca CiscoLive On-Demand na sessão BRKDCN-3900b.
Com O Que Essas Ferramentas Podem Ajudar?
Para solucionar um problema de encaminhamento de uma perspectiva da ACI, compreenda:
- Qual switch está recebendo um fluxo?
- Que decisão de encaminhamento o switch está tomando?
- O switch está desligando-o?
A ACI inclui várias ferramentas que permitem que o usuário obtenha insights detalhados sobre o que está acontecendo em um fluxo específico. As várias seções a seguir demonstram essas ferramentas em detalhes, de modo que apenas uma introdução de alto nível é fornecida aqui.
SPAN e ERSPAN
O SPAN e o ERSPAN são ferramentas que permitem que todo ou parte do tráfego recebido em um local específico seja replicado em outro local. Espera-se que o dispositivo final para o qual o tráfego replicado é enviado esteja executando algum tipo de aplicativo analisador/sniffer de pacotes. O SPAN tradicional envolve a replicação do tráfego que está sendo recebido em uma porta e transmitido por outra porta. A ACI oferece suporte a essa ação, além do ERSPAN.
O ERSPAN segue o mesmo conceito, exceto replicar o tráfego de uma porta local; o tráfego replicado é encapsulado em GRE e enviado a um destino remoto. Na ACI, esse destino de ERSPAN deve ser aprendido apenas como um endpoint de Camada 3 e pode ser qualquer EPG em qualquer VRF.
É uma boa ideia ter sempre os destinos de SPAN conectados à estrutura para minimizar o tempo de preparação durante a solução de problemas e permitir a rápida configuração e captura da sessão de ERSPAN.
ELAM
Overview
O ELAM (Embedded Logic Analyzer Module) é uma ferramenta que permite ao usuário definir condições no hardware e capturar o primeiro pacote ou quadro que corresponda às condições definidas. Uma captura bem-sucedida faz com que o status do ELAM seja mostrado como "acionado". Uma vez disparado, o ELAM é desativado e um dump pode ser coletado para analisar o grande número de decisões de encaminhamento que o ASIC do switch está tomando com esse pacote/quadro. O ELAM é implementado no nível ASIC e não afeta a CPU ou outros recursos no switch.
Os exemplos de encaminhamento neste manual usam o ELAM como um meio de verificar o que está acontecendo com o fluxo. Os exemplos mostram a versão do CLI leaf e o aplicativo ELAM Assistant.
Este guia não aborda o uso do ELAM em switches leaf de primeira geração (switches sem sufixo EX, FX ou FX2).
Antes de usar a ferramenta, é importante entender a estrutura da sintaxe de comando.
Exemplo na CLI do leaf:
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]
Defina Condições como "trigger"
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]
Gerar o despejo contendo a análise do pacote
ereport [display detailed forwarding decision for the packet]
Continue a inserir o comando status para exibir o estado do disparador. Quando um pacote que corresponde às condições definidas é detectado no ASIC, a saída do status mostra "disparado". Depois que o ELAM for acionado, os detalhes das decisões de encaminhamento do switch podem ser mostrados com 'report'. Antes da ACI versão 4.2, o 'relatório' deve ser usado.
ASICs
Na sintaxe ELAM, observe que o ASIC deve ser especificado. Como o ASIC depende do modelo do switch, consulte esta tabela para determinar qual ASIC deve ser especificado:
Tabela de ASICs
Família de placas de switch/linha |
Asic para Elam |
Switches/LCs -EX |
TAH |
-Switches FX(P)/LCs |
ROC |
Switches/LCs -FX2 |
ROC |
Switches C (9364C,9332C) |
ROC |
Switches -GX |
APP |
Switches -GX2 |
CHO |
Switches -FX3 |
ROC |
Seleção do Disparador ELAM
O outro componente do ELAM que deve ser compreendido ao executar a partir do CLI é o in-select. O in-select define quais cabeçalhos o pacote/quadro deve ter e em que coincidir.
Por exemplo, um pacote proveniente de uma porta de downlink que não seja encapsulada em VXLAN teria apenas cabeçalhos externos de Camada 2, Camada 3 e Camada 4.
Um pacote proveniente de uma porta do painel frontal (downlink) que é encapsulada por VXLAN (como o Cisco ACI Virtual Edge no modo VXLAN) ou proveniente de uma coluna de upstream teria encapsulamento de VXLAN. Isso significa que ela teria potencialmente cabeçalhos externos e internos das Camadas 2, 3 e 4.
Todas as opções de acionamento são:
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
Se in-select 6 estiver selecionado, a única opção será definir condições e exibir cabeçalhos dos cabeçalhos das Camadas 2, 3 ou 4 externas. Se in-select 14 for selecionado, a única opção será definir condições para e ver os detalhes dos cabeçalhos externos e internos das Camadas 2, 3 e 4.
Observação sobre práticas recomendadas:
Para capturar um pacote que vem com encapsulamento de VLAN em uma porta de downlink, use 'in-select 6'
Para capturar um pacote com encapsulamento de VXLAN (de um spine ou de um vleaf com encapsulamento de VXLAN), use in-select 14.
Seleção de saída do acionador ELAM
A out-select permite controlar quais resultados de pesquisa são exibidos no relatório ELAM. Para fins mais práticos, out-select 0 pode ser usado, pois contém a maioria das informações, incluindo o vetor de queda, que informa se o resultado da pesquisa é descartar o pacote/quadro.
Observe que quando o relatório em vez do relatório ou o detalhe do relatório é usado para obter resultados do ELAM, o vetor de queda só aparece em out-select 1. No entanto, sempre é possível executar relatório ou detalhes do relatório com out-select 0.
Condições do conjunto ELAM
O ELAM suporta uma grande quantidade de condições das Camadas 2, 3 e 4 para procurar em um pacote. Especificar inner vs. outer determina se a condição pode ser verificada no cabeçalho interno (pacote encapsulado VXLAN) ou no cabeçalho externo.
Exemplo ARP:
set outer arp source-ip-address 10.0.0.1 target-ip-address 10.0.0.2
Exemplo de endereço MAC:
set outer l2 src_mac aaaa.bbbb.cccc dst_mac cccc.bbbb.aaaa
Exemplo de endereço IP no cabeçalho interno:
set inner ipv4 src_ip 10.0.0.1 dst_ip 10.0.0.2
Exibindo o relatório do ELAM
Verifique se o ELAM foi acionado com o status:
module-1(DBG-elam-insel6)# status
ELAM STATUS
===========
Asic 0 Slice 0 Status Armed
Asic 0 Slice 1 Status Triggered
relatório pode ser usado para exibir o resultado do ELAM em um formato fácil de entender. Observe que o relatório do ELAM é salvo na pasta /var/log/dme/log/ no switch. Há dois arquivos para o ELAM sob a pasta.
- elam_<timestamp>.txt
- pretty_elam_<timestamp>.txt
Exemplo completo de ELAM
Este exemplo capturaria um tráfego encapsulado não-VXLAN (correspondente no cabeçalho externo) vindo de uma porta de downlink em um 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
Aplicativo ELAM Assistant
Os exemplos de solução de problemas neste manual também mostram o uso do aplicativo ELAM Assistant, que pode ser baixado pelo Cisco DC App Center (https://dcappcenter.cisco.com). Essa ferramenta automatiza a implantação e a interpretação de ELAMs por meio da GUI no APIC.
Este exemplo mostra a implantação de um ELAM que corresponde a um IP de origem e de destino específico na porta de downlink do nó 101
ElamAssistant
ElamAssistant - Detalhes
O ELAM Assistant também permite o fácil uso de parâmetros de correspondência mais complexos, como a interface de origem ou valores de VXLAN.
Triagem
A triagem é uma ferramenta baseada no APIC CLI que tem o objetivo de fornecer automação completa da configuração e interpretação do ELAM. A premissa da ferramenta é que um usuário pode definir um fluxo específico, bem como a folha onde o fluxo deve começar. A ferramenta executa ELAMs em cada nó, um por um, para examinar o fluxo de encaminhamento. Ele é particularmente útil em topologias grandes em que não está claro qual caminho um pacote toma.
A Triagem gera um grande arquivo de log contendo a saída de cada comando executado. O nome deste arquivo está visível nas primeiras linhas da saída do fTriage.
A conclusão da triagem pode levar até 15 minutos.
Examples
Mapeie o fluxo para comunicação roteada entre 10.0.1.1 e 10.0.2.1 começando na folha 104:
ftriage route -ii LEAF:104 -dip 10.0.2.1 -sip 10.0.1.1
Mapeie um fluxo de Camada 2 começando no leaf 104:
ftriage bridge -ii LEAF:104 -dmac 02:02:02:02:02:02
A ajuda completa da triagem pode ser vista executando-se a triagem —help no APIC.
tcpdump
o tcpdump pode ser aproveitado nos switches da ACI para capturar o tráfego de e para o plano de controle. Observe que somente o tráfego de plano de controle enviado à CPU do switch pode ser observado em uma captura tcpdump. Alguns exemplos são: protocolos de roteamento, LLDP/CDP, LACP, ARP, etc. Para capturar tráfego de dataplane (e plano de controle), use SPAN e/ou ELAM.
Para capturar na CPU, especifique a interface kpm_inb. Estão disponíveis as opções e os filtros mais tradicionais do tcpdump.
Exemplo para capturar o ICMP destinado a um SVI no switch leaf:
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
Além disso, a opção -w permite que o tcpdump grave a captura de pacotes em um arquivo PCAP para que possa ser aberto em ferramentas como o Wireshark.
Para usar tcpdump na interface eth0, que é a interface out-of-band no switch. Isso é útil para solucionar problemas de conectividade de qualquer tráfego que passe pela porta física fora da banda do switch. Isso seria principalmente tráfego baseado em plano de controle, como SSH, SNMP, etc.
Contadores atômicos sob demanda
Os contadores atômicos sob demanda são destinados a contar pacotes dentro de um fluxo específico à medida que saem em um uplink de folha e são recebidos em outra porta de estrutura de folha. Eles permitem alguma granularidade se os pacotes foram perdidos ou recebidos em excesso.