Les pannes de Facebook et d’OVH : une explication non technique

Le 4 octobre, Facebook a subi une panne de près de six heures, aucun service de la société n’étant accessible. Le 13 octobre, c’était au tour d’OVH de subir une panne générale d’une heure. Dans les deux cas, une erreur humaine était en cause….

Dans cet article, nous exposerons de manière non technique les raisons de ces deux pannes générales et, pour les personnes souhaitant approfondir ces sujets, nous fournirons à la fin des articles plus techniques sur ces deux incidents.

Les 6 degrés de séparation

Connaissez vous la théorie des 6 degrés de séparation ?

Établie en 1929 par le hongrois Frigyes Karinthy, elle fait l’hypothèse que toute personne dans le monde peut être reliée à toute autre à l’aide d’au plus 5 intermédiaires (et donc 6 maillons au plus entre ces deux personnes).

En 1967, le psycho-sociologue Stanley Milgram testa aux Etats-Unis cette théorie : il envoya à 60 personnes vivant dans le Nebraska des lettres à faire suivre à une personne donnée vivant à une adresse connue dans le Massachusetts, uniquement en passant cette lettre en main propre à une connaissance personnelle, cette connaissance devant ensuite répéter le processus jusqu’à ce que la lettre arrive à destination. Bien entendu à chaque étape l’idée est de donner la lettre à la personne qu’on estime la plus capable de remplir cette mission.

Pour les lettres arrivant à destination le chiffre de 6 semblait se confirmer.

En pratique, cette étude souffrait de plusieurs biais, mais cette idée continue à être explorée et, en 2011, Facebook calcula que sur ses 721 Millions d’utilisateurs de l’époque chaque personne était en moyenne reliée à n’importe quelle autre par 4.74 relations (et 4.57 en 2016). En se limitant aux Etats-Unis, ce nombre tombe à 3.36.

Quel lien avec Facebook et OVH nous direz-vous ? Nous allons y venir !

Lorsque les personnes dans l’expérience de Milgram choisissaient la prochaine personne à qui transmettre la lettre, elles utilisaient les informations en leur connaissance pour choisir la “meilleure” personne : ainsi il semble plus pertinent de donner la lettre à un représentant de commerce amené à voyager plutôt qu’à celui qui n’a jamais quitté sa petite ville…sauf si celui-ci a par exemple un frère qui justement habite dans la ville cible et est actuellement en vacances dans sa petite ville natale !

On voit que les décisions dépendent de plusieurs facteurs et peuvent varier dans le temps (si ce frère est déjà reparti, la décision n’est plus la même).

Ces personnes faisaient du “routage” sans le savoir et c’est justement le routage la cause des problèmes de Facebook et d’OVH. Avant de pouvoir en dire plus, nous allons devoir introduire de manière non technique quelques concepts.

Adresse IP et DNS

Consulter un site internet consiste en fait à télécharger une page web hébergée sur le serveur distant du site que vous consultez. Lorsque notre ordinateur échange avec ce site,  il le fait en envoyant des messages à l’adresse IP de cet autre ordinateur qui est une sorte d’adresse postale. Cette adresse IP est une suite de 4 chiffres associée à chaque machine sur internet, par exemple 51.91.139.53 pour le serveur hébergeant cet article.

(ici comme par la suite nous serons volontairement imprécis, l’objectif étant de présenter des concepts, donc nous ne parlerons pas d’IPV4 / IPV6, d’IPs de réseau local, de NAT….)

Mais comment votre ordinateur sait-il que pour obtenir le contenu de cette page : https://www.netanswer.fr/des-releases-toutes-les-3-semaines c’est avec le serveur d’adresse 51.91.139.53 qu’il faut échanger ?

Imaginez que (dans un monde sans internet !) un américain vivant aux Etats-Unis ait besoin de connaître le numéro de téléphone du service des mariages de la mairie de Trifouilly-les-Oies en France. Il va :

1. Appeler le service des renseignements américain.

2. Le service des renseignements américain l’orientera vers le service de renseignements français.

3. le service de renseignements français l’orientera lui vers le standard téléphonique de la mairie qui pourra lui donner le numéro de téléphone demandé.

Pour notre site internet le principe est exactement le même ! 

1. Un serveur central est interrogé (l’équivalent des pages blanches et jaunes de la poste pour les adresses)

2. Il répondra que pour les pages en .FR il faut voir auprès de tel serveur en France.

3. Ce serveur l’orientera vers les serveurs ns0.cusae.com/ns1.cusae.com (nos serveurs DNS)

4. Nos serveurs DNS  pourront répondre de diriger vers le serveur d’adresse IP 51.91.139.53.

Il s’agit donc d’une structure pyramidale.

 

Routage

Nous savons donc que nous devons échanger avec 51.91.139.53…  Mais comment ? A qui doit-on s’adresser et comment déterminer le chemin le plus court passant de serveur en serveur pour aller de notre ordinateur à ce serveur destination ?

Il faut imaginer l’ensemble des machines dans le monde comme un gigantesque graphe de milliards de machines interconnectées mais chaque machine n’est directement reliée qu’à un petit nombre d’autres machines.

Une première idée serait de dire à tous ses voisins “pouvez vous dire à 51.91.139.53 que je voudrais le contenu de https://www.netanswer.fr/des-releases-toutes-les-3-semaines ?” chaque voisin transmettant alors ce message à tous ses voisins, puis leurs voisins aussi et ainsi de suite.

Le message finirait par arriver à destination mais ce ne serait pas très efficace, imaginez si tout le trafic mondial passait à chaque fois par votre ordinateur !

Petit aparté  :

