`
javatoyou
  • 浏览: 1016628 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

SIP Stack Research

 
阅读更多

Items to research

  • Licensing
  • Is the license compatible with core Asterisk SCF?
  • Does the license require us to do things we may not want to do?
  • Community
  • Is the community active?
  • Are they continually adding new functionality and fixing bugs?
  • Can we get help from the community easily if need be?
  • Ease of use
  • Can we easily interface with the API?
  • Is it easy to add new things?
  • If we distribute it, is it easy to work into our build system?
  • Feature richness
  • Does it have the features our customers will want?
  • Are new features being developed based on new RFCs?
  • Do they include an SDP parser and generator?
  • Do they implement the SDP offer/answer negotiation for us?
  • Transport: UDP, TCP, TLS, IPv6
  • Platform support
  • Are the platforms supported that we need to be supported?
  • If not, is it easy to support them?
  • Scaling
  • Does the stack scale to the amount we want?
  • Has any performance testing been done on it?
  • Interoperability
  • Are they widely used by many companies?
  • Are there many reports of interop issues?

SIP stacks under consideration

Resiprocate

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.

Sofia-sip

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.

PJSIP

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.


PJSIP vs. reSIProcate

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

  • + PJMEDIA framework for handling media outclasses reSIProcate's tools and is easier to use.
  • + STUN/TURN/ICE support for NAT traversal.
  • + More feature-rich
  • + More active community
  • + Better performance/scalability
  • + We have several contacts with PJSIP experience (Simon Perreault, Adrian Georgescu, Klaus Darillion, Saul Ibarra)
  • - Written in C
  • - Reports of race conditions and deadlocks (See Malcolm's comment with links to mailing list posts), though these problems may have been resolved since the time that the problems were experienced.
  • - More open issue reports than reSIProcate. However, there were no open issues for deadlocks, race conditions, or thread safety issues

reSIProcate

  • + Written in C++
  • + IANAL, but the license seems to be a better fit.
  • + Likely easier to learn than PJSIP (though not by a whole lot)
  • + Used in larger projects by larger companies (e.g. CounterPath's softphones)
  • - reTurn tool has STUN/TURN support but no ICE. Also, reTurn uses a different license from reSIProcate (3-clause BSD license)
<!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"> <rdf:Description rdf:about="https://wiki.asterisk.org/wiki/display/TOP/SIP+Stack+Research" dc:identifier="https://wiki.asterisk.org/wiki/display/TOP/SIP+Stack+Research" dc:title="SIP Stack Research" trackback:ping="https://wiki.asterisk.org/wiki/rpc/trackback/131087" /> </rdf:RDF> --> Labels parameters

分享到:
评论

相关推荐

    sipstack.io:原始sipstack的叉子

    sipstack.io Sipstack.io是一项旨在编写新型的基于JVM的SIP堆栈的计划,该堆栈对操作友好且性能出色。 它带有复杂的配置,应用程序度量标准和操作工具,使您和您的团队可以在最短的时间内构建可用于生产环境的SIP...

    Radvision SIP Stack编程手册中文版

    RADVISION的SIP解决方案由一系列的开发、测试工具组成,使用它们可以设计、开发并测试几乎所有的基于SIP的应用软件。 RADVISION的SIP解决方案符合最新的IETF(注:SIP协议设计组的直属机构)SIP 标准以及一些关键的...

    sipstack-example-0.1.0.zip

    jsch-nio.zip,通过ssh使用jsch和jsch扩展的java 7文件系统实现通过ssh的java nio文件系统实现

    peers-0.1.1_sip_sipstack_

    采用SIP协议栈开发,基于SIP协议的聊天室完整工程程序,包括客户端和服务器端的完整原程序

    【框架】PJSIP - Open Source SIP Stack.zipIOS应用例子源码下载

    【框架】PJSIP - Open Source SIP Stack.zipIOS应用例子源码下载【框架】PJSIP - Open Source SIP Stack.zipIOS应用例子源码下载 1.适合学生学习研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考

    IOS应用源码之【框架】PJSIP - Open Source SIP Stack.rar

    IOS应用源码之【框架】PJSIP - Open Source SIP Stack.rar

    Delphi6/7 SIP-0.6协议栈

    The package in the ZIP file below contains the Delphi source code for a SIP stack.

    java sip 协议栈实现客户端和服务

    -- sip协议栈基于java的源码实例、内含jar包,用Eclipse直接打开运行。 -- 先运行server.java的main方法,再运行client.java的main方法

    jain sip 入门

    jain sip 入门文档jain sip 入门文档jain sip 入门文档jain sip 入门文档jain sip 入门文档jain sip 入门文档jain sip 入门文档jain sip 入门文档

    linux-openfetion-all-2.1.0.tar.gz_sip stack

    飞信 linux版本 openfetion-all-2.1.0.tar.gz

    SIP voip

    SIP stack with SIP proxy

    about sip

    sip 001

    PJProject SIP Stack

    PJLIB is an Open Source, small footprint framework library written in C for making scalable applications. Because of its small footprint, it can be used in embedded applications (we hope so!...

    cppsipstack:C ++ SIP堆栈

    C ++ STL기반SIP堆栈개발 C ++ SIP堆栈기반IP-PBX개발 C ++ SIP堆栈C ++ SIP堆栈기반SIP측정측로프로그램 C ++ SIP堆栈기반SIP테스트로프그램 C ++ SIP堆栈MFC응용로프그램 C ++ SIP堆栈기반Java SIP堆栈개발정보 ...

    Radvision Sip simpleAuthentication

    Radvision Sip Stack协议栈的simpleAuthentication源码

    C语言头文件 STACK

    C语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 ...

    VOIP,SIP视频软件microSIP

    Open source portable SIP softphone for Windows based on PJSIP stack

    Stack Stack的实现

    Stack Stack的实现

Global site tag (gtag.js) - Google Analytics