Warum ging Facebook am 4. Oktober 2021 nicht?


Nach einer kurzen Umfrage auf Facebook scheint es mir, also ob einige von Euch Interesse an einer Erklärung haben, warum Facebook am letzten Montag nicht erreichbar war. Hier ist mein Versuch dies für Nicht-Informatiker:innen zu tun.

Ich werde in diesem Artikel sehr viel mit sogenannten TLAs (Three Letter Acronyms, Drei-Buchstaben-Abkürzungen) um mich werfen, die leider zum unvermeidbaren Fachjargon gehören. Ich werde aber immer versuche diese zu erklären. Hier die Wichtigsten aufgeschlüsselt, mit Links zum Wikipedia-Artikel:

Abkürzung Bedeutung
ASN Autonomous System Number
BGP Border Gateway Protocol
DNS Domain Name System
HTTP Hypertext Transport Protocol
IP Internet Protocol
WWW World Wide Web

Nicht immer gibt es für diese eine sinnvolle deutsche Übersetzung. Falls es sie gibt, ist sie im Text mit genannt.

Die Grundlagen

Das World Wide Web

Die Begriffe World Wide Web (WWW) und Internet werden häufig austauschbar verwendet. Facebook ist in beiden zu finden. Es ist jedoch wichtig zu verstehen, dass es sich hier um zwei völlig unterschiedliche Konzepte handelt.

Das World Wide Web (deutsch weltweites Netz) ist eine Sammlung weltweit erreichbarer Dokumente, die über sogenannte Hyperlinks verbunden sind. Da sie miteinander verbunden sind, bezeichnen wir sie als ein Netz (engl. Web) von Dokumenten. Diese Dokumente bezeichnet man als Webseiten.

Die Übertragung dieser Webseiten findet über das Hypertext Transport Protocol (HTTP) statt. Mit einem Protokoll (engl. Protocol) wird in der Kommunikationstechnik eine Vereinbarung bezeichnet, über die Art und Weise, wie man miteinander kommuniziert. Das HTTP könnt Ihr Euch so vorstellen, dass Ihr einen Anfrage-Brief an einen anderen Computer (einem sogenannten Webserver) schickt. In diesem Anfrage-Brief steht drin, welche Webseite Ihr wollt. Von dem Webserver erhaltet Ihr dann einen Antwort-Brief mit der Webseite. Das Programm, das diesen „Briefaustausch“ für Euch übernimmt, bezeichnet man als Webbrowser. Nehmt als Beispiel den Blogartikel, den Ihr gerade lest: Der Webbrowser auf Eurem Rechner oder Eurem Smartphone hat dem Webserver meines Blogs eine Anfrage für die Webseite mit dem Namen /facebook-bgp.html geschickt und Ihr habt eine Webseite als Antwort erhalten, die der Webbrowser nun, in einem für Euch lesbaren Format, dargestellt. Wie die Briefe adressiert oder ausgeliefert werden, ist jedoch nicht Teil des HTTP, dafür gibt es das Internet.

Das Internet

Das Internet (kurz für Internetwork, also Inter-Netzwerk) ist ein Netzwerk von Computer-Netzwerken. Also ein Verbund zwischen (lat. inter) mehreren Verbünden von Rechnern. Diese Rechnerverbünde können einfach Euer WLAN (deutsch drahtloses lokales Netzwerk) zu Hause sein, aber auch Euer Internetprovider kann als ein solcher Rechnerverbund verstanden werden. Das Internet bildet die Vermittlungsebene, auf der unter anderem der „Briefaustausch“ des HTTPs stattfindet. Das Senden der Briefe funktioniert hier jedoch etwas anders als bei der Post, da es noch andere Protokolle, als HTTP gibt die über das Internet ausgeliefert werden (z. B. E-Mail) und man das ganze vereinheitlicht haben will: Die Briefe werden hier nicht in Umschläge gepackt, sondern in Pakete, sogenannte IP-Pakete. Hinter der Abkürzung IP versteckt sich das Internet Protocol. Im Internet Protocol ist, vereinfacht gesagt, jeder Rechner mit einer sogenannten IP-Adresse versehen. Diese habt Ihr bestimmt schon mal gesehen. Sie bestehen aus vier Zahlen, die jeweils mit einem Punkt getrennt sind. Die IP-Adresse für den Rechner auf dem mein Blog zurzeit verfügbar ist, ist zum Beispiel 185.26.156.144. Diese Adressen werden dann auf an IP-Pakete drangemacht und dann durch das Internet gesendet.