C’est pourtant ce qui est fait en général sur un réseau local (celui de votre entreprise ou école par exemple) ou sur un réseau Wifi : lorsqu’un message arrive pour une des machines du réseau (par exemple la réponse d’un site web) celui-ci est envoyé à toutes les machines du réseau, à elles de filtrer les messages qui ne les concernent pas.

Vous comprenez pourquoi consulter des sites sécurisés (en https) est important car sans cela il suffit d’écouter le réseau pour lire l’ensemble de votre communication avec un site internet : mot de passe, numéro de carte….

C’est aussi pour cela que les réseaux Wifi publics sont considérés comme risqués.

Mais revenons à notre sujet et reparlons de l’expérience de Milgram mais cette fois-ci vous devez faire parvenir une lettre chaque jour au même destinataire (et vous avez des amis – et des amis d’amis – très compréhensifs prêts à vous aider chaque jour !). De plus, chaque personne dans la chaîne indiquera à la personne précédente combien de temps il lui a fallu pour passer la lettre à la prochaine personne.
Ainsi si le premier jour vous donnez la lettre à “Intermédiaire A” et que nous avons :

  • Vous => Intermédiaire A
  • Intermédiaire A  => Intermédiaire B en 15 jours
  • Intermédiaire B => Intermédiaire C en 1 jour
  • Intermédiaire C => Intermédiaire D en 4 heures
  • Intermédiaire D => destinataire en 1 jour

Alors vous avez toutes ces  informations à disposition.

Pour le 18 ème jour (car avant vous n’avez pas encore tous ces retours) vous réalisez que “Intermédiaire A” n’est peut-être pas très efficace (15 jours sur 18 au total c’est beaucoup) et vous décidez de passer par un autre ami et celle fois-ci la lettre ne met que 5 jours à arriver à destination.

Comme tous les intermédiaires applique le même raisonnement, le même type d’optimisation, la route utilisée par la lettre est de plus en plus efficace dans le temps !

Bien entendu vous (ou vos intermédiaires) pouvez avoir de nouveaux amis qui vous annoncent avoir de bons contacts avec certaines villes/pays ou bien des amis qui partent en vacances aussi la route optimale va varier dans le temps. Et si vous avez des lettres à envoyer à des endroits différents votre route optimale sera différente (peut-être que “Intermédiaire A” est beaucoup plus efficace pour une autre ville destination)

L’ensemble des règles que vous appliquez selon le destinataire final est votre “table de routage” et c’est ainsi que les machines dans le monde communiquent !

Autonomous Systems (AS) et Border Gateway Protocol (BGP)

En pratique plusieurs remarques peuvent être faites : 

  • Votre ordinateur personnel a beaucoup moins de choix de destinataires (en général vous n’aurez que votre fournisseur d’accès internet mais s’il est en panne vous pourriez passer par la connexion partagée de votre téléphone, changeant ainsi votre “table de routage” manuellement)
  • Le réseau internet est partagé en un ensemble de sous-réseaux, par exemple les machines française et japonaises ont un nombre limité de connexions. De la même manière l’ensemble des serveurs de Facebook ou ceux de votre fournisseur d’accès internet, peuvent être vu comme des sous-réseaux indépendants communiquant avec d’autres sous-réseaux.

Ainsi ces règles de routages peuvent être décomposées en deux types : 

  • Celles permettant de passer d’un sous-réseau (ce qu’on appelle Autonomous Systems ou AS) à un autre.
  • Celles permettant le routage au sein d’un Autonomous Systems et sous sa responsabilité.

Le protocole permettant aux différentes AS de communiquer entre eux est appelé BGP (pour Border Gateway Protocol) et cela leur permet de s’annoncer et d’échanger des règles de routage, ainsi un message pourrait être de dire “je suis Facebook et je gère cet ensemble d’IP donc envoyez moi ce qui est à leur destination”. 

Nous voilà prêt à expliquer les soucis de Facebook et d‘OVH ! 

Dans le cas de Facebook ils ont cessé de s’annoncer aux autres AS via BGP, plus personne ne savait donc comment communiquer avec “Facebook” !

Dans le cas d’OVH il s’agit d’une mise à jour erronée sur un routeur interne, erreur propagée à tous les routeurs de cet AS qui empêchait tout routage au sein de leur réseau : OVH était bien vu des autres AS mais une fois arrivé dans le réseau OVH, impossible de router vers la bonne machine !

Dans le cas de Facebook c’est comme s’ils étaient devenus l’Atlantide : on en a entendu parler mais pour leur envoyer du courrier c’est compliqué…
Et dans le cas d’OVH c’est comme si tous les postiers Français avaient perdu la mémoire : “hum Marseille oui c’est chez nous mais comment puis-je leur transmettre votre courrier ça…”

Dans les deux cas l’erreur était donc humaine et est malheureusement amenée à se reproduire : internet est très puissant, très décentralisé et capable de s’adapter en continu mais cela reste un système fragile à la merci d’une erreur de configuration qui se propage.

Il est même suspecté que certains pays pourraient abuser du système BGP (basé sur la confiance) pour router par leur infrastructure le trafic entre certains pays et donc plus facilement les espionner…

Pour approfondir : 

https://www.numerama.com/tech/747034-de-nombreux-sites-ne-fonctionnent-plus-ovh-semble-avoir-des-problemes.html

https://blog.cloudflare.com/october-2021-facebook-outage/

https://engineering.fb.com/2021/10/05/networking-traffic/outage-details/

https://www.techtarget.com/searchnetworking/definition/BGP-Border-Gateway-Protocol

 

UNE QUESTION ?