一、SIP应用服务开发: 引言

工作已有3个年头了,自己做了一些SIP相关的应用开发和研究,在行业系统检测和互联实施中也遇到过不少问题,于是在这里和大家分享一下心得体会,其中一些技术细节我也没想得很周到,希望大家不吝批评指正。在此,我谈及的SIP应用服务器,是指在RFC 3261及其相关协议的基础上,扩展形成的GB/T 28181标准,该标准主要用于全国视频监控系统的互联。这里,RFC 3261协议是IETF工作组针对SIP协议的官方文档,其中详细描述了SIP消息的格式、内容、会话、过程等元素,对开发SIP协议栈和应用服务有根本的指导意义。ORACLE公司的Oracle Communication Converged Application Server (OCCAS)等就是根据RFC 3261及其相关协议来设计开发的。这点和支持HTTP的协议栈类似。

作为应用层(7层)的SIP协议,设计的初衷是协商,即信息的交换。因此,选用SIP协议来对其他资源进行互联和控制,例如,在GB/T 28181中,使用SIP来控制视音频媒体流的传输(RTP和RTSP)。在GB/T 28181中,SIP协议最大的作用就是通过SDP帮助互联系统交换媒体流收发地址和端口以及在系统间控制媒体流的分发,从而满足全国监控视频的共享和汇聚。此外,SIP协议在该国标中还承担了其他方面的通信任务,但是,实际使用时存在一定的弊端,这在今后的文章中会详细谈到。

总的来说,截止到2014年底,基于SIP协议的GB/T 28181帮助我们完成了全国安防视频的联网工作,效果还不错。因此,我也有些时间分享一下3年来的一些研发心得,和业内的技术人员交流。

在今后的文章中,我将陆续谈及SIP应用服务的设计和开发的一些方面,涉及不同种类的技术和不同层面的问题。主要包括:
1. 基础架构:设计模式、模块组成、伸缩性与扩展性讨论等等,这里面会讲到已实现的架构和技术,供大家参考。
2. 集群构建: 解决高可用和可伸缩的问题,共享状态数据,如何解决定时器问题等等。
3. 负载均衡:HTTP、SIP、媒体流等负载均衡技术
4. 开发技术:Maven、Spring、Hibernate等,根据具体的项目实践讨论。
5. 其他:比较细节的一些技术问题、讨论等等

引文参考
1. IETF RFC 3261
2. GB/T 28181
3. Oracle Communication Converged Application Server (OCCAS) 商业版本SIP服务器
4. Mobicents 开源SIP协议栈
5. Kamoilio 开源SIP协议栈

你可能感兴趣的:(sip)