当前位置:文档之家› sipp压力测试

sipp压力测试

使用SIPP来进行SIP压力测试(一)

1.SIPp概述

2.1 介绍

SIPp是一个测试SIP协议性能的工具软件。这是一个GPL的开放源码软件。

它包含了一些基本的SipStone用户代理工作流程(UAC和UAS),并可使用INVITE和B Y E建立和释放多个呼叫。它也可以读XML的场景文件,即描述任何性能测试的配置文件。它能动态显示测试运行的统计数据(呼叫速率、信号来回的延迟,以及消息统计)。周期性地把CSV统计数据转储,在多个套接字上的TCP和UDP,利用重新传输管理的多路复用。在场景定义文件中可以使用正规表达式,动态调整呼叫速率。

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

关于SIPp从google上搜索到很多,可是关于SIPp的中文说明资料较少,或者很多都是不齐全的安装使用说明。

SIPp的网址:https://www.doczj.com/doc/7810034258.html,/

2.2 用途

SIPp一般来进行AS的压力测试,图示如下:

UAC(发起端,主叫)--------------------AS---------------------UAS(接收端,被叫)

其中UAC和UAS都有SIPp来担任。因此可以由它来控制每秒有多少个caps,也可由它来控制一个呼叫持续多长时间等。

2. 安装

2.1 Windows版安装

很简单,省略。

3. SIPp的使用

2.1 运行SIPp

选择“程序”->”Sipp_3.1”->“Start sipp”,运行界面如下所示:

在命令行运行:sipp,出现帮助信息,如下所示:

the scenarios.

First line of this file say whether the data is to be

read in sequence (SEQUENTIAL), random (RANDOM), or user

(USE R) order.

Each line corresponds to one call and has one or more

';' delim ited data fields. Those fields can be referred

as [field0], [field1], in the xml scenario file.

Sev eral CSV files can be used simultaneously (syntax:

-inf f1.csv -inf f2.csv)

-infindex : file field

Create an index of file using field. For example -inf

users.csv -infindex users.csv 0 creates an index on the

first key.

-ip_field : Set which field from the injection file contains the IP

address from which the client will send its m essages.

If this option is omitted and the '-t ui' option is

present, then field 0 is assumed.

Use this option together with '-t ui'

-l : Set the m aximum number of simultaneous calls. Once this

lim it is reached, traffic is decreased until the number

of open calls goes down. Default:

(3 * call_duration (s) * rate).

-lost : Set the number of packets to lose by default (scenario

specifications override this value).

-m : Stop the test and exit when 'calls' calls are processed

-m i : Set the local m edia IP address (default: local primary

host IP address)

-m aster : 3pcc extended m ode: indicates the m aster number

-m ax_recv_loops : Set the m aximum number of m essages received read per

cycle. Increase this v alue for high traffic level. The

default v alue is 1000.

-m ax_sched_loops : Set the maximum number of calsl run per ev ent loop.

Increase this v alue for high traffic level. The default

v alue is 1000.

-m ax_reconnect : Set the the m aximum num ber of reconnection.

-m ax_retrans : Maximum number of UDP retransmissions before call end s on

tim eout. Default is 5 for INVITE transactions and 7 for

others.

-m ax_invite_retrans: Maximum num ber of UDP retransm issions for invite

transactions before call ends on timeout.

-m ax_non_invite_retrans: Maximum number of UDP retransmissions for no n-invite

transactions before call ends on timeout.

-m ax_log_size : What is the lim it for error and message log file sizes.

-m ax_socket : Set the m ax number of sockets to open simultaneously.

This option is significant if you use one socket per

call. Once this lim it is reached, traffic is distributed

over the sockets already opened. Default v alue is 50000

-m b : Set the RT P echo buffer size (default: 2048).

-m p : Set the local RT P echo port number. Default is 6000.

-nd : No Default. Disable all default behav ior of SIPp which

are the following:

- On UDP retransm ission timeout, abort the call by

