|
Home Resources Products
Developers |
Main • HandlingManySimultaneousCalls
Handling many simultaneous callsThe ability of handling a large number of calls is not only a matter of Yate configuration but also of system setup. Hardware devices and VoIP protocols also have specific demands on the system that place different limits on how many simultaneous calls can be handled and how fast can they be established. System resourcesHandling many calls will place a large demand on system resources. Here are some guidelines:
TDM cardsTo handle large number of calls try to use Sangoma cards with the BITSTREAM API as it offers an efficient way to move the data from and to the kernel space. The Zaptel API requires one file handle and one thread per timeslot therefore spending more time in user-to-kernel transitions. Expect to handle in the order of hundreds of call legs with Wanpipe drivers. H.323 specificNOTE!!!! Please if you use Linux to setup ulimit -n 8096. This will setup the number of open files (file handlers) Yate is allowed to use. This is a very demanding VoIP protocol because of its complexity and also some implementation issues. You will need plenty of virtual memory, file handles and threads to handle many calls. Depending on configuration of both endpoints there can be as many as 7 file handles and 5 threads per call leg. It is highly recommended to use the Yate RTP implementation as it gets far better performance than OpenH323's builtin RTP support. Please see this excellent document that describes common H.323 performance issues and specific PWLib and OpenH323 problems and solutions: Expect to handle in the order of hundreds of call legs with H.245 tunneling and Yate's RTP. SIP specificThis protocol allows for the maximum call density supported by Yate. Signalling over UDP sockets is quite efficient. Just for signaling (no RTP) there can be thousands of simultaneous calls. If voice data passes through Yate please see the RTP specific issues. IAX specificThe IAX protocol could potentially deliver the largest number of simultaneous calls but unfortunately is plagued by bad design decisions and typical operating system handling of network sockets. We do not recommend IAX for handling large number of calls because of these design problems. If you still want to use it note that the major bottleneck is that just one socket queue is used by all signaling and voice packets. The kernel performance (in network and scheduling) must be fine tuned to properly handle large number of calls. RTP specificAs it's used by most VoIP protocols for moving around the voice data, RTP configuration is one of the factors that influences most the maximum number of calls. As a rule you will need 2 file handles (1 if RTCP is disabled) and one thread per simultaneous call leg. RTP deals with many small packets. The kernel and network card performance and a high number of CPUs will help handling many simultaneous calls. Since timing of packets arriving on network is not predictable a good kernel scheduler performance is desired. Please use a recent (2.6+) Linux kernel. If RTCP is not required you can disable it - this will save one file handle per call leg and around 5% of the CPU usage of RTP. Secure RTP (SRTP) is a performance killer. Even if encryption is disabled (authentication only) expect around 5 times less call legs on SRTP compared with plain RTP |
3 May 2010: 8 March 2010: 6-7 February 2010: 2 Nov 2009: 6 Aug 2008: 4 Aug 2008: 10 Jul 2008: Feb 2008: 21 Jan 2008: 3 September: 14 August: 16 April: 25 September: 25 September: 11 July 2006: 10 July 2006: June 1st 2006: |