Guía simple de colas en Mikrotik

Hay muchos artículos en Internet dedicados a la limitación de velocidad y al tráfico compartido en los equipos MikroTik, pero casi todos consideran solo el Árbol de colas, que requiere una comprensión profunda y es redundante en muchas tareas y puede reemplazarse por Colas simples.


Colas simplificadas: un mecanismo para dividir la capacidad del canal y priorizar el tráfico vinculado a un objetivo específico. El tráfico entrante y saliente se calcula en relación con el objetivo.


Hay tres opciones para los objetivos: ip, subred, interfaz. Puede agregar múltiples objetivos para una regla.


Parte teórica


Moldeadores, planificadores y colas


La velocidad de datos se mide en relación con la información transmitida en bits por segundo de tiempo, bit / seg. La unidad de bits es pequeña, por lo que utilizan los prefijos kilo (kbit / sec), mega (Mbit / sec), gig (Gbit / sec).


La velocidad de transmisión de paquetes a través de redes de comunicación siempre es igual a la velocidad de transmisión del medio (por ejemplo, 100Mbit / seg para Ethernet 100BASE-TX). Si es necesario reducir esta velocidad, un dispositivo intermedio, como un enrutador, que recibe paquetes de una interfaz a la velocidad máxima, los envía desde otro con cierto retraso, si los paquetes exceden el límite de velocidad establecido, se almacenan en una cola y se envían de acuerdo con el Primero en entrar, Primero en salir ( FIFO), si la cola está llena (falta o tamaño cero), el enrutador descarta los paquetes.


Límite : límite de velocidad administrativa para el tráfico proveniente de la interfaz.
Shaper (Shaper) : un algoritmo de software que retrasa y descarta el exceso de paquetes.
Scheduler (Sheduler) : un algoritmo que decide cómo almacenar y enviar paquetes que van más allá del límite.
Colas : algoritmos de almacenamiento y priorización para pasar el tráfico.


Ejemplos gráficos del trabajo de un modelador y planificador.


Usar un moldeador fuera de línea



Usar un moldeador con un programador



Colas simples en flujo de paquetes


Las colas simples vienen después del árbol de colas, a veces se usan colas simples para limitar rápidamente el tráfico a uno (o varios) usuarios, sin interferir con el árbol de colas.


Flujo de paquetes simplificado para aquellos interesados


Mecánica de colas: ninguna, pfifo, pcq


none : sin cola; si se supera el límite, se descartan todos los paquetes nuevos.


pfifo es un algoritmo fifo orientado a paquetes. Almacena el número de paquetes especificados en la configuración. Usado por defecto en Colas simples.



pcq (por conexión en cola) : todo el tráfico se divide en subcolas según un conjunto de condiciones. Desde cada sub cola, se envía una parte del tráfico alternativamente. El espacio desocupado está ocupado por el tráfico recién llegado. Si el lugar en la subcola se agota, los paquetes destinados a este se descartan.



Considere una pequeña parte de la configuración:
Velocidad : límite de velocidad para cada una de las subcolas.
Límite : tamaño de la cola secundaria en kilobytes.
Límite total : el tamaño total de todas las subcolas en kilobytes.
La relación Límite / Límite total se selecciona en función de la situación. Por defecto, 40 colas (2000/50), sujetas a su máximo llenado de tráfico.
Ráfaga : sobre él será menor.
Clasificador : basado en qué dividir el tráfico en colas.
El clasificador toma turnos de diferentes conexiones, si vas a [IP] -> [Firewall] -> [Conexiones], entonces se puede notar que la mayoría de las conexiones contienen la dirección y el puerto del remitente (src. Address, src. Port) y el receptor ( dst. dirección, dst. puerto).


Discutimos las colas simples, por lo que, por simplicidad, consideraremos que filtramos solo el tráfico que proviene de la interfaz wan, en este caso, en relación con el destino, el tráfico saliente (carga) se clasificará por src. dirección y la entrada (descarga) por dst. dirección


