QoS y Cortafuegos
Contents
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
- Packet Shaping de Gentoo
- Uso de QoS para equilibrar tráfico por IP y limitar tráfico P2P
- Linux Advanced Routing & Traffic Control
- Implantación de QoS en un entorno GNU/Linux
- IMQ
- SFQ and ESFQ for Linux 2.6
--Daniel Simao 12:38 8 may 2007 (CEST)