Introduction
Este documento descreve como criar uma topologia Intermediate System-to-Intermediate System (IS-IS) a partir de uma saída CLI de um roteador com o software IOS-XR instalado.
Contribuído por Agung Semarajaya, Engenheiro do TAC da Cisco.
Prerequisites
Requirements
A Cisco recomenda que você tenha um bom conhecimento sobre estes tópicos:
Componentes Utilizados
As informações neste documento são baseadas nestas versões de software e hardware:
- ASR 9001 com IOS-XR versão 6.3.2
- Lenovo P50 com SO Windows 10 Enterprise de 64 bits
- Graphviz release 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. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Informações de Apoio
Para solucionar problemas de uma rede IS-IS, é importante entender como os roteadores estão interconectados por vários motivos. Você pode ter as informações de topologia, no entanto, a topologia está desatualizada.
A partir da versão 6.3.2 do IOS-XR, o comando show isis database graph verbose é introduzido para produzir um gráfico de topologia de rede no formato DOT que pode ser usado como uma entrada para as ferramentas de renderização.
Configurar
Verifique se você tem adjacências IS-IS criadas e pelo menos um roteador com IOS-XR versão 6.3.2 ou superior instalado. Use estas etapas para criar a topologia IS-IS atualizada da saída da CLI.
Etapa 1. Execute o comando show isis database graph verbose no dispositivo IOS-XR.
Etapa 2. Copie o conteúdo do comando da etapa 1 para um arquivo de texto e salve-o no formato .txt.
Etapa 3. Baixe e instale o pacote de software conversor DOT em seu computador, por exemplo Graphviz - Graph Visualization Software.
Etapa 4. Depois de instalado, abra o prompt de comando (isso se aplica ao Windows) e navegue até o diretório onde os arquivos executáveis Graphviz CLI estão localizados. Este é um exemplo da navegação.
C:\Users\user>cd "C:\Program Files (x86)\Graphviz2.38"\bin
Etapa 5. Use a CLI para converter o arquivo salvo na etapa 1 em outros formatos, como .png.
Este exemplo indica como usar a CLI 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 exemplo mostra como usar a CLI do 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
Você pode encontrar mais detalhes sobre a CLI via Graphviz - Graph Visualization Software Docualization.
Note: Na etapa 5, você pode simplesmente definir a variável de caminho para o diretório onde os arquivos executáveis da CLI Graphviz estão localizados.
Limitação conhecida
1. Se você executar os níveis 1 e 2 em IS-IS e ambos estiverem presentes, somente o nível 1 será exibido na saída show isis database graph verbose (o primeiro gráfico). Para corrigir esse problema, você pode editar o arquivo de entrada e remover o gráfico para o nível 1 ou o nível 2, ou pode inserir e usar esses comandos com a palavra-chave nível 1 ou nível 2.
show isis database graph level 1 verbose
show isis database graph level 2 verbose
2. O DOT tende a travar quando o arquivo contém [label=0] elementos. Uma abordagem é simplesmente editá-los e executar a CLI.
Note: Outras ferramentas, como o Circo, não têm esse problema.
Exemplo
- Execute o 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];
}
- Converta a saída usando a CLI. Este resultado mostra a saída através da ferramenta Circo.