Diagnóstico BGP de Red
Use esta habilidad cuando una sesión BGP esté caída, oscilando, establecida pero con rutas faltantes, o anunciando prefijos inesperados. El flujo de trabajo predeterminado es la recopilación de evidencia de solo lectura; las acciones de política y reinicio pertenecen a una ventana de cambio revisada.
Cuándo Usar
- Los vecinos BGP están atascados en Idle, Connect, Active, OpenSent u OpenConfirm.
- Una sesión está Established pero faltan los prefijos esperados.
- Un route-map, prefix-list, límite de max-prefix o política de path AS puede estar filtrando rutas.
- Necesita evidencia antes/después para un cambio BGP.
- Está revisando automatización que analiza la salida del resumen BGP.
Flujo de Triage de Solo Lectura
- Identifique el vecino exacto, la familia de direcciones, la VRF y los ASN local/remoto.
- Capture el estado del resumen y la última razón de reinicio.
- Verifique la alcanzabilidad a la dirección fuente del par.
- Revise las referencias de política de ruta antes de asumir una falla de transporte.
- Compare las rutas anunciadas, recibidas e instaladas donde la plataforma lo admita.
show bgp summary
show bgp neighbors <par>
show ip route <par>
show tcp brief | include <par>|:179
show logging | include BGP|<par>
show running-config | section router bgp
show ip prefix-list
show route-map
Use comandos específicos de familia de direcciones para la plataforma cuando el dispositivo use VRFs, IPv6, VPNv4 o EVPN. No asuma unicast IPv4 global.
Interpretación de Estados
| Estado | Primeras comprobaciones |
|---|---|
| Established con conteo de prefijos | El intercambio de rutas está activo; inspeccione política y selección de tabla |
| Established con cero prefijos | Verifique política de entrada, max-prefix, rutas anunciadas y AFI/SAFI |
| Active | La sesión TCP no se completa; verifique enrutamiento, fuente, ACLs y alcanzabilidad del par |
| Connect | La conexión TCP está en progreso; verifique ruta y receptor remoto |
| OpenSent/OpenConfirm | TCP funciona; verifique ASN, autenticación, temporizadores, capacidades y registros |
| Idle | El vecino puede estar deshabilitado, falta configuración, bloqueado por política o temporizador de retroceso |
Comprobaciones de Transporte
ping <par> source <fuente-local>
traceroute <par> source <fuente-local>
show ip route <par>
show bgp neighbors <par> | include BGP state|Last reset|Local host|Foreign host
Si el par se origina desde un loopback, confirme que ambas direcciones enruten hacia las direcciones de loopback y que la configuración del vecino use la fuente de actualización esperada.
Evite deshabilitar ACLs o políticas de firewall como atajo de diagnóstico. Lea primero los contadores de aciertos, registros y estado de ruta.
Comprobaciones de Política de Ruta
show bgp neighbors <par> advertised-routes
show bgp neighbors <par> routes
show ip prefix-list <nombre>
show route-map <nombre>
show bgp <prefijo>
Algunas plataformas requieren configuración adicional antes de que received-routes esté disponible. No agregue esa configuración durante el triage de incidentes a menos que el operador apruebe el cambio.
Revisión de Path AS y Prefijo
show bgp regexp _65001_
show bgp regexp ^65001$
show bgp <prefijo>
show bgp neighbors <par> advertised-routes | include Network|Path|<prefijo>
Use regex de AS-path con cuidado. _65001_ coincide con AS 65001 como token. 65001 simple puede coincidir con ASN más largos o texto no relacionado.
Patrón de Análisis
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
Prefiera la salida de analizador estructurado cuando esté disponible, pero almacene la salida sin procesar con el registro del incidente porque los formatos de resumen BGP varían según la plataforma y la familia de direcciones.
Solo Ventana de Cambio
Estas acciones pueden afectar el enrutamiento y no deben sugerirse como diagnóstico automático:
- Limpiar una sesión BGP.
- Cambiar autenticación de vecino, temporizadores, fuente de actualización, route-maps o prefix-lists.
- Habilitar almacenamiento adicional de rutas recibidas.
- Relajar firewall, ACL o política de plano de control.
Si se aprueba un reinicio, prefiera la opción de reinicio suave o actualización de ruta menos disruptiva que admita la plataforma y documente exactamente por qué es seguro.
Antipatrones
- Asumir que
Activesiempre significa que el lado remoto está caído. - Ignorar diferencias de VRF, familia de direcciones o fuente de actualización.
- Usar regex de AS-path amplio sin límites de token.
- Reiniciar un par antes de leer la última razón de reinicio y los registros.
- Tratar la salida faltante de
received-routescomo prueba de que no llegaron rutas.
Ver También
- Habilidad:
cisco-ios-patterns - Habilidad:
network-config-validation - Habilidad:
network-interface-health