ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:29.98KB ,
资源ID:9600241      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9600241.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(SIPp脚本编写方法基础m.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

SIPp脚本编写方法基础m.docx

1、SIPp脚本编写方法基础mSIPp脚本编写方法基础作者王伟版本号V1.1SIPp脚本编写方法入门 11. 脚本格式 31.1. 基于XML进行扩展 31.2. DTD扩展语法规则 31.3. 脚本结构 32. 脚本类型 52.1. UAC 52.2. UAS 52.3. 3PCC(三方通话) 62.4. OCC(Out-of-call) 63. 命令与属性 63.1. 常用命令 63.2. 常用属性列表 83.3. 正则表达式 104. 变量与关键字 114.1. 关键字的使用 114.2. 变量定义与使用 134.3. 鉴权 155. 分支和跳转 165.1. 标签 165.2. 条件判断

2、165.4. 概率分支 186. 文件引用 186.1. 外部文件格式 186.2. 引用方法 196.3. 文件索引 207. 脚本中的命令操作 207.1. 内部命令 207.2. 外部命令 217.3. 媒体命令 21修订记录 231. 脚本格式1.1. 基于XML进行扩展SIPp的测试脚本遵循标准的XML V1.0版本的语法规范,XML即“可扩展标记语言”eXtensible Markup Language 的缩写,W3C组织与1998年发布XML 1.0规范。1.2. DTD扩展语法规则SIPp的执行目录中,存在一个sipp.dtd文件。该文件为标准的xml扩展语法规则,在该文件中,

3、对send、recv、pause等元素增加了定义,包括其属性列表等内容,可作为脚本文件格式的校验。1.3. 脚本结构一个标准的SIPp脚本,文件起始应为通用的xml前导区和DTD文件定义区如图所示:接下来使用和包括的部分,即为脚本的正文部分。sipp脚本正文部分,包含如下几个区域:1. 初始化区在初始化区域中,通常用来进行全局变量的定义和赋值等操作,在脚本未进行逻辑流程前,预先完成初始化动作。初始化区是在脚本正文的最开始,通过使用命令和,并在其之间插入一些和命令即可实现,在初始场景中的变量,仅用于全局变量,并不会应用于呼叫。例如下图中,在初始化区对THINKTIME进行赋值:2. 逻辑执行区逻

4、辑执行区中包括了业务流程的相关内容,比如接收消息、发送消息、暂停时长、分支判断、媒体播放、内外部命令执行等操作。逻辑执行区是脚本的最关键部分,编写sipp脚本,主要也就是针对该部分进行编写和调试。3. 变量抑制区该部分是为了避免在脚本逻辑区定义了大量的变量,但实际并未使用导致运行时报错无法执行的问题,不论定义了多少变量,这些变量有无被使用,只需要添加进变量抑制区的列表中,脚本均可正常执行。该部分仅有一个命令,variables属性为所需抑制的变量列表。如下图所示:4. 定时器自定义区 该区域主要作用为:针对消息响应时长(ResponseTime)以及呼叫持续时长(CallLength)的Tim

5、er进行自定义间隔的配置,以获取所需的显示范围,例如自定义timer配置为:则在sipp运行时,查看运行统计界面呈现如下:1.4. 注释sipp脚本注释的语法格式为xxx,支持多行注释,如:2. 脚本类型SIPp脚本根据使用场景不同,主要分为UAC、UAS、3PCC和OCC4种类型,每种类型均有其特定的使用方式,内部逻辑也有所不同。2.1. UAC顾名思义,UAC类型的脚本主要是模拟sip会话中的UAC侧,即负责发起会话的client端。如注册客户端、主叫用户、订阅者等。通常的UAC脚本逻辑区会以send作为业务流程的起始。UAC脚本一旦启动,如果不设置起始暂停时长的参数,通常会立即开始执行。

6、2.2. UASUAS与UAC相对,主要模拟sip会话的UAS侧,启动后即进入被动接收状态,通常作为server端使用,如注册服务器、被叫用户、通知者、业务网关等。通常的UAS脚本逻辑区会以recv作为业务流程的起始。UAS脚本启动后,即绑定相关本地socket,进入接收消息的状态。2.3. 3PCC(三方通话)SIPp工具允许多个脚本实例间进行交互,完成较为复杂的业务流程。如三方通话等业务,因此该种脚本在普通脚本的基础上,更多地使用内部cmd交互命令,如recvcmd、sendcmd等在不同脚本间传递会话参数,配合完成复杂流程的测试实现。sipp还提供了扩展的3pcc模式,支持master和

7、slave的脚本角色。该类型的脚本编写和调试较为复杂,本文档中不再赘述,如有兴趣可以翻阅sipp的使用手册等文档,其中有详细说明。2.4. OCC(Out-of-call)OCC(Out-of-call)脚本作为特殊类型的脚本,通常不会单独使用,而是与UAC脚本配合使用(也只能与UAC脚本配合,UAS等类型脚本无法支持-occsn等执行命令)。主要作用为扩展UAC脚本的适用范围,使UAC脚本能够在接收到不同会话内的非预期消息时,不至于直接丢弃。如注册客户端可能会遇到接收到通知NOTIFY的消息,此时就需要在运行register脚本的时候适用-oocsn或-oocsf参数,配合ooc脚本,实现对

8、NOTIFY消息返回200的操作。3. 命令与属性3.1. 常用命令SIPp工具提供的命令相当丰富,包括消息操作命令、变量操作、正则表达式、赋值和判断、内部命令、外部命令、日志操作、媒体命令等多种,在一般的使用场景下,通常根据不同的动作,来进行命令的使用。下面针对比较常用的场景,如发送消息、接收消息、媒体播放等进行描述:(更详细的命令功能及示例,可以翻阅sipp的使用手册等文档)一个最基本的sipp脚本,通常包含了send、recv、nop、pause这几个命令。其中send为发送sip消息,recv为接收sip消息,nop为处理非业务的逻辑,pause为提供暂停时长。例如一个基本语音呼叫的主

9、叫侧脚本:首先使用send命令发送INVITE消息,注意在发送消息时,sip消息所有内容均包含在标准的xml数据格式CDATA内,CDATA的语法格式请格外注意,避免因为语法错误导致无法正确发送。(注:在构造发送的INVITE消息时,为实现批量发送,使用到了大量的变量和关键字,在后续内容中会详细加以说明。)发送出消息后,还需要进行后续响应消息的接收,请注意由于sip协议存在临时响应和最终响应两种,而1xx的响应在业务中可能存在,也可能不存在,因此需要采用可选属性加以区别。(注:optional=“true”即表示该条消息为可选接收,如果没有收到,也不会影响后续消息的接收及处理,如100/183

10、/180。而200为必选接收消息,只有当接收到该消息后,脚本才会继续后续流程,因此没有optional参数。)在接收到200 ok消息,并发送出ACK后,语音通话接续流程即完成,此时根据实际业务流程,需要进行语音媒体的传输,因此脚本在这里需要增加一个nop命令,用于媒体的播放(注:nop命令可以用于任何非消息处理的位置,在nop命令中增加action命令,然后即可执行类似媒体处理、变量操作、条件判断等动作。)在执行媒体播放命令后,由于sipp在执行nop相关命令后,不会等待命令执行完毕而是立即执行后续脚本内容,因此为保证媒体播放正常,我们还需要根据实际要求,将脚本暂停一段时间,以确保流程模拟正

11、确。(注:millisenconds属性可以自定义暂停的时长,单位为ms,如果该属性为空,则可以通过在执行命令中增加“-d 10000”来指定暂停时长)3.2. 常用属性列表命令属性描述示例用于消息的发送,常用参数包括retrans:udp报文重传时长;lost:丢包率;start_txn:启动响应时间记录ack_txn:记录接收响应时间,与start_txn匹配用于消息的接收,常用参数包括response:期望收到的响应消息request:期望收到的请求消息optional:可选接收消息,值为true或globaltimeout:超时时长,默认超时后直接ENDontimeout:超时后的跳转

12、处理action:收到消息后采取的处理动作regexp_match:检查收到消息是否匹配预期用于设置暂停时间,常用参数包括milliseconds:设置暂停时长,单位msvariable:设置当变量出现时暂停distribution:使用GSL定义或分布模型定义呼叫时长pause distribution=exponentialmean=900000/用于非协议消息处理的命令执行,常用参数包括action:执行命令动作用于两个SIPp实例间的交互发送,常用于3PCC场景,常用参数包括:用于 3PCC场景的参数传递dest:仅用于扩展模式3PCC用于两个SIPp实例间的交互接收,常用于3PCC场

13、景,常用参数包括action:接收到命令时的执行命令动作src:仅用于扩展模式3PCCaction通用属性:属性名描述示例start_rtd启动响应定时器rtd停止响应定时器repeat_rtd 重复启用响应定时器crlf运行界面增加回车换行next跳转任意labeltest与next一起使用,设置跳转条件chance与test、next一起使用,当test结果有值时,则概率跳转 counter 计数器累加13.3. 正则表达式正则表达式作为sipp中极为重要的功能,在各个场景下应用广泛,最常见的是通过正则表达式,获取接收消息中某个参数,并将该参数赋给变量,用于后续流程的使用。正则表达式的使用

14、语法如下图所示:正则表达式的命令为regexp属性为需要匹配的表达式内容,其中使用”()”包括起来的部分,为匹配项,可以赋给变量;search_in属性为设置本次查询的方式,sipp支持3种正则匹配的方式,分别为:1. 头域查询匹配当search_in=”hdr”时,表示正则按照头域匹配,必须包含header参数,给出需要查询的头域名称,如header=”From”。sipp会在指定的头域中进行匹配。注:start-line的匹配也是用头域匹配方式。2. 消息查询匹配当search_in=”msg”时,表示正则根据整个消息内容进行匹配,通常在需要匹配SDP内容时会用到。3. 变量查询匹配当se

15、arch_in”var”时,表示正则按照变量进行匹配,必须配置variable参数,给出需要匹配的变量名称,如variable=”header_to_tag”。4. 变量与关键字4.1. 关键字的使用sipp中定义了大量的关键字,涉及到网络参数、sip会话参数和媒体参数等等,需要在编写脚本时加以注意。关键字的引用格式为keyword,例如locao_ip、call_id等。下表列出了常用的关键字:关键字描述备注service由参数-s 传递,一般用来指定单个主被叫 remote_ip远端设备地址remote_port远端设备端口。可以在脚本中使用偏移量,如remote_port+3transp

16、ort指定传输层协议,UDP/TCP,由参数-t决定local_ip主机本地地址,可以由参数-i 指定local_port由系统随机分配 可由-p 指定,可以在脚本中使用偏移量,local_port+3lensdp长度,用于“Content-Length”头域,由sipp 自动生成或者手动指定,可以添加偏移量,如len+3call_number呼叫索引,从1开始,每增加一个呼叫递增1cseq初始值为 1, 可以使用参数-base_cseq 手动指定初始值。media_ip本地媒体流ip,可以由-mi 参数指定media_port本地媒体流端口,可由-mp 指定,可以设置偏移量media_por

17、t+3auto_media_port自动指定媒体流端口,仅用于 pcap。 该参数使多个呼叫的音频和视频端口从-mp 指定的端口开始,并给每个新的呼叫分配端口。SIPp 默认支持10000 个 rtp 流并发last_*此关键字用于从接收的上一个 sip 消息中提取指定头域(如果存在)的值。比如last_to则表示从接收的上一个sip消息中提取To域的消息保存到last_to中并应用。field0-nfile=line=从外部文件 csv 加载值,file 表示选择从命令行中指定的 csv 文件的一个文件作为外部文件;line定义选择的外部文件的起始行,field选择字段 filename=把

18、指定的文件中内容全部插入到 sip 消息中。由于空格符,回车符及换行符不被某些关键字识别,所以插入的文件需要被精确地编辑成你想要的格式才行,否则会有乱码。timestamp 当前时间戳,与错误日志的时间戳格式一样last_message上一个收到的消息authentication用于认证头(authentication head) ,这个关键字可以使用参数,书写格式为:authentication username=myusername password=mypassword,如果没有指定用户名(username),则需使用命令行参数-au 或者-s 指定;如果没有指定密码(password)

19、,则需使用命令行参数-ap指定pid指定 sipp 的 pid,即进程号routes如果在 recv 命令中已设置“rrs”属性为 true,则“Record-Route”头被存储在关键字route中,可使用routes调用。next_url如果在 recv 命令中已设置“rrs”属性为 true,则next_url中包含 Contact 头中的内容branch生成一个由(z9hG4bK) + call number + message 索引组成的 branch id 到脚本中。 如果你想要使用与之前的消息一样的 branch id, 你可以使用偏移量指定,如branch-Nmsg_index

20、 在脚本中提供消息号clock_tick在消息中包含 sipp 的内部时钟sipp_version 在消息中包含 sipp 的版本fill使用字符填充消息users如果在命令行中指定了-users 参数,则这个关键字表示当前已经运行的用户的数量userid如果在命令行中指定了-users 参数,则这个关键字表示当前正在运行的用户的 id(范围为 0 到users-1)4.2. 变量定义与使用sipp的脚本中,支持双精度浮点型变量和字符串变量两种变量类型.1. 浮点型变量针对浮点型变量的操作命令主要有assgin(赋值)、sample(统计分布)和todouble(强制类型转换),以及加减乘除等

21、简单算术运算,举例如下: 浮点型变量还支持变量比较测试功能,该部分在分支一节中会重点描述。2. 字符串变量可以使用命令创建字符串变量,该命令有两个参数“assign_to”和“value”,例如:字符串变量支持比较操作,命令为,其对字符串比较的值是一个小于,等于,或大于 0 的双精度整型值。通常该功能用在对正则表达式提取结果的操作,以及从外部文件获取值的操作中,例如:4.3. 鉴权在sipp的关键字和变量使用中,有一类特殊的变量需要重点说明,那就是鉴权。sipp支持标准的Digest和AKA两种鉴权方法。具体的使用方法如下:1. 在接收到401或407响应时,如果该流程需要鉴权,则需要在rec

22、v命令中增加属性auth=”true”,sipp会记录该消息中鉴权头域的相关值。2. 随后在发送的第二条请求消息中,使用authentication关键字,指定用户名及密码(Digest方式)或aka_K、aka_OP、aka_AMF(AKA),sipp将自动计算出response,并构造相关头域内容。例如:3. 还可以通过在外部文件中某一列,配置authentication username=1001 password=1001,然后在消息中使用fieldN引用,来实现不同用户的鉴权过程。4. sipp脚本中还支持对鉴权的response结果进行校验,该操作使用verifyauth命令来完成

23、,并将检查结果赋值给一个布尔变量中。例如:5. 分支和跳转5.1. 标签sipp脚本支持自定义标签操作,因此可以通过next、jump等命令,实现对流程逻辑的分支和跳转功能,类似C语言中的goto。标签的定义语法格式如下:其中id属性值为该标签的标识,可以通过next属性进行标签之间的跳转,例如:在例子中,recv命令使用了next,即如果收到了486响应,则直接跳转至id为err_ack的label处。5.2. 条件判断sipp支持通过变量测试,来进行某些条件的判断,继而执行相关的操作,类似于开发语言中的ifelse语法,变量测试的动作命令为“test” ,含有四个参数: variable, value, assign_to, compare。variable和value的比较的结果,通过assgin_to赋给某一变量,值为1或0。compare为比较的操作方法,一共有6种,分别为: equal not_equal greater_than less_than greater_than_equal less_than_equal举例如下: 上述语句中,变量st与10进行比较,如果小于10,则result = 1,否则result = 0。5.3. 跳转和循环sipp脚本的正常执行流程为顺序依次执行相关语句,但是在某些场景下需要非线性地执行,例如收到错误消息

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

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