SIP
sipp的安装与使用
安装在自己的虚拟机中
问题:虚拟机无网络,桥接或者NAT,sudo dhclient eth0
reference:虚拟机不能上网,ifconfig后只有lo
- 获取sipp
- 安装依赖
- 编译安装
问题:安装依赖失败?例如:Unable to locate package 可以按照以下步骤:
- sudo apt-get update
- sudo apt-get upgrade
- 1\2步骤失败,尝试换源
换源:
sudo cp /etc/apt/sources.ist ~#备份
sudo vim /etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multivers
sudo apt-get update
获取
- 在虚拟机中,解压sipp-3.3.tar.gz。官网下载也行。
依赖
sudo apt-get install g++ gcc automake autoconf libtool make sudo apt-get install libncurses5 libncurses5-dev sudo apt-get install openssl libssl-dev sudo apt-get install libsctp1 lksctp-tools libsctp-dev sudo apt-get install libpcap-dev libnet1 libnet1-dev sudo apt-get install gsl-bin libgsl0-dev libgsl0ldbl
make or make ossl,然后使用 ./sipp -h 检查是否安装完毕
使用
sipp -sf (xml的路径) -i (本机ip) -p (本机port) -s (remote num) (ip:port) -m (发送次数)
xml场景举例
400.xml
- scenario name 场景命名
- recv request 期待到来的报文request
- send 要发出去的sip报文内容
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario>
<!-- sipp> sipp -p 15060 -sf 000_recvreg.xml -->
<scenario name="Registration">
<label id="1"/>
<recv request="PING">
</recv>
<send next="1">
<![CDATA[
SIP/2.0 400 Bad Request
[last_Via:]
[last_To:];tag=asdfa312
[last_CSeq:]
[last_From:]
Allow: REGISTER,INVITE,ACK,BYE,CANCEL,REFER,OPTIONS,NOTIFY,SUBSCRIBE,MESSAGE,INFO,PRACK,UPDATE,PUBLISH
[last_Call-ID:]
WWW-Authenticate: Digest realm="Evergreen",nonce="=werewrerdfgfgfgfythhtththt", algorithm=MD5,qop="auth"
Content-Length: 0
]]>
</send>
</scenario>
“<![CDATA[" 和 “]]>” 之间的内容将会在IP替换后以sip报文的形式发送给目标。可以按需求自由修改报文。
REGISTER.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario>
<scenario name="Registration">
<recv request="REGISTER">
</recv>
<send>
<![CDATA[
SIP/2.0 200 OK
[last_From:]
[last_To:];tag=asdfa3123w
[last_Call-ID:]
[last_CSeq:]
[last_Via:]
Expires:3600
]]>
</send>
</scenario>
INVITE
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario>
<scenario name="Unknown Content-Type">
<recv request="INVITE">
</recv>
<send>
<![CDATA[
SIP/2.0 100 Tring
]]>
</send>
<send>
<![CDATA[
SIP/2.0 180 Ringing
[last_Via:]
[last_From:]
[last_To:];tag=[call_number]
[last_Call-ID:]
[last_CSeq:]
Contact: <sip:[local_ip]:[local_port];transport=[transport]>
Content-Length: 0
]]>
</send>
<send>
<![CDATA[
SIP/2.0 200 OK
[last_Via:]
[last_From:]
[last_To:];tag=[call_number]
[last_Call-ID:]
[last_CSeq:]
Contact: sip:sipp@[local_ip]:[local_port]
Max-Forwards: 70
Content-Type: application/sdp
Content-Length: [len]
v=0
o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
s=-
c=IN IP[media_ip_type] [media_ip]
t=0 0
m=audio 22510 RTP/AVP 100 98 9 8 0 18
a=rtpmap:100 AMR-WB/16000
a=rtpmap:98 AMR/8000
a=rtpmap:9 G722/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:18 G729/8000
a=fmtp:100 mode-set=8;octet-align=1
a=fmtp:98 mode-set=7;octet-align=1
a=fmtp:18 annexb=no
a=sendrecv
]]>
</send>
</scenario>