Mikrotik ограничение канала для юзеров

Сегодня будем пилить канал связи для пользователей в куске подсети и приоретизировать его используя дерево очередей (queue tree) и pcq.

Считаем, что ваш mikrotik обновлен, настроен и уже работает, нужно только добавить функционала.
Наш канал симметричен и составляет чуть более 20Мбит(22), для корректной работы будем считать, что гарантированный канал 20. Не указывайте скорость больше, чем у вас гарантированный канал, лучше поставьте чуть меньше, в противном случае шейпер не сможет правильно рассчитать канал и будет не верно делить полосу.

Для начала необходимо в ip-firewall отключить правило fasttrack connection если такое было создано или донастраивали стандартную конфигурацию.

Для успешного распила нам необходимо:

  1. Списки ip наших сетей или/и список отдельных хостов, на которое будем применять правила.
  2. Будем ли приоретизировать, если будем, то какой трафик по портам.

В нашем случае, имеем сеть 192.168.2.0/24, трафик будем резать для пользователей которые находятся за 192.168.2.128 до 255, т.е. будем использовать маску /25, а так же для 1 хоста (прокси сервер для избранных) 192.168.2.15.
Для начала создаем адреслист:
/ip firewall address-list
add address=192.168.2.128/25 comment="ip for shaper" list= lan-queues
add address=192.168.2.15 comment="ip for shaper" list=lan-queues
add address=192.168.2.0/24 comment="LAN " list=lan

Далее нам необходимо отловить и промаркировать пакеты, которые мы будем замедлять.
По инструкции прохождения трафика, маркировать надо на форворде(закачка) и прероуте(отдача).
Приоритет измеряется от 8 – меньший приоритет до 1 – наивысший.
Весь трафик, кроме определенного будем считать трафиком с низким приоритетом;
/ip firewall mangle
add action=mark-connection chain=forward comment=LOW-ALL-TRAFFIC disabled=no new-connection-mark=LOW passthrough=yes
add action=mark-packet chain=forward comment=LOW-DOWNLOAD connection-mark=LOW disabled=no dst-address-list=lan-queues new-packet-mark=LOW-DOWNLOAD passthrough=yes src-address-list=!lan
add action=mark-packet chain=prerouting comment=LOW-UPLOAD connection-mark=LOW disabled=no dst-address-list=!lan new-packet-mark=LOW-UPLOAD passthrough=yes src-address-list=lan-queues

Далее маркируем определенный трафик как нормальный.
Сюда войдут: HTTP/s, FTP, PROXY и трафик почтовых протоколов. Это будет NORMAL’ьный трафик:
/ip firewall mangle
add action=mark-connection chain=forward comment=NORMAL-HTTP disabled=no layer7-protocol=HTTP new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=NORMAL-HTTPS disabled=no port=443 new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=NORMAL-Proxy disabled=no port=3128,8080 new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=NORMAL-FTP disabled=no port=20,21 new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=NORMAL-SMTP disabled=no port=25 new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=NORMAL-SMTPS disabled=no port=465 new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=NORMAL-IMAP disabled=no port=143 new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=NORMAL-POP3 disabled=no port=110 new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=NORMAL-POP3S disabled=no port=995 new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=NORMAL-IMAPS disabled=no port=993 new-connection-mark=NORMAL passthrough=yes protocol=tcp
add action=mark-packet chain=forward comment=NORMAL-DOWNLOAD connection-mark=NORMAL disabled=no dst-address-list=lan-queues new-packet-mark=NORMAL-DOWNLOAD passthrough=yes src-address-list=!lan
add action=mark-packet chain=prerouting comment=NORMAL-UPLOAD connection-mark=NORMAL disabled=no dst-address-list=!lan new-packet-mark=NORMAL-UPLOAD passthrough=yes src-address-list=lan-queues

