SlideShare a Scribd company logo
1 of 30
SIPp Introduction

Load and Performance Testing
       Simon Flannery
      Ericsson Australia
Agenda
 SIPp Basics
 Running SIPp
  – Statistics and Screens
  – Command Line Options
 Creating Scenarios
 Authentication
 Examples
Getting Started
 Low-level knowledge of the SIP protocol and SIP
  signalling inside IMS
 Scenarios files are written using XML
 Download from http://sipp.sourceforge.net/
 "SIPp is a free Open Source test tool and traffic
  generator for the SIP protocol "
                                   -   sipp.sourceforge.net
 Used for performance testing and traffic
  generation for IMT (and can be used for mIMS,
  but not PoC) Integration & Verification
SIPp Features
 Support for both IPv4 and IPv6
 RTP media support (PCAP)
 Call rate distributions
    – Fixed
    – Uniform
    – Exponential
   Support Authentication
   High Performance and Reliable
   Allows Complex Sceneries
   Can be controlled remotely (or externally)
   Reports Statistics
Running SIPp
 SIPp has an interactive and real-time command
  line interface
 Quite safe and stable to be left alone, or run in
  the background (try to always use latest build)
 Various statistics and reporting screens are
  available
 Exit codes:
  –   0 (zero) indicate that all calls were successful
  –   1 indicates that at least one call failed
  –   97 indicates an abnormal exit on internal command
  –   99 indicating a normal exit without processing calls
  –   -1 used to indicate a fatal error
The Scenario Screen
 Default screen (accessed by pressing 1)
The Statistics Screen
 Accessed by pressing 2
Useful Command Line Options
 -sf,loads an alternate scenario file
 -inf, loads an external CSV file to inject values from
 -r, sets the call rate (calls per second)
 -rp, specify the rate period (ms) for the call rate (above)
   – Example: -r 15 -rp 1000, 15 calls every second
 -l, maximum number of simultaneous calls
 -m, stop and exit when set number of calls are
  processed
 -i, sets the local IP address
 -p, sets the local port number
Useful Command Line Options
 -auth_uri,forces the domain value of the URI for
  authentication (for example, 401)
 -trace_screen,logs the final screens to file
  (<scenario>_<pid>_screen.log)
 -trace_err, logs unexpected messages to file
  (<scenario>_<pid>_errors.log)
 -trace_stat, logs statistics to file
  (<scenario>_<pid>.csv)
 -fd, logs statistics at set interval (seconds)
 -nd, disable SIPp’s default behaviors
 Finally, we end all SIPp commands with the remote host
  (and port), for example the P-CSCF
SIPp Supports Authentication
 Two authentication algorithms are supported:
  – Digest / MD5 ("algorithm="MD5"")
  – Digest / AKA
 When receiving:
  – 401 (Unauthorized)
  – 407 (Proxy Authentication Required)
      Simply add auth="true" in the <recv> command to take
       the challenge into account
      The authorization header will then be re-injected in the next
       message using [authentication] keyword
Creating your own Scenarios
 Authored using XML notation     <?xml version="1.0" encoding="ISO-8859-1" ?>
                                  <!DOCTYPE scenario SYSTEM "sipp.dtd">
 Unfortunately has spaghetti
                                  <scenario name="UAC Basic Registration">
  flow                              <label id="0" />
                                    <send retrans="500" start_rtd="true">
    – Using labels and jumps          <![CDATA[
       (next attributes)                REGISTER sip:[field1] SIP/2.0
                                        Via: SIP/2.0/[transport] [local_ip]:
 Useful elements:                    [local_port];branch=[branch]
                                        From: [field0] <sip:
    – <send>                          [field0]@[field1]>;tag=[call_number]
                                        To: [field0] <sip:[field0]@[field1]>
    – <recv>                            Call-ID: [call_id]
                                        CSeq: [cseq] REGISTER
    – <pause>, speech time              Contact: [field0] <sip:
                                      [field0]@[local_ip]:
    – <nop>, no operation             [local_port]>;expires=691200
                                        Max-Forwards: 70
    – <label>                           Content-Length: 0
                                      ]]>
 Registration scenario walk        </send>
  through with authentication                                 ...to be continued

 Always put optional responses
  first
Creating your own Scenarios
<recv response="200" rtd="true" next="3"     <recv response="400" rtd="true" next="2"
   optional="true" />                          optional="true" />
<recv response="403" rtd="true" next="2"     <recv response="403" rtd="true" next="2"
   optional="true" />                          optional="true" />
 <recv response="404" rtd="true" next="2"      <recv response="404" rtd="true" next="2"
   optional="true" />                          optional="true" />
 <recv response="401" rtd="true" next="1"    <recv response="200" rtd="true" next="3"
   auth="true" crlf="true" />                  crlf="true" />

<label id="1" />                            <label id="2" />
 <send retrans="500" start_rtd="true">       <nop>
                                                                                                 er e
   <![CDATA[                                   <action>
                                                                                          ends h
     REGISTER sip:[field1] SIP/2.0               <exec int_cmd="stop_call" /> enario
                                                                              sc
                                                                       ls and
     Via: SIP/2.0/[transport] [local_ip]:
   [local_port];branch=[branch]
                                               </action>       Call fai
                                             </nop>
     From: [field0] <sip:
   [field0]@[field1]>;tag=[call_number]                                                            ends
                                             <label id="3" />                             enario
     To: [field0] <sip:[field0]@[field1]>
                                                                          s s f ul
                                             <!-- Definition of the response time  and sc
     Call-ID: [call_id]                        repartition table ll(unit eis ms). re
                                                                a s uc c
     CSeq: [cseq] REGISTER
                                                              C                    he -->
                                             <ResponseTimeRepartition value="30, 50, 80,
     Contact: [field0] <sip:                   100, 150, 200, 300, 400, 500, 600, 700,
   [field0]@[local_ip]:                        1000, 1200, 1400, 1500" />
   [local_port]>;expires=691200
     [field2]                                 <!-- Definition of the call length
     Max-Forwards: 70                           repartition table (unit is ms). -->
     Content-Length: 0                        <CallLengthRepartition value="30, 50, 80,
   ]]>                                          100, 150, 200, 300, 400, 500, 600, 700,
                                                1000, 1200, 1400, 1500" />
 </send>
                                            </scenario>
