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

VoIP и SIP QoS на MikroTik

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

VoIP и SIP QoS на MikroTik — приоритизация голосового трафика

Качество голосовой связи через IP-сеть (VoIP) критически зависит от параметров сети: задержка, джиттер, потери пакетов. Если в офисе кто-то запустил скачивание большого файла — VoIP-звонки начнут «квакать», голос будет прерываться, а собеседник услышит эхо. QoS (Quality of Service) на MikroTik решает эту проблему: голосовой трафик получает абсолютный приоритет, и даже при полной загрузке канала SIP-телефоны работают стабильно. В этом руководстве настроим полный QoS для VoIP на RouterOS 7.20+: от маркировки пакетов в Mangle до Queue Tree с приоритизацией, разберём работу с SIP ALG, NAT traversal и мониторинг голосового трафика.

Руководство актуально для RouterOS 7.20+.

Описание

Почему VoIP требует QoS

VoIP-телефония передаёт голос в виде UDP-пакетов в реальном времени. В отличие от HTTP или файлового обмена, голосовой трафик не переносит задержки и потери — TCP-ретрансмит здесь невозможен, пакет либо пришёл вовремя, либо потерян.

Критические параметры для VoIP:

ПараметрДопустимоПриемлемоНеприемлемо
Задержка (latency)< 100 мс100–150 мс> 150 мс
Джиттер (jitter)< 20 мс20–30 мс> 30 мс
Потеря пакетов (loss)< 0.5%0.5–1%> 1%

Задержка (latency) — время прохождения пакета от отправителя к получателю. При задержке выше 150 мс собеседники начинают перебивать друг друга, разговор становится некомфортным. При 300 мс+ связь практически непригодна.

Джиттер (jitter) — разброс задержки между пакетами. Даже если средняя задержка 50 мс, но один пакет приходит за 20 мс, а следующий за 100 мс — голос будет «рваным». Jitter buffer на телефонах компенсирует небольшой джиттер (20–30 мс), но при большем значении появляются артефакты.

Потеря пакетов (packet loss) — процент потерянных UDP-пакетов. При потере более 1% голос становится неразборчивым, появляются «дыры» в разговоре.

Как идентифицировать VoIP-трафик

Существует три подхода к определению голосового трафика:

По портам:

  • SIP-сигнализация: UDP 5060 (без шифрования), UDP/TCP 5061 (TLS)
  • RTP-поток (голос): UDP 10000–20000 (диапазон зависит от АТС)
  • Некоторые провайдеры используют нестандартные порты

По DSCP-меткам:

  • EF (Expedited Forwarding) = DSCP 46 — стандартная метка для голоса
  • CS5 (Class Selector 5) = DSCP 40 — метка SIP-сигнализации
  • AF41 = DSCP 34 — видеозвонки

По IP-адресам:

  • IP-адреса SIP-сервера или IP-АТС
  • IP-подсеть VoIP-телефонов (если выделена в отдельный VLAN)

Оптимальный подход — комбинация: маркировать по портам + DSCP + IP-подсети VoIP-оборудования.

Протоколы VoIP

ПротоколПортТранспортНазначение
SIP5060UDP/TCPСигнализация (установка/завершение вызова)
SIP TLS5061TCP/TLSЗашифрованная сигнализация
RTP10000–20000UDPПередача голоса (медиа-поток)
SRTP10000–20000UDPЗашифрованный голосовой поток
STUN3478UDPNAT traversal

SIP отвечает за установку и завершение звонка (сигнализация), а RTP передаёт собственно голос. Оба протокола нуждаются в приоритизации, но RTP — критичнее, так как это непрерывный поток данных.

Архитектура QoS для VoIP

code
Интернет
    |
[MikroTik Router]
    |--- Mangle: маркировка VoIP-пакетов
    |--- Queue Tree: приоритет VoIP > остальной трафик
    |
    |--- VLAN 100: VoIP-телефоны (192.168.100.0/24)
    |--- VLAN 10:  Рабочие станции (192.168.10.0/24)

Настройка

Шаг 1: Подготовка — выделение VoIP в отдельный VLAN

Лучшая практика — вынести VoIP-телефоны в отдельный VLAN. Это упрощает маркировку и повышает безопасность:

[admin@MikroTik] >
# Создаём VLAN для VoIP-телефонов
/interface/vlan/add name=vlan100-voip vlan-id=100 interface=bridge comment="VoIP VLAN"

# IP-адрес для VoIP-подсети
/ip/address/add address=192.168.100.1/24 interface=vlan100-voip comment="VoIP gateway"

# DHCP-сервер для VoIP-телефонов
/ip/pool/add name=pool-voip ranges=192.168.100.10-192.168.100.254
/ip/dhcp-server/add name=dhcp-voip interface=vlan100-voip address-pool=pool-voip lease-time=8h
/ip/dhcp-server/network/add address=192.168.100.0/24 gateway=192.168.100.1 \
  dns-server=192.168.100.1 comment="VoIP network"

