Introduction
Ce document décrit les outils nativement inclus dans l'ACI qui peuvent être utilisés pour déboguer les problèmes de transfert.
Informations générales
Le contenu de ce document a été extrait du livre Troubleshooting Cisco Application Centric Infrastructure, Second Edition, en particulier le chapitre Intra-Fabric Forwarding - Tools (Transfert intra-fabric - Outils).
En outre, des explications plus détaillées sur ELAM et Ftriage sont disponibles dans la bibliothèque CiscoLive On-Demand de la session BRKDCN-3900b.
En Quoi Ces Outils Peuvent-Ils Aider ?
Afin de dépanner un problème de transfert du point de vue de l'ACI, comprenez :
- Quel commutateur reçoit un flux ?
- Quelle est la décision de transmission prise par ce commutateur ?
- Le commutateur l'abandonne-t-il ?
L'ACI comprend plusieurs outils qui permettent à l'utilisateur d'obtenir des informations détaillées sur ce qui se passe dans un flux spécifique. Les sections suivantes présentent ces outils en détail. Seule une introduction de haut niveau est fournie ici.
SPAN et ERSPAN
Les fonctions SPAN et ERSPAN permettent de répliquer tout ou partie du trafic reçu à un emplacement spécifique vers un autre emplacement. Le périphérique final auquel le trafic répliqué est envoyé doit exécuter un type d’application analyseur/analyseur de paquets. La fonctionnalité SPAN traditionnelle consiste à répliquer le trafic reçu sur un port et transmis via un autre port. L'ACI prend en charge cette fonctionnalité en plus d'ERSPAN.
ERSPAN suit le même concept, à l'exception de la réplication du trafic à partir d'un port local ; le trafic répliqué est encapsulé dans GRE et envoyé à une destination distante. Dans l'ACI, cette destination ERSPAN doit uniquement être apprise en tant que point d'extrémité de couche 3 et il peut s'agir de n'importe quel EPG dans n'importe quel VRF.
Il est recommandé de toujours connecter les destinations SPAN au fabric afin de réduire le temps de préparation lors du dépannage et de permettre une configuration et une capture de session ERSPAN rapides.
ELAM
Aperçu
Le module ELAM (Embedded Logic Analyzer Module) est un outil qui permet à un utilisateur de définir des conditions dans le matériel et de capturer le premier paquet ou la première trame correspondant aux conditions définies. Une capture réussie entraîne l'affichage de l'état ELAM comme « déclenché ». Une fois déclenché, l'ELAM est désactivé et un vidage peut être collecté pour analyser le grand nombre de décisions de transfert que le circuit ASIC du commutateur prend avec ce paquet/cette trame. ELAM est mis en oeuvre au niveau de l'ASIC et n'a pas d'impact sur le CPU ou d'autres ressources sur le commutateur.
Les exemples de transmission de ce livre utilisent ELAM comme moyen de vérifier ce qui se passe avec le flux. Les exemples montrent à la fois la version de l'interface de ligne de commande leaf et l'application ELAM Assistant.
Ce guide ne couvre pas l'utilisation d'ELAM sur les commutateurs Leaf de première génération (commutateurs sans suffixe EX, FX ou FX2).
Avant d'utiliser l'outil, il est important de comprendre la structure de la syntaxe des commandes.
Exemple sur la CLI 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]
Définir les conditions sur "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]
Générer le vidage contenant l'analyse des paquets
ereport [display detailed forwarding decision for the packet]
Continuez à entrer la commande status pour afficher l'état du déclencheur. Une fois qu'un paquet correspondant aux conditions définies est détecté sur l'ASIC, la sortie de l'état affiche "déclenché". Une fois l'ELAM déclenché, les détails des décisions de transfert du commutateur peuvent être affichés avec « ereport ». Avant la version 4.2 de l'ACI, « report » doit être utilisé.
ASIC
Dans la syntaxe ELAM, notez que l'ASIC doit être spécifié. Comme l'ASIC dépend du modèle de commutateur, reportez-vous à ce tableau pour déterminer l'ASIC à spécifier :
Tableau ASIC
Gamme de cartes de commutation/ligne |
Asic pour Elam |
Commutateurs/LC -EX |
TAH |
-Commutateurs/LC FX(P) |
ROC |
-Commutateurs/LC FX2 |
ROC |
Commutateurs C (9364C, 9332C) |
ROC |
Commutateurs -GX |
APPLICATION |
Commutateurs -GX2 |
CHO |
-Commutateurs FX3 |
ROC |
Déclencheur ELAM in-select
L'autre composant de l'ELAM qui doit être compris lors de l'exécution à partir de l'interface de ligne de commande est l'in-select. La sélection entrante définit les en-têtes que le paquet/la trame est censé avoir et sur lesquels il doit correspondre.
Par exemple, un paquet provenant d’un port de liaison descendante qui n’est pas encapsulé dans un réseau VXLAN aurait uniquement des en-têtes de couche 2, 3 et 4 externes.
Un paquet provenant d'un port de panneau avant (liaison descendante) encapsulé dans un VXLAN (tel que Cisco ACI Virtual Edge en mode VXLAN) ou provenant d'un spine en amont serait encapsulé dans un VXLAN. Cela signifie qu'il pourrait avoir des en-têtes de couche 2 externe et interne, de couche 3 et de couche 4.
Toutes les options de déclenchement sont :
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 in-select 6 est sélectionné, la seule option est de définir des conditions et d'afficher les en-têtes à partir des en-têtes externes de couche 2, 3 ou 4. Si in-select 14 est sélectionné, la seule option est de définir des conditions pour et voir les détails des en-têtes de couche 2, 3 et 4 externes et internes.
Meilleures pratiques :
Pour capturer un paquet provenant de l'encapsulation VLAN sur un port de liaison descendante, utilisez « in-select 6 »
Pour capturer un paquet avec encapsulation VXLAN (à partir d’un spine ou d’un vleaf avec encapsulation VXLAN), utilisez in-select 14.
Déclencheur ELAM désélection
La désélection permet de contrôler les résultats de recherche affichés dans le rapport ELAM. Dans la plupart des cas, la commande out-select 0 peut être utilisée car elle contient la plupart des informations, y compris le vecteur de suppression, qui indique si le résultat de la recherche est de supprimer le paquet/la trame.
Notez que lorsque le rapport au lieu du rapport ou du détail du rapport est utilisé pour obtenir des résultats ELAM, le vecteur de suppression n'apparaît que dans la désélection 1. Cependant, on peut toujours exécuter ereport ou report detail avec out-select 0.
ELAM set Conditions
ELAM prend en charge un grand nombre de conditions de couche 2, 3 et 4 à rechercher dans un paquet. La spécification de inner vs. outer détermine si la condition peut être vérifiée dans l'en-tête interne (paquet encapsulé VXLAN) ou l'en-tête externe.
Exemple ARP :
set outer arp source-ip-address 10.0.0.1 target-ip-address 10.0.0.2
Exemple d'adresse MAC :
set outer l2 src_mac aaaa.bbbb.cccc dst_mac cccc.bbbb.aaaa
Adresse IP dans l'en-tête interne, exemple :
set inner ipv4 src_ip 10.0.0.1 dst_ip 10.0.0.2
Affichage du rapport ELAM
Vérifiez que l'ELAM s'est déclenché avec l'état :
module-1(DBG-elam-insel6)# status
ELAM STATUS
===========
Asic 0 Slice 0 Status Armed
Asic 0 Slice 1 Status Triggered
ereport peut être utilisé pour afficher le résultat de l'ELAM dans un format facile à comprendre. Notez que le rapport ELAM est enregistré dans le dossier /var/log/dme/log/ du commutateur. Le dossier contient deux fichiers pour l'ELAM.
- elam_<horodatage>.txt
- jolie_elam_<horodatage>.txt
Exemple ELAM complet
Cet exemple capturerait un trafic encapsulé non-VXLAN (correspondant à un en-tête externe) provenant d'un port de liaison descendante sur un commutateur -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
Application ELAM Assistant
Les exemples de dépannage de ce manuel montrent également l'utilisation de l'application ELAM Assistant qui peut être téléchargée via Cisco DC App Center (https://dcappcenter.cisco.com). Cet outil automatise le déploiement et l'interprétation des ELAM via l'interface utilisateur graphique du contrôleur APIC.
Cet exemple montre le déploiement d'un ELAM correspondant à une adresse IP source et de destination spécifique sur le port de liaison descendante du noeud 101
ElamAssistant
ElamAssistant - Détails
L'assistant ELAM permet également d'utiliser facilement des paramètres de correspondance plus complexes, tels que l'interface source ou les valeurs VXLAN.
fTriage
fTriage est un outil basé sur l'interface de ligne de commande APIC qui est conçu pour fournir une automatisation de bout en bout de la configuration et de l'interprétation ELAM. L'idée de base de l'outil est qu'un utilisateur peut définir un flux spécifique ainsi que le noeud terminal où le flux doit commencer. L'outil exécute ensuite des ELAM sur chaque noeud, un par un, pour examiner le flux de transfert. Elle est particulièrement utile dans les grandes topologies où le chemin emprunté par un paquet n’est pas clair.
fTriage génère un fichier journal volumineux contenant le résultat de chaque commande exécutée. Le nom de ce fichier est visible sur les premières lignes de la sortie fTriage.
Le triage peut prendre jusqu'à 15 minutes.
Exemples
Mappez le flux pour les communications routées entre 10.0.1.1 et 10.0.2.1 à partir du leaf 104 :
ftriage route -ii LEAF:104 -dip 10.0.2.1 -sip 10.0.1.1
Mappez un flux de couche 2 à partir du leaf 104 :
ftriage bridge -ii LEAF:104 -dmac 02:02:02:02:02:02
L'aide fTriage complète peut être vue en exécutant ftriage —help sur l'APIC.
tcpdump
tcpdump peut être utilisé sur les commutateurs ACI pour capturer le trafic en provenance et à destination du plan de contrôle. Notez que seul le trafic du plan de contrôle envoyé au CPU du commutateur peut être observé dans une capture tcpdump. Exemples : protocoles de routage, LLDP/CDP, LACP, ARP, etc. Pour capturer le trafic du plan de données (et du plan de contrôle), utilisez SPAN et/ou ELAM.
Pour effectuer une capture sur le processeur, spécifiez l'interface kpm_inb. La plupart des options et filtres tcpdump traditionnels sont disponibles.
Exemple de capture d'ICMP destiné à une interface SVI sur le commutateur 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
En outre, l'option -w permet à tcpdump d'écrire la capture de paquets dans un fichier PCAP afin qu'elle puisse être ouverte dans des outils tels que Wireshark.
Pour utiliser tcpdump sur l'interface eth0, qui est l'interface hors bande sur le commutateur. Cela est utile pour dépanner la connectivité de tout trafic passant par le port physique hors bande du commutateur. Il s'agit principalement du trafic basé sur le plan de contrôle, tel que SSH, SNMP, etc.
Compteurs atomiques à la demande
Les compteurs atomiques à la demande sont destinés à compter les paquets dans un flux spécifique lorsqu'ils quittent une liaison ascendante leaf et sont reçus sur un autre port de structure leaf. Ils permettent une certaine granularité pour déterminer si les paquets ont été manqués ou reçus en excès.