С течением времени в мире OpenSource ПО появляется все больше и больше VoIP приложений, что очень и очень радует. Ещё 6 лет назад было сложно представить сегодняшнее развитие поддержки VoIP различными приложениями. Хотя стоит отметить, что за эти годы был получен неоценимый опыт и что-то просто не было понятно раньше. Сегодня речь пойдет о единственном в своем роде VoIP снифере, предназначенным для оценки и контроля качества VoIP связи — voipmonitor.org.
Конечно существует wireshark, его значение для VoIP администратора сложно переоценить, но он не предназначен для потоковой обработки вызовов. VoIPmonitor перехватывает вызовы в реальном времени и сохраняет статистику и дампы файлов в БД для последующего анализа.
VoIPmonitor использует снифер на базе libpcap, обнаруживает SIP INVITE пакет и перехватывает RTP в обоих направлениях. Далее используется код Jitter буфера Asterisk'а для имитации буфера и получения статистики потери пакетов и джиттера при различных величинах и типах буфера. При завершении вызова статистика считывается, с её помощью рассчитывается приблизительное значение MOS по методике описанной в спецификации G.107 (используется ограниченное количество параметров, sic!).
Эта программа завоевала уже огромную популярность и используется повсеместно. Не буду углубляться в свои выводы и результаты, полученные при работе с этим проектом, скажу только что выглядит и развивается он очень многообещающим образом.
Проблемой при старте работы может явиться описание полей базы данных, используемой VoIPmonitor. Такое описание можно частично получить внимательным чтением обсуждений на SourceForge или чтением исходного кода. Делюсь результатами своих изысканий:
- 3 — вызов отвечен и корректно завершен
- 2 — вызов отвечен, но одна из сторон не ответила на bye
- 1 — вызов отвечен, но не был отправлен bye
- 0 — вызов не отвечен
Далее следует статистика по RTP потокам от стороны A и B, названия параметров именуются соответственно, начинаясь с буквы a или b. Сохраняются лишь статистика по двум RTP потокам, которые содержат наибольшее количество пакетов:
Последняя серия параметров отображает результат эмуляции джитер буфера в нескольких вариантах:
- f1 — подсчет ведется при использовании фиксированного джитер буфера jitter_max = 50, jitter_resync_threshold = 50
- f2 — подсчет ведется при использовании фиксированного джитер буфера jitter_max = 200, jitter_resync_threshold = 200
- adapt — подсчет ведется при использовании адаптивного джитер буфера jitter_max = 500, jitter_resync_threshold = 500