Если нет возможности выделить VLAN — маркировка будет по портам и DSCP.

Шаг 2: Маркировка VoIP-трафика в Mangle

Mangle — ключевой элемент QoS. Здесь мы помечаем VoIP-пакеты специальными метками, которые затем использует Queue Tree.

[admin@MikroTik] >
# --- Маркировка соединений SIP-сигнализации ---
/ip/firewall/mangle/add chain=forward protocol=udp dst-port=5060-5061 \
  action=mark-connection new-connection-mark=conn-voip-sip passthrough=yes \
  comment="VoIP: SIP signaling connections"

/ip/firewall/mangle/add chain=forward protocol=tcp dst-port=5060-5061 \
  action=mark-connection new-connection-mark=conn-voip-sip passthrough=yes \
  comment="VoIP: SIP signaling connections TCP"

# --- Маркировка соединений RTP (голосовой поток) ---
/ip/firewall/mangle/add chain=forward protocol=udp dst-port=10000-20000 \
  src-address=192.168.100.0/24 \
  action=mark-connection new-connection-mark=conn-voip-rtp passthrough=yes \
  comment="VoIP: RTP media connections"

/ip/firewall/mangle/add chain=forward protocol=udp src-port=10000-20000 \
  dst-address=192.168.100.0/24 \
  action=mark-connection new-connection-mark=conn-voip-rtp passthrough=yes \
  comment="VoIP: RTP media connections (reply)"

# --- Маркировка по DSCP EF (если АТС/провайдер ставит метки) ---
/ip/firewall/mangle/add chain=forward dscp=46 \
  action=mark-connection new-connection-mark=conn-voip-dscp passthrough=yes \
  comment="VoIP: DSCP EF (46) connections"

# --- Маркировка пакетов VoIP (для Queue Tree) ---
/ip/firewall/mangle/add chain=forward connection-mark=conn-voip-sip \
  action=mark-packet new-packet-mark=pkt-voip passthrough=no \
  comment="VoIP: mark SIP packets"

/ip/firewall/mangle/add chain=forward connection-mark=conn-voip-rtp \
  action=mark-packet new-packet-mark=pkt-voip passthrough=no \
  comment="VoIP: mark RTP packets"

/ip/firewall/mangle/add chain=forward connection-mark=conn-voip-dscp \
  action=mark-packet new-packet-mark=pkt-voip passthrough=no \
  comment="VoIP: mark DSCP EF packets"

# --- Маркировка всего остального трафика ---
/ip/firewall/mangle/add chain=forward action=mark-packet \
  new-packet-mark=pkt-other passthrough=no \
  comment="Other: all non-VoIP traffic"

Порядок правил критичен: VoIP-маркировка должна быть выше, чем маркировка остального трафика. Параметр passthrough=no в правилах маркировки пакетов останавливает дальнейшую обработку.

Шаг 3: Queue Tree — приоритизация VoIP

Queue Tree позволяет создать иерархию очередей с приоритетами. VoIP получает priority=1 (высший), остальной трафик — priority=8.

[admin@MikroTik] >
# --- Очереди для исходящего трафика (upload) ---
# Родительская очередь на WAN-интерфейс (указать реальную скорость канала)
/queue/tree/add name=upload-total parent=ether1 max-limit=95M \
  comment="Upload: total bandwidth"

# VoIP — приоритет 1 (гарантировано 2 Мбит/с, максимум 5 Мбит/с)
/queue/tree/add name=upload-voip parent=upload-total \
  packet-mark=pkt-voip priority=1 \
  limit-at=2M max-limit=5M \
  comment="Upload: VoIP priority 1"

# Остальной трафик — приоритет 8
/queue/tree/add name=upload-other parent=upload-total \
  packet-mark=pkt-other priority=8 \
  limit-at=10M max-limit=90M \
  comment="Upload: other traffic"

# --- Очереди для входящего трафика (download) ---
# Родительская очередь на LAN bridge
/queue/tree/add name=download-total parent=bridge max-limit=95M \
  comment="Download: total bandwidth"

# VoIP — приоритет 1
/queue/tree/add name=download-voip parent=download-total \
  packet-mark=pkt-voip priority=1 \
  limit-at=2M max-limit=5M \
  comment="Download: VoIP priority 1"

# Остальной трафик — приоритет 8
/queue/tree/add name=download-other parent=download-total \
  packet-mark=pkt-other priority=8 \
  limit-at=10M max-limit=90M \
  comment="Download: other traffic"

