вторник, 13 апреля 2021 г.

Настройка шейпера с Burst на Mikrotik

Иногда бывает необходимость ограничить скорость определенным устройствам или пользователям в сети, поэтому сейчас я расскажу, как ограничить скорость на роутере Микротик, да и не только на роутере, а вообще на всём, на чём стоит RouterOS.
Заходим на роутер винбоксом и идем по пути IP->DHCP Server->leases, смотрим тут IP-адрес того устройства, скорость для которого нам надо шейпить. Открываем лизу с этим адресом и нажимаем Make static. Это нужно для того, чтоб когда устройство отключиться от роутера и подключится по новой, оно получило старый ip-адрес, иначе подключиться и получит от роутера другой адрес и вся затея с шейпингом провалится. Более того, мы потом можем себе же получить этот адрес от роутера.


Дальше идем в Queues и в первой же вкладке нажимаем на плюсик, создавая правило шейпинга.


Теперь давайте разберемся, как настроить обычный шейпер.
В поле Name можем писать всё, что душе угодно, это просто имя правила.
Дальше Target, сюда пишем IP-адрес того самого устройства, которому будем резать скорость. Вообще в это поле можно писать целые подсети, интерфейсы, виланы, можно маркировать трафик и сюда писать какой именно трафик будет резаться, но сейчас нам достаточно только одного адреса 32-рой маской. Маску, кстати, в таком случае можно не писать.
Dst - можно не трогать, это для того, чтоб указать к какому адресу или сети мы хотим ограничить скорость для того, кто прописан в поле Target. В Dst можно указать внешний интерфейс роутера, при этом у того, кого мы укажем в Target, локальная сеть будет без ограничений, трафик будет резаться только на внешний интерфейс.
Max Limit - это и есть то поле, в котором указывается максимально допустимая скорость на загрузку и на отгрузку. Давайте заполним поля и нажмем Apply.
Вот так легко и просто ограничили скорость до 15 мегабит в обе стороны.

Теперь давайте разберемся с бёрстами. Burst - это временное предоставлекние большей скорости, чем указано в Max Limit. Чуть ниже у нас есть три поля.
Burst Limit - это тот же макс лимит, что и выше, только временный. Например, можно поставить 50 мегабит, и шейпер даст на короткое время 50 мегабит, после чего обрежет до 15-ти мегабит, установленных в Max Limit.
Burst Threshold - это среднее значение скорости за определенное время. Давайте временно поставим 20 мегабит, из дальнейших обьяснений вы поймете что это и зачем нужно.
Burst time - это время, за которое идет оценка скорости. Тоесть, это не время, на которое дается Burst Limit, а время, за которое оценивается и усредняется скорость. Давайте поставим пока 5 секунд и я сейчас объясню, как это всё работает.
Теперь давайте смотреть, как это работает. Роутер ведет учет трафика за последние 5 секунд, которые мы поставили в Burst Time. Например, первую секунду мы качнули 10 мегабит, вторую - 15, третью - 7, четвертую - один мегабит, пятую - 11 мегабит. Ситема всё это сплюсует и разделит на 5. Получится 8,8 мегабит средняя скорость за последние 5 секунд. Тут придет шестая секунда, которая станет пятой, а первая - будет забыта и всё будет пересчитано заново. Например, на шестой секунде мы качнем 14 мегабит. В итоге (15+7+1+11+14)/5=9,6 мегабит. Это средняя скорость за последних 5 секунд. И она будет сравниватся с параметрм Burst Threshold. Пока эта скорость не достигнет того значения, которое указано в Burst Threshold, роутер не будет ограничивать скорость до того значения, которое прописано в поле Max Limit, он будет ограничивать скорость до того значения, которое вписано в Burst Limit. Едва средняя скорость перевалит за 20 мегабит - роутер тут же обрежет скорость до 15 мегабит. Потом, когда скорость упадет ниже 20-ти, снова даст 50 мегабит. В итоге получится вот такой ломанный график, на котором иногда будут пики в 50 мегабит, но в основном - 15 мегабит. Чтоб сделать график более плавным - можно играться с парамметрами Burst Threshold и Burst Time. Например, вот так.
Как видите, 50 мегабит уже немного на дольше дает роутер. Тот провал на втором пике - это мой домашний hap lite не справился с нагрузкой и не смог правильно отрисовать, скорость он при этом давал исправно.
Теперь вы знаете, как настроить queues на микротике с burst, знаете для чего нужен Burst Threshold и Burst Time. Знаете как работает Burst. А на этом всё.