首页 > 其他分享 >sipp3.6分支压测方案

sipp3.6分支压测方案

时间:2023-03-24 15:44:22浏览次数:35  
标签:SIP last 压测 ip Content call sipp3.6 local 分支

 

 

概述

SIP压测工具sipp,免费,开源,功能足够强大,配置灵活,优点多。

本文档介绍sipp工具的常用参数和测试脚本。

环境

centos7.9

sipp v3.6.2_rc1

常用参数

-sf 加载自定义的脚本XML格式

-i 设置本地ip 地址,用于指定 'Contact:','Via:', and ' 的地址

-p 指定本地端口

-bg 在后台运行sipp

-aa 使能SIPp 对 INFO, UPDAT E and NOTIFY 自动回 200ok

-inf 在呼叫过程中,从一个外部CSV 文件引入值到脚本中去。文件的第一行表明数据的读取顺序。

-rtp_echo 启用rtp 回送功能。将由 mp 参数指定的端口收到的 rtp 流回送给原发送者,默认6000。

-r 设置呼叫速率(设置多少个呼叫每秒)

-rp 设置呼叫速率的周期,默认是1000 毫秒。例如 r 7 rp 2000表示 2 秒中 7 个呼叫

-l 设置最大的并发呼叫量

-m 设置最本最大的呼叫个数,当sipp 达到该指定值会自动退出

号码csv

新增号码csv文件,在呼叫中自动设置到脚本变量中。

vi call-test.csv

SEQUENTIAL

12345678;13712345678;

常用脚本

在sipp.3.6.2/docs目录下有常用的默认脚本,uas.xml和uac.xml分别是server端和client端。

为了把号码设置到信令中,需要修改uac.xml文件中的from头域和to头域,将对应的值修改为field0和field1。

vi uac-test.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE scenario SYSTEM "sipp.dtd">

 

<scenario name="Basic Sipstone UAC">

  <send retrans="500">

    <![CDATA[

 

      INVITE sip:[field1]@[remote_ip]:[remote_port] SIP/2.0

      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]

      From: [field0] <sip:[field0]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]

      To: [field1] <sip:[field1]@[remote_ip]:[remote_port]>

      Call-ID: [call_id]

      CSeq: 1 INVITE

      Contact: sip:sipp@[local_ip]:[local_port]

      Max-Forwards: 70

      Subject: Performance Test

      Content-Type: application/sdp

      Content-Length: [len]

 

      v=0

      o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]

      s=-

      c=IN IP[media_ip_type] [media_ip]

      t=0 0

      m=audio [media_port] RTP/AVP 8 18

      a=rtpmap:8 PCMA/8000

      a=rtpmap:18 G729/8000

      a=ptime:20

 

    ]]>

  </send>

 

  <recv response="100" optional="true">

  </recv>

 

  <recv response="183" optional="true">

  </recv>

 

  <recv response="180" optional="true">

  </recv>

 

  <recv response="200" rtd="true">

  </recv>

 

  <send>

    <![CDATA[

 

      ACK sip:[field1]@[remote_ip]:[remote_port] SIP/2.0

      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]

      From: [field0] <sip:[field0]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]

      To: [field1] <sip:[field1]@[remote_ip]:[remote_port]>[peer_tag_param]

      Call-ID: [call_id]

      CSeq: 1 ACK

      Contact: sip:sipp@[local_ip]:[local_port]

      Max-Forwards: 70

      Subject: Performance Test

      Content-Length: 0

 

    ]]>

  </send>

 

  <pause milliseconds="10000"/>

 

  <send retrans="500">

    <![CDATA[

 

      BYE sip:[field1]@[remote_ip]:[remote_port] SIP/2.0

      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]

      From: [field0] <sip:[field0]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]

      To: [field1] <sip:[field1]@[remote_ip]:[remote_port]>[peer_tag_param]

      Call-ID: [call_id]

      CSeq: 2 BYE

      Contact: sip:sipp@[local_ip]:[local_port]

      Max-Forwards: 70

      Subject: Performance Test

      Content-Length: 0

 

    ]]>

  </send>

 

  <recv response="200" crlf="true">

  </recv>

 

  <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>

 

  <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>

 

