QoS – Calidad de servicio
Datos? Videos? Voz? 😱😵🤯
La respuesta es SI.
¿Cómo utilizamos Internet?
La mayoría del trafico que cruza por Internet, por lo menos el Internet residencial, es contenido multimedia como películas, videos, llamadas de video, imágenes, imágenes, muchas imágenes!
Per que sucede si en la misma casa donde Mamá y Papá trabajan remotamente y un hijo tiene videollamada de la escuela y otro mira Netflix, mientras el vecino que consiguió la contraseña de tu wifi lava el piso escuchando música en youtube? si en Youtube! con videos! 😰
Todo este trafico sin control hace que todos tengamos una mala experiencia de navegación. Si pudiéramos ajustar los distintos flujos de trafico en distintas prioridades basándonos en su capacidad de recupero podríamos tener todos un Buen Internet!
¿Pero como lo hacemos?
Muchos ISP consideran la posibilidad de invertir en grandes equipos y lograr hacer lo que conocemos como QoS (Quality Of Service) a la totalidad de su red.
Según la experiencia que hemos recogido por lo menos en la utilización de equipos Mikrotik, esta practica no es tan eficiente, las conexiones en los routers Mikrotik no tienen un buen seguimiento por lo que en vez de ayudar a la experiencia la empeora.
¿Dónde esta la clave?
La clave para nosotros esta en el QoS en la residencia del cliente. Innumerables veces nos han llamado empresas y casas para que mejoremos su servicio de Internet, siempre culpando al proveedor y pidiéndonos si nosotros no vendemos Internet porque están cansados de lo mal que funcionan todos los proveedores. Pero, ¿son realmente los proveedores el problema?
La mayoría de las veces NO!
Es muy probable que en tu casa encuentres equipos WiFi o dispositivos de red de calidad muy baja, esto se da porque tendemos a comprar lo barato y pretender que sea una solucion y en este caso nunca mejor aplicada la frase “Lo barato sale caro”. Pero ademas de la mala calidad de los dispositivos que se comercializan en casas de “tecnología” hay un componente que tambien es influyente.
Personas que sepan de redes
Es importante para el buen funcionamiento de las redes, contar con equipos de gama media como mínimo y contar con alguien capacitado para que configure correctamente el equipamiento y pueda darle mantenimiento.
No solo todo esta en la configuración si no también en la capacidad de diseño adecuado para el espacio que necesitamos cubrir.
Muchas veces queremos cubrir con wifi una casa de gran dimensión con un solo dispositivo, y de calidad baja. Esto es directamente inviable.
Un salva vidas para vos
Para ayudar a los administradores de red les dejamos unos scripts que servirán para instalar un QoS en routers Mikrotik.
Te explicamos como instalarlo.
La configuracion se divide en distintos bloques, algunas solo debes copiar y pegar, pero otras requieren un minimo de configuracion.
Address List
Solo copia y pega en una terminal de tu Mikrotik el siguiente codigo.
/system script
add dont-require-permissions=no name=DescargaListas owner=admin policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/ip firewall \
address-list remove [find list=akamai] \r\
\n/ip firewall address-list remove [find list=google]\r\
\n/ip firewall address-list remove [find list=facebook]\r\
\n/ip firewall address-list remove [find list=amazon] \r\
\n/tool fetch mode=http port=801 url=\"http://oficinasm.crenein.com/Address_list_CDN.rsc\"\r\
\n:delay 5;\r\
\n/tool fetch mode=http port=801 url=\"http://oficinasm.crenein.com/Address_list_RedesQueNoEntranAReglas.rsc\"\r\
\n:delay 5;\r\
\n/import file=Address_list_CDN.rsc\r\
\n/import file=Address_list_RedesQueNoEntranAReglas.rsc"
/system script run DescargaListas
Mangle
Solo copia y pega en una terminal de tu Mikrotik el siguiente código.
/ip firewall mangle
add action=accept chain=prerouting comment=RedesQueNoEntranAReglas \
dst-address-list=FNM_RedesQueNoEntranAReglas src-address-list=\
FNM_RedesQueNoEntranAReglas
add action=mark-connection chain=prerouting comment=ClientesPrioritarios \
new-connection-mark=ClientesPrioritarios passthrough=yes \
src-address-list=ClientesPrioritarios
add action=mark-packet chain=prerouting connection-mark=ClientesPrioritarios \
new-packet-mark=ClientesPrioritarios passthrough=no
add action=mark-connection chain=prerouting comment=youtube content=\
googlevideo.com dst-port=443 new-connection-mark=youtube passthrough=yes \
protocol=tcp
add action=mark-connection chain=prerouting content=googlevideo.com dst-port=\
443 new-connection-mark=youtube passthrough=yes protocol=udp
add action=mark-packet chain=prerouting connection-mark=youtube \
new-packet-mark=youtube passthrough=no
add action=mark-connection chain=prerouting comment=WhatsApp \
new-connection-mark=whatsapp passthrough=yes port=3478 protocol=tcp
add action=mark-connection chain=prerouting new-connection-mark=whatsapp \
passthrough=yes port=3478 protocol=udp
add action=mark-connection chain=prerouting content=whatsapp.net dst-port=443 \
new-connection-mark=whatsapp passthrough=yes protocol=tcp
add action=mark-packet chain=prerouting connection-mark=whatsapp \
new-packet-mark=whatsapp passthrough=no
add action=mark-connection chain=prerouting comment=facebook \
dst-address-list=facebook new-connection-mark=facebook passthrough=yes
add action=mark-connection chain=prerouting content=fbcdn.net dst-port=443 \
new-connection-mark=facebook passthrough=yes protocol=tcp
add action=mark-connection chain=prerouting content=whatsapp.net dst-port=443 \
new-connection-mark=facebook passthrough=yes protocol=tcp
add action=mark-packet chain=prerouting connection-mark=facebook \
new-packet-mark=facebook passthrough=no
add action=mark-connection chain=prerouting comment=netflix content=\
netflix.com dst-port=443 new-connection-mark=netflix passthrough=yes \
protocol=tcp
add action=add-dst-to-address-list address-list=nflxvideo.net \
address-list-timeout=1d chain=prerouting content=nflxvideo.net protocol=\
tcp
add action=add-dst-to-address-list address-list=NFANDROID \
address-list-timeout=1d chain=prerouting content=NFANDROID dst-port=80 \
protocol=tcp
add action=mark-packet chain=prerouting new-packet-mark=netflix passthrough=\
no src-address-list=NFANDROID
add action=mark-packet chain=prerouting new-packet-mark=netflix passthrough=\
no src-address-list=nflxvideo.net
add action=mark-packet chain=prerouting connection-mark=netflix \
new-packet-mark=netflix passthrough=no
add action=mark-connection chain=prerouting comment=TikTok content=\
tiktokcdn.com dst-port=443 new-connection-mark=tiktok passthrough=yes \
protocol=tcp
add action=mark-packet chain=prerouting connection-mark=tiktok \
new-packet-mark=tiktok passthrough=no
add action=mark-connection chain=prerouting comment=footprint.net content=\
footprint.net dst-port=443 new-connection-mark=footprint.net passthrough=\
yes protocol=tcp
add action=mark-packet chain=prerouting connection-mark=footprint.net \
new-packet-mark=footprint.net passthrough=no
add action=mark-connection chain=prerouting comment="cablevision flow" \
content=cvattv.com.ar dst-port=443 new-connection-mark=cablevisionflow \
passthrough=yes protocol=tcp
add action=mark-connection chain=prerouting content=cvattv.com.ar dst-port=80 \
new-connection-mark=cablevisionflow passthrough=yes protocol=tcp
add action=mark-packet chain=prerouting dscp=34 new-packet-mark=\
cablevisionflow passthrough=no
add action=mark-packet chain=prerouting connection-mark=cablevisionflow \
new-packet-mark=cablevisionflow passthrough=no
add action=mark-packet chain=prerouting comment=Telegram new-packet-mark=\
meetings passthrough=no port=64458 protocol=udp
add action=mark-packet chain=prerouting comment=GoogleMeet new-packet-mark=\
meetings passthrough=no port=19305 protocol=udp
add action=mark-packet chain=prerouting comment=Zoom new-packet-mark=meetings \
passthrough=no port=8801 protocol=udp
add action=mark-packet chain=prerouting comment="Skype & MicrosoftTeams" \
new-packet-mark=meetings passthrough=no port=3480 protocol=udp
add action=mark-connection chain=prerouting comment=gvt content=gvt1.com \
dst-port=443 new-connection-mark=gvt passthrough=yes protocol=tcp
add action=mark-connection chain=prerouting content=gvt2.com dst-port=443 \
new-connection-mark=gvt passthrough=yes protocol=tcp
add action=mark-packet chain=prerouting connection-mark=gvt new-packet-mark=\
gvt passthrough=no
add action=mark-connection chain=prerouting comment=google dst-address-list=\
google new-connection-mark=google passthrough=yes
add action=mark-packet chain=prerouting connection-mark=google \
new-packet-mark=google passthrough=no
add action=mark-connection chain=prerouting comment=windowsupdate \
dst-address-list=windowsupdate new-connection-mark=windowsupdate \
passthrough=yes
add action=mark-connection chain=prerouting content=windowsupdate.com \
dst-port=80 new-connection-mark=windowsupdate passthrough=yes protocol=\
tcp
add action=mark-connection chain=prerouting content=delivery.mp.microsoft.com \
dst-port=80 new-connection-mark=windowsupdate passthrough=yes protocol=\
tcp
add action=mark-connection chain=prerouting content=\
microsoft.com.edgesuite.net dst-port=80 new-connection-mark=windowsupdate \
passthrough=yes protocol=tcp
add action=mark-packet chain=prerouting connection-mark=windowsupdate \
new-packet-mark=windowsupdate passthrough=no
add action=mark-packet chain=prerouting comment=SpeedTest new-packet-mark=\
speedtest passthrough=no port=8080 protocol=tcp
add action=mark-connection chain=prerouting comment=WoPlay dst-address=\
190.0.160.0/20 new-connection-mark=woplay passthrough=yes
add action=mark-packet chain=prerouting connection-mark=woplay \
new-packet-mark=woplay passthrough=no
add action=mark-connection chain=prerouting comment="Windows RDP" dst-port=\
3389 new-connection-mark=winrdp passthrough=yes protocol=tcp
add action=mark-packet chain=prerouting connection-mark=winrdp \
new-packet-mark=winrdp passthrough=no
add action=mark-connection chain=prerouting comment=Juegos \
new-connection-mark=juegos passthrough=yes port="14000,14001,14008,14020,1\
4021,14022,14023,14024,3658,6115,6015,3478,3479,3480" protocol=tcp
add action=mark-connection chain=prerouting new-connection-mark=juegos \
passthrough=yes port="14000,14001,14008,14020,14021,14022,14023,14024,3658\
,6115,6015,3478,3479,3480" protocol=udp
add action=mark-connection chain=prerouting new-connection-mark=juegos \
passthrough=yes port=10000-10099 protocol=tcp
add action=mark-connection chain=prerouting new-connection-mark=juegos \
passthrough=yes port=10000-10099 protocol=udp
add action=mark-connection chain=prerouting new-connection-mark=juegos \
passthrough=yes port=13000,13005,13200 protocol=tcp
add action=mark-connection chain=prerouting new-connection-mark=juegos \
passthrough=yes port=13000,13005,13200 protocol=udp
add action=mark-connection chain=prerouting comment=freefiremobile.com \
content=freefiremobile.com dst-port=443 new-connection-mark=juegos passthrough=yes protocol=tcp
add action=mark-connection chain=prerouting content=garena.com dst-port=443 \
new-connection-mark=juegos passthrough=yes protocol=tcp
add action=mark-packet chain=prerouting connection-mark=juegos \
new-packet-mark=juegos passthrough=no
add action=mark-packet chain=prerouting new-packet-mark=juegos passthrough=no \
port="14000,14001,14008,14020,14021,14022,14023,14024,3658,6115,6015,3478,\
3479,3480" protocol=udp
add action=mark-packet chain=prerouting new-packet-mark=juegos passthrough=no \
port=10000-10099 protocol=udp
add action=mark-packet chain=prerouting new-packet-mark=juegos passthrough=no \
port=13000,13005,13200 protocol=udp
add action=mark-packet chain=prerouting comment=VPN new-packet-mark=vpn \
passthrough=no port=1723 protocol=tcp
add action=mark-packet chain=prerouting new-packet-mark=vpn passthrough=no \
port=1701 protocol=udp
add action=mark-packet chain=prerouting new-packet-mark=vpn passthrough=no \
port=500 protocol=udp
add action=mark-packet chain=prerouting new-packet-mark=vpn passthrough=no \
protocol=ipsec-esp
add action=mark-packet chain=prerouting new-packet-mark=vpn passthrough=no \
protocol=ipsec-ah
add action=mark-packet chain=prerouting new-packet-mark=vpn passthrough=no \
protocol=gre
add action=mark-packet chain=prerouting comment=Mikrotik new-packet-mark=\
mikroitk passthrough=no port=8291,8728,8729 protocol=tcp
add action=mark-connection chain=prerouting comment=Porno content=\
folieporno.fr dst-port=443 new-connection-mark=porno passthrough=yes \
protocol=tcp
add action=mark-connection chain=prerouting content=pampaporno.com dst-port=\
443 new-connection-mark=porno passthrough=yes protocol=tcp
add action=mark-connection chain=prerouting content=phncdn.com dst-port=443 \
new-connection-mark=porno passthrough=yes protocol=tcp
add action=mark-connection chain=prerouting content=xvideos-cdn.com dst-port=\
443 new-connection-mark=porno passthrough=yes protocol=tcp
add action=mark-connection chain=prerouting content=xnxx-cdn.com dst-port=443 \
new-connection-mark=porno passthrough=yes protocol=tcp
add action=mark-packet chain=prerouting connection-mark=porno \
new-packet-mark=porno passthrough=no
add action=mark-connection chain=prerouting comment=Akamai dst-address-list=\
akamai new-connection-mark=akamai passthrough=yes
add action=mark-packet chain=prerouting connection-mark=akamai \
new-packet-mark=akamai passthrough=no
add action=mark-connection chain=prerouting comment=Amazon dst-address-list=\
amazon new-connection-mark=amazon passthrough=yes
add action=mark-packet chain=prerouting connection-mark=amazon \
new-packet-mark=amazon passthrough=no
add action=mark-connection chain=prerouting comment=Downloads \
connection-bytes=500000000-0 new-connection-mark=downloads passthrough=\
yes
add action=mark-packet chain=prerouting connection-mark=downloads \
new-packet-mark=downloads passthrough=no
add action=mark-connection chain=prerouting comment=HTTPS dst-port=443 \
new-connection-mark=https passthrough=yes protocol=tcp
add action=mark-packet chain=prerouting connection-mark=https \
new-packet-mark=https passthrough=no
add action=mark-connection chain=prerouting comment=QUIC dst-port=443 \
new-connection-mark=quic passthrough=yes protocol=udp
add action=mark-packet chain=prerouting connection-mark=quic new-packet-mark=\
quic passthrough=no
add action=mark-connection chain=prerouting comment=HTTP dst-port=80 \
new-connection-mark=http passthrough=yes protocol=tcp
add action=mark-packet chain=prerouting connection-mark=http new-packet-mark=\
http passthrough=no
add action=mark-connection chain=prerouting comment=Other dst-port=!1-1024 \
new-connection-mark=other passthrough=yes protocol=tcp
add action=mark-packet chain=prerouting connection-mark=other \
new-packet-mark=other passthrough=yes
add action=passthrough chain=prerouting comment=Crenein-QoS-v2.6
Queue Tree padre
En este caso debes copiar este trozo de codigo y modificar los valores qosat, qosmax y parent. Donde:
qosat = Es el valor que se asignara en el Limit-At de la queue tree padre. Por defeecto (100M)
qosmax = Es el valor que se asignara en el Max-Limit de la queue tree padre. Por defeecto (500M)
parent = Es la interfaz en la que funcionara tu QoS para la descarga. Por defecto (ether1). Puedes usar la opción “global” en vez de definir una interfaz especifica, solo ten en cuenta la carga de CPU que global produce.
:global qosat 100M ; :global qosmax 500M ; :global parent ether1
Queue tree hijas
Solo copia y pega en una terminal de tu Mikrotik el siguiente código.
/queue type
add kind=pcq name=Netflix pcq-classifier=dst-address pcq-dst-address6-mask=64 pcq-rate=4906k pcq-src-address6-mask=64
add kind=pcq name=Youtube pcq-classifier=dst-address pcq-dst-address6-mask=64 pcq-rate=4096k pcq-src-address6-mask=64
add kind=pcq name=TikTok pcq-classifier=dst-address pcq-dst-address6-mask=64 pcq-rate=3072k pcq-src-address6-mask=64
/queue tree
add limit-at=$qosat max-limit=$qosmax name="QoS_$parent" parent=$parent
add limit-at=$qosat max-limit=$qosmax name="Netflix_$parent" packet-mark=netflix parent="QoS_$parent" priority=3 queue=Netflix
add limit-at=$qosat max-limit=$qosmax name="WoPlay_$parent" packet-mark=woplay parent="QoS_$parent" priority=2
add limit-at=$qosat max-limit=$qosmax name="Juegos_$parent" packet-mark=juegos parent="QoS_$parent" priority=1
add limit-at=$qosat max-limit=$qosmax name="Footprint.net_$parent" packet-mark=footprint.net parent="QoS_$parent" priority=3
add limit-at=$qosat max-limit=$qosmax name="WindowsUpdate_$parent" packet-mark=windowsupdate parent="QoS_$parent" queue=synchronous-default
add limit-at=$qosat max-limit=$qosmax name="Youtube_$parent" packet-mark=youtube parent="QoS_$parent" priority=5 queue=Youtube
add limit-at=$qosat max-limit=$qosmax name="Facebook_$parent" packet-mark=facebook parent="QoS_$parent" priority=4 queue=synchronous-default
add limit-at=$qosat max-limit=$qosmax name="Google_$parent" packet-mark=google parent="QoS_$parent" priority=6 queue=synchronous-default
add limit-at=$qosat max-limit=$qosmax name="Gvt_$parent" packet-mark=gvt parent="QoS_$parent" priority=7 queue=synchronous-default
add limit-at=$qosat max-limit=$qosmax name="Downloads_$parent" packet-mark=downloads parent="QoS_$parent" queue=synchronous-default
add limit-at=$qosat max-limit=$qosmax name="Other_$parent" packet-mark=other parent="QoS_$parent" priority=7 queue=synchronous-default
add limit-at=$qosat max-limit=$qosmax name="ClientesPrioritarios_$parent" packet-mark=ClientesPrioritarios parent="QoS_$parent" priority=1
add limit-at=$qosat max-limit=$qosmax name="SpeedTest_$parent" packet-mark=speedtest parent="QoS_$parent" priority=1
add limit-at=$qosat max-limit=$qosmax name="Mikrotik_$parent" packet-mark=mikroitk parent="QoS_$parent" priority=1
add limit-at=$qosat max-limit=$qosmax name="VPN_$parent" packet-mark=vpn parent="QoS_$parent" priority=1
add limit-at=$qosat max-limit=$qosmax name="HTTPS_$parent" packet-mark=https parent="QoS_$parent" priority=6 queue=synchronous-default
add limit-at=$qosat max-limit=$qosmax name="QUIC_$parent" packet-mark=quic parent="QoS_$parent" priority=6 queue=synchronous-default
add limit-at=$qosat max-limit=$qosmax name="HTTP_$parent" packet-mark=http parent="QoS_$parent" priority=7 queue=synchronous-default
add limit-at=$qosat max-limit=$qosmax name="WhatsApp_$parent" packet-mark=whatsapp parent="QoS_$parent" priority=2
add limit-at=$qosat max-limit=$qosmax name="CablevisionFlow_$parent" packet-mark=cablevisionflow parent="QoS_$parent" priority=3
add limit-at=$qosat max-limit=$qosmax name="WindowsRDP_$parent" packet-mark=winrdp parent="QoS_$parent" priority=1
add limit-at=$qosat max-limit=$qosmax name="Meetings_$parent" packet-mark=meetings parent="QoS_$parent" priority=1
add limit-at=$qosat max-limit=$qosmax name="Porno_$parent" packet-mark=porno parent="QoS_$parent" priority=7 queue=synchronous-default
add limit-at=$qosat max-limit=$qosmax name="Akamai_$parent" packet-mark=akamai parent="QoS_$parent" priority=6 queue=synchronous-default
add limit-at=$qosat max-limit=$qosmax name="Amazon_$parent" packet-mark=amazon parent="QoS_$parent" priority=6 queue=synchronous-default
add limit-at=$qosat max-limit=$qosmax name="TikTok_$parent" packet-mark=tiktok parent="QoS_$parent" priority=4 queue="TikTok"
Nota: Este QoS instala Queues Types de tipo PCQ con marcas para Netflix y Youtube. Ajustalas a tu gusto.
excelente script
pregunta puedes hacer uno personalizado para mi?¡??
Cuentame el esenario que tienes y veo si puedo ayudarte. Saludos!
Super interesante el aporte!!!
Saludos hermano, excelente script. Tengo una consulta, esta parte del script:
url=\”http://oficinasm.crenein.com/Address_list_CDN.rsc\”\r\
\n:delay 5;\r\
\n/tool fetch mode=http port=801 url=\”http://oficinasm.crenein.com/Address_list_RedesQueNoEntranAReglas.rsc\”\r\
\n:delay 5;\r\
\n/import file=Address_list_CDN.rsc\r\
\n/import file=Address_list_RedesQueNoEntranAReglas.rsc”
No la entiendo, es decir, esta url=\”http://oficinasm.crenein.com/Address_list_CDN.rsc\”\r\ que signifiva?
Miguel son archivos con address-list. Actualmente estan en otra URL
– https://resources.crenein.com/Address_list_CDN.rsc
– https://resources.crenein.com/Address_list_RedesQueNoEntranAReglas.rsc
Podes verlos abriendo el link, verás que solo crean listas.
Bro, excelente Qos, de verdad muy muy bueno, organizado y específico, excelente, muchisimas gracias, si te pudieras comunicar conmigo por correo quisiera preguntarte unas cositas sobre ese Qos, unas dudas que me quedan 🙂
Excelente aporte. Lo pondré a prueba en la empresa.
Gracias.
excelente, script….amigo tengo una duda con respecto a la regla clientes prioritarios..como funcionaria?
Priorizaría a los clientes de esa lista por encima de todo. Por ejemplo si quieres limitar youtube en general, pero quieres que a X clientes no se le aplique nada de QoS los pones en ésta lista.
ok gracias…. excelente ….
Buenas tardes, tengo un rb2011uias-RM, en el mismo he implementado un balanceo de carga recursivo en los primeros 5 puertos y he utilizado los puertos 6-10 en bridge para asignar direcciones por DHCP. Mi pregunta es, que tanto deberia modificar este script para hacerlo funcionar en mi router. Soy nuevo esto, estoy intentando aprender.
Te recomiendo usar otro router distinto para QoS. Deberias tener 1 router de acceso (DHCP) otro para QoS y otro para Balanceo.
Amigo si usas balanceo el doble marcado de paquetes se anulan
Hola, es asi, se deben usar equipos separados.
hola! excelente aporte! mil gracias. me podrias sacar de la ignorancia y decirme cual es la diferencia entre este QoS y el QoS v. 2.6? gracias
Hola, tiene mejoras de marcado en general!
exelente pero deberia haber una guia para cada cosa sin embargo tengo que felicitarte porq me ha servido mucho