目录

简介

先决条件

要求

使用的组件

背景信息

配置

已知限制

示例

简介

本文档介绍如何从安装了IOS-XR软件的路由器的CLI输出创建中间系统到中间系统(IS-IS)拓扑。

作者：思科TAC工程师Agung Semarajaya。

先决条件

要求

思科建议您对以下主题有充分的了解：

- IS-IS

- IOS-XR

使用的组件

本文档中的信息基于以下软件和硬件版本：

- ASR 9001，带IOS-XR版本6.3.2

- 具有64位Windows 10企业版操作系统的联想P50

- 图形版本2.38

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

背景信息

要排除IS-IS网络故障，必须了解路由器如何因各种原因互连。您可以获得拓扑信息，但拓扑已过时。

在IOS-XR版本6.3.2中，引入show isis database graph verbose命令，以生成DOT格式的网络拓扑图，该网络拓扑图可用作渲染工具的输入。

配置

确保已建立IS-IS邻接关系，并且至少安装了一台IOS-XR版本6.3.2或更高版本的路由器。使用以下步骤从CLI输出创建更新的IS-IS拓扑。

步骤1.在IOS-XR设备上运行命令show isis database graph verbose。

步骤2.将步骤1中的命令内容复制到文本文件，并以.txt格式保存文件。

步骤3.在计算机上下载并安装DOT转换器软件包，例如Graphviz - Graph Visualization Software。

步骤4.安装后，打开命令提示符（这适用于Windows）并导航至Graphviz CLI可执行文件所在的目录。这是导航的示例。

C:\Users\user>cd "C:\Program Files (x86)\Graphviz2.38"\bin

步骤5.使用CLI将步骤1中保存的文件转换为其他格式，如.png。

本示例说明如何使用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

此示例显示如何使用Circo CLI。

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

您可以通过图形可视化软件文档查找有关CLI的更多详细信息。

注意：在步骤5中，您只需将路径变量设置到Graphviz CLI可执行文件所在的目录。

已知限制

1.如果在IS-IS中运行1级和2级，并且两者都存在，则在show isis database graph verbose输出中仅显示1级（第一个有向图）。 要解决此问题，可以编辑输入文件并删除级别1或级别2的有向图，或者可以输入这些命令并使用级别1或级别2关键字。

show isis database graph level 1 verbose

show isis database graph level 2 verbose

2.当文件包含[label=0]元素时，DOT往往会崩溃。一种方法是简单地编辑这些内容，然后执行CLI。

注意：其他工具（如Circo）没有此问题。

示例

- 运行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];

}

- 使用CLI转换输出。此结果显示了通过Circo工具的输出。