mikrotik-wiki.ru
Главная
Загрузка...

Ограничение скорости на MikroTik — Simple Queue и PCQ

RouterOS 7.xQueues12 мин130 мар. 2026 г.
TelegramVK

Управление полосой пропускания (QoS — Quality of Service) — одна из ключевых задач сетевого администратора. Без ограничения скорости один пользователь с торрентами может "положить" интернет для всего офиса, а VoIP-звонки начнут прерываться из-за нехватки полосы. RouterOS предоставляет мощные инструменты QoS: Simple Queue для базовых задач, PCQ для равномерного распределения канала и Queue Tree для продвинутых сценариев с приоритизацией трафика.

Описание

Зачем нужно ограничение скорости

Типичная ситуация: офис на 20 человек, тариф провайдера 100 Мбит/с. Без QoS:

  • Менеджер скачивает ISO-образ Windows — 80 Мбит/с уходит на него
  • Бухгалтерия не может загрузить отчёт в банк-клиент
  • VoIP-звонки директора "квакают" и прерываются
  • Видеоконференция тормозит

С правильным QoS каждый получает гарантированную полосу, а критический трафик (VoIP, видеосвязь) имеет приоритет.

Механизмы QoS в RouterOS

МеханизмНазначениеСложностьКогда использовать
Simple QueueОграничение по IP/подсетиНизкаяОдин клиент, малая сеть
PCQ (Per Connection Queue)Равномерное распределениеСредняяОфис/гостиница — поровну всем
Queue Tree + MangleПриоритизация по типу трафикаВысокаяVoIP, видео, игры — приоритетный QoS

Терминология

  • max-limit — максимальная скорость (жёсткий потолок)
  • limit-at — гарантированная скорость (CIR — Committed Information Rate)
  • burst-limit — скорость в режиме burst (кратковременное превышение)
  • burst-threshold — порог, при превышении которого burst отключается
  • burst-time — время расчёта средней скорости для burst
  • target — IP-адрес или подсеть, к которой применяется очередь
  • parent — родительская очередь для иерархии

Настройка

Simple Queue — базовое ограничение

Simple Queue — самый простой инструмент. Работает по принципу: указываете target (IP или подсеть) и max-limit (максимальная скорость upload/download).

[admin@MikroTik] >
# Ограничение для одного хоста: 10 Мбит/с загрузка, 5 Мбит/с отдача
/queue/simple/add name="PC-director" target=192.168.88.10/32 \
  max-limit=5M/10M comment="Директор"

# Ограничение для подсети: 50 Мбит/с на всю подсеть
/queue/simple/add name="Accounting-VLAN" target=192.168.10.0/24 \
  max-limit=10M/50M comment="Бухгалтерия VLAN 10"

# Ограничение с гарантированной полосой
/queue/simple/add name="VoIP-server" target=192.168.88.50/32 \
  max-limit=2M/2M limit-at=1M/1M priority=1/1 \
  comment="VoIP сервер — приоритетный"

Формат скорости: upload/download. Значение 5M/10M означает 5 Мбит/с upload и 10 Мбит/с download.

Simple Queue с Burst

Burst позволяет кратковременно превышать лимит. Это удобно для веб-сёрфинга: страницы загружаются быстро (burst), а длительные скачивания ограничиваются до max-limit.

[admin@MikroTik] >
# Обычная скорость 5 Мбит/с, burst до 10 Мбит/с
/queue/simple/add name="User-burst-example" target=192.168.88.20/32 \
  max-limit=5M/5M \
  burst-limit=10M/10M \
  burst-threshold=4M/4M \
  burst-time=16s/16s \
  comment="С burst: обычно 5M, кратковременно до 10M"

Как работает burst:

  1. Пользователь начинает загрузку — получает burst-limit (10 Мбит/с)
  2. RouterOS считает среднюю скорость за burst-time (16 секунд)
  3. Когда средняя превышает burst-threshold (4 Мбит/с) — burst отключается
  4. Скорость падает до max-limit (5 Мбит/с)
  5. Когда средняя опускается ниже threshold — burst снова доступен

Параметры burst:

