¿Cómo funcionan las redes de distribución de contenido (CDN)?

37

Tomando a Akamai como CDN. Por lo que entiendo, cuando un cliente solicita una página, la solicitud va al servidor central de Akamai, que luego, según la ubicación del cliente, recoge un servidor perimetral Akamai y las solicitudes posteriores del cliente van directamente a este servidor perimetral. Mi pregunta es que:

Cuando un cliente solicita un sitio web (por nombre), una vez que el DNS resuelve el nombre a la dirección IP del servidor central de Akamai y lo pasa al cliente, el cliente mantendrá esta dirección IP, entonces, ¿cómo pueden las solicitudes posteriores? ir directamente a la dirección IP de los servidores perimetrales de Akamai?

¿O es que es necesario que cuando se use CDN, la resolución DNS en sí misma la haga el servidor CDN?

¿Los grandes como Google, Amazon, Facebook tienen sus propios servidores CDN o confían en proveedores de CDN de terceros como Akamai? Di Google y Yahoo! ambos usan CDN de Akamai, luego usan el contenido de Yahoo! y Google reside en el mismo servidor? ¿No plantea un problema potencial de seguridad?

p2pnode
fuente

Respuestas:

27

No solo aloja el sitio completo con la CDN, solo su contenido .

Me acabo de dar cuenta de que respondí una pregunta similar hace un tiempo: ¿Qué hace akamaihd.net?

Flujo de solicitud de datosImagen de WikiMedia

Entonces su sitio hace referencia http://akamai/myfile.ext. Esto solicitará myfile.extde akamai. akamailuego puede enviar una redirección HTTP al servidor de contenido real.

Ahora, cuando se almacena en caché ese último paso, genial, todas las solicitudes futuras irán al servidor de contenido más cercano.

¿Cómo funciona?

Asumamos este sitio web:

<html>
  <body>
    <img src="http://cdn/oliver.png" />
  </body>
</html>

Solicito este sitio web desde mi propio servidor web. El .htmlarchivo no está alojado con cdn. Tampoco es el DNS de mi servidor web.

Solicitud inicial

Entonces mi navegador obtuvo ese archivo HTML y ahora lo analiza. Encuentra la imagen referenciada y observa que se encuentra en http://cdn/oliver.png. Solicita ese archivo.

Para hacer eso, necesita encontrar la dirección IP de cdn. En nuestro ejemplo, esa dirección IP es 10.10.10.10.

Con esa dirección IP, puede conectarse al cdnservidor y solicitar /oliver.png.

Geo Location

Ahora se cdnda cuenta, "¡ ese tipo es de Alemania! ". Entonces, en lugar de enviarme la imagen increíble que quería, me envía una redirección HTTP que dice:

/oliver.png no está aquí. Está en10.10.33.33/oliver.png

Entonces mi navegador preguntará 10.10.33.33(que espero esté más cerca de mí) por la imagen.

¿Seriamente?

No estoy diciendo que así es como funcionan TODOS los CDN, pero sería un enfoque.

También podría implementar un demonio DNS que devuelva resultados diferentes para una búsqueda de nombre dependiendo de la ubicación de quien envió la consulta.
Pero dudo que esto se haga en la práctica. Pero tal vez no puedo imaginar cómo configurarlo correctamente. Vea la respuesta de Fluffy sobre cómo podría funcionar.

¿Quién dirige CDN?

La mayoría de los jugadores globales tienen su propia red de entrega de contenido de alguna manera (o eso supongo). Algunos proveedores simplemente descargan ciertos servicios a CDN más grandes (como lo hace Microsoft con las descargas de MSDN). Y esto podría de alguna manera tocar tu segundo tema.

Considere esto, en el MSDN Microsoft ofrece descargas de productos. Estas descargas son proporcionadas por Akamai. Si puede determinar la URL de esa descarga, puede descargar el producto sin ponerse en contacto con Microsoft.

¿Es eso un problema de seguridad? En realidad no, porque lo que se está descargando todavía está protegido (por una clave de producto).

Pero ¿qué hay de otros datos?

Si sus datos son relevantes para la seguridad, entonces no es material de CDN. Si no desea que algo esté disponible lo más ampliamente posible, no lo ponga en un CDN.

Der Hochstapler
fuente
Digamos que el sitio es somewebsite / file.txt . Digamos que se está utilizando el DNS de Akamai. Entonces, ¿la primera solicitud del cliente va a algún sitio web o la primera solicitud en sí va a Akamai (porque de alguna manera el DNS que está utilizando el cliente sabe que Akamai CDN está en uso)?
p2pnode
Y tal vez no entiendo la redirección HTTP y lo que pueden lograr, por lo que mi pregunta sigue siendo cómo sabe el cliente usar la dirección IP de los servidores perimetrales de Akamai para que los servidores centrales de Akamai no tengan que aparecer en la imagen. all ..
p2pnode
@ p2pnode: amplié un poco la respuesta. Esperemos que incluya lo que te estás preguntando.
Der Hochstapler
1
¿No hay un impacto significativo en el rendimiento de esto? En lugar de toda la transferencia de datos pasando por encima de un único flujo TCP, se están utilizando múltiples flujos, más sobrecarga del apretón de manos, etc ..
Akash
@Akash: Normalmente, no usarías un CDN para todo , sino solo para archivos grandes individuales. Entonces, en la práctica, esto no es un problema.
Der Hochstapler
11

