Это небольшая заметка о паре утилит, которые использую время от времени для работы с астериском (для отладки телефонии и просмотра SIP пакетов). Многие коллеги не знают о более простых утилитах, которые могли бы сэкономить минутку-другую рабочего времени.
Далее речь пойдет о ngrep, sipgrep, sngrep, js-sequence-diagrams
SIP
Иногда требуется быстро проанализировать: а что там у нас уходит в REGISTER пакете? Или INVITE ушел, а был ли ответ?
Всем известные программы wireshark и tcpdump снимают дампы, в которых можно найти информацию о всех пакетах, которые проходили на нужном интерфейсе в сети, а также проанализировать эти пакеты и найти сеансы.
Но tcpdump слишком низкоуровневый, а wireshark громоздок, зачастую весь такой функционал не требуется. Поэтому можно воспользоваться ngrep или sipgrep, и решить проблему, не привлекая тяжелую артиллерию.
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-сервере.
Просто установите ее и запустите.
Конечно, не всегда проблемы связи исчерпываются проблемами с сигнализацией SIP. Если есть проблемы с RTP, потерями пакетов, бульканием голоса, то здесь уже стоит использовать более мощные инструменты (у проекта Kamailio есть страничка, посвященная инструментам анализа SIP и RTP).
Диаграмма протокола
Иногда необходимо не анализировать существующие пакеты, а нарисовать диаграмму протокола, чтобы представить где как какой пакет ходит, типа такой:
Для этого удобно воспользоваться страничкой js-sequence-diagrams, диаграмма пишется словами, а затем преобразуется в понятную картинку, ее можно приложить в таск-трекер к задаче или добавить в документацию.
Надеюсь, что эта информация кому-нибудь также пригодится в работе.
А какими утилитами пользуетесь вы?
Автор: antirek