Диагностика качества RTP в Wireshark: расчет джиттера, потерь и MOS
- Жалобы абонентов на металлический голос, заикание, кваканье или пропадание фрагментов слов.
- Высокое значение джиттера (> 30 мс) и потери пакетов (> 1-2%) в статистике вызова PBX.
- Субъективная оценка качества разговора (MOS) опускается ниже порога приемлемости 3.5.
- Асимметричное качество звука (один абонент слышит чисто, второй — с прерываниями).
1. Захват VoIP-трафика на интерфейсе
Запустите сбор дампа пакетов на сервере телефонии (Asterisk, FreeSWITCH, Kamailio) или сетевом шлюзе:
tcpdump -nn -i eth0 -s 0 -w /tmp/voip_capture.pcap 'port 5060 or portrange 10000-20000'2. Анализ медиапотоков через меню Wireshark
- Откройте
voip_capture.pcapв Wireshark. - Перейдите в меню: Telephony → RTP → RTP Streams.
- Оцените ключевые метрики в таблице:
- Max Delta (ms): максимальный интервал между последовательными пакетами (норма для G.711 при ptime 20ms — 20-22 мс).
- Max Jitter (ms): максимальное отклонение фазы поступления пакетов (критично при > 30 мс).
- Packet Loss (%): процент потерянных RTP-пакетов (критично при > 1%).
- Mean MOS: расчетная оценка качества звука (4.3-4.5 — отлично, < 3.6 — деградация).
3. Детальный анализ конкретного потока (Stream Analysis)
Выберите поток и нажмите Analyze → Graph. График наглядно отображает:
- Всплески джиттера во времени (коррелируют с перегрузкой каналов или отсутствием QoS);
- Выпадение sequence numbers (потери в сетевой инфраструктуре);
- Маркеры смены Payload Type и переполнения буфера джиттера.
4. Прослушивание аудиотрека для верификации артефактов
В окне анализа потока нажмите Play Streams, выберите нужные каналы (прямой и обратный) и оцените звучание на предмет десинхронизации и щелчков.
Частые вопросы (FAQ)
Как Wireshark рассчитывает оценку MOS для RTP?
Wireshark использует формулу E-model (ITU-T G.107), вычисляя рейтинг R-factor на основе кодека, задержки, джиттера и потерь пакетов, после чего конвертирует R в шкалу MOS (от 1.0 до 4.5).
Какой уровень джиттера считается критическим для кодеков G.711 и G.729?
Для кодека G.711 допустим джиттер до 20-30 мс (компенсируется стандартным Jitter Buffer). Для G.729 сжатие делает звук неразборчивым уже при потерях более 1% и джиттере выше 20 мс.
Почему в выводе RTP Streams потери равны 0%, но звук прерывается?
Если джиттер превышает размер буфера принимающего телефона (Jitter Buffer Overrun/Underrun), устройство отбрасывает опоздавшие пакеты локально, хотя Wireshark фиксирует их доставку.
Как экспортировать аудиопоток из PCAP в файл WAV?
В окне Telephony -> RTP Player выделите нужные дорожки, нажмите кнопку 'Routing' (выберите L/R каналы) и перейдите в File -> Save -> Synchronized Audio (.wav).