Диагностика качества VoIP (SIP/RTP): джиттер, потери пакетов и кодеки
- Эффект «роботизированного голоса», прерывание речи, металлический звон или кваканье в телефонной трубке.
- Проблема односторонней слышимости (One-way audio): абонент А слышит абонента Б, но не слышит ответа.
- Аномальный рост показателя джиттера (Jitter > 30ms) и потерь пакетов (Packet Loss > 1%) в статистике RTCP.
- Сброс звонков ровно через 30 секунд после установки соединения (SIP ACK timeout).
1. Анализ ключевых сетевых метрик для голоса
Для эталонного качества передачи речи по кодекам G.711 / G.729 / Opus сеть должна удовлетворять стандартам ITU-T G.114:
- One-way Latency (Задержка в одну сторону): не более 150 мс.
- Jitter (Джиттер / вариация задержки): не более 20–30 мс.
- Packet Loss (Потеря пакетов): строго менее 1% (для G.711 — менее 0.5%).
2. Диагностика односторонней слышимости (One-Way Audio) и SIP NAT
В 95% случаев проблема вызвана трансляцией сетевых адресов (NAT) или искажением SDP-сообщений межсетевыми экранами:
- Отключите SIP ALG (Application Layer Gateway) на всех роутерах/фаерволах по пути прохождения трафика. SIP ALG часто некорректно модифицирует SDP-тело пакетов:
# Отключение SIP ALG на Cisco IOS
no ip nat service sip udp port 5060
# Отключение на Mikrotik
/ip firewall service-port disable sip
# Отключение на FortiGate
config system settings
set sip-expectation disable
set sip-nat-trace disable
set default-voip-alg-mode kernel-helper-based
end3. Настройка приоритезации трафика (QoS / AutoQoS)
Голосовой трафик RTP должен попадать в очередь строгого приоритета (Strict Priority Queue — LLQ) с маркировкой DSCP EF (46), а сигнальный трафик SIP — с маркировкой DSCP CS3 (24) или AF31 (26):
class-map match-all VOIP_RTP
match ip dscp ef
class-map match-all VOIP_SIP
match ip dscp cs3
!
policy-map WAN_QOS_EDGE
class VOIP_RTP
priority percent 30
class VOIP_SIP
bandwidth percent 5
class class-default
fair-queue
random-detect
!
interface GigabitEthernet0/0/0
service-policy output WAN_QOS_EDGE4. Анализ потока RTP в Wireshark
# Фильтр для отображения сигнальных и медиа-пакетов
sip || rtp || rtcp
# Меню Wireshark для комплексного анализа:
# Telephony -> VoIP Calls -> Выбрать звонок -> Play Streams / RTP Player
# Telephony -> RTP -> RTP Streams -> Stream Analysis (анализ Max Delta, Jitter, Skew) Частые вопросы (FAQ)
Почему звонок завершается ровно через 30 секунд (или 32 секунды)?
Это классический симптом отсутствия подтверждения SIP ACK. После отправки сообщения '200 OK' сервер ожидает подтверждения 'ACK'. Если из-за NAT или блокировок фаервола ACK не доходит до АТС, таймер транзакции T1/B истекает, и сервер отправляет 'BYE'.
Почему SIP ALG рекомендуется отключать на большинстве фаерволов?
Встроенные механизмы SIP ALG на маршрутизаторах часто устарели, некорректно обрабатывают современные расширения SIP/SDP, портят сопоставление RTP-портов и ломают передачу при использовании TLS-шифрования (SIPS) или STUN/TURN.
Что такое Jitter Buffer и как он компенсирует джиттер?
Джиттер-буфер на стороне IP-телефона или шлюза временно задерживает входящие аудиопакеты, выстраивая их в правильном хронологическом порядке перед подачей на ЦАП. Однако при превышении максимального размера буфера пакеты сбрасываются как потерянные (Late packet drops).
В чем разница между кодеками G.711 (alaw/ulaw) и G.729?
G.711 передает несжатый звук студийного качества (64 кбит/с полезной нагрузки, ~87 кбит/с с L2/IP заголовками) без нагрузки на CPU. G.729 сжимает поток до 8 кбит/с (~32 кбит/с с заголовками), экономя полосу, но создавая вычислительную нагрузку и будучи чувствительным к потерям пакетов.