How to Elastix VoIP stress test
In this small HowTo you will learn how to setup a basic stress-test for your Elastix 1.6 environment. This method uses the hardware and software you want to test in a controlled environment. We discourage stress-testing production machines. As always, use this entirely at your own risk, Sunshine Networks can in no way be held responsible for any damaged caused by using this How-To. Here is a simple diagram of how our test was done. We installed Elastix 1.6 on the server with 192.168.1.49 and this is the server we will be testing. On another server we installed CentOS 5 ( it happens to be another Elastix 1.6 server ) with IP 192.168.1.50 which will act as the client making lots of calls to the server.
Our test setup :
Step 1 : The Server
After you have installed Elastix 1.6 on the server, we’ll need to make some small modifications. Login to the server as root using putty.exe or another SSH program. Then :
Edit /etc/asterisk/sip.conf and put the following at the absolute top :
Edit /etc/asterisk/extensions.conf and put the following at the absolute top :
exten => 3001,1,Answer()
exten => 3001,2,SetMusicOnHold(default)
exten => 3001,3,WaitMusicOnHold(20)
exten => 3001,4,Hangup()
Then reload asterisk :
# asterisk -rx “reload”
That’s all you need to do on the server side ! Easy eh ?
Step 2 : The Client
Login to your client using putty or another SSH client as root user. Then :
Install SIPP and start SIPP in client mode ( this is the what will be throwing SIP traffic at your server )
# yum install libpcap-devel openssl-devel ncurses-devel -y && yum groupinstall “Development Tools” -y
# wget http://sourceforge.net/projects/sipp/files/sipp/3.1/sipp.3.1.src.tar.gz/download
# tar zxvf sipp.3.1.src.tar.gz && cd sipp.svn && make pcapplay_ossl
That’s great ! You’ve compiled Sipp from source, and it’s ready to go.
Run SIPp with these options to tell it to be the client:
# ./sipp -sn uac_pcap -d 10000 -s 3001 192.168.1.49 -l 10 -mp 6000 -r 5 -t un -i 192.168.1.50
Options explained :
-d = Each Call Duration = 10000ms = 10 seconds
-s = We’re calling number 3001 on 192.168.1.49. We created this number by adding the information in Step 1.
-l = Max Amount of simultaneous calls. In this case, we’re having 10 simultaneous calls
-mp = local echo port number.
-i = Sets the local IP address for ‘Contact:’,’Via:’, and ‘From:’ headers. This is needed to send RTP successfully.
-r = Call rate. We’re making 5 new calls per second to the server
-t un = We want it to be realistic and use 1 UDP socket per call , this is what -t un does
That’s all ! You should test using different settings, different codecs, codec translation on the server.