В этой статье я опишу как можно настроить QoS на Mikrotik для работы, скажем в небольшой корпоративной сети до 42 компьютеров. Предлагаемая ниже схема маркировки пакетов и шейпинга трафика позволяет получать хорошие задержки при практически полной загрузке канала интернета. Так же можно добиться довольно быстрого открытия страниц при скачке торрентов другими пользователями. Канал делится поровну между качающими в любой конкретный момент пользователями. В общем, это хорошо реализованая идея динамического шейпинга на микротик. Кроме того предлагается пиринговый трафик отделить от основного и шейпить по другому.
Отмаркируем пакеты пиринговых (гостевых) ресурсов byfly. Дабы упростить задачу воспользуемся терминалом, чтобы указать те адреса, которые мы будем считать пиринговыми:
Откроем терминал и вставим туда команду:
ip firewall address-list
Далее вставим:
add address=86.57.151.0/27 disabled=no list=Guest add address=82.209.245.151 disabled=no list=Guest add address=194.158.206.240 disabled=no list=Guest add address=194.158.206.241 disabled=no list=Guest add address=194.158.206.246 disabled=no list=Guest add address=86.57.246.0/24 disabled=no list=Guest add address=93.84.112.0/21 disabled=no list=Guest add address=178.124.128.0/21 disabled=no list=Guest add address=91.149.189.0/25 disabled=no list=Guest add address=91.149.189.128/26 disabled=no list=Guest add address=93.125.53.0/24 disabled=no list=Guest add address=178.172.148.0/24 disabled=no list=Guest add address=91.149.157.192/26 disabled=no list=Guest add address=93.125.30.0/23 disabled=no list=Guest add address=86.57.251.28 disabled=no list=Guest add address=86.57.253.1 disabled=no list=Guest add address=193.232.248.79 disabled=no list=Guest add address=193.232.248.80 disabled=no list=Guest add address=194.158.202.59 disabled=no list=Guest add address=82.209.195.15 disabled=no list=Guest add address=86.57.250.0/23 disabled=no list=Guest add address=91.149.157.0/25 disabled=no list=Guest add address=194.158.199.177 disabled=no list=Guest add address=82.209.240.241 comment=DNS disabled=no list=Guest add address=82.209.243.241 comment=DNS disabled=no list=Guest
В результате выполнения должно получится что-то подобное:
Отмаркируем соединения пользователей на пиринговые (гостевые) ресурсы. Для этого переходим на вкладку IP-Firewall-Mangle и нажимаем плюсик +:
На вкладке Advanced выберем список адресов Guest:
Выберем маркировку соединенений меткой guest-connection:
Создадим правило маркировки гостевых пакетов:
Чтобы исключить дальнейшую перемаркировку пакетов последующими правилами снимаем галочку с passthrough:
В результате получаем 2 правила маркировки гостевых соединений и пакетов:
Нажмём ещё раз плюсик, чтобы создать правило маркировки оставшихся пакетов, как идущих из интернета. Сначала маркируем все соединения:
Маркируем пакеты идущие через соединения internet-connection:
Получится четыре правила в Mangle:
Настроим Simple Queues для канала интернета в 6M/0.5M и скорость на ADSL порту 12M/0.8M. Настроим шедуллер для исходящего трафика. Будем его делить между пользователями поровну классифицируя согласно IP копьютеров в сети.
Так же настроим шедуллер для входящего трафика. Трафик классифицируем:
Создадим родительскую очередь All, через которую будет проходить весь трафик. Укажем сети, в которых находятся наши клиенты и ограничения скорости для них 10M/0.5M. Нужно указывать скорости, которые ниже на 15-25% чем скорости на ADSL порту, иначе возможно увеличение задержек и неправильная работа шейпера, при использовании канала на полную. Очередь All всегда должна быть под 0 номером в таблице.
Перейдём на вкладку Advanced и выберем пакеты, которые мы от маркировали в мангле метками «internet-packet«, «guest-packet«. Установим гарантированные скорости равными максимальным и включим для них ранее созданные шедуллеры «up-pcq» и «down-pcq»:
Создадим дочернюю очередь, к которой будет относится пиринговый «гостевой» трафик. Target Address – пишем сеть, в которой находятся клиенты, в нашем случае — 192.168.88.0/24. Чтобы всё хорошо работало, Max limit в квоте Guest должен быть немного меньше чем в квоте All. Очередь Guest должна быть под номером 1 в таблице.
Одно из условий правильной работы HTB шейпера: cумма гарантированных скоростей «limit-at» дочерних очередей должна быть меньше максимальной скорости «max-limit» родительской очереди. Установим 2m/64k гарантированной полосы на пиринговые ресурсы. Увеличим приоритет квоты Guest до 7, и выберем правильный шедуллер (Queue Type):
Создадим дочернюю по отношению к All очередь ByFly, по которой пойдёт интернет трафик. Из опыта скажу, что 10% канала 6m/512k придётся зарезервировать для нормальной работы шейпера. Это связано с особенностями устройства HTB деревьев и тем, что провайдер иногда может немного недодавать вам полосу. Кроме того, возможно дрожание в канале, если резервировать меньше. Итак, Max-limit устанавливаем 5400k/430k для нашего канала.
Укажите для очереди ByFly гарантированные скорости, тип шедуллера, родительскую очередь, приоритет и маркированные пакеты согласно скрину:
Создадим в очереди ByFly очередь для пользователя user1 c такими настройками:
- максимальная скорость 5m/256k
- IP адрес 192.168.88.254
- имя квоты для него user1
Пакеты становящиеся в очередь: internet-packet.
Шедуллеры: up-pcq down-pcq.
Родительская очередь: ByFly.
Приоритет: 5.
Гарантированая полоса 128k/10k, выделяемая пользователю, позволит создать до 42 очередей в родителе ByFly для клиентских компьютеров (5400k/128k=42 очереди, 430k/10k=43 очереди).
После добавления пользователей дерево выглядеть будет так в порядке обработки очередей:
Или так, в порядке старшинства очередей: