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


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

    Подробнее
    Реклама
    Комментарии 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!

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