ПараметрЗначениеОписание
max-limit5M/5MОбычная скорость
burst-limit10M/10MСкорость при burst
burst-threshold4M/4MПорог отключения burst
burst-time16s/16sОкно расчёта средней скорости

PCQ — равномерное распределение канала

PCQ (Per Connection Queue) — это тип очереди, который автоматически делит полосу пропускания поровну между всеми активными пользователями. Вместо создания отдельного правила для каждого IP, вы создаёте один queue type и одну очередь.

Пример задачи: офис 20 человек, тариф 100 Мбит/с. Каждый должен получить не более 5 Мбит/с download и 2.5 Мбит/с upload.

[admin@MikroTik] >
# Шаг 1: Создаём PCQ-тип для download
/queue/type/add name=pcq-download-5M kind=pcq \
  pcq-rate=5M pcq-classifier=dst-address

# Шаг 2: Создаём PCQ-тип для upload
/queue/type/add name=pcq-upload-2.5M kind=pcq \
  pcq-rate=2500k pcq-classifier=src-address

# Шаг 3: Применяем через Simple Queue
/queue/simple/add name="Office-PCQ" target=192.168.88.0/24 \
  max-limit=20M/100M \
  queue=pcq-upload-2.5M/pcq-download-5M \
  comment="Офис: 100M/20 = 5M каждому"

Ключевой параметр — pcq-classifier:

  • dst-address — для download (классификация по адресу получателя = IP пользователя)
  • src-address — для upload (классификация по адресу отправителя = IP пользователя)

Если PCQ rate установить в 0, канал делится динамически: при 2 активных пользователях каждый получит 50 Мбит/с, при 20 — по 5 Мбит/с:

[admin@MikroTik] >
# Динамическое деление канала (без фиксированного лимита на пользователя)
/queue/type/add name=pcq-download-dynamic kind=pcq \
  pcq-rate=0 pcq-classifier=dst-address pcq-total-limit=2000

/queue/type/add name=pcq-upload-dynamic kind=pcq \
  pcq-rate=0 pcq-classifier=src-address pcq-total-limit=2000

/queue/simple/add name="Office-dynamic" target=192.168.88.0/24 \
  max-limit=20M/100M \
  queue=pcq-upload-dynamic/pcq-download-dynamic \
  comment="Динамическое деление канала"

Queue Tree + Mangle — продвинутый QoS

Queue Tree позволяет строить иерархию очередей с приоритизацией. Это самый мощный, но и самый сложный механизм. Используется совместно с Mangle для маркировки пакетов.

Задача: канал 100 Мбит/с, три класса трафика:

  • VoIP — приоритет 1, гарантия 10 Мбит/с
  • Web — приоритет 4, гарантия 40 Мбит/с
  • Bulk (торренты, обновления) — приоритет 8, без гарантии, остатки канала
[admin@MikroTik] >
# === Шаг 1: Маркировка пакетов через Mangle ===
/ip/firewall/mangle

# Маркировка VoIP трафика (SIP + RTP)
add chain=forward protocol=udp dst-port=5060-5061 \
  action=mark-packet new-packet-mark=voip passthrough=no \
  comment="VoIP SIP"
add chain=forward protocol=udp dst-port=10000-20000 \
  action=mark-packet new-packet-mark=voip passthrough=no \
  comment="VoIP RTP"

# Маркировка по DSCP (если VoIP-оборудование ставит DSCP EF)
add chain=forward dscp=46 \
  action=mark-packet new-packet-mark=voip passthrough=no \
  comment="VoIP DSCP EF"

# Маркировка Web трафика (HTTP/HTTPS)
add chain=forward protocol=tcp dst-port=80,443 \
  action=mark-packet new-packet-mark=web passthrough=no \
  comment="Web HTTP/HTTPS"

# Маркировка DNS
add chain=forward protocol=udp dst-port=53 \
  action=mark-packet new-packet-mark=web passthrough=no \
  comment="DNS"

# Всё остальное — bulk
add chain=forward action=mark-packet new-packet-mark=bulk passthrough=no \
  comment="Bulk — all other traffic"

# === Шаг 2: Queue Tree ===
/queue/tree

# Родительская очередь (потолок канала)
add name="Total-Download" parent=global max-limit=100M \
  comment="Total download bandwidth"

