Performance Testing with Sipp

From Kolmisoft Wiki
Revision as of 08:43, 16 June 2008 by Digilab (talk | contribs)
Jump to navigationJump to search

With this test enviroment we can simulate a single or multple users calling trought mor/asterisk.

In the scenario uac_auth.xml, sipp start sending a SIP INVITE to MOR and if AUTH is requested, sipp resend SIP INVITE with PROXY AUTHENTICATION, Playing with sipp parameters you can increase call data rate and other variable like call duration, etc.


Download and compile the last sipp:

wget http://surfnet.dl.sourceforge.net/sourceforge/sipp/sipp.3.1.src.tar.gz

tar xvfz sipp.3.1.src.tar.gz

cd sipp.svn

apt-get install libssl-dev

make ossl

edit a new file "users.csv":

SEQUENTIAL

user001;[authentication username=user001 password=password001]

user002;[authentication username=user001 password=password001]

user003;[authentication username=user001 password=password001]

edit a new file "uac_auth.xml":

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

 <send retrans="500">
   <![CDATA[
     INVITE sip:[service]@[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: sut <sip:[service]@[remote_ip]:[remote_port]>
     Call-ID: [call_id]
     CSeq: 1 INVITE
     Contact: sip:[field0]@[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 0
     a=rtpmap:0 PCMU/8000
   ]]>
 </send>
<recv response="407" auth="true">
</recv>
<send>
  <![CDATA[
    ACK sip:[service]@[remote_ip]:[remote_port] SIP/2.0
    Via: SIP/2.0/[transport] [local_ip]:[local_port]
    From: [field0] <sip:[field0]@[local_ip]:[local_port]>;tag=[call_number]
    To: sut <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param]
    Call-ID: [call_id]
    CSeq: 1 ACK
    Contact: sip:[field0]@[local_ip]:[local_port]
    Max-Forwards: 70
    Subject: Performance Test
    Content-Length: 0
  ]]>
</send>
<send retrans="500">
  <![CDATA[
    INVITE sip:[service]@[remote_ip]:[remote_port] SIP/2.0
    Via: SIP/2.0/[transport] [local_ip]:[local_port]
    From: [field0] <sip:[field0]@[local_ip]:[local_port]>;tag=[call_number]
    To: sut <sip:[service]@[remote_ip]:[remote_port]>
    Call-ID: [call_id]
    CSeq: 2 INVITE
    Contact: sip:[field0]@[local_ip]:[local_port]
    [field1]
    Max-Forwards: 70
    Subject: Performance Test
    Content-Type: application/sdp
    Content-Length: [len]
    v=0
    o=user1 53655765 2353687637 IN IP4 127.0.0.1
    s=-
    t=0 0
    c=IN IP4 [media_ip]
    m=audio [media_port] RTP/AVP 0
    a=rtpmap:0 PCMU/8000
  ]]>
</send>
 <recv response="100" optional="true">
 </recv>
 <recv response="180" optional="true">
 </recv>
 <recv response="183" optional="true">
 </recv>
 <recv response="200" rtd="true">
 </recv>
 <send>
   <![CDATA[
     ACK sip:[service]@[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: sut <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param]
     Call-ID: [call_id]
     CSeq: 1 ACK
     Contact: sip:[field0]@[local_ip]:[local_port]
     Max-Forwards: 70
     Subject: Performance Test
     Content-Length: 0
   ]]>
 </send>
 <pause/>
 <send retrans="500">
   <![CDATA[
     BYE sip:[service]@[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: sut <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param]
     Call-ID: [call_id]
     CSeq: 2 BYE
     Contact: sip:[field0]@[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>

Then run this:

./sipp -inf users.csv -sf uac_auth.xml -s <extension_to_call> <mor_sip_server_sip>

For a more complete sipp syntax look here:

http://sipp.sourceforge.net/doc1.1/reference.html#xmlsyntax