sending a BYE or a CANCEL

- On receiv e timeout with no ontimeout attribute, abort

the call by sending a BYE or a CANCEL

- On unexpected BYE send a 200 OK and close the call

- On unexpected CANCEL send a 200 OK and close the call

- On unexpected PING send a 200 OK and continue the call

- On any other unexpected m essage, abort the call by

sending a BYE or a CANCEL

-nr : Disable retransmission in UDP m ode.

-nostdin : Disable stdin.

-p : Set the local port number. Default is a random free port

chosen by the system.

-pause_m sg_ign : Ignore the messages receiv ed during a pause defined in

the scenario

-periodic_rtd : Reset response time partition counters each logging

interv al.

-r : Set the call rate (in calls per seconds). This v alue can

bechanged during test by pressing '+','_','*' or '/'.

Default is 10.

pressing '+' key to increase call rate by 1 *

rate_scale,

pressing '-' key to decrease call rate by 1 *

rate_scale,

pressing '*' key to increase call rate by 10 *

rate_scale,

pressing '/' key to decrease call rate by 10 *

rate_scale.

If the -rp option is used, the call rate is calculated

with the period in ms given by the user.

-rp : Specify the rate period for the call rate. Default is 1

second and default unit is milliseconds. This allows

you to have n calls ev ery m m illiseconds (by using -r n

-rp m).

Example: -r 7 -rp 2000 ==> 7 calls every 2 seconds.

-r 10 -rp 5s => 10 calls ev ery 5 seconds.

-rate_scale : Control the units for the '+', '-', '*', and '/' key s.

-rate_increase : Specify the rate increase ev ery -fd units (default is

seconds). This allows y ou to increase the load for each

independent logging period.

Example: -rate_increase 10 -fd 10s

==> increase calls by 10 every 10 seconds.

-rate_m ax : If -rate_increase is set, then quit after the rate

reaches this v alue.

Example: -rate_increase 10 -rate_max 100

==> increase calls by 10 until 100 cps is hit.

-no_rate_quit : If -rate_increase is set, do not quit after the rate

reaches -rate_m ax.

-recv_timeout : Global receive timeout. Default unit is milliseconds. If

the expected message is not received, the call times out

and is aborted.

-send_timeout : Global send timeout. Default unit is m illiseconds. If a

m essage is not sent (due to congestion), the call times

out and is aborted.

-reconnect_close : Should calls be closed on reconnect?

-reconnect_sleep : How long (in m illiseconds) to sleep between the close and

reconnect?

-ringbuffer_files: How m any error/m essage files should be kept after

rotation?

-ringbuffer_size : How large should error/message files be before they get

rotated?

-rsa : Set the remote sending address to host:port for sending

the messages.

-rtp_echo : Enable RT P echo. RT P/UDP packets received on port defined

by -mp are echoed to their sender.

RT P/UDP packets coming on this port + 2 are also echoed

to their sender (used for sound and video echo).

-rtt_freq : freq is m andatory. Dum p response times every freq calls

in the log file defined by -trace_rtt. Default v alue is

200.

-s : Set the username part of the resquest URI. Default is

'serv ice'.

-sd : Dum ps a default scenario (em beded in the sipp executable)

-sf : Loads an alternate xml scenario file. To learn more

about XML scenario syntax, use the -sd option to dump

embedded scenarios. They contain all the necessary help.

-oocsf : Load out-of-call scenario.

-oocsn : Load out-of-call scenario.

-skip_rlim it : Do not perform rlimit tuning of file descriptor lim its.

Default: false.

-slav e : 3pcc extended mode: indicates the slave number

-slav e_cfg : 3pcc extended mode: indicates the file where the m aster

and slave addresses are stored

-sn : Use a default scenario (embedded in the sipp executable).

If this option is omitted, the Standard SipStone UAC

scenario is loaded.

Av ailable v alues in this version:

- 'uac' : Standard SipStone UAC (default).