Creating your own Scenarios
Keywords from the Command Line
sipp -sf register.xml -inf subscribers_00000_01249.csv -m 1250 -r 200 -rp 1 -l 50000 
     -t u1 -nd -trace_screen -trace_err -i 192.168.22.81 -p 6041 -auth_uri tcm.imt.se 
     192.168.22.58:5060

<scenario name="UAC Basic Registration">
  <send retrans="500" start_rtd="true">
    <![CDATA[

      REGISTER sip:[field1] SIP/2.0
      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
      From: [field0] <sip:[field0]@[field1]>;tag=[call_number]
      To: [field0] <sip:[field0]@[field1]>
      Call-ID: [call_id]
      CSeq: [cseq] REGISTER
      Contact: [field0] <sip:[field0]@[local_ip]:[local_port]>;expires=691200
      Max-Forwards: 70
      Content-Length: 0

    ]]>
  </send>
Creating your own Scenarios
Keywords from SIPp
                                                           Magic cookie (z9hG4bK) +
                     "UDP" or "TCP"
                                                           call number +
                                                           message index
<scenario name="UAC Basic Registration">
  <send retrans="500" start_rtd="true">                    Starts from "1" and
    <![CDATA[
                                                           incremented by 1 for each call
      REGISTER sip:[field1] SIP/2.0
      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
      From: [field0] <sip:[field0]@[field1]>;tag=[call_number]
      To: [field0] <sip:[field0]@[field1]>
      Call-ID: [call_id]
      CSeq: [cseq] REGISTER
      Contact: [field0] <sip:[field0]@[local_ip]:[local_port]>;expires=691200
      Max-Forwards: 70
      Content-Length: 0

    ]]>
  </send>

Automatically
                               Identifies a call and is generated by
generates the CSeq
                               SIPp for each new call (mandatory)
number starting at 1
Useful SIPp Keywords
 [len], Computed length of the SIP body used
  in "Content-Length" header
 [call_number], index of the call starting at 1
  and is incremented by 1 for each call
 [authentication], is used to include the
  authentication header
 [msg_index], provides the message number
  in the scenario
 [cseq], provides (or generates) the CSeq value
  of the last (or next) request received
Injecting External Values
Keywords and values from an external file




<scenario name="UAC Basic Registration">
  <send retrans="500" start_rtd="true">
    <![CDATA[

      REGISTER sip:[field1] SIP/2.0
      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
      From: [field0] <sip:[field0]@[field1]>;tag=[call_number]
      To: [field0] <sip:[field0]@[field1]>
      Call-ID: [call_id]
      CSeq: [cseq] REGISTER
      Contact: [field0] <sip:[field0]@[local_ip]:[local_port]>;expires=691200
      Max-Forwards: 70
      Content-Length: 0

    ]]>
  </send>
Regular Expression Scenario
<scenario name="UAC Basic Registration">             <label id="1" />
  <label id="0" />                                    <send retrans="500" start_rtd="true">
  <send retrans="500" start_rtd="true">                 <![CDATA[
    <![CDATA[
                                                          REGISTER sip:[field1] SIP/2.0
      REGISTER sip:[field1] SIP/2.0                       Via: SIP/2.0/[transport] [local_ip]:
      Via: SIP/2.0/[transport] [local_ip]:              [local_port];branch=[branch]
    [local_port];branch=[branch]                          From: [field0] <sip:
      From: [field0] <sip:                              [field0]@[field1]>;tag=[call_number]
    [field0]@[field1]>;tag=[call_number]                  To: [field0] <sip:[field0]@[field1]>
      To: [field0] <sip:[field0]@[field1]>                Call-ID: [call_id]
      Call-ID: [call_id]                                  CSeq: [cseq] REGISTER
      CSeq: [cseq] REGISTER                               Contact: [field0] <sip:[field0]@[local_ip]:
      Contact: [field0] <sip:[field0]@[local_ip]:       [local_port]>;expires=[$1]
    [local_port]>;expires=60                              Max-Forwards: 70
      Max-Forwards: 70                                    Content-Length: 0
      Content-Length: 0
                                                        ]]>
   ]]>                                                </send>
 </send>
                                                      <recv response="200" rtd="true" next="3"
 <recv response="200" rtd="true" next="3"                crlf="true" />
    optional="true" />
                                                     <label id="3" />
 <!-- Interval Too Brief -->                          <ResponseTimeRepartition value="30, 50, 80, 100,
 <recv response="423" rtd="true" next="1"                150, 200, 300, 400, 500, 600, 700, 1000, 1200,
    crlf="true">                                         1400, 1500" />
   <action>
      <ereg regexp="[0-9]+" search_in="hdr"           <CallLengthRepartition value="30, 50, 80, 100,
    header="Min-Expires:" check_it="true"                150, 200, 300, 400, 500, 600, 700, 1000, 1200,
    assign_to="1" />                                     1400, 1500" />
   </action>                                        </scenario>
 </recv>
Definition of a call
 Successful call:
  – Navigates a scenario file from start to finish
  – Does not encounter a “stop_call” (or other)
    command
 Unsuccessful (failed) call:
  – Encounters a “stop_call”, “stop_now”,
    “stop_gracefully” or other?
Example Time
 The scenario:
   – User 46706560000000 calls user 46706560003000,
   – User 46706560000001 calls user 46706560003001,
   – User 46706560000002 calls user 46706560003002 and so on…
 Again we will use CSV files to inject who should call who
 We assume everyone is provisioned and successfully
  registered
 We will use two scenario files:
   – A Caller scenario file (to send INVITEs, pauses and BYEs)
   – A Callee scenario file (to answer the INVITEs and BYEs)
The Caller
 CSV Injection File




The Caller                           The Callee
    [field0]   [field1]   [field2]     [field3]
