QoS в MikroTik: настройка приоритизации и ограничений скорости

QoS в MikroTik: настройка приоритизации и ограничений скорости

Утром все сотрудники пришли на работу, открыли браузер — и VoIP-звонки превратились в кашу. Кто-то качает обновления, кто-то смотрит YouTube, кто-то заливает бэкап в облако. Канал забит, голосовой трафик теряет пакеты, переговоры срываются. Знакомая картина?

QoS в MikroTik — инструмент, который расставляет трафик по приоритетам: VoIP получает гарантированную полосу, торренты — остатки, а всё остальное — по справедливости. В этом руководстве: полная настройка QoS в RouterOS от простого ограничения пользователя до приоритизации VoIP и управления трафиком на порту в bridge. Только практика, только рабочие конфиги.

Что такое QoS в MikroTik и зачем он нужен

QoS (Quality of Service) — механизм управления полосой пропускания и приоритетами трафика. Без QoS маршрутизатор обрабатывает все пакеты одинаково: торрент-клиент конкурирует с VoIP на равных, и голосовой звонок проигрывает — у торрента пакетов тупо больше.

С QoS роутер знает: этот UDP-поток на порт 5060 — голос, его надо пропустить первым. А вот эти 500 соединений на BitTorrent — в конец очереди.

Где MikroTik QoS применяется на практике:

  • Провайдерские сети — ограничение скорости абонентов по тарифным планам
  • Офисные сети — приоритет VoIP, видеоконференций, ERP-систем над развлекательным трафиком
  • Wi-Fi сети — справедливое распределение полосы между клиентами
  • Гостиничные и хостельные сети — ограничение скорости на комнату или на устройство
  • Промышленные и SCADA-сети — гарантированная полоса для критических систем управления

RouterOS предоставляет несколько механизмов QoS, которые можно комбинировать:

  • Simple Queue — простые правила ограничения скорости по IP или подсети
  • Queue Tree — иерархические очереди для сложных политик трафика
  • PCQ (Per Connection Queue) — справедливое распределение полосы между соединениями
  • Mangle — маркировка трафика для последующей обработки очередями

Основные механизмы QoS в MikroTik: сравнение

Тип очереди Сложность Применение Производительность
Simple Queue Низкая Офис, небольшие сети, ограничение по IP Снижает производительность при большом количестве правил
Queue Tree Высокая Провайдеры, сложные политики, иерархии Эффективнее Simple Queue при масштабировании
PCQ Средняя Равномерная балансировка, Wi-Fi, hotspot Высокая при большом числе абонентов

Simple Queue

Самый простой инструмент. Работает на уровне IP-адресов и подсетей. Подходит для небольших офисных сетей, где нужно ограничить скорость нескольких пользователей или задать базовые приоритеты. Настраивается за минуты, понятен без глубокого погружения в RouterOS. Главный минус: при десятках и сотнях правил начинает серьёзно нагружать CPU.

Queue Tree

Мощный инструмент для провайдеров и сложных корпоративных сетей. Позволяет строить иерархии очередей: глобальный лимит → группы → отдельные пользователи. Требует маркировки трафика через Mangle и понимания концепции parent/child очередей. Зато обеспечивает полный контроль над тем, кто, сколько и когда получает полосу.

PCQ (Per Connection Queue)

Специализированный тип очереди для справедливого распределения. Делит доступную полосу поровну между активными соединениями или IP-адресами. Идеален для Wi-Fi-сетей, hotspot и ситуаций, когда нужно «чтобы никто не объедал соседей» без ручного управления каждым абонентом.

MikroTik QoS настройка: от простого к сложному

Базовое ограничение скорости через Simple Queue

Начнём с самого распространённого сценария — ограничить конкретного пользователя по IP-адресу.

# Ограничить пользователя 192.168.1.100 до 10 Мбит/с вверх и вниз
/queue simple
add name=User1 target=192.168.1.100/32 max-limit=10M/10M