Важные замечания:

  • max-limit родительской очереди должен быть чуть меньше реальной скорости канала (95% от тарифа). Это обеспечивает контроль очереди на MikroTik, а не у провайдера.
  • limit-at — гарантированная полоса. Даже при полной загрузке канала VoIP получит свои 2 Мбит/с.
  • priority=1 — наивысший приоритет (значение 1–8, где 1 — самый высокий).

Шаг 4: Установка DSCP-меток

Если нужно передавать приоритет дальше по сети (например, в сторону провайдера, поддерживающего DiffServ), устанавливаем DSCP EF на VoIP-пакеты:

[admin@MikroTik] >
# Установка DSCP EF (46) на исходящий VoIP-трафик
/ip/firewall/mangle/add chain=postrouting connection-mark=conn-voip-rtp \
  action=change-dscp new-dscp=46 passthrough=yes \
  comment="VoIP: set DSCP EF on outgoing RTP"

/ip/firewall/mangle/add chain=postrouting connection-mark=conn-voip-sip \
  action=change-dscp new-dscp=40 passthrough=yes \
  comment="VoIP: set DSCP CS5 on outgoing SIP"

Шаг 5: Отключение SIP ALG

SIP ALG (Application Layer Gateway) — функция RouterOS, которая пытается «помочь» SIP-трафику, проходящему через NAT, модифицируя содержимое SIP-пакетов. На практике SIP ALG ломает VoIP в 90% случаев: изменяет SDP-тело пакетов, подставляет неправильные IP-адреса, нарушает работу RTP.

Отключение SIP ALG обязательно:

[admin@MikroTik] >
# Отключаем SIP ALG (service-port)
/ip/firewall/service-port/set sip disabled=yes

# Проверяем
/ip/firewall/service-port/print where name=sip

Симптомы включённого SIP ALG:

  • Односторонняя слышимость (один собеседник не слышит другого)
  • Звонок устанавливается, но через 30 секунд обрывается
  • Входящие звонки не проходят
  • Периодические «обрывы» голоса

Шаг 6: NAT для SIP (STUN и Persistent Keepalive)

SIP-телефоны за NAT сталкиваются с классической проблемой: SIP-сервер отправляет RTP-поток на внутренний IP-адрес телефона, который недоступен из интернета. Решения:

Вариант 1: STUN-сервер на телефонах

Настройте на каждом IP-телефоне или софтфоне STUN-сервер (например, stun.l.google.com:19302). Телефон сам определит свой внешний IP и сообщит его SIP-серверу.

[admin@MikroTik] >
# Разрешаем STUN-трафик в firewall
/ip/firewall/filter/add chain=forward protocol=udp dst-port=3478 \
  src-address=192.168.100.0/24 action=accept \
  comment="Allow STUN for VoIP phones"

Вариант 2: UDP-таймаут для SIP

По умолчанию UDP-соединения в RouterOS живут 10 секунд. SIP-регистрация может отвалиться. Увеличиваем:

[admin@MikroTik] >
# Увеличиваем таймаут UDP-потоков для SIP
/ip/firewall/raw/add chain=prerouting protocol=udp dst-port=5060 \
  action=notrack comment="SIP: bypass connection tracking"

Альтернативный вариант — настроить keepalive на самих телефонах (SIP Registration Expiry = 60 секунд).

Вариант 3: Статический NAT для IP-АТС

Если IP-АТС (Asterisk, FreePBX) стоит за MikroTik:

[admin@MikroTik] >
# Проброс SIP-портов на АТС
/ip/firewall/nat/add chain=dstnat protocol=udp dst-port=5060 \
  action=dst-nat to-addresses=192.168.100.5 to-ports=5060 \
  comment="NAT: SIP to PBX"

# Проброс RTP-диапазона
/ip/firewall/nat/add chain=dstnat protocol=udp dst-port=10000-20000 \
  action=dst-nat to-addresses=192.168.100.5 to-ports=10000-20000 \
  comment="NAT: RTP to PBX"

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

Сценарий: офис на 30 человек, канал 100 Мбит/с, 10 SIP-телефонов через провайдера «Ростелеком SIP», IP-АТС Asterisk на 192.168.100.5.

[admin@MikroTik] >
# ============================================
# VoIP QoS — полная конфигурация
# Офис 30 человек, канал 100 Мбит/с
# VoIP VLAN 100, Data VLAN 10
# ============================================

# --- 1. Отключаем SIP ALG ---
/ip/firewall/service-port/set sip disabled=yes

# --- 2. Address lists для удобства ---
/ip/firewall/address-list/add list=voip-phones address=192.168.100.0/24 \
  comment="VoIP phone subnet"
/ip/firewall/address-list/add list=sip-providers address=83.222.0.0/16 \
  comment="Rostelecom SIP servers"

# --- 3. Mangle: маркировка VoIP ---
# SIP-сигнализация
/ip/firewall/mangle/add chain=forward protocol=udp dst-port=5060-5061 \
  src-address-list=voip-phones \
  action=mark-connection new-connection-mark=conn-voip passthrough=yes \
  comment="VoIP: SIP outgoing"

