Introduction
Ce document décrit comment créer une topologie IS-IS (Intermediate System-to-Intermediate System) à partir d'une sortie CLI d'un routeur avec le logiciel IOS-XR installé.
Contribué par Agung Semarajaya, ingénieur TAC Cisco.
Conditions préalables
Conditions requises
Cisco recommande que vous ayez une bonne connaissance de ces sujets :
Components Used
Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :
- ASR 9001 avec IOS-XR version 6.3.2
- Lenovo P50 avec système d'exploitation Windows 10 Enterprise 64 bits
- Graphviz version 2.38
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si votre réseau est en ligne, assurez-vous de bien comprendre l’incidence possible des commandes.
Informations générales
Afin de dépanner un réseau IS-IS, il est important de comprendre comment les routeurs sont interconnectés pour différentes raisons. Vous pouvez disposer des informations de topologie, mais la topologie est obsolète.
À partir de la version 6.3.2 d'IOS-XR, la commande show isis database graph verbose est présentée pour produire un graphique de topologie de réseau au format DOT qui peut être utilisé comme entrée pour les outils de rendu.
Configuration
Assurez-vous que des contiguïtés IS-IS sont créées et qu'au moins un routeur avec IOS-XR version 6.3.2 ou ultérieure est installé. Utilisez ces étapes pour créer la topologie IS-IS mise à jour à partir de la sortie CLI.
Étape 1. Exécutez la commande show isis database graph verbose sur le périphérique IOS-XR.
Étape 2. Copiez le contenu de la commande de l'étape 1 dans un fichier texte et enregistrez le fichier au format .txt.
Étape 3. Téléchargez et installez le logiciel de conversion DOT sur votre ordinateur, par exemple Graphviz - Graph Visualization Software.
Étape 4. Une fois installé, ouvrez l'invite de commandes (cela s'applique à Windows) et accédez au répertoire dans lequel se trouvent les fichiers exécutables de l'interface de ligne de commande Graphviz. Voici un exemple de navigation.
C:\Users\user>cd "C:\Program Files (x86)\Graphviz2.38"\bin
Étape 5. Utilisez l'interface de ligne de commande pour convertir le fichier enregistré à l'étape 1 vers d'autres formats, tels que .png.
Cet exemple indique comment utiliser l'interface de ligne de commande DOT.
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
Cet exemple montre comment utiliser l'interface de ligne de commande 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
Vous trouverez plus de détails sur l'interface de ligne de commande via Graphviz - Documentation du logiciel de visualisation de graphiques.
Note: À l'étape 5, vous pouvez simplement définir la variable de chemin vers le répertoire où se trouvent les fichiers exécutables de l'interface de ligne de commande Graphviz.
Limitation connue
1. Si vous exécutez les niveaux 1 et 2 dans IS-IS et que les deux sont présents, alors seul le niveau 1 apparaît dans la sortie show isis database graph verbose (le premier diagramme). Pour résoudre ce problème, vous pouvez modifier le fichier d'entrée et supprimer le diagramme pour le niveau 1 ou le niveau 2, ou vous pouvez prendre l'entrée et utiliser ces commandes avec le mot clé niveau 1 ou niveau 2.
show isis database graph level 1 verbose
show isis database graph level 2 verbose
2. DOT a tendance à se bloquer lorsque le fichier contient [label=0] éléments. Une approche consiste simplement à les modifier et à exécuter l'interface de ligne de commande.
Note: D'autres outils, comme Circo, n'ont pas ce problème.
Exemple
- Exécutez la commande 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];
}
- Convertissez le résultat à l'aide de l'interface de ligne de commande. Ce résultat montre la sortie via l'outil Circo.