SIP服务器测试工具SIPp使用指导.docx

上传人:b****2 文档编号:25752678 上传时间:2023-06-12 格式:DOCX 页数:14 大小:75.21KB
下载 相关 举报
SIP服务器测试工具SIPp使用指导.docx_第1页
第1页 / 共14页
SIP服务器测试工具SIPp使用指导.docx_第2页
第2页 / 共14页
SIP服务器测试工具SIPp使用指导.docx_第3页
第3页 / 共14页
SIP服务器测试工具SIPp使用指导.docx_第4页
第4页 / 共14页
SIP服务器测试工具SIPp使用指导.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

SIP服务器测试工具SIPp使用指导.docx

《SIP服务器测试工具SIPp使用指导.docx》由会员分享,可在线阅读,更多相关《SIP服务器测试工具SIPp使用指导.docx(14页珍藏版)》请在冰豆网上搜索。

SIP服务器测试工具SIPp使用指导.docx

SIP服务器测试工具SIPp使用指导

SIP服务器性能测试工具SIPp使用指导

Contents

1安装及概述:

1

1.1SIPp安装1

1.2SIPp使用3

1.2.1uac.bat:

3

1.2.2data.csv:

4

1.2.3uac.xml:

4

2常见问题:

8

2.1uas.bat8

2.2uas.xml9

3操作截图:

13

3.1uac:

13

3.2uas:

15

1安装及概述:

SIPp是一个测试SIP协议性能的工具软件。

这是一个GPL的开放源码软件。

它包含了一些基本的SipStone用户代理工作流程(UAC和UAS),并可使用INVITE和BYE建立和释放多个呼叫。

它也可以读XML的场景文件,即描述任何性能测试的配置文件。

它能动态显示测试运行的统计数据(呼叫速率、信号来回的延迟,以及消息统计)。

周期性地把CSV统计数据转储,在多个套接字上的TCP和UDP,利用重新传输管理的多路复用。

在场景定义文件中可以使用正规表达式,动态调整呼叫速率。

SIPp可以用来测试许多真实的SIP设备,如SIP代理,B2BUAs,SIP媒体服务器,SIP/x网关,SIPPBX,等等,它也可以模仿上千个SIP代理呼叫你的SIP系统。

SIPp的网址:

1.1SIPp安装

SIPp提供Linux,Windows和HPUX平台的版本。

Windows平台上的安装很简单,下面说一下Linux下的安装。

首先,可以从下载最新版的SIPp,解压之后就得到一个rpm文件,你可以使用rpm命令来完成安装。

如果你拿到的是绿色版的SIPp,那么你需要对其重新编译才能使用。

SIPp是用C++写的,因此系统必须支持G++才可成功编译。

SIPp支持四种不同的安装模式:

1)没有TLS支持与密码验证支持:

a)#tar-xvfsipp-1.1rc6.tar.gzb)

#cdsipp-1.1.rc6c)

#makeMake

出来的sipp文件就是一个可执行的文件,只需要搭配场景xml文件与csv文件即可进行SIP测试,这是最常用的安装。

2)拥有TLS支持与密码验证支持,但是不支PCAP语音播放:

a)#tar-xvfsipp-1.1rc6.tar.gzb)

#cdsipp-1.1.rc6c)

#makeossl

这样编译出来的文件就加入了TLS至于与密码验证支持功能sipp软件了。

3)支持PCAPPlay,但是没有密码验证支持:

(PCAPPlay即为可以进行RTP语音,但是没有407AUTH验证)

a)#tar-xvfsipp-1.1rc6.tar.gzb)

#cdsipp-1.1.rc6c)

#makepcapplay

4)支持PCAP声音文件播放,而且支持密码验证支持:

(支持407auth验证支持)

a)#tar-xvfsipp-1.1rc6.tar

b)#cdsipp-1.1.rc6

c)#makepcapplay_ossl

1.2SIPp使用

用SIPp做测试的时候需要准备五个文件:

uac.bat,uas.bat,uac.xml,uas.xml,data.csv。

uac.bat:

调用sipp命令,并传入相应参数的批处理文件,模拟UAC(例如主叫)。

uas.bat:

调用sipp命令,并传入相应参数的批处理文件,模拟UAS(例如被叫),当然也可不准备此文件直接输入sipp命令执行程序,但是写成文件执行更加方便可靠。

uac.xml:

根据需要编写的uac侧的sip信号流程。

uas.xml:

根据需要编写的uas侧的sip信号流程。

data.csv:

用于uac.xml和uas.xml中需要引入的相应数据。

下面就举例来说明这五个文件的编写方法和用法。

1.2.1uac.bat:

例:

