Netzwerk-BGP-Diagnose
Verwenden Sie diese Fähigkeit, wenn eine BGP-Sitzung ausgefallen ist, flattert, aufgebaut ist, aber Routen fehlen, oder unerwartete Präfixe angekündigt werden. Der Standard-Workflow ist die schreibgeschützte Beweissammlung; Richtlinien- und Zurücksetzungsaktionen gehören in ein überprüftes Change-Fenster.
Wann zu verwenden
- BGP-Nachbarn stecken 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 eine Automatisierung, die BGP-Zusammenfassungsausgaben parst.
Schreibgeschützter Triage-Ablauf
- Identifizieren Sie den genauen Nachbarn, die Adressfamilie, das VRF und die lokalen/entfernten ASNs.
- Erfassen Sie den Zusammenfassungszustand und den letzten Zurücksetzungsgrund.
- Weisen Sie die Erreichbarkeit zur Peer-Quelladresse nach.
- Überprüfen Sie die Routenrichtlinien-Referenzen, bevor Sie einen Transportfehler annehmen.
- Vergleichen Sie angekündigte, empfangene und installierte Routen, wo 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 Adressfamilien-Befehle, wenn das Gerät VRFs, IPv6, VPNv4 oder EVPN verwendet. Gehen Sie nicht von globalem IPv4-Unicast aus.
Zustandsinterpretation
| Zustand | Erste Überprüfungen |
|---|---|
| Established mit Präfixanzahl | Routenaustausch läuft; Richtlinie und Tabellenauswahl prüfen |
| Established mit null Präfixen | Eingangsrichtlinie, 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 läuft; Pfad und entfernten Listener prüfen |
| OpenSent/OpenConfirm | TCP funktioniert; ASN, Authentifizierung, Timer, Fähigkeiten und Logs prüfen |
| Idle | Nachbar könnte deaktiviert sein, Konfiguration fehlt, durch Richtlinie blockiert oder Backoff-Timer |
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, bestätigen Sie, dass beide Richtungen zu den Loopback-Adressen routen und dass die Nachbarkonfiguration die erwartete Update-Quelle verwendet.
Vermeiden Sie es, ACLs oder Firewall-Richtlinien als diagnostischen Kurzschluss zu deaktivieren. Lesen Sie zuerst Trefferzähler, Logs und Pfadzustand.
Routenrichtlinien-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 Vorfall-Triage nicht hinzu, es sei denn, der Betreiber 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 mit Bedacht. _65001_ matched AS 65001 als Token. Einfaches 65001 kann längere ASNs oder nicht zusammenhängenden 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 Vorfallsdatensatz, da BGP-Zusammenfassungsformate je nach Plattform und Adressfamilie variieren.
Nur für Change-Fenster
Diese Aktionen können das Routing beeinflussen und sollten nicht als automatische Diagnose vorgeschlagen werden:
- Löschen einer BGP-Sitzung.
- Ändern der Nachbarauthentifizierung, Timer, Update-Quelle, Route-Maps oder Prefix-Listen.
- Aktivieren zusätzlicher Speicherung empfangener Routen.
- Lockern von Firewall-, ACL- oder Control-Plane-Richtlinien.
Wenn ein Zurücksetzen 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-, Adressfamilien- oder Update-Quellen-Unterschieden.
- Verwendung breiter AS-Pfad-Regex ohne Token-Grenzen.
- Hartes Zurücksetzen eines Peers, bevor der letzte Zurücksetzungsgrund und die Logs gelesen wurden.
- Behandlung fehlender
received-routes-Ausgabe als Beweis, dass keine Routen angekommen sind.
Siehe auch
- Fähigkeit:
cisco-ios-patterns - Fähigkeit:
network-config-validation - Fähigkeit:
network-interface-health