/ip/firewall/mangle/add chain=forward protocol=udp src-port=5060-5061 \
  dst-address-list=voip-phones \
  action=mark-connection new-connection-mark=conn-voip passthrough=yes \
  comment="VoIP: SIP incoming"

# RTP-потоки
/ip/firewall/mangle/add chain=forward protocol=udp dst-port=10000-20000 \
  src-address-list=voip-phones \
  action=mark-connection new-connection-mark=conn-voip passthrough=yes \
  comment="VoIP: RTP outgoing"

/ip/firewall/mangle/add chain=forward protocol=udp src-port=10000-20000 \
  dst-address-list=voip-phones \
  action=mark-connection new-connection-mark=conn-voip passthrough=yes \
  comment="VoIP: RTP incoming"

# DSCP EF
/ip/firewall/mangle/add chain=forward dscp=46 \
  action=mark-connection new-connection-mark=conn-voip passthrough=yes \
  comment="VoIP: DSCP EF"

# Маркировка пакетов VoIP
/ip/firewall/mangle/add chain=forward connection-mark=conn-voip \
  action=mark-packet new-packet-mark=pkt-voip passthrough=no \
  comment="VoIP: packet mark"

# Маркировка остального трафика
/ip/firewall/mangle/add chain=forward action=mark-packet \
  new-packet-mark=pkt-other passthrough=no \
  comment="Other: all non-VoIP"

# DSCP на исходящий VoIP
/ip/firewall/mangle/add chain=postrouting connection-mark=conn-voip \
  action=change-dscp new-dscp=46 passthrough=yes \
  comment="VoIP: set DSCP EF outgoing"

# --- 4. Queue Tree ---
# Upload (WAN = ether1, тариф 100 Мбит/с, ставим 95M)
/queue/tree/add name=ul-total parent=ether1 max-limit=95M
/queue/tree/add name=ul-voip parent=ul-total packet-mark=pkt-voip \
  priority=1 limit-at=4M max-limit=10M
/queue/tree/add name=ul-other parent=ul-total packet-mark=pkt-other \
  priority=8 limit-at=20M max-limit=91M

# Download (LAN = bridge, тариф 100 Мбит/с)
/queue/tree/add name=dl-total parent=bridge max-limit=95M
/queue/tree/add name=dl-voip parent=dl-total packet-mark=pkt-voip \
  priority=1 limit-at=4M max-limit=10M
/queue/tree/add name=dl-other parent=dl-total packet-mark=pkt-other \
  priority=8 limit-at=20M max-limit=91M

Проверка

Проверка маркировки в Mangle

Убедитесь, что Mangle-правила срабатывают — столбцы packets и bytes должны расти при активных звонках:

[admin@MikroTik] >
# Просмотр счётчиков Mangle
/ip/firewall/mangle/print stats

# Только VoIP-правила
/ip/firewall/mangle/print stats where comment~"VoIP"

Если счётчики нулевые — проверьте, что телефоны действительно генерируют трафик по указанным портам и из указанных подсетей.

Проверка Queue Tree

[admin@MikroTik] >
# Статистика очередей
/queue/tree/print stats

# Подробно по VoIP-очереди
/queue/tree/print stats where name~"voip"

В выводе обратите внимание на:

  • rate — текущая скорость (должна расти при звонках)
  • packet-rate — количество пакетов в секунду
  • queued-packets — пакеты в очереди (должно быть 0 или минимум для VoIP)

Мониторинг с помощью Torch

Torch — инструмент анализа трафика в реальном времени. Используйте его для поиска VoIP-потоков:

[admin@MikroTik] >
# Показать UDP-трафик из VoIP-подсети
/tool/torch interface=bridge src-address=192.168.100.0/24 protocol=udp

# Показать трафик на SIP-порты
/tool/torch interface=ether1 protocol=udp port=5060

# Показать RTP-трафик (порты 10000-20000)
/tool/torch interface=bridge protocol=udp port=10000-20000

Проверка SIP ALG

[admin@MikroTik] >
# Убедиться, что SIP ALG отключён
/ip/firewall/service-port/print where name=sip
# Должно быть: disabled=yes

Проверка Connection Tracking

[admin@MikroTik] >
# Просмотр VoIP-соединений
/ip/firewall/connection/print where connection-mark=conn-voip

# Количество VoIP-соединений
/ip/firewall/connection/print count-only where connection-mark=conn-voip

Тест качества: Ping до SIP-сервера

[admin@MikroTik] >
# Ping с замером jitter (100 пакетов)
/ping address=sip.rostelecom.ru count=100 size=160

# Проверка маршрута
/tool/traceroute address=sip.rostelecom.ru protocol=udp

Настройка для популярных российских VoIP-провайдеров

