(Last Updated On: October 6, 2018)

SIPp is an open source SIP protocol test tool/traffic generator which includes a few basic SipStone user agent scenarios (UAC and UAS). It is able to establish and releases multiple calls with the INVITE and BYE methods. SIPp can also read custom XML scenario files describing from very simple to complex call flows.

Features of SIPp

  • Dynamic display of statistics about running tests (call rate, round trip delay, and message statistics)
  •  Periodic CSV statistics dumps
  • Support for TCP and UDP over multiple sockets or multiplexed with retransmission management
  • Dynamically adjustable call rates
  • Support of IPv6, TLS, SCTP, SIP authentication, conditional scenarios, UDP retransmissions, error robustness (call timeout, protocol defense)
  • Support for call specific variable, Posix regular expression to extract and re-inject any protocol fields, custom actions (log, system command exec, call stop) on message receive
  • Support for field injection from external CSV file to emulate live users.
  • It can send media (RTP) traffic through RTP echo and RTP / pcap replay.
  • Support both audio or video media files
  • tIt can test various real SIP equipment like SIP proxies, B2BUAs, SIP media servers, SIP/x gateways, SIP PBX,

While optimized for traffic, stress and performance testing, SIPp can be used to run one single call and exit, providing a passed/failed verdict. You can easily emulate thousands of user agents calling your SIP system

Install SIPp dependency packages

Install the dependencies needed by SIPp by running the following commands on your terminal.

sudo apt-get install -y pkg-config dh-autoreconf ncurses-dev build-essential libssl-dev libpcap-dev libncurses5-dev libsctp-dev lksctp-tools

Once the download is finished, proceed to download and compile SIPp on your Ubuntu 18.04 / Ubuntu 16.04 server.

Download and install SIPp

We’re going to install SIPp from Github master branch to get the latest release. Ensure git is installed in your system.

sudo apt -y install git

Clone the Project from Github

git clone https://github.com/SIPp/sipp.git

Now build SIPp by using the provided scriptbuild.sh. This will

  • Check out the gtest submodule
  • Generate autotools files
  • Run configure
  • Build and run the test suite
  • Build SIPp

To build SIPp with SSL, PCAP and SCTP support, run:

cd sipp
./build.sh --with-pcap --with-sctp --with-openssl

If the build was successful, you’ll get a sipp binary file in your build directory. Copy this file to the directory/usr/local/bin.

cp sipp /usr/local/bin/

You should now be able to call sipp command from any directory.

General usage

sipp remote_host[:remote_port] [options]

Most important options include:

-sf filename : Load test scenario from a specified file.
-sd : Dumps one of the default scenarios. Usage example: sipp -sd uas > uas.xml.
-inf filename: Inject values from an external CSV file during calls into the scenarios
-sn name : Use a default scenario (embedded in the SIPp executable). UAC scenario is loaded by default if 
           no option is provided.
-r rate :  Set the call rate (in calls per seconds), default value = 10 times per period, default period = 1000 ms.
-rp : Specify the rate period for the call rate.
      Default is 1 second and default unit is milliseconds
-m calls : Stop and exit after specified tests count.
-s service : Set user part of the request URI (default: 'service').
             Replaces [service] tag in XML scenario file.
-ap pass : Set password used for auth challenges (Default is: 'password').
-l limit : Limit simultaneous calls (default: 3 * call_duration (s) * rate).
-recv_timeout : Global receive timeout. Default unit is milliseconds.
                If the expected message is not received, the call times out and is aborted.
-trace_msg : Displays sent and received SIP messages in <scenario file name>_<pid>_messages.log
-trace_err : Trace all unexpected messages in <scenario file name>_<pid>_errors.log.

To view help page and all available options, use:

sipp --help

Examples:

Run SIPp with embedded server (uas) scenario:

sipp -sn uas 

On the same host, run SIPp with embedded client (uac) scenario:

sipp -sn uac 127.0.0.1

Send 10 OPTIONS messages [email protected]

sipp 10.1.1.20 -sf OPTIONS.xml -m 10 -s 100

That’s all. You now have SIPp installed on your Ubuntu 18.04 / Ubuntu 16.04 LTS server. Check out the sipp cheatsheet for usage examples. You can also learn to create your own SIPp Scenarios.