It is chiefly utilized for Load and Performance Testing


SIPp Basics

Running SIPp

Insights and Screens

Summon Line Options

Making Scenarios



Getting Started

Low-level learning of the SIP convention and SIP motioning inside IMS

Situations records are composed utilizing XML

Download from

"SIPp is sans an Open Source test apparatus and movement generator for the SIP convention "


Utilized for execution testing and movement era for IMT (and can be utilized for mIMS, however not PoC) Integration & Verification

SIPp Features

Support for both IPv4 and IPv6

RTP media bolster (PCAP)

Call rate disseminations




Bolster Authentication

Superior and Reliable

Permits Complex Sceneries

Can be controlled remotely (or remotely)

Reports Statistics

Running SIPp

SIPp has an intelligent and ongoing charge line interface

Very protected and stable to be allowed to sit unbothered, or run out of sight (attempt to dependably utilize most recent form)

Different measurements and reporting screens are accessible

Way out codes:

0 (zero) demonstrate that all calls were effective

1 demonstrates that no less than one call fizzled

97 demonstrates an anomalous exit on inward charge

99 demonstrating an ordinary way out without transforming calls

-1 used to demonstrate a deadly blunder

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
-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
  • Unfortunately has spaghetti flow
        Using labels and jumps (next attributes)
  • Useful elements:
        <pause>, speech time
        <nop>, no operation
  • Registration scenario walk through with authentication
  • Always put optional responses first
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">
<scenario name="UAC Basic Registration">
  <label id="0" />
  <send retrans="500" start_rtd="true">
      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

Creating your own Scenarios

Keywords from the Command Line

Keywords from SIPp

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

Regular Expression Scenario

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 Caller

The Caller

The Callee
§  CSV Injection File

The Callee

The Callee

The Callee