Inleiding
ACI volgt Cut-Through Switching, wat betekent dat het pakket al is doorgestuurd voordat de CRC kan worden berekend. Deze pakketten worden meestal gestampt en doorgestuurd als uitvoerfouten. Omdat ACI deze pakketten niet laat vallen, passeert hetzelfde pakket het pakket en worden de CRC-tellers van de stomp op het pad verhoogd. Dit betekent niet dat alle interfaces die de CRC zien, defect zijn. Daarom is een goede triage nodig om de problematische poort/SFP/glasvezel te isoleren. Het triageproces wordt nu geautomatiseerd via Python-scripts, wat resulteert in eenvoudiger probleemoplossing en het vermijden van handmatige taken. Het doel van dit document is om uit te leggen hoe de te gebruiken automatiseringsscripts moeten worden gebruikt (zie bijgevoegde bijlage).
Vereisten om het script handmatig uit te voeren
Het clientsysteem van waaruit het script wordt uitgevoerd, moet aan de volgende vereisten voldoen
a. Python3 moet worden geïnstalleerd
b. Netwerktoegang tot ACI-domein
c. ACI_CRC_requirements.txt (aangesloten) te installeren. Dit bestand bevindt zich hier.
Download het bestand (ACI_CRC_requirements.txt) naar het clientsysteem
Open Terminal en voer de opdracht pip3 install -r ACI_CRC_requirements.txt uit
ABCD-M-G24X:downloads abcd$ pip3 install -r ACI_CRC_requirements.txt
Collecting bcrypt==3.2.0 (from -r ACI_CRC_requirements.txt (line 1))
Downloading https://files.pythonhosted.org/packages/bf/6a/0afb1e04aebd4c3ceae630a87a55fbfbbd94dea4eaf01e53d36743c85f02/bcrypt-3.2.0-cp36-abi3-macosx_10_9_x86_64.whl
Collecting cffi==1.14.6 (from -r ACI_CRC_requirements.txt (line 2))
Downloading https://files.pythonhosted.org/packages/ca/e1/015e2ae23230d9de8597e9ad8c0b81d5ac181f08f2e6e75774b7f5301677/cffi-1.14.6-cp38-cp38-macosx_10_9_x86_64.whl (176kB)
|████████████████████████████████| 184kB 1.4MB/s
**snip**
Successfully installed DateTime-4.3 Pillow-8.3.2 bcrypt-3.2.0 cffi-1.14.6 cryptography-3.4.8 cycler-0.10.0 kiwisolver-1.3.2
matplotlib-3.4.3 numpy-1.21.2 pandas-1.3.2 paramiko-2.7.2 pyparsing-2.4.7 python-dateutil-2.8.2 pytz-2021.1 six-1.16.0
stdiomask-0.0.5 tabulate-0.8.9 termcolor-1.1.0 zope.interface-5.4.0
Vereisten voor het uitvoeren van het script vanuit Container
Een container wordt voorbereid met de bovenstaande Python-pakketten vooraf geïnstalleerd.
docker login docker.io
docker pull aci-stomper
docker run -d --name -p :80 aci-stomper (on your browser http://ContainerIP:someport)
docker ps
docker exec -it /bin/bash
root@6df99d5dbbad:/# cd /home/scripts/
root@6df99d5dbbad:/home/scripts# ls
ACI_CRC_Parser.py ACI_CRC_Poller.py
Stappen om scripts uit te voeren
Er zijn in totaal twee pythonscripts (ACI_CRC_Poller.py en ACI_CRC_Parser.py). Deze scripts kunnen worden gedownload van Cisco DevNet Code Exchange met behulp van de onderstaande URL.
https://developer.cisco.com/codeexchange/github/repo/CiscoDevNet/ACI-CRC-FCS-Checker
Download ze allebei op de computer, waar je die scripts vanaf wilt uitvoeren.
In dit document verwijst script-1 naar ACI_CRC_Poller.py en script-2 naar ACI_CRC_Parser.py.
1. ACI_CRC_Poller.py verzamelt elke vijf minuten CRC- en FCS-foutgegevens in bestanden voor een maximale duur van zeven dagen.
Voer script-1 (ACI_CRC_Poller.py) uit vanaf Terminal. Voer het OOB IP-adres in voor een van de APIC's in een bepaald cluster en de bijbehorende referenties.
ABCD-M-G24X:downloads abcd$ python3 ACI_CRC_Poller.py
Enter the IP address or DNS Name of APIC: 10.197.204.184
__________________________________________________________
Enter the username: admin
___________________________________________________________
Enter the password: **********
Trying to connect to APIC
Connection established to the APIC
___________________________________________________________
2. Script-1 vraagt naar de locatie/het pad op de lokale machine/computer, waar de records worden opgeslagen. Geef een geldig pad op, anders wordt het script niet uitgevoerd.
Please enter the folder where files have to be stored
_____________________________________________________________
VALID folder format:
EXAMPLE:
Windows-> C:\Users\Admin\Desktop\ACI\
MAC -> /User/admin/Desktop/ACI/
---------------------------------------------------------------------------------------------------
PLEASE NOTE that data collection and script execution might get impacted if folder format is not as below
--------------------------------------------------------------------------------------------------------
Enter the absolute path of the folder where the files have to be stored:/Users/abcd/Downloads/FCS_Checker/ <<<<<<<<<<<<<<
3. Het script vraagt nu om de eindtijd van de uitvoering.
Geef de tijd op in het formaat yyyy-mm-dd hh:mm (per lokale tijdzone van stof), minimaal 5 minuten en maximaal 7 dagen.
Op dit moment begint script-1 elke vijf minuten FCS/CRC-fouten van de fabric te verzamelen (tot de eindtijd die eerder door de gebruiker is opgegeven) en worden gegevens opgeslagen in bestanden op het pad dat is opgegeven in eerdere invoer.
----------------------------------------------------------------
Enter the End Time until which the script runs(in the format of yyyy-mm-dd hh:mm, current time:2021-09-27 11:27.... maximum upto 2021-10-04 11:27): 2021-09-27 11:32 <<<<<
___________________________________________________________
The script is executing ........................
The script is executing ........................
ABCD-M-G24X:downloads abcd$
4. Na succesvolle uitvoering van het eerste script, slaat het onbewerkte gegevensbestanden op op de locatie die door de gebruiker in stap-2 is opgegeven.
Controleer hetzelfde als in het onderstaande voorbeeld.
ABCD-M-G24X:FCS_Checker kbosu$ pwd
/Users/abcd/Downloads/FCS_Checker
ls -l
total 16
-rw-r--r--@ 1 kbosu staff 1419 Sep 27 11:28 CRC_FCS_20210927_1128.txt
-rw-r--r--@ 1 kbosu staff 1419 Sep 27 11:33 CRC_FCS_20210927_1133.txt
ABCD-M-G24X:FCS_Checker abcd$
5. Nu is het tijd om het tweede script uit te voeren (ACI_CRC_Parser.py).
Script-2 gaat die bestanden gebruiken die door script-1 zijn gemaakt en verder werken.
Voer het OOB IP-adres in voor een van de APIC's in een bepaald cluster en de bijbehorende referenties.
Voer ook dezelfde bestandslocatie in die u in stap 2 hebt ingevoerd tijdens het uitvoeren van het eerste script.
ABCD-M-G24X:downloads abcd$ python3 ACI_CRC_Parser.py
Enter the IP address or DNS Name of APIC: 10.197.204.184
__________________________________________________________
Enter the username: admin
___________________________________________________________
Enter the password: **********
Trying to connect to APIC
Connection established to the APIC
_____________________________________________________________
Please enter the folder where files are stored
Please make sure we have at least two files exists in the directory where you have saved data
_____________________________________________________________
--------------------------------------------------------------------------------------------------------
Enter the absolute path of the folder where the files are stored:/Users/abcd/Downloads/FCS_Checker/
___________________________________________________________
You have CRC and FCS for the below date range
1.2021-09-27
Fetching first and last file of the same date 20210927
CRC_FCS_20210927_1128.txt
CRC_FCS_20210927_1133.txt
__________________________________________________________
The script is executing.....
__________________________________________________________
The script execution has completed
6. Script-2 gaat de gegevens in een tabelindeling afdrukken, zoals in het onderstaande voorbeeld wordt getoond.
In de eerste plaats gaat het de knooppuntinterfaces vermelden met niet-nul CRC- en FCS-fouten, samen met het verschil in hun CRC / FCS-tellers, tijdens het tijdsinterval dat door de gebruiker is opgegeven. Met behulp van LLDP zal het script ook het buurapparaat bepalen dat is aangesloten op bepaalde interfaces en het belangrijkste is dat het aangeeft welke node / interface de bron van fouten is vanuit het oogpunt van de stof en welke node-interfaces alleen CRC's zien als gevolg van Stomp.
Vanuit het perspectief van FCS-probleemoplossing is het probleem dat in "Rood" is gemarkeerd en als "Lokaal" is gemarkeerd, waar verdere probleemoplossing op moet worden gericht.
Dit is waarschijnlijk de interface (s), waar slechte / beschadigde pakketten de stof binnenkomen en ervoor zorgen dat de CRC's in de stof worden overstroomd.
+--------+---------+--------------------+-----------+-----------+---------------+---------------+---------------+---------------+-------------------------------------------------------------------------------------+--------------+
| POD_ID | NODE_ID | NODE_NAME | NODE_ROLE | INTERFACE | 20210927_1128 | 20210927_1133 | 20210927_1128 | 20210927_1133 | NEIGHBOR | ERROR SOURCE |
+--------+---------+--------------------+-----------+-----------+-----CRC-------+----CRC Diff---+----FCS--------+---FCS Diff----+-------------------------------------------------------------------------------------+--------------+
| 1 | 302 | bgl-aci06-t2-leaf2 | leaf | eth1/44 | 5002806823759 | 127841888 | 5002806823759 | 127841888 | No LLDP /CDP neighbours found please check physically where this interface connects | Local |
| 1 | 101 | bgl-aci06-spine1 | spine | eth1/1 | 2981200154 | 132103050 | 0 | 0 | System:bgl-aci06-t1-leaf1.cisco.com,Interface:Eth1/49 | Stomp |
| 1 | 101 | bgl-aci06-spine1 | spine | eth1/2 | 968286 | 0 | 0 | 0 | | Historic |
| 1 | 201 | bgl-aci06-t1-leaf1 | leaf | eth1/1 | 12 | 0 | 0 | 0 | | Historic |
| 1 | 201 | bgl-aci06-t1-leaf1 | leaf | eth1/51 | 4999243774529 | 0 | 0 | 0 | | Historic |
| 1 | 201 | bgl-aci06-t1-leaf1 | leaf | eth1/52 | 5002807353809 | 127841212 | 0 | 0 | System:bgl-aci06-t2-leaf2.cisco.com,Interface:Eth1/49 | Stomp |
| 1 | 202 | bgl-aci06-t1-leaf2 | leaf | eth1/51 | 968286 | 0 | 0 | 0 | | Historic |
| 1 | 301 | bgl-aci06-t2-leaf1 | leaf | eth1/44 | 4999245287405 | 0 | 4999245287405 | 0 | | Historic |
| 1 | 301 | bgl-aci06-t2-leaf1 | leaf | eth1/49 | 4999823953891 | 0 | 0 | 0 | | Historic |
| 1 | 302 | bgl-aci06-t2-leaf2 | leaf | eth1/49 | 4999243774529 | 0 | 0 | 0 | | Historic |
+--------+---------+--------------------+-----------+-----------+---------------+---------------+---------------+---------------+-------------------------------------------------------------------------------------+--------------+
7. Bovendien zal het script de volgende opties bieden aan de gebruikers om granulaire gegevens te sorteren en te bekijken, wat werd verzameld door script-1 en 2.
De gebruiker kan een optie kiezen tussen nummer 1-3 als invoer. Zie het voorbeeld hieronder.
1.Sort the data further
2.View the granular data of an interface
3.Exit
Input the number:
In het onderstaande voorbeeld gaan we voor optie 2 die ons helpt om gedetailleerde gegevens voor een bepaalde interface te bekijken.
Het script zal de gebruiker vragen om het respectievelijke POD-nummer, Node ID en interface-ID in te voeren uit de bovenstaande tabel (stap 6).
Hier in dit voorbeeld gebruiken we 1-302-eth1/44, waarbij POD ID 1 is, Node ID 302 en Interface ID eth1/44. Dit is de interface
waar lokale FCS werd gerapporteerd door het script, zoals weergegeven in stap-6.
Input the number:2
---------------------------------------------------------------------------
Enter an interface for which you need granular data(POD_ID-NODE_ID-INTERFACE Example:1-101-eth1/5): 1-302-eth1/44
----------------------------------------------------------------------
You have CRC and FCS data in the below date range
1.2021-09-27
Enter the date for which you need granular data(any number from the above list range(1-1)):
In ons voorbeeld verzamelden we de gegevens slechts enkele minuten van een dag, vandaar dat we slechts één optie zien voor gedateerd 27 september.
Onze input zal dus "1" zijn.
Enter the date for which you need granular data(any number from the above list range(1-1)): 1
+-------+---------------+---------------+
| Time | CRC | FCS |
+-------+---------------+---------------+
| 11:28 | 5002806823759 | 5002806823759 |
| 11:33 | 5002934665647 | 5002934665647 |
+-------+---------------+---------------+
----------------------------------------------------------------
Do you want to continue viewing the granular data(0/1), 1-yes, 0-no:0
--------------------------------------------------------------------------------
Please select any number below to sort the data further or to view granular data of an interface
1.Sort the data further
2.View the granular data of an interface
3.Exit
Input the number:3
ABCD-M-G24X:downloads abcd$