QoS y Modelado de tráfico con GNU/Linux
By: Date: septiembre 10, 2013 Categories: Consultoria y Manuales,Personal,Redes y Telecoms

Hace varios años en el 2008 escribí un articulo llamado Administrando anchos de banda en la red usando QoS en GNU/Linux En ese entonces agregue un párrafo que decía lo siguiente.

¿Qué es lo que podemos hacer y que no.?

Podemos controlar todo el tráfico que inicia en nuestra red hacia internet, no podemos controlar el tráfico que inicia en otro lado fuera de nuestra red, y que viene a nuestra red, esto es porque los paquetes vienen en desorden al estilo FIFO desde su punto de origen, existen módulos como el IMQ para Linux que pueden controlar el tráfico que no iniciamos nosotros, mediante discriminación de paquetes con una efectividad del 90% pero no hablare de este modulo aquí.
En realidad si podemos controlar el tráfico que llega del exterior sin el modulo IMQ, solo está condicionado a que debemos tener 2 tarjetas de red físicas, el modulo IMQ se requiere solo cuando es una tarjeta de red con la que se quiere hacer QoS y modelado

Este artículo será un complemento al anterior y deberías leer el anterior antes de continuar con este.

Diferencia de QoS y Modelado de tráfico.

El QoS es calidad de servicio, significa que si tenemos un enlace dedicado exclusivo a dar servicios de red podemos priorizar que servicio pesa más sobre otro, si el WEB es más importante que el corre o el correo más importante que el FTP

La calidad de servicio termina en que se provee un servicio, son los paquetes que enviamos a internet, por ejemplo los paquetes del servidor WEB que enviamos a alguien que consulto nuestra página WEB

El modelado de trafico es lo opuesto, es cuando no damos servicio de red y por lo tanto la calidad en el servicio no importa, el modelado depende del trafico entrante, como en la red de un ciber café, aquí lo importante es que los usuarios puedan navegar aunque otros usuarios tengan abiertas redes de intercambio de archivos que por su forma de operar terminan consumiendo todo el ancho de banda, esto también se puede aplicar a una oficina donde es mas importante entrar a las páginas de banco que al facebook

El modelado de tráfico garantiza el internet en la red LAN para los servicios que se consideran más importantes.

Si ya leiste el articulo anterior no te será difícil entender el siguiente código, de esto solo explicare que se requieren 2 tarjetas de red.

En el ejemplo ETH1 es WAN y ETH0 es LAN

Se ha declarado un ancho de banda de 30 Mbps, cuando se configuran las colas, a la LAN se le configura el doble de ancho de banda debido a que por esta tarjeta pasa el doble de tráfico, al ser consumido el doble de ancho de banda se se le declara 60 Mbps, nos dará 30 Mbps, en la tarjeta WAN no es necesario duplicar el ancho de banda, se pone el ancho de banda real ya que por la WAN solo pasa los paquetes que realmente deben pasar.

Ejemplo de modelado

QoS con modelado de trafico de entrada, se requieren 2 tarjetas fisicas para separar la LAN de la WAN

la terjeta de LAN debe tener doble ancho de banda, la LAN debe tener su ancho de banda real.

tc qdisc del dev eth1 root handle 1: htb default 13
tc qdisc del dev eth0 root handle 1: htb default 13

iptables -t mangle -F

sleep 3

tc qdisc add dev eth1 root handle 1: htb default 13
tc qdisc add dev eth0 root handle 1: htb default 13

tc class add dev eth1 parent 1: classid 1:1 htb rate 30720kbit ceil 30720kbit
tc class add dev eth1 parent 1:1 classid 1:10 htb rate 10240kbit ceil 30720kbit prio 0
tc class add dev eth1 parent 1:1 classid 1:11 htb rate 10240kbit ceil 30720kbit prio 1
tc class add dev eth1 parent 1:1 classid 1:12 htb rate 5120kbit ceil 30720kbit prio 2
tc class add dev eth1 parent 1:1 classid 1:13 htb rate 5120kbit ceil 5120kbit prio 3

tc class add dev eth0 parent 1: classid 1:1 htb rate 61440kbit ceil 61440kbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 20480kbit ceil 61440kbit prio 0
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 20480kbit ceil 61440kbit prio 1
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 10240kbit ceil 61440kbit prio 2
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 10240kbit ceil 10240kbit prio 3

