| Anwendung | BGP | ||||
| Transport | TCP | ||||
| Internet | IP (IPv4, IPv6) | ||||
| Netzzugang | Ethernet | Token Bus | Token Ring | FDDI | … |
Das Border Gateway Protocol (BGP) ist das im Internet eingesetzte Routingprotokoll und verbindet autonome Systeme (AS) miteinander. Diese autonomen Systeme werden in der Regel von Internetprovidern gebildet. BGP wird allgemein als Exterior Gateway Protokoll (EGP) und Pfadvektorprotokoll bezeichnet und verwendet für Routing-Entscheidungen sowohl strategische wie auch technisch-metrische Kriterien, wobei in der Praxis in der Regel betriebswirtschaftliche Aspekte berücksichtigt werden. Innerhalb autonomer Systeme kommen Interior Gateway Protokolle (IGP) wie z.B. OSPF zum Einsatz.
Das BGP-Protokoll ist in RFC 1163 beschrieben. In der derzeit eingesetzten Version 4 ist es im RFC 4271 beschrieben. Die BGP-Router verwenden den TCP-Port 179.
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 Vermittlungsschicht. 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).
BGP, das derzeit einzige eingesetzte Exterior Gateway Protokoll, ist ein Protokoll für das Routing zwischen autonomen Systemen (AS). Man spricht bei dieser Verwendung von External BGP (EBGP).
BGP kann auch innerhalb eines autonomen Systems angewendet werden. Typischerweise geschieht dies, um die von EBGP-Routern gelernten Routen an die anderen Router des eigenen autonomen Systems zu propagieren. Diese Verwendung wird als Internal BGP (IBGP) bezeichnet. Alle IBGP-Router, die zusammen Routen austauschen, verwenden dieselbe AS-Nummer.
Beim Einsatz innerhalb eines autonomen Systems müssen BGP-Verbindungen zwischen allen Routern des AS eingerichtet werden, so dass eine vollständige Vermaschung entsteht. Enthält ein autonomes System n Router, so resultiert dies also in
BGP-Verbindungen. Aufgrund der hierdurch entstehenden Skalierungsprobleme wird bei größeren Netzwerken ein sogenannter Route Reflector (RR) eingesetzt.
Der Grund für eine vollständige Vermaschung liegt darin, dass bei IBGP innerhalb eines autonomen Systems mit der selben AS-Nummer im AS Path dem empfangenden IBGP-Router der Eindruck entsteht, es handle sich um Routing-Schleifen. Somit würde dieser Router keine Routen an andere IBGP-Router propagieren. (sh. Abschnitt zu Routingschleifen)
Um das Problem der vollständigen Vermaschung bei komplexen Netzwerken zu lösen, kann in einem AS ein BGP-Router als Route Reflector konfiguriert werden. So schickt jeder EBGP-Router seine via EBGP gelernten Routen via IBGP nur noch an einen bestimmten Router (den Route Reflector), der sie sammelt und wiederum via IBGP an die anderen Router im AS verteilt. Da nun jeder BGP-Router nur eine einzige BGP-Verbindung zum Route Reflector halten muss, fallen insgesamt nur noch n Verbindungen an.
Ein einzelner Route Reflector stellt einen Single Point of Failure dar. Zur Ausfallsicherheit können daher mehrere dieser Router als Cluster zusammengeschaltet werden. Zu jeden der Cluster-Router muss von den IBGP-Routern jeweils eine Verbindung hergestellt werden. Bei n Routern ergeben sich beispielsweise bei zwei Routern als Route Reflector n·2 Verbindungen.
Durch Confederation kann ein autonomes System (AS) wiederum in autonome Systeme (Sub-AS) unterteilt werden. Diese Sub-AS erhalten unterschiedliche private AS-Nummern (ASN), für die ein Bereich von 64512 bis 65535 reserviert und frei verfügbar ist. Es bedarf für die Nutzung dieser AS-Nummern keiner Registrierung z.B. bei der RIPE NCC. Die AS-Nummern aus diesen privaten Bereich werden von EBGP-Routern mit öffentlichen AS-Nummern nicht an andere EBGP-Router weitergeleitet. Innerhalb des AS werden somit unterschiedliche AS-Nummern verwendet, über einen öffentlichen EBGP-Router wird aber nur die externe AS-Nummer präsentiert. Zwischen den Sub-AS kommt EBGP für den Routenaustausch zum Einsatz. Zum einen kann durch den Einsatz von Confederation die Verwaltung großer AS vereinfacht und zum anderen die Verbindungskomplexität durch die Vollvermaschung aller IBGP-Router verringert werden.[1]
In der Grafik stellen AS100 und AS200 öffentliche autonome Systeme (AS) dar, die Routen über EBGP austauschen. AS100 teilt sich durch Confederation in zwei private autonome System AS65050 und AS65100 auf. Die beiden privaten AS tauschen untereinander auch ihre Routen über EBGP aus. Innerhalb beider privater AS ist jeweils ein BGP-Router als Route Reflector (RR) konfiguriert. Alle anderen BGP-Router innerhalb eines privaten AS tauschen mit dem Route Reflector über IBGP ihre Routen untereinander aus.
Üblicherweise werden auf den IBGP-Routern aus Gründen der Ausfallsicherheit Loopbackadressen definiert. Die IBGP-Router werden dann untereinander über deren Loopbackadressen miteinander verbunden. Da aber ohne eine bereits bestehende IBGP-Verbindung die Loopbackadressen als Route noch nicht propagiert werden können, ist ein darunterliegendes Interior Gateway Protocol (IGP) z. B. OSPF erforderlich. D. h. dass auf jedem IBGP-Router auch ein IGP-Router-Prozess konfiguriert wird. Da jeder IBGP-Router mindestens zwei physikalische Netzwerkkarten besitzt, wird das IGP mehrere mögliche Pfade zwischen den Loopbackadressen kennen. Fällt nun eine physikalische Netzwerkschnittstelle eines IBGP-Routers aus, dann wird über IGP ein alternativer Pfad propagiert. Solange mindestens eine physikalische Schnittstelle erreichbar ist, ist auch die auf dem Router konfigurierte Loopbackadresse erreichbar.
Ohne Loopbackadressen wären die IBGP-Router untereinander an physikalischen Schnittstellen gebunden. Bei einem Ausfall einer solchen Schnittstelle, wäre die Verbindung unterbrochen und eine konsistente Verteilung von Routen innerhalb eines autonomen Systems nicht mehr sichergestellt.
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.
| Bit Offset | 0–15 | 16–23 | 24–31 | |||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Marker (16 Bytes) | |||||||||||||||||||||||||||||||
| 32 | ||||||||||||||||||||||||||||||||
| 64 | ||||||||||||||||||||||||||||||||
| 96 | ||||||||||||||||||||||||||||||||
| 128 | Message Length | Message Type | ||||||||||||||||||||||||||||||
| Message | ||||||||||||||||||||||||||||||||
BGP verwendet vier verschiedene Arten von Nachrichten im Protokoll:
OPEN Wird nur zu Beginn einer Verbindung gesendet und muss mit einer KEEPALIVE-Nachricht beantwortet werden. Bei der OPEN-Nachricht werden die Parameter BGP-Version, AS-Nummer, Hold Timer, BGP Identifier sowie optionale Parameter mitgeschickt. Danach werden die Routeninformationen zwischen den Routern ausgetauscht.
UPDATE Teilt eine Pfadänderung mit. Es können pro UPDATE-Nachricht gleichzeitig mehrere Pfade hinzugefügt und mehrere entfernt werden. UPDATE-Nachrichten sind das Kernstück von BGP.
NOTIFICATION Beendet eine Verbindung und gibt Fehler- bzw Statuscodes an. Alle Pfade, die über diese beendete Verbindung empfangen wurden, müssen nun gelöscht werden. Über ein BGP-Update würde dann verbreitet werden, dass diese Route nicht mehr verfügbar ist.
KEEPALIVE Bestätigt die OPEN-Anfrage. Zur regelmäßigen Überprüfung, ob der verbundene Router noch online ist, oder ob die Verbindung unterbrochen ist und die Pfade über den verbundenen Router somit ungültig geworden sind. Die Router, welche gerade eine BGP-Session aufgebaut haben, senden sich gegenseitig in regelmäßigen Abständen eine KEEPALIVE-Nachricht. Diese besteht nur aus dem Message Header. Im Attribut Hold Time einer OPEN-Nachricht wird die maximale Zeit angegeben, in der ein BGP-Router eine KEEPALIVE-Nachricht vom BGP-Partner der Session erwartet. Kommt innerhalb der Hold Time keine KEEPALIVE-Nachricht an, wird die BGP-Session mit einer NOTIFICATION beendet.
In der Grafik werden die verschiedenen Zustände einer BGP-Verbindung dargestellt. In der Praxis ist es wichtig zu wissen, dass, wenn in einer Routerkonfiguration der Status Active angezeigt wird, noch keine Routingeinträge ausgetauscht werden. Dieser Status bedeutet, dass versucht wird, eine Verbindung aufzubauen. Erst wenn der Status Established erreicht wurde, besteht eine funktionierende Verbindung zwischen den BGP-Routern.
Kernstück von BGP ist die UPDATE-Nachricht, über welche sich BGP-Router die Existenz neuer Routen (Announcement) oder den Wegfall bestehender Routen (Withdrawal) mitteilen. Der Empfänger einer UPDATE-Nachricht entscheidet anhand seiner Routing-Policies, ob er sein Routing umstellt (und daraufhin selbst UPDATE-Nachrichten versenden muss), die Nachricht einfach nur weiterleitet (z.B. via IBGP) oder schlicht ignoriert.
Eine Route in BGP hat mehrere Attribute. Im Folgenden werden die wichtigsten erklärt.
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 Path Selection Process bekannt. Der Netzwerkbetreiber kann die Pfad-Auswahl im Router durch die Wahl geeigneter Regeln im Router steuern und beeinflussen.
Grundsätzlich läuft der BGP Path Selection Process nach folgenden Regeln ab:[3]
Damit ein Router ein Paket an ein anderes Netz weiterleiten kann, zu welchem er keine unmittelbare Verbindung hat, ist in der Regel ein Zusammenspiel von IBGP und dem IGP (dem Intradomain-Routingprotokoll, also beispielsweise OSPF, IS-IS, EIGRP/IGRP, RIP) vonnöten, welches benötigt wird, um Pakete zum entsprechenden Gateway-Router weiterzuleiten. Hierzu dient das BGP-Attribut Next Hop.
Beispiel: Ein Router R1 in AS1 soll ein Paket zur Zieladresse 10.1.2.3 forwarden. Durch eine IBGP-Update-Nachricht hat er zuvor erfahren, dass das Zielnetz 10.0.0.0/8 über das Nachbar-AS 4711 erreichbar ist. Allerdings hat R1 keine unmittelbare Verbindung zu AS4711; diese Verbindung existiert nur an einem anderen Router R2 (Gateway-Router). Durch das BGP-Attribut Next Hop kennt R1 jedoch die IP-Adresse von R2. Aufgrund der Informationen des IGP kennt R1 den kürzesten Pfad innerhalb von AS1 zu R2 und weiß somit, zu welchem Nachbar-Router Rx er das Paket schicken muss, so dass es beim Gateway-Router R2 ankommt, welcher es schließlich in AS4711 weiterleiten kann.
BGP ist ein Pfadvektorprotokoll. Seine Funktionsweise ist stark an Distanzvektoralgorithmen und -protokollen wie z.B. Routing Information Protocol (RIP) angelehnt, jedoch wird dem dort vorkommenden Problem der Routingschleifen effektiv vorgebeugt. Eine Routingschleife entsteht, wenn ein IP-Paket auf seinem Weg durch das Internet ein- und dasselbe AS mehrmals passiert. Ein BGP-Router teilt beim Senden von Routinginformationen (Update) dem Kommunikationspartner nicht nur mit, dass er einen bestimmten Abschnitt des Internets erreichen kann, sondern auch die komplette Liste aller autonomer Systeme (AS-Path), die IP-Pakete bis zu diesem Abschnitt passieren müssen (sein eigenes AS steht dabei an erster, das Ziel-AS an letzter Stelle). 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.
Bei BGP kann jeder Router gemeinsame Routen zusammenfassen. Im Gegensatz z.B. bei OSPF, auf deren Routern eine Routing-Zusammenfassung nur auf den Area Border Routern durchgeführt werden kann.
Unterschiedliche Linkgeschwindigkeiten werden nicht berücksichtigt. Die Routen werden hauptsächlich nach der Länge (AS Path) und nach strategischen Aspekten ausgewählt.
Die Hop-Länge wird nicht berücksichtigt – nur die Anzahl der autonomen Systeme ist wichtig (abgesehen vom Attribut IGP-Metrik).
BGP weist prinzipbedingt eine Reihe von Schwächen auf, die in einer Minimalkonfiguration entstehen können. Die Schwächen werden jedoch in der Regel dadurch kompensiert, dass die Priorisierung von Pfaden Routing-Policies unterliegt, die der jeweilige Netzbetreiber steuert.
Da jeder BGP-Router über Routeninformationen 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 im April 2012 bei etwa 411.000 Einträgen bei über 40.900 autonomen Systemen.[4]
| IPv4 | Ende 2005 | April 2011 | April 2012 |
|---|---|---|---|
| Routingeinträge | 170.000 | 360.000 | 411.000 |
| Autonome Systeme | 26.000 | 37.000 | 40.900 |
Dem Wachstum der Routingtabellen kann in Grenzen durch Route Aggregation entgegengewirkt werden.
Bei der Entwicklung von IPv6 wurde auch das Problem des Wachstums von Routingtabellen bei IPv4 berücksichtigt. So sind beim Einsatz von IPv6 wesentlich weniger Routingeinträge zu erwarten.[5] Zurzeit nutzen noch nicht alle Internet-Provider IPv6 und daher kann die folgende Statistik nicht direkt mit der obigen Tabelle über die IPv4-Routingeinträge verglichen werden.
| IPv6 | April 2012[6] |
|---|---|
| Routingeinträge | 8.500 |
| Autonome Systeme | 5.100 |
BGP bringt standardmäßig keine Verfahren zur Lastverteilung mit. Es wird immer nur eine mögliche Route ausgewählt. Es existieren jedoch proprietäre Erweiterungen, die eine Konfiguration zur Lastverteilung ermöglichen.[7] Diese Erweiterungen ermöglichen im Gegensatz z.B. zu OSPF eine Lastverteilung auf unterschiedlich gewichteten Verbindungen.
In der Grundkonfiguration ist ein BGP-Router anfällig für Spoofing-Angriffe, durch die Angreifer Routen manipulieren können.[8][9][10][11] Durch den Einsatz von Authentifizierung mit einem zwischen den BGP-Peers individuell festgelegten Passwort (basierend auf MD5-Hashes), kann der Datenaustausch zwischen den BGP-Routern gesichert werden. Dies erschwert Spoofing-Angriffe zwar stark, ist aber insbesondere von der Sicherheit von MD5 abhängig, welches inzwischen von Krypto-Experten als nicht mehr sicher angesehen wird.
Daneben wurden und werden verschiedene weitere Sicherheitsmechanismen für BGP vorgeschlagen[8]; allerdings wäre es selbst bei einem flächendeckenden Einsatz vorgeschlagener Verfahren nahezu unmöglich, Angriffe, welche die Umleitung von Verkehrsströmen beabsichtigen, vollständig zu unterbinden.[12]
Route Flaps werden von Routen verursacht, welche über längere Zeiträume hinweg immer wieder hin- und herschwanken, annonciert und wieder zurückgezogen werden.[13] Als Gegenmaßnahme bieten moderne BGP-Implementierungen ein Verfahren namens Route Flap Damping, welches jedoch unter bestimmten Bedingungen zu unerwünscht langen Verzögerungen bei der Weiterleitung von Routenänderungen führen kann.[14]
Update Bursts sind plötzlich auftretende große Mengen an UPDATE-Nachrichten, oft zu miteinander nicht näher korrelierten Zielen.[15]
Im Februar 2008 wurde Pakistan Telecom durch einen Gerichtsbeschluss dazu gezwungen, YouTube-Verkehr in Pakistan zu blockieren. Technisch wurde dies umgesetzt, indem eine falsche Route zum Netzwerk von YouTube in IBGP eingespeist wurde. Durch einen Konfigurationsfehler wurde diese falsche Route jedoch nicht nur in Pakistan verwendet, sondern irrtümlich auch via EBGP an andere Internetprovider verteilt, was insbesondere in Asien zu mehrstündigen Blockaden von YouTube führte.[16][17]
Im Februar 2009 wurde über einen tschechischen BGP-Router zu lange AS-Pfade an öffentliche BGP-Router weitergeleitet. Einige BGP-Router hatten Probleme in der Verarbeitung dieser langen AS-Pfade, so dass es zu Beeinträchtigungen des Internetverkehrs kam. Administratoren können durch eine Konfiguration, in welche die maximale Länge des akzeptierten AS-Pfads beschränkt wird, einem solchen Problem entgegenwirken.[18][19]
Während der Revolution in Ägypten wurden im Januar 2011 in wenigen Minuten ca. 3.500 Routen via BGP aller ägyptischer Internetprovider zurückgezogen, so dass fast ganz Ägypten vom Internet getrennt war. Auch Mobilfunkdienste und soziale Netze waren nicht mehr erreichbar. Dieses scheint der erste Fall in der Geschichte des Internets zu sein, in welchem aus politischen Gründen ein gesamtes Land vom Internet abgeschottet wurde.[20]
Dieser Artikel basiert auf dem Artikel Border_Gateway_Protocol aus der freien Enzyklopädie Wikipedia und ist unter der Lizenz Creative Commons Attribution/Share Alike verfügbar. Zusätzliche Bedingungen können anwendbar sein. In der Wikipedia ist eine Liste der Autoren verfügbar. |