# VoIP — приоритет 1
add name="VoIP-Download" parent=Total-Download \
  packet-mark=voip priority=1 \
  limit-at=10M max-limit=20M \
  comment="VoIP: гарантия 10M, макс 20M"

# Web — приоритет 4
add name="Web-Download" parent=Total-Download \
  packet-mark=web priority=4 \
  limit-at=40M max-limit=80M \
  comment="Web: гарантия 40M, макс 80M"

# Bulk — приоритет 8
add name="Bulk-Download" parent=Total-Download \
  packet-mark=bulk priority=8 \
  limit-at=0 max-limit=100M \
  comment="Bulk: без гарантии, до 100M если канал свободен"

Приоритеты в RouterOS: 1 — наивысший, 8 — наименьший. При перегрузке канала трафик с приоритетом 1 (VoIP) обслуживается первым.

Приоритизация VoIP через DSCP

Если VoIP-оборудование (IP-телефоны, АТС) устанавливает DSCP-метки, можно использовать их для приоритизации без Mangle:

[admin@MikroTik] >
# Просмотр DSCP-меток в проходящем трафике
/tool/sniffer/quick port=ether1 ip-protocol=udp

# Установка DSCP EF для VoIP трафика (если оборудование не ставит)
/ip/firewall/mangle/add chain=forward protocol=udp dst-port=5060-5061 \
  action=change-dscp new-dscp=46 passthrough=yes \
  comment="Set DSCP EF for SIP"
/ip/firewall/mangle/add chain=forward protocol=udp dst-port=10000-20000 \
  action=change-dscp new-dscp=46 passthrough=yes \
  comment="Set DSCP EF for RTP"

Стандартные DSCP-значения:

DSCPКодНазначение
46EF (Expedited Forwarding)VoIP, голос
34AF41Видеоконференции
26AF31Потоковое видео
18AF21Транзакционные данные
10AF11Высокоприоритетные данные
0BE (Best Effort)Обычный трафик

Иерархические очереди: родитель + дети

Для офиса с несколькими отделами можно построить иерархию:

[admin@MikroTik] >
/queue/simple

# Родительская очередь — весь канал
add name="Total" target=192.168.0.0/16 max-limit=20M/100M

# Отдел продаж — гарантия 5M, максимум 50M
add name="Sales" target=192.168.10.0/24 parent=Total \
  limit-at=2M/5M max-limit=10M/50M

# Бухгалтерия — гарантия 3M, максимум 30M
add name="Accounting" target=192.168.20.0/24 parent=Total \
  limit-at=1M/3M max-limit=5M/30M

# Гостевой Wi-Fi — без гарантий, максимум 10M
add name="Guest-WiFi" target=192.168.30.0/24 parent=Total \
  limit-at=0/0 max-limit=2M/10M

Сумма limit-at детей не должна превышать max-limit родителя. Если канал свободен — дети могут использовать больше, вплоть до своего max-limit.

Проверка

Мониторинг Simple Queue

[admin@MikroTik] >
# Просмотр всех очередей с текущей статистикой
/queue/simple/print stats

# Детальная статистика конкретной очереди
/queue/simple/print stats where name="Office-PCQ"

# Мониторинг в реальном времени (обновление каждые 2 секунды)
/queue/simple/monitor Office-PCQ interval=2

Вывод print stats показывает:

ПолеОписание
rateТекущая скорость (upload/download)
packet-rateПакетов в секунду
bytesВсего передано байт
packetsВсего передано пакетов
queued-bytesБайт в очереди (ожидают отправки)
droppedСброшено пакетов (превышение лимита)

Мониторинг Queue Tree

[admin@MikroTik] >
# Статистика Queue Tree
/queue/tree/print stats

# Мониторинг конкретной очереди
/queue/tree/monitor VoIP-Download interval=2

Проверка PCQ

[admin@MikroTik] >
# Просмотр типов очередей
/queue/type/print

# Детальная информация о PCQ
/queue/type/print detail where name~"pcq"

Тестирование скорости

[admin@MikroTik] >
# Встроенный bandwidth test (к другому MikroTik)
/tool/bandwidth-test address=192.168.88.1 protocol=tcp direction=both

