Résumé
- Une commande de maintenance destinée à mesurer la capacité du backbone mondial a coupé toutes les liaisons du backbone, et l'outil d'audit chargé d'arrêter ce type de commande ne l'a pas arrêtée, à cause d'un bug dans l'outil lui-même.
- Les serveurs DNS faisant autorité ont ensuite agi exactement comme prévu — retirer leurs annonces BGP dès qu'ils ne pouvaient plus joindre les centres de données — transformant une panne de connectivité interne en perte totale de joignabilité depuis l'extérieur.
- La reprise est passée par des portes verrouillées plutôt que par une console distante : l'accès primaire et l'accès hors bande étaient tombés tous les deux.
La commande n'avait qu'un objectif : savoir quelle capacité du backbone mondial de Facebook restait disponible. Elle a supprimé le backbone. Le compte rendu de l'entreprise est d'une franchise rare sur les deux moitiés de la phrase. Pendant une tâche de maintenance de routine, « a command was issued with the intention to assess the availability of global backbone capacity, which unintentionally took down all the connections in our backbone network, effectively disconnecting Facebook data centers globally » (Engineering at Meta).
Il faut lire la phrase suivante deux fois, car c'est elle qui porte la responsabilité : « Our systems are designed to audit commands like these to prevent mistakes like this, but a bug in that audit tool prevented it from properly stopping the command. »
La commande n'a pas été introduite en fraude. Personne n'est décrit comme ayant contourné une protection. Elle a suivi le circuit, et ce circuit contenait un composant dont la raison d'être était de dire non ; ce composant avait un défaut, et le non n'est jamais arrivé. Facebook disposait d'un contrôle. Il ne disposait pas du contrôle qu'il croyait avoir.
Les documents examinés pour cet article ne comprennent ni le texte de la commande, ni son périmètre, ni l'identité de qui l'a validée : l'écart entre ce que l'outil devait juger et ce qu'il a réellement jugé n'est donc pas mesurable de l'extérieur. Ce qui se mesure, c'est le résultat.
La suite s'aggrave vite : « This change caused a complete disconnection of our server connections between our data centers and the internet. And that total loss of connection caused a second issue that made things worse. »
Ce second problème était un mécanisme de sécurité faisant exactement son travail. « To ensure reliable operation, our DNS servers disable those BGP advertisements if they themselves can not speak to our data centers, since this is an indication of an unhealthy network connection. » Le backbone disparu, plus aucun site ne pouvait parler aux centres de données : « the entire backbone was removed from operation, making these locations declare themselves unhealthy and withdraw those BGP advertisements ».
La phrase de conclusion tient en une ligne et résume toute l'affaire : « The end result was that our DNS servers became unreachable even though they were still operational. »
Opérationnels et injoignables. Le retrait n'était ni une erreur de configuration ni un effet de bord imprévu. La règle s'est exécutée. Or cette règle encode une hypothèse — un serveur DNS qui ne joint plus les centres de données constate une panne locale, une liaison malade, quelque part — et le 4 octobre, tous les sites constataient le même fait catastrophique. Chacun a jugé correctement, localement. La somme de ces jugements corrects, c'est la disparition de Facebook de la table de routage mondiale.
Puis la reprise a dû se faire à la main. « Our primary and out-of-band network access was down, so we sent engineers onsite to the data centers to have them debug the issue and restart the systems. But this took time, because these facilities are designed with high levels of physical and system security in mind. They're hard to get into, and once you're inside, the hardware and routers are designed to be difficult to modify even when you have physical access to them. »
Ce paragraphe décrit deux bonnes conceptions qui se contrarient. La sécurité physique d'un centre de données existe pour empêcher un inconnu de toucher un routeur ; le 4 octobre, elle a aussi ralenti ceux qui devaient en toucher un. Quant au canal hors bande — la réponse classique à la perte d'accès au plan de contrôle —, il partageait le sort du système qu'il devait secourir. Un chemin de reprise qui dépend du réseau qu'il répare n'est pas un chemin de reprise. C'est un espoir accompagné d'une procédure.
De l'extérieur, on voyait la forme sans voir la cause. Cloudflare a mesuré la disparition et le retour : sur son résolveur 1.1.1.1, le nom facebook.com « stopped being available at around 15:50 UTC and returned at 21:20 UTC », avec une activité BGP revenue vers 21:00 UTC et un pic à 21:17 UTC (Cloudflare). Meta ne donne aucune durée ; la fenêtre d'environ cinq heures et demie est une mesure de Cloudflare, pas un chiffre de l'opérateur. Cette distinction compte plus qu'elle n'en a l'air : elle sépare ce qui peut être établi de façon indépendante — les routes ont disparu puis sont revenues — de ce qui ne peut pas l'être, à savoir si le contrôle défaillant avait déjà été testé.
Voilà ce qu'il faut retenir pour toute organisation qui fait passer ses changements par du logiciel. Un outil d'audit est un contrôle, et un contrôle ne vaut que par la preuve qu'il fonctionne. Cette preuve n'est pas un document de conception. C'est un test qui soumet à l'outil une commande du type qu'il existe pour bloquer, et qui montre qu'elle a été bloquée ; un exercice délibéré prouvant qu'en cas de doute l'outil refuse au lieu de laisser passer en silence ; et un signal suffisamment fort pour qu'un outil qui cesse de fonctionner soit lui-même traité comme un incident.
Aucun des trois n'apparaît dans les documents examinés ici.
Les ingénieurs de Facebook ont désormais écrit noir sur blanc que leur couche de vérification portait un défaut. C'est plus de franchise que la plupart des opérateurs n'en montrent. C'est aussi tout le problème : la déclaration est venue après la panne, de l'organisation qui possédait à la fois la commande et le contrôle. Les rouages d'un outil d'audit sont invisibles pour tous ceux qui sont à l'extérieur de l'entreprise ; l'assurance qu'il procure est donc, en pratique, une promesse. Les promesses, c'est bien. Les promesses vérifiées, c'est mieux.
Ce qui ferait passer ce dossier d'un contrôle non vérifié à un contrôle réparé, c'est un document daté, précis et contrôlable par quelqu'un qui n'est pas l'opérateur : les tests de l'outil d'audit ont été réécrits après l'incident, le chemin défaillant refuse désormais par défaut, et le changement a été exercé, pas seulement annoncé. Le matériel examiné pour cet article se limite à la note d'ingénierie de Meta du 5 octobre 2021 et à la mesure indépendante de Cloudflare ; ni l'une ni l'autre ne contient la commande, le rapport de défaut ou un plan de remédiation daté.
Cet article décrit donc ce que la durabilité exigerait, non qu'elle soit acquise.
Briefing des membres
Contexte approfondi de la tendance
Connectez-vous avec le bon niveau d'adhésion pour débloquer le briefing complet et les notes de source.
Cercle stratégique
Un briefing quotidien dans votre langue, construit à partir de changements que nous avons vérifiés.
Rejoindre pour USD 20/moisAnnulez à tout moment.
Postuler à Leadership Alliance
Les reportages publics restent gratuits. La recherche membre, le briefing quotidien et le forum nécessitent un abonnement.






