Install SIPp testing tool on Ubuntu 22.04|20.04|18.04|16.04

Posted on 10 views

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 update
sudo apt install -y pkg-config dh-autoreconf ncurses-dev build-essential libssl-dev libpcap-dev libncurses5-dev libsctp-dev lksctp-tools cmake

Once the download is finished, proceed to download and compile SIPp on your Ubuntu 22.04|20.04|18.04|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
cmake . -DUSE_SSL=1 -DUSE_SCTP=1 -DUSE_PCAP=1 -DUSE_GSL=1
make all

Sample output:

[email protected]:~/sipp# cmake .
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++

-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for endian.h
-- Looking for endian.h - found
-- Looking for sys/endian.h
-- Looking for sys/endian.h - not found
-- Looking for sys/epoll.h
-- Looking for sys/epoll.h - found
-- Performing Test HAVE_UDP_UH_PREFIX
-- Performing Test HAVE_UDP_UH_PREFIX - Success
-- Looking for le16toh
-- Looking for le16toh - found
-- Looking for le16toh
-- Looking for le16toh - not found
-- Found Git: /usr/bin/git (found version "2.25.1")
-- Checking for one of the modules 'ncursesw;cursesw;ncurses;curses'
-- Checking for one of the modules 'tinfo'
-- Configuring done
-- Generating done
-- Build files have been written to: /root/sipp

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.

$ sudo make install
[  0%] Built target version
[100%] Built target sipp
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/bin/sipp
-- Set runtime path of "/usr/local/bin/sipp" to ""

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

$ sipp -v

 SIPp -TLS-SCTP-PCAP.

 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License as
 published by the Free Software Foundation; either version 2 of
 the License, or (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public
 License along with this program; if not, write to the
 Free Software Foundation, Inc.,
 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA

 Author: see source files.

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 __messages.log
-trace_err : Trace all unexpected messages in __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 22.04|20.04|18.04|16.04 server. Check out the sipp cheatsheet for usage examples. You can also learn to create your own SIPp Scenarios.

coffee

Gravatar Image
A systems engineer with excellent skills in systems administration, cloud computing, systems deployment, virtualization, containers, and a certified ethical hacker.