¿Qué es "anycast" y cómo es útil?

Respuestas:

88

Anycast es una técnica de red en la que se anuncia el mismo prefijo IP desde múltiples ubicaciones. Luego, la red decide a qué ubicación enrutar la solicitud de un usuario, en función de los costos del protocolo de enrutamiento y posiblemente del "estado" de los servidores de publicidad.

Hay varios beneficios para anycast. Primero, en estado estable, los usuarios de un servicio de difusión ilimitada (DNS es un excelente ejemplo) siempre se conectarán al servidor DNS 'más cercano' (desde la perspectiva del protocolo de enrutamiento). Esto reduce la latencia, además de proporcionar un nivel de equilibrio de carga (suponiendo que sus consumidores estén distribuidos uniformemente en su red).

Otra ventaja es la facilidad de gestión de la configuración. En lugar de tener que configurar diferentes servidores DNS dependiendo de dónde se implemente un servidor / estación de trabajo (Asia, América, Europa), tiene una dirección IP configurada en cada ubicación.

Dependiendo de cómo se implemente anycast, también puede proporcionar un nivel de alta disponibilidad. Si el anuncio de la ruta de difusión ilimitada está condicionado a algún tipo de comprobación de estado (por ejemplo, una consulta DNS para un dominio bien conocido, en este ejemplo), tan pronto como un servidor falle, su ruta puede eliminarse. Una vez que la red vuelve a converger, las solicitudes de los usuarios se enviarán sin problemas a la siguiente instancia más cercana de DNS, sin la necesidad de ninguna intervención manual o reconfiguración.

Una ventaja final es la de escala horizontal; Si encuentra que un servidor se está sobrecargando, simplemente implemente otro en una ubicación que le permita tomar una proporción de las solicitudes del servidor sobrecargado. Nuevamente, como no se requiere configuración del cliente, esto se puede hacer muy rápidamente.

Murali Suriar
fuente
¿Anycast utiliza más ancho de banda en comparación con unicast? Imaginemos que tenemos miles de servidores que comparten la misma dirección IP, cuando enviamos un paquete a esa dirección, ¿no ocuparía más ancho de banda en comparación con la unidifusión?
Pacerier
55
No: el tráfico enviado a una dirección de difusión ilimitada solo llegará a una ubicación que anuncie la dirección. Puede estar pensando en la multidifusión , donde los paquetes enviados a una dirección de grupo de multidifusión se envían a todos los hosts interesados ​​en ese grupo.
Murali Suriar
¿No se resuelve el problema de "en lugar de tener que configurar diferentes servidores DNS dependiendo de dónde se implemente un servidor / estación de trabajo " resuelto por los nombres de dominio? Entonces, ¿qué sentido tiene anycast cuando simplemente se duplica lo que los nombres de dominio ya están haciendo?
Pacerier
1
@Pacerier: no puede usar nombres de dominio para encontrar su servidor DNS, eso es una dependencia circular. Ejemplo: configurar dns.foo.com. como tu servidor DNS. ¿A qué dirección IP envío las solicitudes a dns.foo.com? Lo sé, lo buscaré en DNS. etc.
Murali Suriar
32

Una de las cosas que a menudo me confundió al entender "anycast" es que, si bien es un término de alto nivel, en la implementación práctica generalmente se reduce a dos ejemplos:

  1. Los enrutadores que utilizan BGP para anunciar el mismo bloque de IP a través de múltiples rutas AS como una forma aproximada de dirigir a los usuarios a un sitio "más cercano". Al mismo tiempo, proporciona una conmutación por error casi transparente a los otros sitios simplemente retrayendo las rutas de un sitio problemático. Esto puede ser útil para casi cualquier protocolo, aunque obviamente plantea muchas preocupaciones de sincronización de datos de back-end.

  2. Publicidad del mismo servicio IP desde múltiples puntos dentro de su propia red (a través de enrutamiento estático , OSPF , EIGRP o lo que sea). Si las rutas se ponderan de manera diferente , actúa como un mecanismo de conmutación por error. Si las rutas se ponderan de manera uniforme , puede aprovechar las capacidades de equilibrio de carga por paquete o por flujo de la mayoría de los enrutadores de marcas reconocidas. Debe tener cuidado de que el protocolo de la capa de aplicación se sienta cómodo con esto, por eso casi siempre escucha que se utiliza con DNSdonde una solicitud siempre es un paquete y todo no tiene estado. Personalmente, veo esto como una intrusión hacky de las preocupaciones de la capa de aplicación en la capa de red cuando una combinación de DNS y equilibradores de carga adecuados casi siempre será una mejor solución.

