Ce document décrit les outils nativement inclus dans l'ACI qui peuvent être utilisés pour déboguer les problèmes de transfert.
Le contenu de ce document a été extrait de Dépannage de l'infrastructure axée sur les applications Cisco, deuxième édition livre, en particulier leTransfert intra-fabric - Outilsdu chapitre.
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.
Afin de dépanner un problème de transfert du point de vue de l'ACI, comprenez :
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.
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 réplique le 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 ne doit être apprise qu'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.
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éfinissez les conditions à déclencher :
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, le rapport doit être utilisé.
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 :
| 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 |
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 VXLAN aurait uniquement des en-têtes de couche externe de couche 2, de couche 3 et de couche 4.
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 :
La commande out-select permet de contrôler les résultats de recherche qui sont 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 sous-sélection 1. Cependant, il est toujours possible d'exécuter le rapport ou le détail du rapport avec la sous-sélection 0.
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
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 :
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
Les exemples de dépannage de ce manuel montrent également l’utilisation de l’assistant ELAM.
Auparavant, il s'agissait d'une application qui pouvait être téléchargée via Cisco DC App Center (https://dcappcenter.cisco.com). mais à partir de la version 6.1(2)+ de l'ACI, l'assistant ELAM est intégré directement dans l'APIC et accessible via l'onglet Opérations de l'interface utilisateur APIC.

Pour l'assistant ELAM intégré, seuls les utilisateurs APIC disposant du privilège de lecture-écriture peuvent utiliser l'assistant Elam, et l'option de menu n'est pas visible pour les utilisateurs ne disposant pas du privilège de lecture-écriture.
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 :
Pour commencer à l'utiliser, il est nécessaire de cliquer sur Capture (Perform ELAM) dans le panneau latéral gauche, puis dans l'écran principal, cliquez sur Add node pour commencer à ajouter des noeuds où l'ELAM doit être configuré. Dans cet exemple, le noeud 101 est ajouté :

Une fois les noeuds d'intérêt ajoutés, il est nécessaire de configurer la direction (liaison descendante/liaison descendante VXLAN/liaison ascendante).
Il est également possible de spécifier si une interface particulière doit être observée, la valeur par défaut est any.
Enfin, et une série de paramètres peuvent être configurés (de la même manière que la version CLI) :


Enfin, cliquez sur Set ELAM(s) pour armer les ELAM sur les noeuds spécifiés.
Pour confirmer si l'ELAM s'est déclenché, cliquez sur le bouton Check Trigger et si l'ELAM se déclenche dans un noeud, l'état passe à Report Ready en regard du nom du noeud :

Ce bouton Report Ready affiche le rapport ELAM dans un joli format ci-dessous :

Le résultat s'affiche sous trois formes : Express, Detail et Raw.
L'assistant ELAM permet également d'utiliser facilement des paramètres de correspondance plus complexes, tels que l'interface source ou les valeurs VXLAN.
La commande ping est un utilitaire réseau standard utilisé dans Linux pour tester l'accessibilité d'un hôte sur un réseau IP (Internet Protocol). Il envoie des paquets de requête d’écho ICMP à une destination spécifiée (une adresse IP ou un nom de domaine) et écoute une réponse d’écho.
La fonction principale de cette commande est d'effectuer :
· Tests de connectivité : Vérifie si un périphérique distant est actif et accessible.
· Mesure de la latence : Calcule le temps de parcours aller-retour (RTT) des paquets à destination et retour, mesuré en millisecondes (ms).
· Détection de perte de paquets : Indique le pourcentage de paquets qui n'ont pas pu être renvoyés, ce qui permet d'identifier les problèmes de congestion ou de stabilité du réseau.
Cet utilitaire peut être utilisé lorsque des problèmes d'accessibilité sont identifiés dans le contrôleur APIC.
Confirmez l'accessibilité d'un serveur externe SNMP (exemple : 10.31.125.144) à partir de l'adresse OOB APIC :
ping 10.31.125.144 -I oobmgmt
Comme on peut le voir, l'option -I est utile pour spécifier l'interface source, dans cet exemple l'adresse de gestion OOB.
Il peut être utilisé avec l'option -h pour afficher toutes les options disponibles.
La commande ping, quant à elle, est un outil de diagnostic spécialisé dans l'environnement Cisco ACI (Application Centric Infrastructure).
La commande ping est un puissant utilitaire de diagnostic de réseau utilisé dans l'interface de ligne de commande de l'ACI Cisco pour vérifier la connectivité à partir d'un noeud ou d'un contexte spécifique du fabric. L'ACI étant un environnement multilocataire, la requête ping permet aux administrateurs de tester la connectivité tout en tenant compte de l'isolation logique fournie par les VRF et les locataires.
Comment ça fonctionne: Il lance une requête d’écho ICMP à partir d’un noeud ou d’un contexte source spécifié vers une adresse IP de destination. Il s'assure que le paquet traverse correctement le fabric en fonction des EPG et des contrats configurés. Pour ce faire, le commutateur leaf doit encapsuler le paquet ICMP de la même manière qu'un trafic de production serait encapsulé s'il entrait dans le fabric. L'en-tête iVXLAN contient le VNID (Virtual Network Identifier) qui mappe le trafic vers le VRF ou EPG correct. Cela garantit que le paquet est soumis aux mêmes règles de transfert et de sécurité que le trafic de production réel.
Fonctions principales :
Confirmer l'accessibilité du terminal, envoyer une requête ping à partir de l'interface SVI déployée à partir de l'objet du domaine de pont (SVI)
iping 192.168.104.2 -V tenant_prod:VRF1
Il est nécessaire de sélectionner au moins la source VRF, avec le paramètre -V.
Lorsqu’il est fourni avec l’indicateur -V <tenant>:<vrf>, le système identifie le VNID spécifique (VXLAN Network Identifier) associé à ce VRF. Ce VNID est essentiel pour garantir que le paquet est routé dans la table de routage logique correcte.
Il peut être utilisé avec l'option -h pour afficher toutes les options disponibles.
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.
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 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. En voici quelques 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 la capture sur l'UC, spécifiez l'interface kpm_inb. Les options et filtres tcpdump les plus classiques 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.
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.
| Révision | Date de publication | Commentaires |
|---|---|---|
3.0 |
01-Jul-2026
|
Ajout d'une légende indiquant que l'assistant ELAM est intégré aux cartes APIC dans la version 6.1(2)+ |
2.0 |
19-Aug-2024
|
Formatage des commandes. |
1.0 |
10-Aug-2022
|
Première publication |