URL: http://www.resiprocate.org/
License: ~jcolp:The Vovida Software License, Version 1.0
Language: C++
Resiprocate is used in many commercial products, such as X-Lite/Eyebeam/Bria/Whatever it may be called these days from our friends at Counterpath. Interoperability with other SIP stacks is quite good. The community is fairly active and new development continues. The stack is fairly full featured supporting a wide range of current RFCs for the things that companies actually care about. Using the higher level DUM API it appears to be relatively simple to create a user agent using resiprocate. Based on my research the stack can handle well over 1000 transactions per second, but this was against an older version so it may have been improved even more in later ones. The area that seems to be a potential problem is that the transport layer for TCP and TLS isn't implemented as best as it could be causing performance in that area to be less. How much less I can't be sure without proper testing between UDP and TCP/TLS. The stack is supported on all of the operating systems we wish to target and should also work on the ones we aren't directly targeting (such as FreeBSD). An implementation for an SDP parser and generator is provided. A build system using GNU Makefiles is provided, along with Visual Studio project files.
URL: http://sofia-sip.sourceforge.net/
License: LGPL
Language: C
Sofia-sip was originally created by Nokia and continues to be primarily developed by them. Community members also submit patches for inclusion. Interoperability seems to be quite good. The community is as active as resiprocate based on reading the mailing list. A single API, nua, is provided for writing user agents. It requires more knowledge of SIP then the resiprocate DUM API and could present a larger barrier of entry for community developers. The stack contains a substantial number of features, but not as substantial as resiprocate. A document is provided which details how to write a basic user agent and the general architecture of how things work. The information I have found for scaling puts sofia SIP on par with resiprocate, with potentially less transactions per second. The stack is supported on most current operating systems. An implementation for an SDP parser and generator is provided. A build system using autotools is provided, along with a Visual Studio project file.
URL: http://pjsip.org/
License: Dual (GPL and "alternate") Details at http://www.pjsip.org/licensing.htm/
Lnaguage: C
PJSIP is maintained by Teluu. The community and development are active. The latest PJSIP release was in May of this year. PJSIP provides several separate APIs. Amongst these are PJSIP (handles SIP signaling, transactions, transport, SDP negotiation, and event subscription), PJMEDIA (support for a variety of codecs, CNG, VAD, PLC, manipulation, etc.) and PJNATH (NAT traversal helper with STUN/TURN/ICE support). We can use any or all of these. The APIs are very well documented, both in the source and as separate guides. As far as scaling goes, see this link. According to their graphs, they were able to handle as high as 2500 cps on an FC5 box, though numbers on other platforms topped out at an average of 2000 cps. Keep in mind that these tests were performed four years ago, so newer versions of PJSIP may perform better or worse than the version used for these benchmarking tests. As far as features go, PJSIP is very feature rich, implementing all major features I would expect from a SIP stack. PJSIP runs on Linux, Windows, all *BSD variants, RTEMS, Android, and iPhone and iPad. Makefiles are provided, along with Visual Studio project files.
Based on discussion, the decision seems to be between PJSIP and reSIProcate for our SIP stack. Neither stack is perfect, but here are some pros and cons of the two:
PJSIP
reSIProcate