Border Gateway-Protokoll

Innerhalb eines autonomen Systems kommt es nur darauf an Pakete möglichst schnell von einer Station zur anderen zu schaffen, ohne sich um sonstige Regeln zu kümmern. Zwischen autonomen Systemen gibt es allerdings noch ein paar mehr Punkte die beachtet werden müssen.

So könnte z.B. das Netz eines Unternehmens das den optimalen Transitweg zwischen zwei anderen Netzen darstellt gar keine Lust haben seine teure Bandbreite für Daten zur Verfügung zu stellen, die es überhaupt nichts angehen, oder die NATO könnte aus politischen Gründen dagegen sein, das ihre Netzdaten über das Netz des irakischen Geheimdienstes geroutet werden, oder SUN könnte nicht wollen, das Daten die zwischen ihren Niederlassungen ausgetauscht werden über das Netz von Microsoft gehen.

Solche Regeln können in jedem BGP-Router konfiguriert werden. Sie sind allerdings ncht Teil des Protokolls

Für einen BGP-Router besteht die ganze Welt nur aus BGP-Routern. Die dahinter liegenden Netze interessieren ihn nicht. Paare von BGP-Routern tauschen sich durch TCP-Verbindungen aus. TCP erklären wir später. Im Moment ist nur interessant, das TCP auf IP aufsetzt und eine zuverlässige Verbindung erlaubt.

BGP ist grundsätzlich ein Distanz-Vektor-Protokoll, weist aber einige wichtige Unterschiede zu RIP auf. Es verwaltet nicht nur die Kosten zu jedem Ziel, sondern führt auch Buch über den verwendeten Pfad. Es teilt seinen Nachbarn auch nicht die Kosten zu jedem Pfad mit, sondern genau den zu benutzenden Weg.

Schauen wir uns einmal die folgende Ansammlung von Routern an:

BGP-Router

Router F erhält nun folgende Informationen üer den Pfad zu Router D:

von Pfad
B BCD
G GCD
I IFGCD
E EFGCD

Sind alle Pfade von den Nachbarn angekommen, wird der Beste herausgesucht. Die Pfade von I und E werden gleich verworfen, weil F ja selbst Router auf diesem Pfad ist. Es bleiben noch B und G. Jetzt werden im BGP-Router noch die Kosten für diese Ziel geprüft und die billigere davon genommen. Die Auswahlfunktion dafür ist nicht Teil des Protokolls sondern kann beliebig implementiert werden.