Настройка QoS для VoIP: приоритизация голосового трафика

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

Голосовой трафик (VoIP) критически чувствителен к задержкам и потерям пакетов. Если для загрузки файла задержка в 200 мс незаметна, то для телефонного разговора она создаёт дискомфорт, а при 300 мс — делает общение невозможным.

Требования к сети для VoIP (ITU-T G.114):

ПараметрДопустимоХорошоОтлично
Задержка (latency)< 150 мс< 100 мс< 50 мс
Джиттер (jitter)< 30 мс< 20 мс< 10 мс
Потеря пакетов< 1%< 0.5%< 0.1%

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

Модель DiffServ и DSCP-маркировка

Современный QoS основан на модели DiffServ (Differentiated Services). Каждый пакет маркируется значением DSCP (Differentiated Services Code Point) в заголовке IP, определяющим его приоритет.

Стандартные классы для VoIP:

Тип трафикаDSCPPHBЗначение
Голос (RTP)EF (46)Expedited ForwardingВысший приоритет, минимум задержки
Сигнализация (SIP/H.323)CS3 (24)Class Selector 3Важно для установки вызова
ВидеоконференцияAF41 (34)Assured Forwarding 41Высокий приоритет с допуском потерь
Бизнес-данныеAF21 (18)Assured Forwarding 21Приоритет выше обычных данных
Прочий трафикBE (0)Best EffortБез гарантий

Маркировка должна выполняться максимально близко к источнику — на IP-телефоне или на порту коммутатора доступа. Маршрутизаторы и промежуточные коммутаторы используют маркировку для принятия решений о приоритизации.

Настройка QoS на коммутаторах Cisco

На коммутаторах Cisco Catalyst QoS настраивается через MQC (Modular QoS CLI): class-map определяет трафик, policy-map — действие, service-policy привязывает политику к интерфейсу.

! Включение QoS (на старых моделях)
mls qos

! Определение классов трафика
class-map match-any VOICE
  match ip dscp ef
  match ip dscp cs5

class-map match-any VOICE-SIGNALING
  match ip dscp cs3
  match ip dscp af31

class-map match-any VIDEO
  match ip dscp af41
  match ip dscp af42

class-map match-any BUSINESS-CRITICAL
  match ip dscp af21
  match ip dscp af22

! Создание политики
policy-map QOS-POLICY
  class VOICE
    priority percent 10
  class VOICE-SIGNALING
    bandwidth percent 5
  class VIDEO
    bandwidth percent 25
    random-detect dscp-based
  class BUSINESS-CRITICAL
    bandwidth percent 25
    random-detect dscp-based
  class class-default
    bandwidth percent 35
    random-detect

! Применение к WAN-интерфейсу
interface GigabitEthernet0/1
  service-policy output QOS-POLICY

Ключевое слово priority создаёт строгую очередь с минимальной задержкой (LLQ — Low Latency Queuing). Не выделяйте для priority более 33% полосы — это может вызвать голодание других классов.

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

По умолчанию коммутатор не доверяет DSCP-маркировке от конечных устройств. Для портов с IP-телефонами:

! Настройка порта с IP-телефоном
interface GigabitEthernet1/0/1
  description IP Phone + PC
  switchport mode access
  switchport access vlan 100
  switchport voice vlan 200
  mls qos trust dscp
  auto qos voip cisco-phone
  spanning-tree portfast

Команда auto qos voip cisco-phone автоматически настраивает доверие DSCP для Cisco IP-телефонов через CDP. Для телефонов других производителей используйте mls qos trust dscp в комбинации с policy-map для маркировки на входе.

Настройка QoS на MikroTik RouterOS

На MikroTik QoS реализуется через комбинацию Mangle (маркировка) и Queue Tree (очереди). Рассмотрим настройку для канала 100 Мбит/с:

# Шаг 1: Маркировка VoIP-трафика в Mangle
/ip firewall mangle
add chain=prerouting protocol=udp dst-port=5060-5061 \
    action=mark-packet new-packet-mark=voip-signaling passthrough=yes
add chain=prerouting protocol=udp dst-port=10000-20000 \
    action=mark-packet new-packet-mark=voip-rtp passthrough=yes
add chain=prerouting dscp=46 \
    action=mark-packet new-packet-mark=voip-rtp passthrough=yes

# Шаг 2: Маркировка остального трафика
add chain=prerouting action=mark-packet \
    new-packet-mark=other-traffic passthrough=yes

# Шаг 3: Создание Queue Tree
/queue tree
add name=WAN-Total parent=ether1-wan max-limit=95M
add name=VoIP-RTP parent=WAN-Total packet-mark=voip-rtp \
    priority=1 max-limit=10M
add name=VoIP-Signaling parent=WAN-Total packet-mark=voip-signaling \
    priority=2 max-limit=2M
add name=Other parent=WAN-Total packet-mark=other-traffic \
    priority=8 max-limit=85M

Установите max-limit родительской очереди на 95% от реальной скорости канала. Это гарантирует, что QoS работает до того, как пакеты попадут в очередь провайдера, где приоритизация не контролируется.

DSCP-маркировка исходящего трафика

Если IP-телефоны не маркируют трафик сами, сделайте это на маршрутизаторе:

/ip firewall mangle
add chain=postrouting protocol=udp dst-port=10000-20000 \
    action=change-dscp new-dscp=46 passthrough=yes comment="VoIP RTP -> EF"
add chain=postrouting protocol=udp dst-port=5060-5061 \
    action=change-dscp new-dscp=24 passthrough=yes comment="SIP -> CS3"

Маркировка в postrouting гарантирует, что трафик уйдёт в WAN с правильным DSCP. Это важно, если провайдер поддерживает QoS на своей стороне.

Выделение VLAN для голосового трафика