Ростелеком SIP

[admin@MikroTik] >
# SIP-серверы Ростелекома (уточните актуальные IP)
/ip/firewall/address-list/add list=sip-providers address=83.222.0.0/16 \
  comment="Rostelecom SIP"

Параметры подключения:

  • SIP-сервер: sip.rt.ru (уточнить у регионального подразделения)
  • Порт: 5060 UDP
  • Кодек: G.711a (alaw), G.729
  • DTMF: RFC 2833

Mango Office

[admin@MikroTik] >
# SIP-серверы Mango Office
/ip/firewall/address-list/add list=sip-providers address=185.45.152.0/24 \
  comment="Mango Office SIP"

Параметры подключения:

  • SIP-домен: mangosip.ru
  • Порт: 5060 UDP
  • Кодек: G.711a, G.729
  • Обязательно отключить SIP ALG

Zadarma

[admin@MikroTik] >
# SIP-серверы Zadarma
/ip/firewall/address-list/add list=sip-providers address=185.45.152.0/22 \
  comment="Zadarma SIP"

Параметры подключения:

  • SIP-сервер: sip.zadarma.com
  • Порт: 5060 UDP
  • Кодек: G.711a, G.729, Opus
  • Рекомендуется STUN: stun.zadarma.com

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

Ошибка 1: SIP ALG включён

Симптомы: односторонняя слышимость, обрывы через 30 секунд, входящие звонки не проходят.

Решение:

[admin@MikroTik] >
/ip/firewall/service-port/set sip disabled=yes

Это первое, что нужно проверить при любых проблемах с VoIP на MikroTik. SIP ALG «помогает» только в простейших сценариях, а в реальных конфигурациях ломает SIP-трафик.

Ошибка 2: max-limit родительской очереди больше реальной скорости канала

Симптомы: QoS не работает, VoIP всё равно «квакает» при загрузке канала.

Причина: если max-limit установлен выше реальной скорости провайдера — очередь на MikroTik не образуется. Пакеты уходят без задержки на MikroTik, но встают в очередь на стороне провайдера, где приоритизации нет.

Решение: max-limit родительской очереди = 90–95% от тарифа провайдера.

[admin@MikroTik] >
# Если тариф 100 Мбит/с, ставим 95M
/queue/tree/set upload-total max-limit=95M
/queue/tree/set download-total max-limit=95M

Ошибка 3: Маркировка только по портам без привязки к подсети

Симптомы: в VoIP-очередь попадает посторонний UDP-трафик (игры, DNS, видео), VoIP не получает гарантированную полосу.

Причина: диапазон портов 10000–20000 UDP используется не только RTP, но и многими другими приложениями.

Решение: всегда добавляйте привязку к VoIP-подсети или address-list:

[admin@MikroTik] >
# Правильно: маркировка по порту + подсеть
/ip/firewall/mangle/add chain=forward protocol=udp dst-port=10000-20000 \
  src-address-list=voip-phones \
  action=mark-connection new-connection-mark=conn-voip passthrough=yes

Ошибка 4: Не учтён трафик в обоих направлениях

Симптомы: исходящий голос слышен, входящий — нет (или наоборот).

Причина: маркировка только src-port или только dst-port. Нужно маркировать и исходящий (dst-port=5060, src-address=VoIP-подсеть), и входящий (src-port=5060, dst-address=VoIP-подсеть).

Ошибка 5: FastTrack обходит Mangle и Queue

Симптомы: Mangle-правила не срабатывают, счётчики нулевые, QoS не работает.

Причина: FastTrack ускоряет обработку пакетов, но полностью обходит Mangle и Queue. Если в firewall включён FastTrack — QoS не будет работать для established/related соединений.

Решение: исключите VoIP из FastTrack или отключите FastTrack полностью:

[admin@MikroTik] >
# Вариант 1: отключить FastTrack
/ip/firewall/filter/remove [find where action=fasttrack-connection]

# Вариант 2: исключить VoIP из FastTrack (пометить VoIP-соединения до FastTrack)
# Поместите Mangle-правила маркировки connection-mark ВЫШЕ FastTrack в chain=forward

Ошибка 6: UDP-таймаут слишком маленький

Симптомы: SIP-регистрация отваливается через некоторое время, телефоны перестают принимать входящие звонки.

Причина: по умолчанию UDP timeout в Connection Tracking = 10 секунд. Если SIP-телефон не отправляет keepalive чаще, NAT-трансляция удаляется.

Решение: увеличить UDP-таймаут или настроить keepalive на телефонах (Registration Expiry = 60 секунд):

[admin@MikroTik] >
# Увеличиваем UDP-таймаут для SIP
/ip/firewall/raw/add chain=prerouting protocol=udp src-port=5060 \
  action=notrack comment="SIP: bypass conntrack for signaling"

Ошибка 7: Queue Tree без parent

