SIPp脚本编写方法基础m

上传人:ni****g 文档编号:496200260 上传时间:2023-06-19 格式:DOCX 页数:21 大小:45.26KB
返回 下载 相关 举报
SIPp脚本编写方法基础m_第1页
第1页 / 共21页
SIPp脚本编写方法基础m_第2页
第2页 / 共21页
SIPp脚本编写方法基础m_第3页
第3页 / 共21页
SIPp脚本编写方法基础m_第4页
第4页 / 共21页
SIPp脚本编写方法基础m_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《SIPp脚本编写方法基础m》由会员分享,可在线阅读,更多相关《SIPp脚本编写方法基础m(21页珍藏版)》请在金锄头文库上搜索。

1、SIPp 脚本编写方法基础作者王伟版本号V1.1目录错误!未指定书签。错误!未指定书签。 错误!未指定书签。 错误!未指定书签。1.3.脚本结构错误!未指定书签。1.4.注释2. 脚本类型2.1. UAC2.2. UAS2.3. 3PCC (三方通话)2.4. OCC (Out-of-call)错误!未指定书签。 错误!未指定书签。 错误!未指定书签。 错误!未指定书签。 错误!未指定书签。玉命令与属性3.1. 常用命令3.2. 常用属性列表3.3. 正贝V表达式错误!未指定书签。 错误!未指定书签。 错误!未指定书签。 错误!未指定书签。4. 变量与关键字4.1. 关键字的使用4.2. 变量

2、定义与使用4.3. 鉴权错误!未定义书签。 错误!未指定书签。 错误!未指定书签。 错误!未指定书签。5.分支和跳转5.1. 标签5Z条件判断5.3. 跳转和循环5.4. 概率分支.错误!未指定书签 错误!未指定书签 错误!未指定书签 错误!未指定书签 错误!未指定书签6.文件引用6.1. 外部文件格式6.2. 引用方法6.3. 文件索引错误!未指定书签。 错误!未指定书签。 错误!未指定书签。 错误!未指定书签。乙脚本中的命令操作7.1. 内部命令.7.2. 外部命令.7.3. 媒体命令.& 附录修订记录错误!未指定书签。 错误!未指定书签。 错误!未指定书签。 错误!未指定书签。 错误!未

3、指定书签。 错误!未指定书签。SIPp脚本编写方法入门1. 脚本格式1.1. 基于XML进行扩展1.2. DTD扩展语法规则1. 脚本格式1.1. 基于 XML 进行扩展SIPp的测试脚本遵循标准的XML V1.0版本的语法规范,XML即“可扩展 标记语言extensible Markup Language的缩写,W3C组织与1998年发布XML 1.0规范。1.2. DTD 扩展语法规则SIPp的执行目录中,存在一个sipp.dtd文件。该文件为标准的xml扩展语法 规则,在该文件中,对 send、recv、pause 等元素增加了定义,包括其属性列表 等内容,可作为脚本文件格式的校验。1.

4、3. 脚本结构一个标准的SIPp脚本,文件起始应为通用的xml前导区和DTD文件定义区 如图所示:接下来使用scenario和/scenario 包括的部分,即为脚本的正文部分。 sipp脚本正文部分,包含如下几个区域:1. 初始化区在初始化区域中,通常用来进行全局变量的定义和赋值等操作,在脚 本未进行逻辑流程前,预先完成初始化动作。初始化区是在脚本正文的最开始,通过使用命令vi nit 和/init,并 在其之间插入一些 nop 和vlabel 命令即可实现,在初始场景中的变量, 仅用于全局变量,并不会应用于呼叫。例如下图中,在初始化区对 THINKTIME 进行赋值:2. 逻辑执行区逻辑执

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

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

7、如果不设置起始暂停时 长的参数,通常会立即开始执行。2.2. UASUAS与UAC相对,主要模拟sip会话的UAS侧,启动后即进入被动接收状 态,通常作为server端使用,如注册服务器、被叫用户、通知者、业务网关等。 通常的UAS脚本逻辑区会以recv作为业务流程的起始。UAS脚本启动后,即绑 定相关本地socket,进入接收消息的状态。233PCC (三方通话)SIPp工具允许多个脚本实例间进行交互,完成较为复杂的业务流程。如三 方通话等业务,因此该种脚本在普通脚本的基础上,更多地使用内部cmd交互 命令,如 recvcmd、 sendcmd 等在不同脚本间传递会话参数,配合完成复杂流程

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

