Está en la página 1de 31

MikroTik RouterOS

Taller de Prácticas Qos

Fuente original: http://mum.mikrotik.com/presentations/CZ09/QoS_Megis.pdf

Traducido por el usuario: fran_almeria para el foro de Ryohnosuke

1
http://www.ryohnosuke.com/
Preguntas y Respuestas
P: ¿Es posible priorizar el trafico por tipo para cada cliente mientras se limita por cada
usuario en el mismo router?
R: Si !

P: ¿Qué necesito para lograrlo?


R: Necesitaras:

1. Diagrama de flujo de paquete


2. HTB (Árbol de colas)
3. Mangle
4. PCQ
5. Lista de direcciones (Address list)

2
http://www.ryohnosuke.com/
Mangle
 Mangle le permite marcar los paquetes IP con marcas especiales.
 Estas marcas son utilizadas por otras funciones del propio router, como el enrutamiento
(routing) o el QoS (Quality of Service)
 Además, la implementación de mangle se utiliza para modificar algunos campos en el
encabezado IP como TOS (DSCP) y TTL.

Hierarchical Token Bucket (HTB)


 Todas las implementaciones de gestión de ancho de banda en RouterOS, están basadas
en HTB
 HTB permite crear estructuras de colas Jerárquicas y determinar relaciones entre
colas.
 RouterOS soporta 3 HTBs virtuales (global-in, global-total y global-out) y uno más justo
antes de cada interfaz de salida.

3
http://www.ryohnosuke.com/
Flujo de paquetes QoS

Este diagrama ha sido creado desde el diagrama de flujo de RouterOS.


http://wiki.mikrotik.com/wiki/Packet_Flow

4
http://www.ryohnosuke.com/
Doble QoS
 Es posible marcar y ajustar el tráfico dos veces en el mismo router:
 Mangle cadena Prerouting – Para un primer marcado
 Global-in HTB – Para el primer ajuste
 Mangle cadena Forward o Postrouting – Para un segundo marcado
 El doble QoS solamente se puede usar mediante el árbol de colas (Queue Tree)

¿Por qué no usar colas simples (Simple Queues)?


 Las colas simples son ordenadas, similar a las reglas de firewall.
 Con el fin de llegar a la cola numero 999 tendrán que ser revisadas las 998 colas
anteriores.
 Cada cola simple puede apoyarse sobre 3 colas separadas:
 Una en Global-In (parte “Directa”)
 Una en Global-Out (parte “Reversa”)
 Una en Global-Total (parte “Total”)

5
http://www.ryohnosuke.com/
Las colas simples y Mangle

6
http://www.ryohnosuke.com/
Árbol de colas (Queue Tree)
 El árbol de colas es unidireccional y puede colocarse en cualquiera de los HTB
disponibles.
 El árbol de colas no tiene ningún orden, todo el tráfico se procesa simultáneamente.
 Todas las colas “hijas”, deben de tener marcas de paquete desde “/ip firewall mangle”.
 Si se coloca en el mismo HTB, la cola simple tomará todo el tráfico desde el árbol de
colas

¿Utilizar Global-Out o una interfaz HTB?


Hay dos diferencias fundamentales:

 En el caso de src-nat (masquerade) Global-Out estará al tanto de las direcciones IP


privadas de los clientes, pero la interfaz HTB no. La interfaz HTB está después de src-
nat.
 Cada interfaz HTB solo recibe tráfico que va a dejar a través de una interfaz en
particular. No hay necesidad de separar el upload o download en mangle.

7
http://www.ryohnosuke.com/
Conclusiones
 Usaremos mangle y el árbol de colas para:
 Marcar trafico por tipo de trafico y en la cadena de mangle prerouting
 Priorizar y limitar el trafico por tipo en Global-In HTB
 Remarcar el trafico por clientes en la cadena Forward de mangle
 Limitar el trafico por cliente en la interfaz HTB

 Es necesario mantener la cantidad de reglas en mangle y colas al mínimo para


aumentar el rendimiento de esta configuración

