几种开源SIP协议栈对比

简介: 几种开源SIP协议栈对比随着VoIP和NGN技术的发展,H.323时代即将过渡到SIP时代,在H.323的开源协议栈中,Openh323占统治地位,它把一个复杂而又先进的H.323协议栈展现在普通程序员的眼前,为H.323普及立下了汗马功劳。

几种开源SIP协议栈对比

随着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 : http://scm.sipfoundry.org/viewsvn/
  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 : http://scm.sipfoundry.org/viewsvn/resiprocate/main/sip/
  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小巧而快速。所以要根据应用的不同选择恰当的协议栈进行研究开发。  

目录
相关文章
|
18天前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
45 13
|
3月前
|
缓存 网络协议 Linux
扩展Linux网络栈
扩展Linux网络栈
75 3
|
3月前
|
网络协议 算法 Linux
在Linux中,TCP/IP协议栈的工作原理是什么?
在Linux中,TCP/IP协议栈的工作原理是什么?
|
6月前
|
网络协议 Java 程序员
java网络编程什么是TCP/IP协议栈?
java网络编程什么是TCP/IP协议栈?
57 2
|
存储 网络协议 安全
深入解析TCP/IP协议栈:了解网络通信的核心
深入解析TCP/IP协议栈:了解网络通信的核心
|
网络协议 算法 API
网络编程必备:深入理解TCP/IP协议栈(含posix API实现)(上)
网络编程必备:深入理解TCP/IP协议栈(含posix API实现)
|
存储 网络协议 API
网络编程必备:深入理解TCP/IP协议栈(含posix API实现)(下)
网络编程必备:深入理解TCP/IP协议栈(含posix API实现)
|
网络协议 网络架构
IP协议的相关特性
IP协议的相关特性
|
网络协议 算法 网络架构
计网 - IPv4 协议:路由和寻址的区别是什么?
计网 - IPv4 协议:路由和寻址的区别是什么?
301 0
|
容器
驱动开发:通过应用堆实现多次通信
在前面的文章`《驱动开发:运用MDL映射实现多次通信》`LyShark教大家使用`MDL`的方式灵活的实现了内核态多次输出结构体的效果,但是此种方法并不推荐大家使用原因很简单首先内核空间比较宝贵,其次内核里面不能分配太大且每次传出的结构体最大不能超过`1024`个,而最终这些内存由于无法得到更好的释放从而导致坏堆的产生,这样的程序显然是无法在生产环境中使用的,如下`LyShark`将教大家通过在应用层申请空间来实现同等效果,此类传递方式也是多数ARK反内核工具中最常采用的一种。
189 0