К высокому приоритету отнесем трафик туннелей, портов администрирования и RDP
/ip firewall mangle
add action=mark-connection chain=forward comment=HIGH-SSH disabled=no port=22 new-connection-mark=HIGH packet-size=0-1400 passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=HIGH-TELNET disabled=no port=23 new-connection-mark=HIGH passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=HIGH-SNMP disabled=no port=161-162 new-connection-mark=HIGH passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=HIGH-RDP disabled=no port=3389 new-connection-mark=HIGH passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=HIGH-PPTP disabled=no port=1723 new-connection-mark=HIGH passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment=HIGH-L2TP disabled=no port=1701 new-connection-mark=HIGH passthrough=yes protocol=udp
add action=mark-connection chain=forward comment=HIGH-GRE disabled=no new-connection-mark=HIGH passthrough=yes protocol=gre
add action=mark-packet chain=forward comment=HIGH-DOWNLOAD connection-mark=HIGH disabled=no dst-address-list=lan-queues new-packet-mark=HIGH-DOWNLOAD passthrough=yes src-address-list=!lan
add action=mark-packet chain=prerouting comment=HIGH-UPLOAD connection-mark=HIGH disabled=no dst-address-list=!lan new-packet-mark=HIGH-UPLOAD passthrough=yes src-address-list=lan-queues

После нам необходимо создать то самое дерево:
/queue type
add kind=pcq name=PCQ-DOWNLOAD pcq-classifier=dst-address
add kind=pcq name=PCQ-UPLOAD pcq-classifier=src-address

/queue tree
add max-limit=20M name=DOWNLOAD parent=global
add name=HIGH-DOWNLOAD packet-mark=HIGH-DOWNLOAD parent=DOWNLOAD priority=4 queue=PCQ-DOWNLOAD
add name=NORMAL-DOWNLOAD packet-mark=NORMAL-DOWNLOAD parent=DOWNLOAD priority=6 queue=PCQ-DOWNLOAD
add name=LOW-DOWNLOAD packet-mark=LOW-DOWNLOAD parent=DOWNLOAD queue=PCQ-DOWNLOAD priority=8
add max-limit=20M name=UPLOAD parent=global
add name=HIGH-UPLOAD packet-mark=HIGH-UPLOAD parent=UPLOAD priority=4 queue=PCQ-UPLOAD
add name=NORMAL-UPLOAD packet-mark=NORMAL-UPLOAD parent=UPLOAD priority=6 queue=PCQ-UPLOAD
add name=LOW-UPLOAD packet-mark=LOW-UPLOAD parent=UPLOAD queue=PCQ-UPLOAD priority=8

При такой конфигурации, наши пользователи, находящиеся выше 192.168.2.128 будут делить канал в 20мегабит между собой поровну. Если какие то из клиентов не будут использовать интернет, то mikrotik их в расчет брать не будет. Так же не забываем, что внутренний трафик никаким образом замедляться не будет!
Есть вариант попроще, без приоритета по трафику:
/ip firewall address-list
add address=192.168.2.128/25 comment="ip for shaper" list= lan-queues
add address=192.168.2.15 comment="ip for shaper" list=lan-queues
add address=192.168.2.0/24 comment="LAN " list=lan
/ip firewall mangle
add action=mark-packet chain=forward comment=DOWNLOAD disabled=no dst-address-list=lan-queues new-packet-mark=DOWNLOAD passthrough=yes src-address-list=!lan
add action=mark-packet chain=prerouting comment=UPLOAD disabled=no dst-address-list=!lan new-packet-mark=UPLOAD passthrough=yes src-address-list=lan-queues
/queue type
add kind=pcq name=PCQ-DOWNLOAD pcq-classifier=dst-address
add kind=pcq name=PCQ-UPLOAD pcq-classifier=src-address
/queue tree
add max-limit=20M name=DOWNLOAD parent=global
add name=DOWNLOAD packet-mark=DOWNLOAD parent=DOWNLOAD queue=PCQ-DOWNLOAD priority=8
add max-limit=20M name=UPLOAD parent=global
add name=UPLOAD packet-mark=UPLOAD parent=UPLOAD queue=PCQ-UPLOAD priority=8

На этом всё. Настройка завершена. Юзеры теперь не обделят друг-друга интернетом.