Симптомы: очереди созданы, но трафик не ограничивается и не приоритизируется.

Причина: Queue Tree работает только в иерархии. Дочерние очереди без родительской (parent) не ограничивают общую полосу, а значит, приоритизация не имеет смысла.

Решение: всегда создавайте родительскую очередь с max-limit = скорость канала, и указывайте её как parent для VoIP- и other-очередей.

Расчёт полосы для VoIP

Каждый VoIP-звонок потребляет фиксированную полосу в зависимости от кодека:

КодекBitrateС IP/UDP/RTP-заголовкамиНа 10 одновременных звонков
G.711 (alaw/ulaw)64 Кбит/с~87 Кбит/с~870 Кбит/с
G.7298 Кбит/с~31 Кбит/с~310 Кбит/с
Opus6–510 Кбит/с~30–530 Кбит/с~300–5300 Кбит/с

Формула: limit-at для VoIP = количество_линий × полоса_на_звонок × 1.5 (запас 50%).

Пример: 10 линий, кодек G.711 → 10 × 87 Кбит/с × 1.5 = 1.3 Мбит/с. Округляем вверх: limit-at=2M.

Итоги

QoS для VoIP на MikroTik строится в три шага: маркировка в Mangle, приоритизация в Queue Tree, отключение SIP ALG. Ключевые правила:

  1. Всегда отключайте SIP ALG (/ip/firewall/service-port/set sip disabled=yes)
  2. Выделяйте VoIP-телефоны в отдельный VLAN
  3. Маркируйте трафик по комбинации: порт + подсеть + DSCP
  4. max-limit родительской очереди = 90–95% от скорости канала
  5. VoIP: priority=1, limit-at = расчётная полоса с запасом 50%
  6. Отключите FastTrack или исключите VoIP из него
  7. Проверяйте через Torch и счётчики Mangle
[admin@MikroTik] >
Интернет
    |
[MikroTik Router]
    |--- Mangle: маркировка VoIP-пакетов
    |--- Queue Tree: приоритет VoIP > остальной трафик
    |
    |--- VLAN 100: VoIP-телефоны (192.168.100.0/24)
    |--- VLAN 10:  Рабочие станции (192.168.10.0/24)
# Создаём VLAN для VoIP-телефонов
/interface/vlan/add name=vlan100-voip vlan-id=100 interface=bridge comment="VoIP VLAN"

# IP-адрес для VoIP-подсети
/ip/address/add address=192.168.100.1/24 interface=vlan100-voip comment="VoIP gateway"

# DHCP-сервер для VoIP-телефонов
/ip/pool/add name=pool-voip ranges=192.168.100.10-192.168.100.254
/ip/dhcp-server/add name=dhcp-voip interface=vlan100-voip address-pool=pool-voip lease-time=8h
/ip/dhcp-server/network/add address=192.168.100.0/24 gateway=192.168.100.1 \
  dns-server=192.168.100.1 comment="VoIP network"
# --- Маркировка соединений SIP-сигнализации ---
/ip/firewall/mangle/add chain=forward protocol=udp dst-port=5060-5061 \
  action=mark-connection new-connection-mark=conn-voip-sip passthrough=yes \
  comment="VoIP: SIP signaling connections"

/ip/firewall/mangle/add chain=forward protocol=tcp dst-port=5060-5061 \
  action=mark-connection new-connection-mark=conn-voip-sip passthrough=yes \
  comment="VoIP: SIP signaling connections TCP"

# --- Маркировка соединений RTP (голосовой поток) ---
/ip/firewall/mangle/add chain=forward protocol=udp dst-port=10000-20000 \
  src-address=192.168.100.0/24 \
  action=mark-connection new-connection-mark=conn-voip-rtp passthrough=yes \
  comment="VoIP: RTP media connections"

/ip/firewall/mangle/add chain=forward protocol=udp src-port=10000-20000 \
  dst-address=192.168.100.0/24 \
  action=mark-connection new-connection-mark=conn-voip-rtp passthrough=yes \
  comment="VoIP: RTP media connections (reply)"

# --- Маркировка по DSCP EF (если АТС/провайдер ставит метки) ---
/ip/firewall/mangle/add chain=forward dscp=46 \
  action=mark-connection new-connection-mark=conn-voip-dscp passthrough=yes \
  comment="VoIP: DSCP EF (46) connections"

# --- Маркировка пакетов VoIP (для Queue Tree) ---
/ip/firewall/mangle/add chain=forward connection-mark=conn-voip-sip \
  action=mark-packet new-packet-mark=pkt-voip passthrough=no \
  comment="VoIP: mark SIP packets"

/ip/firewall/mangle/add chain=forward connection-mark=conn-voip-rtp \
  action=mark-packet new-packet-mark=pkt-voip passthrough=no \
  comment="VoIP: mark RTP packets"