cagenut
fuente
+1 por mencionar un paquete y apatridia
nponeccop
3
El problema con el DNS es que uno puede usar google u otro solucionador remoto y el servidor más cercano para resolver puede ser diferente al usuario. Por supuesto, esto es válido solo cualquier difusión es para uso que no sea DNS (por ejemplo, tcp anycast u otro uso).
akostadinov
@cagenut, ¿Se rompería HTTP en el caso del equilibrio de carga por paquete (debido a pesos uniformes o de otro tipo)?
Pacerier
16

Se utiliza principalmente para servicios basados ​​en UDP como DNS. Básicamente, anuncia la misma ruta desde múltiples centros de datos en todo el mundo. De esta manera, sus clientes serán enviados al centro de datos "mejor" y "más cercano" en función de las rutas BGP. Pongo "mejor" y "más cercano" entre comillas porque los proveedores de red pueden jugar juegos y enrutar el tráfico desde ciertas redes de manera diferente. En general, las cosas funcionan mejor con anycast, pero no es una garantía.

Un ejemplo de esto sería enumerar sus servidores DNS como 1.2.3.4 y 1.2.3.5. Sus enrutadores anunciarían una ruta para 1.2.3 / 24 de múltiples centros de datos. Si está en Japón y tiene un centro de datos allí, es probable que termine allí. Si se encuentra en los EE. UU., Se lo enviará a su centro de datos de EE. UU. Nuevamente, se basa en el enrutamiento BGP y no en el enrutamiento geográfico real, pero así es como se descomponen las cosas.

diq
fuente
1
¿Cómo se evitan los conflictos entonces?
Pacerier
No estoy seguro de lo que quieres decir con conflictos. BGP realmente no permite conflictos. Simplemente escoge una ruta. Un problema (a menudo ignorado) con anycast es legal. Técnicamente, cualquier difusión está cubierta por diferentes patentes. Nadie aplica esto, pero diferentes tipos de tráfico (CDN, DNS, TCP vs UDP) están cubiertos por diferentes patentes. Este párrafo debe estar cubierto con IANAL.
diq
¿Entonces quiere decir que esos servicios de ip2location son inexactos? ¿Porque no hay una ubicación oficial para una IP y podría estar en cualquier lugar dependiendo de con qué computadora BGP hable?
Pacerier
9

De acuerdo con mi respuesta original, acabo de publicar dos artículos más en mi blog titulados: Anycast DNS - Parte 3, Uso de RIP y Anycast DNS - Parte 3, Uso de RIP (continuación). Este último entra en más detalles, pero en www.netlinxinc.com/netlinx-blog.html encontrará recetas reales sobre cómo configurar los enrutadores Cisco y el software de enrutamiento basado en host Quagga de código abierto para Anycast DNS usando RIP.

Actualmente estoy trabajando en escribir el cuarto artículo de la serie. Esto proporcionará recetas sobre cómo implementar Anycast DNS usando OSPF. Último en la serie, mostraré recetas para implementar Anycast DNS usando BGP.

Anycast DNS - Parte 1, Descripción general

Anycast DNS - Parte 2, Uso de rutas estáticas

Anycast DNS - Parte 3, Uso de RIP

Anycast DNS - Parte 3, Uso de RIP (continuación)

netlinxman
fuente
Entonces, ¿es cierto que debido a cualquier difusión, es posible que alguien más en Internet en todo el mundo tenga la misma IP pública que la que le dio su ISP?
Pacerier
¿No es cierto que solo los ISP son capaces de implementar servidores anycast?
Pacerier
De hecho, necesitaría tener múltiples ISP para hacer cualquier difusión.
Pacerier
4

Dado que esto es principalmente DNS en este momento ...

