Monthly Archives: julio 2010

MEJORANDO SQUID – CONVIVENCIA CON EL QOS

*Actualización 12/02/2014: Con Squid 3.x podemos configurar sin parches el marcado de paquetes y dar QoS. Por ejemplo, podemos marcar con un numero ToS = 8, a los archivos que obtienen HIT haciendo: “qos_flows local-hit=0x8”, en squid.conf.

Parcheando el squid para soportar el zph (viene por defecto en las versiones 3.1.x y 2.7).
El ZPH (Zero Penalty Hit), es un parche para squid, que permite marcar el campo tos de los paquetes que pasan por este proxy, sólo cuando hay hits en el. Esto es útil cuando queremos diferenciar el tráfico que viene desde internet, y el tráfico que viene desde el squid (con hits), esto preferiblemente es usado junto con el TC (control de tráfico), para hacer las reglas de manejo de ancho de banda. Esto lo podemos apreciara mejor en los ejemplos al final de este howto.
Ahora veamos como parchar el squid para usar el módulo ZPH.
Descargamos “Squid3-Stable8” de las fuentes de squid.

su
cd /usr/src
wget http://ftp.vim.org/internet/squid/squid-3.0.STABLE8.tar.gz
tar -xvzf squid-3.0.STABLE8.tar.gz

Ahora descargamos el parche para la versión 3.0 de squid.
cd squid-3.0.STABLE8
wget http://zph.bratcheda.org/squid-3.0.STABLE8-zph.patch

Aplicamos el parche a las fuentes del squid3.
patch -p1 < ../squid-3.0.STABLE8-zph.patch

Compilamos nuestras fuentes de squid con soporte para el zero penalty hit patch (zph) y delay pools.

./configure –enable-zph-qos –enable-delay-pools
make
make install

#El archivo de configuración se encontrará en “/usr/local/squid/etc/squid.conf”.
#Para reconfigurarlo :
“/usr/local/squid/sbin/squid -k reconfigure”
#Usuario y grupo por defecto :

user:nobody

grup:nogroup

#comprobacion del squid.

#Verificando la instalación

/usr/local/squid/sbin/squid -k parse

#creamos los directorios de cache

chown -R nobody.nogrup /usr/local/squid

/usr/local/squid/sbin/squid -z

#debug del squid

/usr/local/squid/sbin/squid -NCd1

nos debe de salir cerca de la linea final “Ready to serve requests.”

#iniciar el squid

/usr/local/squid/sbin/squid
#Ejemplo de uso:
En squid.conf, colocamos en el campo TOS el valor de 4 en hexadecimales:
zph_tos_local 0x4
Luego en nuestros scripts de TC, hacemos el manejo de los paquetes con el campo TOS de valor 4:

LANDEV=eth1
TC=/sbin/tc
....... Class creadas, y otros filtros .....
$TC filter add dev $LANDEV parent 1:0 protocol ip prio 1 u32 \
match ip protocol 0x6 0xff \
match ip tos 0x4 0xff \
flowid 1:60

Los paquetes de protocolo tcp(0x6) y con el campo tos de valor 0x4, se irán a la clase 1:60.

Nota: Esto puede funcionar bien, pero si no quiere parchear el squid, entonces puede solo reconocer los hits del squid, con ayuda del iptables, esto se puede lograr, reconociendo la cadena “X-Cache: HIT” de nuestros paquetes tcp:

iptables -A OUTPUT -t mangle -p tcp -m string --string "X-Cache: HIT" --algo kmp -j MARK --set-mark 666

Aunque este método es más simple, habría que probarlo mejor.
fuente:http://zph.bratcheda.org/
salu2.

Anuncios