Einleitung
In diesem Dokument werden die in der ACI integrierten Tools beschrieben, mit denen Weiterleitungsprobleme behoben werden können.
Hintergrundinformationen
Das Material aus diesem Dokument wurde aus dem Buch "Troubleshooting Cisco Application Centric Infrastructure, Second Edition" (Fehlerbehebung bei der Cisco Application Centric Infrastructure, zweite Ausgabe) extrahiert, insbesondere aus dem Kapitel "Intra-Fabric Forwarding - Tools" (Weiterleitung innerhalb des Fabric).
Ausführlichere Erläuterungen zu ELAM und Ftriage finden Sie darüber hinaus in der Cisco Live On-Demand-Bibliothek in der Sitzung BRKDCN-3900b.
Womit können diese Tools mithelfen?
Um ein Weiterleitungsproblem im Hinblick auf die ACI zu beheben, müssen Sie Folgendes verstehen:
- Welcher Switch empfängt einen Datenfluss?
- Welche Weiterleitungsentscheidung trifft dieser Switch?
- Wird sie vom Switch abgebrochen?
Die ACI umfasst verschiedene Tools, mit denen Benutzer detaillierte Informationen zu den Vorgängen in einem bestimmten Fluss erhalten. In den folgenden Abschnitten werden diese Tools detailliert vorgestellt, sodass hier nur eine grobe Einführung gegeben ist.
SPAN und ERSPAN
SPAN und ERSPAN sind beide Tools, mit denen der gesamte oder ein Teil des an einem bestimmten Standort eingehenden Datenverkehrs an einen anderen Standort repliziert werden kann. Auf dem Endgerät, an das der replizierte Datenverkehr gesendet wird, wird voraussichtlich eine Art von Paket-Sniffer/Analyzer-Anwendung ausgeführt. Traditionelles SPAN umfasst die Replikation von Datenverkehr, der an einem Port empfangen und über einen anderen Port übertragen wird. Die ACI unterstützt dies zusätzlich zu ERSPAN.
ERSPAN folgt demselben Konzept, mit Ausnahme der Replikation des Datenverkehrs über einen lokalen Port. Der replizierte Datenverkehr wird in GRE gekapselt und an ein Remote-Ziel gesendet. In der ACI muss dieses ERSPAN-Ziel nur als Layer-3-Endpunkt erfasst werden, und es kann sich um eine beliebige EPG in einer beliebigen VRF-Instanz handeln.
Es empfiehlt sich, immer SPAN-Ziele mit der Fabric zu verbinden, um die Vorbereitungszeit während der Fehlerbehebung zu minimieren und eine schnelle Konfiguration und Erfassung von ERSPAN-Sitzungen zu ermöglichen.
ELAM
Überblick
Embedded Logic Analyzer Module (ELAM) ist ein Tool, mit dem ein Benutzer Bedingungen in der Hardware festlegen und das erste Paket oder Frame erfassen kann, das den festgelegten Bedingungen entspricht. Bei einer erfolgreichen Erfassung wird der ELAM-Status als "getriggert" angezeigt. Nach der Auslösung wird das ELAM deaktiviert, und es kann ein Dump erfasst werden, um die große Anzahl von Weiterleitungsentscheidungen zu analysieren, die der Switch-ASIC mit diesem Paket/Frame trifft. ELAM wird auf ASIC-Ebene implementiert und hat keine Auswirkungen auf die CPU oder andere Ressourcen auf dem Switch.
In den Weiterleitungsbeispielen in diesem Buch wird ELAM verwendet, um zu überprüfen, was mit dem Fluss geschieht. Beispiele zeigen sowohl die Leaf-CLI-Version als auch die ELAM Assistant-Anwendung.
In diesem Leitfaden wird die Verwendung von ELAM auf Leaf-Switches der ersten Generation (Switches ohne EX-, FX- oder FX2-Suffix) nicht behandelt.
Bevor Sie das Tool verwenden, ist es wichtig, die Struktur der Befehlssyntax zu verstehen.
Beispiel für Leaf-CLI:
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]
Bedingungen auf "Trigger" setzen
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]
Generieren Sie den Dump mit der Paketanalyse.
ereport [display detailed forwarding decision for the packet]
Fahren Sie mit der Eingabe des Befehls status fort, um den Status des Triggers anzuzeigen. Sobald auf dem ASIC ein Paket erkannt wird, das den definierten Bedingungen entspricht, wird in der Ausgabe von status "triggered" angezeigt. Sobald das ELAM ausgelöst wurde, können die Details der Entscheidungen über die Switch-Weiterleitung mit dem Befehl "report" angezeigt werden. Vor ACI Version 4.2 muss 'report' verwendet werden.
ASICs
Beachten Sie, dass in der ELAM-Syntax der ASIC angegeben werden muss. Da der ASIC vom Switch-Modell abhängt, können Sie in dieser Tabelle feststellen, welcher ASIC verwendet werden muss:
ASIC-Tabelle
Switch-/Linecard-Produktfamilie |
Asic für Elam |
- EX-Switches/LCs |
TAH |
- FX(P)-Switches/LCs |
ROC |
- FX2-Switches/LCs |
ROC |
C-Switches (9364C, 9332C) |
ROC |
-GX-Switches |
Anwendung |
-GX2-Switches |
CHO |
- FX3-Switches |
ROC |
ELAM-Trigger bei Auswahl
Die andere Komponente der ELAM, die verstanden werden muss, wenn sie über die CLI ausgeführt wird, ist in-select. Die In-Select-Einstellung legt fest, welche Header das Paket/der Frame voraussichtlich hat und welche übereinstimmen.
Beispielsweise hätte ein Paket, das von einem Downlink-Port kommt, der nicht VXLAN-gekapselt ist, nur äußere Layer-2-, Layer-3- und Layer-4-Header.
Ein Paket, das von einem VXLAN-gekapselten Front-Panel-Port (Downlink) (z. B. Cisco ACI Virtual Edge im VXLAN-Modus) oder von einem Upstream-Spine stammt, verfügt über VXLAN-Kapselung. Dies bedeutet, dass potenziell sowohl äußere als auch innere Layer-2-, Layer-3- und Layer-4-Header vorhanden sind.
Alle Auslöseoptionen sind:
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
Wenn in-select 6 ausgewählt ist, können Sie nur Bedingungen festlegen und Header von den äußeren Layer-2-, Layer-3- oder Layer-4-Headern anzeigen. Wenn in-select 14 ausgewählt ist, besteht die einzige Option darin, Bedingungen für die äußeren und inneren Layer-2-, Layer-3- und Layer-4-Header festzulegen und deren Details anzuzeigen.
Hinweis zu Best Practices:
Um ein Paket zu erfassen, das mit VLAN-Kapselung an einem Downlink-Port eingeht, wählen Sie "in-select 6" (Auswählen 6) aus.
Um ein Paket mit VXLAN-Kapselung zu erfassen (entweder von einem Spine oder von einem Vleaf mit VXLAN-Kapselung), verwenden Sie in-select 14.
ELAM-Trigger-Out-Select
Mit der Out-Select-Option können Sie steuern, welche Nachschlageergebnisse im ELAM-Bericht angezeigt werden. Für die meisten praktischen Zwecke kann out-select 0 verwendet werden, da es die meisten Informationen einschließlich des Drop-Vektors enthält, der angibt, ob das Ergebnis der Suche das Verwerfen des Pakets/Frames ist.
Beachten Sie, dass bei Verwendung des Berichts anstelle des Berichts oder der Berichtdetails zum Abrufen der ELAM-Ergebnisse der Dropvektor nur in der Auswahl 1 angezeigt wird. Ausgewählte Daten: Mit Out-Select 0 können Sie jedoch immer Berichte oder Berichtsdetails durchführen.
ELAM-Einstellungsbedingungen
ELAM unterstützt eine große Anzahl von Layer-2-, Layer-3- und Layer-4-Bedingungen, nach denen in einem Paket gesucht werden muss. Durch die Angabe von inner vs. outer wird bestimmt, ob die Bedingung im inneren Header (VXLAN-gekapseltes Paket) oder im äußeren Header überprüft werden kann.
ARP-Beispiel:
set outer arp source-ip-address 10.0.0.1 target-ip-address 10.0.0.2
Beispiel für MAC-Adresse:
set outer l2 src_mac aaaa.bbbb.cccc dst_mac cccc.bbbb.aaaa
IP-Adresse im inneren Header-Beispiel:
set inner ipv4 src_ip 10.0.0.1 dst_ip 10.0.0.2
Anzeigen des ELAM-Berichts
Überprüfen Sie, ob der ELAM mit dem Status ausgelöst wurde:
module-1(DBG-elam-insel6)# status
ELAM STATUS
===========
Asic 0 Slice 0 Status Armed
Asic 0 Slice 1 Status Triggered
Der Bericht kann verwendet werden, um das Ergebnis der ELAM in einem leicht verständlichen Format anzuzeigen. Beachten Sie, dass der ELAM-Bericht im Ordner /var/log/dme/log/ auf dem Switch gespeichert wird. Unter dem Ordner befinden sich zwei Dateien für die ELAM.
- elam_<Zeitstempel>.txt
- hübsch_elam_<Zeitstempel>.txt
Beispiel für vollständige ELAM
In diesem Beispiel wird ein nicht VXLAN-gekapselter Datenverkehr (Übereinstimmung am äußeren Header) erfasst, der von einem Downlink-Port an einem -EX-Switch stammt:
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
ELAM-Assistentenanwendung
Die Beispiele zur Fehlerbehebung in diesem Buch zeigen auch die Verwendung der ELAM Assistant-App, die über das Cisco DC App Center heruntergeladen werden kann (https://dcappcenter.cisco.com). Dieses Tool automatisiert die Bereitstellung und Interpretation von ELAMs über die grafische Benutzeroberfläche des APIC.
Dieses Beispiel zeigt die Bereitstellung eines ELAM, das mit einer bestimmten Quell- und Ziel-IP-Adresse auf einem Node-101-Downlink-Port übereinstimmt
ElamAssistent
ElamAssistant - Details
Der ELAM-Assistent ermöglicht außerdem die einfache Verwendung komplexerer Anpassungsparameter wie der Quellschnittstelle oder der VXLAN-Werte.
fTriage
fTriage ist ein CLI-basiertes Tool für die APIC-Komplettautomatisierung der ELAM-Konfiguration und -Interpretation. Die Prämisse des Tools besteht darin, dass ein Benutzer einen bestimmten Datenfluss sowie den Leaf definieren kann, auf dem der Datenfluss beginnen soll. Anschließend werden ELAMs auf jedem Knoten einzeln ausgeführt, um den Weiterleitungsfluss zu untersuchen. Sie ist besonders in großen Topologien nützlich, in denen unklar ist, welchen Pfad ein Paket nimmt.
fTriage generiert eine große Protokolldatei, die die Ausgabe jedes ausgeführten Befehls enthält. Der Name dieser Datei wird in den ersten Zeilen der fTriage-Ausgabe angezeigt.
fTriage kann bis zu 15 Minuten dauern.
Beispiele
Abbilden des Datenflusses für die geroutete Kommunikation zwischen 10.0.1.1 und 10.0.2.1 ab Blatt 104:
ftriage route -ii LEAF:104 -dip 10.0.2.1 -sip 10.0.1.1
Erstellen Sie einen Layer-2-Fluss, beginnend mit Leaf 104:
ftriage bridge -ii LEAF:104 -dmac 02:02:02:02:02:02
Die vollständige fTriage-Hilfe kann angezeigt werden, wenn Sie ftriage —help auf dem APIC ausführen.
TCPdump
tcpdump kann auf ACI-Switches verwendet werden, um den Datenverkehr zur und von der Steuerungsebene zu erfassen. Beachten Sie, dass nur der an die Switch-CPU gesendete Steuerungsebenen-Datenverkehr bei einer tcpdump-Erfassung beobachtet werden kann. Beispiele hierfür sind Routing-Protokolle, LLDP/CDP, LACP, ARP usw. Zur Erfassung des Datenverkehrs auf Datenebene (und Kontrollebene) nutzen Sie SPAN und/oder ELAM.
Um Daten auf der CPU zu erfassen, geben Sie die Schnittstelle kpm_inb an. Die meisten herkömmlichen tcpdump-Optionen und -Filter sind verfügbar.
Beispiel zur Erfassung von ICMP, das an eine SVI auf dem Leaf-Switch gerichtet ist:
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
Darüber hinaus ermöglicht die Option -w tcpdump, die Paketerfassung in eine PCAP-Datei zu schreiben, sodass sie in Tools wie Wireshark geöffnet werden kann.
Zur Verwendung von tcpdump an der eth0-Schnittstelle, der Out-of-Band-Schnittstelle am Switch. Dies ist nützlich, um die Anbindung von Datenverkehr zu beheben, der über den physischen Out-of-Band-Port des Switches läuft. Hierbei handelt es sich hauptsächlich um Kontrollebenen-basierten Datenverkehr wie SSH, SNMP usw.
On-Demand-Atomzähler
Atomare On-Demand-Zähler zählen Pakete innerhalb eines bestimmten Datenflusses, wenn sie einen Leaf-Uplink verlassen und über einen anderen Leaf-Fabric-Port empfangen werden. Sie ermöglichen eine gewisse Präzision, wenn es darum geht, ob Pakete übersehen oder empfangen wurden.