Introduzione
Questo documento descrive come creare una topologia IS-IS (Intermediate System-to-Intermediate System) da un output CLI di un router con software IOS-XR installato.
Contributo di Agung Semarajaya, Cisco TAC Engineer.
Prerequisiti
Requisiti
Cisco raccomanda una buona conoscenza dei seguenti argomenti:
Componenti usati
Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:
- ASR 9001 con IOS-XR versione 6.3.2
- Lenovo P50 con sistema operativo Windows 10 Enterprise a 64 bit
- Graphiz release 2.38
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
Premesse
Per risolvere i problemi relativi a una rete IS-IS, è importante capire come i router sono interconnessi per vari motivi. È possibile disporre delle informazioni sulla topologia, ma la topologia è obsoleta.
Da IOS-XR versione 6.3.2, è stato introdotto il comando show isis database graph verbose per produrre un grafico della topologia di rete in formato DOT che può essere utilizzato come input per gli strumenti di rendering.
Configurazione
Accertarsi di disporre di adiacenze IS-IS integrate e di almeno un router con IOS-XR versione 6.3.2 o successive installata. Utilizzare questi passaggi per creare la topologia IS-IS aggiornata dall'output CLI.
Passaggio 1. Eseguire il comando show isis database graph verbose sul dispositivo IOS-XR.
Passaggio 2. Copiare il contenuto del comando dal passaggio 1 in un file di testo e salvare il file in formato .txt.
Passaggio 3. Scaricare e installare il pacchetto software del convertitore DOT sul computer, ad esempio Graphviz - Graph Visualization Software.
Passaggio 4. Una volta installato, aprire il prompt dei comandi (applicabile a Windows) e passare alla directory in cui si trovano i file eseguibili di Graphivz CLI. Questo è un esempio della navigazione.
C:\Users\user>cd "C:\Program Files (x86)\Graphviz2.38"\bin
Passaggio 5. Utilizzare CLI per convertire il file salvato nel passaggio 1 in altri formati, ad esempio .png.
Questo esempio indica come utilizzare DOT CLI.
C:\Program Files (x86)\Graphviz2.38\bin>dot.exe -Tpng C:\Users\user\Desktop\isis_graph_verbose.txt -o C:\Users\user\Desktop\isis_graph_verbose.png
Nell'esempio viene mostrato come utilizzare la CLI di Circo.
C:\Program Files (x86)\Graphviz2.38\bin>circo.exe -Tpng :\Users\user\Desktop\isis_graph_verbose.txt -o C:\Users\user\Desktop\isis_graph_verbose.png
Per ulteriori dettagli sulla CLI, consultare la documentazione del software Graphviz - Graph Visualization.
Nota: Nel passo 5 è sufficiente impostare la variabile path sulla directory in cui si trovano i file eseguibili della CLI Graphivz.
Limitazione nota
1. Se si esegue il livello 1 e il livello 2 in IS-IS ed entrambi sono presenti, solo il livello 1 viene visualizzato nell'output dettagliato del grafico di database show isis (il primo diagramma). Per risolvere il problema, è possibile modificare il file di input e rimuovere il diagramma per il livello 1 o 2 oppure utilizzare l'input e questi comandi con la parola chiave livello 1 o livello 2.
visualizzazione dettagliata del livello 1 del grafico del database isis
visualizzazione dettagliata del livello 2 del grafico del database isis
2. Il punto tende a bloccarsi quando il file contiene elementi [label=0]. Un approccio consiste nel modificare questi elementi ed eseguire la CLI.
Nota: Altri strumenti, come Circo, non hanno questo problema.
Esempio
- Eseguire il comando show isis database graph verbose.
RP/0/RSP0/CPU0:ASR10_9001-A#show isis database graph verbose
Wed Sep 12 11:23:38.651 AEST
/*
* Network topology in DOT format. For information on using this to
* generate graphical representations see http://www.graphviz.org
*/
digraph "level-2" {
graph [rankdir=LR];
node [fontsize=9];
edge [fontsize=6];
"ASR1" [label="\N\n172.16.0.1"];
"ASR1" -> "AASR6--9904.05" [constraint=false];
"ASR2" [label="\N\n172.16.0.2"];
"ASR2" -> "ASR2.01" [constraint=false];
"ASR2" -> "ASR2.03" [constraint=false];
"ASR2" -> "ASR3-9010";
"ASR2.01" -> "ASR2" [label=0] [constraint=false];
"ASR2.01" -> "AASR6--9904" [label=0] [constraint=false];
"ASR2.03" -> "ASR2" [label=0] [constraint=false];
"ASR2.03" -> "ASR7-9912" [label=0] [constraint=false];
"ASR3-9010" [label="\N\n172.16.0.3"];
"ASR3-9010" -> "ASR2";
"ASR3-9010" -> "AASR6--9904.09" [constraint=false];
"ASR3-9010" -> "ASR7-9912.03" [label=20] [constraint=false];
"ASR4-9006" [label="\N\n172.16.0.4"];
"ASR4-9006" -> "ASR4-9006.01" [constraint=false];
"ASR4-9006.01" -> "ASR4-9006" [label=0] [constraint=false];
"ASR4-9006.01" -> "ASR7-9912" [label=0] [constraint=false];
"AASR6--9904" [label="\N\n172.16.0.6"];
"AASR6--9904" -> "AASR6--9904.05" [constraint=false];
"AASR6--9904" -> "AASR6--9904.09" [constraint=false];
"AASR6--9904" -> "AASR6--9904.01" [constraint=false];
"AASR6--9904" -> "ASR2.01" [constraint=false];
"AASR6--9904" -> "ASR10_9001-A.01" [constraint=false];
"AASR6--9904.01" -> "AASR6--9904" [label=0] [constraint=false];
"AASR6--9904.01" -> "ASR7-9912" [label=0] [constraint=false];
"AASR6--9904.05" -> "AASR6--9904" [label=0] [constraint=false];
"AASR6--9904.05" -> "ASR1" [label=0] [constraint=false];
"AASR6--9904.09" -> "AASR6--9904" [label=0] [constraint=false];
"AASR6--9904.09" -> "ASR3-9010" [label=0] [constraint=false];
"ASR7-9912" [label="\N\n172.16.0.7"];
"ASR7-9912" -> "ASR7-9912.03" [label=20] [constraint=false];
"ASR7-9912" -> "ASR2.03" [constraint=false];
"ASR7-9912" -> "ASR4-9006.01" [constraint=false];
"ASR7-9912" -> "AASR6--9904.01" [constraint=false];
"ASR7-9912" -> "ASR10_9001-A.03" [constraint=false];
"ASR7-9912" -> "ASR11_9001-B.03" [constraint=false];
"ASR7-9912.03" -> "ASR7-9912" [label=0] [constraint=false];
"ASR7-9912.03" -> "ASR3-9010" [label=0] [constraint=false];
"ASR10_9001-A" [label="\N\n172.16.0.10"];
"ASR10_9001-A" -> "ASR10_9001-A.01" [constraint=false];
"ASR10_9001-A" -> "ASR10_9001-A.03" [constraint=false];
"ASR10_9001-A" -> "ASR10_9001-A.05" [constraint=false];
"ASR10_9001-A.01" -> "ASR10_9001-A" [label=0] [constraint=false];
"ASR10_9001-A.01" -> "AASR6--9904" [label=0] [constraint=false];
"ASR10_9001-A.03" -> "ASR10_9001-A" [label=0] [constraint=false];
"ASR10_9001-A.03" -> "ASR7-9912" [label=0] [constraint=false];
"ASR10_9001-A.05" -> "ASR10_9001-A" [label=0] [constraint=false];
"ASR10_9001-A.05" -> "ASR11_9001-B" [label=0] [constraint=false];
"ASR11_9001-B" [label="\N\n172.16.0.11"];
"ASR11_9001-B" -> "ASR11_9001-B.03" [constraint=false];
"ASR11_9001-B" -> "ASR11_9001-B.01" [constraint=false];
"ASR11_9001-B" -> "ASR10_9001-A.05" [constraint=false];
"ASR11_9001-B.01" -> "ASR11_9001-B" [label=0] [constraint=false];
"ASR11_9001-B.01" -> "WAN02" [label=0] [constraint=false];
"ASR11_9001-B.01" -> "ASR11_9001-B" [label=0] [constraint=false];
"ASR11_9001-B.01" -> "WAN02" [label=0] [constraint=false];
"ASR11_9001-B.03" -> "ASR11_9001-B" [label=0] [constraint=false];
"ASR11_9001-B.03" -> "ASR7-9912" [label=0] [constraint=false];
"ASR11_9001-B.03" -> "ASR11_9001-B" [label=0] [constraint=false];
"ASR11_9001-B.03" -> "ASR7-9912" [label=0] [constraint=false];
"WAN02" [label="\N\n172.16.151.2"];
"WAN02" -> "ASR11_9001-B.01" [constraint=false];
}
- Convertire l'output utilizzando la CLI. Questo risultato mostra l'output tramite lo strumento Circo.