Building the Edge — Part 2

Das Internet kennt keine Anwendungen – warum BGP nicht versucht, den schnellsten Weg zu finden.

Das Internet kennt keine Anwendungen

Warum BGP nicht versucht, den schnellsten Weg zu finden.


Wer Anwendungen entwickelt, denkt zwangsläufig in Anwendungen. Wir sprechen über APIs, Datenbanken, Kubernetes, Deployments oder Programmiersprachen. Selbst wenn wir über Infrastruktur sprechen, endet unser Blick häufig am Loadbalancer oder am Ingress Controller. Dahinter beginnt unsere Plattform. Davor befindet sich – zumindest in den meisten Architekturdiagrammen – das Internet. Eine Wolke. Ein Pfeil. Ein Übergang. Vielleicht haben wir uns genau deshalb daran gewöhnt, das Internet als Transportmedium zu betrachten. Als etwas, das Anfragen lediglich von A nach B bringt. Doch genau das ist es nicht.


Nehmen wir denselben Request aus dem ersten Teil dieser Serie. Ein Benutzer öffnet seinen Browser. Er gibt eine URL ein. Wenige Millisekunden später erscheint eine Anwendung. Diese Selbstverständlichkeit verleitet leicht zu einer falschen Annahme. Dass das Internet gewusst hätte, wohin diese Anfrage gehört. Tatsächlich wusste es das nie. Denn das Internet kennt weder Anwendungen noch Kubernetes-Cluster. Es kennt keine Container. Keine Pods. Keine Services. Nicht einmal HTTP. Das Internet kennt zunächst nur eines: Netzwerke.


Diese Beobachtung wirkt zunächst beinahe banal. Ihre Konsequenzen sind jedoch weitreichend. Denn wenn das Internet keine Anwendungen kennt, stellt sich zwangsläufig eine andere Frage. Wie findet ein Request überhaupt seinen Weg?


Viele stellen sich das Internet wie ein Straßennetz vor. Eine riesige Landkarte mit Millionen Verbindungen, auf der irgendwo eine zentrale Instanz den kürzesten Weg berechnet. Diese Vorstellung ist intuitiv. Sie ist allerdings falsch. Es existiert keine globale Karte. Kein zentraler Router. Kein Kontrollzentrum. Und auch keine Datenbank, die sämtliche Leitungen des Internets kennt. Stattdessen besteht das Internet aus zehntausenden unabhängigen Netzwerken. Jedes davon wird von einem anderen Betreiber verwaltet. Internet Service Provider. Cloud-Anbieter. Universitäten. Mobilfunknetze. Content Delivery Networks. Unternehmen. Alle betreiben ihre eigenen Netze. Alle treffen ihre eigenen Entscheidungen. Und trotzdem entsteht daraus ein einziges, globales Netzwerk. Vielleicht gehört genau das zu den elegantesten Eigenschaften des Internets. Niemand besitzt den vollständigen Überblick. Und trotzdem findet jedes Paket seinen Weg.


Diese unabhängigen Netzwerke bezeichnet man als Autonomous Systems. Ein Autonomous System – häufig einfach AS genannt – ist keine Hardware. Keine Software. Und auch kein Rechenzentrum. Es beschreibt eine Routing-Domäne. Ein Netzwerk, das seine Routingentscheidungen selbst trifft. Jedes AS entscheidet beispielsweise,

  • welche IP-Präfixe es ankündigt,
  • mit welchen Nachbarn es verbunden ist,
  • welche Wege bevorzugt werden,
  • und welche Routen an andere Netze weitergegeben werden.

Vielleicht klingt das zunächst nach einem technischen Detail. Tatsächlich bildet genau dieses Prinzip das Fundament des gesamten Internets.

                +-----------+
                |   AS64500 |
                +-----------+
                     |
        +------------+------------+
        |                         |
        v                         v
   +-----------+             +-----------+
   |  AS64510  |             |  AS64520  |
   +-----------+             +-----------+
        |                         |
        +------------+------------+
                     |
                     v
                +-----------+
                |   AS64530 |
                +-----------+

