SIP swiss army knife
sipsak is a small command line tool for developers and administrators of Session Initiation Protocol (SIP) applications. It can be used for some simple tests on SIP applications and devices.
- sends OPTIONS request
- sends text files (which should contain SIP requests)
- traceroute (see section 11 in RFC3261)
- user location test
- flooding test
- random character trashed test
- interpret and react on response
- authentication with qop supported (MD5 and SHA1)
- short notation supported for receiving (not for sending)
- unlimited string replacements in files and requests
- add any header to the requests
- can simulate calls in usrloc mode
- uses symmetric signaling and thus should work behind NAT
- can upload any given contact to a registrar
- send messages to any SIP destination
- Nagios compliant return codes
- search for strings in reply with regluar expression
- use multiple processes to create more server load
- read SIP message from STDIN (e.g. from a pipe '|')
- supports DNS SRV through c-ares or libruli
- supports UDP and TCP transport
For more details read the man page.
(Note: the online man-page matches only the options available in the latest release but not with new features which may be available in the CVS.)
Here are some screenshots (720 KB).
There is mailing list for discussing everything which is related to sipsak.
Please use the webinterface to subscribe to it or browse through the archive.
- Linux -
Should work on all modern Linux distribution.
- Gentoo Linux has sipsak since version 0.8.6 in its portage tree (see Install for details).
- Debian GNU/Linux has sipsak 0.8.11 binaries in stable (3.1 aka "sarge"). For all versions and Debian GNU/Hurd see Debian's package page.
- BSD -
FreeBSD and NetBSD should work fine since version 0.7.6.
Note: 0.8.6 is broken on FreeBSD but the CVS version is allready fixed.
If i interpret this right their is also an OpenBSD port available.
- Mac OS X - compiles and runs fine on Panther (10.3) and Tiger (10.4).
- Solaris -
the latest verions of sipsak should compile and run fine on Solaris if you have installed the GNU utilities.
- Windows -
To run sipsak under Windows you need ether the cygwin1.dll and the executable or have to install CygWin (which is always a good choise ;). Further the name resolving over DNS have to be activated. Otherwise the determination of the hostname (necessary for the Via and Contact header for example) returns only the Windows name which may not be routeable.
- You can just download the precompiled executable and the cygwin1.dll from our ftp server here. If you place the DLL in your Windows System directory, the sipsak executable should be runnable from every location at the Windows command line prompt. The source of the cygwin1.dll can be obtained from the CygWin homepage.
- If you want to build sipsak under CygWin on your own you have to install CygWin and the gcc from the CygWin setup.
Download the latest tarball (version 0.9.6) from here.
Download an old Windows/CygWin executable from here.
For the latest version use the anonymous Subversion at the development page.
Attention: I switched from CVS to Subversion. The code in the CVS will not be maintained any more!
If you are interested in the latest code please use the following command:
'svn checkout svn://svn.berlios.de/sipsak/trunk'
If you are intested in older releases look at the release download section.
You can download the CTD example script down at the example section.
Gentoo Linux
- Just tpye 'ACCEPT_KEYWORDS="~x86" emerge sipsak' to download, compile and install the latest available sipsak version.
- If you just use 'emerge sipsak' you will get an older version (e.g. 0.8.6).
Debian GNU/Linux
- Just type 'apt-get sipsak' to download and install the sipsak binaries. For older versions then 3.1 please follow the 'All others' section.
BSD's
- As far as I know there are ports available for some of the BSD's, but I dont verify that regularly.
All others
- Untar the downloaded tarball with 'tar xvzf sipsak-x.x.x.tar.gz'
- Change into the new sipsak-x.x.x directory 'cd sipsak-x.x.x'
- Run the configure script from the current directory './configure'.
Note: there are two configure options (--enable-retrys and --enable-timeouts) to change the number of retrys and the maximum timeout value for waiting on responses.
- Compile the source with 'make' to get a sipsak executable
Note: on some systems (e.g. BSD's) you have to call 'gmake' instead of 'make'.
- An optional 'make install' will install the sipsak binary and the man page (by default in /usr/bin and /usr/share/man/man1).
The only real documentation for now is the man page here online or within the tarball. If that is not enough then you are unfortunately left with the help message and source code.
Waclaw Sierek contributed this CTD perl script, which uses sipsak to call a UA and transfer it immediately to another target. It could be used for click to dial implementations.
Usage examples
Send an OPTIONS request to nobody@foo.bar and display received replies:
sipsak -vv -s sip:nobody@foo.bar
Trace the SIP path to nobody@foo.bar:
sipsak -T -s sip:nobody@foo.bar
Insert a forwarding contact for myself at work to me at home for one hour and authenticated with password if required:
sipsak -U -C sip:me@home -x 3600 -a password -s sip:myself@company
Query the currently registered bindings for myself at work and authenticate with password if required:
sipsak -I -C empty -a password -s sip:myself@work
Send the instant message "Lunch time!" to the colleague and show result:
sipsak -M -v -s sip:colleaue@work -B "Lunch time!"
- The hostname is used in the Via line, which is not correct in all cases (e.g. if the loopback interface is used, or if the host has several interfaces). The rport parameter should fix problmes with the incorrect hostname, but for backward compatibility whith implementations which do not support rport this should be fixed.
- The DNS responses are not parsed compeltly which can result in strange output during hostname detection.
- IPv6 is not supported as transport protocol.
- Missing support for strict routing.
- Not fully RFC3261 compatible.
- Some smaller problems are listed in the TODO file.
Note: this all on the To-Do list (see below) and any help is appreciated :-)
To-Do
See the TODO file from the CVS
The copyright from 2002 up to 2004 belongs to the Frauenhofer Gesellschaft Fokus.
The copyright for the code up from 2004 belongs to Nils Ohlmeier.
License
sipsak is distributed under the GNU General Public License (GPL).
Thanks
to
- Jiri Kuthan for initial version, lots of bug reports, feature requests,...
- Jan Janak for feature request for the USRLOC mode and for the multiple process extension
- Juha Heinanen for countless bug reports
- Waclaw Sierek for submitting several patches and the ctd script
For bug reports and feature requests look at the development page or contact the author directly per mail.
Here are some links to other SIP test tools if sipsak does not fit your requirements:
- SIPp an open source SIP traffic generator sponsored by HP
- SFTF a testing framework which implements tests for the common known pitfalls in RFC3261 sponsored by the SIP Forum
If you know more non-comercial SIP test tools which should be mentioned here, please send a mail with the link.
Not really test tools but still very helpfull for debuging SIP problems are the following network sniffing tools:
- Ethereal is a very nice graphical network sniffer with cool graphical VoIP call flows and SIP statistics
- Ngrep is a nice command line sniffer which allows you to pick only the traffic which matches only certain search criterias
Links to pages which contain several links to SIP test tools:
Dont try this on your SIP devices ;-) :

Click to enlarge.
A restaurant called 'Sip Sak' in New York.
According to a nice explanation from Soner Tari (thanks for that) "şip şak" (pronounced "ship shak") means something like quick, fast, immediately. Which is also not a bad descriptive name for this program I think :-)
The project is hosted by:
Page powered by: