Chinaunix首页 | 论坛 | 博客
  • 博客访问: 556836
  • 博文数量: 99
  • 博客积分: 5015
  • 博客等级: 大校
  • 技术积分: 1209
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-28 23:08
文章存档

2011年(7)

2010年(6)

2009年(86)

我的朋友

分类: LINUX

2010-04-21 22:42:01

随着VoIP和NGN技术的发展,H.323时代即将过渡到SIP时代,在H.323的开源协议栈中,Openh323占统治地位,它把一个复杂而又先进的H.323协议栈展现在普通程序员的眼前,为H.323普及立下了汗马功劳。而然当在SIP时代,则出现了群雄割据的状况,SIP相对于H.323简单,灵活,于是各种协议栈层出不穷,下面将详细对比最具有代表性的5个开源项目:OPAL,VOCAL,sipX,ReSIProcate,oSIP

  OPAL是Open Phone Abstraction Library,是Openh323的下一个版本,它仍然使用了Openh323的体系结构,并在其基础上进行扩展,同时实现了SIP,H.323,但在音频和视频的编码和传输部分有较大改动。OPAL初衷设计是包含任何电话通信协议,所以其底层进行了高度的抽象化,所以也能够很容易的支持MGCP,PSTN和将来会出现的协议。不过由于Openh323的最后一个版本还在开发中,所以原本6月发布的OPAL也被推迟,现有的OPAL还非常不完善,BUG也非常多,不过相信以Openh323的开发班底,一定能让OPAL十分优秀。
  CVS : :pserver:anonymous@cvs.sourceforge.net:/cvsroot/openh323/opal
  Language : C++
  VxWorks port : Yes
  Win32 port : Yes
  Linux port : Yes
  Supports RFC 3261 : Yes
  Supports RFC 2327 : Yes
  Supports RFC 3264 : Yes
  Supports RFC 3263 : No
  Supports RFC 3515 : Yes
  Supports RFC 3262 : No
  Supports RFC 3311 : No
  TCP : Yes
  UDP : Yes
  SIZE :  8MB
  License : MPL
  Document : None
  Samples : UA,GK

  VOCAL是vovida.org开发的SIP系统,VOCAL应该是目前功能最完善,使用者最多的开源SIP协议栈了.它不只包括了协议栈,还包括了h323与sip转换网关,对SIP的各种Server的功能支持也非常完善.不过很可惜,不支持windows平台,而且自从vovida被CISCO收购以后就停止了开发,最后的版本是2003年4月的1.5.0。
  CVS : :pserver:anonymous@cvs.vovida.org:/cvsroot/vocal
  Language : C++
  VxWorks port : No
  Win32 port : Partial
  Linux port : Yes
  Supports RFC 3261 : Partial
  Supports RFC 2327 : Yes
  Supports RFC 3264 :

Supports RFC 3263 :
  Supports RFC 3515 : Yes
  Supports RFC 3262 :
  Supports RFC 3311 :
  TCP : Yes
  UDP : Yes
  SIZE : 6MB
  License: Vovida software licencse
  Document : Few
  Samples : UA,GK,GW

  sipX是一个SIP系统,由SIPFoundry开发。sipX是从reSIProcate分离出来的,sipX除了包括SIP stack外,还包括了sipXphone,sipXproxy,sipXregistry等等...,由它们构成了完整的SIP系统,而且sipx还支持嵌入式系统,各个模块可以按需取舍。不过可惜是几乎没有任何开发文档。
  SVN :
  Language : C++
  VxWorks port : Yes
  Win32 port : Yes
  Linux port : Yes
  Supports RFC 3261 : Yes
  Supports RFC 2327 : Yes
  Supports RFC 3264 : Yes
  Supports RFC 3263 : Yes
  Supports RFC 3515 : Yes
  Supports RFC 3262 : No
  Supports RFC 3311 : No
  TCP : Yes
  UDP : Yes
  SIZE : <4 Mb
  License : LGPL
  Document : None
  Samples : UA,GK,GW

  ReSIProcate同样也是由SIPFoundry开发,ReSIProcate最开始起源于Vocal,由于Vocal开始只支持rfc3254,为了支持最新的rfc3261,ReSIProcate诞生了,但现在,ReSIProcate已经成为一个独立SIP协议栈了,它十分稳定,并且很多商业程序都在使用。
  SVN :
  Language : C++
  VxWorks port : No
  Win32 port : Yes
  Linux port : Yes
  Supports RFC 3261 : Yes
  Supports RFC 2327 : Yes
  Supports RFC 3264 : Yes
  Supports RFC 3263 : Partial

