La ca�da de Internet por causa de BGP

Como todos sabemos (o los del rubro networking) toda la red de Internet esta funcionando gracias al protocolo BGP (Border Gateway Protocol) que es el encargado de mantener las tablas de ruteos actualizadas para saber donde y como tiene que viajar un paquete hasta llegar a destino.

Hace un tiempo vimos lo que le paso a Pakistan cuando tratando de bloquear Yotube en la red de ese país, un mal backhole puesto e intercambio de ruta hacía un peer que no se debía hacer paso a generar un gran problema mundial.

El mes pasado (15 de febrero) paso algo similar que si bien fue bastante difundido en algunos foros (entre ellos MikroTik) esperé para escribir de ello; y lo que sucedió fue que un proveedor de internet checo llamado Supronet (AS47868) estubo haciendo experimentos con su ingenería de tráfico y con los AS (Sistema Autónomo) path prepending.

Entrando en una pequeña reseña sobre el protocolo e internet, cada sistema autónomo (AS) que puede ser una red de un proveedor de internet, hosting, housing, universidad, gobierno, etc, hace intercambio con otro AS a través de un peer y se hacen intercambio de las tablas de ruteos, así de esta manera se tiene una lista de ruteo actualizada. Hay una explicación muy sencilla, aunque en inglés, pero que explica de que manera se hacen los peering.

Supongamos que tenemos 2 accesos a internet y estamos usando nuestro propio AS, a su vez hacemos intercambio de peer con nuestros proveedores. Si nosotros deseamos tener uno de los proveedores de backup (fail over), lo que hacemos es agregar en los anuncios del peer la repetición de nuestro AS, con esto le estaremos dando «mas peso» a ese peer y se utilizará el otro como principal hasta que se caiga.

El promedio del path length en internet es alrededor de 4, es decir, que en promedio se pasa por 4 AS hasta llegar hacia algún destino. Lo que sucedió con este proveedor AS47868 ,que agrego su path repetidamente, hasta 252 veces, y termino con un AS path de 256, lo cual es un número muy extraño teniendo en cuenta que el promedio como dijimos es 4.

Lo que resulto es que este proveedor, que estaba publicando un solo bloque (94.125.216.0/21), fue replicando dicho anuncio a su peer, que este a su vez también lo hizo con otros AS y así causo una gran inestabilidad en internet. Tener en cuenta que el intercambio se hace entre peer y se supone cierta confianza entre ellos.

Para tomar una dimensión de lo rápido que se propago esto, es que un solo anuncio realizado en el ISP Checo hacia su peer, solo le tomo 8 minutos para llegar al pico de 107.780 actualizaciones  por segundo a nivel global. Como se puede observar en el siguiente gráfico algunos paises estuvieron mas afectados por este problemas que otros, en el caso de Argentina, el impacto fue minimo.

Ahora hay un monitor de AS Path maximo, en el cual se puede llegar a saber cuales son los valores mas grandes publicados en el día.

Tengo pendiente escribir un artículo sobre un bug que existe en la implementación del BGP en MikroTik y en algunas versiones del sistema operativo de Cisco, en el cual si no se tiene cuidado o se toman las medidas necesarias se puede llegar a generar una inestabilidad mundial como la anteriormente descripta, pero esperaré a que haya algún anunció oficial sobre la resolución de este problema por ambas empresas de routers.

Si quieren leer un poco mas sobre el problema sucedido pueden hacerlo, en este sitio en español o en ingles en BGPMon y una excelente explicación técnica en Renesys.

ACTUALIZACIÓN: encontré una descripción del problema en el  bug de BGP entre Cisco y Mikrotik.

ACTUALIZACION II: Un amigo Ariel ha escrito en su blog una excelente descripción en español del tema.