# Проверка, попадает ли трафик в очередь (должен расти счётчик bytes)
/queue/simple/print stats where name="PC-director"

Для клиентского теста используйте speedtest.net или iperf3 с компьютера за роутером.

Сравнительная таблица: Simple Queue vs PCQ vs Queue Tree

КритерийSimple QueuePCQQueue Tree
Сложность настройкиНизкаяСредняяВысокая
Количество правил1 на пользователя1 на подсетьПо типу трафика
Равномерное делениеНетДа, автоматическиНет (вручную)
ПриоритизацияБазовая (priority 1-8)НетПолная (priority + HTB)
BurstДаНетНет
Маркировка MangleНе нужнаНе нужнаОбязательна
Иерархия (parent)ДаЧерез Simple QueueДа
Нагрузка на CPUНизкаяСредняяВысокая
МасштабируемостьДо ~50 правилДо 1000+ пользователейДо 1000+ классов
Рекомендуется дляМалые сети, 1-10 IPОфис, гостиница, провайдерISP, мультисервисные сети

Типичные ошибки

1. Очередь не работает — трафик не попадает

Наиболее частая причина: неправильно указан target или интерфейс. Проверьте:

[admin@MikroTik] >
# Убедитесь, что target указан правильно
/queue/simple/print where name="My-Queue"

# Проверьте, что трафик от пользователя реально проходит через роутер
/tool/torch interface=ether2 src-address=192.168.88.20

Если используете Queue Tree — убедитесь, что Mangle-правила маркируют пакеты:

[admin@MikroTik] >
# Проверка счётчиков Mangle
/ip/firewall/mangle/print stats where chain=forward

2. Двойное ограничение (Simple Queue + Queue Tree)

Simple Queue и Queue Tree работают независимо. Если пакет попадает в обе очереди — он ограничивается дважды. Не смешивайте их для одного и того же трафика.

[admin@MikroTik] >
# Проверить, нет ли конфликтующих очередей
/queue/simple/print
/queue/tree/print

3. Неправильный pcq-classifier

Самая частая ошибка при настройке PCQ:

  • Для download используйте pcq-classifier=dst-address — классификация по IP получателя (пользователя в LAN)
  • Для upload используйте pcq-classifier=src-address — классификация по IP отправителя (пользователя в LAN)

Если перепутать — все пользователи попадут в одну под-очередь и PCQ не будет работать.

4. max-limit не учитывает overhead

Если тариф провайдера 100 Мбит/с, не ставьте max-limit=100M. Учитывайте PPPoE overhead (~5-8%), TCP overhead и другие факторы:

[admin@MikroTik] >
# Рекомендуемое значение: 90-95% от тарифа
/queue/simple/add name="Total" target=192.168.88.0/24 \
  max-limit=19M/95M comment="Тариф 100M, запас на overhead"

5. Burst-параметры подобраны неправильно

Правила подбора burst:

  • burst-limit = 2-3x от max-limit (не более)
  • burst-threshold = 75-80% от max-limit
  • burst-time = 10-20 секунд

Слишком высокий burst-limit при длинном burst-time приведёт к перегрузке канала. Слишком короткий burst-time сделает burst незаметным.

6. Забыли про upload

Часто ограничивают только download, забывая про upload. Один пользователь, заливающий видео на YouTube, может забить весь upload-канал, что приведёт к задержкам TCP ACK для всех остальных:

[admin@MikroTik] >
# Неправильно — upload не ограничен (0 = без лимита)
/queue/simple/add name="Bad" target=192.168.88.0/24 max-limit=0/100M

# Правильно — ограничены оба направления
/queue/simple/add name="Good" target=192.168.88.0/24 max-limit=20M/100M

Полный пример: офис 20 человек с VoIP

[admin@MikroTik] >
# === Тариф: 100 Мбит/с download, 20 Мбит/с upload ===
# === 20 сотрудников + VoIP-сервер + гостевой Wi-Fi ===

# Шаг 1: PCQ-типы для равномерного распределения
/queue/type/add name=pcq-down kind=pcq pcq-rate=5M \
  pcq-classifier=dst-address
/queue/type/add name=pcq-up kind=pcq pcq-rate=2M \
  pcq-classifier=src-address

