La tasa de conexión (connection-rate) es un comparador de firewall que permite capturar tráfico según la velocidad actual de la conexión.
Cada entrada en la tabla de seguimiento de conexiones (connection tracking) representa una comunicación bidireccional. Cada vez que un paquete se asocia a una entrada en particular, el valor del tamaño del paquete (incluida la cabecera IP) se suma al valor de “connection-bytes” de esta entrada. En otras palabras, “connection-bytes” incluye tanto la carga como la descarga.
Al final del artículo encontrarás un pequeño test que te permitirá evaluar los conocimientos adquiridos en esta lectura
La tasa de conexión (connection-rate) calcula la velocidad de conexión basándose en la variación de “connection-bytes“. La tasa de conexión se recalcula cada segundo y no tiene promedios.
Las opciones “connection-bytes” y “connection-rate” funcionan solo con tráfico TCP y UDP (es necesario especificar un protocolo para activarlas). En “connection-rate” puede especificar el rango de velocidad que desea capturar:
ConnectionRate ::= [!]From-To
From,To ::= 0..4294967295 (integer number)
Ejemplo de regla
Estas reglas capturarán el tráfico TCP/UDP que pase por el enrutador cuando la velocidad de conexión sea inferior a 100 kbps:
/ip firewall filter
add action=accept chain=forward connection-rate=0-100k protocol=tcp
add action=accept chain=forward connection-rate=0-100k protocol=udp
Ejemplo de aplicación: Priorización de tráfico
La velocidad de conexión (connection-rate) se puede utilizar de diversas maneras, pero la configuración más común consiste en detectar y priorizar las conexiones de alto rendimiento (conexiones que mantienen una velocidad rápida durante largos periodos, como descargas P2P, HTTP y FTP). De esta forma, se puede priorizar el resto del tráfico, que suele incluir navegación VoIP y HTTP, así como juegos en línea.
El método descrito en este ejemplo puede utilizarse junto con otras formas de detectar y priorizar el tráfico. Dado que la opción de velocidad de conexión (connection-rate) no tiene promedios, debemos determinar cuál será el margen que identifica las conexiones de alto rendimiento.
Si asumimos que una conexión de navegación HTTP normal tiene una longitud inferior a 500 kB (4 MB) y VoIP no requiere más de 200 kbps de velocidad, entonces cualquier conexión que, después de los primeros 500 kB, siga superando los 200 kbps de velocidad, puede considerarse de alto rendimiento.
Es posible que tenga diferentes “connection-bytes” para la navegación HTTP y diferentes “connection-rate” para VoIP en su red, por lo que le recomendamos investigar antes de aplicar este ejemplo.
Para este ejemplo, supongamos que tenemos una conexión de 6 Mbps de subida y bajada al proveedor de internet.
Configuración
/ip firewall mangle
add chain=forward action=mark-connection connection-mark=!heavy_traffic_conn new-connection-mark=all_conn
add chain=forward action=mark-connection connection-bytes=500000-0 connection-mark=all_conn connection-rate=200k-100M new-connection-mark=heavy_traffic_conn protocol=tcp
add chain=forward action=mark-connection connection-bytes=500000-0 connection-mark=all_conn connection-rate=200k-100M new-connection-mark=heavy_traffic_conn protocol=udp
add chain=forward action=mark-packet connection-mark=heavy_traffic_conn new-packet-mark=heavy_traffic passthrough=no
add chain=forward action=mark-packet connection-mark=all_conn new-packet-mark=other_traffic passthrough=no
/queue tree
add name=upload parent=public max-limit=6M
add name=other_upload parent=upload limit-at=4M max-limit=6M packet-mark=other_traffic priority=1
add name=heavy_upload parent=upload limit-at=2M max-limit=6M packet-mark=heavy_traffic priority=8
add name=download parent=local max-limit=6M
add name=other_download parent=download limit-at=4M max-limit=6M packet-mark=other_traffic priority=1
add name=heavy_download parent=download limit-at=2M max-limit=6M packet-mark=heavy_traffic priority=8
Explicación
En mangle, necesitamos separar todas las conexiones en dos grupos y luego marcar los paquetes de esos dos grupos. Dado que hablamos de tráfico de cliente, el lugar más lógico para marcar sería la cadena (chain) de mangle “forward”.
Tenga en cuenta que en cuanto una conexión “pesada” tenga menor prioridad y la cola alcance el límite máximo (max-limit), la conexión pesada disminuirá su velocidad y la tasa de conexión (connection-rate) será menor.
Esto resultará en un cambio a una prioridad más alta y la conexión podrá recibir más tráfico durante un breve periodo, tras lo cual la tasa de conexión (connection-rate) volverá a aumentar, lo que resultará en un cambio a una prioridad más baja. Para evitar esto, debemos asegurarnos de que las “conexiones pesadas” detectadas permanezcan marcadas como “conexiones pesadas” para siempre.
Firewall IP mangle
Esta regla garantizará que las conexiones “pesadas” permanezcan como tales y marcará el resto de las conexiones con la marca de conexión predeterminada.
/ip firewall mangle
add chain=forward action=mark-connection connection-mark=!heavy_traffic_conn new-connection-mark=all_conn
Estas dos reglas marcarán todas las conexiones pesadas según nuestros estándares, de modo que cualquier conexión que después de los primeros 500 kB aún tenga una velocidad superior a 200 kbps puede considerarse “pesada”:
add chain=forward action=mark-connection connection-bytes=500000-0 \
connection-mark=all_conn connection-rate=200k-100M new-connection-mark=heavy_traffic_conn protocol=tcp
add chain=forward action=mark-connection connection-bytes=500000-0 \
connection-mark=all_conn connection-rate=200k-100M new-connection-mark=heavy_traffic_conn protocol=udp
Las dos últimas reglas en mangle simplemente marcarán todo el tráfico de las conexiones correspondientes:
add chain=forward action=mark-packet connection-mark=heavy_traffic_conn new-packet-mark=heavy_traffic passthrough=no
add chain=forward action=mark-packet connection-mark=all_conn new-packet-mark=other_traffic passthrough=no
Cola (Queue)
Este es un árbol de colas simple (simple queue) que se coloca en la interfaz HTB.
“public” es la interfaz donde se conecta su ISP y “local” es donde se encuentran sus clientes. Si tiene más de una interfaz “public” o más de una “local“, deberá combinar las cargas y descargas por separado y colocar el árbol de colas (queue tree) en la salida global (global-out).
/queue tree
add name=upload parent=public max-limit=6M
add name=other_upload parent=upload limit-at=4M max-limit=6M packet-mark=other_traffic priority=1
add name=heavy_upload parent=upload limit-at=2M max-limit=6M packet-mark=heavy_traffic priority=8
add name=download parent=local max-limit=6M
add name=other_download parent=download limit-at=4M max-limit=6M packet-mark=other_traffic priority=1
add name=heavy_download parent=download limit-at=2M max-limit=6M packet-mark=heavy_traffic priority=8
Breve cuestionario de conocimientos
¿Qué te pareció este artículo?
¿Te atreves a evaluar tus conocimientos aprendidos?
Libros recomendados para éste artículo
(Book) Networking with MikroTik RouterOS: A Practical Approach to Understanding and Implementing RouterOS
Study material for the MTCNA Certification Course, updated to RouterOS v7
Libro Control de Tráfico Avanzado, RouterOS v7
Material de estudio para el Curso de Certificación MTCTCE, actualizado a RouterOS v7










