Première rédaction de cet article le 16 janvier 2015
Dernière mise à jour le 22 janvier 2015
Ce matin, l'hébergeur Oxalide a été en panne pendant environ une heure et demie, entraînant l'indisponibilité d'un grand nombre de sites Web, notamment de la presse française.
C'est ainsi que 20 Minutes, l'Express, le Parisien, Slate, Mediapart, Marianne, FranceInfo (mais pas Charlie Hebdo) ont été injoignables. Comme tous les zexperts, je ne sais pas ce qui s'est passé donc je vais me contenter de dire ce que j'ai observé.
Plusieurs de ces sites Web renvoyaient un message « 504 Gateway Time-out - nginx » qui est le message typique de CloudFlare lorsque leurs relais n'arrivent pas à joindre le site réel (CloudFlare n'est pas un CDN, ils n'ont pas une copie du site Web, ils servent juste d'écran, notamment en cas de dDoS).
Oxalide avait arrêté d'envoyer des annonces
BGP, le protocole qui sert à annoncer au
reste de l'Internet qu'on est joignable. (Pourquoi ? Ne me posez
pas la question, j'ai dit que je n'en savais rien.) Voici le
looking glass de
Hurricane Electric, http://lg.he.net
, pendant la panne, le
préfixe IP
91.208.181.0
est inconnu :
Voyons les annonces BGP pendant la période de la panne. On utilise pour cela les données de RouteViews. Elles sont en binaire, au format MRT (RFC 6396), il faut les transformer en texte avec bgpdump. On sait d'après Twitter l'heure approximative de la panne, on va donc récupérer le fichier, le transformer en texte et le fouiller :
% wget ftp://archive.routeviews.org/route-views.linx/bgpdata/2015.01/UPDATES/updates.20150116.0845.bz2 % bgpdump updates.20150116.0845 > updates.20150116.0845.txt
Et explorons ce fichier, avec un
éditeur ordinaire. On voit bien la panne. L'annonce du préfixe
91.208.181.0/24
a commencé à être perturbée vers
08:51:01 UTC. À noter qu'il existe deux types
de mise à jour BGP dans un message, l'annonce de nouvelles routes
(ANNOUNCE
) et le retrait de routes qui ne sont
pus bonnes (WITHDRAW
). Paradoxalement, la
disparition d'une route (ici celle vers
91.208.181.0/24
) se traduit d'abord par des
ANNOUNCE
avant d'avoir le premier
WITHDRAW
. En effet, les routeurs BGP tentent de
passer par un autre chemin et relaient d'abord les autres informations
qu'ils ont, avant de renoncer et de retirer la route. Une panne se
signale donc d'abord par une floppée
d'ANNOUNCE
. La première était :
TIME: 01/16/15 08:51:01 TYPE: BGP4MP/MESSAGE/Update FROM: 195.66.224.21 AS6939 TO: 195.66.225.222 AS6447 ORIGIN: IGP ASPATH: 6939 8218 47841 NEXT_HOP: 195.66.224.21 ANNOUNCE 91.208.181.0/24
À 08:51:01 (UTC), le routeur 195.66.224.21
transmet à son pair 195.66.225.222
une nouvelle
route vers 91.208.181.0/24
, car il vient de
perdre celle qu'il connaissait avant. Dans les secondes qui suivent,
des tas d'autres routeurs font pareil avant de se résigner, et de
retirer la route :
TIME: 01/16/15 08:51:10 TYPE: BGP4MP/MESSAGE/Update FROM: 195.66.224.175 AS13030 TO: 195.66.225.222 AS6447 WITHDRAW ... 91.208.181.0/24 ...
Attention au passage lorsque vous lisez l'attribut
ASPATH
(chemin d'AS), il se
lit de droite à gauche, l'AS d'origine est 47841 (Oxalide).
Une heure et demie après, la route vers
91.208.181.0/24
réapparait (avec les deux autres
préfixes IPv4 habituels d'Oxalide) :
TIME: 01/16/15 10:20:13 TYPE: BGP4MP/MESSAGE/Update FROM: 195.66.224.51 AS6453 TO: 195.66.225.222 AS6447 ORIGIN: IGP ASPATH: 6453 1299 47841 NEXT_HOP: 195.66.224.51 ANNOUNCE 95.131.136.0/21 146.185.40.0/21 91.208.181.0/24
En regardant le looking glass, on voit que tout est revenu :
Enfin, presque, Emile Aben me fait remarquer
qu'IPv6 a mis plus de temps, le préfixe
2a02:c70::/32
n'est revenu que vers 11:15
UTC.
Des articles sur cette panne :
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)