Corporate IP telephony server on dedicated hosting? Why not
Placing individual IT services on hosting providers is not a new idea,
and today I will talk about testing the solution in the header.
The server with the installed IP PBX is located in one of our racks in the Netherlands,
the channel width of the server to the world is 1 Gbit / s.
The office of company N is located in Russia, the channel to the world is 40 Mbit / s.
- We will connect to one of the VoIP providers in Russia (in this case, I used Multifon from the Megafon operator), we will check the quality of communication.
- We will simulate a large number of “real” calls with the sipp utility, we will control the quality.
- Determine the number of losses, and jitter when momoschyu utility iperf .
- Find out the peak value of the number of one-time calls in the context of the used server and the sipp script.
OS, software, hardware
- The hardware component will be provided by the Dell 860 with 4GB of RAM and Soft RAID 1.
- In the role of IP PBX solo Asterisk 11.8.1.
- OS - Debian GNU / Linux 7.4 (wheezy).
As expected, at this stage there was no hint of any problems.
Registered Multifon on Asterisk and created a couple of internal peers.
Then he installed the Linphone softphone, connected to the IP PBX from the company N computer as an internal subscriber, and made several calls.
The sound quality is wonderful, neither my interlocutors noticed any distortion of the voice.
We load the system with “real” calls
Screenshot before start:
top left - loading the server’s network interface,
right - load on the server,
bottom left - Asterisk console,
right - sipp launch command (details below).
The test initiates a company N computer in Russia.
Testing team and its description
./sipp 126.96.36.199 -s 2005 -i 188.8.131.52 -d 120s -l 120 -aa -mi 184.108.40.206 -rtp_echo -nd -r 10 -m 1000 -trace_screen -bg
220.127.116.11— IP адрес сервера IP АТС Asterisk
-s 2005— номер на который будет звонить sipp
-i 18.104.22.168— устанавливает этот IP для заголовков 'Contact:','Via:', и 'From:'
-d 120s— длительность вызова 2 минуты
-aa— автоматически отсылать 200 OK на INFO, UPDATE и NOTIFY сообщения
-mi 22.214.171.124— указываем IP для RTP
-rtp_echo— имитация диалога, отсылаем назад каждый rtp пакет
-nd— отключает стандартное поведение в неожиданных ситуациях(sipp будет прерывать звонки в случае получения неправильных SIP сообщений)
-r 10— 10 звонков в 1 секунду
-m 1000— завершить проверку по совершении 1000 звонков
-trace_screen— сохраняем лог
-bg— sipp будет запущен в фоне
According to the Asterisk dialplan, an audio file from MOH is played for each caller for 2005.
exten => 2005,1,Answer() same => n,Playback(/var/lib/asterisk/moh/reno_project-system) same => n,Hangup(
The test is running.
Let's see what load the used sipp script created.
As you can see in the screenshot, sipp loaded the network at ~ 10Mbps in both directions, the CPU is used at 31%, and LA ~ 1.7.
At the bottom left, we see connected peers - this is a Multifon and a softphone connected via 3G from a smartphone.
All calls completed successfully, the average response time in all calls was within 100 - 150 ms.
During testing, I made a call with Linphone installed on the smartphone, the voice quality has not changed at all, the audibility is wonderful.
Additionally, I periodically connected to the current “dialogs” through ChanSpy for quality control, at this stage there were no problems.
Loss and jitter
Test the channel using the iperf utility.
Check from the IP telephony server to the company computer N.
And now from the computer to the server.
In these tests, the server side of iperf listens on a UDP socket and displays information every 30 seconds.
The client part within 3 minutes sends packets of 172 bytes in size to the UDP server, the speed is set to 10 Mbps.
* 10Mbps is just about 120 calls (G711), for calculation it is convenient to use the Asterisk Bandwidth Calculator
The packet size of 172 bytes is taken based on the dump during sipp testing.
The results are good and speak for themselves:
there is a meager packet loss in the direction of the server -> computer, the jitter in both directions is very small.
Gas to failure. Let's disrupt the server in full
Let’s increase the number of one-time calls to 400.
The network was downloaded to ~ 33 Mbit / s, the CPUs were loaded almost “to the shelf”, LA ~ 9.
But even with such a load, I successfully made a call via 3G from a smartphone (all the same Linphone).
Observing “dialogs” through ChanSpy also did not detect any sound distortion.
Sipp results for 400 calls.
All challenges were again successful.
The average response time in 999 of them fit in 100 - 150 ms, and in the first call in 150 - 200 ms.
Some wheezing, failures and other troubles in audibility, as well as swearing in the Asterisk console, appeared with the number of one-time calls> = 450.
The peak for this server was the value of 501 calls.
As the test showed, hosting can host not only web projects, but also services such as IP PBX.
A redundant Internet channel in the company’s office N will ensure the fault tolerance of the channel to the server,
and properly configured QoS, on the border router, the necessary level of voice quality.
If you find an interesting script for the test, then we are waiting for you in the comments!
Thank you for attention!