buchachon - Fotolia
BGP-Tutorial: Troubleshooting beim Border Gateway Protocol
Das Border Gateway Protocol ist die Grundlage für das Internet. Im zweiten Artikelteil behandeln wir die Fehlersuche und die Lösung von Problemen mit BGP.
BGP (Border Gateway Protocol) ist ohne Zweifel das komplexeste IP-Routing-Protokoll, das derzeit im Internet eingesetzt wird. Seine Komplexität lässt sich in erster Linie darauf zurückführen, dass der Fokus auf Sicherheit und Routing-Richtlinien liegt.
BGP wird genutzt, um kooperative Informationen (Internetrouten) zwischen ansonsten konkurrierenden Unternehmen (Service-Providern) auszutauschen, und es muss in der Lage sein, alle Aspekte, die in Interprovider-Peering-Vereinbarungen festgelegt worden sind, zu implementieren. Diese Vereinbarungen haben oft wenig mit technisch optimalen Services zu tun.
Im ersten Artikelteil haben wir die Grundlagen und Funktionsweise von BGP besprochen. In diesem abschließenden Artikel kümmern wir uns um das Troubleshooting.
Ein strukturierter Ansatz für das BGP-Troubleshooting, wie in diesem und im nächsten Abschnitt verdeutlicht, kann aber schnell von der anfänglichen Problemdiagnose zur Lösung führen. Hierbei konzentrieren wir uns auf ein einfaches Szenario mit einem einzigen BGP-fähigen Router in Ihrem Netzwerk (siehe Abbildung 1). Vergleichbare Designs werden oft von Multihomed-Kunden und kleinen Internet-Service-Providern genutzt, die ihren Kunden keine BGP-Konnektivität bieten.
Identifizieren eines BGP-Problems
Bevor es mit dem BGP-Troubleshooting losgeht, müssen Sie zunächst die Quelle des Konnektivitätsproblems ermitteln, das Sie beheben wollen – üblicherweise vermuten Sie, dass BGP beteiligt sein könnte, wenn einer Ihrer Kunden von eingeschränkter oder komplett fehlender Internetkonnektivität außerhalb Ihres Netzwerks berichtet.
Führen Sie von einem der Arbeitsplatzrechner aus eine Überprüfung per Traceroute für das problematische lokale Netzwerk (LAN) durch. Wenn die gesendeten Datenpakete den ersten BGP-fähigen Router erreichen – oder besser noch, wenn sie über den Edge Ihres Netzwerks hinaus gelangen –, haben Sie es wahrscheinlich mit einem BGP-Problem zu tun. Andernfalls prüfen Sie, ob der BGP-fähige Router eine Standardroute in Ihr Netzwerk bekannt gibt – ohne eine Standardroute können andere Router in Ihrem Netzwerk die Internetziele nicht erreichen.
Sofern kein mit dem LAN verbundener Rechner zur Verfügung steht, können Sie den Traceroute vom CPE-Router (Customer Premises Equipment) aus durchführen, müssen aber sicherstellen, dass die Quell-IP-Adresse, die für die Traceroute-Pakete verwendet wird, der LAN-Adresse des Routers entspricht.
Troubleshooting von benachbarten BGP-Routern
BGP muss eine TCP-Sitzung zwischen benachbarten BGP-Routern aufbauen, bevor sie Routen austauschen können. Der erste Check gilt daher dem Status der BGP-Sitzungen zwischen den Routern.
Die BGP-Nachbarn werden manuell konfiguriert, und die zwei wahrscheinlichsten Konfigurationsfehler sind:
- Nicht übereinstimmende benachbarte IP-Adressen: Die auf einem BGP-Nachbarn konfigurierte Ziel-IP-Adresse muss mit der auf dem anderen Router konfigurierten Quell-IP-Adresse – oder mit der IP-Adresse der direkt verbundenen Schnittstelle – übereinstimmen.
- Fehlende Übereinstimmung der AS-Nummer: Die benachbarte AS-Nummer, die auf einer Seite der BGP-Sitzung konfiguriert ist, muss mit der aktuellen BGP-AS-Nummer, die vom Nachbarn genutzt wird, übereinstimmen.
Eventuell liegt auch ein Problem mit Paketfiltern auf dem BGP-fähigen Router vor. Diese Filter müssen Pakete zu und von TCP-Port 179 akzeptieren.
Troubleshooting der BGP-Routenpropagierung
Wenn Ihre Nutzer Traffic aus dem Internet empfangen wollen, muss das Ihrem Netzwerk zugeordnete IP-Präfix im gesamten Internet sichtbar sein. Zu diesem Zweck sind drei Schritte notwendig:
- Ihr BGP-Router muss Ihr IP-Präfix in seine BGP-Tabelle einfügen.
- Das IP-Präfix muss seinen BGP-Nachbarn bekannt gegeben werden.
- Das IP-Präfix muss im gesamten Internet propagiert werden.
Ist die Route in BGP hinzugefügt? Die meisten Routing-Protokolle fügen direkt verbundene IP-Subnetze ihren Routing-Tabellen oder -Datenbanken automatisch hinzu. Aufgrund von Sicherheitsanforderungen bildet BGP eine Ausnahme. Es erzeugt nur dann ein IP-Präfix, wenn dies manuell so eingerichtet wurde – zum Beispiel nutzen Cisco-Router das Netzwerk-Statement, um bekannt gegebene IP-Präfixe zu konfigurieren. Eine weitere Option ist Route Redistribution, von der bei einer Internetumgebung indes strikt abzuraten ist.
Um zu vermeiden, nicht routbaren Traffic anzuziehen, macht BGP darüber hinaus ein konfiguriertes IP-Präfix nur bekannt, wenn eine passende Route in der IP-Routing-Tabelle vorhanden ist. Sie könnten die passende IP-Route durch Route Summarization generieren, doch es empfiehlt sich im Allgemeinen, eine statische Route zu konfigurieren, die auf ein Null-Interface – oder dessen Äquivalent – zeigt.
Um zu überprüfen, ob Ihr IP-Präfix in Ihrer BGP-Routing-Tabelle enthalten ist, nutzen Sie einen Show-Befehl von BGP – zum Beispiel
show ip bgp prefix mask
für einen Cisco-Router.
Wird die Route den Nachbarn bekannt gegeben? Standardmäßig werden alle in der BGP-Tabelle enthaltenen IP-Präfixe allen BGP-Nachbarn bekannt gemacht. Aufgrund der Anforderungen bezüglich Sicherheit und Routing-Richtlinien wird das Standardverhalten normalerweise mit mehreren Ausgangs- und Eingangsfiltern modifiziert. Wenn Sie Ausgangsfilter für Ihre BGP-Nachbarn angewendet haben, müssen Sie prüfen, ob diese Filter es erlauben, dass Ihr IP-Präfix zu den externen BGP-Nachbarn propagiert wird. Der Befehl zur Anzeige von Routen, die einem BGP-Nachbarn bekannt gegeben wurden, lautet bei einem Cisco-Router:
show ip bgp neighbor ip-address advertised.
Ist die Route überall im Internet sichtbar? Selbst wenn Sie Ihr IP-Präfix Ihren BGP-Nachbarn erfolgreich bekannt gegeben haben, wird es möglicherweise trotzdem nicht im Internet propagiert. Es ist schwierig, genau herauszufinden, was außerhalb der Grenzen Ihres Netzwerks propagiert wird. Die Tools, die Sie dabei unterstützen können, nennen sich BGP Looking Glasses. Mit diesen Tools können Sie BGP-Tabellen an verschiedenen Punkten im Internet unter die Lupe nehmen und kontrollieren, ob Ihr IP-Präfix bis zu diesen Zielen gelangt ist.
Einige Faktoren können dazu führen, dass Ihr IP-Präfix irgendwo im Internet blockiert wird. Der bekannteste darunter wird als BGP Route Flap Dampening bezeichnet: Kommt es innerhalb kurzer Zeit zu oft zu einem IP-Präfix-Flapping (das heißt, das Präfix verschwindet und taucht wieder auf) – etwa wenn Sie Ihre BGP-Sitzungen trennen oder Ihre BGP-Konfiguration ändern –, wird das Präfix für einen längeren Zeitraum (standardmäßig bis zu einer Stunde) blockiert.
Bei einem IP-Präfix-Dampening können Sie nichts weiter tun, als abzuwarten. Vielleicht enthalten die IP Routing Registries auch einen ungültigen oder fehlenden Eintrag, oder einer der Upstream-ISPs verwendet Eingangsfilter. In allen genannten Fällen ist es am besten, wenn Ihr Upstream-ISP Ihnen bei der Lösung des Problems behilflich sein kann – das an dieser Stelle über technisches BGP-Troubleshooting hinausgeht.
Erweitertes BGP-Troubleshooting
Im vorigen Kapitel haben wir einen Blick auf grundlegendes BGP-Troubleshooting geworfen und gezeigt, wie Sie:
- herausfinden, ob ein Routing-Problem mit BGP zusammenhängt;
- Fehlern bei BGP-Sitzungen auf die Spur kommen;
- Fehler bei der Erzeugung und Propagierung von IP-Routen beheben.
Sehen wir uns jetzt ein erweitertes Szenario an: ISP-Transitnetzwerke (siehe Abbildung 2).
Um eine End-to-End-Konnektivität über ein Service-Provider-Netzwerk herzustellen, muss der ISP die IP-Präfixe der Kunden über BGP empfangen und sie anderen ISPs bekannt machen. Der gleiche Vorgang muss auch in umgekehrter Richtung erfolgen – oder zumindest muss dem Kunden die Standardroute bekannt gegeben werden. Das netzwerkweite BGP-Troubleshooting besteht daher aus drei Schritten:
- Empfangen des IP-Präfix;
- Propagieren des IP-Präfix über unser Netzwerk; und
- Senden des IP-Präfix an externe BGP-Nachbarn am anderen Netzwerk-Edge.
Haben wir das Präfix empfangen? Das Troubleshooting von BGP-Problemen im Inbound-Bereich ist der schwierigste Teil beim BGP-Troubleshooting. Wenn ein IP-Präfix nicht wie zu erwarten wäre in Ihrer BGP-Tabelle enthalten ist, kommen die folgenden zwei Ursachen infrage:
- Der Nachbar sendet das Präfix nicht.
- Ihre Eingangsfilter blockieren das Präfix.
Das einzige Tool, das Ihnen helfen kann, das Problem zu identifizieren, ist die Debugging-Einrichtung in Ihrem Edge Router, da Sie normalerweise keinen Zugriff auf den anderen BGP-Nachbarn haben. Achten Sie beim BGP-Debugging darauf, dass ein BGP-Nachbar Ihnen mehrere Hunderttausend Routen senden kann. Sie müssen also sicherstellen, dass die von der Troubleshooting-Sitzung generierte Debugging-Ausgabe den Router nicht überlastet.
Außerdem werden die BGP-Präfixe nur dann gesendet, wenn sie sich ändern, nicht in regelmäßigen Abständen, wie RIP-Updates oder OSPF LSA Floods. Ihr Debugging Tool wird Ihnen deshalb erst ein IP-Präfix anzeigen, wenn es sich geändert hat oder Sie die BGP-Sitzung mit Ihrem Nachbarn beendet haben.
Einige BGP-Router besitzen die Möglichkeit, eine separate Kopie aller Routen, die ein Nachbar gesendet hat, in einer BGP-Paralleltabelle zu speichern. Um diese Funktionalität unter Cisco IOS zu aktivieren, müssen Sie die Soft-Reconfiguration Inbound für einen BGP-Nachbarn konfigurieren. Mit der Paralleltabelle auf Nachbarbasis können Sie exakt feststellen, was der Nachbar Ihnen gesendet hat (den Inhalt der Paralleltabelle), sowie die Routen erkennen, die Ihre Eingangsfilter passiert haben (den Inhalt der BGP-Haupttabelle). Doch die Pro-Nachbar-Paralleltabelle benötigt natürlich sehr viel Speicher.
Wird das IP-Präfix über unser Netzwerk propagiert? Selbst wenn ein Edge Router per BGP ein IP-Präfix empfängt, wird es möglicherweise nicht bis zum anderen Ende Ihres Netzwerks propagiert. Zunächst einmal erfordert internes BGP – BGP innerhalb eines einzelnen autonomen Systems – eine vollständige Vermaschung von BGP-Sitzungen zwischen allen BGP-Routern. Da jeder Router zwischen jedem Edge-Router-Paar BGP ausführen muss – ansonsten kann der Traffic innerhalb Ihres Netzwerks verworfen werden –, könnte die Anzahl der BGP-Sitzungen übermäßig groß werden. Abbildung 3 verdeutlicht die BGP-Sitzungen, die in einem kleinen Netzwerk mit vier Routern benötigt werden.
Zwei Tools – BGP Route Reflectors und BGP Confederations – können Ihnen helfen, die Zahl der BGP-Sitzungen auf einem vernünftigen Niveau zu halten. Dabei sind BGP Route Reflectors das gängigste Werkzeug.
Die Regeln für BGP Route Reflectors sind recht einfach:
- Alles, was von einem Route Reflector Client oder einem externen BGP-Peer empfangen wird, wird an jeden anderen BGP-Peer gesendet.
- Alles, was von einem Router empfangen wird, der kein Route Reflector Client ist, wird nur an Clients und externe BGP-Peers gesendet.
Anhand dieser Regeln müssen Sie Schritt für Schritt die BGP-Sitzungen in Ihrem Netzwerk durchgehen, dabei jeden BGP-Router auf dem Weg überprüfen und sicherstellen, dass die Route-Reflector-Regeln nicht verletzt werden – und, unter Anwendung dieser Regeln, dass die BGP-Präfixe von jedem Edge Router zu allen anderen Routern gelangen.
Ein weiterer häufiger Grund, warum ein IP-Präfix nicht in Ihrem Netzwerk propagiert wird, liegt darin, dass die externen Subnetze an Ihrem Netzwerk-Edge Ihren Core Routern nicht bekannt gegeben werden.
Die IP-Adresse des Routers am nächsten Hop ändert sich nicht, wenn ein IP-Präfix an einen internen BGP-Nachbarn gesendet wird. Die IP am nächsten Hop einer externen Route entspricht somit immer der IP-Adresse eines Routers einen Hop außerhalb des Edge Ihres autonomen Systems. Die IP-Subnetze, die Ihre Edge Router mit ihren externen Nachbarn verbinden, müssen daher Ihrem internen Routing-Protokoll – zum Beispiel OSPF oder IS-IS – hinzugefügt werden. Ansonsten geht irgendein interner BGP-Router davon aus, dass BGP am nächsten Hop nicht erreichbar ist, und ignoriert das IP-Präfix. Es wird zwar in der BGP-Tabelle erscheinen, aber nicht verwendet oder zu anderen BGP-Peers propagiert.
Wird das Präfix an externe Nachbarn gesendet? Im letzten Schritt beim Troubleshooting der BGP-Routenpropagierung müssen Sie kontrollieren, ob die IP-Präfixe, die über Ihr Netzwerk transportiert werden, den externen BGP-Peers bekannt gemacht werden. Die Techniken für das Troubleshooting der ausgehenden BGP-Routenpropagierung haben wir im Artikel zum einfachen Troubleshooting des Border Gateway Protocols erläutert.
Durchquert der Traffic das Netzwerk? Selbst wenn Ihre BGP-Routenpropagierung reibungslos funktioniert, kann es vorkommen, dass die IP-Pakete Ihr Netzwerk nicht durchqueren können. Denken Sie daran, dass wir hier über reine IP-Netzwerke sprechen. Die Umstände ändern sich ein wenig, wenn auch MPLS beteiligt ist. Häufigster Grund für ein Black Hole in Ihrem Netzwerk ist ein Router im Transitpfad, auf dem kein BGP läuft und der infolgedessen nicht weiß, wie er das empfangene IP-Paket in Richtung des Zielnetzwerks weiterleiten soll.
Das IP-Routing funktioniert auf Hop-Basis. Auch wenn der Ingress Edge Router genau weiß, welchen Egress Edge Router er nutzen soll und wie er ihn erreicht, kann er diese Informationen nicht an die Intermediate Router weitergeben. Daher müssen alle diese Geräte ebenfalls BGP ausführen.
Um ein Black Hole in Ihrem Netzwerk zu identifizieren, führen Sie vom Netzwerk Ihres Kunden aus einen Traceroute zu einem Ziel im Internet durch. Der letzte Router, der auf den Traceroute antwortet, befindet sich einen Hop weit vor dem Black Hole.
Obwohl es notwendig ist, dass alle Core-Router in Ihrem Netzwerk BGP ausführen, müssen die internen BGP-Sitzungen nicht der physischen Struktur des Netzwerks folgen. Sie können zum Beispiel einige zentrale Router einsetzen, die als BGP Route Reflectors für alle BGP-Router in Ihrem Netzwerk fungieren.
Folgen Sie SearchNetworking.de auch auf Twitter, Google+, Xing und Facebook!