BGP (Border Gateway Protocol)
BGP (Border Gateway Protocol) ist das zentrale Routing-Protokoll des Internets. Es ermöglicht den Austausch von Routing-Informationen zwischen verschiedenen autonomen Systemen (AS) und bildet damit das Rückgrat der globalen Internetkommunikation. Ohne BGP würden die tausenden unabhängigen Netzwerke, aus denen das Internet besteht, nicht miteinander kommunizieren können.
Als Exterior Gateway Protocol (EGP) unterscheidet sich BGP grundlegend von internen Routing-Protokollen wie OSPF oder RIP, die nur innerhalb eines einzelnen Netzwerks arbeiten. BGP ist speziell dafür konzipiert, Routing-Entscheidungen zwischen Internet Service Providern (ISPs), großen Unternehmensnetzwerken und Cloud-Anbietern zu koordinieren.
Geschichte und Entwicklung von BGP
Die Entwicklung von BGP begann in den späten 1980er Jahren, als das wachsende Internet ein leistungsfähigeres Routing-Protokoll benötigte. Die erste Version (BGP-1) wurde 1989 in RFC 1105 spezifiziert. Das Protokoll wurde kontinuierlich weiterentwickelt, um den steigenden Anforderungen des Internets gerecht zu werden.
Die heute verwendete Version ist BGP Version 4 (BGP-4), die seit 1995 im Einsatz ist und in RFC 4271 vollständig dokumentiert ist. BGP-4 führte wichtige Funktionen wie CIDR (Classless Inter-Domain Routing) ein, die eine effizientere Nutzung des IPv4-Adressraums ermöglichen.
Grundlegende Konzepte
Autonome Systeme (AS)
Ein autonomes System ist eine Sammlung von IP-Netzwerken und Routern unter einer gemeinsamen administrativen Kontrolle. Typischerweise handelt es sich dabei um Internet Service Provider, große Unternehmen oder Cloud-Anbieter. Jedes AS erhält eine weltweit eindeutige AS-Nummer (ASN), die von regionalen Internet-Registrierungsstellen wie RIPE NCC vergeben wird.
Die AS-Nummern bestanden ursprünglich aus 16 Bit (0-65535), wurden aber aufgrund des wachsenden Bedarfs auf 32 Bit erweitert. Die 16-Bit-ASNs werden als 2-Byte-ASNs bezeichnet, während die neueren 32-Bit-ASNs als 4-Byte-ASNs bekannt sind.
Pfadvektor-Protokoll
BGP ist ein Pfadvektor-Protokoll. Im Gegensatz zu Distanzvektor-Protokollen, die nur die Entfernung zu einem Ziel kennen, speichert BGP den vollständigen Pfad durch alle autonomen Systeme hindurch. Diese Information wird im AS_PATH-Attribut gespeichert und ermöglicht es BGP, Routing-Schleifen zu erkennen und zu vermeiden.
Funktionsweise von BGP
BGP-Sitzungen und TCP-Verbindungen
BGP-Router bauen Verbindungen zu ihren Nachbarn (sogenannten Peers) über TCP-Port 179 auf. Diese zuverlässige TCP-Verbindung sorgt dafür, dass Routing-Informationen fehlerfrei übertragen werden. Sobald eine Verbindung hergestellt ist, tauschen die Router ihre kompletten Routing-Tabellen aus.
Nach dem initialen Austausch werden nur noch inkrementelle Updates gesendet. Das bedeutet: Wenn sich eine Route ändert, wird nur diese Änderung übermittelt, nicht die gesamte Routing-Tabelle. Das reduziert den Datenverkehr erheblich.
eBGP und iBGP
BGP unterscheidet zwischen zwei Betriebsarten, je nachdem, ob die Kommunikation zwischen verschiedenen oder innerhalb desselben autonomen Systems stattfindet:
-
External BGP (eBGP): Verbindet Router in verschiedenen autonomen Systemen. eBGP ist das klassische Internet-Routing zwischen ISPs und wird typischerweise über direkte Verbindungen zwischen den AS-Grenzen betrieben.
-
Internal BGP (iBGP): Verbindet Router innerhalb desselben autonomen Systems. iBGP wird verwendet, um externe Routen im eigenen Netzwerk zu verteilen. Bei iBGP gilt die Regel, dass von einem iBGP-Nachbarn gelernte Routen nicht an andere iBGP-Nachbarn weitergegeben werden (Split-Horizon-Regel).
Um das Problem der vollständigen Mesh-Topologie bei iBGP zu lösen, werden oft Route Reflectors eingesetzt. Diese speziellen Router sammeln Routen von mehreren iBGP-Nachbarn und reflektieren sie an andere, wodurch die Anzahl der notwendigen BGP-Sitzungen drastisch reduziert wird.
BGP-Nachrichtentypen
Die Kommunikation zwischen BGP-Routern erfolgt über vier verschiedene Nachrichtentypen. Jeder Typ erfüllt eine spezifische Funktion im Protokollablauf:
| Nachrichtentyp | Funktion |
|---|---|
| OPEN | Initiiert die BGP-Sitzung und überträgt Parameter wie AS-Nummer, BGP-Version und Hold-Timer |
| UPDATE | Kündigt neue Routen an oder zieht nicht mehr erreichbare Routen zurück |
| KEEPALIVE | Bestätigt den Verbindungsaufbau und hält die Sitzung aktiv (typisch alle 60 Sekunden) |
| NOTIFICATION | Signalisiert Fehler und beendet die BGP-Sitzung |
Die UPDATE-Nachricht ist das Herzstück von BGP. Sie enthält sowohl Informationen über neu erreichbare Netze (Network Layer Reachability Information, NLRI) als auch über Netze, die nicht mehr erreichbar sind (Withdrawn Routes).
BGP-Attribute
BGP verwendet verschiedene Attribute, um Routing-Entscheidungen zu treffen. Diese Attribute werden in UPDATE-Nachrichten übertragen und beeinflussen, welcher Pfad zu einem Ziel gewählt wird. Die wichtigsten Attribute sind:
-
AS_PATH: Liste aller autonomen Systeme auf dem Weg zum Ziel. Je kürzer der Pfad, desto bevorzugter die Route. Dient auch zur Schleifenerkennung.
-
NEXT_HOP: IP-Adresse des nächsten Routers auf dem Weg zum Ziel.
-
LOCAL_PREF: Lokale Präferenz für Routen innerhalb eines AS (nur bei iBGP). Höhere Werte werden bevorzugt.
-
MED (Multi-Exit Discriminator): Empfehlung an benachbarte AS, welchen Eintrittspunkt sie nutzen sollen. Niedrigere Werte werden bevorzugt.
-
ORIGIN: Gibt an, wie die Route ursprünglich in BGP eingeführt wurde (IGP, EGP oder unvollständig).
-
COMMUNITY: Optionales Attribut zum Gruppieren und Markieren von Routen für Routing-Policies.
BGP-Pfadauswahl
Wenn BGP mehrere Routen zum gleichen Ziel kennt, muss es die beste Route auswählen. Dies geschieht nach einem definierten Algorithmus, der die Attribute in einer bestimmten Reihenfolge prüft. Die wichtigsten Kriterien sind:
- Höchste LOCAL_PREF
- Kürzester AS_PATH
- Niedrigster ORIGIN-Typ (IGP < EGP < Incomplete)
- Niedrigster MED-Wert
- eBGP-Routen vor iBGP-Routen
- Niedrigste IGP-Metrik zum NEXT_HOP
- Niedrigste Router-ID
Diese Auswahlreihenfolge gibt Netzwerkadministratoren viele Möglichkeiten, das Routing-Verhalten durch Anpassung der Attribute gezielt zu steuern.
Vergleich: BGP vs. Interior Gateway Protocols
BGP unterscheidet sich grundlegend von Interior Gateway Protocols (IGPs) wie OSPF, IS-IS oder RIP. Während IGPs für schnelle Konvergenz innerhalb eines Netzwerks optimiert sind, ist BGP auf Skalierbarkeit und policy-basiertes Routing zwischen Netzwerken ausgelegt.
| Aspekt | BGP | IGPs (OSPF, IS-IS) |
|---|---|---|
| Einsatzbereich | Zwischen autonomen Systemen | Innerhalb eines Netzwerks |
| Protokolltyp | Pfadvektor | Link-State / Distanzvektor |
| Metrik | Pfad-Attribute | Kosten / Hopcount |
| Konvergenz | Langsamer (Minuten) | Schnell (Sekunden) |
| Skalierbarkeit | Sehr hoch (Internet-Skala) | Mittel bis hoch |
| Policy-Kontrolle | Umfangreich | Begrenzt |
In der Praxis werden beide Protokolltypen kombiniert eingesetzt: IGPs verteilen Routen innerhalb des Netzwerks, während BGP den Austausch mit externen Netzwerken übernimmt. Die internen Router müssen dann beide Informationsquellen zusammenführen.
Sicherheitsaspekte
BGP wurde in einer Zeit entwickelt, als Sicherheit im Internet noch keine große Rolle spielte. Das Protokoll vertraut grundsätzlich den Informationen, die von Nachbar-Routern gesendet werden. Diese Vertrauensarchitektur macht BGP anfällig für verschiedene Angriffsszenarien:
BGP-Hijacking
Beim BGP-Hijacking kündigt ein böswilliger Akteur IP-Präfixe an, die ihm nicht gehören. Dadurch kann er Datenverkehr umleiten, abfangen oder stören. Solche Vorfälle können absichtlich (Angriffe) oder versehentlich (Fehlkonfiguration) auftreten und haben in der Vergangenheit zu großflächigen Internet-Störungen geführt.
RPKI und ROA
Um die Sicherheit von BGP zu verbessern, wurde die Resource Public Key Infrastructure (RPKI) entwickelt. Mit RPKI können Netzwerkbetreiber kryptografisch signierte Route Origin Authorizations (ROAs) erstellen, die belegen, welches AS berechtigt ist, bestimmte IP-Präfixe anzukündigen.
BGP-Router können diese ROAs prüfen und ungültige Ankündigungen filtern. Obwohl die Adoption von RPKI zunimmt, ist die Absicherung des gesamten Internets noch nicht abgeschlossen. Zusätzlich werden MD5-Authentifizierung für BGP-Sitzungen und Prefix-Filter eingesetzt, um unbefugte Ankündigungen zu blockieren.
Einsatzgebiete
BGP kommt überall dort zum Einsatz, wo mehrere Netzwerke miteinander kommunizieren müssen. Die häufigsten Anwendungsfälle sind:
-
Internet Service Provider (ISPs): ISPs nutzen BGP, um Routen mit anderen Providern auszutauschen und den optimalen Weg für Kundendaten zu finden.
-
Multi-Homed Unternehmen: Unternehmen mit Verbindungen zu mehreren ISPs verwenden BGP, um Redundanz zu schaffen und bei Ausfall eines Providers automatisch auf den anderen umzuschalten.
-
Internet Exchange Points (IXPs): An IXPs treffen viele Netzwerke zusammen und tauschen über BGP direkt Datenverkehr aus (Peering).
-
Cloud-Anbieter: AWS, Azure und Google Cloud nutzen BGP, um Kundenverbindungen (wie AWS Direct Connect oder Azure ExpressRoute) in ihre Infrastruktur zu integrieren.
-
Content Delivery Networks (CDNs): CDNs verwenden BGP-Anycast, um Anfragen zum nächsten Cache-Server zu leiten.
BGP in der Praxis
Als Fachinformatiker für Systemintegration wirst du BGP vor allem in größeren Unternehmensumgebungen oder bei Internet Service Providern begegnen. Das Verständnis der BGP-Grundlagen ist wichtig, um Netzwerkarchitekturen zu verstehen und Fehler in der Kommunikation zwischen verschiedenen Netzwerken analysieren zu können.
Die Konfiguration von BGP ist komplex und erfordert sorgfältige Planung. Fehlerhafte BGP-Konfigurationen können weitreichende Auswirkungen haben - von Verbindungsproblemen einzelner Unternehmen bis hin zu Störungen, die große Teile des Internets betreffen.
Quellen und weiterführende Links
- RFC 4271 - A Border Gateway Protocol 4 (BGP-4) - Offizielle BGP-4-Spezifikation
- BGP - Wikipedia (deutsch) - Umfassender Überblick
- BGP - Elektronik-Kompendium - Deutschsprachige Erklärung
- BGP - IONOS Digitalguide - Ausführlicher Artikel
- BGP - Fortinet - Sicherheitsperspektive
- BGP - Microsoft Learn - Windows Server BGP