分类: 系统运维
2009-10-16 09:42:43
Sipp测试工具使用文档
Author:阮班勇
Date:2009.10.12
sipp是对sip协议进行性能测试的一款软件系统。sipp能够对远程系统发起一个或者多个呼叫。Sipp提供呼叫发起端(uac)和呼叫接收端(uas)的功能,通过呼叫完成对中间设备(TG等)的性能测试。
sipp会根据xxx.xml场景描述文件来进行sip呼叫的建立、处理和释放。
考虑到测试时操作的方便性,因此写了几个批处理文件,封装内部细节,只须指定服务器的IP与端口即可进行测试。(约定 uac指定端口,uas占用5090端口,使用前请确定端口没占用)
呼叫前请注意是否配置好了所需文件,如果您是第一次使用请首先参考第4节和第5节相关内容修改
1) 关闭系统防火墙,杀毒软件,下载程序以及其他跟网络相关的应用程序以防干扰测试。
2) 添加ip 。有时候设备ip段和本机ip段不一样(本机ip段可能用于公网)那么只需要添加一个ip即可。
添加方法:
网上邻居->右键属性->本地连接->右键属性->选择Tcp/ip选择属性
点击高级
在ip地址那个框内,选择添加即可。
考虑到测试时操作的方便性,因此写了几个批处理文件,封装内部细节,只须指定服务器的IP与端口即可进行测试。(约定 uac占用5070端口,uas占用
5090端口,使用前请确定这两个端口没占用)
test.bat
直接在sip的安装目录下点击test.bat
在弹出的dos框中输入命令
uas
在弹出的dos框中输入命令
Uac.bat hostip hostport 每秒呼叫个数 总呼叫个数
例如:
uac 172.16.55.201 5060 10 1000
上面表示呼叫目标(配置中使用的TG)172.16.55.201,使用端口5060,每秒发起呼叫10,总呼叫数目为1000
‘+’ 呼叫速率加1
‘-‘ 呼叫速率减1
‘*’ 呼叫速率加10
‘/‘ 呼叫速率减10
暂停呼叫:
按键盘上的p键来暂停呼叫,再次按p键则重新开始。
停止呼叫:
按键盘上的q键来停止呼叫。
注意千万不要用Ctrl+c来强行终止程序,应该使用q键来停止程序,用q键停止程序后程序会发送bye消息来释放呼叫。如果强行停止会导致呼叫被吊死在设备上。
高级进阶
在弹出的dos命令行中输入uas即可。这样就启动了uas
这是启动了uas.bat批处理文档
实际启动命令如下:
sipp -sn uas -p 5090 -sf uas.xml -inf call.csv -trace_err -trace_screen
rem -s 2000
可以看到监听端口为5090因此在TG的配置中对局端口应该填写为此端口,如果用户需要修改端口则修改uas.bat文件即可。-sn指定sipp启动的是uas服务既服务器端。
-sf指定使用的场景文件为call.csv 这个主要是呼叫号码的文件,下文将会详细介绍。
-trace_err跟踪所有错误消息,并把错误消息保存到文件场景文件描述的
-trace_screen 当程序结束时候打印统计信息并弹出屏幕(如果在后台运行的话)
uac启动启动方式同uas
在dos中输入uac hostip hostport 每秒呼叫个数 总呼叫个数
比如uac 172.16.55.204 5060 4 10000
表示呼叫的目标主机是172.16.55.204 对方端口是5060 每秒发起4个呼叫,总呼叫数目为10000
注:对本公司的TG测试中hostip就是指TG产品中配置的对局地址是本机IP地址的TG产品。
如下为TG1000配置sip中继的窗口
对局就是您现在所用电脑的ip地址。0如果作为呼出端也就是您启用uac这个命令,那么该TG配置端口为5060,或者5070都可以。但是如果您电脑作为呼叫接收端也就是启动uas命令,那么这里的ip地址填您自己的主机地址,端口需要填uas默认端口(5090),具体参考uas命令修改。
实际启动文件为uac.bat这个批处理文档(注:rem 后面内容表示注释)
实际启动命令为:
sipp %1:%2 -sf uac.xml -inf call.csv -p 5070 -r %3 -rp 1s -m %4 -trace_err -trace_screen
其中%1,%2为传递命令行参数第一个和第二个即uac 172.16.55.204
-sf,-inf,-p 同上
-r指定每秒发起呼叫数(如果指定参数-rp则即为-rp所指定的时间内发起的呼叫数)
–rp 表示频率周期,即-r的周期。后面详述
上例指定-rp为1s则-r就表示1s内发起的呼叫数目
-m 指定测试的呼叫总数,当达到m指定的数目时候停止呼叫,程序结束
主被叫号码放在文件xxx.csv文件中,从3.1节我们看到实际启动时候指定了-inf参数都默认指向了call.csv文件因此需要修改call.csv文件。
call.csv文件第一行需要说明数据读取方式,SEQUENTIAL为顺序读取,RANDOM为随机读取,USER为用户习惯,#后面的内容为注释
例如下面是截取一个call.csv文件的内容
SEQUENTIAL
81000;9129;10000;
81001;9129;10001;
81011;9129;10011;
我们看到除了第一行,每一行都有三个字段。这就对应了场景文件中的field0,field1,field2
如下截取uac.xml场景文件,假如是第一个呼叫,使用第二行
INVITE sip:[[MS1] ]@[remote_ip]:[remote_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: sipp
To: sut
Call-ID: [call_id]
CSeq: 1 INVITE
Contact: sip:sipp@[local_ip]:[local_port]
Max-Forwards: 70
Subject: Performance Test
Content-Type: application/sdp
Content-Length: [len]
v=0
o=user1 53655765
s=-
c=IN IP[local_ip_type] [local_ip]
t=0 0
m=audio [[MS3] ] RTP/AVP 8
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-11,16
]]>
从上可以看出,call.csv文件定义了sip协议中呼叫的号码和主叫号码,因此这个文件的配置相当重要,否则电话有可能拨不通,我们看field1字段,是填充在to中的,是要拨出去的电话号码,因此TG上的字冠设置应该与此字段项匹配。
使用多个.csv文件
如果你想使用几个文件配合使用,比如你想让field0的名字是顺序的,而field1得名字是随机的。使用两个文件就可以,你可能需要一个文件caller.csv使用SEQUENTIAL作为第一行,还需要一个callee.csv使用RANDOM作为第一行。在场景文件中用file=xxx.csv来指定所使用的文件
如:
INVITE sip:[field0 file="callee.csv"] SIP/2.0
From: sipp user <[field0 file="caller.csv"]>;tag=[pid]SIPpTag00[call_number]
To: sut user <[field0 file="callee.csv"]>
...
这样就从callee中选取目标用户,而从caller中选取发送用户。
uac.xml: (不传rtp流就注释下面这段)
其中g711u_30s.pcap保存在同目录下的pcap文件夹下,可以修改指定的rtp流文件。这个是一个30s时间的rtp流。
注:xml的注释方法
Uac.xml:
使用-l选项设定同时呼叫的最大次数,能够对sip中继产生脉冲式压力测试。
在uac.bat文件中添加此选项如下:
未添加:sipp %1:%2 -sf uac.xml -inf call.csv -p 5070 -r %3 -rp 1s -m %4 -trace_err -trace_screen
添加后:sipp %1:%2 -sf uac.xml -inf call.csv -p 5070 -l 120 -r %3 -rp 1s -m %4 -trace_err -trace_screen
(可以添加在任何合适的位置)
限制同时呼叫最大次数为120,当呼叫次数达到120的时候,新的呼叫不会继续。只有当呼叫降下来后才会开始新的呼叫。因此如果需要产生强烈的脉冲信号,必须让呼叫保持时间足够,并且每秒呼叫次数要提高,这样才能“瞬间达到最大值”。