8
http://www.ryohnosuke.com/
Limitaciones de cliente
 Tenemos una línea ADSL de +/- 40 Mbps
 Tenemos más de 400 clientes y 3 tipos conexiones diferentes:
 Empresarial (4Mbps/1Mbps)
 Estándar (750Kbps/250Kbps)
 Básica (375Kbps/125Kbps)

PCQ
Per Connection Queue es un tipo de cola capaz de dividir
el trafico en sub-flujos basados en los clasificadores
seleccionados

Cada sub-flujo pasara a través de la cola FIFO con el


tamaño de la cola especificado por la opción “pcq-limit” y
maximal rate, especificadas por la opción “pcq-rate”.

9
http://www.ryohnosuke.com/
10
http://www.ryohnosuke.com/
PCQ Parte 2
 Para asegurar que cada sub-flujo PCQ representa un cliente particular, necesitamos
crear 2 tipos diferentes de PCQ:
 PCQ_upload – Dirección de origen como clasificador
 PCQ_download – Dirección de destino como clasificador

 PCQ repartirá el tráfico disponible igualmente entre las sub colas hasta que el pcq-
rate sea alcanzado (si se ha especificado)

11
http://www.ryohnosuke.com/
12
http://www.ryohnosuke.com/
13
http://www.ryohnosuke.com/
Tipos de PCQ – Vista desde Winbox

14
http://www.ryohnosuke.com/
Listas de direcciones (Address Lists)
 Las listas de direcciones se introdujeron para asignar múltiples direcciones IP/rangos
a la misma regla de firewall, para así reducir el numero total de reglas del cortafuegos
e incrementar el rendimiento del router.

 Las listas de direcciones se pueden crear:


 Manualmente
 Automáticamente desde el perfil PPP; especificando la opción address-list, y en el
momento que el cliente se conecte, la dirección será añadida a la lista.
 Automáticamente desde RADIUS – Atributo “Mikrotik:19”

15
http://www.ryohnosuke.com/
16
http://www.ryohnosuke.com/
¿Dónde?

17
http://www.ryohnosuke.com/
Marcado de paquetes
 Use la acción “connection-mark” para clasificar todas las conexiones basadas en clientes
de la lista de direcciones
 Use la acción “packet-mark” para clasificar todo el tráfico basado en marcas de
conexión.
 Preguntas que te harás.
 ¿Qué velocidad debería de disponer para un cliente empresarial si descargo desde un
cliente básico?
 ¿Aun tienes el tráfico sin marcar?

18
http://www.ryohnosuke.com/
Regla de “Marcado de conexión (connection-mark)”

19
http://www.ryohnosuke.com/
Regla de “Marcado de paquete (packet-mark)”

20
http://www.ryohnosuke.com/
Mangle trabajando – Vista desde Winbox

21
http://www.ryohnosuke.com/
Mangle trabajando – Vista de exportación
/ip firewall mangle
add chain=forward src-address-list=Basic_class_client action=mark-connection new-connection-mark=Basic_client_conn
passthrough=y es comment=”mark basic client traffic” disabled=no
add chain=forward connection-mark=Basic_client_conn action=mark-packet new-packet-mark=Basic_client_traffic\
passthrough=no comment=”” disabled=no
add chain=forward src-address-list=Standard_class_client action=mark-connection \
new-connection-mark=Standard_client_conn passthrough=yes comment=”mark Standard \
client traffic” disabled=no
add chain=forward connection-mark=Standard_client_conn action=mark-packet \
new-packet-mark=Standard_client_traffic passthrough=no comment=”” disabled=no

add chain=forward src-address-list=Bussiness_class_client action=mark-connection \


new-connection-mark=Bussiness_client_conn passthrough=yes comment=”mark basic \
client traffic” disabled=no
add chain=forward connection-mark=Bussiness_client_conn action=mark-packet \
new-packet-mark=Bussiness_client_traffic passthrough=no comment=”” disabled=no
add chain=forward action=log log-prefix”” comment=”Check for unmarked traffic” disabled=no

22
http://www.ryohnosuke.com/
Árbol de colas – Vista desde Winbox

