Mikrotik – Simple Queues and Queue Tree

Simple Queues

Una manera sencilla de controlar el tráfico de nuestra red es utilizar simple queue. Como su nombre lo indica son simples reglas de prioridad por IP.

Estas reglas te permiten establecer un límite de ancho de banda para 1 o varios equipos definiendo su IP aquí:

Por cierto, esto se encuentra en el menú izquierdo dentro de Queues-> Simple queues. Como siempre haciendo clic en el icono “+”.

Esta regla tiene por nombre prueba, que usualmente puede ser el nombre del equipo como “Servidor”, “Router oficina”, “Gerencia”, etc y estamos estableciendo que el máximo de subida y bajada para la IP 192.168.1.25 (que pueden ser varias dentro de una sola regla) es de 5M. También una opción muy útil se encuentra en la pestaña de avanzado:

Limit At se utilizada para certificar que este equipo tendrá por lo menos x Megas de bajada o subida. Se puede utilizar juntamente con Max Limit para equilibrar el máximo y el mínimo.

Se utilizan estas queues para generar gráficos aquí (https://blog.zenitx.com/mikrotik-graficar-el-consumo-de-mi-red/) si te interesa

Queue Tree

Queue tree es lo mismo que simple queue pero por servicio. Es decir, se establece un mínimo y máximo (dependiendo de tus necesidades) pero por servicio en vez de IP.

Por ejemplo, puede establecer un máximo de consumo para el tráfico HTTP y HTTPS pero establecer prioridad para todo lo que sea RDP (Escritorio Remoto). Usualmente también es recomendable dar prioridad al trafico DNS y si quieres ICMP, ya que son muy livianos y lo importante en este tipo de comunicación es la velocidad.

Primero se deben crear las reglas necesarias en mangle para realizar un marcado de paquetes apropiado, que es el cerebro de todo lo que se hará después:

Adjunto Script con el cual se crearon las reglas de la imagen. Esto es solo el comienzo y puede ser adaptado a las necesidades de cada plataforma:

add action=mark-connection chain=forward comment=RX 
in-interface-list="Redes WAN" new-connection-mark=rx-con passthrough=yes

add action=mark-packet chain=forward connection-mark=rx-con
new-packet-mark=rx-pkt passthrough=yes

add action=mark-connection chain=prerouting comment=TX in-interface-list="Redes LAN"
new-connection-mark=tx-con passthrough=yes

add action=mark-packet chain=prerouting connection-mark=tx-con new-packet-mark=tx-pkt passthrough=yes

add action=mark-packet chain=forward comment=DNS connection-mark=rx-con new-packet-mark=dns-rx-pkt passthrough=no port=53 protocol=tcp

add action=mark-packet chain=forward connection-mark=tx-con new-packet-mark=dns-tx-pkt passthrough=no port=53 protocol=tcp

add action=mark-packet chain=forward comment=UDP connection-mark=rx-con new-packet-mark=udp-rx-pkt passthrough=no protocol=udp

add action=mark-packet chain=forward connection-mark=tx-con new-packet-mark=udp-tx-pkt passthrough=no protocol=udp

add action=mark-packet chain=forward comment="HTTP - HTTPS" connection-bytes=0-1000000 new-packet-mark=http-rx-pkt packet-mark=rx-pkt passthrough=no port=80,443 protocol=tcp

add action=mark-packet chain=forward connection-bytes=0-1000000 new-packet-mark=http-tx-pkt packet-mark=tx-pkt passthrough=no port=80,443 protocol=tcp

add action=mark-packet chain=forward comment="HTTP - HTTPS Downloads" connection-bytes=1000000-0 connection-mark=rx-con new-packet-mark=http-downloads-pkt passthrough=no port=80,443 protocol=tcp

add action=mark-packet chain=forward connection-bytes=1000000-0 connection-mark=tx-con new-packet-mark=http-uploads-pkt passthrough=no port=80,443 protocol=tcp

add action=mark-packet chain=forward comment=Other new-packet-mark=other-rx-pkt packet-mark=rx-pkt passthrough=no

add action=mark-packet chain=forward new-packet-mark=other-tx-pkt packet-mark=tx-pkt passthrough=no

En este ejemplo se marcaron las conexiones de bajada y subida. Luego discriminando por puerto se marcan los paquetes de DNS, RDP, HTTP, etc. Aunque hay muchas maneras de hacerlo a mí me gusta hacerlo así porque es más ordenado.

Luego de hacer todas las marcas que necesitemos en el mangle debemos establecer las reglas en el queue tree. Creando un grupo general y dividiendo en subidas y bajadas así:

Las reglas individuales se agregan especificando la marca de paquete que queremos establecer el máximo del trafico:

Dependiendo de la topología de tu red quizás sea más conveniente utilizar Simple Queue o Queue Tree. Incluso puedes hacer una mezcla de ambas. Esto evita que un solo equipo se consuma todo el ancho de banda y también equilibrar el consumo por servicio, este tipo de configuración puede ayudarte a ver Netflix y jugar online al mismo tiempo gracias a la priorización de paquetes, ya que jugar online es poco peso, pero rápido y Netflix es todo lo contrario.

Si conoces otra aplicación para queue tree o tienes algún aporte por favor dejarlo en los comentarios.

¡Que tengas un buen dia!

José Miguel Concha Parra

José Miguel Concha Parra

12 comentarios

  1. Hola, excelente explicacion. Quiero poner Netflix como prioridad, que tipo de paquetes son los que corresponden a ese servicio? HTTPS, UDP, o cual? Muchas gracias!

    1. Hola Juan, Por lo menos en una prueba que acabo de hacer Youtube es UDP. Quiza Netflix aplique lo mismo. Saludos

  2. Tengo problema con este script, la parte de Download trabaja perfectamente, pero con los Upload no.

    Actualmente tengo 2 LAN en Bridge y 2 WAN (el cual 1 esta dedicado a los servidores y el otros a los equipos). Los WAN los tengo el Fail-Over a través de un script.

    El problema que tengo es que cuando asigno el Bridge a la Interface List de RED LAN, uno de los 2 Download no consume nada (dependiendo de cual tenga la distancia mas corta en el Routes) y el Upload trabaja.

    1. Hola Freddy, Si tienes las conexiones WAN como Fail Over siempre usaras solo 1 de ellas hasta que esta falle se cambiara a la otra. Si quieres usar ambas deberias crear un balanceo en las interfaces.

  3. Muy buen artículo Jose.

    Una duda, quiero manejar un pequeño ISP y quería saber si puedo usar colas simples para limitar el ancho de banda de los clientes y árbol de colas al mismo tiempo para las prioridades de tráfico. No causaría algun conflicto estos dos esquemas?

    1. Hola Alex. No deberia causar conflicto usar ambos esquemas. Aunque por lo que he visto para ISPs solo usan las simple queues con las IPs de los clientes. Suerte con el Proyecto

    1. Me parece que en ese caso se utilizan las Simple Queues; Controlando las IPs de los los clientes o por rangos de IP. Quiza existe una mejor manera pero no me ha tocado investigar a fondo

  4. Hola! las queues limitan sobre una ip especifica, pero hay manera que pueda limitar a determinada IP la bajada de internet pero dentro de la lan sea ilimitado?
    Poe ejemplo tengo una pc que esta conectada a un DVR dentro de la misma LAN y quiero que la comunicacion al mismo sea ilimitada, pero limitar la bajada de internet a 3M por ejemplo. Gracias!

    1. Hola Eber. Posiblemente las conexiones no pasen por el router, si tienes el MK y un Switch las conexiones de un equipo a otro dentro de la LAN pasan por el switch solamente.

      Entonces puedes poner el limite sin que afecte la transmision en la red Local!

  5. Saludos gracias por esta publicacion, Uso una RB7601GS y la actualice a la version 7.7 necesito hacer un sinple Queues a una Interface, pero cuado lo hago no me funciona, pero si me funciona bien el Simple Queues para las direcciones IP.
    ¿Sera que para hacer el Queues a una interface en la version 7.7 hay que configuarar otros parametros, gracias por sus respuestas

Deja una respuesta

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