Introduzione
ACI segue il Cut-Through Switching, il che significa che il pacchetto è già inoltrato prima che il CRC possa essere calcolato. Questi pacchetti vengono in genere reindirizzati e inoltrati come errori di output. Poiché ACI non scarta questi pacchetti, lo stesso pacchetto attraversa il pacchetto e i contatori CRC dello stomp vengono incrementati sul percorso. Ciò non significa che tutte le interfacce che visualizzano il CRC siano difettose. Pertanto, è necessaria una selezione corretta per isolare la porta/SFP/fibra che presenta un problema. Il processo di valutazione è ora automatizzato tramite script Python, semplificando la risoluzione dei problemi ed evitando operazioni manuali. Scopo di questo documento è spiegare come utilizzare gli script di automazione (vedere allegato).
Prerequisiti per l'esecuzione manuale dello script
Il computer client da cui verrà eseguito lo script deve soddisfare i seguenti requisiti
r. È necessario installare Python3
b. Accesso di rete al dominio ACI
c. ACI_CRC_requirements.txt (collegato) da installare. Il file si trova qui.
Scaricare il file (ACI_CRC_requirements.txt) sul computer client
Aprire Terminal ed eseguire il comando: pip3 install -r ACI_CRC_requirements.txt
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
Prerequisiti per l'esecuzione dello script dal contenitore
Viene preparato un contenitore con i suddetti pacchetti Python preinstallati.
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
Passi per l'esecuzione degli script
Sono disponibili due script Python (ACI_CRC_Poller.py e ACI_CRC_Parser.py). Questi script sono disponibili per il download da Cisco DevNet Code Exchange utilizzando l'URL riportato di seguito.
https://developer.cisco.com/codeexchange/github/repo/CiscoDevNet/ACI-CRC-FCS-Checker
Scaricarli entrambi sul computer, dove si desidera eseguire gli script.
In questo documento, script-1 fa riferimento a ACI_CRC_Poller.py e script-2 fa riferimento a ACI_CRC_Parser.py.
1. ACI_CRC_Poller.py raccoglierà i dati degli errori CRC e FCS in file ogni cinque minuti per un massimo di sette giorni di durata.
Eseguire lo script-1 (ACI_CRC_Poller.py) da Terminal. Immettere l'indirizzo IP OOB per uno degli APIC nel cluster specificato e le relative credenziali.
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 richiede la posizione/il percorso sul computer locale/computer in cui archiviare i record. Immettere un percorso valido, altrimenti lo script non verrà eseguito.
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. Lo script richiederà ora l'ora di fine dell'esecuzione.
Immettere l'ora nel formato aaaa-mm-gg hh:mm (per fuso orario locale della struttura), da un minimo di 5 minuti a un massimo di 7 giorni.
A questo punto, lo script-1 inizia a raccogliere gli errori FCS/CRC dall'infrastruttura ogni cinque minuti (fino all'ora di fine specificata in precedenza dall'utente) e salva i dati nei file nel percorso specificato nell'input precedente.
----------------------------------------------------------------
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. Una volta completata l'esecuzione del primo script, i file di dati non elaborati verranno memorizzati nella posizione specificata dall'utente nel passaggio 2.
Verificare quanto mostrato nell'esempio seguente.
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. A questo punto è possibile eseguire il secondo script (ACI_CRC_Parser.py).
Script-2 utilizzerà i file creati da script-1 e lavorerà ulteriormente.
Immettere l'indirizzo IP OOB per uno degli APIC nel cluster specificato e le relative credenziali.
Inoltre, immettere lo stesso percorso di file immesso al passaggio 2 durante l'esecuzione del primo 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 stamperà i dati in formato tabulare come illustrato nell'esempio seguente.
In particolare, verranno elencate le interfacce nodo con errori CRC e FCS diversi da zero, insieme alla differenza nei contatori CRC/FCS, durante l'intervallo di tempo specificato dall'utente. Utilizzando LLDP, lo script determinerà anche il dispositivo adiacente collegato con determinate interfacce e, cosa più importante, indicherà quale nodo/interfaccia è la fonte di errori dal punto di vista dell'infrastruttura e quali interfacce del nodo stanno semplicemente visualizzando CRC a causa di Stomp.
Dal punto di vista della risoluzione dei problemi FCS, quello evidenziato in "Rosso" e contrassegnato come "Locale" è il punto su cui si dovrebbe focalizzare la risoluzione dei problemi.
È probabile che si tratti dell'interfaccia o delle interfacce, in cui i pacchetti danneggiati o danneggiati entrano nel fabric causando il flooding dei CRC.
+--------+---------+--------------------+-----------+-----------+---------------+---------------+---------------+---------------+-------------------------------------------------------------------------------------+--------------+
| 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. Inoltre, lo script fornirà le seguenti opzioni agli utenti per ordinare e visualizzare i dati granulari, che sono stati raccolti dallo script-1 e dallo script-2.
L'utente può scegliere un'opzione tra 1 e 3 come input. Vedere l'esempio seguente.
1.Sort the data further
2.View the granular data of an interface
3.Exit
Input the number:
Nell'esempio seguente viene illustrata l'opzione 2 che consente di visualizzare dati granulari per ogni interfaccia specificata.
Lo script richiederà all'utente di immettere il numero del POD, l'ID del nodo e l'ID dell'interfaccia dalla tabella stampata in precedenza (passaggio 6).
In questo esempio, viene utilizzato 1-302-eth1/44, dove ID POD è 1, ID nodo è 302 e ID interfaccia eth1/44. Questa è l'interfaccia
dove FCS locale è stato segnalato dallo script, come illustrato al passaggio 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)):
Nell'esempio riportato, i dati sono stati raccolti solo per pochi minuti al giorno, pertanto è disponibile un'unica opzione con data 27 settembre.
Pertanto, il nostro contributo sarà "1".
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$