Un enfoque bastante común para CDN es usar lo que se conoce como " anycast ". Cómo funciona esto es que sus servidores distribuidos se ubican con DNS que responden con ese servidor como destino; por ejemplo, puede tener tres servidores en diferentes instalaciones de alojamiento, y sus respectivos DNS afirman que su dirección IP es la canónica para su servidor (llámelo, por ejemplo content.example.com). Los DNS están configurados para tener la misma dirección IP global, y luego cada una de las instalaciones de los servidores usan actualizaciones BGP para que la ruta al servidor más cercano gane, por lo que cuando realiza una búsqueda de nombre content.example.com, el más rápido / más cercano / DNS más disponible responde a la solicitud con su servidor HTTP.

De esta manera, no se necesitan trucos de GeoIP, y siempre se le sirve contenido por el servidor que sea más rápido para usted, lo que puede o no tener que ver con su ubicación física, debido a la naturaleza heterogénea de Internet.

Tengo entendido que Akamai al menos funciona parcialmente de esta manera.

mullido
fuente
5

También están disponibles los CDN de tipo Origin Pull.

Amazon Cloudfront puede usar esta técnica.

Configura un CNAME como media.example.com que apunta a su nombre de servidor asignado y deja todo su contenido en su servidor. Para las imágenes y el contenido que desea entregar a través de la red CDN, use media.example.com en la URL. La solicitud va a la red de su servidor y si el contenido no está disponible, sus servidores extraen el contenido de su servidor. Una vez en el sistema, el contenido se distribuye a las granjas de servidores más cercanas al lugar donde existe la demanda y permanece allí para el TTL asignado. Su servidor ya no ve ningún tráfico en el contenido en caché hasta que caduque el TTL y Cloudfront tenga que actualizarlo.

Laboratorios Fiasco
fuente
1

Akamai no funciona de esta manera. Diferentes CDN funcionan de manera diferente, pero Akamai específicamente no realiza ninguna transmisión para sus servidores web.

Cuando un usuario en Nueva York quiere www.acme.com, el servidor de nombres de acme.com redirige ("delega") a un servidor de nombres Akamai. El servidor de nombres de Akamai ve dónde se encuentra la máquina que hace la pregunta (en función de su dirección IP) y devuelve la dirección IP del servidor Akamai más cercano / mejor para servir www.acme.com.

igorlord
fuente
¿Cómo funciona? ¿El servidor de nombres Akamai recibe la solicitud del usuario directamente o del servidor DNS del usuario que delega al servidor de nombres Akamai? Entonces, ¿se geolocalizará según la ubicación del servidor DNS, no la del usuario?
odiszapc
0

Un gran resumen de cómo funciona el CDN de Akamai se puede encontrar aquí

En breve:

  • Los servidores CDN tienen un registro CNAME que apunta a los servidores DNS de Akamai.
  • Entonces, la primera solicitud que un navegador de clientes hace a un servidor CDN es que su DNS se haya consultado en el servidor DNS de Akamai, que responde con la dirección IP de un servidor Akamai que está cerca del usuario (llamado "Servidores perimetrales")
  • Estos servidores Edge pueden servir elementos estáticos de una memoria caché local, si otro usuario lo ha solicitado recientemente, y ni siquiera tiene que volver a su servidor para obtener una copia del activo.
  • Los elementos faltantes o las páginas que no se pueden almacenar en caché se enrutan a través de la red de Akamai a otro servidor perimetral cerca del host. Ese servidor perimetral realiza las solicitudes reales al sitio host y las devuelve a través de la red al servidor perimetral original, y desde allí se devuelven al usuario final.
  • Dado que los servidores perimetrales se comunican internamente utilizando los protocolos patentados de Akamai y el enrutamiento alrededor de los cuellos de botella, el tráfico puede fluir mucho más rápido que a través de Internet público.

y como se menciona en la publicación del blog mencionada anteriormente, algunas grandes corporaciones resuelven DNS usando sus propios servidores, lo que puede negar algunos de los beneficios de usar un CDN.

Brad Parks
fuente
-2

CDN funciona en Anycast DNS. Anycast dns funciona en Anycast ip. Anycast ip: una asignación de ip en varios servidores. Cuando el usuario solicite dns resolver, esa consulta será manejada por el servidor más cercano y proporcionará datos del servidor con la menor latencia.

Carril abhimanyu
fuente
¿De qué manera esto mejora sobre las respuestas existentes, mucho más completas?
Chenmunka