目錄

簡介

必要條件

需求

採用元件

背景資訊

設定

已知限制

範例

簡介

本檔案介紹如何從安裝有IOS-XR軟體的路由器的CLI輸出建立中間系統到中間系統(IS-IS)拓撲。

作者：Agung Semarajaya，思科TAC工程師。

必要條件

需求

思科建議您充分瞭解以下主題：

- IS-IS

- IOS-XR

採用元件

本文中的資訊係根據以下軟體和硬體版本：

- 採用IOS-XR版本6.3.2的ASR 9001

- 採用64位Windows 10企業版作業系統的聯想P50

- Graphviz版本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

此示例說明如何使用Cisco 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

您可通過Graphviz - Graph Visualization Software文檔找到有關CLI的更多詳細資訊。

附註：在步驟5中，您只需將path變數設定為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工具得到的輸出。