QoS в роутерах Mikrotik. Настройка маркировки и приоритизации трафика.
Table of contents
Общая информация о QoS
Quality of Service - это общая производительность сети, особенно производительность которую видят пользователи.
Что такое и для чего нужно. Например у нас есть доступ в интернет со скоростью 10 Mbit/s, и также у нас есть 3 компьютера в нашей сети которые подключены к нашему маршрутизатору.

Получается что общая производительность нашей локальной сети 300 Mbit, но при этом выход ‘наружу’ в интернет у нас всего лишь 10 Mbit. Вот в этом и заключается основная проблема. Проблема бутылочного горлышка.
Проблема в том что есть некоторые типы трафика которые к подобному бутылочному горлышку относятся негативно. Это чаще всего какой-то трафик реального времени, то есть realtime трафик(sip, rdp, видео конференц-связь).
Стандартная ситуация которую можно наблюдать это когда один из трех компьютеров качает например через торрент что-то и в этот момент остальные два пользователя нашей локальной сети страдают. Лагает Skype, тормоза rdp соединений, долго грузятся сайты…
QoS поможет тем или иным способом решить вопрос с тем чтобы неприоритетный трафик(torrent или другой паразитный тип трафика) не занимал всю полосу пропускания, а давал выход в первую очередь полезному для нас трафику(без потери пакетов).
Настройки QoS имеют два ограничения скорости:
- CIR (Committed Information Rate) - (limit-AT в RouterOS) в худшем случае, поток будет получать этот объем трафика.
- MIR (Maximal Information Rate) - (Max limit в RouterOS) - наилучший сценарий, скорость, с которой поток может справится, если у родителя очереди есть запасная полоса пропускания.
Также есть возможность указать приоритет. Работает только для дочерних очередей. 8 - самый низкий приоритет, 1 - самый высокий.
В MikroTik есть несколько подходов к реализации QoS
- Simple Queues(простая очередь)
- Queue Tree(дерево очередей)
- Ограничение скорости на интерфейс
Simple Queues
Указываем границы скоростей Для начала мы должны указать на роутере границы наших скоростей. Например от провайдера у нас приходит 10Мбит на приём и отдачу, эти границы и нужно задать роутеру.
Переходим к настройке очередей.

Создаем ‘родителя’.
Здесь указываем Name, в поле Target я выбрал свою подсеть, для которой будут действовать ограничения и приоритеты. Можно прописать вручную, например 192.168.0.0/24. В Dst указал свой WAN интерфейс. То есть правила будут работать для указанной нами подсети трафик которой будет идти через WAN порт. И также пропишем нашу скорость, которую мы получаем от провайдера. Для примера будет 10 Мбит.

Добавляем наши устройства.
Указываем Name, в поле Target - ip адрес устройства. Max Limit указываем 10 Мбит.

Переходим во вкладку Advanced
Здесь Limit At - это минимально гарантированная скорость, которую устройство получит в любом случае.
И обязательно в Parent выбрать нашего родителя.

Если одно из сетевых устройств не использует в какой-то определённый момент свой Limit At, то его скорость будет распределятся между другими устройствами согласно Max Limit и установленных приоритетов.
Таким образом прописываем наши самые важные сетевые устройства. Потом добавляем ограничения для всех остальных, которые не в нашем списке.
Только в поле Target указываем нашу подсеть, а не конкретный ip адрес.

Сумма всех Limit At на всех наших устройствах должна быть меньше или равна скорости получаемой от провайдера.
Также при необходимости во вкладке Advanced можно выбрать приоритет.
В итоге у меня получился вот такой список, где скорость регулируется для двух устройств и всех остальных, которые не в списке.

Маркировка трафика
Для примера я промаркирую весь VPN трафик, дам ему гарантированную скорость и укажу высокий приоритет.
По-правильному нужно сначала маркировать соединения, а уже потом все пакеты в нём.
Заходим в IP > Firewall > вкладка Mangle
Создаём новое правило. Chain выбираем prerouting. Protocol - udp. Dst. Port - 1194

Дальше во вкладке Action Action - mark connection New Connection Mark - vpn
Жмём OK.

Теперь маркируем трафик. Добавляем новое правило. Chain - forward Connection Mark - vpn

Во вкладке Advanced Action - mark packet New Packet Mark - vpn
Жмём OK.

Добавляем комментарий

Теперь возвращаемся к списку очередей и добавляем для vpn трафика.
Создаем новую очередь.
- Name - vpn
- Target - 192.168.10.0/24 (я указал подсеть, а можно например конкретный ip адрес на котором будем vpn трафик)
- Max Limit - 10M

Заходим в Advanced
- Packet Marks - vpn
- Limit At - 1M (гарантированная скорость)
- Priority - 1 (самый высокий приоритет)
- Parent - Parent

По аналогии таким образом можно промаркировать и ограничить практически любой трафик(SSH, web и прочее)
И последним шагом будет передвинуть нашу очередь для vpn в самый верх списка.

Готово.