/ip/firewall/mangle/add chain=forward connection-mark=conn-voip-dscp \
  action=mark-packet new-packet-mark=pkt-voip passthrough=no \
  comment="VoIP: mark DSCP EF packets"

# --- Маркировка всего остального трафика ---
/ip/firewall/mangle/add chain=forward action=mark-packet \
  new-packet-mark=pkt-other passthrough=no \
  comment="Other: all non-VoIP traffic"
# --- Очереди для исходящего трафика (upload) ---
# Родительская очередь на WAN-интерфейс (указать реальную скорость канала)
/queue/tree/add name=upload-total parent=ether1 max-limit=95M \
  comment="Upload: total bandwidth"

# VoIP — приоритет 1 (гарантировано 2 Мбит/с, максимум 5 Мбит/с)
/queue/tree/add name=upload-voip parent=upload-total \
  packet-mark=pkt-voip priority=1 \
  limit-at=2M max-limit=5M \
  comment="Upload: VoIP priority 1"

# Остальной трафик — приоритет 8
/queue/tree/add name=upload-other parent=upload-total \
  packet-mark=pkt-other priority=8 \
  limit-at=10M max-limit=90M \
  comment="Upload: other traffic"

# --- Очереди для входящего трафика (download) ---
# Родительская очередь на LAN bridge
/queue/tree/add name=download-total parent=bridge max-limit=95M \
  comment="Download: total bandwidth"

# VoIP — приоритет 1
/queue/tree/add name=download-voip parent=download-total \
  packet-mark=pkt-voip priority=1 \
  limit-at=2M max-limit=5M \
  comment="Download: VoIP priority 1"

# Остальной трафик — приоритет 8
/queue/tree/add name=download-other parent=download-total \
  packet-mark=pkt-other priority=8 \
  limit-at=10M max-limit=90M \
  comment="Download: other traffic"
# Установка DSCP EF (46) на исходящий VoIP-трафик
/ip/firewall/mangle/add chain=postrouting connection-mark=conn-voip-rtp \
  action=change-dscp new-dscp=46 passthrough=yes \
  comment="VoIP: set DSCP EF on outgoing RTP"

/ip/firewall/mangle/add chain=postrouting connection-mark=conn-voip-sip \
  action=change-dscp new-dscp=40 passthrough=yes \
  comment="VoIP: set DSCP CS5 on outgoing SIP"
# Отключаем SIP ALG (service-port)
/ip/firewall/service-port/set sip disabled=yes

# Проверяем
/ip/firewall/service-port/print where name=sip
# Разрешаем STUN-трафик в firewall
/ip/firewall/filter/add chain=forward protocol=udp dst-port=3478 \
  src-address=192.168.100.0/24 action=accept \
  comment="Allow STUN for VoIP phones"
# Увеличиваем таймаут UDP-потоков для SIP
/ip/firewall/raw/add chain=prerouting protocol=udp dst-port=5060 \
  action=notrack comment="SIP: bypass connection tracking"
# Проброс SIP-портов на АТС
/ip/firewall/nat/add chain=dstnat protocol=udp dst-port=5060 \
  action=dst-nat to-addresses=192.168.100.5 to-ports=5060 \
  comment="NAT: SIP to PBX"

# Проброс RTP-диапазона
/ip/firewall/nat/add chain=dstnat protocol=udp dst-port=10000-20000 \
  action=dst-nat to-addresses=192.168.100.5 to-ports=10000-20000 \
  comment="NAT: RTP to PBX"
# ============================================
# VoIP QoS — полная конфигурация
# Офис 30 человек, канал 100 Мбит/с
# VoIP VLAN 100, Data VLAN 10
# ============================================

# --- 1. Отключаем SIP ALG ---
/ip/firewall/service-port/set sip disabled=yes

# --- 2. Address lists для удобства ---
/ip/firewall/address-list/add list=voip-phones address=192.168.100.0/24 \
  comment="VoIP phone subnet"
/ip/firewall/address-list/add list=sip-providers address=83.222.0.0/16 \
  comment="Rostelecom SIP servers"

# --- 3. Mangle: маркировка VoIP ---
# SIP-сигнализация
/ip/firewall/mangle/add chain=forward protocol=udp dst-port=5060-5061 \
  src-address-list=voip-phones \
  action=mark-connection new-connection-mark=conn-voip passthrough=yes \
  comment="VoIP: SIP outgoing"

/ip/firewall/mangle/add chain=forward protocol=udp src-port=5060-5061 \
  dst-address-list=voip-phones \
  action=mark-connection new-connection-mark=conn-voip passthrough=yes \
  comment="VoIP: SIP incoming"

# RTP-потоки
/ip/firewall/mangle/add chain=forward protocol=udp dst-port=10000-20000 \
  src-address-list=voip-phones \
  action=mark-connection new-connection-mark=conn-voip passthrough=yes \
  comment="VoIP: RTP outgoing"

