Loading AI tools
Kommunikationsprotokoll Aus Wikipedia, der freien Enzyklopädie
Das Border Gateway Protocol (BGP) ist das im Internet eingesetzte Routingprotokoll, welches autonome Systeme (AS) miteinander verbindet. Diese autonomen Systeme werden in der Regel von Internetdienstanbietern gebildet. BGP wird allgemein als Exterior-Gateway-Protokoll (EGP) und Pfadvektorprotokoll bezeichnet und verwendet für Routing-Entscheidungen sowohl strategische als auch technisch-metrische Kriterien, wobei in der Praxis meist betriebswirtschaftliche Aspekte berücksichtigt werden. Innerhalb autonomer Systeme werden Interior Gateway Protokolle (IGP) wie z. B. OSPF eingesetzt.
Anwendung | BGP | ||||
Transport | TCP | ||||
Internet | IP (IPv4, IPv6) | ||||
Netzzugang | Ethernet | Token Bus |
Token Ring |
FDDI | … |
BGP ist in RFC 1163 beschrieben.[1] In der derzeit eingesetzten Version 4 ist es im RFC 4271 beschrieben.[2] Die BGP-Router verwenden den TCP-Port 179.
1991 wurde im RFC 1269[3] 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[4] mit sogenannten Multiprotocol Extensions versehen. Die aktuelle Version findet sich in RFC 4760.[5] 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).[6]
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).
An Internet Exchanges, zum Beispiel dem deutschen DE-CIX, treffen viele autonome Systeme zum Zwecke des Peerings zusammen. Um die Notwendigkeit sehr vieler BGP-Verbindungen bis hin zur Vollvermaschung zu vermeiden, werden dort in der Regel sogenannte Route Server angeboten. Die Border-Router, die zu den angeschlossenen Netzen vermitteln, senden ihre Routen an den Routing-Server, also den Route Reflector, von dem alle anderen Router diese Routen wieder beziehen können. Dadurch kann ein Netzwerk auf einfache Art und Weise mit fast allen angeschlossenen Netzen zusammengeschlossen werden.
BGP kann auch innerhalb eines autonomen Systems angewendet werden. Typischerweise geschieht dies, um die von EBGP-Routern gelernten Routen innerhalb des eigenen autonomen Systems zu propagieren. Zwar wäre es auch mit Hilfe eines IGP möglich die BGP-Attribute (siehe unten) zu übermitteln, jedoch sind diese nicht dafür ausgelegt. Diese Verwendung wird als Internal BGP (IBGP) bezeichnet. Alle IBGP-Router, die zusammen Routen austauschen, verwenden dieselbe AS-Nummer des eigenen AS, wenn keine BGP-Confederations (siehe unten) verwendet werden.
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. Durch diesen entfällt die Notwendigkeit einer Vollvermaschung der IBGP-Router; stattdessen bauen diese eine BGP-Verbindung zu einem oder aus Redundanzgründen zu mehreren Route-Reflektoren auf.
Der Grund der Notwendigkeit einer vollständigen Vermaschung liegt darin, dass IBGP innerhalb eines autonomen Systems empfangene BGP-Informationen von benachbarten BGP-Routern selber nicht an andere IBGP-Router weitergibt („Split-Horizon-Prinzip“). Dies dient der Vermeidung von Routing-Schleifen.
Um das Problem der bei einer vollständigen Vermaschung auftretenden Vielzahl an BGP-Sessions zu lösen, können in einem AS ein oder aus Redundanzgründen mehrere BGP-Router als Route Reflector konfiguriert werden. So schickt jeder EBGP-Router seine via EBGP gelernten Routen via IBGP nur noch an einen bestimmten BGP-Peer, den Route Reflector, der sie sammelt und wiederum via IBGP an die anderen BGP-Router im AS verteilt. Da nun jeder BGP-Router nur eine einzige BGP-Verbindung zu seinem Route Reflector zu halten braucht, 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 jedem der Cluster-Router muss von den IBGP-Routern jeweils eine Verbindung hergestellt werden. Bei n Routern und m Route-Reflektoren ergeben sich n·m Verbindungen.
Route-Reflektoren können Router sein, die dediziert für diese Aufgabe im Netz bereitgestellt werden oder als gewöhnlicher Router im Datenpfad liegen und Route-Reflector-Funktionalität wahrnehmen[7].
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 der Bereich 64512–65535 (16-Bit-AS-Nummernbereich) bzw. 4200000000–4294967294 (32-Bit-AS-Nummernbereich)[8] 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.[9]
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.
Im Gegensatz zu EBGP-Verbindungen, die in der Regel auf physischen Routerschnittstellen terminieren, werden IBGP-Verbindungen zwischen Router-Loopback-Adressen definiert. Hierdurch soll vermieden werden, dass bei Deaktivierung/Ausfall einer physischen Router-Schnittstelle die IBGP-Verbindung abbricht, obwohl der Router diese bei entsprechender Redundanzbereitstellung innerhalb des autonomen Systems über eine alternative Schnittstelle umschwenken könnte. Da aber ohne eine bereits bestehende IBGP-Verbindung die Loopback-Adressen als Route noch nicht propagiert werden können, ist ein darunterliegendes Interior Gateway Protocol (IGP) wie z. B. OSPF erforderlich. Dies bedeutet, dass auf jedem IBGP-Router auch ein IGP-Router-Prozess konfiguriert wird. Da jeder IBGP-Router mindestens zwei physische Netzwerkkarten besitzt, wird das IGP mehrere mögliche Pfade zwischen den Loopback-Adressen kennen. Fällt nun eine physische Netzwerkschnittstelle eines IBGP-Routers aus, dann wird über IGP ein alternativer Pfad propagiert. Solange mindestens eine physische Schnittstelle erreichbar ist, ist auch die auf dem Router konfigurierte Loopback-Adresse erreichbar und die IBGP-Verbindung kann innerhalb des AS unterbrechungsfrei umgeroutet werden.
Ohne Loopback-Adressen wären die IBGP-Router untereinander an physischen Schnittstellen gebunden. Bei einem Ausfall einer solchen Schnittstelle wäre die Verbindung unterbrochen und eine konsistente Verteilung von Routen innerhalb eines autonomen Systems selbst dann nicht mehr sichergestellt, wenn die interne Netzwerkinfrastruktur redundant realisiert ist.
Die direkten Verbindungen zwischen benachbarten Routern werden manuell angegeben. Router, welche miteinander über BGP Routing-Informationen austauschen wollen, bauen zunächst eine TCP-Verbindung auf, über welche dann die BGP-Nachrichten gesendet werden. Diese Verbindung nennt man eine BGP-Session („Sitzung“).
Bit Offset | 0–15 | 16–23 | 24–31 | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Marker (16 Bytes) | |||||||||||||||||||||||||||||||
32 | ||||||||||||||||||||||||||||||||
64 | ||||||||||||||||||||||||||||||||
96 | ||||||||||||||||||||||||||||||||
128 | Message Length | Message Type | ||||||||||||||||||||||||||||||
Message |
1 = | Open | RFC 4271[10] |
2 = | Update | RFC 4271[11] |
3 = | Notification | RFC 4271[12] |
4 = | KeepAlive | RFC 4271[13] |
5 = | ROUTE-REFRESH | RFC 2918[14] |
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 noch keine Routingeinträge ausgetauscht werden, wenn in einer Routerkonfiguration der Status Active angezeigt wird. 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-Richtlinien („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.
12345:12345
oder als Dezimalzahl frei verwendet werden.Sehr oft kommt es vor, dass ein Router zum selben Ziel unterschiedliche 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 Pfadauswahl 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:[16]
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
weiterleiten. 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. Nur anhand 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.
Die Bereitstellung von Erreichbarkeitsinformationen für das IBGP-Protokoll durch ein IGP-Protokoll ist auch zur Herstellung von IBGP-Sessions zwischen nicht unmittelbar benachbarten IBGP-Routern oder zu BGP-Route-Reflektoren notwendig.
BGP ist ein Pfadvektorprotokoll. Seine Funktionsweise ist stark an Distanzvektoralgorithmen und -protokolle 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 dasselbe AS mehrmals passiert. Ein BGP-Router teilt beim Senden von Routing-Informationen (UPDATE) dem Kommunikationspartner nicht nur mit, dass er einen bestimmten Abschnitt des Internets erreichen kann, sondern auch die vollständige Liste aller autonomen 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 die Nachricht und vermeidet so, dass eine Routing-Schleife 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 Anzahl an (BGP-)Routern („Hop“) wird durch BGP als Entscheidungskriterium bei der Auswahl des besten Weges zum Ziel 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 Dezember 2016 bei etwa 650.000 Einträgen in ca. 56.000 autonomen Systemen.
IPv4 | Ende 2005 | April 2011 | April 2012 | Mai 2014 | Juni 2015[17] | Dezember 2016 |
---|---|---|---|---|---|---|
Routingeinträge | 170.000 | 360.000 | 411.000 | 500.000 | 557.973 | 646.157 |
Autonome Systeme | 26.000 | 37.000 | 40.900 | 47.010 | 50.921 | 56.158 |
Dem Wachstum der Routing-Tabellen 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 Routing-Einträge zu erwarten.[18] Zurzeit nutzen noch nicht alle Internet-Provider IPv6 und daher kann die folgende Statistik nicht direkt mit der obigen Tabelle über die IPv4-Routing-Einträge verglichen werden.
IPv6 | April 2012 | Juni 2015[19] | Dezember 2016 |
---|---|---|---|
Routingeinträge | 8.500 | 22.014 | 34.789 |
Autonome Systeme | 5.100 | 8.251 | 12.666 |
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.[20] 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.[21][22][23][24] 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.
Weiterhin können aufgrund des Punkt-zu-Punkt-Charakters von BGP-Router-Beziehungen mittels Paketfilter-Listen die erlaubten BGP-Peers entsprechend auf die zulässigen Partner eingeschränkt werden.
Daneben wurden und werden verschiedene weitere Sicherheitsmechanismen für BGP vorgeschlagen;[21] 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.[25]
Route Flaps werden von Routen verursacht, welche über längere Zeiträume hinweg immer wieder hin- und herschwanken, annonciert und wieder zurückgezogen werden.[26] 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.[27]
Update Bursts sind plötzlich auftretende große Mengen an UPDATE-Nachrichten, oft zu miteinander nicht näher korrelierten Zielen.[28]
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 Internetanbieter verteilt, was insbesondere in Asien zu mehrstündigen Blockaden von YouTube führte.[29][30]
Im Februar 2009 wurden ü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.[31][32]
Während der Revolution in Ägypten wurden im Januar 2011 via BGP in wenigen Minuten ca. 3.500 Routen aller ägyptischer Internetanbieter zurückgezogen, wodurch 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.[33]
Das BGP Path Attribute kann den Wert 255 annehmen. Dieses steht für Entwicklungen (development, siehe RFC 2042[34]) zur Verfügung. Bereits im Jahr 2010 führte ein Experiment mit diesem Flag zu Abstürzen in einigen Routern. Bei einem neuerlichen Versuch Ende 2018 wurden wieder fehlerhaft implementierte Router gefunden.[35]
Am 4. Oktober 2021 waren für ca. 6 Stunden weltweit alle Dienste von Facebook, Instagram und Whatsapp nicht erreichbar. Dies ging auf eine fehlerhafte Konfiguration von Facebooks selbst gehosteten BGP-Routern zurück.[36][37]
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.