The Caller
<?xml version="1.0" encoding="ISO-8859-1" ?>          <recv response="100" rtd="true"
<!DOCTYPE scenario SYSTEM "sipp.dtd">                    optional="true" />
<scenario name="UAC Basic Invite">                    <recv response="180" rtd="true"
                                                         optional="true" />
  <label id="0" />
                                                      <recv response="400" rtd="true"   rrs="true"
  <send retrans="500" start_rtd="true">                  next="3" optional="true" />
    <![CDATA[                                         <recv response="401" rtd="true"   rrs="true"
                                                         next="3" optional="true" />
      INVITE sip:[field3]@[field1] SIP/2.0            <recv response="403" rtd="true"   rrs="true"
      Via: SIP/2.0/[transport] [local_ip]:               next="3" optional="true" />
    [local_port];branch=[branch]                      <recv response="404" rtd="true"   rrs="true"
      From: [field0] <sip:                               next="3" optional="true" />
    [field0]@[field1]>;tag=[call_number]-INV-UAC      <recv response="200" rtd="true"   rrs="true"
      To: [field3] <sip:[field3]@[field1]>               next="1" />
      Call-ID: [call_id]                              <label id="1" />
      CSeq: [cseq] INVITE                             <send>
      Contact: [field0] <sip:[field0]@[local_ip]:       <![CDATA[
    [local_port]>
      Max-Forwards: 70                                    ACK [next_url] SIP/2.0
      Content-Type: application/sdp                       [last_Via:]
      Content-Length: [len]                               [last_From:]
                                                          [last_To:]
      v=0                                                 [last_Call-ID:]
      o=user1 53655765 2353687637 IN                      CSeq: [cseq] ACK
    IP[local_ip_type] [local_ip]                          Max-Forwards: 70
      s=SIPp-UAC                                          Subject: Performance Test
      c=IN IP[media_ip_type] [media_ip]                   Content-Length: 0
      t=0 0                                               [routes]
      m=audio [media_port] RTP/AVP 0
      a=rtpmap:0 PCMU/8000                              ]]>
                                                      </send>
   ]]>
 </send>                                            <pause milliseconds="60000" next="2" />
The Caller
Han
    g




                                               r
                                       4xx erro
  up




        <label id="2" />                                <label id="3" />
        <send retrans="500" start_rtd="true">           <nop>
          <![CDATA[                                       <action>
            BYE [next_url] SIP/2.0                          <exec int_cmd="stop_call" />
            [last_Via:]                                   </action>
            [last_From:]                                </nop>
            [last_To:]
            [last_Call-ID:]                             <label id="4" />
            CSeq: [cseq] BYE                            <!-- Definition of the response time repartition
            Max-Forwards: 70                               table (unit is ms). -->
            Subject: Performance Test                   <ResponseTimeRepartition value="10, 20, 30, 40,
            Content-Length: 0                              50, 100, 150, 200" />
            [routes]
                                                        <!-- Definition of the call length repartition
          ]]>                                              table (unit is ms). -->
        </send>                                         <CallLengthRepartition value="10, 50, 100, 500,
                                                           1000, 5000, 10000" />
        <recv response="400"    rtd="true" next="3"
           optional="true" />                         </scenario>
        <recv response="401"    rtd="true" next="3"
           optional="true" />
        <recv response="403"    rtd="true" next="3"
           optional="true" />
        <recv response="404"    rtd="true" next="3"
           optional="true" />
        <recv response="408"    rtd="true" next="3"
           optional="true" />
        <recv response="200"    rtd="true" next="4"
           crlf="true" />
The Caller   Local port of the UE   P-CSCF or ACME



Call rate



                                           The
                                           Scenario
Message
Counter



 Actual
 speech
 time
The Callee
 CSV Injection File




 The Callee
     [field0]   [field1]   [field2]   No field 3
The Callee
<?xml version="1.0" encoding="ISO-8859-1" ?>        <send retrans="500">
<!DOCTYPE scenario SYSTEM "sipp.dtd">                  <![CDATA[

<scenario name="UAS Basic responder">                    SIP/2.0 200 OK
                                                         [last_Via:]
 <recv request="INVITE" rrs="true" crlf="true" />        [last_From:]
                                                         [last_To:];tag=[call_number]-INV-UAS
 <send>                                                  [last_Call-ID:]
   <![CDATA[                                             [last_CSeq:]
                                                         [last_Record-Route:]
      SIP/2.0 180 Ringing                                Contact: [field0] <sip:[field0]@[local_ip]:
      [last_Via:]                                      [local_port]>
      [last_From:]                                       Content-Type: application/sdp
      [last_To:];tag=[call_number]-INV-UAS               Content-Length: [len]
      [last_Call-ID:]
      [last_CSeq:]                                       v=0
      Contact: [field0] <sip:[field0]@[local_ip]:        o=user1 53655765 2353687637 IN
    [local_port]>                                      IP[local_ip_type] [local_ip]
      [last_Record-Route:]                               s=SIPp-UAS
      Content-Length: 0                                  c=IN IP[media_ip_type] [media_ip]
                                                         t=0 0
   ]]>                                                   m=audio [media_port] RTP/AVP 0
 </send>                                                 a=rtpmap:0 PCMU/8000

 <pause milliseconds="2000" />                         ]]>
                                                     </send>

                                                     <recv request="ACK" optional="true"
                                                        crlf="true" />
The Callee
                                                       The Callee only
 <recv request="BYE" />

  <send>


                                                        needs to reply to
    <![CDATA[

      SIP/2.0 200 OK

                                                        SIP messges from
      [last_Via:]
      [last_From:]
      [last_To:]
      [last_Call-ID:]
      [last_CSeq:]
      Contact: [field0] <sip:[field0]@[local_ip]:
                                                        the Caller
    [local_port]>
      Content-Length: 0

    ]]>
                                                       The Callee has no
  </send>

  <!-- Keep call open in case the 200 is lost to
                                                        logic flow
                                                       The Caller has all
     be
        able to retransmit it if we receive the BYE
     again. -->


                                                        the logic flow
  <pause milliseconds="4000" />

  <ResponseTimeRepartition value="10, 20, 30, 40,
     50, 100, 150, 200" />
                                                        – Remember all the labels and
  <CallLengthRepartition value="10, 50, 100, 500,
     1000, 5000, 10000" />                                jumps (next)?
</scenario>
The Callee   If running both the caller and callee
                on the same computer ensure that
                they use different ports




The
Scenario
References
 SIPp documentation
  http://sipp.sourceforge.net/doc/reference.html
 SIPp in action
  http://sipp.sourceforge.net/doc/images/sipp-01
 Using the Statistics output with Excel
  http://sipp.sourceforge.net/doc/images/sipp-02