# Ограничить целую подсеть
/queue simple
add name=Office_LAN target=192.168.1.0/24 max-limit=100M/100M

# С приоритетом (1 — максимальный, 8 — минимальный)
/queue simple
add name=Manager target=192.168.1.50/32 max-limit=20M/20M priority=1/1

# Разные лимиты на загрузку и отдачу
/queue simple
add name=User_Asymmetric target=192.168.1.101/32 max-limit=50M/10M

Параметры Simple Queue:

  • target — IP-адрес, подсеть или интерфейс, к которому применяется ограничение
  • max-limit — максимальная скорость в формате upload/download
  • limit-at — гарантированная минимальная скорость (burst не падает ниже этого значения)
  • priority — приоритет очереди (1–8), используется когда несколько очередей конкурируют за полосу
  • burst-limit — максимальная скорость в режиме burst (кратковременного пика)
  • burst-time — время, в течение которого разрешён burst

Настройка burst: быстрый старт загрузки

# Пользователь получает 20 Мбит/с на 10 секунд при начале загрузки,
# затем снижается до основного лимита 10 Мбит/с
/queue simple
add name=User_Burst \
    target=192.168.1.102/32 \
    max-limit=10M/10M \
    burst-limit=20M/20M \
    burst-threshold=8M/8M \
    burst-time=10s/10s

PCQ: справедливое распределение для провайдера

# Создать PCQ-тип очереди (разделяет полосу между dst-адресами)
/queue type
add name=PCQ_Download kind=pcq pcq-classifier=dst-address pcq-rate=0 pcq-limit=50KiB
add name=PCQ_Upload kind=pcq pcq-classifier=src-address pcq-rate=0 pcq-limit=50KiB

# Применить PCQ к интерфейсу
/queue simple
add name=ISP_Fair_Share \
    target=192.168.0.0/16 \
    max-limit=100M/100M \
    queue=PCQ_Upload/PCQ_Download
