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


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

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


  1. BoDRbI
    12.01.2016 14:19
    +1

    tcpdump, wireshark


  1. Emily_Rose
    12.01.2016 16:35
    +1

    sngrep, лучше даже придумать нельзя. Странно что о ней вы не написали, или не слышали. Вот вам скринов кому интересно: github.com/irontec/sngrep/wiki/Screenshots


    1. antirek
      12.01.2016 17:58
      +1

      божественная вещь: ) разработчик утилиты реально за год ее сделал конфеткой. С вашего позволения добавлю ее скриншот в свой обзор.


      1. Emily_Rose
        12.01.2016 19:33
        +1

        Я рад что вам понравилось. Добавляйте, это не мой мопед:)


  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 (хотя бы пустой) все равно должен быть указан. (См. также здесь)


    1. antirek
      12.01.2016 20:17

      У меня на Ubuntu и такой вариант ngrep -q -d any -p -W byline port 5060 работает ок.
      Но во избежание недоразумений поправил в заметке команды в соответствии с вашим комментарием.
      Спасибо.


  1. Emily_Rose
    12.01.2016 19:44
    +1

    Есть еще очень моцная. но платная тулза www.voipmonitor.org, очень полезно когда у клиента 100-200 звонков в минуту, а тебе звонят и говорят: «у нас поза вчера звонок оборался, что то там загудело, я его слышал а он меня нет, а это был начальник, и теперь он очень злой». И вот если был запущен войпмонитор, то можно отыскать и посмотреть что там было и даже послушать, графики посмотреть… только жрет проц овер 9000.


    1. antirek
      12.01.2016 20:28

      Могу ошибаться, но думаю, что для сбора всего SIP'а с медиатрафиком можно использовать бесплатный Homer (http://sipcapture.org/), протокол HEP от Homer'а уже заявлен и в asterisk, freeswitch, kamailio. У меня руки еще не дошли это попробовать сделать, поэтому пока только ссылка: )


  1. mifistor
    14.01.2016 10:03
    +1

    Век живи, век учись! Спасибо огромное за sngrep!