Siguiente: Instalación y Configuración
Subir: HTB
Anterior: Base teórica de HTB
  Índice General
En este apartado vamos a ver como crear unas reglas sencillas para controlar el tráfico
en una interfaz de red. En este caso la interfaz elegida será la eth0. Hay que tener en cuenta
que el tráfico que se controla es el tráfico de salida de la interfaz. Es posible controlar el envio
de paquetes, ya que se puede retrasar el envío de unos para beneficiar el envio de otros.
La recepción de paquetes no se puede controlar, y por tanto el tráfico entrante
en la interfaz tampoco. En el ejemplo vamos a crear una clase raiz de la que
descienden dos clases.
Lo primero que hay que hacer es asociar una clase padre a una interfaz.
Para hacer esto se usa el comando:
tc qdisc add dev eth0 root handle 1: htb default 2
Este comando asocia a la interfaz eth0 una disciplina de colas HTB y le
asigna el manejador 1. El manejador es sólo un nombre o identificador para referirse
a la clase en los siguientes comandos. ''default 2'' significa que el tráfico que no coincida con ningún filtro
irá la clase 1:2A.12.
Con los siguientes comandos se crean tres clases:
tc class add dev eth0 parent 1: classid 1:1 htb rate 100kbps ceil 100kbps
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 30kbps ceil 100kbps
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 10kbps ceil 100kbps
La primera línea crea la clase raiz 1:1 que pertenece a la disciplina de colas 1:.
La clase raíz permite que sus hijos puedan compartir el ancho de banda entre ellos, pero
la clase raíz no lo puede compartir con otra. Se podrían crear todas
las clases que quiesiéramos bajo la disciplina de colas 1: pero el exceso de ancho
de banda de una clase no estaría disponible para el resto,
entonces lo que se hace es crear una clase raíz bajo la disciplina de colas htb, y el
resto son hijas de esta clase raíz. Así que con las líneas anteriores hemos
creado una clase raíz y dos clases que dependen de ésta. Las dos clases hijas pueden compartir
el ancho de banda que no usen entre ellas.
Los parámetros rate y ceil tienen el siguiente significado:
- Rate. Indica el ancho de banda que tiene reservada una clase. Como mínimo siempre
va a tener disponible ese ancho de banda.
- Ceil. Indica el máximo ancho de banda que puede llegar a tener una clase. Cuando el resto
de clases deja libre un ancho de banda, éste es compartido con el resto de clases, pues el
máximo que puede tener una clase cuando recibe de otras es igual al valor de ceil. Como máximo
el valor de ceil tiene que ser el ancho de banda del que dispone su clase padre. Por defecto
si no se indica nada el valor de ceil es igual al valor de rate.
Además de estos parámetros hay otros dos que merece la pena destacar:
- Burst. El parámetro burst mide el tamaño de ráfaga. Es decir, el parámetro
burst controla la cantidad de paquetes que se pueden enviar seguidos de una
misma clase a la máxima tasa que se dispone por hardware.
- Prio. El parámetro prio sirve para determinar la prioridad de una clase. Como
hemos visto en la sección anterior, las clases con más prioridad son servidas antes y el
retardo es menor. La clase más prioritaria tiene el valor 0.
Para asignar una dispciplina de colas a cada una de estas clases hoja o finales
se usa el comando:
tc qdisc del dev eth0 parent 1:10 handle 10 sfq perturb 10
tc qdisc del dev eth0 parent 1:12 handle 12 sfq perturb 10
Hemos asignado una disciplina sfq, que es la que recomienda el autor de HTB. Esta disciplina
de colas Stochastic Fairness Queueing es una una implementación sencilla de la familia de algoritmos de colas justas.
Hace un reparto equitativo entre todos el tráfico que pertenece a dicha clase.
Hay que asignar qué paquetes corresponden a cada clase, para esto se utiliza el comando:
tc filter dev eth0 protocol ip parent 1:0 prio 1 u32 $filtro
donde filtro puede ser muchas cosas, y en particular se puede indicar:
- Origen de un paquete. Los paquetes que provengan de ese origen iran a esa clase.
- Destino de un paquete. Los paquetes que tengan ese destino perteneceran a dicha clase.
- Marcados de paquetes. Los paquetes que tengan una marca en concreto.
- Puertos origen.
- Puertos destino.
Siguiente: Instalación y Configuración
Subir: HTB
Anterior: Base teórica de HTB
  Índice General
Jesús Martín
2003-09-16