Nur so am Rande, ich spreche hier vom älteren Internet Protocol, Version 4 (IPv4), und es gibt auch noch das neuere Internet Protocol, Version 6 (IPv6), mit ganz kompliziert langen Adressen (2a00:d0c0:200:0:4c20:8bff:fed5:cfa3). Aber lasst uns es uns einfach machen und beim älteren Protokoll bleiben. Das neuere funktioniert da sehr ähnlich.

Die IP-Adressen folgen einer hierarchischen Ordnung. Das heißt, der Rechner mit der Adresse 185.26.156.144 befindet sich in einem Netzwerk, in dem auch andere Rechner deren Adressen mit den Zahlen 185.26.156 anfangen und dieses Netzwerk wiederum befindet sich in einem anderen Netzwerk in dem die Adressen mit 185.26 anfangen, und so weiter. Bei Adressen, die mit den gleichen Zahlen anfangen, sagt man auch, dass sie das gleiche Präfix haben. Eine IP-Adresse besteht aus 32 Bit oder 4 Byte, die vier Zahlen bestehen also jeweils aus 8 Bit oder einem Byte. Die Präfixe werden daher typischerweise mit der Notation 185.26.156.0/24 dargestellt, wobei die 24 für die Länge des Präfixes in Bit steht. Warum man das Ganze eine hierarchische Ordnung nennt, kann man in der folgenden Grafik glaube ich ganz gut erkennen:

Die hierarchische Ordnung von IP-Adressen

Durch diese hierarchische Ordnung ist es leichter ein IP-Paket durch das Internet zu senden, da sich allein anhand der Adresse ablesen lässt in welchem Netzwerk oder Unter-Netzwerk sich der Empfänger eines IP-Paketes befindet. Das kann man sich in etwa vorstellen wie Postleitzahl, Adresse und Hausnummer, bloß das im IP alles rein auf Zahlen basiert und somit leichter verständlich für Computer.

Das Domain Name System

Nun gebt Ihr ja aber, wenn Ihr Euch meinen Blog anschauen wollt nicht jedes Mal eine Zahlenfolge 185.26.156.144 in Euren Webbrowser ein, sondern https://blog.martine-lenders.eu. Was hat es damit auf sich? Der Anfang https:// sagt Eurem Webbrowser einfach, dass er die sichere, verschlüsselte Version von HTTP (HTTP Secure, HTTPS) verwenden soll. blog.martine-lenders.eu ist ein sogenannter Domänenname. Domänen sind, wenn es um Namen geht, ganz vereinfacht gesprochen, das gleiche wie Netzwerke. Idealerweise hat also der Rechner mit dem Domänennamen blog.martine-lenders.eu im gleichen Netzwerk, wie der Rechner mit dem Domänennamen www.martine-lenders.eu. Damit Euer Rechner oder Smartphone aber nun weiß, hinter welchem Domänennamen sich welche IP-Adresse verbirgt, sodass er seinen Anfrage-Brief in einem IP-Paket an diese IP-Adresse senden kann, muss er dies im sogenannten Domain Name System (DNS) nachschlagen. Dazu gibt es sogenannte DNS-Server im Internet, meist auch direkt lokal im gleichen Netzwerken, wo Euer Rechner eine Anfrage, die den Domänennamen enthält, hinschickt. Die DNS-Server fragen dann, ebenfalls in einer hierarchischen Ordnung, sich gegenseitig an, ob jemand diesen Namen kennt, bis irgendwann eine Antwort herauskommt, die besagt, dass z.B. hinter blog.martine-lenders.eu die IP-Adresse 185.26.156.144 steht. Damit das alles funktioniert, wird diese Information bei einem sogenannten Domänenregistrar hinterlegt, welche meist eigene DNS-Server zur Verfügung stellen, wo man diese Information abrufen kann. Das Hinterlegen dieser Informationen wird tabellarisch gemacht. Für meinen Blog sieht der Eintrag bei meinem Domänenregistrar INWX zum Beispiel so aus:

