La priorización de tráfico es un tipo de calidad de servicio o QoS enfocado en clasificar los tipos de conexiones por servicio y ordenar su importancia de acuerdo a un orden preestablecido por el administrador de la red.
Como operador, debes saber que no todo el tráfico que fluye por tu red es igual de importante. Por ejemplo, el tráfico perteneciente a la telefonía VoIP o a las peticiones de resoluciones de nombres DNS, son mucho más importantes que el tráfico que un usuario esté generando por el uso de redes P2P o el originado por la visualización de un vídeo en YouTube.
Teniendo en cuenta el auge de los servicios de vídeo bajo demanda (VoD), tales como: Netflix, HBO, YouTube, etc. Así como de los servicios de vídeo por streaming (IPTV) y los demandantes que pueden llegar a ser en términos de consumo de datos, muchos operadores buscan implementar políticas de priorización de tráfico con las que asegurar que el tráfico más importante (como puede ser la telefonía VoIP mencionada anteriormente) se anteponga realmente en el flujo de tráfico que transcurre a través de su salida a Internet, permitiendo que ante una congestión en la red, los servicios fundamentales no se vean afectados.
Primeramente, identificaremos el tráfico que queremos priorizar, esto se realiza en la tabla MANGLE del firewall del RouterOS. Será necesario incidir en que no debemos usar fasttrack para que las reglas a aplicar tengan efecto. Seguiremos el siguiente procedimiento:
Marcamos conexiones DNS
- /ip firewall mangle add action=mark-connection chain=prerouting comment=”DNS CONN” connection-state=new new-connection-mark=dns_conn port=53 protocol=udp
Marcamos paquetes DNS usando connmark anterior
- /ip firewall mangle add action=mark-packet chain=forward comment=”DNS PAQ” connection-mark=dns_conn new-packet-mark=dns_paq passthrough=no
Marcamos conexiones VoIP
- /ip firewall mangle add action=mark-connection chain=prerouting comment=”VOIP CONN” connection-state=new new-connection-mark=voip_conn port=5060 protocol=udp
Marcamos paquetes VoIP usando connmark anterior
- /ip firewall mangle add action=mark-packet chain=forward comment=”VOIP PAQ” connection-mark=voip_conn new-packet-mark=voip_paq passthrough=no
Marcamos conexiones eMail
- /ip firewall mangle add action=mark-connection chain=prerouting comment=”EMAIL CONN” connection-state=new new-connection-mark=mail_conn port=25,587,995 protocol=tcp
Marcamos paquetes eMail usando connmark anterior
- /ip firewall mangle add action=mark-packet chain=forward comment=”EMAIL PAQ” connection-mark=mail_conn new-packet-mark=mail_paq passthrough=no
Debes seguir marcando cada uno de los servicios a los que quieras establecer una prioridad. Cuanto mejor sea la identificación de los servicios, más exacta será la clasificación de los mismos y podrás establecer las políticas de priorización de una forma más exacta. En este artículo hemos expuesto varios ejemplos, sin embargo, para un entorno de producción real será necesario un marcaje mucho más exhaustivo.
Asimismo, los servicios que no hayas marcado, es decir, todo el tráfico restante, tendrán una marca “no-mark” que podrás utilizar para que todo el tráfico en su totalidad pase por las colas HTB y no haya nada que pueda escaparse, así:
- /ip firewall mangle add action=mark-packet chain=forward comment=”RESTO PAQ” connection-mark=no-mark new-packet-mark=resto_internet_paq passthrough=no
A continuación, hay que crear las colas HTB (Queue Tree) para establecer prioridades en nuestro tráfico. Primero, crearemos las colas globales que definirán la capacidad de nuestra línea y, posteriormente, crearemos las colas hijas en las que estableceremos una prioridad a través de una clasificación numérica del 1 al 8.
Dentro de esta clasificación, el número uno será la prioridad más alta, y el ocho la más baja.
Si nos centramos en las colas secundarias, aquellas con mayor prioridad tendrán la posibilidad de alcanzar su límite máximo antes que la que tenga menor prioridad.
Por ello, imaginemos que nuestra conexión es asimétrica, 100 Mbps de bajada y 20 Mbps de subida, que la interfaz WAN es ether1 y nuestra interfaz LAN será la ether2.
En primer lugar, creamos nuestra cola padre para el total del tráfico de bajada. Es importante no sobrepasar el 95% de nuestra línea como máximo, dejando un margen hasta el límite de nuestra conexión del 5% o más, para que el funcionamiento de las mismas sea correcto y nuestro tráfico se distribuya perfectamente.
/queue tree add max-limit=95M name=GlobalDownload parent=ether2
Posteriormente, crearemos la cola padre para el total del tráfico de subida. De nuevo, intentemos no sobrepasar el 95% de la línea:
/queue tree add max-limit=18M name=GlobalUpload parent=ether1
Una vez las tengamos creadas proseguiremos con las colas hijas, usando las marcas de paquete configuradas antes en la tabla mangle.
limit-at es la tasa de bits que será garantizada para la cola designada. Max-limit es la tasa de bits que podrá alcanzar como máximo la cola designada. La suma de los limit-at de todas las colas hijas debe ser menor o igual al max-limit de la cola padre.
El max-limit de cada cola hija debe ser menor que el max-limit de la cola padre.
Para crear la lista de colas hijas para el tráfico de bajada debemos seguir el siguiente procedimiento:
/queue tree add limit-at=50M max-limit=70M name=DNS_Down packet-mark=dns_paq parent=GlobalDownload priority=2
/queue tree add limit-at=2M max-limit=10M name=VoIP_Down packet-mark=voip_paq parent=GlobalDownload priority=1
/queue tree add limit-at=2M max-limit=10M name=eMail_Down packet-mark=email_paq parent=GlobalDownload priority=3
/queue tree add limit-at=40M max-limit=70M name=Resto_Down packet-mark=resto_internet_paq parent=GlobalDownload priority=8
A continuación, creamos la lista de colas hijas para el tráfico de subida:
/queue tree add limit-at=1M max-limit=3M name=DNS_Up packet-mark=dns_paq parent=GlobalUpload priority=2
/queue tree add limit-at=1M max-limit=5M name=VoIP_Up packet-mark=voip_paq parent=GlobalUpload priority=1
/queue tree add limit-at=5M max-limit=10M name=eMail_Up packet-mark=email_paq parent=GlobalUpload priority=3
/queue tree add limit-at=5M max-limit=10M name=Resto_Up packet-mark=resto_internet_paq parent=GlobalUpload priority=8
Gracias al procedimiento seguido en este artículo habréis configurado vuestro árbol de prioridades básico.