Está en la página 1de 5

How To Configurar un proceso de Control de Ancho de banda con HTB en Linux

El primer paso para realizar la configuracin de un proceso de control de ancho de banda con HTB es la instalacin de iproute, este paquete es un conjunto de herramientas muy potentes para administrar interfaces de red y conexiones en sistemas Linux, este paquete nos proporcionara la herramienta tc (Traffic Control) usada para el control de trfico de red. Para este documento realizaremos la configuracin en Debian, por lo que desde la terminal ejecutamos lo siguiente: apt-get install iproute

Finalizando la instalacin estamos listos para la implementacin de un ejemplo de control de ancho de banda con HTB. Vamos a darle solucin a la siguiente situacin: En una empresa de desarrollo de software se hace necesario administrar el ancho de banda entre las diferentes dependencias, un ingeniero de sistemas consultado por el gerente, propuso la siguiente asignacin teniendo en cuenta que el total de ancho de banda disponible es de 10Mbit. Gerencia: 2 Mbit (262 Kilobytes por segundo) [192.168.10.2] Contabilidad: 1 Mbit (132 Kilobytes por segundo) [192.168.20.2, 192.168.20.3] Secretara: 1 Mbit (132 Kilobytes por segundo) [192.168.30.2, 192.168.30.3] Ventas: 1 Mbit (132 Kilobytes por segundo) [192.168.40.2, 192.168.40.3] Desarrollo: 5 Mbit (655 Kilobytes por segundo) [Subred 192.168.50.0] Adems cuando el uso de la red sea mnimo a cada dependencia solo se le permitir el siguiente ancho de banda, para evitar la mala utilizacin de la red: Gerencia: 4 Mbit (524 Kilobytes por segundo) Contabilidad: 1.5 Mbit (196 Kilobytes por segundo) Secretara: 1.5 Mbit (196 Kilobytes por segundo) Ventas: 1.5 Mbit (196 Kilobytes por segundo) Desarrollo: 8 Mbit (1048 Kilobytes por segundo) Adems existe un servidor FTP remoto en el cual funciona un repositorio para la dependencia de Desarrollo. Por ello se hace necesario administrar el ancho de banda de esta dependencia, para asignar 1 Mbit al trafico entrante y saliente del puerto 25 en el cual funciona el servicio ftp. Las terminales invitadas, tomaran un ancho de banda de 1Mbit. Para la opcin Burst de HTB, le daremos un valor de 50kb para todas las dependencias con excepcin de la dependencia Desarrollo, proporcionando de esta manera mayor atencin por parte de la red a esta dependencia.

Para la implementacin de esta solucin el ingeniero de sistemas propuso, la utilizacin de tc del paquete iproute, utilizando HTB. Para proseguir con la implementacin de este ejemplo disearemos inicialmente una estructura grafica basada en la naturaleza de clases y la estructura de rbol de las disciplinas de encolamiento con clases o Classful Queueing Disciplines. Esta estructura nos guiar durante todo el proceso.

Root qdisc

1:
Root Class

1:1

Contabilidad, Secretaria, Ventas

Gerencia

Desarrollo [qdisc]

Default

1:10

1:20

1:30 | Handle 30:

1:40

FTP Repositorio

Default

30:10

30:20

Para generar la anterior estructura, debemos comenzar con definir la disciplina raz o root qdisc, para ello ejecutamos la siguiente lnea, especificando la interfaz en la cual aplicar, y el nmero de clase que tomara por defecto, en nuestro caso es la clase 1:40, por lo que especificamos 40 como default:

tc qdisc add dev eth0 root handle 1: htb default 40

Ahora continuamos con la clase raz, la cual es necesaria para permitir el borrowing o la distribucin de ancho de banda sin usar entre las subclases, las cuales pueden ser creadas directamente como subordinadas de la qdisc raz, pero esto impedira el borrowing. Para crear la clase raz ejecutamos la lnea:

tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit

Ahora crearemos las cuatro subclases de la estructura, para lo cual ejecutamos las siguientes lneas, especificando que estas clases se derivan de la clase 1:1, esto lo hacemos a travs de la clave parent.

