Border Gateway Protocol
Das Border Gateway Protocol (englisch, zu deutsch etwa Grenzknotenprotokoll) beschreibt, wie Distanzvektorprotokolle wie z.B. RIP angelehnt, jedoch wird dem dort vorkommenden Problem der Routingschleifen (Routingschleife bedeutet, dass ein IP-Paket auf seinem Weg durch das Internet ein- und dasselbe AS mehrmals passiert) effektiv vorgebeugt: Ein BGP-Router teilt beim Senden von Verfügbarkeitsinformationen (?Updates?) dem Kommunikationspartner nicht nur mit, dass er einen bestimmten Abschnitt des Internet erreichen kann, sondern auch die komplette Liste aller AS (AS_PATH), die IP-Pakete bis zu diesem Abschnitt passieren müssen (sein eigenes AS steht dabei an erster Stelle, das Ziel-AS letzter). Merkt der Kommunikationspartner nun, dass das AS, dem er selbst angehört, bereits in dieser Liste vorhanden ist, verwirft er dieses Update und vermeidet so, dass eine Routingschleife entsteht.
eBGP und iBGP
Die Stärke des Border Gateway Protocol liegt darin, verschiedene optionale Routing-Pfade in einer einzigen Routing-Tabelle zu vereinen. BGP, welches das derzeit einzige eingesetzte Exterior Gateway Protokoll ist, ist ein Protokoll für das Routing zwischen autonomen_Systemen (AS); man spricht bei dieser Verwendung von external BGP (eBGP).
BGP kann jedoch auch innerhalb eines autonomen Systems angewendet werden. Typischerweise geschieht dies, um die ?von außen? (=via eBGP) gelernten Routen an die anderen Router des eigenen AS' zu propagieren; man spricht bei dieser Verwendung von internal BGP (iBGP). Beim Einsatz innerhalb eines autonomen Systems müssen BGP-Verbindungen (?BGP-Sessions?) zwischen allen Routern des AS eingerichtet werden (genauer: zwischen ihren Loopbackadressen), so dass eine vollständige Vermaschung (full mesh) entsteht. Enthält ein autonomes System n Router, so resultiert dies also in O(n²) BGP-Verbindungen. Aufgrund der hierdurch entstehenden Skalierungsprobleme wird bei größeren Netzwerken gerne ein sog. Route Reflector (RR) eingesetzt: Jeder eBGP-Router schickt seine via eBGP gelernten Routen via iBGP an einen bestimmten Router (den Routen-Reflektor), welcher sie sammelt und wiederum via iBGP an die anderen Router im AS verteilt. Da nun jeder BGP-sprechende Router nur noch eine BGP-Verbindung zum Route Reflector halten muss, fallen insgesamt nur noch O(n) Verbindungen an.
Da jeder BGP-Router über Routen-Informationen von anderen, insbesondere der benachbarten BGP-Routern verfügt, baut sich jeder BGP-Router eine Datenbank für die Routen zu allen erreichbaren autonomen Systemen auf. Die Größe der Tabelle mit den Routen-Informationen lag Ende 2005 bei ca. 170.000 Einträgen bei über 26.000 Autonomen Systemen. Aktuelle Größe siehe z.B. http://bgp.potaroo.net/ .
Das BGP-Protokoll ist in RFC 1163 beschrieben. In der derzeit eingesetzten Version 4 ist es im RFC 4271 beschrieben. 1991 wurde im RFC 1269 die Border Gateway Protocol (Version 3) MIB veröffentlicht.
Diese MIB ermöglicht das Management von Geräten mittels SNMP, die das BGP-Protokoll als autonomous System Routing Protocol unterstützen.
Im Februar 1998 wurde das BGPv4 in RFC 2283 mit sog. Multiprotocol Extensions versehen, die aktuelle Version findet sich in RFC 4760. Damit ist BGPv4 nicht mehr rein IPv4-spezifisch, sondern unterstützt ebenso das Routing mit weiteren Protokollen der Netzwerkschicht. U.a. ist so auch der Austausch von MPLS-Labels möglich, dies war Voraussetzung für den Einsatz von BGP/MPLS IP VPNs (RFC 4364).
Protokollübersicht
Die direkten Verbindungen zwischen benachbarten Routern werden manuell angegeben.
Router, welche miteinander über BGP Routinginformationen austauschen wollen, bauen zunächst eine TCP-Verbindung auf, über welche dann die BGP-Nachrichten gesendet werden. Diese Verbindung nennt man eine BGP-Session.
BGP verwendet vier verschiedene Arten von Nachrichten im Protokoll:
OPEN
Wird nur zu Beginn einer Verbindung gesendet und muss mit einem KEEPALIVE beantwortet werden. Danach werden Routeninformationen zwischen den Routern ausgetauscht.
UPDATE
Teilt eine Routenänderung mit. Es kann pro Nachricht eine Route hinzugefügt und mehrere Routen entfernt werden. UPDATE-Nachrichten sind das Kernstück von BGP.
NOTIFICATION
Beendet eine Verbindung und gibt Fehler- bzw Statuscodes an. Alle Routen, die über diese beendete Verbindung empfangen wurden, müssen nun gelöscht werden.
KEEPALIVE
Zur regelmäßigen Überprüfung, ob der verbundene Router noch online ist, oder ob die Verbindung unterbrochen ist und die Routen über den verbundenen Router somit ungültig geworden sind.
Genauere Beschreibung
Kernstück von BGP ist die UPDATE-Nachricht. Mit Hilfe von UPDATEs teilen sich Router die Existenz neuer Routen (sog. Announcements) bzw. den Wegfall bestehender Routen (sog. Withdrawals) mit. Der Empfänger einer UPDATE-Nachricht entscheidet anhand seiner Routing-Policys, ob er sein Routing umstellt (und daraufhin selbst UPDATEs versenden muss), ob er das UPDATE einfach nur weiterleitet (z.B. via iBGP), oder ob er die Nachricht schlicht ignoriert.
Attribute
Eine Route in BGP hat mehrere Attribute; im Folgenden werden die wichtigsten erklärt.
*Der AS-Pfad beschreibt, über welche autonomen Systeme das angegebene Ziel (ein CIDR-Präfix) erreicht werden kann. Die autonomen Systeme werden hierbei über ihre AS-Nummer (ASN) identifiziert. Im AS-Pfad darf zwar keine Schleife vorkommen; jedoch ist es erlaubt, dass sich ein AS mehrmals hintereinander einträgt und somit den AS-Pfad künstlich verlängert, um die Route zwar verfügbar, aber unattraktiv zu machen.
*Die IGP-Metrik beschreibt die Kosten durch das eigene Netzwerk, um den Austrittspunkt in das nächste AS auf dem AS-Pfad zu erreichen
*Der Multi-Exit Discriminator (MED) wird verwendet, um verschiedene parallele Verbindungen zum gleichen Nachbar-AS unterscheiden zu können
Routenauswahl
Sehr oft kommt es vor, dass ein Router zum selben Ziel verschiedene Routen mitgeteilt bekommt. Die Auswahl der Route, für welche er sich letztendlich entscheidet, ist als BGP Route Selection Process standardisiert worden. Allerdings hat der Netzwerkbetreiber großen Einfluss auf den Ausgang dieses Routenselektionsprozesses durch die Wahl geeigneter Parameter im Router.
Schwächen von BGP
BGP weist prinzipbedingt eine Reihe von Schwächen auf:
* keine Lastverteilung (load balancing) ? es wird immer nur eine mögliche Route ausgewählt.
* Hop-Länge wird nicht berücksichtigt ? nur die Anzahl der Autonomen Systeme ist wichtig (abgesehen vom Attribut IGP-Metrik).
* Unterschiedliche Linkgeschwindigkeit wird nicht berücksichtigt ? Routen werden hauptsächlich nach der Länge ausgewählt.
* Sicherheitsaspekte sind nur mangelhaft berücksichtigt;Barry Raveendran Greene: BGPv4 Security Risk Assessment. http://www.cymru.com/Documents/barry2.pdf beispielsweise könnte ein Angreifer durch Spoofing Routen zwischen Providern ändern oder löschen.
* Es wird aus Speicherplatz- und Skalierungsgründen immer nur eine beste Route an die Nachbarn übermittelt. Das Übertragen mehrerer guter Routen könnte bei Link- oder Routerausfällen jedoch eine schnellere Reaktion ermöglichen.
Allerdings sind einige dieser Mängel dadurch verursacht, dass ein für jedes individuelle AS finanziell optimales und policy-basiertes Routing herzustellen versucht ? eine aus Anwendersicht möglicherweise erstrebenswertere technische Optimalität muss sich diesen Zielen stets unterordnen und wurde daher beim Design des Protokolls in vergleichweise geringem Maße berücksichtigt (keine Hop-Pfadlängen, keine Bandbreiten).
Darüberhinaus treten im Internet im Zusammenhang mit BGP eine Reihe seltsamer Phänomene auf, deren Ursachen oft vielschichtig und nur teilweise verstanden sind:
*Route Flaps werden von Routen verursacht, welche über längere Zeiträume hinweg immer wieder hin- und herschwanken, annonciert und wieder zurückgezogen werden, etc.Zhenhai Duan, Jaideep Chandrashekar, Jeffrey Krasky, Kuai Xu, Zhi-Li Zhang, Damping BGP Route Flaps. Proc 23rd IEEE International Performance Computing and Communications Conference (IPCCC), 2004.C. Labovitz, G. Malan, and F. Jahanian, Internet routing
instability. IEEE/ACM Transactions on Networking, 6(5):515?528, 1998.
*Update Bursts sind plötzlich auftretende große Mengen an UPDATE-Nachrichten, oft zu miteinander nicht näher korrelierten Zielen.Ke Zhang, Amy Yen, Xiaoliang Zhao, Dan Massey, S. Felix Wu and Lixia Zhang, On Detection of Anomalous Routing Dynamics in BGP. In LNCS NETWORKING 2004, ISBN 978-3-540-21959-0
Quellen
Weblinks
* A Border Gateway Protocol 4 (BGP-4), RFC 4271
* BGP Route Reflection: An Alternative to Full Mesh Internal BGP (IBGP), RFC 4456
• BGPlay is a Java application which displays animated graphs of the routing activity of a certain prefix within a specified time interval

