Facebook-Manager Santosh Janardhan ist zuständig für die technische Infrastruktur der Plattform. In einem ausführlichen Blogbeitrag erläutert er, was zu dem sechsstündigen Ausfall von Whatsapp, Facebook und Instagram geführt hat. Spoiler: Es war eine Kombination aus einem menschlichen Versagen und einem Software-Bug.
Learning: Facebooks Backbone-Netz dürfte überarbeitet werden
Die Geschichte des größten Dienstausfalls der jüngeren Geschichte ist eigentlich ganz einfach zu erzählen. Dazu müssen wir uns anschauen, wie das Facebook-Netzwerk aufgebaut ist. Es besteht laut Janardhan „aus Zehntausenden von Kilometern Glasfaserkabel, die den gesamten Globus durchziehen und alle unsere Rechenzentren miteinander verbinden.“
Diese Datenzentren gebe es wiederum in verschiedenen Formen. Manchen seien riesige Gebäude mit „Millionen von Rechnern“, andere seien eher kleine Einheiten, deren Aufgabe im Wesentlichen darin bestünde, das Facebook-Backbone-Netz mit dem breiteren Internet und den Nutzern der verschiedenen Plattformen des Unternehmens zu verbinden.
Dabei seien die Apps so konzipiert, dass sie sich bei der Datenanforderung an die physikalisch nächstgelegene Facebook-Einheit wenden. Die löst die Domainnamen auf und kümmert sich über das Backbone-Netz darum, eine Antwort aus einem der verarbeitenden Datenzentren zu erhalten und den Nutzenden zurückzumelden.
Unzulässiger Befehl wird nicht gestoppt, legt Backbone lahm
Der Datenverkehr zwischen all diesen Rechenzentren werde wiederum von Routern verwaltet, die dafür sorgen, dass alle ein- und ausgehenden Daten an die richtigen Stellen gesendet werden. Ebendiese Router müssten zu Wartungszwecken immer mal wieder abgeschaltet werden, um etwa ihre Software zu aktualisieren.
Genau an dieser Stelle nahm der Ausfall seinen Lauf. Während einer Routine-Wartung hatte ein Techniker einen Befehl erteilt, der die Verfügbarkeit der globalen Backbone-Kapazität hätte prüfen sollen. Da dazu die zu prüfenden Verbindungen unterbrochen werden müssen, hätte das Prüfwerkzeug den Befehl nicht zur Ausführung freigeben dürfen, was es aber doch tat. Und so machte sich ein Befehl, der in dieser Form niemals hätte erteilt werden dürfen, auf seinen unheilvollen Weg durch das Facebook-Backbone-Netz.
Dezentrales DNS führt zu völliger Unerreichbarkeit
Innerhalb weniger Minuten hatte sich das Facebook-Backbone mit seiner Vielzahl an kleinen Datenverarbeitungseinrichtungen komplett vom Internet entkoppelt, was nicht das schlimmste Problem gewesen wäre, wenn die Technik nicht ebendiese kleinen Einheiten zur DNS-Auflösung verwenden würde.
Das DNS, das Domain-Name-System, ist ein zentraler Pfeiler des Internets. Es kümmert sich um die Übersetzung der menschenlesbaren Eingabe www.facebook.com in eine maschinenlesbare IP-Adresse, indem es Tabellen führt, die die beiden Datenfelder miteinander verknüpfen. Damit fungiert es als Übersetzer, ohne den eine Verständigung nicht möglich ist.
Nun ist das DNS in den kleinen Einheiten des Facebook-Backbones so konzipiert, dass es sich selbst respektive seine sogenannten BGP-Routen, also die eingetragenen Wege zum Rechenzentrum, deaktiviert, wenn es seine eigenen Rechenzentren nicht mehr erreichen kann. Das ist absichtlich so angelegt, weil die Nichterreichbarkeit typischerweise eine schlechte Netzverbindung signalisiert und Facebook so erzwingt, dass sich eine andere Einheit mit besserer Anbindung um die Auflösung kümmert.
Jetzt aber war keine andere Einheit mehr verfügbar. Deshalb lief die Namensauflösung komplett ins Leere. Obwohl die DNS-Server in den dahinterliegenden Rechenzentren voll funktionsfähig blieben, konnten sie von außen nicht mehr erreicht werden. Zugleich konnten jedoch auch die kleineren Einheiten nicht mehr erreicht werden, weil sie sich schlicht selbst abgeschaltet hatten.
Jetzt hilft nur noch der Techniker vor Ort
Wir können uns das in etwa so vorstellen: Wir wählen uns über das Internet in unsere heimische Fritzbox ein, um eine Konfigurationsänderung vorzunehmen. Das tun wir auch, machen dabei aber einen Fehler, der die Fritzbox abschießt. Jetzt kann keiner aus dem Heimnetz mehr ins Internet und wir können nicht mehr aus der Ferne auf die Fritzbox. Wir müssen also hin und das Problem direkt an der Box lösen. Das beschreibt die Situation bei Facebook ganz gut.
Facebooks Techniker waren also von der Nutzung spezieller Tools, die den Fehler an sich hätten beheben können, ausgeschlossen und ein Remote-Zugriff war ebenfalls nicht mehr möglich. Die Lösung: Techniker müssen das Problem vor Ort angehen.
Konsequenterweise schickte das Unternehmen Techniker in die Rechenzentren, was in Pandemiezeiten schon logistisch eine Herausforderung ist und jedenfalls seine Zeit benötigt. Die Techniker sollten im Wesentlichen die Systeme neu starten, musste aber zunächst das Problem lösen, wie sie sich überhaupt Zugang zu den Einrichtungen verschaffen können. Denn Facebook hat physische Sicherheit und Systemsicherheit in den Datenzentren so ausgelegt, dass der Zutritt schwierig ist und die Änderung der Systeme noch mal schwieriger.
Kaum macht man’s richtig, geht’s
Als das gelungen war, konnten die Techniker das Backbone relativ umstandsfrei wieder in Betrieb nehmen. Zu beachten gab es lediglich noch den Umstand, dass wegen der zu erwartenden Stromaufnahme nicht das gesamte Backbone auf einen Schlag hochfahren durfte. Solche Szenarien würden indes ständig geübt, so Janardhan. Den Ausfall des Backbones hatte Facebooks Technik indes bislang nie geprobt. Das soll sich jetzt ändern.
Grundlegend vereinfachen will Janardhan den Backbone-Zugriff dabei aber nicht. Zwar sei „interessant“ gewesen, zu sehen, wie Facebooks Sicherheitsmaßnahmen „uns verlangsamten, als wir versuchten, uns von einem Ausfall zu erholen, der nicht durch böswillige Aktivitäten, sondern auf einen von uns selbst verursachten Fehler zurückzuführen war.“
Diese Verzögerungen sind für ihn indes ein Feature und kein Bug: „Ich glaube, dass ein Kompromiss wie dieser es wert ist – stark erhöhte Sicherheit im Alltag gegenüber einer langsameren Erholung von einem hoffentlich seltenen Ereignis wie diesem.“