/ip/firewall/mangle/add chain=forward protocol=udp src-port=10000-20000 \
  dst-address-list=voip-phones \
  action=mark-connection new-connection-mark=conn-voip passthrough=yes \
  comment="VoIP: RTP incoming"

# DSCP EF
/ip/firewall/mangle/add chain=forward dscp=46 \
  action=mark-connection new-connection-mark=conn-voip passthrough=yes \
  comment="VoIP: DSCP EF"

# Маркировка пакетов VoIP
/ip/firewall/mangle/add chain=forward connection-mark=conn-voip \
  action=mark-packet new-packet-mark=pkt-voip passthrough=no \
  comment="VoIP: packet mark"

# Маркировка остального трафика
/ip/firewall/mangle/add chain=forward action=mark-packet \
  new-packet-mark=pkt-other passthrough=no \
  comment="Other: all non-VoIP"

# DSCP на исходящий VoIP
/ip/firewall/mangle/add chain=postrouting connection-mark=conn-voip \
  action=change-dscp new-dscp=46 passthrough=yes \
  comment="VoIP: set DSCP EF outgoing"

# --- 4. Queue Tree ---
# Upload (WAN = ether1, тариф 100 Мбит/с, ставим 95M)
/queue/tree/add name=ul-total parent=ether1 max-limit=95M
/queue/tree/add name=ul-voip parent=ul-total packet-mark=pkt-voip \
  priority=1 limit-at=4M max-limit=10M
/queue/tree/add name=ul-other parent=ul-total packet-mark=pkt-other \
  priority=8 limit-at=20M max-limit=91M

# Download (LAN = bridge, тариф 100 Мбит/с)
/queue/tree/add name=dl-total parent=bridge max-limit=95M
/queue/tree/add name=dl-voip parent=dl-total packet-mark=pkt-voip \
  priority=1 limit-at=4M max-limit=10M
/queue/tree/add name=dl-other parent=dl-total packet-mark=pkt-other \
  priority=8 limit-at=20M max-limit=91M
# Просмотр счётчиков Mangle
/ip/firewall/mangle/print stats

# Только VoIP-правила
/ip/firewall/mangle/print stats where comment~"VoIP"
# Статистика очередей
/queue/tree/print stats

# Подробно по VoIP-очереди
/queue/tree/print stats where name~"voip"
# Показать UDP-трафик из VoIP-подсети
/tool/torch interface=bridge src-address=192.168.100.0/24 protocol=udp

# Показать трафик на SIP-порты
/tool/torch interface=ether1 protocol=udp port=5060

# Показать RTP-трафик (порты 10000-20000)
/tool/torch interface=bridge protocol=udp port=10000-20000
# Убедиться, что SIP ALG отключён
/ip/firewall/service-port/print where name=sip
# Должно быть: disabled=yes
# Просмотр VoIP-соединений
/ip/firewall/connection/print where connection-mark=conn-voip

# Количество VoIP-соединений
/ip/firewall/connection/print count-only where connection-mark=conn-voip
# Ping с замером jitter (100 пакетов)
/ping address=sip.rostelecom.ru count=100 size=160

# Проверка маршрута
/tool/traceroute address=sip.rostelecom.ru protocol=udp
# SIP-серверы Ростелекома (уточните актуальные IP)
/ip/firewall/address-list/add list=sip-providers address=83.222.0.0/16 \
  comment="Rostelecom SIP"
# SIP-серверы Mango Office
/ip/firewall/address-list/add list=sip-providers address=185.45.152.0/24 \
  comment="Mango Office SIP"
# SIP-серверы Zadarma
/ip/firewall/address-list/add list=sip-providers address=185.45.152.0/22 \
  comment="Zadarma SIP"
/ip/firewall/service-port/set sip disabled=yes
# Если тариф 100 Мбит/с, ставим 95M
/queue/tree/set upload-total max-limit=95M
/queue/tree/set download-total max-limit=95M
# Правильно: маркировка по порту + подсеть
/ip/firewall/mangle/add chain=forward protocol=udp dst-port=10000-20000 \
  src-address-list=voip-phones \
  action=mark-connection new-connection-mark=conn-voip passthrough=yes
# Вариант 1: отключить FastTrack
/ip/firewall/filter/remove [find where action=fasttrack-connection]

# Вариант 2: исключить VoIP из FastTrack (пометить VoIP-соединения до FastTrack)
# Поместите Mangle-правила маркировки connection-mark ВЫШЕ FastTrack в chain=forward
# Увеличиваем UDP-таймаут для SIP
/ip/firewall/raw/add chain=prerouting protocol=udp src-port=5060 \
  action=notrack comment="SIP: bypass conntrack for signaling"
Queues / VoIP и SIP QoS на MikroTik