//Gerencia tc class add dev eth0 parent 1:1 classid 1:20 htb rate 2mbit ceil 2mbit burst 50k //Secretaria, Contabilidad y Ventas tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1mbit ceil 1mbit burst 50k //Desarrollo tc class add dev eth0 parent 1:1 classid 1:30 htb rate 5mbit ceil 5mbit //Default tc class add dev eth0 parent 1:1 classid 1:40 htb rate 1mbit ceil 1mbit burst 50k

Ahora debemos realizar la configuracin para el rea de desarrollo y el trafico ftp de la misma. Para ello aadiremos una nueva disciplina qdisc que se aplicara a la clase 1:30, especificando un handle 30: con el cual nos referiremos a esta disciplina, adems definimos una clase default para esta nueva disciplina.

tc qdisc add dev eth0 parent 1:30 handle 30: htb default 20

Ahora crearemos las subclases de la disciplina qdisc 30, las clases 30:10 que ser destinada para el trfico FTP, y la clase 30:20 que es la clase default de esta disciplina.

//Clase Default tc class add dev eth0 parent 30: classid 30:20 htb rate 4mbit ceil 4mbit // Clase para trafico FTP tc class add dev eth0 parent 30: classid 30:10 htb rate 1mbit ceil 1mbit

Ya creadas las respectivas clases de la estructura debemos proceder con la creacin de los filtros que asignarn el trfico de las diferentes ips y puertos a sus clases respectivas. Comenzaremos con los filtros aplicables a la clase raz, desde la cual asignaremos el trfico general de nuestra red a la clase respectiva. Especificaremos filtros con direcciones ip estticas para las dependencias Gerencia, Secretaria, Contabilidad y Ventas, ya que solo le permitiremos a estas direcciones acceder a las velocidades de trfico respectivas. Para la dependencia de Desarrollo especificaremos la direccin de una subred, ya que deseamos que cualquier equipo conectado a esta subred acceda a la velocidad de trfico destinada para esta dependencia.

//Filtro Gerencia tc filter add dev eth1 protocol ip parent 1:0 prio 0 u32 match ip src 192.168.10.2/24 flowid 1:20 //Filtro Secretaria, Contabilidad y Ventas tc filter add dev eth1 protocol ip parent 1:0 prio 0 u32 match ip src 192.168.20.2/24 flowid 1:10 tc filter add dev eth1 protocol ip parent 1:0 prio 0 u32 match ip src 192.168.20.3/24 flowid 1:10 tc filter add dev eth1 protocol ip parent 1:0 prio 0 u32 match ip src 192.168.30.2/24 flowid 1:10 tc filter add dev eth1 protocol ip parent 1:0 prio 0 u32 match ip src 192.168.30.3/24 flowid 1:10 tc filter add dev eth1 protocol ip parent 1:0 prio 0 u32 match ip src 192.168.40.2/24 flowid 1:10 tc filter add dev eth1 protocol ip parent 1:0 prio 0 u32 match ip src 192.168.40.3/24 flowid 1:10 //Filtro Desarrollo tc filter add dev eth1 protocol ip parent 1:0 prio 0 u32 match ip src 192.168.50.0/24 flowid 1:30

Ahora especificaremos el filtro aplicable a la disciplina qdisc de la clase 1:30, este tendr la funcin de asignar el trfico que tenga como origen o destino el puerto 25 a la clase 30:10 que fue definida para el control de trfico procedente del Repositorio FTP. El resto del trafico ser asignado a la clase Default 30:20.

//Filtro Repositorio FTP Desarrollo tc filter add dev eth1 protocol ip parent 30:0 prio 0 u32 match ip sport 25 0xffff flowid 30:10 tc filter add dev eth1 protocol ip parent 30:0 prio 0 u32 match ip dport 25 0xffff flowid 30:10

Y con esto hemos terminado de configurar un sistema de Control de Ancho de Banda con HTB. Para realizar pruebas es recomendable realizar pruebas de trfico FTP con una herramienta como Filezilla.