# Шаг 2: Mangle для маркировки VoIP
/ip/firewall/mangle
add chain=forward protocol=udp dst-port=5060-5061 \
  action=mark-packet new-packet-mark=pkt-voip passthrough=no
add chain=forward protocol=udp dst-port=10000-20000 dscp=46 \
  action=mark-packet new-packet-mark=pkt-voip passthrough=no
add chain=forward src-address=192.168.88.0/24 \
  action=mark-packet new-packet-mark=pkt-office passthrough=no
add chain=forward src-address=192.168.30.0/24 \
  action=mark-packet new-packet-mark=pkt-guest passthrough=no

# Шаг 3: Simple Queue — иерархия
/queue/simple

# Родитель — весь канал
add name="Total" target=0.0.0.0/0 max-limit=19M/95M

# VoIP — приоритет 1, гарантия 2M
add name="VoIP" target=192.168.88.50/32 parent=Total \
  priority=1/1 limit-at=2M/2M max-limit=5M/5M \
  comment="VoIP сервер"

# Офис — PCQ, каждому по 5M download
add name="Office" target=192.168.88.0/24 parent=Total \
  limit-at=10M/50M max-limit=18M/90M \
  queue=pcq-up/pcq-down \
  comment="Офис 20 человек"

# Гостевой Wi-Fi — без гарантий
add name="Guest" target=192.168.30.0/24 parent=Total \
  limit-at=0/0 max-limit=2M/10M \
  comment="Гостевой Wi-Fi"

# Проверка
/queue/simple/print stats

Эта конфигурация гарантирует VoIP-серверу минимум 2 Мбит/с даже при полной загрузке канала, распределяет офисный трафик равномерно между сотрудниками через PCQ и ограничивает гостевой Wi-Fi до 10 Мбит/с download без каких-либо гарантий.

Дополнительные сценарии

Ограничение скорости по времени суток

В некоторых организациях требуется разная политика QoS в рабочее и нерабочее время. Например, днём каждый сотрудник получает 5 Мбит/с, а после 18:00 — весь канал делится динамически без ограничений на пользователя.

[admin@MikroTik] >
# PCQ-тип для рабочего времени (фиксированный лимит)
/queue/type/add name=pcq-work kind=pcq pcq-rate=5M \
  pcq-classifier=dst-address

# PCQ-тип для нерабочего времени (динамическое деление)
/queue/type/add name=pcq-free kind=pcq pcq-rate=0 \
  pcq-classifier=dst-address

# Очередь (изначально с рабочим PCQ)
/queue/simple/add name="Office-scheduled" target=192.168.88.0/24 \
  max-limit=20M/100M queue=default/pcq-work

# Скрипт переключения на свободный режим
/system/script/add name=qos-free source={
  /queue/simple/set [find name="Office-scheduled"] queue=default/pcq-free
  :log info "QoS: switched to free mode"
}

# Скрипт переключения на рабочий режим
/system/script/add name=qos-work source={
  /queue/simple/set [find name="Office-scheduled"] queue=default/pcq-work
  :log info "QoS: switched to work mode"
}

# Расписание
/system/scheduler/add name=qos-to-work start-time=09:00:00 \
  interval=1d on-event=qos-work
/system/scheduler/add name=qos-to-free start-time=18:00:00 \
  interval=1d on-event=qos-free

Ограничение скорости для конкретного приложения (торренты)

Торрент-трафик сложно идентифицировать, но можно ограничить по количеству соединений. Торрент-клиенты открывают сотни одновременных соединений, в отличие от браузера (обычно 6-15 соединений на вкладку).

[admin@MikroTik] >
# Определяем хосты с большим количеством соединений
# и добавляем их в address-list
/ip/firewall/mangle/add chain=forward protocol=tcp \
  connection-limit=100,32 src-address=192.168.88.0/24 \
  action=mark-packet new-packet-mark=pkt-heavy passthrough=no \
  comment="Mark heavy users (100+ connections)"

# Ограничиваем скорость для heavy users через Queue Tree
/queue/tree/add name="Heavy-Users" parent=global \
  packet-mark=pkt-heavy max-limit=2M priority=8 \
  comment="Throttle heavy connection users to 2Mbps"