</scenario>

 

为了测试被叫侧的不同场景,需要修改uas.xml文件,通过分支功能实现。

在下面的脚本例子中,被叫侧响应有2种编码方式,第1种是PCMA,G729,第2种是PCMA,两种各占50%的比例。

分支功能使用next指定跳转的label ID号,使用chance指定跳转的比例。

vi uas-test729.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE scenario SYSTEM "sipp.dtd">

 

<scenario name="Basic UAS responder">

  <recv request="INVITE" crlf="true" >

  </recv>

 

  <label id="1"/>

 

  <send next="3" chance="0.5">

    <![CDATA[

 

      SIP/2.0 100 Trying

      [last_Via:]

      [last_From:]

      [last_To:];tag=[pid]SIPpTag08b[call_number]

      [last_Call-ID:]

      [last_CSeq:]

      Contact: <sip:[local_ip]:[local_port];transport=[transport]>

      Content-Length: 0

 

    ]]>

  </send>

 

  <label id="2"/>

 

  <pause milliseconds="1000"/>

 

  <send>

    <![CDATA[

 

      SIP/2.0 183 Session Progress

      [last_Via:]

      [last_From:]

      [last_To:];tag=[pid]SIPpTag01[call_number]

      [last_Call-ID:]

      [last_CSeq:]

      Contact: <sip:[local_ip]:[local_port];transport=[transport]>

      Content-Type: application/sdp

      Content-Length: [len]

 

      v=0

      o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]

      s=-

      c=IN IP[media_ip_type] [media_ip]

      t=0 0

      m=audio [media_port] RTP/AVP 8 18

      a=rtpmap:8 PCMA/8000

      a=rtpmap:18 G729/8000

      a=ptime:20

 

    ]]>

  </send>

 

  <pause milliseconds="1000"/>

 

  <send next="5">

    <![CDATA[

 

      SIP/2.0 180 Ringing

      [last_Via:]

      [last_From:]

      [last_To:];tag=[pid]SIPpTag01[call_number]

      [last_Call-ID:]

      [last_CSeq:]

      Contact: <sip:[local_ip]:[local_port];transport=[transport]>

      Content-Length: 0

 

    ]]>

  </send>

 

  <label id="3"/>

 

  <pause milliseconds="1000"/>

 

  <send>

    <![CDATA[

 

      SIP/2.0 183 Session Progress

      [last_Via:]

      [last_From:]

      [last_To:];tag=[pid]SIPpTag01[call_number]

      [last_Call-ID:]

      [last_CSeq:]

      Contact: <sip:[local_ip]:[local_port];transport=[transport]>

      Content-Type: application/sdp

      Content-Length: [len]

 

      v=0

      o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]

      s=-

      c=IN IP[media_ip_type] [media_ip]

      t=0 0

      m=audio [media_port] RTP/AVP 8

      a=rtpmap:8 PCMA/8000

      a=ptime:20

 

    ]]>

  </send>

 

  <pause milliseconds="1000"/>

 

  <send next="5">

    <![CDATA[

 

      SIP/2.0 180 Ringing

      [last_Via:]

      [last_From:]

      [last_To:];tag=[pid]SIPpTag01[call_number]

      [last_Call-ID:]

      [last_CSeq:]

      Contact: <sip:[local_ip]:[local_port];transport=[transport]>

      Content-Length: 0

 

    ]]>

  </send>

 

  <label id="5"/>

 

  <pause milliseconds="1000"/>

 

  <send retrans="500">

    <![CDATA[

 

      SIP/2.0 200 OK

      [last_Via:]

      [last_From:]

      [last_To:];tag=[pid]SIPpTag01[call_number]

      [last_Call-ID:]

      [last_CSeq:]

      Contact: <sip:[local_ip]:[local_port];transport=[transport]>

      Content-Type: application/sdp

      Content-Length: [len]

 

      v=0

      o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]

      s=-

      c=IN IP[media_ip_type] [media_ip]

      t=0 0

      m=audio [media_port] RTP/AVP 8 18

      a=rtpmap:18 G729/8000

      a=rtpmap:8 PCMA/8000

      a=ptime:20

 

    ]]>

  </send>

 

  <recv request="ACK"

        optional="true"

        rtd="true"

        crlf="true">

  </recv>

 

  <recv request="BYE">

  </recv>

 

  <send>

    <![CDATA[

 

      SIP/2.0 200 OK

      [last_Via:]

      [last_From:]

      [last_To:]

      [last_Call-ID:]

      [last_CSeq:]

      Contact: <sip:[local_ip]:[local_port];transport=[transport]>

      Content-Length: 0

 

    ]]>

  </send>

 

  <timewait milliseconds="4000"/>

 

  <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>

 

  <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>

 

