소개
이 문서에서는 IOS-XR 소프트웨어가 설치된 라우터의 CLI 출력에서 IS-IS(Intermediate System-to-Intermediate System) 토폴로지를 생성하는 방법에 대해 설명합니다.
기고자: Agung Semarajaya, Cisco TAC 엔지니어
사전 요구 사항
요구 사항
Cisco에서는 다음 주제에 대해 잘 알고 있는 것이 좋습니다.
사용되는 구성 요소
이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.
- ASR 9001(IOS-XR 버전 6.3.2)
- Lenovo P50(64비트 Windows 10 Enterprise OS 포함)
- Graphviz 릴리스 2.38
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다.이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다.네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 이해해야 합니다.
배경 정보
IS-IS 네트워크의 문제를 해결하려면 다양한 이유로 라우터가 상호 연결되는 방식을 이해하는 것이 중요합니다.토폴로지 정보를 가질 수 있지만 토폴로지가 오래되었습니다.
IOS-XR 버전 6.3.2에서 show isis database graph verbose 명령은 렌더링 툴에 대한 입력으로 사용할 수 있는 DOT 형식의 네트워크 토폴로지 그래프를 생성하기 위해 도입되었습니다.
구성
IOS-XR 버전 6.3.2 이상이 설치된 라우터와 IS-IS 인접성이 구축되어 있는지 확인합니다.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에 대한 자세한 내용은 Graphviz - Graph Visualization Software 설명서를 참조하십시오.
참고:5단계에서는 경로 변수를 Graphviz CLI 실행 파일이 있는 디렉토리로 설정하면 됩니다.
알려진 제한 사항
1. IS-IS에서 레벨 1 및 레벨 2를 실행하고 둘 다 있는 경우 레벨 1만 show isis database graph verbose 출력(첫 번째 그래프)에 나타납니다. 이 문제를 해결하려면 입력 파일을 편집하고 수준 1 또는 수준 2에 대한 다이어그램을 제거하거나, 입력을 가져와 수준 1 또는 수준 2 키워드와 함께 이 명령을 사용할 수 있습니다.
isis 데이터베이스 그래프 수준 1 세부 정보 표시
isis 데이터베이스 그래프 수준 2 세부 정보 표시
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 도구를 통한 출력을 보여 줍니다.