Anycast is an addressing and routing method that assigns the same IP address to multiple servers in different geographic locations, allowing the network's routing system to automatically direct each client's packets to the topologically nearest server without requiring special client configuration. Widely used by DNS infrastructure and root server operators, anycast improves latency, capacity, and resilience by distributing traffic across multiple sites, while also enhancing security posture against distributed denial of service attacks. However, successful anycast deployment requires careful operational practices including health checks tied to route announcements, consistent data synchronization between sites, and robust monitoring to prevent failures caused by route flapping, misconfigured health checks, or mid-session path changes that can break long-lived connections.
Cómo funciona el anycast
Anycast funciona anunciando el mismo prefijo IP desde varias ubicaciones, de modo que el propio sistema de enrutamiento decide qué servidor recibe cada paquete. No se necesita ninguna configuración por parte del cliente ni ningún protocolo especial.
- Asignar la dirección compartida: cada servidor o sitio se configura con la misma dirección IP de servicio, normalmente en una interfaz de bucle invertido o de servicio.
- Anunciar el prefijo: cada sitio anuncia el prefijo que contiene esa dirección a sus vecinos, normalmente mediante BGP.
- Los routers seleccionan una ruta: los routers de la red comparan los anuncios que compiten entre sí y eligen la mejor ruta según las reglas de enrutamiento habituales, como la ruta AS más corta.
- Los paquetes llegan al sitio más cercano: un cliente envía una consulta a la dirección compartida y la red la reenvía al sitio más cercano en términos de enrutamiento.
- Retirada en caso de fallo: si un sitio falla o su comprobación de estado da error, deja de anunciar el prefijo. A continuación, los enrutadores convergen en los sitios restantes.
«Más cercano» se refiere a la métrica de enrutamiento, no necesariamente a la distancia geográfica ni a la latencia más baja. Dado que las rutas pueden cambiar durante la sesión, el anycast se adapta mejor a intercambios breves y sin estado, como las consultas DNS a través de UDP, que a conexiones de larga duración, a menos que el diseño tenga en cuenta los cambios de ruta.
Problemas habituales con Anycast
Si un sitio retira y vuelve a anunciar su prefijo repetidamente, los clientes cambian de un sitio a otro y experimentan fallos intermitentes. La amortiguación de las fluctuaciones de ruta por parte de los proveedores de nivel superior puede entonces suprimir el prefijo y hacer que el sitio quede inaccesible durante más tiempo.
Un sitio cuyo software DNS ha fallado, pero cuyo router sigue anunciando el prefijo, sigue atrayendo consultas sin responder a ninguna. Los operadores necesitan una comprobación de estado local que retire la ruta cuando el servicio deje de responder.
Las distintas instancias pueden devolver respuestas diferentes si los datos de la zona o la configuración no están sincronizados. Los usuarios de regiones distintas informan entonces de resultados contradictorios, y el problema es difícil de reproducir desde una sola ubicación.
Un cambio en el enrutamiento puede desviar a un cliente a un servidor diferente durante una sesión. Esto es inofensivo para las consultas UDP de un solo paquete, pero puede reiniciar las conexiones TCP de larga duración, incluidas las transferencias de zona de DNS sobre TCP o las respuestas de gran tamaño.
La política de enrutamiento y el peering determinan a qué sitio accede un cliente, no la distancia geográfica. Los clientes pueden acabar en un sitio lejano con alta latencia, por lo que los operadores miden las rutas reales de las consultas y ajustan los anuncios de prefijos.