概述
在VOIP的使用過程中,最常見的問題就是信令不通和語音質量問題。
通常的問題跟蹤手段包括日志分析、抓包分析。
抓包的工具有wireshark、tcpdump等等,如果是只針對sip信令的抓包,則sngrep更專業好用。
sngrep對SIP抓包的專業性體現在:
- 實時抓取,實時展示。
- 可以作為sip PCAP查看器。
- 對sip信令中的任意字段設置過濾器。
- 對一個dialog的sip信令自動關聯。
環境
centos6,centos7
安裝
依賴庫
yum install ncurses-devel make libpcap-devel pcre-devel openssl-devel git gcc autoconf automake
yum源
vi /etc/yum.repos.d/irontec.repo [irontec] name=Irontec RPMs repository baseurl=http://packages.irontec.com/centos/$releasever/$basearch/
安裝
rpm --import http://packages.irontec.com/public.key yum install sngrep
命令幫助
[root@localhost ~]# sngrep --help Usage: sngrep [-hVcivNqrD] [-IO pcap_dump] [-d dev] [-l limit] [-B buffer] [-LHE capture_url] [<match expression>] [<bpf filter>] -h --help This usage -V --version Version information -d --device Use this capture device instead of default -I --input Read captured data from pcap file -O --output Write captured data to pcap file -B --buffer Set pcap buffer size in MB (default: 2) -c --calls Only display dialogs starting with INVITE -r --rtp Capture RTP packets payload -l --limit Set capture limit to N dialogs -i --icase Make <match expression> case insensitive -v --invert Invert <match expression> -N --no-interface Don't display sngrep interface, just capture -q --quiet Don't print captured dialogs in no interface mode -D --dump-config Print active configuration settings and exit -f --config Read configuration from file -F --no-config Do not read configuration from default config file -R --rotate Rotate calls when capture limit have been reached -H --eep-send Homer sipcapture url (udp:X.X.X.X:XXXX) -L --eep-listen Listen for encapsulated packets (udp:X.X.X.X:XXXX) -E --eep-parse Enable EEP parsing in captured packets
測試
指定網卡br0抓包
sngrep –d br0
主界面,展示所有抓取的sip信令,按照dialog展示
上下選擇某一個dialog,enter進入查看信令細節,本圖是一個注冊過程的信令
本圖是一個呼叫dialog的完整信令交互展示
總結
sngrep是一個非常好用的sip呼叫跟蹤工具,還有很多的細節和使用方法有待開發。
比如我們可以在sip server上對指定號碼抓取呼叫信令和rtp媒體流,用來跟蹤定位問題。
空空如常
求真得真