El protocolo de puerta de enlace de frontera (BGP) es el protocolo de enrutamiento de Internet. De la misma manera que una oficina de correos procesa la correspondencia, el BGP elige las rutas más eficientes para entregar el tráfico de Internet.
Después de leer este artículo podrás:
Contenido relacionado
Suscríbase a theNET, el resumen mensual de Cloudflare sobre las ideas más populares de Internet.
Copiar enlace del artículo
El BGP es el servicio postal de Internet. Cuando alguien echa una carta en un buzón, el servicio de correos procesa esa correspondencia y elige una ruta rápida y eficiente para entregar esa carta a su destinatario. Del mismo modo, cuando alguien envía datos a través de Internet, el BGP se encarga de buscar todas las rutas disponibles por las que podrían viajar los datos y elegir la mejor, lo que suele significar saltar entre sistemas autónomos.
El BGP es el protocolo que hace que Internet funcione permitiendo el enrutamiento de datos. Cuando un usuario de Singapur carga un sitio web con servidores de origen en Argentina, el BGP es el protocolo que permite que esa comunicación se produzca de forma rápida y eficaz.
Internet es una red de redes. Está dividida en cientos de miles de redes más pequeñas conocidas como sistemas autónomos (AS). Cada una de estas redes es básicamente un gran conjunto de enrutadores gestionados por una única organización.
Si seguimos pensando en el BGP como el servicio postal de Internet, los AS son como las sucursales individuales de correos. Una ciudad puede tener cientos de buzones, pero el correo de esos buzones debe pasar por la sucursal postal local antes de ser encaminado a otro destino. Los enrutadores internos de un AS son como los buzones. Reenvían sus transmisiones salientes al AS, que a su vez utiliza el enrutamiento del BGP para hacer llegar estas transmisiones a sus destinos.
El diagrama anterior ilustra una versión simplificada del BGP. En esta versión solo hay seis AS en Internet. Si el AS1 necesita enrutar un paquete al AS3, tiene dos opciones diferentes:
Saltar a AS2 y luego a AS3:
AS2 → AS3
O saltar a AS6, luego a AS5, AS4 y por último a AS3:
AS6 → AS5 → AS4 → AS3
En este modelo simplificado, la decisión parece sencilla. La ruta AS2 requiere menos saltos que la ruta AS6 y, por tanto, es la más rápida y eficiente. Ahora imagina que hay cientos de miles de AS y que el recuento de saltos es solo una parte de un complejo algoritmo de selección de rutas. Esa es la realidad del enrutamiento del BGP en Internet.
La estructura de Internet cambia constantemente, ya que surgen nuevos sistemas y los existentes dejan de estar disponibles. Por ello, cada AS se debe mantener al día con la información relativa a las nuevas rutas, así como a las rutas obsoletas. Esto se hace mediante sesiones de emparejamiento, en las que cada AS se conecta a los AS vecinos con una conexión TCP/IP con el fin de compartir información de enrutamiento. Con esta información, cada AS está preparado para enrutar adecuadamente las transmisiones de datos salientes que provienen del interior.
Aquí es donde parte de nuestra analogía se desmorona. A diferencia de las sucursales de correos, los sistemas autónomos no forman parte de la misma organización. De hecho, a menudo pertenecen a empresas que compiten entre sí. Por esta razón, las rutas BGP a veces tienen en cuenta consideraciones comerciales. Los AS a menudo se facturan entre sí para transportar el tráfico a través de sus redes, y el precio del acceso se puede incluir en la ruta que se seleccione finalmente.
Los AS suelen pertenecer a proveedores de servicios de Internet (ISP) u otras grandes organizaciones, como empresas tecnológicas, universidades, agencias gubernamentales e instituciones científicas. Cada AS que desee intercambiar información de enrutamiento debe tener un número de sistema autónomo (ASN) registrado. La Autoridad para la asignación de números de Internet (IANA) asigna los ASN a los Registros regionales de Internet (RIR), que a su vez los asignan a los ISP y a las redes. Los ASN son números de 16 bits entre 1 y 65.534 y de 32 bits entre 131.072 y 4.294.967.294. Desde 2018, hay aproximadamente 64.000 ASN en uso en todo el mundo. Estos ASN solo son necesarios para el BGP externo.
Las rutas se intercambian y el tráfico se transmite por Internet utilizando el BGP externo (eBGP). Los sistemas autónomos también pueden utilizar una versión interna del BGP para enrutar a través de sus redes internas, lo que se conoce como el BGP interno (iBGP). Hay que tener en cuenta que el uso del BGP interno NO es un requisito para utilizar el BGP externo. Los sistemas autónomos pueden elegir entre varios protocolos internos para conectar los enrutadores de su red interna.
El BGP externo es como un envío internacional. Hay ciertas normas y directrices que hay que seguir cuando se realizan envíos internacionales. Una vez que ese correo llega al país de destino, tiene que pasar por el servicio de correos local del país de destino para llegar a su destino final. Cada país tiene su propio servicio de correos interno que no necesariamente sigue las mismas pautas que los de otros países. Del mismo modo, cada sistema autónomo puede tener su propio protocolo de enrutamiento interno para enrutar los datos dentro de su propia red.
En general, BGP intenta encontrar la ruta más eficiente para el tráfico de la red. Sin embargo, como ya se ha indicado, el recuento de saltos no es el único factor que utilizan los enrutadores BGP para encontrar esas rutas. BGP asigna atributos a cada ruta y estos atributos ayudan a los enrutadores a seleccionar una ruta cuando hay varias opciones. Muchos enrutadores permiten a los administradores personalizar los atributos para tener un control más granular sobre cómo fluye el tráfico en sus redes. Algunos ejemplos de atributos BGP incluyen:
También existen otros muchos atributos BGP. Todos estos atributos están ordenados por prioridad para los enrutadores BGP — de modo que, por ejemplo, un enrutador BGP comprueba primero qué ruta tiene el peso más alto, luego comprueba la preferencia local, luego comprueba si el enrutador originó la ruta, etc. (Así, si todas las rutas recibidas tienen el mismo peso, el enrutador selecciona en su lugar una ruta basada en la preferencia local).
En 2004, un ISP turco llamado TTNet anunció de manera accidental rutas BGP incorrectas a sus vecinos. Estas rutas afirmaban que el propio TTNet era el mejor destino para todo el tráfico de Internet. A medida que estas rutas se fueron extendiendo a más sistemas autónomos, se produjo una interrupción masiva que originó una crisis de un día de duración en la que muchas personas de todo el mundo no pudieron acceder a una parte o a la totalidad de Internet.
Asimismo, en 2008, un ISP paquistaní intentó utilizar una ruta del BGP para impedir que los usuarios paquistaníes visitaran YouTube. El ISP anunció entonces por error estas rutas con sus AS vecinos y la ruta se extendió con rapidez por la red del BGP de Internet. Esta ruta envió a los usuarios que intentaban acceder a YouTube a un callejón sin salida, lo que provocó que no se pudiera acceder a YouTube durante varias horas.
Otro incidente en esta línea ocurrió en junio de 2019, cuando una pequeña empresa de Pensilvania se convirtió en la ruta preferida para los enrutadores a través de la red de Verizon, provocando que gran parte de Internet dejara de estar disponible para los usuarios durante varias horas.
Estos son ejemplos de una práctica denominada secuestro del BGP, que no siempre ocurre de forma accidental. En abril de 2018, unos atacantes crearon a propósito rutas BGP erróneas para redirigir el tráfico que estaba destinado al servicio DNS de Amazon. Los atacantes pudieron robar más de 100.000 dólares en criptomoneda redirigiendo el tráfico hacia ellos mismos.
El secuestro de BGP se puede utilizar para diversos tipos de ataques:
Incidentes como este pueden ocurrir porque la función de compartir rutas de BGP se basa en la confianza, y los sistemas autónomos confían implícitamente en las rutas que se comparten con ellos. Cuando los números de sistemas del mismo nivel anuncian información de ruta incorrecta (de menara intencionada o no), el tráfico va a donde no debe ir, con resultados potencialmente maliciosos.
Por suerte, se han hecho algunos progresos en la seguridad del BGP. En concreto, en 2008 se implementó un marco de seguridad para el enrutamiento denominado Infraestructura de clave pública de recursos (RPKI). La RPKI utiliza registros firmados de forma criptográfica llamados Autorizaciones de origen de ruta (ROA) para validar qué operador de red está autorizado a anunciar las direcciones IP de una organización mediante el BGP. Esto garantiza que solo los usuarios autorizados anuncien los prefijos de una organización.
Sin embargo, la existencia de la RPKI no es suficiente. Si las grandes redes no implementan las mejores prácticas de seguridad BGP, pueden propagar ataques de secuestro a gran escala. En la actualidad, más del 50 % de los principales proveedores de Internet admiten la RPKI en cierta medida, pero se necesita una mayoría más amplia para asegurar completamente el BGP. Los operadores de red pueden proteger sus redes al implementar la RPKI y utilizando tecnología de alerta de red, como la Detección de fugas de ruta de Cloudflare. Esta función ayuda a prevenir los ataques de secuestro de BGP, ya que permite a los clientes saber cuándo usuarios no autorizadas están anunciando sus prefijos.