IT 정보/네트워크 스위치

🛠️ 실무 팁(중급): 시스코 라우터 'OSPF LSA' 자동 분석 및 토폴로지 시각화

DONOT 2025. 6. 22. 16:16
OSPF LSA 자동 분석으로 네트워크 토폴로지 한눈에 파악
OSPF LSA Topology
시스코 라우터에서 OSPF LSA(Link State Advertisement) 정보를 자동으로 수집·분석해
네트워크 토폴로지를 시각화하는 파이썬 스크립트 실전 예제입니다.
복잡한 OSPF 네트워크의 구조를 직관적으로 파악할 수 있습니다.

실전 코드 예시
import networkx as nx
import matplotlib.pyplot as plt
from netmiko import ConnectHandler

def analyze_ospf_topology(router_list):
G = nx.Graph()

for router in router_list:
    connection = ConnectHandler(**router)

    # OSPF LSA 정보 수집
    lsa_output = connection.send_command("show ip ospf database")

    # LSA 파싱 및 그래프 구성
    for line in lsa_output.split('\n'):
        if 'Router Link States' in line:
            # 라우터 링크 상태 파싱
            router_id = extract_router_id(line)
            G.add_node(router_id)

        elif 'Link ID' in line:
            # 링크 정보 파싱
            link_data = parse_link_info(line)
            G.add_edge(link_data['source'], link_data['destination'])

    connection.disconnect()

# 토폴로지 시각화
plt.figure(figsize=(15, 10))
pos = nx.spring_layout(G, k=3, iterations=50)

nx.draw(G, pos, with_labels=True, node_color='lightblue', 
        node_size=1500, font_size=10, font_weight='bold')

plt.title("OSPF Network Topology")
plt.savefig("ospf_topology.png", dpi=300, bbox_inches='tight')
plt.show()

return G

def extract_router_id(line):
# 라우터 ID 추출 로직
return line.split()[2]

def parse_link_info(line):
# 링크 정보 파싱 로직
parts = line.split()
return {
'source': parts[0],
'destination': parts[1]
}

사용 예시

routers = [
{'device_type': 'cisco_ios', 'host': '10.1.1.1', 'username': 'admin', 'password': 'password'},
{'device_type': 'cisco_ios', 'host': '10.1.1.2', 'username': 'admin', 'password': 'password'}
]

topology = analyze_ospf_topology(routers)




실무 적용 포인트

  • OSPF 네트워크 토폴로지 자동 문서화
  • 링크 장애 시 영향 범위 분석 및 우회 경로 계획
  • 네트워크 최적화를 위한 토폴로지 개선점 도출

OSPF LSA 분석으로 네트워크 가시성과 운영 효율을 극대화하세요!
반응형