La clasificación por puerto ayudará a evitar la situación de obstruir la cola con el tráfico de una aplicación, si una aplicación produce muchas conexiones salientes (por ejemplo, torrent o web. Navegador con un montón de pestañas), entonces su src será diferente. el puerto y el tráfico también se dividirán en colas.


Modelado dinámico usando PCQ


Si la velocidad se establece estrictamente, cada subflujo tendrá una velocidad determinada y no podrá excederla hasta que la velocidad total de todos los subflujos exceda el límite superior (en colas simples es el límite total), en este caso la velocidad de todos los subflujos disminuirá proporcionalmente



Si la velocidad se establece en 0, la restricción más alta se compartirá entre todas las transmisiones secundarias. De hecho, esto es conformación dinámica.



Si la velocidad se establece en 0 y no se especifica el límite total para colas simples, entonces la velocidad entre los subprocesos se dividirá en función de un límite superior, si las colas no están anidadas, esto es una limitación de la interfaz física. Si su plan de tarifas es más bajo, parte del tráfico se eliminará en el equipo del proveedor y las colas no beneficiarán.



Los tipos de colas restantes (SFQ, RED) tienen sus propias peculiaridades y aplicaciones y también se pueden usar para Colas simples, pero ahora no nos interesan.


Etiquetado de paquetes


Sí, en colas simples puede usar tráfico etiquetado. Este no es un requisito previo (a diferencia del Árbol de colas), pero le permite alejarse de las limitaciones del objetivo.


El etiquetado de tráfico se produce en [IP] -> [Cortafuegos] -> [Destrozar], en total hay tres tipos de etiquetas: Conexión, Paquete, Ruta. Cada paquete puede contener una etiqueta de cada tipo. Una vez en la barra, el paquete pasa uno por uno de acuerdo con todas las reglas, si hay dos etiquetas de conjunto fundidas, la regla inferior sobrescribirá la etiqueta de la superior. Para evitar sobrescribir, puede deshabilitar el paso de un paquete por la cadena en la primera regla ( passtrought=no ).


Al configurar colas, solo puede usar etiquetas de paquete ( action=mark-packet ). Pero para mejorar el rendimiento (las etiquetas de conexión se comprueban más rápido que examinar las condiciones en cada paquete), se recomienda marcar las conexiones ( action=mark-connection ) primero, y luego los paquetes en esta conexión ( action=mark-package ). La regla con las conexiones de premarcado no siempre es cierta, pero si ha llegado a este entendimiento al crear colas, entonces debe usar el Árbol de colas.


Puede marcar el tráfico de tránsito en cualquiera de las cadenas de Packet Flow, pero en la mayoría de los casos prefiero usar hacia adelante, porque En esta etapa, se conocen las direcciones del destinatario con el remitente y los nombres de las interfaces entrantes y salientes.


Ejemplo de etiquetado de tráfico


 /ip firewall mangle add action=mark-connection chain=forward connection-state=new dst-port=5060,10000-20000 new-connection-mark=output-sip-and-rtp passthrough=yes protocol=udp src-address=192.168.100.0/24 add action=mark-packet chain=forward connection-mark=output-sip-and-rtp new-packet-mark=output-packet-sip-and-rtp passthrough=no 

¿Qué es la explosión?


Por lo general, el límite de velocidad se entiende como un cierto valor estático del límite por segundo al alcanzar qué paquetes se descartan o se ponen en cola. La ráfaga funciona con un valor promedio por unidad de tiempo, esto permite utilizar velocidades más altas (pico) en cortos períodos de tiempo y limita la velocidad con una carga constante en el canal.


El límite máximo es la principal limitación.
Límite de ráfaga : velocidad máxima, tiene prioridad sobre el límite máximo cuando se observa la velocidad promedio especificada.
Umbral de ráfaga : velocidad del límite.
Tiempo de explosión - tiempo.


