Anycast es una metodología de enrutamiento y direccionamiento de red en la que una única dirección IP es compartida por dispositivos (generalmente servidores) en múltiples ubicaciones. Los enrutadores dirigen los paquetes dirigidos a este destino a la ubicación más cercana al remitente, utilizando sus algoritmos normales de toma de decisiones , típicamente el menor número de saltos de red BGP . El enrutamiento Anycast es ampliamente utilizado por redes de entrega de contenido como servidores web y de nombres , para acercar su contenido a los usuarios finales.
El primer uso documentado del enrutamiento anycast para el equilibrio de carga topológico de servicios conectados a Internet fue en 1989; [1] [2] la técnica se documentó formalmente por primera vez en el IETF cuatro años después. [ 3] Se aplicó por primera vez a la infraestructura crítica en 2001 con el anycasting del servidor de nombres raíz I. [2]
Las primeras objeciones a la implementación del enrutamiento anycast se centraban en el conflicto percibido entre las conexiones TCP de larga duración y la volatilidad de la topología enrutada de Internet. En teoría, una conexión de larga duración, como una transferencia de archivos FTP (que puede tardar horas en completarse en el caso de archivos grandes), podría ser redireccionada a una instancia anycast diferente en medio de la conexión debido a cambios en la topología de la red o en el enrutamiento, con el resultado de que el servidor cambia en medio de la conexión y el nuevo servidor no está al tanto de la conexión y no posee el estado de conexión TCP de la instancia anycast anterior.
En la práctica, no se observaron tales problemas y estas objeciones se disiparon a principios de la década de 2000. Muchas de las implementaciones iniciales de anycast consistían en servidores DNS, que utilizaban principalmente transporte UDP. [4] [2] Las mediciones de flujos anycast a largo plazo revelaron muy pocos fallos debidos a cambios de instancias a mitad de conexión, muchos menos (menos del 0,017% [5] o "menos de un flujo por cada diez mil por hora de duración" [1] según varias fuentes) de los que se atribuían a otras causas de fallo. Se desarrollaron numerosos mecanismos para compartir de forma eficiente el estado entre instancias anycast. [6] Y algunos protocolos basados en TCP, en particular HTTP, incorporaron mecanismos de "redireccionamiento", mediante los cuales las direcciones de servicio anycast podían utilizarse para localizar la instancia más cercana de un servicio, con lo que un usuario sería redirigido a esa instancia específica antes del inicio de cualquier transacción con estado de larga duración. [1] [7]
Anycast se puede implementar a través del protocolo de puerta de enlace de borde (BGP). A varios hosts (normalmente en diferentes áreas geográficas) se les asigna la misma dirección IP de unidifusión y se anuncian diferentes rutas a la dirección a través de BGP. Los enrutadores consideran que estas son rutas alternativas al mismo destino, aunque en realidad son rutas a diferentes destinos con la misma dirección. Como es habitual, los enrutadores seleccionan una ruta según la métrica de distancia que se utilice (la de menor coste, la menos congestionada, la más corta). Seleccionar una ruta en esta configuración equivale a seleccionar un destino.
La arquitectura de direccionamiento IPv6 admite de forma explícita la función anycast . [8] La dirección más baja dentro de una subred IPv6 (identificador de interfaz 0) se reserva como la dirección anycast del "enrutador de subred". Además, los 128 identificadores de interfaz más altos dentro de una subred también se reservan como direcciones anycast. [9]
La mayoría de los enrutadores IPv6 en la ruta de un paquete anycast a través de la red no lo distinguirán de un paquete unicast, pero se requiere un manejo especial de los enrutadores cercanos al destino (es decir, dentro del alcance de la dirección anycast) ya que deben enrutar un paquete anycast a la interfaz "más cercana" dentro de ese alcance que tenga la dirección anycast adecuada, de acuerdo con cualquier medida de distancia ( saltos , costo, etc.) que se esté utilizando.
El método utilizado en IPv4 de anunciar múltiples rutas en BGP a direcciones unicast de asignación múltiple también funciona en IPv6 y se puede utilizar para enrutar paquetes al host más cercano de varios hosts geográficamente dispersos con la misma dirección. Este enfoque, que no depende de enrutadores que admitan anycast, tiene los mismos casos de uso y los mismos problemas y limitaciones que en IPv4.
Con el crecimiento de Internet, los servicios de red tienen cada vez más requisitos de alta disponibilidad. Como resultado, la operación de servicios anycast ha ganado popularidad entre los operadores de red. [10]
Todos los servidores raíz de Internet se implementan como clústeres de hosts que utilizan direcciones anycast. [11] Los 13 servidores raíz A–M existen en múltiples ubicaciones, con 11 en múltiples continentes. (Los servidores raíz B y H existen en dos ubicaciones de EE. UU.) [12] [13] [14] Los servidores utilizan anuncios de direcciones anycast para proporcionar un servicio descentralizado. Esto ha acelerado la implementación de servidores raíz físicos (en lugar de lógicos) fuera de los Estados Unidos . Muchos proveedores de DNS comerciales han cambiado a un entorno IP anycast para aumentar el rendimiento y la redundancia de las consultas, y para implementar el equilibrio de carga. [2]
En la transición de IPv4 a IPv6 , se puede implementar el direccionamiento anycast para proporcionar compatibilidad IPv6 a los hosts IPv4. Este método, 6to4 , utiliza una puerta de enlace predeterminada con la dirección IP 192.88.99.1 . [15] Esto permite que varios proveedores implementen puertas de enlace 6to4 sin que los hosts tengan que conocer las direcciones de puerta de enlace de cada proveedor individual. 6to4 ha quedado obsoleto [16] en respuesta a la creciente prevalencia del IPv6 nativo.
Las redes de distribución de contenido pueden utilizar anycast para conexiones HTTP reales a sus centros de distribución o para DNS . Debido a que la mayoría de las conexiones HTTP a dichas redes solicitan contenido estático, como imágenes y hojas de estilo , generalmente son de corta duración y sin estado en las sesiones TCP posteriores. La estabilidad general de las rutas y la falta de estado de las conexiones hacen que anycast sea adecuado para esta aplicación, aunque utilice TCP . [5] [1]
El punto de encuentro anycast se puede utilizar en el Protocolo de descubrimiento de origen multicast (MSDP) y su aplicación es ventajosa, ya que Anycast RP es una característica intradominio que proporciona redundancia y capacidades de reparto de carga. Si se utiliza el punto de encuentro anycast múltiple, el enrutamiento IP seleccionará automáticamente el punto de encuentro topológicamente más cercano para cada fuente y receptor. Proporcionaría una red de multidifusión con los requisitos de tolerancia a fallos. [17]
Anycast permite a cualquier operador cuya información de enrutamiento sea aceptada por un enrutador intermedio secuestrar cualquier paquete destinado a la dirección anycast. Si bien esto a primera vista parece inseguro, no es diferente del enrutamiento de paquetes IP ordinarios , y no es más o menos seguro. Al igual que con el enrutamiento IP convencional, el filtrado cuidadoso de quién tiene y quién no tiene permiso para propagar anuncios de ruta es crucial para evitar ataques de tipo man-in-the-middle o blackhole . El primero también se puede prevenir cifrando y autenticando mensajes, como mediante Transport Layer Security , mientras que el segundo se puede frustrar mediante el enrutamiento de cebolla .
Anycast es normalmente muy confiable, ya que puede proporcionar conmutación por error automática sin agregar complejidad o nuevos puntos potenciales de falla. Las aplicaciones anycast generalmente cuentan con monitoreo externo de "latido" de la función del servidor y retiran el anuncio de ruta si el servidor falla. En algunos casos, esto lo hacen los servidores reales que anuncian el prefijo anycast al enrutador a través de OSPF u otro IGP . Si los servidores fallan, el enrutador retirará automáticamente el anuncio. La funcionalidad de "latido" es importante porque, si el anuncio continúa para un servidor que falla, el servidor actuará como un "agujero negro" para los clientes cercanos; este es el modo de falla más grave para un sistema anycast. Incluso en este caso, este tipo de falla solo provocará una falla total para los clientes que estén más cerca de este servidor que cualquier otro, y no provocará una falla global. Sin embargo, incluso la automatización necesaria para implementar la retirada del enrutamiento de "latido" puede agregar un punto potencial de falla, como se vio en la interrupción de Facebook de 2021 .
En los ataques de denegación de servicio , un host de red fraudulento puede publicitarse como un servidor anycast para un servicio de red vital, para proporcionar información falsa o simplemente bloquear el servicio.
Las metodologías anycast en Internet pueden ser explotadas para distribuir ataques DDoS y reducir su efectividad: como el tráfico se enruta al nodo más cercano, un proceso sobre el cual el atacante no tiene control, el flujo de tráfico DDoS se distribuirá entre los nodos más cercanos. Por lo tanto, no todos los nodos pueden verse afectados. Esta puede ser una razón para implementar el direccionamiento anycast. [18] Sin embargo, la efectividad de esta técnica depende de mantener la confidencialidad de cualquier dirección unicast asociada con los nodos de servicio anycast, ya que un atacante en posesión de las direcciones unicast de nodos individuales puede atacarlos desde cualquier ubicación, eludiendo los métodos de direccionamiento anycast. [19]
Algunas implementaciones anycast en Internet distinguen entre nodos locales y globales para beneficiar a la comunidad local, al dirigirse a los nodos locales de manera preferencial. Un ejemplo es el Sistema de nombres de dominio. Los nodos locales a menudo se anuncian con la comunidad BGP sin exportación para evitar que los hosts los anuncien a sus pares, es decir, el anuncio se mantiene en el área local. Cuando se implementan nodos locales y globales, los anuncios de los nodos globales a menudo se anteponen con AS (es decir, el AS se agrega unas cuantas veces más) para hacer que la ruta sea más larga de modo que se prefiera un anuncio de nodo local sobre un anuncio de nodo global. [20]
Azure Frontdoor utiliza la redirección anycast para dirigir a los usuarios a un borde cercano.