Introducción
Este documento describe cómo crear una topología Sistema intermedio a sistema intermedio (IS-IS) a partir de una salida CLI de un router con software IOS-XR instalado.
Colaborado por Agung Semarajaya, ingeniero del TAC de Cisco.
Prerequisites
Requirements
Cisco recomienda que tenga un sólido conocimiento de estos temas:
Componentes Utilizados
La información que contiene este documento se basa en las siguientes versiones de software y hardware.
- ASR 9001 con IOS-XR versión 6.3.2
- Lenovo P50 con sistema operativo Windows 10 Enterprise de 64 bits
- Gráficviz versión 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 tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.
Antecedentes
Para resolver problemas de una red IS-IS, es importante entender cómo los routers están interconectados por varias razones. Puede tener la información de topología, sin embargo, la topología está obsoleta.
Desde la versión 6.3.2 del IOS-XR, el comando show isis database graph verbose se introduce para producir un gráfico de topología de red en formato DOT que puede utilizarse como entrada para las herramientas de representación.
Configurar
Asegúrese de que tiene construidas adyacencias IS-IS y al menos un router con la versión 6.3.2 o posterior de IOS-XR instalada. Utilice estos pasos para crear la topología IS-IS actualizada a partir del resultado de CLI.
Paso 1. Ejecute el comando show isis database graph verbose en el dispositivo IOS-XR.
Paso 2. Copie el contenido del comando desde el paso 1 a un archivo de texto y guarde el archivo en formato .txt.
Paso 3. Descargue e instale el paquete de software convertidor DOT en su equipo, por ejemplo, Graphviz - Graph Visualization Software.
Paso 4. Una vez instalado, abra el símbolo del sistema (se aplica a Windows) y desplácese al directorio en el que se encuentran los archivos ejecutables de la CLI de Graphviz. Este es un ejemplo de la navegación.
C:\Users\user>cd "C:\Program Files (x86)\Graphviz2.38"\bin
Paso 5. Utilice la CLI para convertir el archivo guardado en el paso 1 a otros formatos, como .png.
Este ejemplo indica cómo utilizar la CLI de 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
Este ejemplo muestra cómo utilizar la CLI de 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
Puede encontrar más detalles sobre CLI a través de la documentación de Graphviz - Graph Visualization Software.
Nota: En el paso 5, simplemente puede establecer la variable de trayectoria en el directorio donde se encuentran los archivos ejecutables de la CLI de Graphviz.
Limitación conocida
1. Si ejecuta el nivel 1 y el nivel 2 en IS-IS y ambos están presentes, sólo aparece el nivel 1 en el resultado show isis database graph verbose (el primer dígrafo). Para solucionar este problema, puede editar el archivo de entrada y quitar el diagrama para el nivel 1 o el nivel 2, o puede tomar la entrada y utilizar estos comandos con la palabra clave level 1 o level 2.
show isis database graph level 1 verbose
show isis database graph level 2 verbose
2. DOT tiende a fallar cuando el archivo contiene [label=0] elementos. Un enfoque es simplemente editarlos y luego ejecutar la CLI.
Nota: Otras herramientas, como Circo, no tienen este problema.
Ejemplo:
- Ejecute el 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];
}
- Convierta el resultado mediante la CLI. Este resultado muestra el resultado a través de la herramienta Circo.