tc qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 5
tc qdisc add dev eth1 parent 1:11 handle 11: sfq perturb 5
tc qdisc add dev eth1 parent 1:12 handle 12: sfq perturb 5
tc qdisc add dev eth1 parent 1:13 handle 13: sfq perturb 5

tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 5
tc qdisc add dev eth0 parent 1:11 handle 11: sfq perturb 5
tc qdisc add dev eth0 parent 1:12 handle 12: sfq perturb 5
tc qdisc add dev eth0 parent 1:13 handle 13: sfq perturb 5

tc filter add dev eth1 protocol ip prio 1 parent 1: handle 1 fw classid 1:10
tc filter add dev eth1 protocol ip prio 2 parent 1: handle 2 fw classid 1:11
tc filter add dev eth1 protocol ip prio 3 parent 1: handle 3 fw classid 1:12
tc filter add dev eth1 protocol ip prio 4 parent 1: handle 4 fw classid 1:13

tc filter add dev eth0 protocol ip prio 1 parent 1: handle 1 fw classid 1:10
tc filter add dev eth0 protocol ip prio 2 parent 1: handle 2 fw classid 1:11
tc filter add dev eth0 protocol ip prio 3 parent 1: handle 3 fw classid 1:12
tc filter add dev eth0 protocol ip prio 4 parent 1: handle 4 fw classid 1:13

#Maquinas con reglas Prioritarias

#Asterisk
#Trafico saliente
iptables -t mangle -A FORWARD -s 192.168.5.90 -j MARK –set-mark 0x1
iptables -t mangle -A FORWARD -s 192.168.5.90 -j RETURN
#Trafico Entrante
iptables -t mangle -A FORWARD -d 192.168.5.90 -j MARK –set-mark 0x1
iptables -t mangle -A FORWARD -d 192.168.5.90 -j RETURN

#WEB STANDART
#Trafico Saliente
iptables -t mangle -A FORWARD -p tcp –dport 80 -j MARK –set-mark 0x2
iptables -t mangle -A FORWARD -p tcp –dport 80 -j RETURN
#Trafico Entrante
iptables -t mangle -A FORWARD -p tcp –sport 80 -j MARK –set-mark 0x2
iptables -t mangle -A FORWARD -p tcp –sport 80 -j RETURN

#WEB Segura SSL
#Trafico Saliente
iptables -t mangle -A FORWARD -p tcp –dport 443 -j MARK –set-mark 0x2
iptables -t mangle -A FORWARD -p tcp –dport 443 -j RETURN
#Trafico entrante
iptables -t mangle -A FORWARD -p tcp –sport 443 -j MARK –set-mark 0x2
iptables -t mangle -A FORWARD -p tcp –sport 443 -j RETURN

En el siguiente video se demuestra el efecto del modelado.

Similar al QoS cualquier paquete que no sea marcado con su prioridad para ser procesado por una cola se va a la cola default de LAN y WAN. En LAN la cola es de 5 Mbps y en WAN como explique se duplica a 10Mbps, sin embargo en la práctica modela 5 Mbps quedando sincronizado a 5Mbps de subida y 5Mbps de bajada.

En el video también se modela el trafico a páginas WEB se le da la prioridad 2 que esta ligada a una cola que tiene un ancho de banda garantizado de 10Mbps de los 30Mbps disponibles, al igual que el QoS el modelado aprovecha al 100% el ancho de banda disponible, le he garantizado 10 Mbps pero si están disponibles los otros 20Mbps los usara.

En el video al hacer la prueba de velocidad da 25Mbps, esto se debe a que tengo tráfico en mi red sin modelar, si recordando que la cola default tiene 5 Mbps, significa que el trafico de mi red privada esta saliendo por los 5Mbps default, dejando solo 25Mbps para las prioridades mas altas.

One thought on “QoS y Modelado de tráfico con GNU/Linux

  1. Usa: Google Chrome Google Chrome 59.0.3071.115 en Windows Windows NT - Detectado...

    Hola. Muchas Gracias por la informacion, tus post me sirven de mucho. Pero me podrias recomendar alguna Aplicacion Web de administracion para QoS. He probado Mastershaper y WebHTB pero ya estan obsoletas para la nueva version de PHP. Requiero que usuarios poco entendidos en “modo texto” puedan modificar la calidad de servicio en algun momento, por eso requiero una interface grafica.
    Gracias por la ayuda.

Responder a Melissa Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *