Network BGP Diagnostics
Verwenden Sie dieses Skill, wenn eine BGP-Sitzung ausgefallen ist, flattert, zwar etabliert ist aber Routen fehlen, oder unerwartete Präfixe angekündigt werden. Der Standard-Workflow ist eine schreibgeschützte Beweissammlung; Richtlinien- und Reset-Aktionen gehören in ein überprüftes Change-Fenster.
Wann verwenden
- BGP-Nachbarn hängen in Idle, Connect, Active, OpenSent oder OpenConfirm fest.
- Eine Sitzung ist Established, aber erwartete Präfixe fehlen.
- Eine route-map, prefix-list, max-prefix-Limit oder AS-Pfad-Richtlinie filtert möglicherweise Routen.
- Sie benötigen Vorher/Nachher-Beweise für eine BGP-Änderung.
- Sie überprüfen Automatisierung, die BGP-Summary-Ausgaben parst.
Schreibgeschützter Triage-Ablauf
- Identifizieren Sie den genauen Nachbarn, die Address Family, das VRF und die lokalen/entfernten ASNs.
- Erfassen Sie den Summary-Zustand und den letzten Reset-Grund.
- Überprüfen Sie die Erreichbarkeit der Peer-Quelladresse.
- Prüfen Sie die Route-Policy-Referenzen, bevor Sie von einem Transportfehler ausgehen.
- Vergleichen Sie angekündigte, empfangene und installierte Routen, sofern die Plattform diese Befehle unterstützt.
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
Verwenden Sie plattformspezifische Address-Family-Befehle, wenn das Gerät VRFs, IPv6, VPNv4 oder EVPN verwendet. Gehen Sie nicht von globalem IPv4-Unicast aus.
Zustandsinterpretation
| Zustand | Erste Prüfungen |
|---|---|
| Established mit Präfixanzahl | Routenaustausch läuft; Policy und Tabellenauswahl prüfen |
| Established mit Null-Präfixen | Inbound-Policy, max-prefix, angekündigte Routen und AFI/SAFI prüfen |
| Active | TCP-Sitzung wird nicht abgeschlossen; Routing, Quelle, ACLs und Peer-Erreichbarkeit prüfen |
| Connect | TCP-Verbindung wird aufgebaut; Pfad und remote Listener prüfen |
| OpenSent/OpenConfirm | TCP funktioniert; ASN, Authentifizierung, Timer, Fähigkeiten und Logs prüfen |
| Idle | Nachbar ist möglicherweise deaktiviert, Konfiguration fehlt, durch Policy blockiert oder Backoff-Timer läuft |
Transportprüfungen
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
Wenn der Peer von einem Loopback stammt, überprüfen Sie, ob beide Richtungen zu den Loopback-Adressen routen und dass die Nachbarkonfiguration die erwartete Update-Quelle verwendet.
Vermeiden Sie es, ACLs oder Firewall-Richtlinien als Diagnose-Abkürzung zu deaktivieren. Lesen Sie zuerst Trefferzähler, Logs und den Pfadzustand.
Route-Policy-Prüfungen
show bgp neighbors <peer> advertised-routes
show bgp neighbors <peer> routes
show ip prefix-list <name>
show route-map <name>
show bgp <prefix>
Einige Plattformen erfordern zusätzliche Konfiguration, bevor received-routes verfügbar ist. Fügen Sie diese Konfiguration während der Incident-Triage nicht hinzu, es sei denn, der Operator genehmigt die Änderung.
AS-Pfad- und Präfix-Überprüfung
show bgp regexp _65001_
show bgp regexp ^65001$
show bgp <prefix>
show bgp neighbors <peer> advertised-routes | include Network|Path|<prefix>
Verwenden Sie AS-Pfad-Regex sorgfältig. _65001_ matcht AS 65001 als Token. Ein einfaches 65001 kann längere ASNs oder nicht zugehörigen Text matchen.
Parser-Muster
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
Bevorzugen Sie strukturierte Parser-Ausgaben, wenn verfügbar, speichern Sie jedoch die Rohausgabe mit dem Incident-Datensatz, da BGP-Summary-Formate je nach Plattform und Address Family variieren.
Nur im Change-Fenster
Diese Aktionen können das Routing beeinflussen und sollten nicht als automatische Diagnose vorgeschlagen werden:
- Zurücksetzen einer BGP-Sitzung.
- Ändern der Nachbarauthentifizierung, Timer, Update-Quelle, Route-Maps oder Prefix-Listen.
- Aktivieren zusätzlicher Received-Route-Speicher.
- Lockern von Firewall-, ACL- oder Control-Plane-Richtlinien.
Wenn ein Reset genehmigt ist, bevorzugen Sie die am wenigsten störende Soft- oder Route-Refresh-Option, die von der Plattform unterstützt wird, und dokumentieren Sie genau, warum sie sicher ist.
Anti-Patterns
- Annahme, dass
Activeimmer bedeutet, dass die entfernte Seite ausgefallen ist. - Ignorieren von VRF-, Address-Family- oder Update-Source-Unterschieden.
- Verwendung breiter AS-Pfad-Regex ohne Token-Grenzen.
- Hard-Reset eines Peers, bevor der letzte Reset-Grund und Logs gelesen wurden.
- Behandlung fehlender
received-routes-Ausgabe als Beweis dafür, dass keine Routen angekommen sind.
Siehe auch
- Skill:
cisco-ios-patterns - Skill:
network-config-validation - Skill:
network-interface-health