XuLizhao 's Notes

时光,漫步


  • 首页

  • 技术

  • 文档

  • 关于

  • 搜索
close

sipp压测工具介绍

时间: 2019-09-16   |   分类: tech     |   阅读: 1030 字 ~3分钟

把sipp这个性能测试工具的笔记独立出来,更多VOIP知识参考VOIP学习笔记。

测试工具sipp

官方介绍:

SIPp包含基本的SipStone User Agent场景 (UAC and UAS),支持测试的动态显示 (call rate, round trip delay, message statistics)

配置文件基于XML

安装

# CentOS
yum install sipp
# Ubuntu
sudo apt-get install -y pkg-config dh-autoreconf ncurses-dev build-essential libssl-dev libpcap-dev libncurses5-dev libsctp-dev lksctp-tools cmake libgsl-dev git
git clone https://github.com/SIPp/sipp.git
cd sipp
./build.sh  --full
sudo cp sipp /usr/local/bin/

命令行使用

sipp remote_host[:remote_port] [options]

  • 场景选项
    • -sn 使用内置的场景,默认使用uac,即标准SipStone UAC
    • -sd 导出内置场景
    • -sf 使用指定场景配置文件
  • 地址和端口选项
    • -i 指定本地IP
    • -p 指定本地端口,默认随机端口
  • 呼叫速率选项
    • -l 限制并行呼叫数,默认值: 3 * call_duration (s) * rate
    • -m 在呼叫次数达到后退出
    • -r 场景执行速度,默认1秒10次
    • -r 10 -rp 5s 则限定为每5秒10 calls
    • -rp (Rate Period,默认毫秒数)
  • 调试/日志选项
    • -trace_msg : 记录收发消息
    • -trace_err : 记录错误日志
  • 其他常用选项
    • -s 设置请求地址的用户名部分,默认值’service'
    • -t l1 指定协议为TLS
    • -rsa 指定远程收发消息的Proxy地址
    • -ap 设置认证密码,默认password
# 示例
sipp -h

# 在同一台机器执行下面2条命令,Ctrl + C 取消运行
sipp -sn uas
sipp -sn uac 127.0.0.1

# 导出某场景
sipp -sd uac_pcap >> integrated_uac_pcap_scenario.xml

# 针对用户001执行5次
sipp 192.168.1.100 -sf options.xml -m 5 -s 001

场景定义和配置

场景命令及参数

  • <send> 发送消息或响应
    • retrans 设置T1计数器
  • <recv> 等待接收消息或响应
    • response 期望响应码
    • request 期望请求
    • optional 收到消息是否可选
    • 可以包含action
  • nop 用于包含action
  • 通用参数
    • crlf 在SIPp消息下显示空行
    • next 处理完后跳转到下个命令/label

<![CDATA 和 ]]>之间的内容会在关键字被替换后发送给远程系统

<?xml version="1.0" encoding="us-ascii"?>
<scenario name="Options">
  <send>
    <![CDATA[
OPTIONS sip:[service]@[remote_ip] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
Max-Forwards: 70
To: <sip:[service]@[remote_ip]>
From: sipp <sip:sipp@[local_ip]:[local_port]>;tag=[call_number]
Call-ID: [call_id]
CSeq: 1 OPTIONS
Contact: <sip:sipp@[local_ip]:[local_port]>
Accept: application/sdp
Content-Length: 0

]]>
   </send>
</scenario>

数据驱动

sipp … -inf client.csv

client.csv

SEQUENTIAL
test0;192.168.178.98;[authentication username=test password=test0];

限制

  • 在一个SIP会话/场景只能处理一个Call-ID
  • 痛苦的XML配置和调试

音频编解码

G.711也称为PCM(脉冲编码调制),是ITU-T订定出来的一套语音压缩标准,主要用于电话。它主要用脉冲编码调制对音频采样,采样率为8k每秒。它利用一个 64Kbps 未压缩通道传输语音讯号。起压缩率为1:2,即把16位数据压缩成8位。G.711是主流的波形声音编解码器。G.711 标准下主要有两种压缩算法:U-law algorithm和A-law algorithm,其中,后者是特别设计用来方便计算机处理的。

wav2rtp:

# Ubuntu
git clone https://github.com/imankulov/wav2rtp.git
# make distclean
sudo apt-get install libortp-dev libsndfile1-dev libspeex-dev libpcap-dev libgsm1-dev autoconf
./init.sh && ./configure LIBS="-lm" --prefix=/opt/wav2rtp  && make
sudo make install

sox 1minute.wav -r8000 1min.wav
/opt/wav2rtp/bin/wav2rtp -f 1min.wav -t 1min.pcap -c PCMA

扩展阅读

  • sipp 官网 / pysipp - Python扩展 / sippy_cup - Ruby扩展
  • 介绍文章: 1 / 2 /3
  • 一些场景例子:1 / 2 / 3
  • 相关库: rtpbreakr / Cisco libSRTP
  • Kamalio Performance test / kamailio registrations
  • How to decode SIP over TLS with Wireshark
  • 本文作者: xulizhao
  • 本文链接: https://xulizhao.com/blog/sipp/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
#networking# #testing#
加解密算法学习
了解VOIP
  • 文章目录
  • 站点概览

xulz

时光,漫步

56 日志
3 分类
28 标签
  • 测试工具sipp
    • 安装
    • 命令行使用
    • 场景定义和配置
    • 数据驱动
    • 限制
    • 音频编解码
  • 扩展阅读
© 2017 - 2023 XuLizhao 's Notes
Powered by - Hugo/ NexT
津ICP备17010344号-1
0%