Мониторинг загрузки канала через Torch

Инструмент Torch позволяет в реальном времени видеть, кто потребляет трафик:

[admin@MikroTik] >
# Показать топ потребителей на WAN-интерфейсе
/tool/torch interface=ether1 src-address=192.168.88.0/24

# Показать трафик конкретного пользователя
/tool/torch interface=ether1 src-address=192.168.88.20

# Показать трафик по портам (найти торренты, видео и т.д.)
/tool/torch interface=ether1 src-address=192.168.88.0/24 port=any

Torch — незаменимый инструмент при диагностике проблем с QoS. Если очередь не работает как ожидается, Torch покажет реальные потоки трафика и поможет понять, куда уходит полоса пропускания. Комбинируйте Torch с /queue/simple/print stats для полной картины: Torch показывает сырой трафик, а stats показывает, как очереди его обрабатывают.

[admin@MikroTik] >
# Ограничение для одного хоста: 10 Мбит/с загрузка, 5 Мбит/с отдача
/queue/simple/add name="PC-director" target=192.168.88.10/32 \
  max-limit=5M/10M comment="Директор"

# Ограничение для подсети: 50 Мбит/с на всю подсеть
/queue/simple/add name="Accounting-VLAN" target=192.168.10.0/24 \
  max-limit=10M/50M comment="Бухгалтерия VLAN 10"

# Ограничение с гарантированной полосой
/queue/simple/add name="VoIP-server" target=192.168.88.50/32 \
  max-limit=2M/2M limit-at=1M/1M priority=1/1 \
  comment="VoIP сервер — приоритетный"
# Обычная скорость 5 Мбит/с, burst до 10 Мбит/с
/queue/simple/add name="User-burst-example" target=192.168.88.20/32 \
  max-limit=5M/5M \
  burst-limit=10M/10M \
  burst-threshold=4M/4M \
  burst-time=16s/16s \
  comment="С burst: обычно 5M, кратковременно до 10M"
# Шаг 1: Создаём PCQ-тип для download
/queue/type/add name=pcq-download-5M kind=pcq \
  pcq-rate=5M pcq-classifier=dst-address

# Шаг 2: Создаём PCQ-тип для upload
/queue/type/add name=pcq-upload-2.5M kind=pcq \
  pcq-rate=2500k pcq-classifier=src-address

# Шаг 3: Применяем через Simple Queue
/queue/simple/add name="Office-PCQ" target=192.168.88.0/24 \
  max-limit=20M/100M \
  queue=pcq-upload-2.5M/pcq-download-5M \
  comment="Офис: 100M/20 = 5M каждому"
# Динамическое деление канала (без фиксированного лимита на пользователя)
/queue/type/add name=pcq-download-dynamic kind=pcq \
  pcq-rate=0 pcq-classifier=dst-address pcq-total-limit=2000

/queue/type/add name=pcq-upload-dynamic kind=pcq \
  pcq-rate=0 pcq-classifier=src-address pcq-total-limit=2000

/queue/simple/add name="Office-dynamic" target=192.168.88.0/24 \
  max-limit=20M/100M \
  queue=pcq-upload-dynamic/pcq-download-dynamic \
  comment="Динамическое деление канала"
# === Шаг 1: Маркировка пакетов через Mangle ===
/ip/firewall/mangle

# Маркировка VoIP трафика (SIP + RTP)
add chain=forward protocol=udp dst-port=5060-5061 \
  action=mark-packet new-packet-mark=voip passthrough=no \
  comment="VoIP SIP"
add chain=forward protocol=udp dst-port=10000-20000 \
  action=mark-packet new-packet-mark=voip passthrough=no \
  comment="VoIP RTP"

# Маркировка по DSCP (если VoIP-оборудование ставит DSCP EF)
add chain=forward dscp=46 \
  action=mark-packet new-packet-mark=voip passthrough=no \
  comment="VoIP DSCP EF"

# Маркировка Web трафика (HTTP/HTTPS)
add chain=forward protocol=tcp dst-port=80,443 \
  action=mark-packet new-packet-mark=web passthrough=no \
  comment="Web HTTP/HTTPS"

