Servidores Proxy cache – Optimizando la red

Apreciados lectores, me voy a alejar un poco de la temática de mis anteriores publicaciones, más enfocadas a aspectos organizativos de la seguridad, y en esta publicación hablaré sobre el uso de sistemas proxy cache para optimizar el uso del ancho de banda de red. Como introducción a los proxys, decir que básicamente se trata de un servidor que hace de intermediario en la conexión entre un cliente e Internet. Los proxys se emplean en distintos ámbitos y con distintas funcionalidades como puede ser seguridad (filtrado) o mejora de las prestaciones de las comunicaciones, entre algunas otras. Este artículo se centrará en los servidores Proxy Cache que permiten optimizar el uso de ancho de banda, reducir latencias y por lo general hacer un uso más racional de los recursos disponibles.

El funcionamiento de un proxy cache es el siguiente: cuando un cliente realiza una petición a un servidor web, en la que genera X peticiones a todos los objetos que componen dicha web, la petición llega al proxy, que revisa su cache para comprobar si dispone de los objetos que se van solicitando. En el caso de que el objeto buscado se encuentre en cache, el proxy verifica que no ha expirado: que el objeto se corresponde con el actual, y en ese caso se produce un HIT y el sistema devuelve al cliente el objeto en cuestión. Si por el contrario el objeto buscado no se encuentra en cache o la versión encontrada no está actualizada, se produce un MISS en cache, tras lo cual el proxy descarga el elemento solicitado y lo sirve al cliente.

Como puede verse, en el mejor de los casos nos ahorramos el enrutamiento desde el proxy al servidor sobre el que se realiza la petición y la transferencia de la información solicitada a través de Internet, mientras que en el peor de los casos añadimos un salto más en el enrutamiento. Por supuesto, cuánto más accedido sea un determinado contenido por los usuarios de la red interna, mayor probabilidad de que el objeto se encuentre en cache y por tanto, mayor incremento del rendimiento del sistema.

Veamos ahora un ejemplo enfocado a nuestro entorno. Como todos saben, la Ley 11/2007 de 22 de junio, de Acceso electrónico de los ciudadanos a los Servicios Públicos, promueve el ofrecimiento de los servicios prestados por las administraciones públicas a través de la web. El enfoque que se le está dando es que los organismos más grandes actuarán de prestadores de servicios para aquellos organismos más pequeños y con menores recursos; por ejemplo, una diputación presta la plataforma para los ayuntamientos. Teniendo en cuenta que las cifras empleadas únicamente van a servir de ejemplo y en ningún caso reflejan la realidad, apliquemos esto a lo que hemos visto hasta el momento.

Imaginemos que todas las peticiones web realizadas a los servicios prestados por los ayuntamientos se realizaran directamente contra el servidor de la diputación, que actúa no sólo de repositorio de contenidos, sino que además de frontal web para los usuarios finales. ¿Qué ancho de banda consumiría únicamente sirviendo las imágenes de la web? ¿Qué carga va a soportar el servidor? En este caso, el servidor de la diputación debería responder a cada petición de los usuarios. Sin embargo, si cada ayuntamiento dispone de un proxy cache, las peticiones de cada usuario repercutirá en una respuesta por parte del servidor del ayuntamiento, y el servidor de la diputación recibirá únicamente aquellas peticiones que correspondan a material que se encuentre obsoleto en el servidor del ayuntamiento (obviamente la parte dinámica siempre se trasladará al servidor de la diputación, por su imposibilidad de hacer uso de proxy cache para ello).

Hagamos algunos números, aunque de manera muy simplificada. Supongamos no hacemos uso de proxy caché, y que la página de un ayuntamiento está formada por 30 objetos, de los cuales 10 se actualizan cada minuto. Tenemos un total de 100 ayuntamientos que reciben 1000 peticiones por minuto, por lo que estamos hablando de un total de 3.000.000 de peticiones por minuto (30 objetos * 100 ayuntamientos * 1000 peticiones) directamente sobre el servidor de la diputación, lo que lo hace mucho más vulnerable a caídas y pérdidas de servicio en caso de existir un pico de carga que no pueda gestionar. Sin embargo, si se implementan proxys cache al nivel de los ayuntamientos, cada uno de éstos recibe un total de 30.000 peticiones por minuto (30 objetos * 1000 peticiones), y el servidor de la diputación 1000 peticiones por minuto (10 objetos que hay que actualizar cada minuto * 100 ayuntamientos). Como puede verse, ambos números son mucho más razonables y reducen tanto las necesidades de hardware como el impacto de un pico de carga. Por supuesto, para trasladar esto a un ejemplo real, deberíamos contemplar tanto el impacto de las verificaciones contra la fuente original del objeto demandado, además del impacto que tiene la cache de los propios navegadores sobre el tráfico soportado por los servidores. En cualquier caso, no es el propósito de la entrada elaborar un modelo elaborado, sino únicamente mostrar una aproximación numérica a las ventajas de la utilización de los proxy cache.

Como herramientas de servidor cache destaca SQUID, un programa de software libre que implementa un servidor proxy y un demonio para caché de páginas web, publicado bajo licencia GPL. SQUID es un proyecto que lleva tiempo disponible y que tiene muy buena aceptación por parte de la comunidad. Aunque orientado a principalmente a HTTP y FTP, es compatible con otros protocolos como Internet Gopher (sí, Gopher, ¿se acuerdan?). Implementa varias modalidades de cifrado como TLS, SSL, y HTTPS. Como herramientas para analizar los logs generados por el proxy, tenemos A CALAMARIS y SARG. Ambas ayudan a entender el funcionamiento de la red y permiten reconfigurar el proxy para mejorar las prestaciones del mismo.

Resumiendo, un proxy cache permite optimizar y mejorar las prestaciones, reduciendo (y limitando si es preciso) el consumo de ancho de banda, que puede ser utilizado para otros aspectos como puede ser trafico QoS (aunque este es más dependientes de latencias y jitter que de ancho de banda). En cualquier caso, aunque son patentes los beneficios de esta tecnología, es obvio que está enfocada a infraestructuras que soportan un importante número de peticiones web. Por otra parte, para mejorar su eficiencia es importante que exista un proceso de mejora continua, de modo que se aproveche el feedback que proporcionan los registros producidos por el servidor, ajustando la configuración del proxy a los requisitos de nuestra organización.

Comments

  1. Muy buen aporte, es interesante el uso de Calamaris para analizar grandes volúmenes de logs ;)

  2. Amigo lo felicito por pequeño pero efectivo documental, ahora bien, mi pregunta que quiero expresar es el siguiente; que versión de linux recomiendas para usar SQUID? SALUDOS

  3. don antonino tengo una red quiero colocar el servicio proxy cache usted me puede colocar cuanto me vale y que servidor necesito y q mas gracia por su ayuda o quien me puede ayudar

  4. Proxies net – all the info about