Tras más de 6 horas sin Facebook, WhatsApp e Instagram, Cloudflare ha sido la primera en explicar lo sucedido, por qué una explicación muy larga y técnica, hasta el punto que lo han redactado dos ingenieros de la compañía.
Una explicación detallada de este tipo nunca está demás, y es que este problema ha generado una pérdida de más de 1.000 millones de dólares a Facebook, que es dueña de la aplicación de mensajería instantánea WhatsApp y la red social líder en postureo, Instagram.
La información muy resumida:
Hoy, a las 16:51 UTC, hemos abierto una incidencia interna titulada «Facebook DNS lookup returning SERVFAIL» porque nos preocupaba que algo anduviera mal con nuestro solucionador DNS 1.1.1.1. Pero cuando estábamos a punto de publicar el incidente en nuestra página de Estado Público (de los servicios), nos dimos cuenta de que estaba ocurriendo algo más grave.
Las redes sociales estallaron rápidamente, informando de lo que nuestros ingenieros también confirmaron rápidamente. Facebook y sus servicios afiliados, WhatsApp e Instagram, estaban, de hecho, caídos. Sus nombres DNS dejaron de resolverse y las IPs de sus infraestructuras eran inalcanzables. Era como si alguien hubiera «tirado de los cables» de sus centros de datos de una vez y los hubiera desconectado de Internet.
¿Cómo es posible?
Te presentamos al BGP
BGP son las siglas de Border Gateway Protocol. Es un mecanismo para intercambiar información de enrutamiento entre sistemas autónomos (AS) en Internet. Los grandes routers que hacen que Internet funcione tienen listas enormes y constantemente actualizadas de las posibles rutas que se pueden utilizar para entregar cada paquete de red a sus destinos finales. Sin el BGP, los routers de Internet no sabrían qué hacer, e Internet no funcionaría.
Internet es, literalmente, una red de redes, y está unida por BGP. BGP permite que una red (por ejemplo, Facebook) anuncie su presencia a otras redes que forman Internet. Cuando decimos que Facebook no anuncia su presencia, los ISP y otras redes no pueden encontrar la red de Facebook y, por tanto, no estará disponible.
Cada una de las redes tiene un ASN: un número de sistema autónomo. Un sistema autónomo (AS) es una red individual con una política de enrutamiento interna unificada. Un AS puede originar prefijos (decir que controla un grupo de direcciones IP), así como prefijos de tránsito (decir que sabe cómo llegar a grupos específicos de direcciones IP).
El ASN de Cloudflare es AS13335. Cada ASN necesita anunciar sus rutas de prefijo a Internet utilizando BGP; de lo contrario, nadie sabrá cómo conectarse y dónde encontrarnos.
El inicio del caos
A las 16:58 UTC nos dimos cuenta de que Facebook había dejado de anunciar las rutas de sus prefijos DNS. Eso significaba que, al menos, los servidores DNS de Facebook no estaban disponibles. Debido a esto, el solucionador DNS 1.1.1.1 de Cloudflare ya no podía responder a las consultas que pedían la dirección IP de facebook.com o instagram.com.
Hacemos un seguimiento de todas las actualizaciones y anuncios de BGP que vemos en nuestra red global. A nuestra escala, los datos que recopilamos nos dan una visión de cómo está conectada Internet y hacia dónde debe fluir el tráfico desde y hacia cualquier lugar del planeta.
Un mensaje BGP UPDATE informa a un router de cualquier cambio que haya realizado en un anuncio de prefijo o retira por completo el prefijo. Podemos verlo claramente en el número de actualizaciones que recibimos de Facebook al comprobar nuestr time-line de la base de datos BGP temporales. Normalmente este gráfico es bastante tranquilo: Facebook no hace muchos cambios en su red minuto a minuto.
Pero alrededor de las 15:40 UTC vimos un pico de cambios de enrutamiento de Facebook. Fue entonces cuando empezaron los problemas.
Si los servidores de nombres son inalcanzables o no responden por alguna otra razón, entonces se devuelve un SERVFAIL, y el navegador emite un error al usuario.
Debido a que Facebook dejó de anunciar sus rutas de prefijo DNS a través de BGP, nuestros solucionadores DNS y los de todos los demás no tenían forma de conectarse a sus servidores de nombre. En consecuencia, 1.1.1.1, 8.8.8.8 y otras DNS públicas importantes comenzaron a emitir (y a almacenar en caché): respuestas SERVFAIL.
Pero eso no es todo. Ahora el comportamiento humano y la lógica de las aplicaciones entran en acción y provocan otro efecto exponencial. Se produce un tsunami de tráfico DNS adicional. Así que ahora, debido a que Facebook y sus sitios son tan grandes, tenemos DNS por todo el mundo que manejan 30 veces más consultas de lo habitual, lo que puede causar problemas de latencia y tiempo de espera a otras plataformas (por ejemplo, Telegram se ralentizó).
Esto ocurre en parte porque las aplicaciones no aceptan un error como respuesta y empiezan a reintentar, a veces de forma agresiva, y en parte porque los usuarios finales tampoco aceptan un error como respuesta y empiezan a recargar las páginas, o a matar y relanzar sus aplicaciones, a veces también de forma agresiva.