优异的SIP解决方案:OpenSIPS
1. OpenSIPS简介
OpenSIPS是一个成熟的SIP标准的开源实现;除了提供基本的SIP代理及SIP路由功能外,它还提供了多种应用级的功能。OpenSIPS的核心路由功能非常高效,并能灵活地通过脚本定制各种路由策略。凭借其可扩展、模块化的系统架构,OpenSIPS能够根据需要,灵活地提供语音、视频通信、即时通讯、呈现、鉴权计费等多种功能。
OpenSIPS速度快、效率高、运行稳定,支持负载均衡,能够很好地与其它VoIP系统服务整合在一起(如mediaproxy、Asterisk、FreeSwitch),形成一整套的VoIP系统,可用于企业级、电信级产品构建。
OpenSIPS主要功能如下:
ü SIP注册服务器
ü SIP代理服务器/重定向服务器
ü SIP presence agent
ü SIP B2BUA
ü SIP 即时消息服务器
ü SIP 与SMS双向互联的网关
ü SIP 与XMPP双向互联的网关
ü SIP 负载均衡/任务分发
ü SIP NAT穿透
ü SIP应用服务器
2. OpenSIPS软件结构
OpenSIPS软件结构大体如前图所示,其架构开放灵活,通过加载模块的方式添加多种功能,并且所有功能均可通过脚本方便地控制。
框架的最上层是用于实现sip消息路由逻辑的opensips.cfg脚本配置,在配置文件中,可以使用核心模块(Core)提供的各类参数及函数,也可以使用众多模块(Modules)提供的函数。在左侧,通过相应的数据库适配器,OpenSIPS可使用多种数据库来存取数据。这种模块化结构的好处之一是,可以方便地通过增加功能模块来添加所需要的功能,而不会对原有系统造成影响。
OpenSIPS为了方便管理和配置,特别设计了一种效率相当于C语言的脚本编程语言,用来控制核心信令路由的行为。通过这种方式,系统架构人员可以极为灵活地构建各种路由策略,以及更改信令的早期处理行为。
OpenSIPS提供了一系列的管理维护命令的接口。通过核心和各模块提供的MI管理接口,可以方便的监控整个系统的状态,还能方便地在运行时修改部分参数。另外还可以使用OpenSIPS Control Panel,通过WEB图形界面管理OpenSIPS。
3. 构建VoIP系统
OpenSIPS除了提供SIP服务器基本功能之外,还有一个重要特点。它能够作为多种VoIP服务器的前端,从解决方案层面将多个优秀的开源软件整合到一起,构建一个完整的VoIP系统。
如上图,OpenSIPS作为前端,一方面起到均衡负载、增强安全性的作用,另一方面它能够灵活地将消息和数据路由到后端的不同服务器上,实现一个配置灵活和功能强大的系统。后端的Asterisk可作为PSTN网关,并提供PBX、语音信箱、互动式语音应答、会议电话、呼叫中心、自动电话转接等功能。FreeSwitch可作为媒体服务器,提供IVR、视频会议等功能。结合Media Proxy或RTP Proxy,可提供NAT穿透的功能。通过FreeRadius,提供AAA(验证、授权、计费)和CDR(计费数据记录)功能。
尤其对于媒体服务器的软件,开源世界也提供了很多选择。比如老牌的Asterisk,功能全面的sipXecs以及专注于IVR功能的FreeSwitch等,他们都是非常优秀的开源项目。其中Asterisk功能全面、灵活,但主要面向企业应用,在性能上稍差。但Asterisk提供了完善的PBX功能,可以连接多种不同的电话终端,支持多种主流的IP电话协议和系统接口。FreeSwitch专注于IVR功能,性能、可靠性非常高。近期 FreeSwitch已被sipXecs采用作为其IVR部分功能。sipXecs则是一个功能比较全面的产品,包括IVR、VoiceMail、人工坐席等等,更难得的是SipXecs提供了良好的配置、管理界面,易于使用。
这些媒体服务器软件各有所长,OpenSIPS能让这些长处得到充分的发挥。只要将OpenSIPS作为前端,将多个Asterisk、FreeSwitch、sipXecs挂接在其后,由OpenSIPS实现SIP消息的转发和负载均衡,就可以轻松地实现各种语音业务、视频业务以及规模扩展。
在一台普通PC机上运行的OpenSIPS,能够轻松地胜任每秒数千次呼叫的信令处理;其负载均衡/分发和伸缩性,能够方便地构建集群,从而适应大规模的应用需求。
4. 小结
OpenSIPS是一个成熟的电信级SIP服务平台,可广泛应用于SIP应用的路由分发、负载均衡,容易与其它SIP相关软件对接,易于构建一套完整的VoIP系统。
参考文献:
[1].OpenSIPS: http://www.opensips.org/
[2] FreeSwitch wiki: http://wiki.freeswitch.org/wiki/Main_Page