Por este motivo descartamos la posibilidad de usar 'Traffic Shaper' ya que no nos permite jugar con el ancho de banda deseado. 2. La segunda y mas potente se realiza gracias al 'Quality Of Service' caracteristica que incorpora tambien el kernel de LiNUX, y con el que podemos controlar el ancho de banda de nuestras conexiones, pero de una manera mucho mas flexible, de manera que podemos asignar anchos de banda no solo por IP, sino tambien a nivel de puertos... con lo que podemos tener toda la libertad del mundo para configurar nuestras conexiones. Aqui no nos quedamos en 256 bits/s, podemos jugar con todo el ancho de banda de nuestra tarjeta. Lo que haremos sera configurar el QoS basandonos en el algoritmo CBQ para implementar un "Traffic Shaper" De esta manera si que podemos controlar perfectamente nuestras conexiones, y es el metodo elegido para nuestro proposito. .- Compilacion del kernel de LiNUX (2.2.14) -. - Pasos a seguir: $ cd /usr/src/linux $ make mrproper $ make xconfig [configurandolo en X-Windows] [En este momento elegir las opciones especificadas abajo] $ make dep $ make clean $ make bzImage $ make modules $ make modules_install [Tras esto se crea la imagen en ./arch/i386/boot] $ cd arch/i386/boot $ cp bzImage /boot/nombre_imagen Ya solo nos queda configurar el arranque de la máquina adecuadamente. Editamos el fichero /etc/lilo.conf para añadir una nueva entrada con el nombre_imagen del kernel que acabamos de crear y ejecutamos 'lilo'. - Opciones del kernel: Processor type and features --> Elegir procesador de la máquina Todas las opciones a 'Si' menos la última Networking Options --> [*] IP: advanced router QoS and/or fair queueing --> [*] QoS and/or fair queueing CBQ packet scheduler CSZ packet scheduler The simplest PRIO pseudoscheduler RED queue SFQ queue TEQL queue TBF queue [*] QoS support [*] Rate estimator [*] Packet classifier Routing table based classifier Firewall based classifier U32 classifier <*> Special RSVP classifier < > Special RSVP classifier for IPv6 [*] Ingres traffic policing SCSI support --> [*] No SCSI support Ethernet (10 or 100 Mbit) --> [*] Ethernet (10 or 100 Mbit) [*] 3COM Cards [*] 3c90x/3c980 B/C Series "Cyclone/Hurricane/Tornado" Support Appletalk Devices --> Token Ring Devices --> WAN Interfaces --> IrDA Subsystem support --> ISDN Subsystem --> Joysticks --> Video for Linux --> Sound --> En estos ocho menus elegir todo NO Para acceder posteriormente a esta configuración lo grabamos en un fichero (por ejemplo, config-shaping-2.2.14-5.0) .- Software necesario .- A parte de tener el kernel compilado con el soporte necesario necesitamos de unas aplicaciones que son las encargadas de pasarle al kernel los parametros necesarios una vez que tenemos compilado a nuestro gusto el QoS. El paquete necesario con dichas utilidades puede ser obtenido de http://www.redhat.com o del CD de dicha distribucion, y los nombres de dichos paquetes son: shapecfg-2.2.12-2.i386.rpm iproute-2.2.4-2.i386.rpm Una vez obtenidos los paquetes, instalarlos mediante la orden: $ rpm -i shapecfg-2.2.12-2.i386.rpm $ rpm -i iproute-2.2.4-2.i386.rpm Solo nos queda generar los files de configuracion que usara el script "cbq" para setear el shaping. Para colocar el shaping en el arranque de la maquina, creamos un enlace en /etc/rc.d/init.d/ a /sbin/cbq. Modificamos el scritp "cbq" para que la utilidad "chkconfig" lo reconozca, para ello añadimos las siguientes 3 lineas al comienzo del script. #!/bin/bash # # cbq: Activate/Deactivate Traffic Shaping Rules. # # chkconfig: 2345 88 8 # description: Activate/Deactivate Traffic Shaping Rules. Activamos el arranque con "chkconfig". $ chkconfig --level 2345 cbq on Los archivos de configuracion iran en el directorio /etc/sysconfig/cbq/ y sus nombres deben seguir un formato determinado: NOTA: Cada shaper (tranfico estrangulado) debe ser descrito en un fichero de configuracion. cbq-1280.Mi_primer_shaper ^^^ ^^^ ^^^^^^^^^^^^^ | | |____ Nombre para el shaper, cualquier palabra. | |_________________ ID (0000-FFFF), un buen ID seria el RATE del shaper |____________________ Siempre debe empezar por "cbq-" Los ficheros de configuracion describen los parametros del shaper, y sus direcciones y puertos de origen y destino. Por ejemplo, configuremos un shaper... /etc/sysconfig/cbq/cbq-1280.Mi_primer_shaper: DEVICE=eth0,10Mbit,1Mbit RATE=128Kbit WEIGHT=10Kbit PRIO=5 RULE=192.168.1.0/24 Esta es la minima configuracion, donde: DEVICE: eth0 - dispositivo donde haremos el control de nuestro trafico 10Mbit - ancho de banda real de la tarjeta 1Mbit - "weight" of :1 class (parent for all shapers for eth0), as a rule of thumb weight=batdwidth/10. Ejemplo para una tarjeta de 100Mbit: DEVICE=eth0,100Mbit,10Mbit RATE: Velocidad del shaper - Kbit,Mbit o bps (bytes por segundo) WEIGHT: "weight" del shaper (CBQ class). Al igual que para DEVICE - approx. RATE/10 PRIO: prioridad del shaper desde 1 hasta 8, donde 1 es la mayor. RULE: [direccion origen][:puerto orig.],[direcc. destino][:puerto destino] Algunos ejemplos: RULE=10.1.1.0/24:80 - todo el trafico para la red 10.1.1.0 por el puerto 80 sera shapeado. RULE=10.2.2.5 - shaper trabaja solo para la IP 10.2.2.5 RULE=:25,10.2.2.128/25:5000 - todo el trafico desde cualquier direccion por el puerto 25 hacia la las direcciones 10.2.2.128 - 10.2.2.255 y puerto 5000 sera shapeado. RULE=10.5.5.5:80, - solo se shapeara el trafico proveniente por el puerto 80 desde la direccion 10.5.5.5 Multiples campos RULE en un fichero de configuracion son permitos,ejemplo: RULE=10.1.1.2:80 RULE=10.1.1.2:25 RULE=10.1.1.2:110 *** ATENCION!!! Todos los shapers solo trabajan para el trafico saliente! Asi, si queremos construir un shaper bidireccional, debemos setear la configuracion para ambas tarjetas de red. Por ejemplo: --------- 192.168.1.1 BACKBONE -----eth0-| linux |-eth1------*[our client] --------- Todo el trafico desde el BACKBONE hacia el CLIENTE sera shapeado a 28Kbit y el trafico desde el CLIENTE hacia el BACKBONE a 128Kbit. Necesitamos 2 archivos de configuracion: --------/etc/sysconfig/cbq/cbq-28.client-out---- DEVICE=eth1,10Mbit,1Mbit RATE=28Kbit WEIGHT=2Kbit PRIO=5 RULE=192.168.1.1 --------/etc/sysconfig/cbq/cbq-128.client-in---- DEVICE=eth0,10Mbit,1Mbit RATE=128Kbit WEIGHT=10Kbit PRIO=5 RULE=192.168.1.1, ------------------------------------------------ ^prestar atencion a la "," - indica direccion ORIGEN! Con todo esto podemos poner en marcha nuestro Traffic Shaper, decir que el algoritmo CBQ es un algoritmo que clasifica los paquetes en espera dentro de una jerarquia de clases 'tipo arbol', los terminales de este arbol se hayan organizados por algoritmos independientes (llamados "disciplinas" en este contexto) los cuales podemos elegir de entre varios algoritmos de colas. Si vamos a querer cambiar los datos de estos ficheros por medio de un cgi sería adecuado cambiar los permisos a los ficheros y al directorio /etc/sysconfig/cbq. Podemos cambiar el grupo a 'nobody' y darle permisos de escritura. * Direcciones de interes: (1) Script cbq.init : ftp://ftp.equinox.gu.net/pub/linux/cbq/cbq.init (2) Utilidades iproute : ftp://ftp.inr.ac.ru/ip-routing Autor: "ShaDoW" http://neofitos.larebelion.com Fuente: Todo-Linux |