SIPp Introduction for Load and Performance Testing

More Related Content

What's hot

Cisco Study: State of Web Security
Cisco Study: State of Web Security Cisco Study: State of Web Security
Cisco Study: State of Web Security Cisco Canada
 
Link Aggregation Control Protocol
Link Aggregation Control ProtocolLink Aggregation Control Protocol
Link Aggregation Control ProtocolKashif Latif
 
Segment Routing Technology Deep Dive and Advanced Use Cases
Segment Routing Technology Deep Dive and Advanced Use CasesSegment Routing Technology Deep Dive and Advanced Use Cases
Segment Routing Technology Deep Dive and Advanced Use CasesCisco Canada
 
Core cs overview (1)
Core cs overview (1)Core cs overview (1)
Core cs overview (1)Rashid Khan
 
Segment Routing Lab
Segment Routing Lab Segment Routing Lab
Segment Routing Lab Cisco Canada
 
Hierarchical Network Controller
Hierarchical Network ControllerHierarchical Network Controller
Hierarchical Network ControllerMyNOG
 
Ericsson Lean Carrier
Ericsson Lean CarrierEricsson Lean Carrier
Ericsson Lean CarrierEricsson
 
5g architecture, Industrial Training
5g architecture, Industrial Training5g architecture, Industrial Training
5g architecture, Industrial TrainingSumanPramanik7
 
Cisco Live! :: Carrier Ethernet 2.0 :: BRKSPG-2720 | Las Vegas July/2016
Cisco Live! :: Carrier Ethernet 2.0 :: BRKSPG-2720 | Las Vegas July/2016Cisco Live! :: Carrier Ethernet 2.0 :: BRKSPG-2720 | Las Vegas July/2016
Cisco Live! :: Carrier Ethernet 2.0 :: BRKSPG-2720 | Las Vegas July/2016Bruno Teixeira
 
Lte default and dedicated bearer / VoLTE
Lte default and dedicated bearer / VoLTELte default and dedicated bearer / VoLTE
Lte default and dedicated bearer / VoLTEmanish_sapra
 
Beginners: Non Terrestrial Networks (NTN)
Beginners: Non Terrestrial Networks (NTN)Beginners: Non Terrestrial Networks (NTN)
Beginners: Non Terrestrial Networks (NTN)3G4G
 
Lte air-interface
Lte  air-interfaceLte  air-interface
Lte air-interfaceArshad Alam
 

What's hot (20)

Cisco Study: State of Web Security
Cisco Study: State of Web Security Cisco Study: State of Web Security
Cisco Study: State of Web Security
 
Link Aggregation Control Protocol
Link Aggregation Control ProtocolLink Aggregation Control Protocol
Link Aggregation Control Protocol
 
Segment Routing Technology Deep Dive and Advanced Use Cases
Segment Routing Technology Deep Dive and Advanced Use CasesSegment Routing Technology Deep Dive and Advanced Use Cases
Segment Routing Technology Deep Dive and Advanced Use Cases
 
Core cs overview (1)
Core cs overview (1)Core cs overview (1)
Core cs overview (1)
 
Bgp
BgpBgp
Bgp
 
Lte technical overview
Lte technical overviewLte technical overview
Lte technical overview
 
5g-Air-Interface-pptx.pptx
5g-Air-Interface-pptx.pptx5g-Air-Interface-pptx.pptx
5g-Air-Interface-pptx.pptx
 
Segment Routing Lab
Segment Routing Lab Segment Routing Lab
Segment Routing Lab
 
Is is
Is isIs is
Is is
 
Hierarchical Network Controller
Hierarchical Network ControllerHierarchical Network Controller
Hierarchical Network Controller
 
Protection
ProtectionProtection
Protection
 
5gc call flow
5gc call flow5gc call flow
5gc call flow
 
Ericsson Lean Carrier
Ericsson Lean CarrierEricsson Lean Carrier
Ericsson Lean Carrier
 
5g architecture, Industrial Training
5g architecture, Industrial Training5g architecture, Industrial Training
5g architecture, Industrial Training
 
Attach flow &amp; srb
Attach flow &amp; srbAttach flow &amp; srb
Attach flow &amp; srb
 
Cisco Live! :: Carrier Ethernet 2.0 :: BRKSPG-2720 | Las Vegas July/2016
Cisco Live! :: Carrier Ethernet 2.0 :: BRKSPG-2720 | Las Vegas July/2016Cisco Live! :: Carrier Ethernet 2.0 :: BRKSPG-2720 | Las Vegas July/2016
Cisco Live! :: Carrier Ethernet 2.0 :: BRKSPG-2720 | Las Vegas July/2016
 
Lte default and dedicated bearer / VoLTE
Lte default and dedicated bearer / VoLTELte default and dedicated bearer / VoLTE
Lte default and dedicated bearer / VoLTE
 
Beginners: Non Terrestrial Networks (NTN)
Beginners: Non Terrestrial Networks (NTN)Beginners: Non Terrestrial Networks (NTN)
Beginners: Non Terrestrial Networks (NTN)
 
Lte air-interface
Lte  air-interfaceLte  air-interface
Lte air-interface
 
SS7 & SIGTRAN
SS7 & SIGTRANSS7 & SIGTRAN
SS7 & SIGTRAN
 

Similar to SIPp Introduction for Load and Performance Testing

اسلاید اول جلسه یازدهم کلاس پایتون برای هکرهای قانونی
اسلاید اول جلسه یازدهم کلاس پایتون برای هکرهای قانونیاسلاید اول جلسه یازدهم کلاس پایتون برای هکرهای قانونی
اسلاید اول جلسه یازدهم کلاس پایتون برای هکرهای قانونیMohammad Reza Kamalifard
 
Introduction to VoIP using SIP
Introduction to VoIP using SIPIntroduction to VoIP using SIP
Introduction to VoIP using SIPKundan Singh
 
05 module managing your network enviornment
05  module managing your network enviornment05  module managing your network enviornment
05 module managing your network enviornmentAsif
 
