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.