El objetivo obtiene la velocidad del límite de ráfaga, pero cada segundo se calculará la velocidad promedio para el tiempo de ráfaga. Si la velocidad promedio durante un tiempo dado excede el Umbral de ráfaga, entonces el usuario estará limitado al Límite máximo, si la velocidad promedio vuelve a la normalidad, entonces el objetivo recibirá nuevamente el Límite de ráfaga.


Estudio de caso de explosión

Regla de ráfaga:



Diagrama de flujo que muestra el cambio de velocidad objetivo:



Y cómo se ve el cambio de velocidad objetivo:



Si está interesado en el tema Ráfaga, le recomiendo leer la información en la wiki , hay gráficos y tablas en función de los cuales será mejor comprender cómo los valores de Umbral y Tiempo afectan el límite de velocidad.


Límite de diferencia en y límite máximo



Límite a : velocidad garantizada para la regla. Es deseable que la suma de todos los límites en no exceda el ancho de banda del canal. Siempre menos que el máximo.
Límite máximo: velocidad máxima para la regla. Si el "presupuesto" de la cola lo permite, se asignará el ancho de banda máximo.


Por lo general, solo se indica el límite máximo en las colas simplificadas y esto funciona bien, pero en una configuración de cola en cascada, se deben especificar ambos límites.


Parte práctica


Las colas simples se configuran en [Colas] -> [Colas simples].
Las reglas se procesan alternativamente de arriba a abajo, la primera regla adecuada se aplica al paquete que pasa. De hecho, se puede hacer una excepción de cualquier regla colocando una regla más específica arriba.


Límite de velocidad de host / subred / interfaz


Por lo general, se usa cuando es necesario matar la velocidad de un usuario específico.
Nombre: cualquier nombre
Destino: dirección, subred o interfaz.
Carga de destino: límite de velocidad de salida.
Descarga de Targer: límite de velocidad entrante.


Límite de velocidad a 1Mbit / seg:



 /queue simple add max-limit=1M/1M name=Limit-For-100.200 queue=default/default target=192.168.100.200/32 

En Estadísticas, puede ver la velocidad actual del objetivo, la cantidad de paquetes en la cola y la cantidad de paquetes descartados.


Límite de velocidad para un recurso remoto


Opción sin etiquetar paquetes.


En el campo dst, se puede especificar de manera similar al objetivo: ip, subred, interfaz. En las condiciones de Internet moderno, esto no es suficiente, pero puede ser útil para pequeñas empresas y límites de velocidad entre oficinas.



 /queue simple add dst=192.168.200.10/32 max-limit=10M/10M name=Limit-For-Fileserver target=192.168.100.0/24 

División equitativa de canales entre participantes de subred (pcq)


Una regla que salvará la subred de su hogar u oficina de la captura exclusiva de canales (en el ejemplo 50 Mb / s, ajuste a su canal) por un usuario.



Las colas de pcq especificadas están presentes en la configuración básica, pero adjunto capturas de pantalla en caso de cambios.



 # /queue type add kind=pcq name=pcq-upload-default pcq-burst-rate=0 pcq-burst-threshold=0 pcq-burst-time=10s pcq-classifier=src-address pcq-dst-address-mask=32 pcq-dst-address6-mask=128 pcq-limit=50KiB pcq-rate=0 pcq-src-address-mask=32 pcq-src-address6-mask=128 pcq-total-limit=2000KiB add kind=pcq name=pcq-download-default pcq-burst-rate=0 pcq-burst-threshold=0 pcq-burst-time=10s pcq-classifier=dst-address pcq-dst-address-mask=32 pcq-dst-address6-mask=128 pcq-limit=50KiB pcq-rate=0 pcq-src-address-mask=32 pcq-src-address6-mask=128 pcq-total-limit=2000KiB # Simple queues /queue simple add max-limit=50M/50M name=Limit-Equivalent queue=pcq-upload-default/pcq-download-default target=192.168.100.0/24 