Supports RFC 3515 : Yes
  Supports RFC 3262 : No
  Supports RFC 3311 : No
  TCP : Yes
  UDP : Yes
  SIZE : < 2.5 Mb
  License : Vovida
  Document : Few
  Samples : None

  oSIP的开发开始于2000年7月,第一个版本在2001年5月发布,到现在已经发展到2.0.9了。它采用ANSI C编写,而且结构简单小巧,所以速度特别快,它并不提供高层的SIP会话控制API,它主要提供一些解析SIP/SDP消息的API和事务处理的状态机,oSIP的作者还开发了基于oSIP的UA lib:exosip和proxy server lib:partysip.
  CVS : :ext:anoncvs@savannah.gnu.org:/cvsroot/osip
  Language : C
  VxWorks port : Yes
  Win32 port : Yes
  Linux port : Yes
  Supports RFC 3261 : Yes
  Supports RFC 2327 : Yes
  Supports RFC 3264 : Yes
  Supports RFC 3263 : Yes
  Supports RFC 3515 : No
  Supports RFC 3262 : No
  Supports RFC 3311 : Yes
  TCP : Yes
  UDP : Yes
  SIZE : 400kb
  License : LGPL
  Samples : UA,GK

  综合上述评测,可以看出5种SIP协议栈各有千秋,OPAL有发展潜力,VOCAL比较完善,sipX兼容性好,ReSIProcate教稳定,oSIP小巧而快速。所以要根据应用的不同选择恰当的协议栈进行研究开发。