Cisco CCNA-CCNP IP SLA Configuration
Cisco CCNA-CCNP IP SLA ConfigurationCisco CCNA-CCNP IP SLA Configuration
Cisco CCNA-CCNP IP SLA ConfigurationHamed Moghaddam
 
اسلاید دوم جلسه یازدهم کلاس پایتون برای هکر های قانونی
اسلاید دوم جلسه یازدهم کلاس پایتون برای هکر های قانونیاسلاید دوم جلسه یازدهم کلاس پایتون برای هکر های قانونی
اسلاید دوم جلسه یازدهم کلاس پایتون برای هکر های قانونیMohammad Reza Kamalifard
 
SecZone 2011: Scrubbing SAP clean with SOAP
SecZone 2011: Scrubbing SAP clean with SOAPSecZone 2011: Scrubbing SAP clean with SOAP
SecZone 2011: Scrubbing SAP clean with SOAPChris John Riley
 
OSMC 2014: Monitoring VoIP Systems | Sebastian Damm
OSMC 2014: Monitoring VoIP Systems | Sebastian DammOSMC 2014: Monitoring VoIP Systems | Sebastian Damm
OSMC 2014: Monitoring VoIP Systems | Sebastian DammNETWAYS
 
Monitoring VoIP Systems
Monitoring VoIP SystemsMonitoring VoIP Systems
Monitoring VoIP Systemssipgate
 
Converged office engineering detail
Converged office engineering detailConverged office engineering detail
Converged office engineering detailGeorge Vlismas
 
VoIP - Cisco CME &amp; IP Communicator
VoIP - Cisco CME &amp; IP CommunicatorVoIP - Cisco CME &amp; IP Communicator
VoIP - Cisco CME &amp; IP Communicatorchinmaypadhye1985
 
Performance tweaks and tools for Linux (Joe Damato)
Performance tweaks and tools for Linux (Joe Damato)Performance tweaks and tools for Linux (Joe Damato)
Performance tweaks and tools for Linux (Joe Damato)Ontico
 
Opentalk at Large - StS 2005
Opentalk at Large - StS 2005Opentalk at Large - StS 2005
Opentalk at Large - StS 2005Martin Kobetic
 
Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Masahiro Nagano
 

Similar to SIPp Introduction for Load and Performance Testing (20)

Pycon - Python for ethical hackers
Pycon - Python for ethical hackers Pycon - Python for ethical hackers
Pycon - Python for ethical hackers
 
UDP.yash
UDP.yashUDP.yash
UDP.yash
 
اسلاید اول جلسه یازدهم کلاس پایتون برای هکرهای قانونی
اسلاید اول جلسه یازدهم کلاس پایتون برای هکرهای قانونیاسلاید اول جلسه یازدهم کلاس پایتون برای هکرهای قانونی
اسلاید اول جلسه یازدهم کلاس پایتون برای هکرهای قانونی
 
Introduction to VoIP using SIP
Introduction to VoIP using SIPIntroduction to VoIP using SIP
Introduction to VoIP using SIP
 
05 module managing your network enviornment
05  module managing your network enviornment05  module managing your network enviornment
05 module managing your network enviornment
 
Lab
LabLab
Lab
 
Cisco CCNA-CCNP IP SLA Configuration
Cisco CCNA-CCNP IP SLA ConfigurationCisco CCNA-CCNP IP SLA Configuration
Cisco CCNA-CCNP IP SLA Configuration
 
اسلاید دوم جلسه یازدهم کلاس پایتون برای هکر های قانونی
اسلاید دوم جلسه یازدهم کلاس پایتون برای هکر های قانونیاسلاید دوم جلسه یازدهم کلاس پایتون برای هکر های قانونی
اسلاید دوم جلسه یازدهم کلاس پایتون برای هکر های قانونی
 
Ipsec
IpsecIpsec
Ipsec
 
SecZone 2011: Scrubbing SAP clean with SOAP
SecZone 2011: Scrubbing SAP clean with SOAPSecZone 2011: Scrubbing SAP clean with SOAP
SecZone 2011: Scrubbing SAP clean with SOAP
 
Stu t17 a
Stu t17 aStu t17 a
Stu t17 a
 
OSMC 2014: Monitoring VoIP Systems | Sebastian Damm
OSMC 2014: Monitoring VoIP Systems | Sebastian DammOSMC 2014: Monitoring VoIP Systems | Sebastian Damm
OSMC 2014: Monitoring VoIP Systems | Sebastian Damm
 
Monitoring VoIP Systems
Monitoring VoIP SystemsMonitoring VoIP Systems
Monitoring VoIP Systems
 
(Re)discover your AEM
(Re)discover your AEM(Re)discover your AEM
(Re)discover your AEM
 
Converged office engineering detail
Converged office engineering detailConverged office engineering detail
Converged office engineering detail
 
VoIP - Cisco CME &amp; IP Communicator
VoIP - Cisco CME &amp; IP CommunicatorVoIP - Cisco CME &amp; IP Communicator
VoIP - Cisco CME &amp; IP Communicator
 
Performance tweaks and tools for Linux (Joe Damato)
Performance tweaks and tools for Linux (Joe Damato)Performance tweaks and tools for Linux (Joe Damato)
Performance tweaks and tools for Linux (Joe Damato)
 
Opentalk at Large - StS 2005
Opentalk at Large - StS 2005Opentalk at Large - StS 2005
Opentalk at Large - StS 2005
 
Erlang/OTP in Riak
Erlang/OTP in RiakErlang/OTP in Riak
Erlang/OTP in Riak
 
Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015
 

Recently uploaded

Gas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxGas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxDr.Ibrahim Hassaan
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon AUnboundStockton
 
CELL CYCLE Division Science 8 quarter IV.pptx
CELL CYCLE Division Science 8 quarter IV.pptxCELL CYCLE Division Science 8 quarter IV.pptx
CELL CYCLE Division Science 8 quarter IV.pptxJiesonDelaCerna
 
Blooming Together_ Growing a Community Garden Worksheet.docx
Blooming Together_ Growing a Community Garden Worksheet.docxBlooming Together_ Growing a Community Garden Worksheet.docx
Blooming Together_ Growing a Community Garden Worksheet.docxUnboundStockton
 
Final demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxFinal demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxAvyJaneVismanos
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Educationpboyjonauth
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxmanuelaromero2013
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdfssuser54595a
 