Изоляция VoIP в отдельный VLAN — обязательная практика. Это обеспечивает безопасность (телефоны не в одном широковещательном домене с ПК), упрощает QoS и снижает влияние широковещательных штормов.

# Пример топологии VLAN
# VLAN 100 — Данные (рабочие станции)
# VLAN 200 — Голос (IP-телефоны)
# VLAN 300 — Управление (коммутаторы, АТС)

# Настройка DHCP для Voice VLAN
# На DHCP-сервере создайте отдельный scope:
# Subnet: 10.0.200.0/24
# Option 150 (TFTP Server): 10.0.300.10  — для автонастройки телефонов
# Option 66 (Boot Server): 10.0.300.10
# Lease time: 8 часов (телефоны включены постоянно)

На маршрутизаторе между VLAN настройте ACL, разрешающие только необходимый трафик из голосового VLAN: SIP к АТС, RTP между телефонами, NTP для синхронизации времени. Весь остальной трафик должен быть запрещён.

Мониторинг качества VoIP

Настроенный QoS необходимо контролировать. Ключевые инструменты мониторинга:

# На Cisco: просмотр статистики очередей
show policy-map interface GigabitEthernet0/1
# Обратите внимание на поля:
# - packets output: сколько пакетов прошло через класс
# - drops: сколько пакетов отброшено (для VOICE должен быть 0)

# На MikroTik: статистика очередей
/queue tree print stats

# Тестирование SIP с помощью SIPVicious
sipvicious_svwar -e 100-110 10.0.200.1

# Мониторинг джиттера через iperf3
# На сервере:
iperf3 -s -p 5201
# На клиенте (эмуляция VoIP: UDP, 64 Кбит/с, пакеты по 160 байт):
iperf3 -c 10.0.1.1 -u -b 64K -l 160 -t 60 --dscp 46

Для постоянного мониторинга используйте VoIPmonitor — open-source решение, перехватывающее SIP/RTP и вычисляющее MOS (Mean Opinion Score) для каждого вызова. MOS от 4.0 до 5.0 — отличное качество, ниже 3.5 — неприемлемо.

Grafana-дашборд для VoIP

Настройте сбор метрик в Prometheus и визуализацию в Grafana:

# prometheus.yml — сбор SNMP-метрик с коммутаторов
scrape_configs:
  - job_name: 'snmp-switches'
    static_configs:
      - targets:
        - 10.0.0.1  # Core switch
        - 10.0.0.2  # Access switch
    metrics_path: /snmp
    params:
      module: [if_mib]
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - target_label: __address__
        replacement: snmp-exporter:9116

На дашборде отобразите: использование полосы по классам QoS, количество активных VoIP-вызовов, средний MOS, количество отброшенных пакетов в голосовой очереди, джиттер по часам.

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

При внедрении QoS для VoIP часто допускают ошибки, которые сводят на нет всю настройку:

1. QoS настроен только на исходящем направлении. QoS работает при формировании очереди на отправку. Входящий трафик от провайдера уже прибыл — его нельзя приоритизировать на маршрутизаторе. Решение: договоритесь с провайдером о QoS на его стороне, или используйте ingress policing для ограничения низкоприоритетного входящего трафика.

2. max-limit очереди равен скорости канала. Если полоса заполнена полностью, пакеты начнут буферизироваться в оборудовании провайдера без учёта QoS. Устанавливайте max-limit на 90-95% реальной скорости.

3. Не выделен отдельный VLAN для VoIP. Широковещательные штормы в пользовательском VLAN затронут телефоны. ARP-спуфинг может перенаправить голосовой трафик.

4. Используется Wi-Fi для телефонов без WMM. Стандартный Wi-Fi не гарантирует приоритет. Убедитесь, что на точках доступа включён WMM (Wi-Fi Multimedia) и настроены EDCA-параметры для голосовой категории.

5. Не учитывается overhead. Кодек G.711 генерирует 64 Кбит/с полезных данных, но с заголовками IP/UDP/RTP/Ethernet — около 87 Кбит/с на один вызов. Для 50 одновременных вызовов нужно зарезервировать минимум 4.5 Мбит/с, а не 3.2 Мбит/с.

Часто задаваемые вопросы

G.711 (64 Кбит/с) обеспечивает лучшее качество и минимальную задержку кодирования, рекомендуется для LAN. G.729 (8 Кбит/с) экономит полосу и подходит для WAN-каналов. Opus — современный кодек с адаптивным битрейтом, идеален для WebRTC и софтфонов.

QoS не добавляет пропускную способность — он перераспределяет существующую. Если канал загружен полностью, QoS обеспечит приоритет голоса за счёт замедления остального трафика. Однако при хронической перегрузке единственное решение — расширение канала.

Внутри LAN — скорее нет, 20 вызовов G.711 занимают менее 2 Мбит/с. Но на WAN-канале между офисами или при выходе в интернет QoS обязателен. Также QoS нужен, если в сети есть источники микро-всплесков трафика (бэкапы, репликация), которые могут вызвать кратковременные перегрузки буферов коммутаторов.

Запустите iperf3 для генерации фоновой нагрузки на 100% канала. Одновременно совершите VoIP-вызов. Без QoS качество вызова резко упадёт (MOS ниже 3.0). С QoS — останется на уровне 4.0+. Также проверяйте счётчики drops в policy-map: для класса VOICE drops должен быть 0.

Нужна помощь с настройкой?

Специалисты АйТи Фреш помогут с внедрением и настройкой — 15+ лет опыта, обслуживание от 15 000 ₽/мес

📞 Связаться с нами
#QoS#VoIP#качество связи#DSCP#приоритизация трафика#MikroTik QoS#Cisco QoS#jitter
Комментарии 0

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

загрузка...