Name Typ Wert TTL
blog.martine-lenders.eu A 185.26.156.144 3600

Der Typ A gibt hierbei an, dass es sich bei dem Wert um eine IP-Adresse handelt und TTL („Time to Live“, Lebenszeit) gibt an, wie lange, in Sekunden, die Information gültig ist. Eine TTL von 3600 gibt also an, dass der Wert eine Stunde gültig ist.

Ok, aber was ist jetzt mit Facebook?

Am Montag, dem 4. Oktober 2021, gegen 17:30 mitteleuropäischer Sommerzeit mehrten sich weltweit Meldungen, dass Anfragen an Facebook, Instagram und WhatsApp, sowie einige andere Dienste nicht mehr beantwortet wurde. Da auch der Domänenname facebook.com nicht zu einer IP-Adresse übersetzt werden konnte, nahm man zunächst an, dass es sich um ein DNS-Problem handle, die DNS-Einträge von Facebook also ihre Gültigkeit verloren hatten. Jedoch wurde auch schnell festgestellt, dass es auch Probleme bei WhatsApp, Instagram und Oculus gab, sowie an einigen Orten zunächst auch mit anderen Diensten, die nichts mit Facebook zu tun hatten. Instagram stach hier besonders heraus, da für diese Webseite nicht der Domänenregistrar von Facebook, sondern der von Amazon verwendet wurde. Es konnte sich also nicht um DNS handeln. Erste Hinweise, was wirklich passiert war, wurden durch einen Tweet von John Graham-Cumming gegeben. John Graham-Cumming ist der CTO von Cloudflare, einem der größten Content-Delivery-Netzwerke (diese Art von Netzen macht das Ausliefern der Briefe schneller).

John Graham-Cummings Tweet zu BGP-Änderungen von Facebooks ASN

In diesem zeigte er, dass 5 Minuten bevor DNS-Anfragen zu Facebook-Diensten nicht mehr möglich waren, eine große Anzahl an „BGP route withdrawals“ für Facebooks „ASN“. Hä? Was sind denn jetzt BGP und ASN schon wieder?

Mit dem Border Gateway Protocol (BGP) haben die wenigsten Menschen Kontakt. Selbst viele Systemadministratoren arbeiten nicht mit BGP direkt. Im Abschnitt über IP hatte ich zwar erklärt, dass man anhand der Adresse ablesen kann, in welchem Netzwerk sich ein Rechner befindet. Ich hatte aber nicht wirklich erklärt, wie das Netzwerk, von dem ein IP-Paket abgesendet wird weiß, wie man das Paket zu einem anderen Netzwerk sendet. Im Internet wird der Austausch dieser Informationen mit dem BGP umgesetzt (Ihr merkt, für jede Aufgabe im Internet gibt es ein eigenes Protokoll). Das BGP teilt das Internet in sogenannte autonome Systeme (AS) ein und gibt diesen eine Nummer, die Autonomous System Number (ASN). Ein autonomes System wäre zum Beispiel Euer Internetprovider, aber auch Facebook, da es eine sehr große Firma ist, ist ein eigenes autonomes System. Autonom heißt hier, das Netzwerke, die sich in einem autonomen System befinden, eigenständig sind. Die Administratoren eines autonomen Systems haben also die volle Entscheidungsgewalt über diese Netzwerke. Über BGP können autonome Systeme sich nun austauschen: Welches Präfix haben die Netzwerke in einem AS, welche anderen Präfixe sind über dieses AS erreichbar. Diese Art der Kommunikation zwischen gleichberechtigten AS wird als Peering bezeichnet. Möchte ein autonomes System nicht mehr, dass bestimmte IP-Pakete durch ihre Netzwerke gesendet werden, weil der Adressat ein Konkurrent ist oder weil eine Regierung möchte, dass die Einwohner ihres Landes kein YouTube mehr schauen dürfen, dann kann ein autonomes System ein sogenanntes Withdrawal, also einen Rückzug, für diese Präfixe senden.