En la pestaña Estadísticas, puede ver cuántos hilos pcq hay actualmente en la cola.



Tráfico etiquetado


La opción dst es bastante limitada y si desea utilizar nombres de dominio o listas de direcciones, deberá recurrir al marcado de tráfico. Por ejemplo, eliminaremos las restricciones para el dominio yandex.ru (sí, hay un montón de cdn'ok conectado allí y otras cosas, y para el funcionamiento normal, deberá agregarlos).


En una versión reciente, fue posible agregar nombres de dominio a las listas de direcciones, mikrotik los resolverá automáticamente y agregará entradas dinámicas.



Marcado del tráfico http / https (conexión y paquetes en la conexión) para las direcciones especificadas:





Regla en cola simple:



 #   /ip firewall address-list add address=yandex.ru list=ForQueues add address=yastatic.net list=ForQueues #    /ip firewall mangle add action=mark-connection chain=forward connection-state=new dst-address-list=ForQueues dst-port=80,443 new-connection-mark=Mark-ForQueues passthrough=yes protocol=tcp src-address=192.168.100.0/24 add action=mark-packet chain=forward connection-mark=Mark-ForQueues new-packet-mark=Mark-Packet-ForQueues passthrough=no #  Simple Queue /queue simple add max-limit=1M/1M name=Limit-For-Yandex packet-marks=Mark-Packet-ForQueues target=192.168.100.0/24 

Colas en cascada


Todo lo que se dijo anteriormente se refiere a limitar y dividir la velocidad entre los participantes de la red, es hora de tocar el tema de la priorización del tráfico. Por lo general, se requiere para el tráfico interactivo (voip, vcs, ssh, rdp, ...) en un canal limitado y ocupado.


Para las colas en cascada, el parámetro padre es responsable, que se refiere a la cola "padre". Para trabajar, todo el tráfico de las colas "secundarias" debe ser capturado por el padre.


El parámetro Priority es responsable de qué tráfico se agregará a la cola anteriormente, solo funciona en colas secundarias (o en "parent" si no tienen "child"), puede tomar valores de 1 (prioridad más alta) a 8 y no tiene nada común con las etiquetas QoS (DSCP; TOS).


Premarcado de tráfico:



 /ip firewall mangle add action=mark-connection chain=forward connection-state=related,new dst-port=5060,10000-20000 in-interface=br-lan new-connection-mark=mark-conn-voip passthrough=yes protocol=udp add action=mark-packet chain=forward connection-mark=mark-conn-voip new-packet-mark=mark-pkg-voip passthrough=no add action=mark-connection chain=forward connection-state=new dst-port=80,443 in-interface=br-lan new-connection-mark=mark-conn-web passthrough=yes protocol=tcp 

Colas en SimpleQueue:







 /queue simple add limit-at=24M/24M max-limit=25M/25M name=main target=10.10.10.0/24 add limit-at=5M/5M max-limit=8M/8M name=voip packet-marks=mark-pkg-voip parent=main priority=1/1 queue=pcq-upload-default/pcq-download-default target="" add limit-at=10M/10M max-limit=20M/20M name=web packet-marks=mark-pkg-web parent=main priority=2/2 queue=pcq-upload-default/pcq-download-default target="" add limit-at=10M/10M max-limit=20M/20M name=other packet-marks=mark-pkg-other parent=main priority=3/3 queue=pcq-upload-default/pcq-download-default target="" 

Ahora, si necesita hacer una restricción para una IP, simplemente coloque la regla frente a la cascada de colas.


Epílogo


Simple Queues es una herramienta bastante interesante y funcional para configuraciones domésticas y SOHO, con una regla (sin recurrir al etiquetado de tráfico) puede resolver el problema de la captura de canales por un dispositivo. Pero, si usa FastTrack, entonces olvídese de las colas: el tráfico pasará de ellas.


Para configuraciones más complejas, hay un árbol de Colas (árboles HTB).

Source: https://habr.com/ru/post/es420117/


All Articles