sipp-snuac172.31.89.4:

5060-r1-rp3000-infdata.csv-p7098-i172.31.89.242-s8001-sfuac_onecall.xml–m1000–l900

各个参数说明:

172.31.89.4:

5060:

远端地址和端口(在脚本中用[remote_ip],[remote_port]引入)

-r1-rp3000:

每三秒钟发一个呼

-infdata.csv:

引入数据配置文件

-p7098:

本地端口(在脚本中用[local_port]引入)

-i172.31.89.242:

本地地址(在脚本中用[local_ip]引入)

-s8001:

被叫号码(在脚本中用[service]引入)

-sfuac_onecall.xml:

引入脚本文件,根据需要模拟的呼叫流程编写

-snuac:

执行默认的uac流程,如需执行自己编写的流程文件,命令中应不含此参数

-m1000:

发送1000次呼叫后停止并退出。

-l900:

最大同时保持呼叫量,默认值为3*caps值*呼叫时长,当因种种原因导致现存呼叫总数达到此值时,SIPp将停止产生新的呼叫,等待现存呼叫总数低于此值时才继续产生呼叫。

1.2.2data.csv:

例:

SEQUENTIAL

8000;

第一行为取号码方式,通常为SEQUENTIAL或RANDOM

此例中只有一个数据,引入时用[field0],如果有多个数据,用分号隔开,在引用时编号递增如[field1],[field2]。

1.2.3uac.xml:

例:

[CDATA[

INVITEsip:

[service]@[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]"

[field0]@[local_ip]>;tag=[call_number]

To:

"[service]"

[service]@[remote_ip]>

Call-ID:

[call_id]

CSeq:

1INVITE

Contact:

[field0]@[local_ip]:

[local_port]>

Max-Forwards:

70

Content-Type:

application/sdp

Content-Length:

[len]

v=0

o=[field0]00INIP4[local_ip]

s=SIPCall

t=00

c=INIP4[local_ip]

m=audio[media_port]RTP/AVP0

a=rtpmap:

0PCMU/8000

]]>

注:

1.需要sipp命令赋值的参数,请参考关于uac.bat的说明

[local_ip]、[local_port]、[remote_ip]、[remote_port]、[service]

2.sipp自动检测生成的参数:

[call_number]、[call_id]、[cseq]、[len]、[branch]

3.从数据配置文件引入的参数,请参考data.csv,第一个值为field0

4.CSeq:

1INVITE:

此处本来应该写成CSeq:

[cseq]INVITE,而在对应的ACK中写成CSeq:

[cseq]ACK,但在INVITE和ACK的中间夹杂有PRACK的时候,ACK如果写成上述形式,将不能与INVITE对应,所以可以写死。

5.在测试业务时,应在头域中添加

被叫侧地址>以保证呼叫会从AS路由到被叫,否则AS会发消息到默认的地址。

注:

按照预期,发出INVITE之后有可能受到100Trying,也有可能收不到,所以加上可选标记

注:

此时如果收到180以外的响应,会异常退出。

[CDATA[

ACKsip:

[service]@[remote_ip]SIP/2.0

Via:

SIP/2.0/[transport][local_ip]:

[local_port];branch=[branch];rport

[last_From:

]

[last_To:

]

Call-ID:

[call_id]

Contact:

[field0]@[local_ip]:

[local_port]>

CSeq:

1ACK

Max-Forwards:

70

Content-Length:

0

]]>

注:

发送请求的时候不需要也不可能重新填写所有字段(比如说From字段是不需要,因为一个dialog里的From字段都是相同的;而To字段是没办法自己填写,必需从上一个响应中引入,因为To-tag是远端加上的,本地并不知道),所以可以用[last_字段名]的方式从上一个消息中取得。

通常From,To字段从上一个消息中取得,200的ACK时,Via从初始INVITE拷贝就可以,此时branch参数会自动生成跟初始INVITE不一样的值;非200的ACK时,采用从上一个消息引入的方式。

注:

在通话状态维持30秒,以模拟实际通话持续通话的时间。

\711.pcap"/>

\h263.pcap"/>

注:

在通话状态如果有需要的话可以发送媒体流。

前提是在相应的目录下有媒体流文件

[CDATA[

BYEsip:

[service]@[remote_ip]SIP/2.0

Via:

SIP/2.0/[transport][local_ip]:

[local_port];branch=[branch];rport

[last_From:

]

[last_To:

]

Call-ID:

[call_id]

CSeq:

2BYE

Max-Forwards:

70

Content-Length:

0

]]>

注:

加入retrans参数之后可在没收到响应的情况下,在设定的时间之后重传,此例中为500毫秒。

