语音服务器性能测试工具SIPp使用教程
Contents
1 概述: 1
1.1 uac.bat: 1
1.2 data.csv: 2
1.3 l: 2
2 常见问题: 6
2.1 uas.bat 6
2.2 l 7
3 操作截图: 11
3.1 uac: 11
3.2 uas: 13
1 概述:
SIPp主要用于性能测试,可以很方便的模拟UAC和UAS,但是也经常用于异常测试和一些特定场景的测试。
用SIPp做测试的时候需要准备五个文件:uac.bat, uas.bat, l, l, data.csv。
uac.bat:调用sipp命令,并传入相应参数的批处理文件,模拟UAC(例如主叫)。
uas.bat:调用sipp命令,并传入相应参数的批处理文件,模拟UAS(例如被叫)。
l:根据需要编写的uac侧的sip信号流程。
l:根据需要编写的uas侧的sip信号流程。
data.csv:用于l和l中需要引入的相应数据。
下面就举例来说明这五个文件的编写方法和用法。
1.1 uac.bat:
例:
sipp -sn uac 172.31.89.4:5060 -r 1 -rp 3000 -inf data.csv -p 7098 -i 172.31.89.242 -s 8001 -sf l
各个参数说明:
172.31.89.4:5060:远端地址和端口(在脚本中用remote_ip,remote_port引入)
-r 1 -rp 3000:每三秒钟发一个呼
-inf data.csv:引入数据配置文件
-p 7098:本地端口(在脚本中用local_port引入)
-i 172.31.89.242:本地地址(在脚本中用local_ip引入)
-s 8001:被叫号码(在脚本中用rvice引入)
-sf l:引入脚本文件,根据需要模拟的呼叫流程编写
1.2 data.csv:
例:
SEQUENTIAL
8000;
此例中只有一个数据,引入时用field0,如果有多个数据,用分号隔开。
1.3 l:
例:
<scenario name="branch_client">
<nd retrans="500">
<![CDATA[
INVITE sip:[rvice]@[remote_ip] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch];rport
Allow: INVITE,CANCEL,ACK,BYE,OPTIONS,REFER,NOTIFY,MESSAGE,SUBSCRIBE,INFO
From: "[field0]" <sip:[field0]@[local_ip]>;tag=[call_number]
To: "[rvice]" <sip:[rvice]@[remote_ip]>
Call-ID: [call_id]
CSeq: 1 INVITE
Contact: <sip:[field0]@[local_ip]:[local_port]>
Max-Forwards: 70
Content-Type: application/sdp
Content-Length:[len]
v=0
o=[field0] 0 0 IN IP4 [local_ip]
s=SIP Call
t=0 0
c=IN IP4 [local_ip]
m=audio [media_port] RTP/AVP 0
a=rtpmap:0 PCMU/8000
]]>
</nd>
注:
1.需要sipp命令赋值的参数,请参考关于uac.bat的说明
[local_ip]、[local_port]、[remote_ip]、[remote_port]、[rvice]
2.sipp自动检测生成的参数:
[call_number]、[call_id]、[cq]、[len]、[branch]
3.从数据配置文件引入的参数,请参考data.csv,第一个值为field0
4.CSeq: 1 INVITE:此处本来应该写成CSeq: [cq] INVITE,而在对应的ACK中写成CSeq: [cq] ACK,但在INVITE和ACK的中间夹杂有PRACK的时候,ACK如果写成上述形式,将不能与INVITE对应,所以可以写死。
<recv respon="100" optional="true">
</recv>
注:按照预期,发出INVITE之后有可能受到100 Trying,也有可能收不到,所以加上可选标记
<recv respon="180">
</recv>
注:此时如果收到180以外的响应,会异常退出。
<recv respon="200">
</recv>
<nd>
<![CDATA[
ACK sip:[rvice]@[remote_ip] SIP/2.0