23
http://www.ryohnosuke.com/
Árbol de colas – Vista de exportación
/queue tree
add name=”Total_download” parent=local_ether1 packet-mark”” limit-at=0 queue default priority=1 max-limit=0 \
burst-limit=0 burst-threshold=0 burst-time=0s disabled=no
add name=”basic_client_download” parent=Total_download packet-mark=Basic_client_traffic limit-at=0 \
queue=PCQ_down_375k priority=8 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s disabled=no
add name=”standard_client_download” parent=Total_download packet-mark=Standard_client_traffic limit-at=0 \
queue=PCQ_down_375k priority=8 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s disabled=no
add name=”bussiness_client_download” parent=Total_download packet-mark=Bussiness_client_traffic limit-at=0 \
queue=PCQ_down_375k priority=8 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s disabled=no

add name=”Total_upload” parent=public_ether3 packet-mark=”” limit-at=0 queue=default priority=8 max-limit=0 \


burst-limit=0 burst-threshold=0 burst-time=0s disabled=no
add name=”basic_client_upload” parent=Total_upload packet-mark=Basic_client_traffic limit-at=0 \
queue=PCQ_up-125k priority08 max-limit=0 burst-limit=0 burst-thershold=0 burst-time=0s disabled=no
add name=”standard_client_upload” parent=Total_upload packet-mark=Standard_client_traffic limit-at=0 \
queue=PCQ_up-125k priority08 max-limit=0 burst-limit=0 burst-thershold=0 burst-time=0s disabled=no
add name=”bussiness_client_upload” parent=Total_upload packet-mark=Bussiness_client_traffic limit-at=0 \
queue=PCQ_up-125k priority08 max-limit=0 burst-limit=0 burst-thershold=0 burst-time=0s disabled=no

24
http://www.ryohnosuke.com/
PCQ Queue Size (Tamaño de cola)
> Puede tomar solo 40 usuarios para rellenar la cola
(porque total_limit/limit = 2000/50 = 40 usuarios)

> Si es necesario, aumentar “total_limit” y/o disminuir el


valor “limite”

> Debe de haber al menos entre 10 y 20 lugares de paquete


en la cola disponibles por usuario.
Total_limit = X puede tomar hasta
X*(2000 bytes + 200 bytes) de memoria RAM

2000 bytes – buffer para 1 paquete


200 bytes – servicio de datos para 1 paquete

total_limit = 2000 =< 4,2 Mb de memoria RAM


total_limit = 5000 =< 10,5 Mb de memoria RAM

25
http://www.ryohnosuke.com/
26
http://www.ryohnosuke.com/
Ajustes PCQ
 Hay ~340 clientes de clase básica para:
 pcq_limit = 40
 pcq_total_limit = 7000 (~20*340)(~ 15Mb)

 Hay ~40 clientes de clase estándar para:


 pcq_limit = 30
 pcq_total_limit = 1000 (~20*40)(~ 2Mb)

 Hay ~20 clientes de clase empresarial para:


 pcq_limit = 20 (!!!)
 pcq_total_limit = 500 (~20*20)(~ 1Mb)

27
http://www.ryohnosuke.com/
Priorización de tráfico
 Disponemos de una línea ADSL de ~40Mbps/5Mbps
 Tenemos problemas con las comunicaciones on-line (video, audio, VoIP, juegos…)
 Tareas:
 Priorizar el tráfico

28
http://www.ryohnosuke.com/
Pero…¿Dónde?

29
http://www.ryohnosuke.com/
Y…¿Como?

30
http://www.ryohnosuke.com/
Prioridades
 Crear marcas de paquete (packet-mark) en la cadena “Prerouting” de mangle para la
priorización del tráfico en la cola Global-In.
 Servicios prioritarios (Prioridad=1)
 Solicitudes de usuario (Prioridad=3)
 Servicios de comunicación (Prioridad=5)
 Servicios de descarga (Prioridad=7)
 Servicios P2P (Prioridad=8)

31
http://www.ryohnosuke.com/

También podría gustarte