</scenario>

 

测试

服务端uas。

sudo sipp -i 10.55.55.138 -p 5555 -sf uas-test729.xml -rtp_echo

 

 

 

 

客户端uac。

sudo sipp -i 10.55.55.138 -p 6666 -inf call-test.csv -sf uac-test.xml 10.55.55.137:3060 -t un -rp 1000 -r 20 -l 8192 -m 99999

 

 

 

 

总结

sipp的github地址:https://github.com/SIPp/sipp

后续会有更多的压测方案和脚本慢慢写。

 

空空如常

求真得真

标签:SIP,last,压测,ip,Content,call,sipp3.6,local,分支
From: https://www.cnblogs.com/qiuzhendezhen/p/17252150.html

相关文章

  • sysbench压测工具操作文档
    目录sysbench压测工具操作文档一、安装sysbench1.1、借助包管理器安装1.2、源码编译安装使用说明帮助文档一般用法mysql压测示例CPU压测示例内存压测示例磁盘IO压测示例sy......
  • gltlib删除原有分支,建立新的master 分支。
     替换默认分支master是一个默认的分支,删除之前需要先让另一个分支变成默认的,等新master建好了再改过来即可。 <1>新建本地分支在项目中,右键gitbashhere。输入代码......
  • 暴力测试--CC压测服务器端口
    #coding=utf-8importctypeslibgcc_s=ctypes.CDLL('libgcc_s.so.1')importsocketimportthreading#定义IP地址和端口范围ip_address="192.168.1.45"start_p......
  • git批量删除分支
    1.删除本地分支gitbranch|grep'模糊匹配分支名'|xargsgitbranch-Deg:gitbranch|grep'feature_'|xargsgitbranch-D2.删除远程分支gitbranch-r|gr......
  • gor实现线上HTTP流量复制压测引流
    一、使用背景gor是一款go语言实现的简单的http流量复制工具,它的主要目的是使你的生产环境HTTP真实流量在测试环境和预发布环境重现。只需要在代理例如nginx入口服务器上......
  • JMeter+Jenkins分布式压测持续集成
     Jenkinsjob配置参数化构建运行分布式shell脚本:sh...生成测试报告配置生成html测试报告,需要安装插件HTMLPublisherJMeter性能脚本编写jmete......
  • Git 入门教程之分支策略
    默认情况下合并分支常常直接使用​​gitmerge​​​命令,是最方便快速的合并方法.其实这种情况下​​git​​​采用的是​​fastforward​​​模式,特点是删除分支......
  • 分支:多利分支,switch-case语句
         ......
  • Git 记录在非工作分支中 做了开发工作 - 挽回
    之前切到了测试分支“develop”,由于改bug比较急一时忘记了是在哪个分支的事。当要推送到自己的分支的时候突然发现目前所有的工作竟然在测试分支上,我的天啊一时懵了,想......
  • 性能测试技术笔记(三):如何设计一个压测平台
    转载:https://www.cnblogs.com/imyalost/p/17031603.html前面两篇笔记介绍了如何快速上手压测项目以及压测前准备测试环境和测试数据的一些方法。这篇文章,我想分享下关于......