Wiki -VoIP Topics

VoIP tester


The VoIP stresstest application can be used to test your VoIP server by generating high traffic/high load/malicious packets.
Your VoIP server should survive all these kind of usage (no crash, no or graceful quality degradation), because you will meet the same in reality while in production under various conditions such as when you get a DoS attack which is very common against servers on the public internet.
With the help of this app you can also determine the performance of your VoIP server and perform various optimizations and fine-tuning.


Set your VoIP server address correctly (SIP Server IP and Port settings).
If you are using multiple instances on the same PC, make sure to set the Local Signaling Port differently for each instance.
Set your preferences on the "General" section.
Set the amount of calls/ASR/ACD characteristics on the "Call Generate" / "Call termination" section.
The tester tool can be used in numerous ways.

Set your SIP server:
Make sure to accept the calls coming from the tester tool while in "generate calls" mode. Accept calls either by IP authentication (by accepting calls from the IP of the PC where you are running the tester tool) or by username/password digest authentication (set correct username/password).
If you also use the tester to terminate the calls, then set your VoIP servers to route the calls to testers running in "terminate calls" mode.
On the server you can identify the tester endpoints by address (ip:port) or after the sip username you set in the tester tool.

Generate calls:
Send calls to your SIP server.
Set call amount and characteristics on the "Call generate" section the click on the "Start" button to begin.

Call termination:
Select the "Terminate call" mode and click on "Start" to begin listening for incoming calls. The tester will answer and keep the calls based on the "Call termination" setting you have set.
You can start the call generate and call terminate module on the same PC or different PC's for better performance. When started on the same PC, make sure to set a different local port.

Calling known destinations:
For example if your server has a built-in IVR, just launch the VoIP tester in "Call generate" mode and set the IVR access number for the called prefix and set the called num length to 0 (bot the min and max).
Click on the start button and the tester will start to call your IVR

Calls between testers:
Useful if your server don't have a built-in IVR or you don't want to use outbound routes to terminate the calls.
In this case you can use the tester for both call generate and termination.
Make sure to setup your server to accept all calls from the call generate module and route it to the call termination module.

Testing with more than 1000 simultaneous calls:
You might wish to start multiple instances in this case, for example max 1000 simultaneous call per instances. Just make sure to set a different local port for the instances.
(The test tool is portable. You can clone the program files to multiple locations, each with its own settings to avoid reconfiguration at every startup)

DoS attack:
Use this mode to generate a big amount of SIP request against your VoIP server.

To make an usual call (like from any other softphone):
Check the "enable audio".
The dropdown list near enable audio must be empty


The default settings are ok for basic testing. You have to change only a few values after your needs.

Trace Level:
Meaningful values are from 0 (min loglevel) to 6 (max log level)
The logs are written to a logfile.

Display trace level:
How much details will be displayed on the application log section. Must be a value lower then "trace level".

Codec preference:
For stress tests you should use PCMU or PCMA (otherwise the test pc's will have to big load)

Sent and received media are stored in the "recorded" directory. You can decode them with the attached helper application (Converter.exe)
2 different file can be generated for one call. One for send and one for receive. You mix this 2 file to a single file with the converter application.

Converter.exe input parameters:
1. input file1
2. input file2 or "x" if no second file
3. output file name (can be empty)

Example 1:
Converter.exe "2222_2009_08_19_1195463507_de.pu" "2222_2009_08_19_1195463507_en.pu" "out.wav"

Example 2:
Converter.exe "2222_2009_08_19_1195463507_de.pu" x  out.wav

Example 3:
Converter.exe "2222_2009_08_19_1195463507_de.pu"

Audio settings:
If you uncheck the "Enable Audio" checkbox, then no rtp will be sent (but rtp will be still accepted)
The drop down list near the "enable audio" checkbox can have the following values:
-empty: in this case the audio cards will be used (not suitable for testing with multiple calls)
-Fake: random payload will be sent: the best option for stress testing
-file name: will playback the selected file

Send presence
Enable/disable presence (SUBSCIEBE/NOTIFY, PUBLISH)

On the network and authentication section the most important settings are the server ip and port.

If you would like to have username/password based authentication on your server, then you should set the username and password field correctly.
The username are also used as an A number for the outgoing calls.

QoS settings:
Enter any value between 1 and 63 or leave it empty (empty means critical priority + low delay for media and no qos for signaling)

Call generate settings:
All call count:
Total number of generated calls.

Max simultaneous calls:
max number of calls in the same time

New call start interval:
how fast new calls are generated (random between min and max)

Call duration:
Call duration will have a random value between min max.

Call prefix:
Outgoing called (B) number prefix or full number

Call num length:
the software will generate random digits after the "call prefix" digits.

For example if you need a fix called number as "11111" then you have to put "11111" in the call prefix and set the called number length to 5 (both min and max)

For call termination settings all values are generated randomly between the min-max values specified.
Ring time means after how much second the module will pick up the call.
Speech length: after how much second the module will disconnect the call
ASR: if not 100 then will randomly drop some calls to match the desired ASR value.

Average call duration and ASR are influenced by both the call generate and termination module.

Factors that have big impact on performance are:
-max simultaneous calls
-new call start interval
-codec (will affect only the clients -not affecting the server, so no reason to use g729 or g723 for tests)
-audio enabled/disabled  
-audio type: rec-playback device/fake/from file  (will affect only the clients -not affecting the server, so no reason to use other than "Fake")

For stress testing the recommended settings are:
-uncheck recording
-check enable audio end select "Fake"
-adjust the "max simultan calls" and the "new call start interval" after your needs.
-during the test you can make a manual call (from a different softphone or ipphone) to check how is the call quality under high server load.

Test results

The most important statistics are displayed on the user interface.
For more details you can check the logfile. After every connected calls there are detailed statistics (if the loglevel is at least 3).
rtp statistics:
  session duration: 30 sec
  all packets: 341
  codec: G729
  average payload size: 20 bytes/packet (20 msec)
  average payload size (raw): 320 bytes/packet (20 msec)
  normal packets: 308 (99%)
  not processed packets: 0 (0%)
  lost packets from peer: 3 (1%)
  packet loss count: 1, average packet loss count: 32
  recovered packets: 0 (0%), resending: 0, resentout: 0
  out of order packets: 0 (0%), duplicated: 0 (0%)
  marked: 0 (0%), real: 0 (0%), silence: 0 (0%), dtmf: 0 (0%)
  ssrc change count: 0 (0%)
  used jitter size: 127 msec, min/start/max: 10/127/300
  soft buffer count: 39
  average driver quee length: 24 (491 msec)
  roundtrip delay: unknown
  prebuffering count: 0 (real: 0), packets: 6 (1%), emtyswjittercount: 0
  replay count: 0 (0%), from hardware: 0 (0%), max repl: 1
  dropp count: 32 (9%)
  pckt arrivals: 5:38,10:5,20:181,30:15,40:83,60:0,80:0,110:0,160:0,220:0,300:0,500:1,900:0

To measure network rtp delay:
-set fake audio for the  call generate module
-disable audio on the call termination module

During high load tests you can make a manual call (from a different softphone or ipphone) to check how is the call quality under high server load.
Watch your VoIP server load and behavior during the tests.

The demo version has 10 simultaneous call limit.



VoIP Stresstest Presentation

VoIP tester Download