Benutzer:EdwardBaynes/Border Gateway Protocol

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
BGP im TCP/IP-Protokollstapel
Anwendung BGP
Transport TCP
Netzwerk IP
Netzzugang Ethernet Token
Ring
FDDI ...

Das Border Gateway Protocol (englisch, zu deutsch etwa Grenzknotenprotokoll) beschreibt, wie Router untereinander die Verfügbarkeit von Verbindungswegen zwischen den Netzen autonomer Systeme („AS“-e) propagieren.

BGP als Pfadvektorprotokoll[Bearbeiten | Quelltext bearbeiten]

BGP ist ein sogenanntes „Pfadvektor-Protokoll“ ((englisch path vector protocol): Seine Funktionsweise ist stark an 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, 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[Bearbeiten | Quelltext bearbeiten]

Die Stärke des BGP-Protokolls liegt darin, verschiedene optionale Routing-Pfade in einer einzigen Routing-Tabelle zu vereinen. Das Border-Gateway-Protokoll, 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 von iBGP gibt es jedoch eine wichtigen Unterschied gegenüber eBGP zu beachten:

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() 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 1771 beschrieben. 1991 wurde im RFC 1269 die Border Gateway Protocol (Version 3) MIB veröffentlicht. Diese Variablen ermöglichen das Management von Geräten, die das BGP-Protokoll als autonomous System Routing Protocol unterstützen.

Protokollübersicht[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

Wird nur zu Beginn einer Verbindung gesendet und muss mit einem KEEPALIVE beantwortet werden. Danach werden Routeninformationen zwischen den Routern ausgetauscht.

UPDATE[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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.

Mängel von BGP[Bearbeiten | Quelltext bearbeiten]

BGP weist prinzipbedingt eine Reihe von Mängeln auf:

  • keine Lastverteilung (load balancing) – es wird immer nur eine mögliche Route ausgewählt
  • Geschwindigkeit wird nicht berücksichtigt – Routen werden hauptsächlich nach der Länge ausgewählt
  • Hop-Länge wird nicht berücksichtigt – nur die Anzahl der Autonomen Systeme ist wichtig
  • Sicherheitsaspekte teilweise nur mangelhaft berücksichtigt

Allerdings sind einige dieser Mängel dadurch verursacht, dass BGP kein technisch optimales, sondern ein für jedes individuelle AS finanziell optimales und policy-basiertes Routing herzustellen versucht.

Darüberhinaus weist 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.
  • Update Bursts sind plötzlich auftretende große Mengen an UPDATE-Nachrichten, oft zu miteinander nicht näher korrelierten Zielen.