# Маркировка DNS
add chain=forward protocol=udp dst-port=53 \
  action=mark-packet new-packet-mark=web passthrough=no \
  comment="DNS"

# Всё остальное — bulk
add chain=forward action=mark-packet new-packet-mark=bulk passthrough=no \
  comment="Bulk — all other traffic"

# === Шаг 2: Queue Tree ===
/queue/tree

# Родительская очередь (потолок канала)
add name="Total-Download" parent=global max-limit=100M \
  comment="Total download bandwidth"

# VoIP — приоритет 1
add name="VoIP-Download" parent=Total-Download \
  packet-mark=voip priority=1 \
  limit-at=10M max-limit=20M \
  comment="VoIP: гарантия 10M, макс 20M"

# Web — приоритет 4
add name="Web-Download" parent=Total-Download \
  packet-mark=web priority=4 \
  limit-at=40M max-limit=80M \
  comment="Web: гарантия 40M, макс 80M"

# Bulk — приоритет 8
add name="Bulk-Download" parent=Total-Download \
  packet-mark=bulk priority=8 \
  limit-at=0 max-limit=100M \
  comment="Bulk: без гарантии, до 100M если канал свободен"
# Просмотр DSCP-меток в проходящем трафике
/tool/sniffer/quick port=ether1 ip-protocol=udp

# Установка DSCP EF для VoIP трафика (если оборудование не ставит)
/ip/firewall/mangle/add chain=forward protocol=udp dst-port=5060-5061 \
  action=change-dscp new-dscp=46 passthrough=yes \
  comment="Set DSCP EF for SIP"
/ip/firewall/mangle/add chain=forward protocol=udp dst-port=10000-20000 \
  action=change-dscp new-dscp=46 passthrough=yes \
  comment="Set DSCP EF for RTP"
/queue/simple

# Родительская очередь — весь канал
add name="Total" target=192.168.0.0/16 max-limit=20M/100M

# Отдел продаж — гарантия 5M, максимум 50M
add name="Sales" target=192.168.10.0/24 parent=Total \
  limit-at=2M/5M max-limit=10M/50M

# Бухгалтерия — гарантия 3M, максимум 30M
add name="Accounting" target=192.168.20.0/24 parent=Total \
  limit-at=1M/3M max-limit=5M/30M

# Гостевой Wi-Fi — без гарантий, максимум 10M
add name="Guest-WiFi" target=192.168.30.0/24 parent=Total \
  limit-at=0/0 max-limit=2M/10M
# Просмотр всех очередей с текущей статистикой
/queue/simple/print stats

# Детальная статистика конкретной очереди
/queue/simple/print stats where name="Office-PCQ"

# Мониторинг в реальном времени (обновление каждые 2 секунды)
/queue/simple/monitor Office-PCQ interval=2
# Статистика Queue Tree
/queue/tree/print stats

# Мониторинг конкретной очереди
/queue/tree/monitor VoIP-Download interval=2
# Просмотр типов очередей
/queue/type/print

# Детальная информация о PCQ
/queue/type/print detail where name~"pcq"
# Встроенный bandwidth test (к другому MikroTik)
/tool/bandwidth-test address=192.168.88.1 protocol=tcp direction=both

# Проверка, попадает ли трафик в очередь (должен расти счётчик bytes)
/queue/simple/print stats where name="PC-director"
# Убедитесь, что target указан правильно
/queue/simple/print where name="My-Queue"

# Проверьте, что трафик от пользователя реально проходит через роутер
/tool/torch interface=ether2 src-address=192.168.88.20
# Проверка счётчиков Mangle
/ip/firewall/mangle/print stats where chain=forward
# Проверить, нет ли конфликтующих очередей
/queue/simple/print
/queue/tree/print
# Рекомендуемое значение: 90-95% от тарифа
/queue/simple/add name="Total" target=192.168.88.0/24 \
  max-limit=19M/95M comment="Тариф 100M, запас на overhead"
# Неправильно — upload не ограничен (0 = без лимита)
/queue/simple/add name="Bad" target=192.168.88.0/24 max-limit=0/100M

# Правильно — ограничены оба направления
/queue/simple/add name="Good" target=192.168.88.0/24 max-limit=20M/100M
# === Тариф: 100 Мбит/с download, 20 Мбит/с upload ===
# === 20 сотрудников + VoIP-сервер + гостевой Wi-Fi ===

