SIP服务器protocol stack选择之我见

本文探讨了SIP软交换的开发过程,分析了不同开源SIP协议栈的优劣,特别是osip与pjsip的特点,并提出基于pjsip进行开发的初步设想。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      由于工作,需要自己开发一个SIP软交换。严格意义上已不是什么sip proxy、sip registar、sip redirect、B2BUA的哪一个了。其实国内做这个的,大家都差不多是一个server,搞定了注册、路由、认证、计费的功能。

 

      认证、计费、路由这些都是自定义业务,每个项目的需求都不太一样,需要自己基于数据库来做。这部分的代码也比较容易搞定,就是些sql语句罢了。

 

      比较麻烦的是sip本身的一些处理,如SIP消息解析、事务状态机、会话管理等,严格参照RFC3261来实现不太可取,工作量太大。

 

      在当下开源项目这么多的情况下,选择一个开源的协议栈作为开发的基础,应该是个不错的选择。未来降低复杂性,优先选择仅支持SIP的协议栈,方便对代码的掌握。

 

      当下比较纯粹的sip协议栈,当属osip。但osip本身看上去效率不高是事实,代码看上去非常的简单,虽然没有什么文档支持,但很容易看懂。估计实际用起来会有不少地方需要优化的,搞到最后和自己写一个也差不多了。

 

      根据我个人开发softphone的经验,发现pjsip非常不错。系统设计优良、效率很高,对标准的支持也很完善。根据2年来的跟踪情况看,社区开发也一直都很活跃,但由于系统的结构化做的非常好,主设计一直都很稳定。而且pjsip社区一直都注重文档工作,相关文档和代码里的注释也是非常的多。

 

      个人倾向基于pjsip里的sip协议部分来开发sip软交换,不过在开发softphone的过程中发现,pjsip从头到尾都是为softphone而设计。担心作为服务器的协议栈,会有意想不到的限制。已经发现代码里有很多XX_MAX宏定义,定义了诸如最大transaction、最大dialog等。

 

      借csdn在此发文,寄望于我辈同道中人,能有幸一起讨论分析。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值