Open Source SIP stacks compared ? Martin van den Berg, August 2004. Last update: November 2005.I've spend some time looking at open-source SIP stacks. There are more open-source SIP stacks on the netthan described here! I was only looking at those having a LGPL alike license and written in C or C++.The information presented on this page are my personal findings, syntisized from the resp. websites, mailinglists and sources. If you find an error or have comments or additions, please let me know:martinvdberg@gmail.comThe stacks documented in following subsections are: ?OPAL: As a dual stack SIP and OpenH323, OPAL is the successor of OpenH323. ?VOCAL: A stack primary used in servers - has a relationship with Cisco.?SipX: Pingtel its SIP stack, contributed to the SIPfoundry.?reSIProcate: A object oriented SIP library, written in C++. Spin-off of the VOCAL project.?oSIP: An ANSI C library, leaves control to the application.?Sofia-SIP: Promosing new kid on the block. Close to oSIP.OPAL (from is the Open Phone Abstraction Library, and is the successor to OpenH323. There were a couple ofarchitectural issues in OpenH323, especially in the area of the codecs and media channels, that required amajor rewrite. OPAL is designed to be an infrastructure for any protocol, not just H.323. It enables normalizedinterfaces so an application can quickly use a range of "call protocols", be it H.323, SIP, PSTN hardware, PCsound cards, MGCP or whatever proprietary protocol might exist. They all look the same to the application.OPAL and OpenH323 under Mozilla Public License (MPL). A prototype SIP implementation is also included.The long-term goal is to use OPAL instead of openH323 as primary development library. A release withverified working SIP and OpenH323 was planned in mid June 2004. At this point OPAL is in an experimentalphase.OpenH323 is big in footprint and code. A lot of functionality is covered, especially for H.323 but codecs, RTPand SDP are also included. OPAL is planned to better support re-use or removal of sub-components. Thecommunity that uses and supports OpenH323 is large. The mailing list shows a lot of activity but has its focusprimarily at H.323 instead of SIP. The whole project relies on a platform abstraction layer: the PWLIB. This library is ported (and supported)onto many platforms including VxWorks, Linux, Win32 etc... Although the structure of the library is complex, the quality of the code looks good. It is coded in C++ anddepends mainly on class hierarchies. The OPAL library is designed to realize either User Agents (endpoints),proxies (gateways) or registrars, any other than that will result in modifications. VOCAL (from is an open-source VoIP project, hosted en contributed by Vovida.org. Vovida.org is acommunications community site dedicated to providing a forum for open source software used in datacomand telecom environments. Vovida.org is a unit of Cisco.VOCAL is not just a stack; it provides the building blocks for a VoIP system. The focus is mainly on serverssuch as proxy servers, redirect servers, H323-SIP translators etc... Supported platforms are Lunix andSolaris. The SIP stack however is available as a C++ object oriented library. At this moment, the stack is onlypartially RFC3261 compliant. The latest VOCAL version (v.1.5.0) dates from April 2003. Although not up todate, a little bit of documentation is available.Support is available via mailing lists, which is moderated and low volume. Questions like "what features doesthe stack support" are unfortunately blocked. Therefore, not all facts of this stack are known. SipX (from is a family of SIP related projects, hosted by SIPFoundry. SipX is completely separate from reSIProcate(also hosted by the SIPfoundry). Pingtel contributed SipX to the SIPFoundry (Feb 2004). Actually, Pingtelformed the SIPfoundry nonprofit organization to shepherd efforts to create open-source IP telephony,messaging, presence and collaboration software. Pingtel is a commercial company that makes VOIPsoftphones and PBX software. The sipXtacklib is a C++ object oriented SIP stack library, licensed under LGPL. Stable releases areavailable. The SipX stack is small but functional and is being used in commercial products. The stack is also designedto function in an embedded environment. The open source software however, does not include the VxWorksport. Within the SipX family a registrar, proxy and softphone are available that use the sipXtacklib. The totalfootprint size is approx. 4Mb, excluding features can reduce this and stripping libraries like glib. SipX is likely to be more portable than reSIProcate since it doesn't use advanced C++ features. Like otheropen source projects, the libraries looked at (sipXtacklib and sipXportLib) are poorly documented. Helphowever is available via the mail list. ReSIProcate (from 2 years ago, some people got together to write a C++ SIP stack that was supposed to be a cleanslate 3261-based design. This lead to vocal2, hosted within the VOCAL project (but it has never shared anycore design with the VOCAL code-base). One thing led to another and the project left the VOVIDA SCMumbrella and was reborn at using sourceforge's project tools, but independent SCM(CVS). Time passed and PingTel announced their Open Source initiative, inviting other VoIP (and specificallySIP) related projects to participate. The reSIProcate team decided, in favour of visibility to be a part of theSipFoundry - as a separate project under the SipFoundry umbrella. reSIProcate is a high performance, object-oriented, C++ sip stack that is compliant with RFC 3261. Itincludes support for a wide variety of operating systems, including Windows and Linux. It has full support forUDP, TCP, and TLS transports on both IPv4 and IPv6. It also implements the full set of specifications forDNS usage in SIP, including NAPTR and SRV lookups (RFCs: 3263, 2915, 2782) using an asynchronousDNS library (ares). The reSIProcate project (at this time) is really mostly a stack and not a set of applications & stack like someother SIP projects. reSIProcate is currently used in commercial products and is quite stable. reSIProcate issuitable for implementing one of the following SIP applications: ?Phones (e.g. embedded); ?Softphones (any platform);?Gateways;?Proxies;?B2buas, or;?IM / Presence Servers or Clients. Commercial deployments are:?PurpleComm ( ) SipDragon: Proxy, Registrar, Voicemail, Presence Server Windows Softphone ( ) ?Jasomi Networks ( ) PeerPoint * CSP - Italy ( ) IM/Audio/Video UA for Windows Conference Server and h.323 gateway in development ?Computer Talk Technology ( ) Evaluating use of resiprocate for Contact Center product A reSIProcate VxWorks port is not available. It is possible to port the library under the condition that amodern compiler is used that complies with the "ANSI 2000 C++" standard since not all compilers (fully)support the partial specializations and template operations used. E.g. it is reported to be build by gcc-2.95and VC7.0 but cannot be build by VC6.0. The library relies of two other open source initiatives: Ares (DNS resolver) and openssl (TLS). ReSIProcate ispoorly documented but has a relatively active mail list. At first glance, the library does not seem to bedesigned for embedded systems. oSIP (from oSIP project has started in July 2000. The first official and public release was published in May 2001. The oSIP library is at first a free software project. In the context of the third generation network, more andmore telecom operators will use IP technology, the favorite land of Linux. One aspect of this evolution is thatthe future of Linux is highly dependent on the multimedia tools that will be available. oSIP, as a SIPimplementation, will allow building interoperable registrar, user-agent (software phones), and proxy thusgiving more chance to Linux to be part of the next generation telephony products. But oSIP is not only targeted towards PC applications. oSIP is enough flexible and tiny to be used on smallOS with low requirements. From the 0.7.0 release, the thread support is now optional and the design of theapplication is entirely chosen by the end-developer. oSIP will fit embedded systems. oSIP is known to run onthe real time OS VxWorks and other ports should be simple. The oSIP stack is a flat ANSI-C library. Its footprint is less than 400kb for a win32 compile. The oSIP stackdoesn't offer a full-blown SIP solution. Instead it provides a message parser and API only. It has no OSdependencies. Creation of threads, sockets etc... are left to the application. In other words, oSIP doesn'tforce a specific architecture, threading- or socket usage. oSIP, in fact, is made up out of three separate libraries. First, there is the parser, capable of reading andwriting SIP and SDP messages. The second is a transaction/session manager, which provides statemachines. The API of the latter is low-level so a third library is provided that provides a higher-level API buthas a GPL license. Open-source implementations based upon oSIP are: ?linphone - a linux softphone ?partysip - SIP proxy/registrar/redirect server?siproxd - simple linux SIP proxySofia-SIP (from      )The new kid on the block... Sorry, haven't yet sorted this one out* written in ANSI-C (for POSIX systems)* license: LGPL* features: base/RFC3261 SIP stack, SIMPLE, SDP O/A engine, STUN client-library, IPv4/6, UDP/TCP/TLStransports* fairly small memory footprint, can be run on systems with limited resources* comes with extensive suite of unit tests* uses standard autotools build-system (for easy cross-compilation, cntegration with other components)So far we don't have any clients, but collaboration is ongoing with FarSight and Telepathy/IPCF projects:- - In terms of functionality, Sofia-SIP is closer to the oSIP+eXosip combination (we provide a very high-level UAinterface, plus things like a async DNS resolver and a STUN client library), so the footprint is slightly higher(the "adjusted footprint" would be around 400kB, so it's close to osip I guess).Overview of the compared stacks:Sofia-SIP oSIPi.e. libosip(parser andtransactionmanager),excl. eXosipreSIProcate SipXOpalVocalVxWorks portNoYesNoNoYesNoWin32 portComingYesYesYesYesNoLinux portYesYesYesYesYesYesRFC 3261YesYesYesYesYesPartialRFC 2327 (SDP)YesYesYesYesYesYesRFC 3264 (O/A)YesYesYesYesYes?RFC 3263 (SIPDNS)YesTo behandled bytheapplication PartialYesNo?RFC 3515 (REFER) YesYesYesYesYesYesRFC 3262 (100rel) YesNoNoNoNo?RFC 3311(UPDATE)YesYes NoNoNo?TCPYesoSip istransportindependentYesYesYesYesUDPYesoSip istransportindependentYesYesYesYesTLSYesoSip istransportindependentYesNot testedNo?Footprint< 500 kB~400kB< 2.5 Mb< 4MBTBD (Large) (Large?)LicenseLGPLLGPLVovidaLGPLVovidasoftwarelicenseACKYesYesYesBYEYesYesYesCANCELYesYesYesINFOYesYesYesINVITEYesYesYesMESSAGEYesYesYesNOTIFYYesYesYesOPTIONSYesYesYesPRACKYesYesYesPUBLISHYesYesYesREFERYesYesYesREGISTERYesYesYesSUBSCRIBEYesYesYesUPDATEYesYesYe

阅读(4284) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~