SIPp 使用手册
黄龙舟 译
hlz_2599@163.com
http://blog.163.com/hlz_2599
目录
SIPP 使用手册 ................................................................................................................................... 1
目录 ...................................................................................................................................................... 2
一、 简介 ......................................................................................................................................... 3
二、 安装 SIPP .................................................................................................................................. 3
1. 获取 SIPp ................................................................................................................................................ 3
2. 安装 SIPp ................................................................................................................................................ 4
3. 增加文件标识符限制 ............................................................................................................................. 5
三、 使用 SIPP .................................................................................................................................. 6
1. 主要特性 ................................................................................................................................................ 6
2. 集成的脚本(场景) ............................................................................................................................. 6
2.1 示范脚本:主叫(UAC) ............................................................................................................... 6
2.2 示范脚本:带媒体的 UAC .............................................................................................................. 7
2.3 示范脚本:被叫(UAS.xml) ......................................................................................................... 7
2.4 示范脚本:正则表达式,regexp.xml ............................................................................................. 8
2.5 示范脚本:分支,branchc.xml 和 branchs.xml ............................................................................. 8
2.6 UAC Out-of-call 消息 ......................................................................................................................... 9
2.7 3PCC(第三方呼叫控制) ............................................................................................................... 9
3. 扩展的 3PCC ......................................................................................................................................... 12
4. 控制 SIPp .............................................................................................................................................. 12
5. 后台运行 SIPp....................................................................................................................................... 13
6. 创建自定义的 XML 脚本 ...................................................................................................................... 13
6.1 创建客户端(类似 UAC)脚本 .................................................................................................... 20
6.2 创建服务端(类似 UAS)脚本 ..................................................................................................... 24
6.3 动作(Actions) ............................................................................................................................ 25
6.4 变量 ................................................................................................................................................ 31
6.5 条件分支 ........................................................................................................................................ 33
6.6 SIP 认证 ........................................................................................................................................... 34
6.7 初始场景 ........................................................................................................................................ 36
7. 运行界面 .............................................................................................................................................. 36
8. 传输层模式........................................................................................................................................... 38
9. 统计 ...................................................................................................................................................... 39
10. 错误处理 ............................................................................................................................................ 40
11. 日志功能 ............................................................................................................................................ 40
12. 使用 SIPp 做性能测试 ........................................................................................................................ 45
12.1 使用 SIPp 做性能测试的建议 ..................................................................................................... 45
12.2 SIPp 内部调度机制 ....................................................................................................................... 45
一、 简介
SIPp 是一个测试 SIP 协议性能的工具软件,它包含了一些基本的 SipStone 用户代理工作
流程(UAC 和 UAS),并可使用 INVITE 和 BYE 建立和释放多个呼叫。它也可以读 XML 的场景
文件,即描述任何性能测试的配置文件(可以用他来模拟现场的 SIP 信令,以重现出现的故
障;或者可以自定义 SIP 协议以测试终端对某些方面的容错或错误处理能力)。它能动态显
示测试运行的统计数据(呼叫速率、信号来回的延迟,以及消息统计)。周期性地把 CSV 统
计数据转储,在多个套接字上的 TCP 和 UDP,利用重新传输管理的多路复用。在场景定义文
件中可以使用正则表达式,动态调整呼叫速率。SIPp 可以用来测试许多真实的 SIP 设备,如
SIP 代理,B2BUAs,SIP 媒体服务器,SIP/x 网关,SIP PBX,等等,它也可以模仿上千个 SIP 代
理呼叫你的 SIP 系统。另外,SIPp 还可以简单用来测试 SIP 协议。
本文档是根据 sipp v3.4 版本来编写的,早期的 sipp 版本可能不含有本文档提到的一些
特性。
下面是 SIPp 的运行界面截图:
二、 安装 SIPp
1. 获取 SIPp
SIPp 在 GNU GPU 许可下发行,sipp 下载地址为 http://sourceforge.net/projects/sipp/files/
2. 安装 SIPp
SIPp 可安装在 Linux 和 Cygwin 上面,其他 Unix 版本可能也可以安装使用,但在每一个
发布周期中并未被测试。不过 Cygwin 上面性能没有 Linux 上面好,且 SIPp 只能在运行于
windows xp 或更高 windows 版本的 Cygwin 上面运行。在 Linux 环境中,SIPp 以源代码的形
式提供,在使用 SIPp 之前需要编译 SIPp,在编译之前需要如下依赖组件:
curses or ncurses library
C++ Compiler
For TLS support: OpenSSL >= 0.9.8
For pcap play support: libpcap and libnet
For SCTP support: lksctp-tools
For distributed pauses: Gnu Scientific Libraries
在编译 SIPp 时,有如下四个选项:
不包含对 TLS,SCTP 或 PCAP 的支持
# tar -xvzf sipp-xxx.tar
# cd sipp
# ./configure
# make
包含 TLS 支持
# tar -xvzf sipp-xxx.tar
# cd sipp
# ./configure --with-openssl
# make
包含 PCAP play 支持
# tar -xvzf sipp-xxx.tar
# cd sipp
# ./configure --with-pcap
# make
包含 SCTP 支持
# tar -xvzf sipp-xxx.tar
# cd sipp
# ./configure --with-sctp
# make
或者组合支持以上功能
# tar -xvzf sipp-xxx.tar
# cd sipp
# ./configure --with-sctp --with-pcap --with-openssl
# make
下面以 CentOS 6.4 为例,可以按如下步骤编译安装
#yum install gcc-c++ gcc automake autoconf libtool make
#yum install libpcap libpcap-devel
#yum install ncurses ncurses-devel
#tar -xvzf sipp-xxx.tar.gz
#cd sipp
#./configure --with-sctp --with-pcap --with-openssl
#make && make install
安装后使用 sipp -v 命令可查看当前 sipp 版本,如下版本是 v3.4,日期为 2013 年 10 月
22 日版本。
3. 增加文件标识符限制
如果你的系统不支持足够的文件标识符,当使用 TCP/TLS 模式(译者注:使用 UDP 模式
也一样)进行大并发量呼叫测试可能会遇到问题,可以使用两种方法来突破这种限制:使用
命令行参数-max socket 或者改变系统的限制。至于如何增加文件描述符的最大值,不同的
系统修改方法或步骤不同。
在内核为 2.4 版本的 Linux 系统上可以通过修改/etc/security/limits.conf and the
/etc/pam.d/login 文件来更改,打开/etc/security/limits.conf 文件并添加如下内容:
*
*
32768
65535
soft
hard
nofile
nofile
然后打开/etc/pam.d/login 文件并添加如下内容:
session required /lib/security/pam_limits.so
然后使用如下命令来永久更改文件描述符所能支持的最大值:
ulimit -s unlimited
注销系统再登录,然后使用 ulimit -a 命令验证是否更改成功,成功后如下图所示
(open files 为设置的值 32768 了)
三、 使用 SIPp
1. 主要特性
sipp 允许向远端系统发送一个或多个呼叫,sipp 目前只支持从命令行运行。SIPp 内置了
两个脚本,服务器(UAS)脚本和客户端(UAC)脚本,你也可以创建自己自定义的脚本。
可以在同一台设备上同时运行服 UAS 和 UAC 脚本以示范 SIPp 的能力。
首先运行 SIPp 内嵌的服务器脚本,命令如下:
# ./sipp -sn uas -i local_ip
然后在同一台主机上运行 SIPp 内嵌的客户端脚本,命令如下:
# ./sipp -sn uac
2. 集成的脚本(场景)
2.1 示范脚本:主叫(UAC)
脚本文件:uac.xml,流程如下。请点我下载。
2.2 示范脚本:带媒体的 UAC
脚本文件:uac_pcap.xml,流程如下。请点我下载。
2.3 示范脚本:被叫(UAS.xml)
流程如下。请点我下载。
2.4 示范脚本:正则表达式,regexp.xml
流程如下。请点我下载。正则表达式的用法后面会介绍。
2.5 示范脚本:分支,branchc.xml 和 branchs.xml
请点击下载 branchc.xml 和 branchs.xml。这两个脚本是相互配合使用的,一个作主
叫,一个作被叫,并且用到了条件分支的功能。