【SIPp】Linux-SIPp3.6.0 测试FreeSwitch

Linux下SIPp测试Freeswitch

知识必备:Linux操作系统、Sip协议

一、安装

1.依赖包安装:

yum -y install gcc-c++
yum -y install ncurses-devel
yum -y install openssl-devel
# 为了安装libpcap,还需要安装以下两个开发包:
yum -y install flex
yum -y install bison

2、安装libcap

下载libcap :http://www.tcpdump.org/release/

wget http://www.tcpdump.org/release/libpcap-1.9.1.tar.gz
tar zxvf libcapXXX.gz

login as root , go to folder libpcapXXX and install it. run:
./configure     
./make 
./make install

3.安装libnet (可跳过)

下载libnet :


tar zxvf libnetXXX.gz
# 切换root , 去libpnetXXX目录: 
./configure
. /make 
./make install

4、安装sipp

cd /home/dev
wget https://github.com/SIPp/sipp/releases/download/v3.6.0/sipp-3.6.0.tar.gz

安装方法:
支持PCAP 声音文件播放,而且支持密码验证支持:(支持407 auth验证支持)

# tar -zxvf sipp-xxx.tar
# cd sipp-xxx
#编译配置:
./configure --with-pcap --with-openssl
#编译&&安装:
make && make install
#确认是否安装成功:
sipp -v

第一行出现: SIPp v3.6.0-TLS-PCAP-RTPSTREAM 则安装成功

5、修改系统openfile限制

ulimit -a
#显示open file=1024
#修改
ulimit -n 10240

6、freeswith配置修改

①、修改max-sessions和sessions-per-second

cd /etc/freeswitch/autoload_configs
vim switch.conf.xml
# 修改

②、修改拨号的正则

1、cd /etc/freeswitch/dialplan
2、vim public.xml
改为:

        
                
                
                
                
        
      

3、vim default.xml
改为:
    
      
        
      
    

③、添加defalut配置文件

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

④、添加白名单无需鉴权

cd /etc/freeswitch/autoload_configs
vim acl.conf.xml

# 进入编辑模式修改
    
      
      
      
      
      
    

二、SIPp常用参数

注册:

sipp -sf regclient_set_c_port.xml 10.3.18.174:5060 -i 10.3.18.172 -p 26000  -inf uac2000_aibus_4000.csv -r 500  -rp 1000 -l 500 -m 4000

呼叫:

sipp -sf caller_with_auth_aibus.xml 10.3.18.174:5060 -i 10.3.18.172 -p 26000 -inf uac2000_aibus_4000.csv -r 80  -rp 1000 -l 80 -m 1000 -d 30000 -oocsn ooc_default  -aa  -trace_msg -trace_err  -trace_screen 

参数解释:

-i: 本地ip,为'Contact:','Via:', 和 'From:' 头部信息设置本地IP,在脚本中用[local_ip]引入
-p:设置本地端口号,默认是由系统随机选择空闲的端口号;
-sf:引入脚本文件,根据需要模拟的呼叫流程编写
-inf:在通话场景中使用外部csv文件引入数据;文件的第一行说明了后面数据的读入方式,常用的有:顺序         (SEQUENTIAL), 随机 (RANDOM), 或用户(USER)顺序;第一行对应一个通话,它们由一个或多个’;’分隔数据字段,这些字段可以在xml场景文件中使用[field0], [field1], ...来调用;多个csv文件,可以同时使用(语法:-inf f1.csv -inf f2.csv ...)
xx:xx:xx:xx:5060:Freeswitch服务端IP及freeswitch使用的端口;
-r:并发数量
-rp:并发的时间,单位ms,例如:-r 800 -rp 1000,就是每秒800并发
-l:设置同时呼叫的最大数目;一旦达到此值,流量将被限制直到打的通话数下降;默认值3*call_duration(s)*rate
-m:通话总数,当设置的通话数完成时,停止测试并退出;
-d:自定义的通话时长,单位ms
-aa:针对INFO, UPDATE 和 NOTIFY消息,进行200 OK自动回复应答;
-oocsn:Load out-of-call scenario
-trace_msg:在<场景文件名>__messages.log中显示发送和接收的SIP消息;调试时可增加,正试性能测试时,可取消,以免日志量太大影响本地性能;
-trace_screen:在退出SIPp时,把屏蔽上的统计信息写入<场景名>__screens.log文件中;在后台模式(-bq选项)时,这对于得到最终状态报告很有用;
-trace_err:跟踪所有非期望的消息到<场景文件名>__errors.log;

三、注册场景测试

测试前:准备uac.csv、uas.csv 和 regclient_set_c_port.xml

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]
...

注意:

1、csv格式创建后用Notepad++打开,否则改编编码导致失败
2、第一行代表执行顺序:包括SEQUENTIAL和RANDOM
3、[filed0]代表第1列,[filed1]代表第2列

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]
...

3、regclient_set_c_port.xml




    
    
    
        
            
        
    
    
  
    ;tag=acknnkkg.[call_number]
      To: 
      Call-ID: [call_id]
      CSeq: 1 REGISTER
      Contact: 
      Max-Forwards: 70
      Subject: Reg Performance Test
      user-agent: SIPp client
      Expires: [$EXP]
      Content-Length: 0
          ]]>
  
  

  
  
  
  
  
  
  
  
  
  
  
  
  

主叫注册

sipp -sf regclient_set_c_port.xml 192.168.200.101:5060 -i 192.168.200.101 -p 26045  -inf uac500.csv -r 30  -rp 1000 -l 100 -m 500

被叫注册

sipp -sf regclient_set_c_port.xml 192.168.200.101:5060 -i 192.168.200.101 -p 26048 -inf uas500.csv  -r 30  -rp 1000 -l 100 -m 500

四、电话场景测试

测试前:准备被叫执行脚本callee_with_bye.xml和主叫呼叫脚本caller_with_auth.xml

1、callee_with_bye.xml






        

                



    


    
        
            
        
              
    

        

  
    

    
    Content-Length: 0
    ]]>
    


 
 

    
    Content-Length: 0
    ]]>




    
    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
    ]]>

    
    

 





    
         
    



    

    
    Content-Length: 0
    ]]>


2、caller_with_auth.xml








    ;tag=[call_number]zhg8
      To: "[field1]"
      Call-ID: [call_id]
      CSeq: 1 INVITE
      Contact: 
      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
    ]]>
     











 -->



3、测试呼叫的步骤:

执行先后顺序:

# 1、启动主叫注册
sipp -sf regclient_set_c_port.xml 192.168.200.101:5060 -i 192.168.200.101 -p 26045  -inf uac500.csv -r 30  -rp 1000 -l 100 -m 500

# 2、启动被叫注册
sipp -sf regclient_set_c_port.xml 192.168.200.101:5060 -i 192.168.200.101 -p 26048 -inf uas500.csv  -r 30  -rp 1000 -l 100 -m 500

#3、等待被叫注册结束,启动被叫
sipp -sf callee_with_bye.xml -i 192.168.200.101 -p 26048 -trace_err 

# 4、等待被叫执行后,执行主叫
sipp -sf caller_with_auth.xml 192.168.200.101:5060 -i 192.168.200.101 -p 26045 -inf uac500.csv -r 500  -rp 1000 -l 5000 -m 5000 -d 60000 -oocsn ooc_default -trace_err

4、性能分析

并发数(CC) = 平均通话时长 * CPS

你可能感兴趣的:(sip,linux,性能调优)