Alper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentAlper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentInMediaRes1
 
Pharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdfPharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdfMahmoud M. Sallam
 
Full Stack Web Development Course for Beginners
Full Stack Web Development Course  for BeginnersFull Stack Web Development Course  for Beginners
Full Stack Web Development Course for BeginnersSabitha Banu
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...JhezDiaz1
 
Meghan Sutherland In Media Res Media Component
Meghan Sutherland In Media Res Media ComponentMeghan Sutherland In Media Res Media Component
Meghan Sutherland In Media Res Media ComponentInMediaRes1
 
DATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersDATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersSabitha Banu
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsanshu789521
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTiammrhaywood
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17Celine George
 

Recently uploaded (20)

Gas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxGas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptx
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon A
 
CELL CYCLE Division Science 8 quarter IV.pptx
CELL CYCLE Division Science 8 quarter IV.pptxCELL CYCLE Division Science 8 quarter IV.pptx
CELL CYCLE Division Science 8 quarter IV.pptx
 
Blooming Together_ Growing a Community Garden Worksheet.docx
Blooming Together_ Growing a Community Garden Worksheet.docxBlooming Together_ Growing a Community Garden Worksheet.docx
Blooming Together_ Growing a Community Garden Worksheet.docx
 
Final demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxFinal demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptx
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Education
 
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptx
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
 
ESSENTIAL of (CS/IT/IS) class 06 (database)
ESSENTIAL of (CS/IT/IS) class 06 (database)ESSENTIAL of (CS/IT/IS) class 06 (database)
ESSENTIAL of (CS/IT/IS) class 06 (database)
 
Alper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentAlper Gobel In Media Res Media Component
Alper Gobel In Media Res Media Component
 
Pharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdfPharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdf
 
Full Stack Web Development Course for Beginners
Full Stack Web Development Course  for BeginnersFull Stack Web Development Course  for Beginners
Full Stack Web Development Course for Beginners
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
 
Meghan Sutherland In Media Res Media Component
Meghan Sutherland In Media Res Media ComponentMeghan Sutherland In Media Res Media Component
Meghan Sutherland In Media Res Media Component
 
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
DATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersDATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginners
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha elections
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17
 

