Border Gateway Protocol
Abkürzung: BGP
BGP ist das Routingprotokoll, über das autonome Systeme einander mitteilen, welche Adressbereiche sie erreichen. Es ist das einzige Protokoll dieser Art, das im Internet in Gebrauch ist — die Wege zwischen allen Netzen der Welt werden ausschließlich darüber bekannt gemacht.
Pfadvektor statt Metrik
Der entscheidende Unterschied zu den Protokollen innerhalb eines Netzes liegt darin, was ausgetauscht wird.
Ein internes Protokoll rechnet mit Metriken: Es sucht den Weg mit den geringsten Kosten, wobei die Kosten technische Eigenschaften wie Bandbreite oder Laufzeit abbilden. Das setzt voraus, dass alle Beteiligten derselben Verwaltung unterstehen und dieselbe Vorstellung von „gut" haben.
Zwischen Netzen verschiedener Betreiber gilt das nicht. BGP tauscht daher keine Kosten aus, sondern Pfade: Zu jedem Adressbereich wird die Liste der autonomen Systeme mitgeliefert, über die er erreichbar ist. Diese Liste ist der AS-Pfad.
Präfix 198.51.100.0/24 AS-Pfad: 64501 64502 64510
Daraus ergeben sich zwei Dinge auf einmal. Erstens ein Schleifenschutz, der ohne Rechnerei funktioniert: Findet ein autonomes System seine eigene Nummer in einem empfangenen Pfad, verwirft es die Ankündigung. Zweitens die Grundlage für Entscheidungen, die nichts mit Technik zu tun haben — ein Betreiber kann einen längeren Weg wählen, weil er günstiger ist, und BGP hindert ihn nicht daran.
BGP sucht nicht den schnellsten Weg, sondern den, den die Beteiligten vereinbart haben. Das ist keine Schwäche, sondern der Zweck.
Die Sitzung
BGP läuft über TCP auf Port 179. Eine Sitzung wird zwischen zwei ausdrücklich konfigurierten Nachbarn aufgebaut; es gibt kein Verfahren, mit dem sich Nachbarn selbst finden — eine bewusste Entscheidung, denn wer Wege austauscht, soll wissen, mit wem.
Nach dem Aufbau wird der gesamte bekannte Bestand einmal übertragen. Danach fließen nur noch Änderungen, dazwischen Keepalive-Nachrichten. Bleiben diese aus, gilt die Sitzung nach Ablauf des Hold-Timers als abgebaut und alle darüber gelernten Wege werden verworfen. Die Norm empfiehlt 90 Sekunden Hold-Zeit bei 30 Sekunden Takt; verbreitete Umsetzungen arbeiten mit 180 zu 60.
Daraus folgt eine Eigenschaft, die bei Störungen zählt: Ein Abbruch kostet nicht nur die Sitzung, sondern erfordert nach dem Wiederaufbau die vollständige Neuübertragung — bei einem Partner mit der gesamten Routingtabelle des Internets ein erheblicher Vorgang.
Innen und außen
eBGP läuft zwischen zwei verschiedenen autonomen Systemen. Beim Weitergeben einer Ankündigung trägt der Router seine eigene AS-Nummer vorn in den Pfad ein — daran wächst der Pfad, und daran funktioniert der Schleifenschutz.
iBGP läuft zwischen Routern desselben autonomen Systems und verteilt dort die extern gelernten Wege. Der AS-Pfad bleibt dabei unverändert, weil das System nicht verlassen wird. Genau deshalb greift der Schleifenschutz hier nicht, und an seine Stelle tritt eine Regel: Ein über iBGP gelernter Weg wird nicht per iBGP weitergegeben.
Die Folge ist unangenehm: Jeder Router muss mit jedem anderen sprechen, die Zahl der Sitzungen wächst quadratisch. Umgangen wird das durch einen Route Reflector, der die Weitergabe übernimmt, oder durch Konföderationen, die das System intern in Teilsysteme zerlegen.
Die Entscheidungsreihenfolge
Liegen für ein Präfix mehrere Wege vor, wird in einer festen Reihenfolge ausgewählt. Verkürzt auf das Wesentliche:
- Local Preference — die lokal gesetzte Vorliebe. Höher gewinnt. Das ist der Hebel für „nimm den günstigen Übergang".
- Länge des AS-Pfads — kürzer gewinnt.
- Origin — wie der Weg ursprünglich bekannt wurde.
- MED — ein Wunsch des Nachbarn, welchen seiner Übergänge man nehmen soll.
- eBGP vor iBGP — der extern gelernte Weg hat Vorrang.
- Interne Kosten bis zum Austrittspunkt — der nächstgelegene Ausgang gewinnt.
- Zuletzt Alter des Wegs und Router-Kennung als eindeutige Entscheidung.
Vor der Reihenfolge kommt eine Einschränkung, die oft mit ihr verwechselt wird: Bei der Weiterleitung gewinnt immer der längste passende Präfix, unabhängig von allen Attributen. Ein /24 schlägt ein /16, auch wenn das /16 den besseren Pfad hat. Die Entscheidungsreihenfolge gilt nur zwischen Wegen zum gleichen Präfix.
Die Asymmetrie der Steuerung
Das ist der Punkt, an dem Erwartungen regelmäßig scheitern.
Ausgehenden Verkehr steuert man selbst, über Local Preference. Die Entscheidung liegt vollständig im eigenen Netz.
Eingehenden Verkehr steuert man nicht, denn darüber entscheiden die Netze der anderen. Man kann nur Signale senden: den eigenen AS-Pfad künstlich verlängern, damit ein Übergang unattraktiver wirkt, oder per MED eine Präferenz äußern — die ein Partner beachten kann oder nicht. Ein feinerer, aber einschneidender Weg ist die Aufteilung in längere Präfixe, deren Wirkung am längsten passenden Präfix hängt und nicht an einem Wunsch.
Wer eingehenden Verkehr verlagern will, bittet also. Verbindlich ist nur, was man selbst ankündigt oder eben nicht.
Communities
Communities sind Markierungen an einer Ankündigung, mit denen sich Absichten übertragen lassen, ohne Attribute umzuschreiben. Einige sind genormt — etwa die Anweisung, eine Ankündigung nicht über das eigene Netz hinaus weiterzugeben, oder die Blackhole-Kennung, mit der ein Partner aufgefordert wird, Verkehr zu einem angegriffenen Ziel zu verwerfen. Daneben definiert jeder Betreiber eigene, mit denen Kunden die Behandlung ihrer Ankündigungen beeinflussen können.
Filterung
Ohne Filterung ist BGP gefährlich, denn jeder Teilnehmer kann beliebige Präfixe ankündigen. Üblich und erwartet sind:
Präfixlisten — angekündigt und angenommen wird nur, was vereinbart ist.
Begrenzung der Präfixzahl je Sitzung, damit eine fehlerhafte Ankündigungswelle die Sitzung abbaut statt die Routingtabelle zu fluten.
Längenfilter — Präfixe über eine bestimmte Länge hinaus werden abgewiesen, mit einer Ausnahme für Blackhole-Ankündigungen.
RPKI-Abgleich — die kryptografisch belegte Prüfung, ob ein autonomes System ein Präfix überhaupt ankündigen darf.
Seit Änderung der Norm gilt zudem, dass ein Router ohne ausdrückliche Richtlinie über eBGP nichts annimmt und nichts ankündigt. Früher war das Gegenteil der Fall, und ein frisch eingerichteter Nachbar konnte unbeabsichtigt Verkehr anziehen.
Was eine falsche Ankündigung anrichtet
Sie wirkt weltweit. Wer ein fremdes Präfix ankündigt, zieht dessen Verkehr an — ob aus Absicht oder durch einen Tippfehler. Zwei Vorfälle haben das vorgeführt: 1997 lenkte ein einzelnes autonomes System durch eine fehlerhafte Ankündigung große Teile des Internetverkehrs auf sich, und 2008 machte eine Sperranordnung, die über BGP umgesetzt wurde, eine Videoplattform für Stunden global unerreichbar, weil die Ankündigung das eigene Netz verließ.
Flattern kostet Stabilität. Eine Sitzung, die wiederholt auf- und abgebaut wird, verteilt jedes Mal Änderungen über das halbe Internet. Dagegen gibt es Dämpfungsverfahren, die aber selbst Nebenwirkungen haben und deshalb umstritten sind.
MED ist nur zwischen Wegen desselben Nachbarn vergleichbar. Werte verschiedener Betreiber gegeneinander zu stellen ergibt keinen Sinn, weil jeder seine eigene Skala verwendet.
Konvergenz braucht Zeit. Nach einem Ausfall ist nicht sofort überall der neue Weg bekannt; bis dahin kann Verkehr im Kreis laufen oder verworfen werden.
BGP sagt nichts über Qualität. Der ausgewählte Weg kann überlastet sein; das Protokoll kennt die Auslastung nicht. Ein Übergang, über den der Verkehr abends nur noch stockend läuft, sieht in BGP unverändert gesund aus.
Abgrenzung
OSPF und IS-IS arbeiten innerhalb eines autonomen Systems und rechnen mit Metriken. Sie sind keine Alternative zu BGP, sondern dessen Unterbau: Sie liefern den Weg zum Austrittspunkt, den die Entscheidungsreihenfolge voraussetzt.
Peering und Transit sind die wirtschaftlichen Vereinbarungen; BGP ist das Protokoll, mit dem sie umgesetzt werden.
Ein Internet Exchange Point ist der Ort, an dem viele BGP-Sitzungen zusammenkommen; ein Route Server bündelt sie dort.
RPKI belegt, wer ein Präfix ankündigen darf, und ist damit die Grundlage einer belastbaren Filterung.
Blackholing nutzt BGP zweckentfremdet — eine Ankündigung, die nicht einen Weg mitteilt, sondern einen Auftrag zum Verwerfen.
Ein Tier-1-Netz ist über seine BGP-Beziehungen definiert, der Customer Cone aus ihnen berechnet.