--definitionoftheresponsetimerepartitiontable(unitisms)-->

--definitionofthecalllengthrepartitiontable(unitisms)-->

2常见问题:

1.Unabletobindmainsocket,errno=125。

想绑定的本地端口已经被占用,换一个应该就可以了。

2、whileexpecting'180'response,received'SIP/2.0200OK

脚本中在发出INVITE之后要收100或者180,结果直接就收到了200。

可以在180后面也加上optional="true"就行。

3、消息发出后无响应

需要确认远端即服务器端系统正常,并且uac.bat中的远端地址和端口正确,另外可能需要将本地地址加入为服务器的可信节点。

4、Can'topenPCAPfile'711.pcap'.

需要确认媒体流文件确实存在且路径正确,并且媒体流文件可用。

2.1uas.bat

例:

sipp-snuac172.31.89.4:

5060-infdata.csv-i172.31.89.242-p8890-s8001-sfuas_onecall.xml

关于各个参数的说明请参考uac.bat的说明

2.2uas.xml

例:

"assign_to="6"/>

"assign_to="5"/>

正则表达式使用说明:

在本例中原本是不需要使用的,但在很多情况下需要使用,所以列出来说明一下。

当sequence中带有PRACK时,UAS发送INVITE的200OK时,某些字段(比如Via和Cseq)则不能使用[last_字段名]方式从上一个收到的消息中引入,因为此时上一个消息是PRACK,而不是INVITE,所以需要先将INVITE的这两个字段保存下来供以后使用。

上面的用法便是将INVITE的CSeq字段的值保存为数字6,在以后发送INVITE的200OK的时候使用,方式为:

CSeq:

[$6]

[CDATA[

SIP/2.0100Trying

[last_Via:

]

[last_From:

]

[last_To:

]

[last_Call-ID:

]

[last_CSeq:

]

Content-Length:

0

]]>

注:

基本上所有的字段都可以从上一个消息中引入。

[CDATA[

SIP/2.0180Ringing

[last_Via:

]

[last_From:

]

[last_To:

];tag=[call_number]

[last_Call-ID:

]

[last_CSeq:

]

[last_Record-Route:

]

Contact:

[local_ip]:

[local_port]>

P-Asserted-Identity:

"[service]"

[service]@[local_ip]>

Content-Length:

[len]

]]>

注:

To字段从上一个消息中引入的时候,需要添加To-tag,call_number为sipp自动生成的,在连续呼叫的时候会加1。

从上一个消息引入相关字段的时候,如果上一个消息没有这个字段,则在本消息中也不会有。

[CDATA[

SIP/2.0200OK

[last_Via:

]

Allow:

INVITE,CANCEL,ACK,BYE

[last_From:

]

[last_To:

];tag=[call_number]

[last_Call-ID:

]

[last_CSeq:

]

[last_Record-Route:

]

Contact:

[local_ip]:

[local_port]>

P-Asserted-Identity:

"[service]"

[service]@[local_ip]>

Content-Type:

application/sdp

Content-Length:

[len]

v=0

o=[service]00INIP4[local_ip]

s=SIPCall

t=00

c=INIP4[local_ip]

m=audio10000RTP/AVP0

a=rtpmap:

0PCMU/8000

]]>

注:

100,180,200的上一个消息都是INVITE消息,所以此时To字段中还是要加入To-tag,并且在一个dialog中call_number是相同的,所以能与180的To-tag保持一致。

[CDATA[

SIP/2.0200OK

[last_Via:

]

[last_From:

]

[last_To:

]

[last_Call-ID:

]

[last_CSeq:

]

Contact:

[local_ip]:

[local_port];transport=[transport]>

Content-Length:

0

]]>

注:

cantact字段一定不能从上一个消息中引入。

--Keepthecallopenforawhileincasethe200islosttobe-->

--abletoretransmititifwereceivetheBYEagain.-->

--Definitionoftheresponsetimerepartitiontable(unitisms)-->

--Definitionofthecalllengthrepartitiontable(unitisms)-->

 

3操作截图:

3.1uac:

在启动脚本之后可以通过”+”,”-”,”*”,”/”来增加或者减少cps。

'+'keytoincreasecallrateby1

'-'keytodecreasecallrateby1

'*'keytoincreasecallrateby10

'/'keytodecreasecallrateby10

另外也可以按”p”来暂停呼叫,如果需要继续呼叫只需再按一次”p”。

停止呼叫则按”q”,按下”q”之后sipp在当前呼叫全部结束之后终止。

如果需要强行终止当前呼叫,则可按下”q”两次,sipp会自动发送cancel或bye之后退出。

uac结果统计:

3.2uas:

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1