Was nun am 4. Oktober 2021 passiert ist, ist, dass Facebook nicht nur für Präfixe anderer Netzwerke, sondern auch für seine eigene ASN ein BGP Withdrawal an seine Peers (also die AS mit denen Facebook gepeert über BGP war) gesendet hatte. Da das ganze automatisiert passiert, haben dann auch diese dann an ihre Peers diese Information weiter gesendet und diese dann wieder an ihre usw. Effektiv wurde Facebook also vom Internet abgeschnitten. Es ist zu vermuten, dass dies durch einen Automatisierungsprozess im BGP, den Facebook selbst im Mai 2021 eingeführt hatte zustande kam. Da beim Peering auch vereinbart wird, welche IP-Adressen über ein AS erreichbar sind, waren kurzzeitig einige Dienste, die nicht zu Facebook gehörten für einige Nutzer nicht erreichbar, da diese ursprünglich durch Facebooks AS geleitet wurden. Hier mussten einfach nur vom AS der Nutzer zunächst Wege über andere AS gefunden wurden. Danach waren diese Dienste wieder erreichbar.

Warum sah es nun also wie ein DNS-Problem aus? Und warum stand der Domänenname facebook.com kurzzeitig zum Verkauf? Das lag beides daran, dass Facebook sein eigener Domänenregistrar ist. Der dazugehörige DNS-Server ist also im Netzwerk von Facebook und war somit auch nicht mehr erreichbar. Da der DNS-Server nicht erreichbar war, konnten auch keine Namensanfragen zu IP-Adressen aufgelöst werden. Und durch die fehlende Erreichbarkeit des Domänenregistrars gab es auch niemanden, der Anspruch auf den Domänennamen facebook.com erhob. Dadurch bot der automatisierte Verkaufsprozess anderer Domänenregistrare diese dann bis zu einem manuellen Rückzug zum Verkauf an.

Und warum dauerte es nun so lange das zu Ganze richten? Heutzutage werden große Rechenzentren nicht mehr vor Ort, sondern durch Fernzugriff gewartet. Da nun aber das Rechenzentrum von Facebook über das Internet nicht mehr erreichbar war, mussten die Administratoren, die sich mit BGP auskennen (was, wie gesagt, in der Regel nicht viele tun) vermutlich erst einmal anreisen zum Rechenzentrum. Dann gab es wohl angeblich auch ein sehr neuzeitliches Problem, dass die Mitarbeitenden von Facebook angeblich wohl nicht einmal ins Gebäude kamen, da auch das Schließsystem im Netzwerk hing, somit nicht erreichbar war und daher kein Schlüssel erkannt werden konnte. Und dann musste wahrscheinlich auch erstmal analysiert werden, was genau das Problem war, damit sich nicht gleich beim Einschalten das Problem wiederholt und dann vorsichtig alles hochgefahren werden, sodass voneinander abhängige Systeme sich finden konnten.

Fazit

Was lehrt uns diese ganze Geschichte? Auf Twitter las ich, dass das mal wieder ein Beweis dafür ist, für die mangelnde Dezentralität des modernen Internets ist. Jedoch war es ja diesmal genau der Mechanismus, der für besagte Dezentralität zuständig ist, der zu dem Problem geführt hatte. Andererseits, lagen genau jene Dienste, die für viele Menschen für die alltägliche Kommunikation wichtig sind, in nur einem AS, also sehr zentralisiert. Es wäre daher ratsam, dass Facebook seine Dienste auf mehrere autonome Systeme verteilen würde oder, wie von der amerikanischen Handelsbehörde geplant, einige aufgekauften Dienste wieder loslassen sollte. Am BGP selbst gibt es, als Konsequenz dieses Vorfalls, denke ich nichts zu ändern. Nach einem ähnlichen Vorfall im Jahr 2008 in dem YouTube durch eine BGP-Fehlkonfiguration nicht erreichbar war, mussten größere Sicherungsänderungen am BGP vorgenommen werden. Dies war jedoch notwendig, da die Fehlkonfiguration in diesem Fall von Dritten und nicht YouTube selber ausging. Wenn sich ein AS jedoch selbst vom Internet abkapselt, helfen die besten Sicherungs- und Authentifizierungsmechanismen nichts.