Jedes dieser Netzwerke kennt lediglich seine direkten Nachbarn. Mehr nicht.


Damit stellt sich eine weitere Frage. Woher weiß ein Netzwerk eigentlich, welche anderen Netze erreichbar sind? Hier kommt ein Protokoll ins Spiel, das außerhalb der Netzwerktechnik erstaunlich selten erwähnt wird und trotzdem das Rückgrat des gesamten Internets bildet: Border Gateway Protocol, kurz BGP. Der Name klingt technisch. Die Grundidee ist überraschend einfach. Netzwerke erzählen ihren Nachbarn, welche IP-Präfixe sie erreichen können. Diese Nachbarn erzählen es ihren Nachbarn weiter. Und so verbreiten sich Routinginformationen schrittweise über das gesamte Internet.

        203.0.113.0/24

              announced by

             +-----------+
             | AS65000   |
             +-----------+
               /       \
              /         \
             v           v

         AS65010     AS65020
             \           /
              \         /
                 AS65030

Es existiert keine zentrale Routingtabelle. Das globale Bild entsteht ausschließlich aus vielen lokalen Informationen.


An dieser Stelle begegnet man häufig einer überraschenden Erwartung. Viele gehen davon aus, dass BGP nun den schnellsten oder geografisch kürzesten Weg berechnet. Das wäre schließlich naheliegend. Doch genau das tut BGP nicht.

BGP optimiert nicht auf Geschwindigkeit.

BGP optimiert auf Erreichbarkeit.

Diese Unterscheidung erscheint zunächst klein. Tatsächlich erklärt sie einen großen Teil des Verhaltens des Internets. BGP kennt keine Landkarte. Es weiß nicht, wie weit Hamburg von Frankfurt entfernt liegt. Es kennt keine Glasfaserkabel. Es misst keine Latenzen. Es entscheidet anhand von Routingrichtlinien, Nachbarschaften und Prioritäten, welcher Pfad bevorzugt wird. Ein Pfad kann deshalb länger sein als ein anderer. Er kann über Amsterdam führen, obwohl Quelle und Ziel beide in Deutschland liegen. Nicht weil BGP einen Fehler gemacht hätte. Sondern weil dieser Pfad aus Sicht der beteiligten Netzwerke der bevorzugte oder überhaupt erreichbare Weg ist. Vielleicht erklärt genau das, weshalb gutes Peering häufig wichtiger ist als geografische Nähe. Ein hervorragend angebundenes Netzwerk kann trotz größerer Entfernung niedrigere Latenzen erreichen als ein geografisch näherer Standort mit ungünstigen Transitwegen. Die Qualität eines Netzwerks entsteht deshalb nicht allein durch seine Standorte. Sie entsteht durch seine Beziehungen zu anderen Netzwerken.


Vielleicht verändert genau dieser Gedanke den Blick auf moderne Plattformen. Eine Cloud-Plattform besteht nicht nur aus Servern. Sie besteht ebenso aus ihrem Netzwerk. Aus ihren Peerings. Aus ihren Routingentscheidungen. Aus ihrer Einbindung in das globale Internet. Wer eine Edge-Plattform baut, baut deshalb nicht nur Rechenzentren. Er baut ein Netzwerk, das selbst Teil des Internets wird. Und genau dort beginnt die Geschichte von Anycast. Denn sobald ein Netzwerk dieselben Präfixe an mehreren Standorten gleichzeitig ankündigt, passiert etwas Bemerkenswertes. Nicht die Anwendung entscheidet, welcher Standort einen Request verarbeitet. Nicht DNS. Nicht eine Geo-Datenbank. Sondern das Internet selbst. Genau darum wird es im nächsten Teil dieser Serie gehen.