Asterisk: ngrep, sipgrep, protocol diagram

Это небольшая заметка о паре утилит, которые использую время от времени для работы с астериском (для отладки телефонии и просмотра SIP пакетов). Многие коллеги не знают о более простых утилитах, которые могли бы сэкономить минутку-другую рабочего времени.

Далее речь пойдет о ngrep, sipgrep, 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, то есть еще другие примеры применения.

f600143da59c4f81b2f126eb8eb3830a.jpg

sipgrep

Похож на ngrep, только позволяет смотреть трафик SIP протокола: например, есть опции для поиска в определенных полях пакета — To, From, Contact, есть подсветка некоторых значений.

Покажет весь SIP-трафик:

sipgrep -d any

Покажет трафик To: 101 с отчетом по сессиям:

sipgrep -d any -t 101 -G

Больше информации об установке и использовании на странице проекта.

aac3031c4de04e96abd169ca9a7f2d53.jpg

Конечно, не всегда проблемы связи исчерпываются проблемами с сигнализацией SIP. Если есть проблемы с RTP, потерями пакетов, бульканием голоса, то здесь уже стоит использовать более мощные инструменты (у проекта Kamailio есть страничка, посвященная инструментам анализа SIP и RTP).

Диаграмма протокола


Иногда необходимо не анализировать существующие пакеты, а нарисовать диаграмму протокола, чтобы представить где как какой пакет ходит, типа такой:
d19b7a21c14d4a738be01bcc891fc951.jpg

Для этого удобно воспользоваться страничкой js-sequence-diagrams, диаграмма пишется словами, а затем преобразуется в понятную картинку, ее можно приложить в таск-трекер к задаче или добавить в документацию.
1a13adc8c9a74f06926a6ff7574816b6.png

Надеюсь, что эта информация кому-нибудь также пригодится в работе.
А какими утилитами пользуетесь вы?

© Habrahabr.ru