Controlar el ancho de banda con Squid y delay pools 8 comentarios Una de las características de Squid cache proxy más útiles en nuestros entornos es el soporte para delay pools, esta permite administrar, racionalizar y controlar el ancho de banda disponible en nuestros enlaces. Sin embargo, muchas veces es mali nterpretado y se hace un mal uso provocando cuellos de botella e insatisfacción en los clientes. A continuación un intento de explicar y describir el uso de esta im portante característica. Términos pool: es una colección de buckets. bucket: representa el tráfico asignado que se rellena cuando alcanza una tasa (límit e) y que causa que el tráfico se demore cuando está vacío. class 1: clase de delay pool que contiene un solo bucket colectivo que se usa pa ra todas las solicitudes de los hosts que estén dentro del pool. class 2: clase de delay pool que contiene un bucket colectivo y 255 buckets indi viduales, uno para cada host en una red IPv4 clase C. class 3: clase de delay pool que contiene un bucket coletivo, 255 buckets para l as subredes en una red de 16-bits y buckets individuales para cada host en estas redes IPv4 clase B. Parámetros del delay pool Cada delay pool contiene parámetros que se definen por el tag delay_parameters de la siguiente forma: delay_parameters pool bucket-colectivo (para delay pools de clase 1) delay_parameters pool bucket-colectivo bucket-individual (para delay pools de cl ase 2) delay_parameters pool bucket-colectivo bucket-red bucket-individual (para delay pools de clase 3) Los valores del parámetro del delay se escriben velocidad/velocidad máxima y se espe cifican en kilobytes por segundo. El primer valor se usa para la velocidad de la descarga normal y el segundo la velocidad en la que comenzará a ralentizarse la p etición. Si se desea dejar la máxima velocidad disponible se especifica el valor -1. Se recomienda que el valor de la velocidad máxima sea al menos el doble del valor de la velocidad de descarga. Definición de delay pools Los delay pools se define de la siguiente forma: delay_pools [cantidad de delay pools] delay_class [número del delay pool] [clase del delay pool] delay_access [número del delay pool] [ACL] delay_parameters [número del delay pool] [velocidad/velocidad máxima] Ejemplo: delay_pools 1 delay_class 1 1 delay_access 1 allow all delay_parameters 1 32000/64000 Este delay pool consiste en un solo delay pool de clase 1 que será aplicado a todo s los clientes y que tendrá como velocidad de descarga asignada 32 Kbytes por segu ndo y una velocidad máxima de 64 Kbytes por segundo.
Situaciones hipotéticas Situación: Contamos con un enlace de 512 Kbps y queremos usar solo la mitad para la navegac ión a través del proxy y reservar la otra para otros servicios. Solución: delay_pools 1 delay_class 1 1 delay_access 1 allow all delay_parameters 1 32000/32000 Explicación: Se utilizará un solo delay pool de clase 1 y todos los clientes son afectados por este. Los parámetros 32000/32000 significan que el límite es 32 kbytes por segundo ( 512000/2/8). En esta situación se utilizó una clase 1 porque todos los clientes entr an en un mismo bucket utilizando el ancho de banda disponible, una vez que el bu cket se vacíe (no quede ancho de banda disponible) el cliente que haga solicitudes en este estado se verá afectado. Situación: La misma que la anterior pero queremos aplicar el delay pool en el horario de 8: 00 a.m. y 5:00 p.m. de lunes a viernes. Solución: acl horario-laboral time MTWHF 08:00-17:00 delay_pools 1 delay_class 1 1 delay_access 1 allow horario-laboral all delay_parameters 1 32000/32000 Donde: M (lunes), T (martes), W (miércoles), H (jueves) y F (viernes) Una vez terminado el horario laboral, el ancho de banda se podrá usar indiscrimina damente por cualquier cliente. Situación: Contamos con un enlace de 2 Mbps y queremos asignarle 512 Kbps a un grupo y 256 Kbps a otro sin importar cómo usen el ancho de banda los clientes individuales de cada una de ellos y reservar el ancho de banda restante para otros servicios. Solución: acl grupo1 src 192.168.0.11-192.168.0.30 acl grupo2 src 192.168.0.31-192.168.0.60 delay_pools 2 delay_class 1 1 delay_class 2 1 delay_access 1 allow grupo1 delay_access 1 deny all delay_access 2 allow grupo2 delay_access 2 deny all delay_parameters 1 64000/64000 delay_parameters 2 32000/32000
Explicación: Se definen las ACLs de tipo source para definir cuáles serán los grupos afectados po r cada delay pool, cada delay será de clase 1 ya que no importan los clientes indi viduales. Situación: Contamos un enlace de 512 kbps y queremos usar la mitad para la navegación y que c ada usuario pueda descargar a 8 kilobytes por segundo con rafagas de 16 kilobyte s. Solución: delay_pools 1 delay_class 1 2 delay_access 1 allow all delay_parameters 1 32000/32000 8000/16000 Explicación: Se utilizará un bucket colectivo de 32 Kbytes por segundo y cada cliente podrá desca rgar a una velocidad de 8 Kbytes por segundo con ráfagas de hasta 16 Kbytes. En es te caso particular es interesante el uso de ráfagas porque este valor casi siempre afecta a las descargas de archivos grandes y no pequeños como archivos html, css, jpg, etc, por lo tanto aquellos usuarios que estén navegando sin descargar un fic hero relativamente grande, la velocidad de respuesta será un poco más rápida sin afect ar el ancho de banda, ya que son ráfagas en intervalos bien cortos. Un buen uso de delay pools de Squid cache proxy asegura una mejor administración, control y racionalización del ancho de banda de nuestras redes, tratando de satisf acer las necesidades de los usuarios que hacen uso de este servicio. Les propong o una investigación más exahustiva y una experimentación personal para lograr dominar esta importante característica. Notas Existen hasta cuatro clases de delay pools, en esta entrada solo se trataron las dos primeras clases por ser las más comunes en mi entorno de red. Referencias Squid cache proxy wiki, delay pools Documentación de Squid cache proxy, delay class Documentación de Squid cache proxy, delay parameters Publicado en Tutoriales acerca de proxy, squid Comentarios desactivados JP 2 años atrás hola, muy bueno el post pero tengo una duda. Como hacer para que un grupo descargue ciertas extenciones (ej iso, avi, etc) a una velocidad pero si el archivo se pasa de X tamaño lo limite a otra velocidad pero si los archivos estan en mi red que no le aplique la delay_pools y que otro gru po no tenga esa restricción ?? Salu2s oneohthree 2 años atrás @JP La primera interrogante no creo que se pueda resolver, la segunda puedes especif icar una ACL de tipo dst_domain a las que no apliques los delay_pools, por ejemp lo:
acl misdominios dst_domain .dominio.cu y en el delay pool agregar delay_access 1 allow all !misdominios JP 2 años atrás ok thanks, al menos de 2 uno pa 500 de averaje jejejeje Salu2s oneohthree 2 años atrás @JP Realmente la primera situación no creo que se resuelva directamente con Squid. ¿Reso lviste la segunda con la sugerencia? yaniel 2 años atrás cuando uso las delay pools el sevidor se me pone lento de tal manera que no pued o usarlas tengo la version squid3 otra cosa que veo que cuando las aplico consume demasiado y cuento con un 1 GB d e ram que puedo hacer. y kiero usarlas y mi conexion es de 128 oneohthree 2 años atrás @yaniel Tengo entendido que algunas revisiones de la versión 3 de Squid tienen problemas c on los delay pools, uso la versión 2 por cuestiones personales. Wintch 2 años atrás Muchas gracias por el articulo! Limitar por horario es un golazo! alfredo 2 años atrás Saludos Jp en respuesta a lo que habias preguntado que te dijeron no era posible ps es posible solo en parte, ya que puedes limitar la velocidad de descargas de ciertos archivos (iso,avi,etc)que requieras y tambien puedes identificar el tam año de los archivos a descargar y establacer bloqueo en archivos mayores a la cant idad que desees aca te dejo un enlace para que le estudies y veas que puedes usa r lo unico es que esta en ingles pero creo que ese problema lo solventa nuestro amigo google http://www.squid-cache.org/Doc/config/reply_body_max_size/