QoS y Cortafuegos

From Luniwiki
Jump to: navigation, search

Actualización de kernel

Este articulo se creo con un kernel 2.6.19. Actualmente lo he implementado de nuevo en un kernel 2.6.24. Hay ciertos cambios que se han tenido que realizar para que funcione, ya que se han encontrado errores en las colas efsq. El limite de kernel 2.6.24 es por que he encontrado los elementos funcionales para este kernel, ninguno posterior.

Software y Kernel

L7-filter

Esta implementación necesita el filtrado de paquetes de capa 7 l7-filter. L7-filter es un filtro que permite identificar el trafico a alto nivel por protocolo, es costoso a nivel de recursos CPU.

emerge -av l7-filter

Hay que leer el readme para saber con que kernel funciona correctamente sino no parche el kernel. En este caso l7-filter funcionaba con el kernel 2.6.18 o 19. Por lo que tuve que rebajar al kernel 2.6.19.

ESFQ

EsFQ es un manejador de filtros que permite repartir el trafico de manera equitativa por ip y no por conexión.

patch -p1 < ../esfq/esfq-2.6.19.2/esfq-kernel.patch

A partir de cierta versión se encontrarón errores en las colas esfq, aunque todavía se puede implementar tal cual, se ha parcheado directamente sfq para añadirle las funciones de hash de esfq. Es decir que desaparece ESFQ !!!! Para parchear SFQ directamente:

cd /usr/src/linux
patch -1 --dry-run <  ../sfq-2.6.24.1/sfq-kernel.patch

Y si todo es correcto

patch -p1 < ../sfq-2.6.24.1/sfq-kernel.patch

Luego elgimos la opción de SFQ dentro de QoS, y no olvidamos de compilar el kernel,...

IMQ

IMQ es una interfaz virtual intermedia de colas. Esta interfaz nos permite limitar el trafico que pasa por ella. El objetivo es limitar el trafico en nuestro router y no en el del ISP, para poder controlar el trafico de bajada. Para ello hay que parchear el kernel manualmente.

cd /usr/src/linux
patch -p1 < ../imq/linux-2.6.19-imq3.diff

Iptables

Hay que compilar iptables con las opciones de l7-filter y imq.

cd /usr/src/linux
make prepare (para que prepare el kernel con los parches)
echo "net-firewall/iptables extensions imq -ipv6 l7filter" >> /etc/portage/package.use
emerge -av iptables

Compilación de kernel

Hay que seleccionar dentro de la configuración del kernel el match de layer 7 y el de imq para netfilter. Y activar el interfaz de red virtual IMQ.

cd /usr/src/linux
make menuconfig
make && make modules_install

Iproute2

Iproute 2 es la herramienta que nos va a permitir controlar el trafico con los comandos ip y tc

emerge -av iproute2

Cuando usamos el nuevo tc con sfq en vez de esfq ya no entiende los destino hash,... tenemos que parchear iproute2 con el patch de sfq.

cd /usr/src/iproute-2.6.24-rc7
patch -p1 --dry-run < ~/sfq-2.6.24.1./sfq-iproute2.patch

Y si parece que funciona

patch -p1 < ~/sfq-2.6.24.1./sfq-iproute2.patch
make
make install

Para ver las colas

tc -s -d class show dev imq0
tc -s -d class show dev imq1

Referencias

--Daniel Simao 12:38 8 may 2007 (CEST)