zoukankan      html  css  js  c++  java
  • sipp3.6对freeswitch进行压力测试

    一、安装sipp

    1、下载地址:

    https://github-production-release-asset-2e65be.s3.amazonaws.com/13161657/99df6100-9216-11e9-9439-d9c9f5284379?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200904%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200904T024024Z&X-Amz-Expires=300&X-Amz-Signature=df9c9aeba4b219e5a3c6ea4cd0cbb76785900829a5294ac6d72f5c7ba4409f9b&X-Amz-SignedHeaders=host&actor_id=30207023&key_id=0&repo_id=13161657&response-content-disposition=attachment%3B%20filename%3Dsipp-3.6.0.tar.gz&response-content-type=application%2Foctet-stream

    2、安装依赖包

    yum install ncurse*
    yum install openssl*
    yum install lksctp*
    yum install libpcap*

    3、安装sipp3.6

    tar -xvzf sipp-xxx.tar.gz
    cd sipp
    ./configure --with-sctp --with-pcap --with-openssl
    make

    4、验证安装

    sipp -v

    二、环境设置

    1、修改系统openfile限制

    (1)vim /etc/security/limits.conf,添加:

        * soft nofile 32768
        * hard nofile 65535

    (2)vim /etc/pam.d/login,添加:

        session required /lib/security/pam_limits.so

    (3)命令行输入:

    ulimit -s unlimited
    ulimit -a

    2、修改freeswitch配置

    (1)cd /etc/freeswitch/autoload_configs,编辑vim switch.conf.xml

    # 修改
    <param name="max-sessions" value="100000"/>
    <param name="sessions-per-second" value="10000"/>

    (2)修改拨号正则,cd /etc/freeswitch/dialplan,修改某个profile:

    <?xml version="1.0" encoding="utf-8"?>
    <include>

    <extension name="Balance_load">

            <condition field="destination_number" expression="^([2-6][0-9][0-9][0-9])$">
               <action application="export" data="dialed_extension=$1"/>
               <action application="set" data="sip_h_History-Info=${sip_history_info}"/>
               <action application="set" data="hangup_after_bridge=true"/>
               <action application="set" data="callId=${uuid}"/>
               <action application="bridge" data="{absolute_codec_string=pcma,callId=${uuid}}sofia/webphonetest/$1@${local_ip_v4}:56148" />
           </condition>
      </extension>

    </include>

    其中,@172.200.115.13:56148是被叫IP和端口

    (3)添加default配置文件。

    cd /etc/freeswitch/directory/default
    # 3000 5999为自己需要的用户
    for i in `seq 2000 5999`; do sed -e "s/1000/$i/g" 1000.xml > $i.xml ; done

    (4)添加白名单,无需鉴权

    cd /etc/freeswitch/autoload_configs
    vim acl.conf.xml
    
    # 进入编辑模式修改
        <list name="domains" default="deny">
          <!-- domain= is special it scans the domain from the directory to build the ACL -->
          <node type="allow" domain="$${domain}"/>
          <!-- use cidr= if you wish to allow ip ranges to this domains acl. -->
          <node type="allow" cidr="192.168.200.0/24"/>
          <!--新增此行. -->
          <node type="allow" cidr="10.10.81.0/24"/>    
        </list>

     三、配置文件

    1、uac.csv

    SEQUENTIAL
    2000;2050;[authentication username=2000 password=1234]
    2001;2051;[authentication username=2001 password=1234]
    2002;2052;[authentication username=2002 password=1234]
    2003;2053;[authentication username=2003 password=1234]
    2004;2054;[authentication username=2004 password=1234]
    2005;2055;[authentication username=2000 password=1234]
    2006;2056;[authentication username=2001 password=1234]
    2007;2057;[authentication username=2002 password=1234]
    2008;2058;[authentication username=2003 password=1234]
    2009;2059;[authentication username=2004 password=1234]
    2010;2060;[authentication username=2000 password=1234]
    2011;2061;[authentication username=2001 password=1234]
    2012;2062;[authentication username=2002 password=1234]
    2013;2063;[authentication username=2003 password=1234]
    2014;2064;[authentication username=2004 password=1234]
    2015;2065;[authentication username=2000 password=1234]
    2016;2066;[authentication username=2001 password=1234]
    2017;2067;[authentication username=2002 password=1234]
    2018;2068;[authentication username=2003 password=1234]
    2019;2069;[authentication username=2004 password=1234]
    2020;2070;[authentication username=2000 password=1234]
    2021;2071;[authentication username=2001 password=1234]
    2022;2072;[authentication username=2002 password=1234]
    2023;2073;[authentication username=2003 password=1234]
    2024;2074;[authentication username=2004 password=1234]
    2025;2075;[authentication username=2000 password=1234]
    2026;2076;[authentication username=2001 password=1234]
    2027;2077;[authentication username=2002 password=1234]
    2028;2078;[authentication username=2003 password=1234]
    2029;2079;[authentication username=2004 password=1234]
    2030;2080;[authentication username=2000 password=1234]
    2031;2081;[authentication username=2001 password=1234]
    2032;2082;[authentication username=2002 password=1234]
    2033;2083;[authentication username=2003 password=1234]
    2034;2084;[authentication username=2004 password=1234]
    2035;2085;[authentication username=2000 password=1234]
    2036;2086;[authentication username=2001 password=1234]
    2037;2087;[authentication username=2002 password=1234]
    2038;2088;[authentication username=2003 password=1234]
    2039;2089;[authentication username=2004 password=1234]
    2040;2090;[authentication username=2000 password=1234]
    2041;2091;[authentication username=2001 password=1234]
    2042;2092;[authentication username=2002 password=1234]
    2043;2093;[authentication username=2003 password=1234]
    2044;2094;[authentication username=2004 password=1234]
    2045;2095;[authentication username=2000 password=1234]
    2046;2096;[authentication username=2001 password=1234]
    2047;2097;[authentication username=2002 password=1234]
    2048;2098;[authentication username=2003 password=1234]
    2049;2099;[authentication username=2004 password=1234]

    2、uas.csv

    SEQUENTIAL
    2050;;[authentication username=2050 password=1234]
    2051;;[authentication username=2051 password=1234]
    2052;;[authentication username=2052 password=1234]
    2053;;[authentication username=2053 password=1234]
    2054;;[authentication username=2054 password=1234]
    2055;;[authentication username=2050 password=1234]
    2056;;[authentication username=2051 password=1234]
    2057;;[authentication username=2052 password=1234]
    2058;;[authentication username=2053 password=1234]
    2059;;[authentication username=2054 password=1234]
    2060;;[authentication username=2050 password=1234]
    2061;;[authentication username=2051 password=1234]
    2062;;[authentication username=2052 password=1234]
    2063;;[authentication username=2053 password=1234]
    2064;;[authentication username=2054 password=1234]
    2065;;[authentication username=2050 password=1234]
    2066;;[authentication username=2051 password=1234]
    2067;;[authentication username=2052 password=1234]
    2068;;[authentication username=2053 password=1234]
    2069;;[authentication username=2054 password=1234]
    2070;;[authentication username=2050 password=1234]
    2071;;[authentication username=2051 password=1234]
    2072;;[authentication username=2052 password=1234]
    2073;;[authentication username=2053 password=1234]
    2074;;[authentication username=2054 password=1234]
    2075;;[authentication username=2050 password=1234]
    2076;;[authentication username=2051 password=1234]
    2077;;[authentication username=2052 password=1234]
    2078;;[authentication username=2053 password=1234]
    2079;;[authentication username=2054 password=1234]
    2080;;[authentication username=2050 password=1234]
    2081;;[authentication username=2051 password=1234]
    2082;;[authentication username=2052 password=1234]
    2083;;[authentication username=2053 password=1234]
    2084;;[authentication username=2054 password=1234]
    2085;;[authentication username=2050 password=1234]
    2086;;[authentication username=2051 password=1234]
    2087;;[authentication username=2052 password=1234]
    2088;;[authentication username=2053 password=1234]
    2089;;[authentication username=2054 password=1234]
    2090;;[authentication username=2050 password=1234]
    2091;;[authentication username=2051 password=1234]
    2092;;[authentication username=2052 password=1234]
    2093;;[authentication username=2053 password=1234]
    2094;;[authentication username=2054 password=1234]
    2095;;[authentication username=2050 password=1234]
    2096;;[authentication username=2051 password=1234]
    2097;;[authentication username=2052 password=1234]
    2098;;[authentication username=2053 password=1234]
    2099;;[authentication username=2054 password=1234]

    3、regclient_set_c_port.xml

    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE scenario SYSTEM "sipp.dtd">
    <scenario name="regclient">
        <Global variables="c_port" />
        
        <nop hide="true">
            <action>
                <assignstr assign_to="EXP" value="3600" />
            </action>
        </nop>
        
      <send>
        <![CDATA[
          REGISTER sip:[remote_ip] SIP/2.0
          Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
          From: <sip:[field0]@[remote_ip]>;tag=acknnkkg.[call_number]
          To: <sip:[field0]@[remote_ip]>
          Call-ID: [call_id]
          CSeq: 1 REGISTER
          Contact: <sip:[field0]@[local_ip]:[$c_port]>
          Max-Forwards: 70
          Subject: Reg Performance Test
          user-agent: SIPp client
          Expires: [$EXP]
          Content-Length: 0
              ]]>
      </send>
      
    
      <recv response="401" optional="true" auth="true" next="auth" >
      </recv>
      
      <recv response="403" optional="true" next="END">
      </recv>
      
      <recv response="404" optional="true" next="END">
      </recv>
      
      <recv response="200" next="END" timeout="5000">
      </recv>
      
      <label id="auth" />
      <send retrans="500">
        <![CDATA[
          REGISTER sip:[field0]@[remote_ip]:[remote_port] SIP/2.0
          Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
          From: [field0] <sip:[field0]@[remote_ip]:[remote_port]>;tag=[call_number]
          To: [field0] <sip:[field0]@[remote_ip]:[remote_port]>
          Call-ID: [call_id]
          CSeq: 2 REGISTER
          Contact: sip:[field0]@[local_ip]:[local_port]
          Max-Forwards: 70
          Subject: Reg Performance Test 
          user-agent: SIPp client
          Expires: [$EXP]
          [field2]
          Content-Length: 0
    
        ]]>
      </send>
    
      <recv response="200" next="END" timeout="5000">
      </recv>
    
      <label id="END"/>
      <nop hide="true">
      </nop>
    
    <!--<Reference variables="microseconds,seconds" />-->
    
      <!-- Definition of the response time repartition table (unit is ms)   -->
      <ResponseTimeRepartition value="50, 200"/>
    
      <!-- Definition of the call length repartition table (unit is ms)     -->
      <CallLengthRepartition value="500, 5000"/>
    
    </scenario>

    4、caller_with_auth.xml

    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE scenario SYSTEM "sipp.dtd">
    
    <scenario name="caller_with_auth">
    <!--执行命令样例:sipp -sf caller_with_auth.xml xx.x.x.xx:5060 -p 5066 -inf caller.csv -m 1 -d 10000 -oocsn ooc_default-->
    <!--发送INVITE消息,设定重传定时器为1000ms,同时启动定时器invite-->
    <send retrans="1000" start_rtd="invite">
        <![CDATA[
          INVITE sip:[field1]@[remote_ip] SIP/2.0
          Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
          From: "[field0]" <sip:[field0]@[remote_ip]>;tag=[call_number]zhg8
          To: "[field1]"<sip:[field1]@[remote_ip]>
          Call-ID: [call_id]
          CSeq: 1 INVITE
          Contact: <sip:[field0]@[local_ip]:[local_port]>
          User-Agent: SIPp client mode version [sipp_version]
          Allow: INVITE,PRACK,ACK,UPDATE,CANCEL,BYE,OPTIONS,INFO,SUBSCRIBE,REFER,NOTIFY
          Max-Forwards: 70
          Content-Type: application/sdp
          Content-Length: [len]
    
          v=0
          o=SIPp [pid][call_number] 8[pid][call_number]8 IN IP[local_ip_type] [local_ip]
          s=SIPp Normal Call Test
          t=0 0
          m=audio [media_port] RTP/AVP 0 8
          c=IN IP[media_ip_type] [media_ip]
          a=rtpmap:0 PCMU/8000
          a=rtpmap:8 PCMA/8000
          a=ptime:20
          a=sendrecv
        ]]>
         </send>
    
    <recv response="100" optional="true">
    </recv>
    
    <!-- <recv response="401" auth="true"> -->
    <!-- </recv> -->
    
    <!-- 部分呼叫鉴权可能为407 -->
    <!-- <recv response="407" option="true" auth="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-3]
          From: "[field0]" <sip:[field0]@[remote_ip]>;tag=[call_number]zhg8
          To: "[field1]"<sip:[field1]@[remote_ip]>[peer_tag_param]
          Call-ID: [call_id]
          CSeq: 1 ACK
          Contact: <sip:[field0]@[local_ip]:[local_port]>
          Max-Forwards: 70
          Subject: normal call scenario 
          user-agent: SIPp client mode version [sipp_version]
          Content-Length: 0
        ]]>
      </send>
    
    <send retrans="1000" start_rtd="invite">
        <![CDATA[
            INVITE sip:[field1]@[remote_ip] SIP/2.0
            [last_Via:]
            From: "[field0]" <sip:[field0]@[remote_ip]>;tag=[call_number]zhg8
            To: "[field1]"<sip:[field1]@[remote_ip]>
            Call-ID: [call_id]
            CSeq: 2 INVITE
            [field2]
            Contact: <sip:[field0]@[local_ip]:[local_port]>
            User-Agent: SIPp client mode version [sipp_version]
            Allow: INVITE,PRACK,ACK,UPDATE,CANCEL,BYE,OPTIONS,INFO,SUBSCRIBE,REFER,NOTIFY
            Max-Forwards: 70
            Content-Type: application/sdp
            Content-Length: [len]
    
            v=0
            o=SIPp [pid][call_number] 8[pid][call_number]8 IN IP[local_ip_type] [local_ip]
            s=SIPp Normal Call Test
            t=0 0
            m=audio [media_port] RTP/AVP 0 8
            c=IN IP[media_ip_type] [media_ip]
            a=rtpmap:0 PCMU/8000
            a=rtpmap:8 PCMA/8000
            a=ptime:20
            a=sendrecv
    
        ]]>
    </send>
    
    
    <!--1xx响应均为可选接收消息,且接收到临时响应后,即可停止invite定时器的计时-->
    <!--收到4xx/5xx错误响应后,直接进入呼叫失败-->
    <!-- <recv response="100" optional="true" rtd="invite">
    </recv>
    
    <recv response="183" optional="true" rtd="invite" next="normal">
    </recv>
    
    <recv response="403" optional="true" rtd="invite" next="err_ack">
    </recv>
    
    <recv response="407" optional="true" rtd="invite" next="err_ack">
    </recv>
    
    <recv response="415" optional="true" rtd="invite" next="err_ack">
    </recv>
    
    <recv response="480" optional="true" rtd="invite" next="err_ack">
    </recv>
    
    <recv response="486" optional="true" rtd="invite" next="err_ack">
    </recv>
    
    <recv response="500" optional="true" rtd="invite" next="err_ack">
    </recv>
    
    <recv response="503" optional="true" rtd="invite" next="err_ack">
    </recv> -->
     -->
    <recv response="180"  optional="true" rtd="invite" next="normal">
    </recv>
    
    <label id="normal"/>
    <recv response="200" rtd="invite">
        <action>
            <ereg regexp="m=audio ([0-9]*)"
                search_in="msg"
                check_it="true"
                assign_to="junk,callee_media_port" />
        </action>
    </recv>
    
    <nop hide="true">
        
    </nop>
    
    <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]@[remote_ip]>;tag=[call_number]zhg8
            To: "[field1]"<sip:[field1]@[remote_ip]>[peer_tag_param]
            Call-ID: [call_id]
            CSeq: 2 ACK
            Contact: <sip:[field0]@[local_ip]:[local_port]>
            Max-Forwards: 70
            Subject: normal call scenario
            user-agent: SIPp client mode version [sipp_version]
            Content-Length: 0
        ]]>
    </send>
    
    <!--使用rtp_stream循环播放PCMA音频
    <nop hide="true">
        <action>
          <exec rtp_stream="pcap/g711a.pcap,-1,0"/>
        </action>
    </nop>
    -->
    <!--使用rtp_stream循环播放PCMU音频
    <nop hide="true">
        <action>
          <exec rtp_stream="pcap/g711u.pcap,-1,0"/>
        </action>
    </nop>
    -->
    
    <!--使用play_pcap单次播放PCMA音频-->
    <nop hide="true">
        <action>
            <exec play_pcap_audio="pcap/g711a.pcap"/> 
        </action>
    </nop>
    <!--使用play_pcap单次播放PCMU音频
    <nop hide="true">
        <action>
            <exec play_pcap_audio="pcap/g711u.pcap"/> 
        </action>
    </nop>
    -->
    
    <!--媒体流传输完毕后,暂停发送BYE结束呼叫,在执行命令中增加参数-d 指定暂停时间:如-d 10000暂停10秒-->
    <pause />
    
    <send start_rtd="bye">
        <![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]@[remote_ip]>;tag=[call_number]zhg8
            To: "[field1]"<sip:[field1]@[remote_ip]>[peer_tag_param]
            Call-ID: [call_id]
            CSeq: 3 BYE
            Max-Forwards: 70
            Subject: normal call scenario
            Content-Length: 0
        ]]>
    </send>
    
    <recv response="200" rtd="bye" next="END">
    </recv>
    
    <!--异常结束,复用err_ack流程-->
    <label id="err_ack"/>
    
    <send>
        <![CDATA[
            ACK sip:[field1]@[remote_ip]:[remote_port] SIP/2.0
            [last_Via:]
            From: "[field0]" <sip:[field0]@[remote_ip]>;tag=[call_number]zhg8
            To: "[field1]"<sip:[field1]@[remote_ip]>[peer_tag_param]
            [last_Call-ID:]
            CSeq: 2 ACK
            Max-Forwards: 70
            Subject: normal call scenario
            user-agent: SIPp client mode version [sipp_version]
            Content-Length: 0
        ]]>
    </send>
    
    <!--正常结束-->
    <label id="END"/>
    <nop hide="true">
    </nop>
    
    <!--如果存在定义了但未被使用的变量,可以在下面语句的双引号中增加,避免运行时报错-->
    <Reference variables="junk,callee_media_port" />
        
    <!--definition of the response time repartition table (unit is ms)   -->
    <ResponseTimeRepartition value="50, 200,1000,2000,4000,10000"/>
    
    <!--definition of the call length repartition table (unit is ms)     -->
    <CallLengthRepartition value="500, 1000, 10000"/>
    
    </scenario>

    5、callee_with_bye.xml

    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE scenario SYSTEM "sipp.dtd">
    
    <scenario name="callee_with_bye">
    <!--用于模拟局内被叫侧用户的正常业务流程
            媒体类型:PCMU
            呼叫挂机:主叫方(60秒超时后主动发BYE拆话)-->
            
    <!--执行命令样例:sipp -sf callee_with_bye.xml -p 5068-->
                    
    <!--定义全局状态机,如果收到OPTIONS消息,则跳转至options标签处-->
    <recv request="OPTIONS" optional="global" next="options">
    </recv>
        
    <recv request="INVITE">
    <!--参数caller_num、callee_num和caller_tag用于主叫未挂机,BYE接收超时主动发BYE的流程-->
        <action>
            <ereg regexp="sip:(.*)@(.*)>;tag=(.*)"
                  search_in="hdr"
                  header="From: "
                  check_it="true"
                  assign_to="junk,caller_num,domain,caller_tag" >
            </ereg>    
            <ereg regexp="sip:(.*)@.*>"
                  search_in="hdr"
                  header="To: "
                  check_it="true"
                  assign_to="junk,callee_num" >
            </ereg>      
        </action>
    </recv>
            
    <!--增加间隔20ms,避免偶现系统不发送100响应的问题-->
    <pause hide="true" milliseconds="20"/>  
        
    <send>
        <![CDATA[
        SIP/2.0 100 Trying
        [last_Via:]
        [last_From:]
        [last_To:]
        [last_Call-ID:]
        [last_CSeq:]
        Contact: <sip:[local_ip]:[local_port];transport=[transport]>
        Content-Length: 0
        ]]>
        </send>
    
    <!--增加间隔20ms,避免偶现系统不发送180响应的问题-->
    <pause hide="true" milliseconds="20"/> 
     
    <send>
        <![CDATA[
        SIP/2.0 180 Ringing
        [last_Via:]
        [last_From:]
        [last_To:];tag=[call_number]
        [last_Call-ID:]
        [last_CSeq:]
        Contact: <sip:[local_ip]:[local_port];transport=[transport]>
        Content-Length: 0
        ]]>
    </send>
    
    <!--设置发送200后等待ACK的重传周期为1秒,如果1秒内收不到ACK则进行200的重传-->
    <send retrans="1000" start_rtd="ack">
        <![CDATA[
        SIP/2.0 200 OK 
        [last_Via:]
        [last_From:]
        [last_To:];tag=[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 0 8
        a=rtpmap:0 PCMU/8000
        a=rtpmap:8 PCMA/8000
        a=ptime:20
        ]]>
    </send>
        
    <!--设置等待ACK的超时定时器为30秒,如果30秒内收不到ACK则呼叫超时失败而结束-->    
    <recv request="ACK" rtd="ack" timeout="30000" />
     
    <!--使用rtp_stream循环播放PCMA音频
    <nop hide="true">
        <action>
          <exec rtp_stream="pcap/g711a.pcap,-1,0"/>
        </action>
    </nop>
    -->
    <!--使用rtp_stream循环播放PCMU音频
    <nop hide="true">
        <action>
          <exec rtp_stream="pcap/g711u.pcap,-1,0"/>
        </action>
    </nop>
    -->
    
    <!--使用play_pcap单次播放PCMA音频-->
    <nop hide="true">
        <action>
            <exec play_pcap_audio="pcap/g711a.pcap"/> 
        </action>
    </nop>
    <!--使用play_pcap单次播放PCMU音频
    <nop hide="true">
        <action>
            <exec play_pcap_audio="pcap/g711u.pcap"/> 
        </action>
    </nop>
    -->
    
    <recv request="BYE" timeout="60000" ontimeout="send_bye"/>    
    <send next="END">
        <![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>
    
    <label id="options"/>
      <send next="END" >
        <![CDATA[
          SIP/2.0 200 OK
          [last_Via:]
          [last_Call-ID:]
          [last_From:]
          [last_To:];tag=telpo-options[call_number]
          [last_CSeq:]
          [last_Contact:]
          user-agent: SIPP version [sipp_version]
          subject: reg performance
          link-status: I am alive
          Content-Length: 0
    
        ]]>
    </send> 
        
    <!--主叫未挂机,BYE接收超时,被叫主动发BYE-->    
    <label id="send_bye"/> 
    <send start_rtd="bye">
        <![CDATA[
        BYE sip:[$caller_num]@[local_ip]:[local_port] SIP/2.0
        Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
        From: "[$caller_num]" <sip:[$caller_num]@[local_ip]>;tag=[call_number]
        To: "[$callee_num]"<sip:[$callee_num]@[local_ip]>;tag=[$caller_tag]
        Call-ID: [call_id]
        CSeq: 2 BYE
        Max-Forwards: 70
        Subject: normal call scenario 
        Content-Length: 0
        ]]>
    </send>
    
    <recv response="200" rtd="bye">
    </recv> 
     
    <label id="END"/>
    
    <Reference variables="junk,domain" />
    
    <!-- definition of the response time repartition table (unit is ms)-->
    <ResponseTimeRepartition value="50, 200"/>
    
    <!-- definition of the call length repartition table (unit is ms)-->
    <CallLengthRepartition value="500, 1000, 10000"/>
    
    </scenario>

     四、命令

    sipp -sf regclient_set_c_port.xml 172.29.50.60:5050 -i 172.29.50.60 -p 26000  -inf  uac.csv   -r 5  -rp 1000 -l 5 -m 100
    
    sipp -sf regclient_set_c_port.xml 172.29.50.60:5050 -i 172.29.50.60 -p 56148  -inf  uas.csv   -r 5  -rp 1000 -l 5 -m 100
    
    sipp -sf callee_with_bye.xml -i 172.29.50.60 -p 56148 -trace_err 
     
    sipp -sf caller_with_auth.xml 172.29.50.60:5050 -i 172.29.50.60 -p 26000 -inf uac.csv -r 10  -rp 1000 -l 30 -m 100 -d 60000 -oocsn ooc_default -trace_err -aa
    
    # -r:并发数量
     #-rp:并发的时间,单位ms,例如:-r 800 -rp 1000,就是每秒800并发
     #-l:设置同时呼叫的最大数目;一旦达到此值,流量将被限制直到打的通话数下降;默认值3*call_duration(s)*rate
     #-m:通话总数,当设置的通话数完成时,停止测试并退出;
     #-d:自定义的通话时长,单位ms
     #-aa:针对INFO, UPDATE 和 NOTIFY消息,进行200 OK自动回复应答;
  • 相关阅读:
    java 语言里 遍历 collection 的方式
    struts2启动报错com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1
    mysql 查看表的类型
    memcached—向memcached中保存Java实体需注意的问题
    一个关于 UIPickerView 的 bug
    Wireshark数据抓包教程之安装Wireshark
    Mysql第四天 数据库设计
    产品经理怎样才干把一件事做出色
    Tokyo Tyrant(TTServer)系列(三)-Memcache协议
    Unity3D
  • 原文地址:https://www.cnblogs.com/zhangxianrong/p/13626873.html
Copyright © 2011-2022 走看看