sábado, 18 de junio de 2011

Distribución de Contenido y DNS personalizados.

Muchas compañías ocupan un servicio llamado Red de distribución de contenido (Content Distribution Network), el cual consiste en una serie de computadores replegados por el planeta que guardan copias de los sitios web de sus clientes. Asi, por ejemplo, empresa.com es una compañía estadounidense, cuyo CDN replica el sitio web en sus espejos por todo el mundo. Asi, si yo entro a ella, el CDN identifica en su red el equipo más proximo a mi, y me enviará al espejo nacional del CDN mostrandome empresa.com como si estuviese hosteada en Chile.



Esto tiene grandes ventajas porque te entrega un sistema altamente escalable (crece y mantiene la eficiencia) y de alta disponibilidad, sin costosas inversiones en datacenters en varios países, y genera un ahorro del ancho de banda del servidor principal de la empresa, ya que se balancea y se distribuye la carga.

Adicionalmente, mucha gente usa servicios DNS públicos, como google u opendns en lugar de los servidores de su compañía de internet. Esto se debe a que algunas compañías ofrecen un servicio dns de mala calidad (se cae, tiene tablas mal actualizadas, etc).

¿Donde está el problema?. El servidor DNS es un dato clave en los CDN para identificar el país de origen del usuario. Si usas estos dns de terceros. El CDN no puede detectar tu ubicación. Cargando la página o descargando el archivo que hagas desde el pais del DNS.

Ejemplo:
DNS oficiales de mi proveedor (VTR, Chile)
190.160.0.11
200.74.121.11
200.83.1.4

ping www.americaeconomia.com (Pagina almacenada en el CDN Akamai)
Haciendo ping a a1339.g.akamai.net [190.46.255.9] con 32 bytes de datos:
Respuesta desde 190.46.255.9: bytes=32 tiempo=10ms TTL=58
Respuesta desde 190.46.255.9: bytes=32 tiempo=11ms TTL=58
Respuesta desde 190.46.255.9: bytes=32 tiempo=30ms TTL=58
Respuesta desde 190.46.255.9: bytes=32 tiempo=24ms TTL=58

Estadísticas de ping para 190.46.255.9:
Paquetes: enviados = 4, recibidos = 4, perdidos = 0
(0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:
Mínimo = 10ms, Máximo = 30ms, Media = 18ms


190.46.x.x es una IP de VTR, corresponde a uno de los cientos de servidores que tiene akamai en Chile para replicar el contenido de sus clientes (entre los cuales está Apple, Audi, Microsoft y Symantec).

¿que pasa si uso las DNS de google en lugar que los DNS de VTR?.
8.8.8.8
8.8.4.4

ping www.americaeconomia.com

Haciendo ping a a1339.g.akamai.net [184.84.247.51] con 32 bytes de datos:
Respuesta desde 184.84.247.51: bytes=32 tiempo=136ms TTL=54
Respuesta desde 184.84.247.51: bytes=32 tiempo=130ms TTL=54
Respuesta desde 184.84.247.51: bytes=32 tiempo=139ms TTL=54
Respuesta desde 184.84.247.51: bytes=32 tiempo=145ms TTL=54

Estadísticas de ping para 184.84.247.51:
Paquetes: enviados = 4, recibidos = 4, perdidos = 0
(0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:
Mínimo = 130ms, Máximo = 145ms, Media = 137ms

La ip no corresponde a Chile. Es un servidor de Estados Unidos. Lo cual produce:
Aumento de la latencia (tiempo de espera)
Los datos realizan más saltos para llegar al servidor de destino.
El proveedor de internet ocupa más de lo necesario su ancho de banda internacional, pese a que tiene un espejo local del mismo contenido.
El sitio web carga más lento. Lo que implica clientes molestos con su compañía de internet.

Lo ideal sería que la ubicación sea determinada mediante la IP del usuario y no la del servidor DNS.

Este es un problema que afecta a todos los usuarios de internet:
- que usen los servidores DNS de terceros (google, opendns etc)
- compañías de internet o corporaciones cuyos dns se encuentren en un país diferente.

Mandé un mail a Akamai, uno de los CDN's mas grandes del mundo (84.000 servidores, 400 de ellos en Chile). A lo que respondieron:

Thank you for contacting Akamai.

Yes. We are aware of the issues experienced by people who use alternative and public DNS services. And these same issues can also affect users whose ISPs have them resolve through nameservers that are location in distant geographic locations.

Unfortunately, the nature of DNS, and therefore mapping/routing of end users to specific servers, requires that users be mapped based on their resolving nameservers at this point. Our DNS servers receive the resolution request from the end user’s resolving nameserver (whether ISP or alternate). Our DNS servers have to determine which Akamai server IP to return, which is then passed by the resolving nameserver back to the end user. But at this point, the only information we have is the IP address of the resolving nameserver, so we have to select the Akamai server IP based on that. Basically, we have to serve back a server IP address before we can know the IP address of the end user.

Because of the way that DNS works, this is the case for all CDNs at this time.

However, we are continuing to investigate ways to map based on the client IP address, as well as any other possible ways to improve mapping, routing, and performance.

Akamai Customer Care
En pocas palabras, de momento no hay solución, el diseño del sistema solo recibe la IP del dns. no la IP del cliente. Es un problema que afectaría a todos los CDN.
Asi que la única solución de momento es usar los DNS de tu proveedor. Siempre que se encuentre en el mismo país.

Algunos Links
wikipedia: CDN
Akamai Technologies

No hay comentarios.: