SIP指南

经过对SIP协议和开源协议栈快半年的研究,我现在终于有点入门了。还记得当时刚刚接触这个敬仰已久的东东的时候,那个头大啊,毕竟它的协议族太大了,每个知识点都可以无限延伸,光是鉴权机制就让我花了不少精力。面对我的是大堆大堆的英文协议和代码,看得我是应接不暇啊~~ 还好挺过来了,下面分享下我的经验吧。

首先,推荐几个不错的资源给刚刚接触SIP的朋友们:(1)深圳一位好心的大牛翻译的SIP协议中文版,对于和我一样看英文头晕的人绝对是个好东西啊,网上很多论坛都能下到,找不到的朋友给我发邮件吧,我这资料还是比较全的,呵呵~~;(2)《74 Open Source VoIP Apps》,这个是国外的人总结的,对于选择合适的开源协议栈是很有帮助的,里面对于UA、Proxy、Test toots和RTP stack都按照开发平台进行了分类和介绍,当时就是这个文章给我指了条明路啊;(3)当然遇到模糊的概念的时候,RFC才是王道,可以到IETF的网站去找了(http://www.ietf.org/);(4)强力推荐新力工作室的博客(http://www.i170.com/user/gatekeeper/ArtList/sip/P1/L),上面有大量很赞的文章,去看看绝对有意想不到的惊喜;(5)还有一些开源网站也会对SIP进行很有针对性的介绍,可以花很少的时间去了解一些开发中需要注意的关键点,例如http://www.sipdev.org/wiki/index.php/A_newcomer's_guide_to_SIPhttp://www.iptel.org/sip/intro

此外,还有一个帮助学习SIP很好的方法那就是抓包了(抓包软件例如Sniffer等等,甚多),虽然现在很多协议栈都把组合消息的工作替我们做了,但是阅读SIP消息可以加深对协议的理解,而且可以帮助我们写出兼容性更强的软件,毕竟有些头域在一些协议栈中是不支持的。

对于SIP协议栈的选择我还是着实下了翻苦工,查阅无数开源网站啊!(估计也就10几个吧,呵呵),在UA开发中我因为要考虑往DSP平台的移植,只能选择纯C开发的栈,一开始看大家都推荐osip/exosip,于是也用了很长一段时间,但是现在改用pjsip了,哈哈,不得不要向大家隆重推荐一下了。不是因为osip不好,是因为pjsip太好了(说到这有点激动,毕竟花了快半个月时间找一个适合我自己的开源库还是很值得啊),osip/exosip的体积比较小,很适合做嵌入式开发,也并不像网上有的人说的有很多bug。

pjsip的官网如下(http://www.pjsip.org/)。说说它的几大好处吧!(1)支持太多的平台了,甚至有symbian,牛!(2)代码层次非常清晰,从低级到高级都提供了很方便的接口供开发;(3)提供相当多的测试用例和一个基于pjsip开发的命令行UA程序供开发人员参考;(4)文档相当完善,几乎无所不包,这对于开发者来说是很强大的支持;(5)经过我的大量测试验证它十分稳定(这个似乎不太权威,呵呵)。

对于SIP proxy的开发一开始选择的是openser,这个功能非常强大的库代码也很庞大,基于C开发,加上是在linux上开发的,让我对它望而却步(本人的linux开发很菜)。最终选择了reSIProcate(http://www.resiprocate.org),这个是基于C++开发的库,面向对象的思想还是能减少我们不少的开发工作量。reSIProcate受到了很多商业项目的青睐,比较稳定。repro是reSIProcate项目的SIP proxy,它内置了数据库和Web administrator,这一点是我比较看重的。reSIProcate的网上资料和官方文档都不是很多,还好它的结构还是很清晰的,多多研究代码了。

和我一样在做SIP的弟兄们,大家多多交流了,我的邮箱:Nintendolintao@gmail.com

posted @ 2013-05-15 17:40  Himer  阅读(346)  评论(1编辑  收藏  举报