QoS для VoIP: приоритизация трафика в корпоративной сети
Мы настраивали VoIP в сотнях компаний — от Asterisk, FreePBX, 3CX до разных облачных провайдеров, — и почти всегда первая жалоба звучала одинаково: «Звук рвётся, как только кто-то начинает качать файл». Причина всегда одна: полное отсутствие QoS. Стоит один раз настроить QoS — и хаотичный канал становится предсказуемым: голос идёт первым, остальные задачи ждут своей очереди. Дальше — как мы обычно настраиваем QoS на MikroTik, Cisco и внутри корпоративной LAN.
Что такое QoS на пальцах
Что вообще такое QoS (Quality of Service)? Это система механизмов, которая управляет порядком и пропускной способностью интернет-канала, решая, кто главнее в данный момент. Рано или поздно любой канал сталкивается с перегрузкой: кто-то запустил бэкап на 500 Мбит/с, другой качает видео, третий открыл 1С через RDP — и VoIP начинает заикаться. QoS гарантирует, что приоритетный трафик, например голосовые звонки, никогда не будет стоять в этой очереди — им даётся зелёный свет.
- Классификация — определение, к какому классу относится пакет (по порту, IP, DSCP-метке).
- Маркировка — установка DSCP/CoS значения в заголовок.
- Queuing — распределение пакетов по очередям разных приоритетов.
- Shaping / Policing — ограничение или сглаживание скорости неприоритетного трафика.
Стандарты DSCP для VoIP
| Тип трафика | DSCP (десятичное) | Обозначение | Комментарий |
|---|---|---|---|
| RTP (голос) | 46 | EF | Highest priority, low latency |
| Видео (WebRTC) | 34 | AF41 | High priority |
| SIP-сигналинг | 26 | AF31 | Medium-high priority |
| Критичные приложения (1С) | 18 | AF21 | Medium priority |
| Bulk (бэкапы) | 10 | AF11 | Low priority |
| Best effort | 0 | BE | Default |
QoS на MikroTik: Queue Tree с priority
MikroTik — это наш основной рабочий конёк, инструмент, который мы знаем вдоль и поперёк. На нём QoS обычно реализуется через Queue Tree, прямо на WAN-интерфейсе.
# Маркировка RTP (определяем голос по UDP-портам Asterisk)
/ip firewall mangle
add chain=prerouting protocol=udp dst-port=10000-20000 \
action=mark-packet new-packet-mark=voip-rtp passthrough=no
add chain=prerouting protocol=udp src-port=10000-20000 \
action=mark-packet new-packet-mark=voip-rtp passthrough=no
# Маркировка SIP-сигналинга
add chain=prerouting protocol=udp port=5060,5061 \
action=mark-packet new-packet-mark=voip-sig passthrough=no
add chain=prerouting protocol=tcp port=5060,5061 \
action=mark-packet new-packet-mark=voip-sig passthrough=no
# Установка DSCP для исходящего
add chain=postrouting packet-mark=voip-rtp action=change-dscp new-dscp=46
add chain=postrouting packet-mark=voip-sig action=change-dscp new-dscp=26
# Queue Tree
/queue tree
add name=WAN parent=ether1 max-limit=100M
add name=voip-rtp parent=WAN packet-mark=voip-rtp \
priority=1 limit-at=10M max-limit=20M queue=pcq-voip
add name=voip-sig parent=WAN packet-mark=voip-sig \
priority=2 limit-at=2M max-limit=4M
add name=other parent=WAN priority=7 limit-at=0 max-limit=80M
/queue type
add name=pcq-voip kind=pcq pcq-rate=100k pcq-classifier=dst-address,src-address
Когда мы ставим Priority=1, это значит, что пакеты из этой очереди имеют самый высокий приоритет. Они идут первыми! А PCQ? Он нужен, чтобы равномерно распределить полосу пропускания между всеми активными разговорами.
QoS на Cisco Catalyst / ISR
На оборудовании Cisco мы используем чуть иной подход. Здесь задействуется связка из class-map, policy-map и service-policy.
class-map match-any VOICE-RTP
match dscp ef
match access-group name VOICE-RTP-ACL
class-map match-any VOICE-SIG
match dscp af31
match access-group name VOICE-SIG-ACL
class-map match-any CRITICAL-DATA
match dscp af21
policy-map WAN-OUT
class VOICE-RTP
priority percent 20
set dscp ef
class VOICE-SIG
bandwidth percent 5
set dscp af31
class CRITICAL-DATA
bandwidth percent 30
class class-default
bandwidth percent 45
random-detect dscp-based
interface GigabitEthernet0/0/0
service-policy output WAN-OUT
ip access-list extended VOICE-RTP-ACL
permit udp any any range 16384 32767
Priority-класс на Cisco создаёт low-latency queue — очередь с минимальной задержкой. Это значит, что пакеты от голосового трафика обрабатываются всегда первыми, конечно, пока мы не превысили заданный процент от общей полосы.
QoS на коммутаторах доступа
Кстати, не забывайте и про локальную сеть! На коммутаторах доступа, будь то Cisco 2960 или MikroTik CRS, тоже нужно настроить trust DSCP. Это критично важно, иначе ваши драгоценные метки могут просто потеряться между устройствами, и вся настройка QoS пойдёт насмарку.
# Cisco
mls qos
interface GigabitEthernet0/10
mls qos trust dscp
switchport voice vlan 20
# MikroTik SwOS
/interface ethernet switch qos-hw-offloading
set switch1 enabled=yes
Современные IP-телефоны, такие как Yealink, Grandstream, Polycom, уже сами проставляют метку DSCP 46 в исходящие пакеты. Нам остаётся лишь одно — убедиться, что ни одно устройство по пути не сотрёт эту метку.
QoS через VPN
Если ваш офис подключён к АТС через защищённые туннели, например, WireGuard или IPSec, то здесь возникает отдельная задача: нам нужно «протащить» эти DSCP-метки сквозь туннель, чтобы они сохранились и продолжили работать.
# MikroTik WireGuard — pre-classify вручную
/ip firewall mangle
add chain=output out-interface=wg-hq action=change-dscp \
new-dscp=46 packet-mark=voip-rtp passthrough=no
На VPN-сервере принимающая сторона должна уметь верить внешнему DSCP. В большинстве Linux-туннелей это включается опцией dscp-copy или аналогом.
Реальный кейс: 17 SIP-линий на производстве
Показательный случай был у нас в сентябре 2025 года. Клиент — крупное металлургическое производство в Подмосковье: 45 сотрудников, 17 SIP-линий, Asterisk размещён в дата-центре МТС. Проблема была классической: «Звук постоянно рвётся по вечерам, когда запускаем бэкапы» — канал на 500 Мбит/с полностью загружался во время бэкапов. Замеры показали: до внедрения QoS 32% звонков имели MOS (Mean Opinion Score) ниже 3.5 — катастрофа для операторов. После того как мы настроили QoS на пограничном MikroTik CCR2004 (выделили класс VOICE с priority=1 и сделали shaping остального трафика), ситуация изменилась кардинально: лишь 0.4% звонков опускались ниже MOS 3.5, а средний MOS вырос до 4.3. Работа обошлась в 48 000 руб., настройка заняла один рабочий день, плюс неделю вели мониторинг.
Мониторинг: как проверять QoS работает
Без постоянного мониторинга QoS — это не наука, это чистой воды вера. Чтобы вы были уверены в стабильности, мы всегда используем несколько подходов.
- Nagios/Icinga с плагином
check_snmp_qos— показывает статистику очередей. - Мы подключаем Grafana в связке с Prometheus, используя mikrotik-exporter или librenms. Это даёт наглядную картину всего происходящего в вашей сети.
- Периодически мы используем RTP Analyzer в Wireshark, делая захваты с зеркала порта. Так мы видим качество каждого звонка в деталях.
- Конечно, мы настраиваем MOS-мониторинг прямо на уровне Asterisk/FreePBX, получая данные через CDR. Это позволяет оценивать качество связи глазами ваших пользователей.
# Быстрая проверка DSCP в tcpdump
tcpdump -i any -n -v 'udp and port 5060' | grep -i tos
# Должно быть tos 0x68 (=104, что соответствует DSCP 26 AF31)
Частые ошибки
- Вот, скажем, настроили вы QoS. Только на роутере? Мы такое видели. А ведь коммутаторы, которым эти пакеты достаются дальше, запросто могут взять и сбросить все метки. В итоге, несмотря на все ваши усилия, вся идея приоритезации трафика просто рушится. Разве это эффективно?
- Неправильно указанные UDP-порты для маркировки? Это настоящая западня! Мы часто видим эту ошибку. Стандартные диапазоны ведь известны: Asterisk обычно работает с 10000 по 20000, а FreePBX предпочитает порты от 16384 до 32767. Если эти цифры перепутать при настройке, то качественной связи точно не ждите. Трафик просто не получит нужный приоритет.
- Выставить Priority 1 для всего трафика? Ну, это точно гарантирует, что QoS сразу же теряет смысл. Какой тогда приоритет? Получается, что у вас абсолютно всё важно. А если всё важно, значит, на самом деле, не важно ничего. Разве можно это назвать эффективной настройкой? Это просто обнуляет весь механизм QoS, который должен выделять самое ценное.
- Видим, что иногда QoS настраивают прямо на downstream-интерфейсе. Но подождите! Если ваш провайдер уже применяет свой шейпинг, то делать это на входящем трафике просто бесполезно. Эти пакеты уже прошли через его ограничения. Зачем дублировать? Действительно эффективно настроить QoS нужно именно на upstream-интерфейсе. Там вы влияете на трафик *до* того, как он покинет вашу сеть и столкнется с провайдерским шейпингом. Только так ваши приоритеты будут работать по-настоящему.
- Забытый VPN — туннель съедает метки.
FAQ — QoS для VoIP
- Зачем нужен QoS, если канал 1 Гбит/с?
- QoS нужен не на внутреннем канале, а на узком месте — обычно WAN. При закачке архива на 200 Мбит/с в полноскоростной канал пакеты VoIP начинают тормозить.
- Что такое DSCP и зачем он?
- DSCP — метка приоритета в IP-заголовке. Стандарт для VoIP — DSCP EF (46). Сигналинг SIP — DSCP AF31 (26).
- Достаточно ли только WAN-QoS?
- В идеале — нет, QoS должен быть сквозным. Но на практике 80% проблем решается настройкой только на WAN-интерфейсе.
- Сколько полосы резервировать под голос?
- По 100 кбит/с на разговор для G.711 и 30 кбит/с для G.729. Плюс 15% на накладные расходы.
- QoS работает через VPN?
- Да, если настроить pre-classify. DSCP-метки по умолчанию копируются во внешний IP-заголовок туннеля.
Источники
- RFC 4594: Configuration Guidelines for DiffServ Service Classes — рекомендуемые классы и DSCP для телефонии.
- RFC 3246: An Expedited Forwarding PHB — класс EF (DSCP 46) для голоса.
- MikroTik RouterOS: Queues — Queue Tree и приоритеты.

