Everybody these days are big into cloud computing – be it due to cost constraints, hype requirements or simply because you don’t have anything else to do – cloud computing is here to stay and will be with us for the next 10 years at the least. About 2 years ago, GreenfieldTech was involved in the testing and adaptation of Asterisk into the Amazon EC2 cloud infrastructure – since then much has happened. Asterisk based EC2 AMI images had become a norm and you can find dozens if not hundreds of Asterisk installations on Amazon EC2. The one thing that people always ask: “How does a cloud perform? is it measurable?” – well, most of the EC2 measurements were based upon fairly simple applications, so the actual results varied – in addition, due to the nature of the Amazon Cloud, results varied from one cloud region to another, depending on your termination provider, inbound provider, inbound bandwidth, etc. In other words, a definite answer was somewhat hard to give.

Lately, we’ve been involved in a project that involves the creation of a highly versatile IVR system, to cater a total 1200 concurrent calls. Our customer has its own cloud infrastructure, based upon the VMWARE Vsphere tools. No, we are not talking about VMWARE ESXi, we are talking about a full fledged VMWARE ESX infrastructure, including Vcenter, Vmotion, EMC storage systems – the works. Our objective was to devise a simple test routine, to allow a single virtualized Asterisk server to be tested. We’ve devised the following test scenario:

SIPp -> SIP -> Veraz SSW -> 1xE1 ISUP -> Veraz SSW -> SIP -> Asterisk server

The reason for the ISUP connection is simple, we want to experiment with real life traffic environments, not a simulated clean lab that doesn’t take into consideration real life constraints. The SIP call scenario was as following: SIPp will originate a call, upon answer will wait a few seconds, then inject 3 DTMF signals, wait for 23 seconds and then hangup. On the Asterisk side, there were 2 scripts interacting with a database as part of the dialplan. The scripts were used to ascertain the time of day, and which playbacks should be announced. Our SIPp call flow results were as following:

Messages           Retrans Timeout Unexpected-Msg
INVITE ----------> 37959   367     0
100    <---------- 37959   145     0
200    <---------- 37954   259     5
ACK    ----------> 37954   0
Pause [ 4000ms]    37954   0
[ NOP ]
Pause [ 1500ms]    37953   0
[ NOP ]
Pause [ 1500ms]    37951   0
[ NOP ]
Pause [ 23.0s] 37950 0
BYE    ----------> 37936   0
200    <---------- 37739   0       195

We’ve performed our test utilizing a maximum number of 24 concurrent calls, each time with a different generation rate. Our target was to hit the 10 calls per seconds generation rate with now errors – which was met at ease. At that point, we were fairly happy to start experimenting with our set. The Asterisk server allocated was built out of 4 compute cores with 4GB of RAM and 40GB of hard drive. We’ve managed to sustain a long last test of over 17 hours, generating almost 38,000 calls, with a failed ratio of 0.52% – while all failures were exhibited at the 200 OK response of the BYE request – which was more related to the way the Veraz SSW were interconnected. The test that yielded these results was a total of 24 concurrent calls and a rate of 20 calls per second. Going over the 20 calls per second bar started generating error at the 200 OK response for the INVITE. We’re currently attributing that to how the VMWARE ESX server manages its resources for the virtualized hosts, however, by any means – the results are beyond satisfactory. Following below is the SIPp summary page for the 10 calls per second test:

Call-rate(length) Port Total-time Total-calls Remote-host
10.0(0 ms)/1.000s 5060 62331.26 s 37959
0 new calls during 0.250 s period 3 ms scheduler resolution
20 calls (limit 20) Peak was 20 calls, after 2 s
0 Running, 39 Paused, 0 Woken up
86 dead call msg (discarded) 0 out-of-call msg (discarded)
3 open sockets
1138536 Total RTP pckts sent 0.000 last period RTP rate (kB/s)

Start Time             | 2011-09-14   16:03:52:468    1316005432.468750
Last Reset Time        | 2011-09-15   09:22:43:518    1316067763.518750
Current Time           | 2011-09-15   09:22:43:772    1316067763.772750
Counter Name           | Periodic value            | Cumulative value
Elapsed Time           | 00:00:00:254              | 17:18:51:304
Call Rate              |    0.000 cps              |    0.609 cps
Incoming call created  |        0                  |        0
OutGoing call created  |        0                  |    37959
Total Call created     |                           |    37959
Current Call           |       20                  |
Successful call        |        0                  |    37739
Failed call            |        0                  |      199
Call Length            | 00:00:00:000              | 00:00:32:733
---------------------------- Test Terminated --------------------------------