[/bash>

<h2>Настройка приоритета трафика: VoIP, игры, видеоконференции</h2>

<p>Ограничение скорости — это половина QoS. Вторая половина — приоритизация: убедиться, что критически важный трафик получает полосу в первую очередь, даже когда канал загружен.</p>

<p>Схема работы: <strong>Mangle маркирует пакеты → Queue Tree обрабатывает по маркам</strong>.</p>

<h3>Шаг 1: Маркировка трафика через Mangle</h3>

[bash]
# Маркировать VoIP-трафик (SIP протокол, UDP порт 5060)
/ip firewall mangle
add chain=forward protocol=udp dst-port=5060 action=mark-packet \
    new-packet-mark=voip passthrough=no comment="VoIP SIP signaling"

# Маркировать RTP (голосовые данные, обычно UDP 10000-20000)
/ip firewall mangle
add chain=forward protocol=udp dst-port=10000-20000 action=mark-packet \
    new-packet-mark=voip_rtp passthrough=no comment="VoIP RTP media"

# Маркировать игровой трафик (пример: CS2, Valorant)
/ip firewall mangle
add chain=forward protocol=udp dst-port=27000-27050 action=mark-packet \
    new-packet-mark=gaming passthrough=no comment="Steam/Gaming UDP"

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

# Маркировать торрент-трафик (через connection-mark, более надёжно)
/ip firewall mangle
add chain=forward p2p=all-p2p action=mark-packet \
    new-packet-mark=bulk passthrough=no comment="P2P/Torrent"

Шаг 2: Создание Queue Tree с приоритетами

# Главная очередь (ограничение всего исходящего трафика на WAN)
/queue tree
add name=WAN_Total parent=ether1 max-limit=100M comment="Total WAN bandwidth"

# VoIP — максимальный приоритет, гарантированная полоса
/queue tree
add name=VoIP parent=WAN_Total packet-mark=voip \
    priority=1 max-limit=5M limit-at=2M \
    comment="VoIP SIP - highest priority"

add name=VoIP_RTP parent=WAN_Total packet-mark=voip_rtp \
    priority=1 max-limit=10M limit-at=3M \
    comment="VoIP RTP media"

# Игровой трафик — высокий приоритет (низкая латентность важна)
/queue tree
add name=Gaming parent=WAN_Total packet-mark=gaming \
    priority=2 max-limit=30M \
    comment="Gaming - low latency priority"

# Веб-трафик — средний приоритет
/queue tree
add name=Web parent=WAN_Total packet-mark=web \
    priority=4 max-limit=80M \
    comment="HTTP/HTTPS web"

# Bulk/Torrent — минимальный приоритет, остатки полосы
/queue tree
add name=Bulk parent=WAN_Total packet-mark=bulk \
    priority=8 max-limit=20M \
    comment="P2P bulk - lowest priority"

Таблица приоритетов для типичного офиса

Тип трафика Приоритет Гарантированная полоса Максимальная полоса
VoIP (SIP + RTP) 1 — наивысший 3 Мбит/с 10 Мбит/с
Видеоконференции 2 5 Мбит/с 30 Мбит/с
VPN / ERP 3 2 Мбит/с 50 Мбит/с
Веб / Email 4 — средний 80 Мбит/с
Обновления ОС 6 20 Мбит/с
Торренты / P2P 8 — наименьший 10 Мбит/с

MikroTik QoS на порту в bridge

Здесь начинается самая частая головная боль. Вы настроили Simple Queue или Queue Tree, проверяете — QoS не работает. Пользователи в bridge качают без ограничений. Что происходит?

Проблема: в режиме bridge трафик между портами коммутируется на L2 и не проходит через IP-стек. Firewall, Mangle и очереди работают на уровне IP (L3), поэтому они просто не видят этот трафик. QoS в bridge по умолчанию не работает.

Решение 1: Включить use-ip-firewall для bridge

# Заставить трафик внутри bridge проходить через IP Firewall
/interface bridge settings
set use-ip-firewall=yes use-ip-firewall-for-vlan=yes use-ip-firewall-for-pppoe=yes

# Проверить текущие настройки
/interface bridge settings print

Важно: включение use-ip-firewall увеличивает нагрузку на CPU, так как трафик больше не коммутируется аппаратно. На бюджетных RouterBOARD с большим трафиком это может стать узким местом.

Решение 2: Ограничение по подсети (работает без use-ip-firewall)

# Ограничить всю подсеть, подключённую к bridge
/queue simple
add name=Bridge_LAN target=192.168.10.0/24 max-limit=50M/50M \
    comment="Limit for bridge segment"

Решение 3: Ограничение трафика на конкретном порту bridge

# Ограничить трафик на физическом интерфейсе ether2 (порт в bridge)
/queue simple
add name=LAN_Port_ether2 target=ether2 max-limit=100M/100M \
    comment="Speed limit on bridge port ether2"

# Или через Queue Tree с parent на конкретный интерфейс
/queue tree
add name=Port_ether2_Out parent=ether2 max-limit=100M \
    comment="Egress limit on ether2"

Решение 4: VLAN + QoS (правильный подход для bridge)

# Создать VLAN-интерфейс поверх bridge
/interface vlan
add name=vlan10 interface=bridge1 vlan-id=10

# Назначить IP на VLAN-интерфейс
/ip address
add address=192.168.10.1/24 interface=vlan10

# Теперь QoS через Simple Queue работает на VLAN-интерфейсе
/queue simple
add name=VLAN10_Limit target=vlan10 max-limit=50M/50M

Настройка bridge с аппаратным ускорением и QoS

# На RouterBOARD с коммутатором (например, hEX, RB4011):
# Проверить, используется ли hardware offloading
/interface ethernet print detail

# Отключить hardware offloading на портах, где нужен QoS
/interface ethernet
set ether2 hw=no
set ether3 hw=no

# После этого use-ip-firewall начнёт работать корректно на этих портах

Полный пример QoS для офисной сети

Собираем всё вместе: сеть офиса на 50 человек, WAN 100 Мбит/с, нужно обеспечить качество VoIP, ограничить торренты и дать приоритет рабочим приложениям.

# ============================================
# ШАГ 1: Маркировка трафика через Mangle
# ============================================
/ip firewall mangle

# VoIP
add chain=forward protocol=udp dst-port=5060,5061 \
    action=mark-packet new-packet-mark=voip passthrough=no

add chain=forward protocol=udp dst-port=10000-20000 \
    action=mark-packet new-packet-mark=voip passthrough=no

# Видеоконференции (Zoom, Teams, Meet)
add chain=forward protocol=udp dst-port=8801-8802 \
    action=mark-packet new-packet-mark=video_conf passthrough=no
add chain=forward protocol=tcp dst-port=8801-8802 \
    action=mark-packet new-packet-mark=video_conf passthrough=no

# P2P / Torrent
add chain=forward p2p=all-p2p \
    action=mark-packet new-packet-mark=bulk passthrough=no

# Веб (всё остальное TCP 80/443)
add chain=forward protocol=tcp dst-port=80,443 \
    action=mark-packet new-packet-mark=web passthrough=no

# ============================================
# ШАГ 2: Queue Tree
# ============================================
/queue tree

# Корневая очередь на WAN-интерфейсе
add name=WAN_Out parent=ether1 max-limit=95M \
    comment="Leave 5% headroom for routing"

# VoIP — наивысший приоритет
add name=Q_VoIP parent=WAN_Out packet-mark=voip \
    priority=1 max-limit=15M limit-at=5M

# Видеоконференции
add name=Q_VideoConf parent=WAN_Out packet-mark=video_conf \
    priority=2 max-limit=40M limit-at=10M

# Веб-трафик
add name=Q_Web parent=WAN_Out packet-mark=web \
    priority=4 max-limit=95M

# Bulk / Torrent — минимальный приоритет
add name=Q_Bulk parent=WAN_Out packet-mark=bulk \
    priority=8 max-limit=15M limit-at=1M

Диагностика и мониторинг QoS в MikroTik

Настроили — проверяем. Вот инструментарий для диагностики работы очередей.

# Статистика Simple Queue: пакеты, байты, drops
/queue simple print stats

# Статистика Queue Tree
/queue tree print stats

# Мониторинг трафика в реальном времени (torch)
# Показывает, что сейчас идёт через интерфейс
/tool torch interface=ether1

# Torch с фильтром по IP
/tool torch interface=ether1 src-address=192.168.1.100

# Bandwidth test (проверка пропускной способности до другого MikroTik)
/tool bandwidth-test address=192.168.1.1 user=admin

# Посмотреть текущие очереди и их состояние
/queue simple print detail
/queue tree print detail

# Проверить маркировку пакетов (увидеть, какие packet-mark активны)
/ip firewall mangle print stats

# Профилировщик CPU (если QoS нагружает процессор)
/tool profile

Интерпретация статистики очередей

При выводе /queue simple print stats обратите внимание на поле dropped. Если счётчик дропов растёт — очередь работает: она отбрасывает лишний трафик, удерживая скорость в заданных лимитах. Это нормально. Если дропов нет, но пользователь жалуется на скорость — QoS, скорее всего, вообще не применяется к этому трафику.

# Сброс статистики очередей для чистого наблюдения
/queue simple reset-counters [find]
/queue tree reset-counters [find]

Частые ошибки при настройке QoS в MikroTik

Ошибка 1: FastTrack обходит QoS

Самая распространённая проблема. FastTrack — механизм аппаратного ускорения соединений в RouterOS. Ускоренные соединения проходят мимо Firewall и очередей. QoS просто не видит этот трафик.

# Найти и отключить правило FastTrack
/ip firewall filter print

# Отключить конкретное правило fasttrack
/ip firewall filter disable [find action=fasttrack-connection]

# Или отключить connection-mark для fasttrack
/ip firewall connection tracking
set generic-timeout=10m

# Проверить, что FastTrack отключён
/ip firewall filter print where action=fasttrack-connection

Альтернатива: если FastTrack важен для производительности, маркируйте трафик через Mangle до FastTrack в таблице цепочек.

Ошибка 2: Неправильный parent в Queue Tree

# НЕПРАВИЛЬНО: parent=global не привязан к конкретному интерфейсу
/queue tree
add name=VoIP parent=global packet-mark=voip priority=1

# ПРАВИЛЬНО: parent должен быть корневой очередью на нужном интерфейсе
/queue tree
add name=WAN parent=ether1 max-limit=100M       # сначала корневая
add name=VoIP parent=WAN packet-mark=voip priority=1  # потом дочерняя

Ошибка 3: Packet-mark не применяется (Mangle не срабатывает)

# Проверить порядок правил Mangle — важен!
/ip firewall mangle print

# Правила обрабатываются сверху вниз. Если трафик попал под правило
# с passthrough=no — дальнейшие правила не применяются.

# Проверить счётчики — если bytes=0, правило не срабатывает
/ip firewall mangle print stats

# Убедиться в правильной цепочке:
# forward — для транзитного трафика (между клиентами и интернетом)
# output — для трафика самого роутера
# prerouting — для входящего трафика до роутинга

Ошибка 4: QoS в bridge не работает без use-ip-firewall

# Проверить текущее состояние
/interface bridge settings print

# Включить обработку IP в bridge
/interface bridge settings set use-ip-firewall=yes

# После изменения может потребоваться перезагрузка
/system reboot

Ошибка 5: Simple Queue и Queue Tree конфликтуют

Не используйте Simple Queue и Queue Tree одновременно для одного и того же трафика — они обрабатываются независимо и будут конфликтовать. Simple Queue обрабатывается первым, если совпадает с target. Выберите один подход: либо Simple Queue для простых сетей, либо Queue Tree + Mangle для сложных.

Оптимизация QoS под нагрузку: советы для провайдеров

# Проверить загрузку CPU при работе QoS
/system resource print

# Если CPU > 70% из-за очередей — переходить на PCQ или аппаратный QoS
# Использовать PCQ вместо индивидуальных Simple Queue для абонентов

/queue type
add name=PCQ_Down kind=pcq pcq-classifier=dst-address \
    pcq-rate=10M pcq-limit=100KiB pcq-burst-rate=20M pcq-burst-threshold=8M

add name=PCQ_Up kind=pcq pcq-classifier=src-address \
    pcq-rate=5M pcq-limit=50KiB

# Применить PCQ на интерфейс провайдера
/queue simple
add name=ISP_PCQ target=0.0.0.0/0 interface=ether1 \
    queue=PCQ_Up/PCQ_Down max-limit=1000M/1000M

На высоконагруженных роутерах (RB4011, CCR-серия) используйте hardware queue для ограничений на уровне интерфейса — это снимает нагрузку с CPU и работает на скоростях 1+ Гбит/с.

Заключение

QoS в MikroTik — не магия и не сложная наука, если понять базовую логику: маркируем трафик через Mangle → обрабатываем очередями. Simple Queue закрывает 80% офисных задач, Queue Tree нужен там, где требуется гибкость и масштаб.

Ключевые выводы:

  • FastTrack — первое, что нужно проверить, если QoS не работает
  • В bridge трафик не проходит через IP-стек без use-ip-firewall=yes
  • Queue Tree без корректного parent — не работает
  • Для провайдерских сетей PCQ эффективнее сотен Simple Queue
  • Мониторьте статистику очередей и счётчики Mangle — они скажут всё о том, работает ли QoS

Для сложных сетей с тысячами абонентов и требованиями к SLA смотрите в сторону CCR-серии с hardware offloading и HTB-шейпером. Но для 90% задач хватит того, что описано выше.

Пишите в комментарии свои кейсы и конфигурации — разберём.

over_dude
Author: over_dude

Оставайтесь на связи

Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.

Подписаться на IT-Аптеку →
Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх