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 <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 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.