SIPp Introduction for Load and Performance Testing

  • 1. SIPp Introduction Load and Performance Testing Simon Flannery Ericsson Australia
  • 2. Agenda  SIPp Basics  Running SIPp – Statistics and Screens – Command Line Options  Creating Scenarios  Authentication  Examples
  • 3. Getting Started  Low-level knowledge of the SIP protocol and SIP signalling inside IMS  Scenarios files are written using XML  Download from http://sipp.sourceforge.net/  "SIPp is a free Open Source test tool and traffic generator for the SIP protocol " - sipp.sourceforge.net  Used for performance testing and traffic generation for IMT (and can be used for mIMS, but not PoC) Integration & Verification
  • 4. SIPp Features  Support for both IPv4 and IPv6  RTP media support (PCAP)  Call rate distributions – Fixed – Uniform – Exponential  Support Authentication  High Performance and Reliable  Allows Complex Sceneries  Can be controlled remotely (or externally)  Reports Statistics
  • 5. Running SIPp  SIPp has an interactive and real-time command line interface  Quite safe and stable to be left alone, or run in the background (try to always use latest build)  Various statistics and reporting screens are available  Exit codes: – 0 (zero) indicate that all calls were successful – 1 indicates that at least one call failed – 97 indicates an abnormal exit on internal command – 99 indicating a normal exit without processing calls – -1 used to indicate a fatal error
  • 6. The Scenario Screen  Default screen (accessed by pressing 1)
  • 7. The Statistics Screen  Accessed by pressing 2
  • 8. Useful Command Line Options  -sf,loads an alternate scenario file  -inf, loads an external CSV file to inject values from  -r, sets the call rate (calls per second)  -rp, specify the rate period (ms) for the call rate (above) – Example: -r 15 -rp 1000, 15 calls every second  -l, maximum number of simultaneous calls  -m, stop and exit when set number of calls are processed  -i, sets the local IP address  -p, sets the local port number
  • 9. Useful Command Line Options  -auth_uri,forces the domain value of the URI for authentication (for example, 401)  -trace_screen,logs the final screens to file (<scenario>_<pid>_screen.log)  -trace_err, logs unexpected messages to file (<scenario>_<pid>_errors.log)  -trace_stat, logs statistics to file (<scenario>_<pid>.csv)  -fd, logs statistics at set interval (seconds)  -nd, disable SIPp’s default behaviors  Finally, we end all SIPp commands with the remote host (and port), for example the P-CSCF
  • 10. SIPp Supports Authentication  Two authentication algorithms are supported: – Digest / MD5 ("algorithm="MD5"") – Digest / AKA  When receiving: – 401 (Unauthorized) – 407 (Proxy Authentication Required)  Simply add auth="true" in the <recv> command to take the challenge into account  The authorization header will then be re-injected in the next message using [authentication] keyword
  • 11. Creating your own Scenarios  Authored using XML notation <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE scenario SYSTEM "sipp.dtd">  Unfortunately has spaghetti <scenario name="UAC Basic Registration"> flow <label id="0" /> <send retrans="500" start_rtd="true"> – Using labels and jumps <![CDATA[ (next attributes) REGISTER sip:[field1] SIP/2.0 Via: SIP/2.0/[transport] [local_ip]:  Useful elements: [local_port];branch=[branch] From: [field0] <sip: – <send> [field0]@[field1]>;tag=[call_number] To: [field0] <sip:[field0]@[field1]> – <recv> Call-ID: [call_id] CSeq: [cseq] REGISTER – <pause>, speech time Contact: [field0] <sip: [field0]@[local_ip]: – <nop>, no operation [local_port]>;expires=691200 Max-Forwards: 70 – <label> Content-Length: 0 ]]>  Registration scenario walk </send> through with authentication ...to be continued  Always put optional responses first
  • 12. Creating your own Scenarios <recv response="200" rtd="true" next="3" <recv response="400" rtd="true" next="2" optional="true" /> optional="true" /> <recv response="403" rtd="true" next="2" <recv response="403" rtd="true" next="2" optional="true" /> optional="true" /> <recv response="404" rtd="true" next="2" <recv response="404" rtd="true" next="2" optional="true" /> optional="true" /> <recv response="401" rtd="true" next="1" <recv response="200" rtd="true" next="3" auth="true" crlf="true" /> crlf="true" /> <label id="1" /> <label id="2" /> <send retrans="500" start_rtd="true"> <nop> er e <![CDATA[ <action> ends h REGISTER sip:[field1] SIP/2.0 <exec int_cmd="stop_call" /> enario sc ls and Via: SIP/2.0/[transport] [local_ip]: [local_port];branch=[branch] </action> Call fai </nop> From: [field0] <sip: [field0]@[field1]>;tag=[call_number] ends <label id="3" /> enario To: [field0] <sip:[field0]@[field1]> s s f ul <!-- Definition of the response time and sc Call-ID: [call_id] repartition table ll(unit eis ms). re a s uc c CSeq: [cseq] REGISTER C he --> <ResponseTimeRepartition value="30, 50, 80, Contact: [field0] <sip: 100, 150, 200, 300, 400, 500, 600, 700, [field0]@[local_ip]: 1000, 1200, 1400, 1500" /> [local_port]>;expires=691200 [field2] <!-- Definition of the call length Max-Forwards: 70 repartition table (unit is ms). --> Content-Length: 0 <CallLengthRepartition value="30, 50, 80, ]]> 100, 150, 200, 300, 400, 500, 600, 700, 1000, 1200, 1400, 1500" /> </send> </scenario>
  • 13. Creating your own Scenarios Keywords from the Command Line sipp -sf register.xml -inf subscribers_00000_01249.csv -m 1250 -r 200 -rp 1 -l 50000 -t u1 -nd -trace_screen -trace_err -i 192.168.22.81 -p 6041 -auth_uri tcm.imt.se 192.168.22.58:5060 <scenario name="UAC Basic Registration"> <send retrans="500" start_rtd="true"> <![CDATA[ REGISTER sip:[field1] SIP/2.0 Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch] From: [field0] <sip:[field0]@[field1]>;tag=[call_number] To: [field0] <sip:[field0]@[field1]> Call-ID: [call_id] CSeq: [cseq] REGISTER Contact: [field0] <sip:[field0]@[local_ip]:[local_port]>;expires=691200 Max-Forwards: 70 Content-Length: 0 ]]> </send>
  • 14. Creating your own Scenarios Keywords from SIPp Magic cookie (z9hG4bK) + "UDP" or "TCP" call number + message index <scenario name="UAC Basic Registration"> <send retrans="500" start_rtd="true"> Starts from "1" and <![CDATA[ incremented by 1 for each call REGISTER sip:[field1] SIP/2.0 Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch] From: [field0] <sip:[field0]@[field1]>;tag=[call_number] To: [field0] <sip:[field0]@[field1]> Call-ID: [call_id] CSeq: [cseq] REGISTER Contact: [field0] <sip:[field0]@[local_ip]:[local_port]>;expires=691200 Max-Forwards: 70 Content-Length: 0 ]]> </send> Automatically Identifies a call and is generated by generates the CSeq SIPp for each new call (mandatory) number starting at 1
  • 15. Useful SIPp Keywords  [len], Computed length of the SIP body used in "Content-Length" header  [call_number], index of the call starting at 1 and is incremented by 1 for each call  [authentication], is used to include the authentication header  [msg_index], provides the message number in the scenario  [cseq], provides (or generates) the CSeq value of the last (or next) request received
  • 16. Injecting External Values Keywords and values from an external file <scenario name="UAC Basic Registration"> <send retrans="500" start_rtd="true"> <![CDATA[ REGISTER sip:[field1] SIP/2.0 Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch] From: [field0] <sip:[field0]@[field1]>;tag=[call_number] To: [field0] <sip:[field0]@[field1]> Call-ID: [call_id] CSeq: [cseq] REGISTER Contact: [field0] <sip:[field0]@[local_ip]:[local_port]>;expires=691200 Max-Forwards: 70 Content-Length: 0 ]]> </send>
  • 17. Regular Expression Scenario <scenario name="UAC Basic Registration"> <label id="1" /> <label id="0" /> <send retrans="500" start_rtd="true"> <send retrans="500" start_rtd="true"> <![CDATA[ <![CDATA[ REGISTER sip:[field1] SIP/2.0 REGISTER sip:[field1] SIP/2.0 Via: SIP/2.0/[transport] [local_ip]: Via: SIP/2.0/[transport] [local_ip]: [local_port];branch=[branch] [local_port];branch=[branch] From: [field0] <sip: From: [field0] <sip: [field0]@[field1]>;tag=[call_number] [field0]@[field1]>;tag=[call_number] To: [field0] <sip:[field0]@[field1]> To: [field0] <sip:[field0]@[field1]> Call-ID: [call_id] Call-ID: [call_id] CSeq: [cseq] REGISTER CSeq: [cseq] REGISTER Contact: [field0] <sip:[field0]@[local_ip]: Contact: [field0] <sip:[field0]@[local_ip]: [local_port]>;expires=[$1] [local_port]>;expires=60 Max-Forwards: 70 Max-Forwards: 70 Content-Length: 0 Content-Length: 0 ]]> ]]> </send> </send> <recv response="200" rtd="true" next="3" <recv response="200" rtd="true" next="3" crlf="true" /> optional="true" /> <label id="3" /> <!-- Interval Too Brief --> <ResponseTimeRepartition value="30, 50, 80, 100, <recv response="423" rtd="true" next="1" 150, 200, 300, 400, 500, 600, 700, 1000, 1200, crlf="true"> 1400, 1500" /> <action> <ereg regexp="[0-9]+" search_in="hdr" <CallLengthRepartition value="30, 50, 80, 100, header="Min-Expires:" check_it="true" 150, 200, 300, 400, 500, 600, 700, 1000, 1200, assign_to="1" /> 1400, 1500" /> </action> </scenario> </recv>
  • 18.
  • 19. Definition of a call  Successful call: – Navigates a scenario file from start to finish – Does not encounter a “stop_call” (or other) command  Unsuccessful (failed) call: – Encounters a “stop_call”, “stop_now”, “stop_gracefully” or other?
  • 20. Example Time  The scenario: – User 46706560000000 calls user 46706560003000, – User 46706560000001 calls user 46706560003001, – User 46706560000002 calls user 46706560003002 and so on…  Again we will use CSV files to inject who should call who  We assume everyone is provisioned and successfully registered  We will use two scenario files: – A Caller scenario file (to send INVITEs, pauses and BYEs) – A Callee scenario file (to answer the INVITEs and BYEs)
  • 21. The Caller  CSV Injection File The Caller The Callee [field0] [field1] [field2] [field3]
  • 22. The Caller <?xml version="1.0" encoding="ISO-8859-1" ?> <recv response="100" rtd="true" <!DOCTYPE scenario SYSTEM "sipp.dtd"> optional="true" /> <scenario name="UAC Basic Invite"> <recv response="180" rtd="true" optional="true" /> <label id="0" /> <recv response="400" rtd="true" rrs="true" <send retrans="500" start_rtd="true"> next="3" optional="true" /> <![CDATA[ <recv response="401" rtd="true" rrs="true" next="3" optional="true" /> INVITE sip:[field3]@[field1] SIP/2.0 <recv response="403" rtd="true" rrs="true" Via: SIP/2.0/[transport] [local_ip]: next="3" optional="true" /> [local_port];branch=[branch] <recv response="404" rtd="true" rrs="true" From: [field0] <sip: next="3" optional="true" /> [field0]@[field1]>;tag=[call_number]-INV-UAC <recv response="200" rtd="true" rrs="true" To: [field3] <sip:[field3]@[field1]> next="1" /> Call-ID: [call_id] <label id="1" /> CSeq: [cseq] INVITE <send> Contact: [field0] <sip:[field0]@[local_ip]: <![CDATA[ [local_port]> Max-Forwards: 70 ACK [next_url] SIP/2.0 Content-Type: application/sdp [last_Via:] Content-Length: [len] [last_From:] [last_To:] v=0 [last_Call-ID:] o=user1 53655765 2353687637 IN CSeq: [cseq] ACK IP[local_ip_type] [local_ip] Max-Forwards: 70 s=SIPp-UAC Subject: Performance Test c=IN IP[media_ip_type] [media_ip] Content-Length: 0 t=0 0 [routes] m=audio [media_port] RTP/AVP 0 a=rtpmap:0 PCMU/8000 ]]> </send> ]]> </send> <pause milliseconds="60000" next="2" />
  • 23. The Caller Han g r 4xx erro up <label id="2" /> <label id="3" /> <send retrans="500" start_rtd="true"> <nop> <![CDATA[ <action> BYE [next_url] SIP/2.0 <exec int_cmd="stop_call" /> [last_Via:] </action> [last_From:] </nop> [last_To:] [last_Call-ID:] <label id="4" /> CSeq: [cseq] BYE <!-- Definition of the response time repartition Max-Forwards: 70 table (unit is ms). --> Subject: Performance Test <ResponseTimeRepartition value="10, 20, 30, 40, Content-Length: 0 50, 100, 150, 200" /> [routes] <!-- Definition of the call length repartition ]]> table (unit is ms). --> </send> <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000" /> <recv response="400" rtd="true" next="3" optional="true" /> </scenario> <recv response="401" rtd="true" next="3" optional="true" /> <recv response="403" rtd="true" next="3" optional="true" /> <recv response="404" rtd="true" next="3" optional="true" /> <recv response="408" rtd="true" next="3" optional="true" /> <recv response="200" rtd="true" next="4" crlf="true" />
  • 24. The Caller Local port of the UE P-CSCF or ACME Call rate The Scenario Message Counter Actual speech time
  • 25. The Callee  CSV Injection File The Callee [field0] [field1] [field2] No field 3
  • 26. The Callee <?xml version="1.0" encoding="ISO-8859-1" ?> <send retrans="500"> <!DOCTYPE scenario SYSTEM "sipp.dtd"> <![CDATA[ <scenario name="UAS Basic responder"> SIP/2.0 200 OK [last_Via:] <recv request="INVITE" rrs="true" crlf="true" /> [last_From:] [last_To:];tag=[call_number]-INV-UAS <send> [last_Call-ID:] <![CDATA[ [last_CSeq:] [last_Record-Route:] SIP/2.0 180 Ringing Contact: [field0] <sip:[field0]@[local_ip]: [last_Via:] [local_port]> [last_From:] Content-Type: application/sdp [last_To:];tag=[call_number]-INV-UAS Content-Length: [len] [last_Call-ID:] [last_CSeq:] v=0 Contact: [field0] <sip:[field0]@[local_ip]: o=user1 53655765 2353687637 IN [local_port]> IP[local_ip_type] [local_ip] [last_Record-Route:] s=SIPp-UAS Content-Length: 0 c=IN IP[media_ip_type] [media_ip] t=0 0 ]]> m=audio [media_port] RTP/AVP 0 </send> a=rtpmap:0 PCMU/8000 <pause milliseconds="2000" /> ]]> </send> <recv request="ACK" optional="true" crlf="true" />
  • 27. The Callee  The Callee only <recv request="BYE" /> <send> needs to reply to <![CDATA[ SIP/2.0 200 OK SIP messges from [last_Via:] [last_From:] [last_To:] [last_Call-ID:] [last_CSeq:] Contact: [field0] <sip:[field0]@[local_ip]: the Caller [local_port]> Content-Length: 0 ]]>  The Callee has no </send> <!-- Keep call open in case the 200 is lost to logic flow  The Caller has all be able to retransmit it if we receive the BYE again. --> the logic flow <pause milliseconds="4000" /> <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200" /> – Remember all the labels and <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000" /> jumps (next)? </scenario>
  • 28. The Callee If running both the caller and callee on the same computer ensure that they use different ports The Scenario
  • 29. References  SIPp documentation http://sipp.sourceforge.net/doc/reference.html  SIPp in action http://sipp.sourceforge.net/doc/images/sipp-01  Using the Statistics output with Excel http://sipp.sourceforge.net/doc/images/sipp-02

Editor's Notes

  1. Response list must have at least ONE mandatory (not optional=&amp;quot;true&amp;quot;) response code!