Diagnostic BGP Réseau
Utilisez cette compétence lorsqu'une session BGP est descendue, instable, établie avec des routes manquantes, ou annonce des préfixes inattendus. Le flux de travail par défaut est la collecte de preuves en lecture seule ; les actions de politique et de réinitialisation appartiennent à une fenêtre de changement revue.
Quand l'utiliser
- Les voisins BGP sont bloqués dans les états Idle, Connect, Active, OpenSent ou OpenConfirm.
- Une session est Établie mais les préfixes attendus sont manquants.
- Une route-map, prefix-list, limite max-prefix, ou une politique de chemin AS filtre peut-être les routes.
- Vous avez besoin de preuves avant/après pour un changement BGP.
- Vous révisez une automatisation qui analyse la sortie du résumé BGP.
Flux de Triage en Lecture Seule
- Identifiez le voisin exact, la famille d'adresses, la VRF, et les ASN local/distant.
- Capturez l'état du résumé et la dernière raison de réinitialisation.
- Prouvez l'accessibilité à l'adresse source du pair.
- Vérifiez les références de politique de routage avant de supposer un problème de transport.
- Comparez les routes annoncées, reçues et installées là où la plateforme supporte ces commandes.
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
Utilisez les commandes spécifiques à la famille d'adresses lorsque l'appareil utilise des VRF, IPv6, VPNv4 ou EVPN. Ne supposez pas l'unicast IPv4 global.
Interprétation des États
| État | Premières vérifications |
|---|---|
| Établi avec un nombre de préfixes | L'échange de routes est actif ; inspectez la politique et la sélection de table |
| Établi avec zéro préfixes | Vérifiez la politique entrante, max-prefix, les routes annoncées et AFI/SAFI |
| Actif | La session TCP ne se termine pas ; vérifiez le routage, la source, les ACL et l'accessibilité du pair |
| Connect | La connexion TCP est en cours ; vérifiez le chemin et l'écouteur distant |
| OpenSent/OpenConfirm | TCP fonctionne ; vérifiez ASN, authentification, temporisateurs, capacités et journaux |
| Idle | Le voisin est peut-être désactivé, config manquante, bloqué par une politique ou temporisateur de retour |
Vérifications de Transport
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 le pair est sourcé depuis une loopback, confirmez que les deux directions acheminent vers les adresses de loopback et que la configuration du voisin utilise la source de mise à jour attendue.
Évitez de désactiver les ACL ou la politique de pare-feu comme raccourci de diagnostic. Lisez d'abord les compteurs de hits, les journaux et l'état du chemin.
Vérifications de Politique de Routage
show bgp neighbors <peer> advertised-routes
show bgp neighbors <peer> routes
show ip prefix-list <name>
show route-map <name>
show bgp <prefix>
Certaines plateformes nécessitent une configuration supplémentaire avant que received-routes ne soit disponible. N'ajoutez pas cette configuration pendant le triage d'incident à moins que l'opérateur n'approuve le changement.
Revue du Chemin AS et du Préfixe
show bgp regexp _65001_
show bgp regexp ^65001$
show bgp <prefix>
show bgp neighbors <peer> advertised-routes | include Network|Path|<prefix>
Utilisez les expressions régulières AS-path avec prudence. _65001_ correspond à AS 65001 comme jeton. 65001 seul peut correspondre à des ASN plus longs ou à du texte non lié.
Modèle d'Analyse Syntaxique
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
Préférez une sortie d'analyseur structurée lorsqu'elle est disponible, mais stockez la sortie brute avec l'enregistrement de l'incident car les formats de résumé BGP varient selon la plateforme et la famille d'adresses.
Fenêtre de Changement Uniquement
Ces actions peuvent affecter le routage et ne doivent pas être suggérées comme diagnostics automatiques :
- Effacer une session BGP.
- Modifier l'authentification du voisin, les temporisateurs, la source de mise à jour, les route-maps ou les prefix-lists.
- Activer le stockage supplémentaire de routes reçues.
- Assouplir le pare-feu, l'ACL ou la politique du plan de contrôle.
Si une réinitialisation est approuvée, privilégiez l'option la moins perturbatrice (soft ou route-refresh) supportée par la plateforme et documentez exactement pourquoi elle est sûre.
Anti-Patterns
- Supposer que
Actifsignifie toujours que le côté distant est hors service. - Ignorer les différences de VRF, de famille d'adresses ou de source de mise à jour.
- Utiliser une expression régulière AS-path large sans limites de jeton.
- Réinitialiser brutalement un pair avant de lire la dernière raison de réinitialisation et les journaux.
- Considérer l'absence de sortie
received-routescomme la preuve qu'aucune route n'est arrivée.
Voir Aussi
- Compétence :
cisco-ios-patterns - Compétence :
network-config-validation - Compétence :
network-interface-health