Inleiding
In dit document worden tools beschreven die standaard in ACI zijn opgenomen en die kunnen worden gebruikt om problemen met doorsturen op te sporen.
Achtergrondinformatie
Het materiaal uit dit document is afkomstig uit het boek Problemen oplossen Cisco Application Centric Infrastructure, Second Edition, met name het hoofdstuk Intra-Fabric-expeditie - Tools.
Bovendien zijn diepere verklaringen van ELAM en Ftriage te vinden in de CiscoLive On-Demand-bibliotheek in sessie BRKDCN-3900b.
Waarmee kunnen deze tools helpen?
Om een probleem met doorsturen vanuit een ACI-perspectief op te lossen, moet u het volgende begrijpen:
- Welke switch krijgt een flow?
- Welke beslissing neemt die switch?
- Laat de switch het vallen?
ACI bevat verschillende tools waarmee de gebruiker diepgaand inzicht kan krijgen in wat er met een specifieke stroom gebeurt. In de volgende secties worden deze tools in detail getoond, dus hier wordt alleen een introductie op hoog niveau gegeven.
SPAN en ERSPAN
SPAN en ERSPAN zijn beide tools waarmee alle of een deel van het verkeer dat op een specifieke locatie is ontvangen, kan worden gerepliceerd naar een andere locatie. Het eindapparaat waarnaar het gerepliceerde verkeer wordt verzonden, zal naar verwachting een soort pakketsnuiver / analysatortoepassing uitvoeren. Traditionele SPAN omvat het repliceren van verkeer dat wordt ontvangen op de ene poort en uitdelen via een andere poort. ACI ondersteunt het doen van dit in aanvulling op ERSPAN.
ERSPAN volgt hetzelfde concept, behalve het repliceren van het verkeer uit een lokale poort; het gerepliceerde verkeer wordt ingekapseld in GRE en verzonden naar een externe bestemming. In ACI moet deze ERSPAN-bestemming alleen worden geleerd als een Layer 3-eindpunt en kan het elke EPG in elke VRF zijn.
Het is een goed idee om altijd SPAN-bestemmingen op de fabric te hebben aangesloten om de voorbereidingstijd tijdens het oplossen van problemen te minimaliseren en snelle configuratie en vastlegging van RESPAN-sessies mogelijk te maken.
ELAM
Overzicht
Embedded Logic Analyzer Module (ELAM) is een tool waarmee een gebruiker voorwaarden in hardware kan instellen en het eerste pakket of frame kan vastleggen dat overeenkomt met de ingestelde voorwaarden. Een succesvolle opname zorgt ervoor dat de ELAM-status wordt weergegeven als "geactiveerd". Zodra de ELAM is geactiveerd, is deze uitgeschakeld en kan een dump worden verzameld om het grote aantal doorstuurbeslissingen te analyseren dat de switch ASIC met dat pakket / frame maakt. ELAM wordt geïmplementeerd op het ASIC-niveau en heeft geen invloed op de CPU of andere bronnen op de switch.
De forwarding voorbeelden in dit boek gebruiken ELAM als een middel om te controleren wat er gebeurt met de stroom. Voorbeelden tonen zowel de blad CLI-versie als de ELAM Assistant App.
Deze gids heeft geen betrekking op het gebruik van ELAM op de eerste generatie blad switches (switches zonder EX, FX, of FX2 achtervoegsel).
Voordat u de tool gebruikt, is het belangrijk om de structuur van de opdrachtsyntaxis te begrijpen.
Voorbeeld op blad 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]
Voorwaarden instellen op "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]
Genereer de dump met de pakketanalyse
ereport [display detailed forwarding decision for the packet]
Ga door met het invoeren van de opdracht status om de status van de trigger te bekijken. Zodra een pakket dat overeenkomt met de gedefinieerde voorwaarden is gedetecteerd op de ASIC, toont de uitvoer van de status "geactiveerd". Zodra de ELAM is geactiveerd, kunnen de details van de beslissingen voor het doorsturen van de switch worden weergegeven met 'rapport'. Voorafgaand aan ACI versie 4.2 moet 'rapport' worden gebruikt.
ASIC's
Binnen de ELAM-syntaxis moet de ASIC worden opgegeven. Aangezien de ASIC afhankelijk is van het switch-model, raadpleegt u deze tabel om te bepalen welke ASIC moet worden opgegeven:
ASIC-tabel
Switch/lijnkaart Familie
|
Asic voor Elam
|
EX-switches/LC's
|
TAH
|
FX(P)-switches/LC's
|
ROC
|
FX-2-switches/LC's
|
ROC
|
C-switches (9364C, 9332C)
|
ROC
|
GX-switches
|
APP
|
-GX2-switches
|
CHO
|
-FX3-switches
|
ROC
|
ELAM-trigger in-select
Het andere onderdeel van de ELAM dat moet worden begrepen wanneer u vanuit de CLI werkt, is de in-select. De in-select definieert welke headers het pakket / frame naar verwachting zal hebben en welke overeenkomen.
Een pakket dat afkomstig is van een downlink-poort die niet in VXLAN is ingekapseld, heeft bijvoorbeeld alleen buitenste Layer 2-, Layer 3- en Layer 4-headers.
Een pakket dat afkomstig is van een poort op het voorpaneel (downlink) die is ingekapseld in VXLAN (zoals Cisco ACI Virtual Edge in VXLAN-modus) of afkomstig is van een upstream-wervelkolom, zou VXLAN-inkapseling hebben. Dit betekent dat het mogelijk zowel de buitenste als binnenste Layer 2-, Layer 3- en Layer 4-headers heeft.
Alle triggeropties zijn:
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
Als in-select 6 is geselecteerd, is de enige optie het instellen van voorwaarden en het weergeven van headers van de buitenste Layer 2, 3 of 4 headers. Als in-select 14 is geselecteerd, is de enige optie om voorwaarden in te stellen voor en de details van de buitenste en binnenste Layer 2-, 3- en 4-koppen te bekijken.
Opmerking over best practices:
Als u een pakket met VLAN-inkapseling op een downlink-poort wilt vastleggen, gebruikt u 'in-select 6'
Als u een pakket wilt vastleggen met VXLAN-inkapseling (vanaf een ruggengraat of vanaf een vlek met VXLAN-inkapseling), gebruikt u in-select 14.
ELAM-trigger uitselecteren
Met de out-select kunt u bepalen welke zoekresultaten worden weergegeven in het ELAM-rapport. Voor de meeste praktische doeleinden kan out-select 0 worden gebruikt omdat het de meeste informatie bevat, waaronder de drop-vector, die vertelt of het resultaat van het opzoeken is om het pakket / frame te laten vallen.
Merk op dat wanneer rapport in plaats van rapport of rapportdetails wordt gebruikt om ELAM-resultaten te krijgen, drop vector alleen wordt weergegeven in out-select 1. Men kan echter altijd rapportage of rapportdetails uitvoeren met out-select 0.
ELAM-setvoorwaarden
ELAM ondersteunt een grote hoeveelheid Layer 2-, 3- en 4-voorwaarden om in een pakket te zoeken. Het opgeven van inner vs. outer bepaalt of de voorwaarde kan worden gecontroleerd in de inner header (VXLAN ingekapseld pakket) of outer header.
ARP-voorbeeld:
set outer arp source-ip-address 10.0.0.1 target-ip-address 10.0.0.2
Voorbeeld MAC-adres:
set outer l2 src_mac aaaa.bbbb.cccc dst_mac cccc.bbbb.aaaa
IP-adres in voorbeeld van binnenste koptekst:
set inner ipv4 src_ip 10.0.0.1 dst_ip 10.0.0.2
Het ELAM-rapport bekijken
Controleer of de ELAM is geactiveerd met de status:
module-1(DBG-elam-insel6)# status
ELAM STATUS
===========
Asic 0 Slice 0 Status Armed
Asic 0 Slice 1 Status Triggered
Het rapport kan worden gebruikt om het resultaat van de ELAM in een gemakkelijk te begrijpen formaat weer te geven. Merk op dat het ELAM-rapport wordt opgeslagen in de map /var/log/dme/log/ op de switch. Er zijn twee bestanden voor de ELAM onder de map.
- ELAM_<timestamp>.txt
- pretty_ELAM_<timestamp>.txt
Volledig ELAM-voorbeeld
In dit voorbeeld wordt een niet-VXLAN-ingekapseld verkeer (overeenkomend met de buitenste header) vastgelegd dat afkomstig is van een downlink-poort op een -EX-switch:
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 Assistant-toepassing
De probleemoplossende voorbeelden in dit boek tonen ook het gebruik van de ELAM Assistant-app die kan worden gedownload via het Cisco DC App Center (https://dcappcenter.cisco.com). Deze tool automatiseert de implementatie en interpretatie van ELAM's via de GUI op de APIC.
Dit voorbeeld toont de implementatie van een ELAM die overeenkomt met een specifieke bron- en bestemmings-IP op de node-101 downlink-poort
ElamAssistant

ElamAssistant ‐ Detail

De ELAM-assistent maakt ook eenvoudig gebruik van complexere overeenkomende parameters mogelijk, zoals de broninterface of VXLAN-waarden.
Ftriage
fTriage is een APIC CLI-gebaseerde tool die bedoeld is om end-to-end automatisering van ELAM-configuratie en -interpretatie te bieden. Het uitgangspunt van de tool is dat een gebruiker een specifieke stroom kan definiëren, evenals het blad waar de stroom naar verwachting zal beginnen. De tool voert vervolgens ELAM's uit op elke node, één voor één, om de doorstuurstroom te onderzoeken. Het is vooral handig in grote topologieën waar het onduidelijk is welk pad een pakket neemt.
fTriage genereert een groot logbestand met de uitvoer van elke uitgevoerde opdracht. De naam van dit bestand is zichtbaar op de eerste paar regels van de fTriage-uitvoer.
Het voltooien van de triage kan tot 15 minuten duren.
Voorbeelden
Breng de stroom in kaart voor gerouteerde communicatie tussen 10.0.1.1 en 10.0.2.1 vanaf blad 104:
ftriage route -ii LEAF:104 -dip 10.0.2.1 -sip 10.0.1.1
Breng een laag 2-stroom in kaart vanaf blad 104:
ftriage bridge -ii LEAF:104 -dmac 02:02:02:02:02:02
Volledige hulp van Triage kan worden gezien door ftriage uit te voeren - hulp op de APIC.
tcpdump
tcpdump kan worden gebruikt op ACI-switches om verkeer van en naar het controlevliegtuig vast te leggen. Merk op dat alleen het vliegtuigverkeer dat naar de switch-processor wordt verzonden, kan worden waargenomen bij het vastleggen van een tcpdump. Enkele voorbeelden zijn: routeringsprotocollen, LLDP/CDP, LACP, ARP, enzovoort. Voor het vastleggen van het dataverkeer (en het besturen van het vliegtuig) kunt u gebruik maken van SPAN en/of ELAM.
Als u gegevens wilt vastleggen op de CPU, geeft u de kpm_inb-interface op. De meeste traditionele tcpdump opties en filters zijn beschikbaar.
Voorbeeld van het vastleggen van ICMP bestemd voor een SVI op de switch:
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
Bovendien kan de tcpdump met de optie-w de pakketopname naar een PCAP-bestand schrijven, zodat deze kan worden geopend in tools zoals Wireshark.
Om tcpdump te gebruiken op de eth0 interface, dat is de out-of-band interface op de switch. Dit is handig voor het oplossen van problemen met de connectiviteit van verkeer dat door de out-of-band poort van de switch gaat. Dit zou voornamelijk het regelen van vliegverkeer zijn, zoals SSH, SNMP, enzovoort.
Atoomtellers op aanvraag
On-demand atoomtellers zijn bedoeld om pakketten te tellen binnen een specifieke stroom als ze vertrekken op een blad uplink en worden ontvangen op een andere blad stof poort. Ze laten enige granulariteit toe in de vraag of pakketten werden gemist of te veel werden ontvangen.