sipp 对asterisk 进行压力测试

Posted on 2013-07-10 11:54  NooBkey  阅读(2360)  评论(0编辑  收藏  举报

测试环境

asterisk  192.168.106.170

版本astrisk1.8

sipp   192.168.106.141

sipp版本3.3

 

安装依赖包
yum install make gcc gcc-c++ ncurses ncurses.x86_64 ncurses-devel ncurses-devel.x86_64 openssl libnet libpcap libpcap-devel libpcap.x86_64 libpcap-devel.x86_64 gsl gsl-devel

 

asterisk配置

sip.conf

[general]
        context=default
        allowoverlap=no
        allowguest=no
        udpbindaddr=0.0.0.0
        tcpenable=no
        tcpbindaddr=0.0.0.0
        srvlookup=yes
        language=cn
        callevents=yes
        limitonpeers=no
        jbenable=yes


[sipp]

        host=192.168.106.141
        type=friend

        disallow=all
        allow=g729
        allow=g723
        allow=ulaw
        allow=alaw
        context=sipp

extension.conf

[general]
        static=yes
        writeprotect=no
        clearglobalvars=no

[globals]

[sipp]
        exten => 7777,1,Answer
        exten => 7777,2,SetMusicOnHold(default)
        exten => 7777,3,WaitMusicOnHold(2000)
        exten => 7777,4,Hangup

sipp客户端配置

uac-media.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">

<!-- This program is free software; you can redistribute it and/or      -->
<!-- modify it under the terms of the GNU General Public License as     -->
<!-- published by the Free Software Foundation; either version 2 of the -->
<!-- License, or (at your option) any later version.                    -->
<!--                                                                    -->
<!-- This program is distributed in the hope that it will be useful,    -->
<!-- but WITHOUT ANY WARRANTY; without even the implied warranty of     -->
<!-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the      -->
<!-- GNU General Public License for more details.                       -->
<!--                                                                    -->
<!-- You should have received a copy of the GNU General Public License  -->
<!-- along with this program; if not, write to the                      -->
<!-- Free Software Foundation, Inc.,                                    -->
<!-- 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA             -->
<!--                                                                    -->
<!--                 Sipp 'uac' scenario with pcap (rtp) play           -->
<!--                                                                    -->

<scenario name="Basic Sipstone UAC">
  <!-- In client mode (sipp placing calls), the Call-ID MUST be         -->
  <!-- generated by sipp. To do so, use [call_id] keyword.                -->
  <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: sipp<sip:sipp@[local_ip]:[local_port]>;tag=[call_number]
      To: sut<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[local_ip_type] [local_ip]
      t=0 0
      m=audio [media_port] RTP/AVP 0
      a=rtpmap:18 G729
     
    ]]>
  </send>

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

  <!-- By adding rrs="true" (Record Route Sets), the route sets         -->
  <!-- are saved and used for following messages sent. Useful to test   -->
  <!-- against stateful SIP proxies/B2BUAs.                             -->
  <recv response="200" rtd="true">
  </recv>

     
  <!-- Packet lost can be simulated in any send/recv message by         -->
  <!-- by adding the 'lost = "10"'. Value can be [1-100] percent.       -->
  <send>
      <![CDATA[

      ACK sip:[field1]@[remote_ip]:[remote_port] SIP/2.0
      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
      From: sipp <sip:sipp@[local_ip]:[local_port]>;tag=[call_number]
      To: sut <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>


  <!-- Play a pre-recorded PCAP file (RTP stream)                       -->
  <nop>
      <action>
            <exec play_pcap_audio="pcap/g711a.pcap"/>
                </action>
                  </nop>


  <!-- Pause 800 seconds, which is approximately the duration of the      -->
  <!-- PCAP file                                                        -->
  <pause milliseconds="800000"/>


  <!--This delay can be customized by the -d command-line option      -->
  <!--or by adding a'milliseconds = "value" option here              -->
  <pause/>

  <!-- The 'crlf' option inserts a blank line in the statistics report. -->
  <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: sipp <sip:[field0]@[local_ip]:[local_port]>;tag=[call_number]
      To: sut <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>


  <!-- definition of the response time repartition table (unit is ms)   -->
  <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>

  <!-- definition of the call length repartition table (unit is ms)     -->
  <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>

</scenario>

44.csv

SEQUENTIAL
4444;7777;[authentication username=4444 password=8888]


之后执行命令

 

./sipp -sf uac-media.xml -inf 44.csv -p 5060 -i 192.168.106.141 -m 100000 192.168.106.170 -l 2000

显示

Last Error: Aborting call on UDP retransmission timeout for Call-ID '281...
------------------------------ Scenario Screen -------- [1-9]: Change Screen --
  Call-rate(length)   Port   Total-time  Total-calls  Remote-host
  10.0(0 ms)/1.000s   5060     313.57 s         3135  192.168.106.170:5060(UDP)

  9 new calls during 0.952 s period      0 ms scheduler resolution
  1322 calls (limit 2000)                Peak was 1332 calls, after 300 s
  1 Running, 1659 Paused, 62 Woken up
  1702 dead call msg (discarded)         1444 out-of-call msg (discarded)     
  3 open sockets                        

                                 Messages  Retrans   Timeout   Unexpected-Msg
      INVITE ---------->         3135      10823     1680               
         100 <----------         1140      0         0         0        
         200 <----------  E-RTD1 1140      1803      0         0        
         ACK ---------->         1140      1803                         
       Pause [    13:20]         1140                          133      
       Pause [      0ms]         0                             0        
         BYE ---------->         0         0         0                  
         200 <----------         0         0         0         0        

------------------------------ Test Terminated --------------------------------

asterisk服务器显示

SIP/sipp-00000cb7    7777@sipp:3          Up      WaitMusicOnHold(2000)         
SIP/sipp-00000a18    7777@sipp:3          Up      WaitMusicOnHold(2000)         
SIP/sipp-00000cb4    7777@sipp:3          Up      WaitMusicOnHold(2000)         
SIP/sipp-00000a3e    7777@sipp:3          Up      WaitMusicOnHold(2000)         
SIP/sipp-00000cb5    7777@sipp:3          Up      WaitMusicOnHold(2000)         
SIP/sipp-00000a3d    7777@sipp:3          Up      WaitMusicOnHold(2000)         
SIP/sipp-00000ab4    7777@sipp:3          Up      WaitMusicOnHold(2000)         
SIP/sipp-00000cb2    7777@sipp:3          Up      WaitMusicOnHold(2000)         
SIP/sipp-00000ab5    7777@sipp:3          Up      WaitMusicOnHold(2000)         
SIP/sipp-00000cb3    7777@sipp:3          Up      WaitMusicOnHold(2000)         
SIP/sipp-00000a3f    7777@sipp:3          Up      WaitMusicOnHold(2000)         
SIP/sipp-00000ab6    7777@sipp:3          Up      WaitMusicOnHold(2000)         
SIP/sipp-00000cb0    7777@sipp:3          Up      WaitMusicOnHold(2000)         
SIP/sipp-00000a3a    7777@sipp:3          Up      WaitMusicOnHold(2000)         
SIP/sipp-00000ab7    7777@sipp:3          Up      WaitMusicOnHold(2000)         
SIP/sipp-00000cb1    7777@sipp:3          Up      WaitMusicOnHold(2000)         
SIP/sipp-00000ab0    7777@sipp:3          Up      WaitMusicOnHold(2000)         
1000 active channels
1000 active calls
3783 calls processed
[root@test asterisk]# asterisk -rx"core show channels"



 -----------------------------------

Can't create thread to send RTP packets,翻译过来就是“无法创建线程发送RTP数据包”

大概知道是需要设置ulimit ,但设置好像没有生效。在龙舟兄弟的指导与提醒下,索性直接ulimit -s unlimited,设置为不限制了。

如此之后,rtp就不受限制了。

 

 xml实例文件

https://github.com/saghul/sipp-scenarios

Copyright © 2024 NooBkey
Powered by .NET 9.0 on Kubernetes