Le temps d'une soirée, vous avez pu vous parler grâce aux ingénieurs de Facebook

05.10.2021 Écrit par Raphaël braud

Attaque d’un groupe de pirates pour une rançon ? Effondrement d’Internet ? Rupture d’un câble transatlantique ? Incendie d’un centre de données de Facebook ?

Les hypothèses allaient bon train hier soir pour expliquer la gigantesque panne de Facebook, Whatsapp, Instagram & Messenger.

Mais l’erreur était ailleurs, pour illustrer ce qu'il s'est passé, voici symboliquement ce que les ingénieurs de Facebook ont fait :

Ils ont en quelque sorte coupé les ponts numériques permettant d’accéder à leurs serveurs.

Pour comprendre comment on est arrivé là, il faut avoir un minimum de compréhension de la façon dont fonctionne le réseau Internet (et pas seulement le Web).

Imaginons un cas simple : vous voulez voir une vidéo hébergée sur Youtube (qui fonctionnait bien hier soir)

- Vous lancez l’application Youtube sur votre portable.

- Votre portable se connecte à votre réseau wifi.

- Le signal passe ensuite par votre box qui l’envoie sur le réseau téléphonique ou la fibre.

- Ce signal arrive dans le local technique de votre quartier et est identifié comme devant passer par votre opérateur Internet.

- L’opérateur Internet voit que vous souhaitez récupérer une vidéo de Youtube et le redirige vers les serveurs de Youtube.

- Ce faisant, il passe par les câbles transatlantiques pour atteindre enfin les serveurs de Youtube.

- Youtube récupère le contenu de la vidéo et vous l’envoie.

- Le signal de réponse refait le chemin dans l’autre sens.

- Et la vidéo démarre chez vous… tout ça en quelques millisecondes.

Ce cas d’usage illustre certaines caractéristiques du réseau Internet :

- Il n’y a pas un fil continu qui relie votre ordinateur aux serveurs de Youtube mais au contraire, le signal passe d’équipements en équipements, de type de réseau (cuivre, optique, wifi, satellite, …) en type de réseau.

- Le signal “sait” où il veut aller.

- Et les équipements intermédiaires “savent” quelle est la route pour amener le signal à bon port.

- Ça va TRÈS vite…

Comment les équipements savent-ils ?

Pour la destination, c’est le rôle des serveurs DNS :

- Un matériel ne sait pas où se trouve un nom de domaine donné : il connait seulement des chiffres.

- Pour Youtube comme tout autre nom de domaine, chaque serveur dispose de chiffres qui leur sont exclusifs et qui les identifient. C’est ce que l’on appelle l’adresse IP.

- Il existe conceptuellement un “gros tableau” mondial qui définit la correspondance entre chaque nom de domaine et son adresse IP et ce tableau : ce sont les entrées DNS.

Pour la route, c’est le rôle du protocole BGP :

- Pour faire simple, chaque matériel sait quels sont les autres matériels avec lesquels il est directement connecté et ceux qui leur sont connectés localement, mais ne sait pas forcément ce qui se passe après.

- Du coup, quand un signal arrive avec une destination donnée (une adresse IP donc), le matériel choisit entre 2 solutions :

Soit il connait la route par laquelle doit passer le signal et il le fait transiter par cette route.

Soit il ne la connait pas et il transfère le signal à un autre matériel en partant du principe que cet autre matériel aura une meilleure connaissance (et oui, parfois aussi, les matériels électroniques se repassent la patate chaude…).

- Pour la vitesse, pas de secrets : il n’y a pas d’intervention humaine, ce sont les matériels qui “discutent” entre eux en permanence pour mettre à jour leurs données, ce sont des systèmes autonomes (Autonomous System). Cette autonomie est essentielle, car le réseau Internet est protéiforme et en perpétuelle évolution.

Mais de quoi discutent-ils ? Eh bien essentiellement de leurs informations sur les IPs qu’ils connaissent et des routes à emprunter pour y arriver.

Cette information ne vient pas de nulle part : à la base ce sont les ingénieurs qui initialisent ces informations ou les mettent à jour.

Et nous arrivons maintenant à l’explication de la panne de Facebook :

Hier, une mise à jour “malheureuse” a été faite sur les règles de routage BGP pour dire en résumé rapide : “il n’y a plus de route vers nos serveurs”.

Puis, magie de l’autonomie, cette information s’est propagée de matériel en matériel jusqu’à être connue de l’ensemble des matériels du monde entier en conduisant au final plusieurs milliards d’utilisateurs à être privés de leur(s) réseau(x) favori(s).

Cette mise à jour n’était probablement pas volontaire, elle est plus probablement due à un clic malheureux sur un bouton de “remise à zéro des chemins”.

Fun fact : cette disparition des routes vers le serveur a également bloqué les systèmes d’accès physiques (portes avec carte magnétique) aux machines de Facebook retardant d’autant la résolution de la panne.

Est-ce que ça peut vous arriver ?

Directement, non. À moins que vous ne soyez le responsable informatique d’une société de plusieurs millions d’utilisateurs et que vous ayez besoin de gérer des dizaines de machines et de routeurs (c’est le nom du matériel qui sert à guider le signal), vous n’avez pas à vous soucier du routage et du protocole BGP pour permettre aux requêtes d’arriver jusqu’à vos serveurs.

C’est le rôle de votre hébergeur.

Pour votre site Web, les mises à jour de règles de routage ne sont pas fréquentes donc les erreurs très peu probables.

Qu’est-ce que ça nous apprend ?

Que les DNS et les routeurs sont des éléments extrêmement importants du réseau Internet et qu’un défaut peut mettre à mal même les plus grands sites Web et sociétés.

À ce titre, les accès à la configuration DNS doivent être réservés à des techniciens et ingénieurs - même si, comme on l’a vu, ils peuvent faire des erreurs.

Toute erreur DNS est critique et se propage progressivement de matériel en matériel, cf la fameuse “propagation DNS” que l’on trouve toujours trop lente…

Que puis-je faire pour éviter que ça se produise pour mon site Web ou mon application ?

On l’a vu, c’est à la base une erreur humaine qui a conduit au blackout de Facebook.

Ce type d’erreur se produira à nouveau, voici donc quelques conseils pour empêcher ou limiter autant que possible la casse :

- Limitez les accès à vos règles DNS et machines physiques MAIS en vous assurant néanmoins que plusieurs personnes aient la connaissance ou l’accès en cas d’absence de l’une d’entre elles.

- Gardez une copie de vos données et code sur des serveurs d’hébergeurs différents. Elles vous permettront de rétablir le service quand les problèmes seront résolus.

- Travaillez avec des professionnels reconnus (nous ?) qui sauront vous aider.

7 j'aime