# Шаг 1: PCQ-типы для равномерного распределения
/queue/type/add name=pcq-down kind=pcq pcq-rate=5M \
  pcq-classifier=dst-address
/queue/type/add name=pcq-up kind=pcq pcq-rate=2M \
  pcq-classifier=src-address

# Шаг 2: Mangle для маркировки VoIP
/ip/firewall/mangle
add chain=forward protocol=udp dst-port=5060-5061 \
  action=mark-packet new-packet-mark=pkt-voip passthrough=no
add chain=forward protocol=udp dst-port=10000-20000 dscp=46 \
  action=mark-packet new-packet-mark=pkt-voip passthrough=no
add chain=forward src-address=192.168.88.0/24 \
  action=mark-packet new-packet-mark=pkt-office passthrough=no
add chain=forward src-address=192.168.30.0/24 \
  action=mark-packet new-packet-mark=pkt-guest passthrough=no

# Шаг 3: Simple Queue — иерархия
/queue/simple

# Родитель — весь канал
add name="Total" target=0.0.0.0/0 max-limit=19M/95M

# VoIP — приоритет 1, гарантия 2M
add name="VoIP" target=192.168.88.50/32 parent=Total \
  priority=1/1 limit-at=2M/2M max-limit=5M/5M \
  comment="VoIP сервер"

# Офис — PCQ, каждому по 5M download
add name="Office" target=192.168.88.0/24 parent=Total \
  limit-at=10M/50M max-limit=18M/90M \
  queue=pcq-up/pcq-down \
  comment="Офис 20 человек"

# Гостевой Wi-Fi — без гарантий
add name="Guest" target=192.168.30.0/24 parent=Total \
  limit-at=0/0 max-limit=2M/10M \
  comment="Гостевой Wi-Fi"

# Проверка
/queue/simple/print stats
# PCQ-тип для рабочего времени (фиксированный лимит)
/queue/type/add name=pcq-work kind=pcq pcq-rate=5M \
  pcq-classifier=dst-address

# PCQ-тип для нерабочего времени (динамическое деление)
/queue/type/add name=pcq-free kind=pcq pcq-rate=0 \
  pcq-classifier=dst-address

# Очередь (изначально с рабочим PCQ)
/queue/simple/add name="Office-scheduled" target=192.168.88.0/24 \
  max-limit=20M/100M queue=default/pcq-work

# Скрипт переключения на свободный режим
/system/script/add name=qos-free source={
  /queue/simple/set [find name="Office-scheduled"] queue=default/pcq-free
  :log info "QoS: switched to free mode"
}

# Скрипт переключения на рабочий режим
/system/script/add name=qos-work source={
  /queue/simple/set [find name="Office-scheduled"] queue=default/pcq-work
  :log info "QoS: switched to work mode"
}

# Расписание
/system/scheduler/add name=qos-to-work start-time=09:00:00 \
  interval=1d on-event=qos-work
/system/scheduler/add name=qos-to-free start-time=18:00:00 \
  interval=1d on-event=qos-free
# Определяем хосты с большим количеством соединений
# и добавляем их в address-list
/ip/firewall/mangle/add chain=forward protocol=tcp \
  connection-limit=100,32 src-address=192.168.88.0/24 \
  action=mark-packet new-packet-mark=pkt-heavy passthrough=no \
  comment="Mark heavy users (100+ connections)"

# Ограничиваем скорость для heavy users через Queue Tree
/queue/tree/add name="Heavy-Users" parent=global \
  packet-mark=pkt-heavy max-limit=2M priority=8 \
  comment="Throttle heavy connection users to 2Mbps"
# Показать топ потребителей на WAN-интерфейсе
/tool/torch interface=ether1 src-address=192.168.88.0/24

# Показать трафик конкретного пользователя
/tool/torch interface=ether1 src-address=192.168.88.20

# Показать трафик по портам (найти торренты, видео и т.д.)
/tool/torch interface=ether1 src-address=192.168.88.0/24 port=any
Queues / Ограничение скорости на MikroTik — Simple Queue и PCQ