9、gister脚本的时候适用-oocsn或- oocsf参数,配合ooc脚本,实现对NOTIFY消息返回200的操作。3 命令与属性31常用命令SIPp工具提供的命令相当丰富,包括消息操作命令、变量操作、正则表达 式、赋值和判断、内部命令、外部命令、日志操作、媒体命令等多种,在一般的 使用场景下,通常根据不同的动作,来进行命令的使用。下面针对比较常用的场 景,如发送消息、接收消息、媒体播放等进行描述:(更详细的命令功能及示 例,可以翻阅sipp的使用手册等文档)一个最基本的 sipp 脚本,通常包含了 send、recv、nop、pause 这几个命令。其中send为发送sip消息,recv为接

10、收sip消息,nop为处理非业务的逻辑, pause为提供暂停时长。例如一个基本语音呼叫的主叫侧脚本:首先使用send命令发送INVITE消息,注意在发送消息时,sip消息所有内 容均包含在标准的xml数据格式CDATA内,CDATA的语法格式请格外注意,避免因为语法错误导致无法正确发送。(注:在构造发送的INVITE消息时,为实现批量发送,使用到了大量的变 量和关键字,在后续内容中会详细加以说明。)发送出消息后,还需要进行后续响应消息的接收,请注意由于sip协议存在 临时响应和最终响应两种,而lxx的响应在业务中可能存在,也可能不存在,因 此需要采用可选属性加以区别。(注:optional

11、“true”即表示该条消息为可选接收,如果没有收到,也不 会影响后续消息的接收及处理,如100/183/180。而200为必选接收消息,只有 当接收到该消息后,脚本才会继续后续流程,因此没有optional参数。)在接收到200 ok消息,并发送出ACK后,语音通话接续流程即完成,此时 根据实际业务流程,需要进行语音媒体的传输,因此脚本在这里需要增加一个 nop 命令,用于媒体的播放(注:nop命令可以用于任何非消息处理的位置,在nop命令中增加action 命令,然后即可执行类似媒体处理、变量操作、条件判断等动作。)在执行媒体播放命令后,由于sipp在执行nop相关命令后,不会等待命令 执行

12、完毕而是立即执行后续脚本内容,因此为保证媒体播放正常,我们还需要根 据实际要求,将脚本暂停一段时间,以确保流程模拟正确。(注:millisenconds属性可以自定义暂停的时长,单位为ms,如果该属性 为空,则可以通过在执行命令中增加“-d 10000 ”来指定暂停时长)3.2. 常用属性列表命令属性描述示例send用于消息的发送,常用参数包括 retrans: udp报文重传时长; los t:丢包率;st ar t_t xn:启动响应时间记录 ack_txn:记录接收响应时间,与 start txn匹配己/sendrecv用于消息的接收,常用参数包括 response:期望收到的响应消息

13、reques t:期望收到的请求消息 optional:可选接收消息,值为 true 或 globalt imeou t:超时时长,默认超时后直 接ENDon timeou t:超时后的跳转处理 act ion:收到消息后采取的处理动 作regexp mat ch :检查收到消息是否 匹配预期recv response= “100 optional二 “truerecv request= “ACKtimeout=18000ontimeout二 “5recv request=MESSAGE|PUBLISH regexp_match二truepause用于设置暂停时间,常用参数包括 millise

14、conds:设置暂停时长,单 位msvariable :设置当变量出现时暂停 distribution:使用GSL定义或分 布模型定义呼叫时长pause milliseconds二50007pause distribution二uniform min=2000max二5000/pausedistribution二exponential mean二900000/nop用于非协议消息处理的命令执行, 常用参数包括action:执行命令动作action/action/nopsendCmd用于两个SIPp实例间的父互发送, 常用于3PCC场景,常用参数包括 !CDATA:用于3PCC场景的参 数传递dest:仅用于扩展模式3PCCsendCmd!CDATACall-ID: call_id$1/sendCmdsendCmd dest=sirecvCmd用于两个SIPp实例间的交互接收, 常用于3PCC场景,常用参数包括 act ion:接收到命令时的执行命令 动作src :仅用于扩展模式3PCCrecvCmdactionereg regexp

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号