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。这两个脚本是相互配合使用的,一个作主
叫,一个作被叫,并且用到了条件分支的功能。