SIP QoS для IP телефонии

Если у вас заикается (квакает) IP телефония в моменты активного скачивания — значит надо настроить приоритет SIP трафику.

Рассмотрим способ через маркировку трафика, так как IP адреса могут меняться.
Я не буду маркировать по портам 5060 и т.д., так как считаю этот метод не для понимания новичкам, ведь у SIP используется куча портов.

Заказав настройку MikroTik, вы получите 100% проработанное решение от опытного сетевого инженера.

Например ваш оператор zadarma.com (реф.ссылка) или mango —
Узнаем у поддержки весь пул IP адресов сервиса, у манго это 81.88.80.0/24

Делаем маркировку трафика до серверов оператора телефонии

IP -> Firewall -> Mangle
Создаем правило:

Маркировка Mango SIP
Вкладка General
Chain: forward
Так как это проходящий через маршрутизатор трафик и мы ничего до решения о маршрутизации не собираемся с ним делать. Если собираемся, или трафик может относиться к маршрутизатору — то используем цепочку prerouting
Out: Interface: ether-WAN1
Интерфейс провайдера, куда выходит трафик
Рекомендую указывать для снижения нагрузки, сужаем область поиска маршрутизатору
Если провайдеров несколько, то указываем список WAN, куда входят интерфейсы провайдеров
Connection Mark: no-mark
Маркируем ранее не маркированный трафик
Connection State: new
Маркируем только новые соединения
Маркировка соединения Mango SIP
Вкладка Action
Action: mark connection
Маркируем соединение
New Connection Mark: VoIP-Connection
Даем название маркировке соединения
passthrough=yes
Разрешаем дальнейшую обработку

Нажимаем ок для сохранения.

Маркировка в виде экспорта:

/ip firewall mangle
 add action=mark-connection chain=forward connection-mark=no-mark \
     connection-state=new dst-address=81.88.80.0/24 new-connection-mark=\
     VoIP-Connection out-interface=ether1-WAN1 passthrough=yes

Теперь промаркируем пакеты на основе соединений

Маркировка пакетов Mango SIP
Macket Mark: no-mark
Маркируем пакеты без меток — защита от перемаркировки
Connection Mark: VoIP-Connection
На основе метки соединения, что сделали выше
Маркировка пакетов Mango SIP
Action: mark packet
Маркируем пакеты
New Packet Mark: VoIP-Packet
Маркируем пакеты меткой
Passthrough=yes
Разрешаем дальнейшую обработку

Вся маркировка в виде экспорта:

/ip firewall mangle
add action=mark-connection chain=forward connection-mark=no-mark \
connection-state=new dst-address=81.88.80.0/24 new-connection-mark=\
VoIP-Connection out-interface=ether1-WAN1 passthrough=yes
add action=mark-packet chain=forward connection-mark=VoIP-Connection \
new-packet-mark=VoIP-Packet packet-mark=no-mark passthrough=yes

Теперь можно оперировать пакетами в QoS
Теперь есть критичный к задержкам трафик, уменьшим тарифную скорость на 10%, об этом написано в статье QoS для дома

Simple Queue WAN Max 45Mbit
Name: WAN1
Название правила ставим информативное
Target: 0.0.0.0/0
Вся наша сеть
Dst.: ether1-WAN1
Интерфейс выход на провайдера
Max Limit: 45M
Указываем максимальную скорость 45Мбит (на 10% меньше тарифной 50Мбит)
Simple Queue WAN1 pcq
Queue Type: pcq-upload-default/pcq-download-default
Тип деления трафика «про справедливости»
Simple Queue WAN1 SIP
Name: WAN1
Название правила ставим информативное
Target: 0.0.0.0/0
Вся наша сеть
Max Limit: 45M
Указываем максимальную скорость 45Мбит (на 10% меньше тарифной 50Мбит)
Simple Queue WAN1 pcq VoIP Packet
Packet Marks: VoIP-Macket
Выбираем маркировку пакетов SIP
Limt At: 1M/1M
Указываем ГАРАНТИРОВАННО выделяемую скорость для пакетов VoIP-Macket
1 SIP разговор занимаем 80Кбит/сек, с запасом выделяем до 100Кбит/сек.
10 SIP телефонов будут занимать полосу 800Кбит/сек,
с запасом 1024Кбит/сек, то есть 1Мбит/сек
Но будут занимать если одновременно будут разговаривать
Queue Type: pcq-upload-default/pcq-download-default
Тип деления трафика «про справедливости»
Parent: WAN1
Имя родительской очереди, которая распределяет трафик
Simple Queue WAN1 LAN
Name: WAN1-LAN
Название правила ставим информативное
Target: 0.0.0.0/0
Вся наша сеть
Max Limit: 45M
Указываем максимальную скорость 45Мбит (на 10% меньше тарифной 50Мбит)
Simple Queue WAN1 pcq no-mark
Packet Marks: no-mark
В правило попадает только не маркированный трафик
Limt At: unlimited
unlimited — значит не используется
Queue Type: pcq-upload-default/pcq-download-default
Тип деления трафика «про справедливости»
Parent: WAN1
Имя родительской очереди, которая распределяет трафик

Весь QoS в виде выгрузки:

 /queue simple
 add dst=ether1-WAN1 max-limit=45M/45M name=WAN1 queue=\
     pcq-upload-default/pcq-download-default target=""
 add max-limit=45M/45M name=WAN1-LAN packet-marks=no-mark parent=WAN1 queue=\
     pcq-upload-default/pcq-download-default target=""
 add limit-at=1M/1M max-limit=45M/45M name=WAN-SIP packet-marks=VoIP-Packet \
     parent=WAN1 queue=pcq-upload-default/pcq-download-default target="" 

В зависимости от оператора и его услуг, на IP серверах могут находиться записи звонков и вовсе весь сайт. По этому я рекомендую сужать маркировки соединений через address list или указывать udp:5060 порт и диапазоны портов udp, которые нужно уточнить у оператора. Я пользуюсь 1 вариантом, когда адресов операторов много и вторым вариантом, когда адреса известны.

У DHCP MikroTik есть функция добавления в address list

DHCP Lease SIP
Address List: SIP

Далее этот Address List используем в маркировке соединений

Src. Address List SIP
Теперь у нас есть точное попадание Address List IP телефонов — IP адреса серверов SIP

Если у вас свой сервер IP телефонии и все соединения проходят через него, то достаточно указать в Src. Address IP адрес сервера

Mark Connection Src. Address

Теперь не будет проблем с телефонией. Если телефонов станет больше, нужно сделать правки +100Кбит за каждый SIP

Обсудить

В комментариях на Dzen