如何使用SIPp测试ReSIProcate的Proxy
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用SIPp测试ReSIProcate的Proxy相关的知识,希望对你有一定的参考价值。
参考技术A 颇有些说明书控的感觉,一切准备好了,开始进行了使用SIPp测试ReSIProcate的Proxy的实践,没想到颇为不顺,于是有了这篇博文,记录一下个人经验,以供后人借鉴。一开始按照说明Run sipp with embedded server (uas) scenario: ./sipp -sn uas -p 5064 On the same host, run sipp with embedded client (uac) scenario ./sipp -sn uac 127.0.0.1 -p 5062 在uac端提示错误 Last Error: Unable to send UDP message: Bad address. sip群里询问了一下,有说是IP设置有问题的,有说可能是端口冲突的。端口冲突我一开始就已经考虑到了,指定了端口号避免了冲突。我指定了一下 IP ,添加了以下参数(localIP指本地IP地址,这儿假设您的本地IP地址为192.168.1.66) -i localIP 没有了这个错误,我用netstat -an命令行参数比较了一下异同,发现引起错误的原因在于端口所处的IP段不同。 OK~接下来在我上一篇博文ReSIProcate之编译、安装、配置、运行、测试proxy的基础上开始配置ReSIProcate配合SIPp测试。 由于SIPp的uac与uas场景没有注册,于是我们需要在ReSIProcate中添加uac和uas的后门帐号。 在入口函数main的 InMemoryRegistrationDatabase regData; 下面添加如下代码 //!sld! 2009-11-6 为了sipp添加后门,这里假设您的localIP为192.168.1.66 ContactInstanceRecord rec; rec.mContact = NameAddr(Uri("sip:service@192.168.1.66:5064")); rec.mRegExpires = -1; regData.updateContact(Uri("sip:service@192.168.1.66:5060"),rec); rec.mContact = NameAddr(Uri("sip:sipp@192.168.1.66:5062")); regData.updateContact(Uri("sip:sipp@192.168.1.66:5060"),rec); 第二件事很显然我们需要配置proxy的运行参数。 char* recordRouteUri = "sip:192.168.1.66:5060"; char* interfaces = "sip:192.168.1.66:5060;timer-C=2;transport=udp"; 以上第一个参数是设置了record route,以便uac uas建立了连接之后包仍然通过proxy转发,下面一个参数是使proxy监听localIP段5060 udp端口。接下来一切OK~ Have fun!!!SIPP常用脚本之register注册
SIPP,VOIP并发测试、性能测试的神器。
本文记录一下常用的脚本文件。
一、reg.xml
此文件是sipp的执行的脚本流程。
<!-- --> <!-- You should have received a copy of the GNU General Public License --> <!-- along with this program; if not, write to the --> <!-- Free Software Foundation, Inc., --> <!-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --> <!-- --> <!-- Sipp default ‘branchc‘ scenario. --> <!-- --> <scenario name="branch_client"> <send retrans="500"> <![CDATA[ REGISTER sip:[remote_ip] SIP/2.0 Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch] From: [field0] <sip:[field0]@[remote_ip]:[remote_port]>;tag=[call_number] To: [field0] <sip:[field0]@[remote_ip]:[remote_port]> Call-ID: [call_id] CSeq: 1 REGISTER Contact: sip:[field0]@[local_ip]:[local_port] Content-Length: 0 Expires: 3600 ]]> </send> <recv response="401" auth="true" next="1"> </recv> <!-- send invite with authentication messages --> <label id="1"/> <send retrans="500"> <![CDATA[ REGISTER sip:[field0]@[remote_ip]:[remote_port] SIP/2.0 Via: SIP/2.0/[transport] [local_ip]:[local_port] From: [field0] <sip:[field0]@[remote_ip]:[remote_port]>;tag=[call_number] To: [field0] <sip:[field0]@[remote_ip]:[remote_port]> Call-ID: [call_id] CSeq: 2 REGISTER Contact: sip:[field0]@[local_ip]:[local_port] [field1] Content-Length: [len] Expires: 3600 ]]> </send> <recv response="200" > </recv> <pause milliseconds="1000"/> <!-- definition of the response time repartition table (unit is ms) --> <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/> <!-- definition of the call length repartition table (unit is ms) --> <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/> </scenario>
二、reg.csv
此文件是模拟注册的号码信息文件。
SEQUENTIAL 1001;[authentication username=1001 password=1234] 1002;[authentication username=1002 password=1234] 1003;[authentication username=1003 password=1234] 1004;[authentication username=1004 password=1234] 1005;[authentication username=1005 password=1234] 1006;[authentication username=1006 password=1234] 1007;[authentication username=1007 password=1234] 1008;[authentication username=1008 password=1234] 1009;[authentication username=1009 password=1234] 1010;[authentication username=1010 password=1234] 1011;[authentication username=1011 password=1234] 1012;[authentication username=1012 password=1234] 1013;[authentication username=1013 password=1234] 1014;[authentication username=1014 password=1234] 1015;[authentication username=1015 password=1234] 1016;[authentication username=1016 password=1234] 1017;[authentication username=1017 password=1234] 1018;[authentication username=1018 password=1234] 1019;[authentication username=1019 password=1234] 1020;[authentication username=1020 password=1234]
三、reg.sh
这是linux下的执行sipp的脚本文件。
./sipp -i 本地服务器地址 -sf reg.xml -inf reg.csv 注册服务器地址:端口 -l 10 -trace_msg -trace_screen -trace_err -p 本地服务器端口 -m 10 -aa
附、批量注册信息文件生成脚本
reg.csv的生成脚本 #!/bin/bash i=1000 while [ $i != 1020 ] do i=$(($i+1)) #echo “SEQUENTIAL” >test.csv echo "$i;[authentication username=$i password=1234]" >>reg.csv done
以上是关于如何使用SIPp测试ReSIProcate的Proxy的主要内容,如果未能解决你的问题,请参考以下文章