Diagnóstico de BGP de Red
Use esta habilidad cuando una sesión BGP esté caída, fluctuando, establecida 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 restablecimiento pertenecen a una ventana de cambios revisada.
Cuándo Usar
- Los vecinos BGP están atascados en Idle, Connect, Active, OpenSent u OpenConfirm.
- Una sesión está Establecida pero faltan los prefijos esperados.
- Una route-map, prefix-list, límite de max-prefix, o política de AS path puede estar filtrando rutas.
- Necesita evidencia antes/después para un cambio de BGP.
- Está revisando automatización que analiza la salida del resumen BGP.
Flujo de Triaje de Solo Lectura
- Identifique el vecino exacto, familia de direcciones, VRF y ASN local/remoto.
- Capture el estado del resumen y la última razón de reinicio.
- Verifique la alcanzabilidad a la dirección de origen 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 permita.
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
Use comandos específicos de familia de direcciones de la plataforma cuando el dispositivo use VRFs, IPv6, VPNv4 o EVPN. No asuma unicast IPv4 global.
Interpretación de Estados
| Estado | Primeras comprobaciones |
|---|---|
| Establecido con conteo de prefijos | El intercambio de rutas está activo; inspeccione política y selección de tabla |
| Establecido con cero prefijos | Revise política de entrada, max-prefix, rutas anunciadas y AFI/SAFI |
| Activo | La sesión TCP no se completa; verifique enrutamiento, origen, ACLs y alcanzabilidad del par |
| Conectar | La conexión TCP está en progreso; revise 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 <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
Si el par tiene como origen un loopback, confirme que ambas direcciones enrutan a 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 la ruta.
Comprobaciones de Política de Ruta
show bgp neighbors <peer> advertised-routes
show bgp neighbors <peer> routes
show ip prefix-list <name>
show route-map <name>
show bgp <prefix>
Algunas plataformas requieren configuración adicional antes de que received-routes esté disponible. No agregue esa configuración durante el triaje de incidentes a menos que el operador apruebe el cambio.
Revisión de AS Path y Prefijo
show bgp regexp _65001_
show bgp regexp ^65001$
show bgp <prefix>
show bgp neighbors <peer> advertised-routes | include Network|Path|<prefix>
Use regex de AS-path con cuidado. _65001_ coincide con AS 65001 como token. 65001 simple puede coincidir con ASNs más largos o texto no relacionado.
Patrón de Analizador (Parser)
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 estructurada del analizador 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ósticos automáticos:
- 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 políticas de firewall, ACL o plano de control.
Si se aprueba un reinicio, prefiera la opción de reinicio suave (soft) o actualización de ruta (route-refresh) menos disruptiva compatible con la plataforma y documente exactamente por qué es segura.
Anti-Patrones
- 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 registros.
- Tratar la falta de salida
received-routescomo prueba de que no llegaron rutas.
Véase También
- Habilidad:
cisco-ios-patterns - Habilidad:
network-config-validation - Habilidad:
network-interface-health