Informalmente, hace que su servicio sea más resistente y con un mejor acceso a la red / latencia / velocidad al permitirle configurar el mismo servicio en múltiples ubicaciones en todo el mundo, todas con la misma dirección. Cuando alguien pregunta por esa dirección, recibe la ruta más cercana / mejor.

Desde la perspectiva del servidor:

Si la unidifusión va a una sola persona, y la multidifusión va a varias, y la transmisión se dirige a todas las personas, entonces cualquier transmisión es esquizofrénica y tiene múltiples personalidades donde la personalidad más adecuada para cada persona se conecta con ellas. Hmm No es la mejor analogía.

Alex
fuente
3

Un uso realmente interesante de anycast es DNS. Puede colocar 5 servidores DNS diferentes en varias ubicaciones físicas y de red, pero compartir una sola dirección (o, a veces, DNS primaria y secundaria). Dependiendo de dónde esté la fuente, se enrutan a su nodo más cercano. Esto equilibra el tráfico y proporciona redundancia si un servidor DNS muere.

dexedrina
fuente
¿Pero no es la redundancia ya proporcionada por el sistema DNS?
Pacerier
2

Según uno de mis colegas, también es útil como técnica de mitigación de ataques DoS, ya que las personas solo pueden atacar la dirección IP "más cercana", por lo tanto, si hay muchos zombis en, por ejemplo, los EE. UU., Su sitio Euro sería en su mayoría no se ven afectados, ya que en realidad no pueden enviarle paquetes.

También es posible usarlo como una forma de filtrar (algo ingenuamente) paquetes falsificados si obviamente provienen de algún lugar que probablemente no se anuncie en BGP como la ruta correcta (por ejemplo, paquetes que ingresan a Europa cuando la ASN indica un N American bloquear).

MarkR
fuente
1
Bueno, incluso en el caso simple que solo detendría a las personas cuya ruta AS va a ese servidor, por ejemplo, puede detener a las personas que se comunican con usted desde Comcast, pero no AT&T. Si lo configuró "correctamente" para la conmutación por error (rastrear el servicio L7, dejar de anunciar cuándo se cae), entonces en realidad es mucho más complicado manejar ataques DoS ya que atacará un servidor y luego pasará al siguiente cuando esté los anuncios se eliminan ...
James Cape
@JamesCape, Interesante, pero cuando se mueven al siguiente, el DOS ha fallado ya que las personas no pueden conectarse, ¿verdad?
Pacerier
@Pacerier En el caso más simple, donde solo anuncias la misma IP en todas partes sin inteligencia, sí. Sin embargo, si intenta ser inteligente y retirar el anuncio en los EE. UU. Porque el servicio no responde, entonces el único anuncio que quedará será el de Europa. Entonces, todos los zombies de EE. UU. Golpearán el siguiente servidor disponible y matarán a ese también.
James Cape
2

También es bueno tener en cuenta que Anycast no es bueno o confiable para algunas conexiones TCP que no pueden sobrevivir a los reinicios o cualquier conversación larga.

Anycast IPs, usando BGP, le dice a Internet que hay 2, 3 o más rutas a un HOST específico , sin embargo, en realidad estos NO son el mismo host , son réplicas exactas de hosts anunciados en múltiples centros de datos para lograr conexiones de latencia más bajas.

Por ejemplo, tengo 3 servidores que realizan una redirección 301 no www para 198.251.86.133, si hace ping a este host, puede obtener respuestas DUPLICADAS a veces, o incluso caídas dependiendo de dónde se encuentre, ya que mis servidores están en el este de EE. UU. -Oeste y EUR. para conexiones de tiempo corto (como las 301 que son cacheadas en el navegador) esto da una respuesta rápida por parte de un servidor local en el centro de datos más cercano.

Desde el punto de vista de la redundancia, no hay ninguno integrado en ninguna difusión, aún necesitaría redundancia independiente en cada sitio, ya que esa IP (en escenarios típicos) siempre apuntará a esos centros de datos.

Jacob Evans
fuente
Re "ping"; ¿No es ping una conexión UDP?
Pacerier
Re "como esa IP siempre (en escenarios típicos) siempre apuntará a esos centros de datos"; ¿Estás seguro? Si ese servidor se apaga, comenzarían a señalar al siguiente servidor más cercano, ¿no?
Pacerier