- 'uas' : Sim ple UAS responder.

- 'regexp' : Standard SipStone UAC - with regexp and

v ariables.

- 'branchc' : Branching and conditional branching in

scenarios - client.

- 'branchs' : Branching and conditional branching in

scenarios - server.

Default 3pcc scenarios (see -3pcc option):

- '3pcc-C-A' : Controller A side (must be started after

all other 3pcc scenarios)

- '3pcc-C-B' : Controller B side.

- '3pcc-A' : A side.

- '3pcc-B' : B side.

-stat_delimiter : Set the delimiter for the statistics file

-stf : Set the file name to use to dump statistics

-t : Set the transport mode:

- u1: UDP with one socket (default),

- un: UDP with one socket per call,

- ui: UDP with one socket per IP address The IP

addresses must be defined in the injection file.

- t1: T CP with one socket,

- tn: TCP with one socket per call,

- l1: T LS with one socket,

- ln: TLS with one socket per call,

- c1: u1 + compression (only if compression plugin

loaded),

- cn: un + com pression (only if compression plugin

loaded). T his plugin is not prov ided with sipp.

2.2 使用SIPp进行压力测试

首先查知本机的IP,例如笔者本机的IP为192.168.2.45。在SIPp的运行窗口运行:

sipp -sn uas -i 192.168.2.45 -p 5060

出现的命令窗口的内容类似如下:

再开启一个SIPp界面。

启动客户端使用:sipp -sn uac….,使用如下:

sipp -sn uac -m 1 -i 192.168.2.45 -p 6060 -s 010******** 192.168.2.154

启动后命令窗口如下所示:

其中:

-m:该参数表示每秒的caps数,若没写该参数,默认为每秒10个caps;

-i:这个用于指定本机的ip,若本机只有一个ip,可以不指定,若有多个IP,需要指定该参数;

-p:指定本机的端口,可以不指定;

-s:该参数用于指定要呼叫的电话号码;

192.168.1.154为AS的IP地址,没有指定端口时,默认指向的端口为5060。

注意:因为UAC和UAS都在笔者机器,IP为:192.168.2.45,因此AS端还需要对应配置,将落地等的IP地址等都指向该IP。对于我们的环境来说,需要配置SCF的config.as.A CD文件,修改成:

笔者修改了ss1的IP为:192.168.2.45.

在使用uac前,可使用SIP软终端来测试下是不是呼叫后落地是不是落在本机。

在运行:

sipp -sn uac -i 192.168.2.45 -p 6060 -s 010******** 192.168.2.154

后(该句为10caps),可查看UAS和UAC的界面,服务端的界面类似如下所示:

UAC端的界面类似如下所示:

因为笔者的AS没有发183的流程,所以它的次数是为0的,后续章节还会说到如果不是S IPp的参考流程时该怎么做。

1)inmon

公司的SCF提供inmon来查看自动机挂接等的情况,如下所示:

其中FSMS表示当前挂着的自动机数,是需要关注的项。

2)vmstat

vmstat 命令报告关于内核线程、虚拟内存、磁盘、陷阱和CPU 活动的统计信息。由vms tat 命令生成的报告可以用于平衡系统负载活动。系统范围内的这些统计信息(所有的处理器中)都计算出以百分比表示的平均值,或者计算其总和。

例如笔者使用:

vmstat 3

表示每隔3s显示内核线程、虚拟内存、磁盘、陷阱和CPU 活动的统计信息。界面如下所示:

重点要关注的项是io和cpu等信息。

3)top

top命令提供了实时的对系统处理器的状态监视。它将显示系统中CPU最“敏感”的任务列表。

运行top命令后,AS所在Linux机器的显示效果如下:

因为应用主要为cc和my sql,所以要重点关注这两者是否稳定。

主要关注的项是VIRT和RES,如果这两者一直增加,那很可能程序或其它地方存在内存泄露。

相关主题
文本预览
相关文档 最新文档