Пользователь
0,0
рейтинг
12 января в 13:28

Разработка → Asterisk: ngrep, sipgrep, sngrep, protocol diagram

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

Далее речь пойдет о 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, диаграмма пишется словами, а затем преобразуется в понятную картинку, ее можно приложить в таск-трекер к задаче или добавить в документацию.


Надеюсь, что эта информация кому-нибудь также пригодится в работе.
А какими утилитами пользуетесь вы?
Дмитриев Сергей @antirek
карма
50,7
рейтинг 0,0
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (10)

  • +1
    tcpdump, wireshark
  • +1
    sngrep, лучше даже придумать нельзя. Странно что о ней вы не написали, или не слышали. Вот вам скринов кому интересно: github.com/irontec/sngrep/wiki/Screenshots
    • +1
      божественная вещь: ) разработчик утилиты реально за год ее сделал конфеткой. С вашего позволения добавлю ее скриншот в свой обзор.
      • +1
        Я рад что вам понравилось. Добавляйте, это не мой мопед:)
  • +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 (хотя бы пустой) все равно должен быть указан. (См. также здесь)
    • 0
      У меня на Ubuntu и такой вариант ngrep -q -d any -p -W byline port 5060 работает ок.
      Но во избежание недоразумений поправил в заметке команды в соответствии с вашим комментарием.
      Спасибо.
  • +1
    Есть еще очень моцная. но платная тулза www.voipmonitor.org, очень полезно когда у клиента 100-200 звонков в минуту, а тебе звонят и говорят: «у нас поза вчера звонок оборался, что то там загудело, я его слышал а он меня нет, а это был начальник, и теперь он очень злой». И вот если был запущен войпмонитор, то можно отыскать и посмотреть что там было и даже послушать, графики посмотреть… только жрет проц овер 9000.
    • 0
      Могу ошибаться, но думаю, что для сбора всего SIP'а с медиатрафиком можно использовать бесплатный Homer (http://sipcapture.org/), протокол HEP от Homer'а уже заявлен и в asterisk, freeswitch, kamailio. У меня руки еще не дошли это попробовать сделать, поэтому пока только ссылка: )
      • +1
        Homer Медиа не пишет.

        Достаточно посредственный софт, но рисует диаграммы норм

        Идеал конечно совместить дампер от voipmonitor и интерфейс homer
  • +1
    Век живи, век учись! Спасибо огромное за sngrep!

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.