네트워크 BGP 진단은(는) 무엇을 하나요?
이 스킬은 BGP 세션이 다운되었거나, 플래핑 중이거나, Established 상태이지만 경로가 누락되었거나, 예상치 못한 프리픽스를 광고하는 경우에 사용하세요. 기본 워크플로우는 읽기 전용 증거 수집입니다. 정책 변경 및 리셋 작업은 검토된 변경 창 내에서 수행해야 합니다.
사용 시기
- BGP 이웃이 Idle, Connect, Active, OpenSent 또는 OpenConfirm 상태에 멈춰 있는 경우
- 세션이 Established 상태이지만 예상 프리픽스가 누락된 경우
- route-map, prefix-list, max-prefix 제한 또는 AS 경로 정책이 경로를 필터링하고 있을 수 있는 경우
- BGP 변경 전/후 증거가 필요한 경우
- BGP 요약 출력을 파싱하는 자동화를 검토하는 경우
읽기 전용 분류 흐름
- 정확한 이웃, 주소 계열, VRF, 로컬/원격 ASN을 식별합니다.
- 요약 상태와 마지막 리셋 사유를 캡처합니다.
- 피어 소스 주소에 대한 연결성을 확인합니다.
- 전송 장애를 가정하기 전에 경로 정책 참조를 확인합니다.
- 플랫폼이 지원하는 명령어를 사용하여 광고된 경로, 수신된 경로, 설치된 경로를 비교합니다.
show bgp summary
show bgp neighbors <peer>
show ip route <peer>
show tcp brief | include <peer>|:179
show logging | include BGP|<peer>
show running-config | section router bgp
show ip prefix-list
show route-map
장치가 VRF, IPv6, VPNv4 또는 EVPN을 사용하는 경우 플랫폼별 주소 계열 명령어를 사용하세요. 글로벌 IPv4 유니캐스트를 가정하지 마십시오.
상태 해석
| 상태 | 첫 번째 확인 사항 |
|---|---|
| Established (프리픽스 카운트 있음) | 경로 교환이 정상 작동 중임. 정책 및 테이블 선택 검사 |
| Established (프리픽스 0개) | 인바운드 정책, max-prefix, 광고된 경로, AFI/SAFI 확인 |
| Active | TCP 세션이 완료되지 않음. 라우팅, 소스, ACL, 피어 연결성 확인 |
| Connect | TCP 연결이 진행 중임. 경로 및 원격 수신기 확인 |
| OpenSent/OpenConfirm | TCP는 정상 작동. ASN, 인증, 타이머, 기능, 로그 확인 |
| Idle | 이웃이 비활성화되었거나, 구성 누락, 정책에 의해 차단되었거나, 백오프 타이머일 수 있음 |
전송 확인
ping <peer> source <local-source>
traceroute <peer> source <local-source>
show ip route <peer>
show bgp neighbors <peer> | include BGP state|Last reset|Local host|Foreign host
피어가 루프백에서 소싱된 경우, 양방향 모두 루프백 주소로 라우팅되는지 확인하고 이웃 구성이 예상 업데이트 소스를 사용하는지 확인하세요.
진단 단축키로 ACL 또는 방화벽 정책을 비활성화하지 마세요. 먼저 히트 카운터, 로그 및 경로 상태를 읽으세요.
경로 정책 확인
show bgp neighbors <peer> advertised-routes
show bgp neighbors <peer> routes
show ip prefix-list <name>
show route-map <name>
show bgp <prefix>
일부 플랫폼에서는 received-routes를 사용 가능하게 하기 위해 추가 구성이 필요합니다. 운영자가 변경을 승인하지 않는 한 인시던트 분류 중에 해당 구성을 추가하지 마세요.
AS 경로 및 프리픽스 검토
show bgp regexp _65001_
show bgp regexp ^65001$
show bgp <prefix>
show bgp neighbors <peer> advertised-routes | include Network|Path|<prefix>
AS-path 정규식을 신중하게 사용하세요. _65001_은 토큰으로 AS 65001과 일치합니다. 일반 65001은 더 긴 ASN이나 관련 없는 텍스트와 일치할 수 있습니다.
파서 패턴
import re
from typing import Any
BGP_SUMMARY_RE = re.compile(
r"^(?P<neighbor>\d{1,3}(?:\.\d{1,3}){3})\s+"
r"(?P<version>\d+)\s+"
r"(?P<remote_as>\d+)\s+"
r"(?P<msg_rcvd>\d+)\s+"
r"(?P<msg_sent>\d+)\s+"
r"(?P<table_version>\d+)\s+"
r"(?P<input_queue>\d+)\s+"
r"(?P<output_queue>\d+)\s+"
r"(?P<uptime>\S+)\s+"
r"(?P<state_or_prefixes>\S+)$",
re.M,
)
def parse_bgp_summary(raw: str) -> list[dict[str, Any]]:
rows = []
for match in BGP_SUMMARY_RE.finditer(raw):
state_or_prefixes = match.group("state_or_prefixes")
if state_or_prefixes.isdigit():
state = "Established"
prefixes_received = int(state_or_prefixes)
else:
state = state_or_prefixes
prefixes_received = None
rows.append({
"neighbor": match.group("neighbor"),
"remote_as": int(match.group("remote_as")),
"state": state,
"prefixes_received": prefixes_received,
"uptime": match.group("uptime"),
})
return rows
가능한 경우 구조화된 파서 출력을 선호하지만, BGP 요약 형식은 플랫폼과 주소 계열에 따라 다르므로 원시 출력을 인시던트 레코드와 함께 저장하세요.
변경 창 전용
다음 작업은 라우팅에 영향을 줄 수 있으므로 자동 진단으로 제안해서는 안 됩니다.
- BGP 세션 초기화.
- 이웃 인증, 타이머, 업데이트 소스, route-map 또는 prefix-list 변경.
- 추가 수신 경로 저장소 활성화.
- 방화벽, ACL 또는 제어 플레인 정책 완화.
리셋이 승인된 경우, 플랫폼에서 지원하는 가장 덜 방해가 되는 소프트 또는 경로 새로 고침 옵션을 선호하고 왜 안전한지 정확히 문서화하세요.
안티 패턴
Active가 항상 원격 측이 다운된 것을 의미한다고 가정하지 마세요.- VRF, 주소 계열 또는 업데이트 소스 차이를 무시하지 마세요.
- 토큰 경계 없이 광범위한 AS-path 정규식을 사용하지 마세요.
- 마지막 리셋 사유와 로그를 읽기 전에 피어를 하드 리셋하지 마세요.
- 누락된
received-routes출력이 도착한 경로가 없다는 증거라고 간주하지 마세요.
참고
- 스킬:
cisco-ios-patterns - 스킬:
network-config-validation - 스킬:
network-interface-health