Далее речь пойдет о ngrep, sipgrep, sngrep, js-sequence-diagrams
SIP
Иногда требуется быстро проанализировать: а что там у нас уходит в REGISTER пакете? Или INVITE ушел, а был ли ответ?
Всем известные программы wireshark и tcpdump снимают дампы, в которых можно найти информацию о всех пакетах, которые проходили на нужном интерфейсе в сети, а также проанализировать эти пакеты и найти сеансы.
Но tcpdump слишком низкоуровневый, а wireshark громоздок, зачастую вся его функциональность и не требуется. Поэтому можно воспользоваться ngrep, sipgrep или sngrep, и решить проблему, не привлекая тяжелую артиллерию.
ngrep
Нередко эта утилита уже есть в системе, но если нет, то легко ставится из пакетов вашего дистрибутива. Позволяет в режиме реального времени посмотреть куда у вас что идет по трафику.
Отфильтровать SIP-пакеты можно так:
ngrep -q -d any -p -W byline '' 'port 5060'
А так можно отфильтровать пакеты, где есть слово REGISTER (т.е. сюда попадут и пакеты REGISTER и ответы на них)
ngrep -q -d any -p -W byline 'REGISTER'
Поскольку ngrep это больше про сеть, чем про SIP, то есть еще другие примеры применения.
sipgrep
Похож на ngrep, только позволяет смотреть трафик SIP протокола: например, есть опции для поиска в определенных полях пакета — To, From, Contact, есть подсветка некоторых значений.
Покажет весь SIP-трафик:
sipgrep -d any
Покажет трафик To: 101 с отчетом по сессиям:
sipgrep -d any -t 101 -G
Больше информации об установке и использовании на странице проекта.
sngrep
Спасибо, Emily_Rose. Пожалуй, самая продвинутая утилита. Вы в реальном времени можете наблюдать что происходит с SIP диалогами на вашем SIP-сервере.
Просто установите ее и запустите.
Cтраница проекта sngrep
Конечно, не всегда проблемы связи исчерпываются проблемами с сигнализацией SIP. Если есть проблемы с RTP, потерями пакетов, бульканием голоса, то здесь уже стоит использовать более мощные инструменты (у проекта Kamailio есть страничка, посвященная инструментам анализа SIP и RTP).
Диаграмма протокола
Иногда необходимо не анализировать существующие пакеты, а нарисовать диаграмму протокола, чтобы представить где как какой пакет ходит, типа такой:
Для этого удобно воспользоваться страничкой js-sequence-diagrams, диаграмма пишется словами, а затем преобразуется в понятную картинку, ее можно приложить в таск-трекер к задаче или добавить в документацию.
Надеюсь, что эта информация кому-нибудь также пригодится в работе.
А какими утилитами пользуетесь вы?
Комментарии (9)
Emily_Rose
12.01.2016 16:35+1sngrep, лучше даже придумать нельзя. Странно что о ней вы не написали, или не слышали. Вот вам скринов кому интересно: github.com/irontec/sngrep/wiki/Screenshots
antirek
12.01.2016 17:58+1божественная вещь: ) разработчик утилиты реально за год ее сделал конфеткой. С вашего позволения добавлю ее скриншот в свой обзор.
sheshanaag
12.01.2016 19:36+1По поводу ngrep:
ngrep -q -d any -p -W byline port <i>5060</i>
Это не совсем верно (у меня запуск этой строки на Fedora 23 c ngrep-1.45-19.git20131221.16ba99a.fc23.x86_64 вообще приводит к SEGFAULT!). В этой записи вы ищете match на port, с неверным bpf фильтром 5060. Должно быть
ngrep -q -d any -p -W byline '' 'port 5060'
или чуть проще
ngrep -q -d any -p -W byline '' port 5060
но match (хотя бы пустой) все равно должен быть указан. (См. также здесь)antirek
12.01.2016 20:17У меня на Ubuntu и такой вариант ngrep -q -d any -p -W byline port 5060 работает ок.
Но во избежание недоразумений поправил в заметке команды в соответствии с вашим комментарием.
Спасибо.
Emily_Rose
12.01.2016 19:44+1Есть еще очень моцная. но платная тулза www.voipmonitor.org, очень полезно когда у клиента 100-200 звонков в минуту, а тебе звонят и говорят: «у нас поза вчера звонок оборался, что то там загудело, я его слышал а он меня нет, а это был начальник, и теперь он очень злой». И вот если был запущен войпмонитор, то можно отыскать и посмотреть что там было и даже послушать, графики посмотреть… только жрет проц овер 9000.
antirek
12.01.2016 20:28Могу ошибаться, но думаю, что для сбора всего SIP'а с медиатрафиком можно использовать бесплатный Homer (http://sipcapture.org/), протокол HEP от Homer'а уже заявлен и в asterisk, freeswitch, kamailio. У меня руки еще не дошли это попробовать сделать, поэтому пока только ссылка: )
BoDRbI
tcpdump, wireshark