北京网站建设搜q.479185700,定制营销型网站公司,asp学校网站系统,济南百度1、引入
随着通信IP化的发展#xff0c;IP传输的高带宽、低成本等优势使得越来越多的企业、电信运营商加快建设基于IP的各种通信应用。在通信协议IP化发展中#xff0c;SIP协 议毫无争议地成为各大电信运营商构建其未来网络的基础协议#xff0c;越来越多的SIP软件产品也不…1、引入
随着通信IP化的发展IP传输的高带宽、低成本等优势使得越来越多的企业、电信运营商加快建设基于IP的各种通信应用。在通信协议IP化发展中SIP协 议毫无争议地成为各大电信运营商构建其未来网络的基础协议越来越多的SIP软件产品也不断出现在行业应用中。SIP协 议的标准化同时也造就了一大批优秀的开源软件产品包括Asterisk、SipXecs、FreeSWITCH、OpenSIPS等SIP服务端软 件也包括X-lite、LinPhone、eyeBeam等SIP客户端软件。本文介绍了国外成熟的SIPServer开源项目OpenSIPS并结 合其它通信方面的开源项目对其应用情况进行了一些介绍。
2、OpenSIPS介绍
OpenSIPS是一个成熟的开源SIP服务器除了提供基本的SIP代理及SIP路由功能外还提供了一些应用级的功能。OpenSIPS的结构非常 灵活其核心路由功能完全通过脚本来实现可灵活定制各种路由策略可灵活应用于语音、视频通信、IM以 及Presence等多种应用。同时OpenSIPS性能上是目前最快的SIP服务器之一可用于电信级产品构建。
2.1、功能特点
凭借其可扩展、模块化的系统架构OpenSIPS提供了一个高度灵活的、用户可配置的路由引擎可以为voice、video、IM和 presence等服务提供强大高效的路由、鉴权、NAT、网关协议转化等功能。由于其稳定高效等特点OpenSIPS已经被诸多电信运营商应用在自己的网络体系中。其 主要功能如下
SIP注册服务器/代理服务器lcr、dynamic routing、dialplan/重定向服务器 SIP presence agent SIP B2BUA SIP IM Server SIP to SMS/XMPP网关 SIP to XMPP网关 SIP 负载均衡 SIP NAT traversal
2.2、基本应用配置
OpenSIPS不但提供了丰富的功能还具有操作简单的特点。所有OpenSIPS的应用功能都可以通过一个配置文件opensips.cfg来 实现的。该配置文件主要分为三个部分第一部分主要是全局变量的设置第二部分主要是加载模块并设置模块的相应参数第三部分主要是路由的策略和功能应 用。为了更清晰的呈现opensips.cfg配置文件带来的强大功能接下来对这三个部分以简单的示例进一步说明。
第一部分全局变量的设置通过一条语句就能指定用于侦听接收sip消息的端口和传输层协议。 第二部分负责模块的加载和参数配置。以之前的OpenSIPS的负载均衡功能配置为例需要加载load_balancer模块并进行配置。 第三部分是sip消息的路由和功能应用。还是以OpenSIPS的负载均衡功能为例。 从以上应用示例可以看到通过在opensips.cfg中进行简单的配置就能实现强大的功能。
2.3、系统结构
OpenSIPS的架构开放灵活其核心功能控制均可通过脚本控制实现各个功能也通过模块加载的方式来构建。采用lex和yacc工具构建的配置 文件分析器是其架构设计中的重要部分之一。通过这个分析器opensips设计了自己的语法规则使得我们可以适合SIP规 范的语言来进行配置文件中的脚本编写从而达到简化程序以及方便代码阅读的目的。同时这样的设计也使opensips.cfg配置文件的执行速度达到了C 语言的级别。其体系结构大体如下图 框架的最上层是用于实现sip消息路由逻辑的opensips.cfg脚本配置在配置文件中可以使用Core提供的Parameter和 Function也可以使用众多Modules提供的Function。比如在之前的负载均衡示例中is_method(“INVITE”)就属于 textops模块提供的功能src_ip和src_port都属于Core提供的参数。下层提供了网络传输、sip消息解析等基本功能。在左侧通过相应的数据库适配器可是使用多种数据库存取数据。在这样的 体系结构下我们就可以方便地通过增加功能module来添加我们需要的功能而不会对原有系统造成影响。
除了以上所述的OpenSIPS的优点OpenSIPS还提供了一系列的管理维护命令的接口。我们可以通过Core和Module提供的MI管理 接口方便的监控系统以及模块的状态。比如通过Core的fifo ps命令可以获取当前进程的状态通过Core的fifo get_statistics命令可以获得当前共享内存以及各进程私有内存的使用情况等等。通过MI管理接口我们还可以方便地在运行时修改部分参数 比如对于load_balancer模块我们可以通过fifo lb_reload命令更新目标组的配置信息可以通过fifo lb_status命令激活或关闭某个目标这些命令在实际应用中都非常实用。如果希望通过WEB图形界面管理OpenSIPSOpenSIPS社区还 提供了OpenSIPS Control Panel 4.0产品。
3、与其它开源项目共同搭建VOIP服务
OpenSIPS提供了以上那么多的功能那OpenSIPS是不是已经实现了PBX的功能了不是OpenSIPS并不具备一个媒体服务器(Media Server)的功能。媒体服务器主要提供了类似VoiceMail、呼叫中语音交换、会议服务、视频服务等一系列和语音、视频相关的服务而 OpenSIPS的主要功能主要在于代理、路由和网关。因此单独的OpenSIPS并不能够提供VOIP服务只有和Asterisk等具备媒体功能的软件整合才能构建可靠的语音服务体系。
对于媒体服务器开源世界也提供了很多选择如老牌的Asterisk以及功能全面的sipXecs以及专注于IVR功 能的FreeSwitch等他们都是非常优秀的开源项目。其中Asterisk功能全面、灵活但主要面向企业应用在性能上稍差。但Asterisk 提供了完善的PBX功能可以连接多种不同的电话终端支持多种主流的IP电话协议和系统接口。FreeSwtich专注于IVR功能性能、可靠性非常高。近期 FreeSwitch已被sipXecs采用作为其IVR部分功能。sipXecs则是一个功能比较全面的产品包括IVR、VoiceMail、人工坐 席等等更难得的是SipXecs提供了良好的配置、管理界面易于使用。
只要将OpenSIPS作为前置接入将多个Asterisk、FreeSwitch、sipXecs挂接在其后由OpenSIPS实现SIP消 息的转发和负载均衡就可以轻松地实现各种语音业务以及规模扩展。如下图所示。 4、小结
从文中介绍可以看出OpenSIPS是一个成熟的电信级SIP Server平台可广泛应用于SIP应用的路由分发、负载均衡可用于搭建SIP代理提供SIP注册服务等。而且目前OpenSIPS自身也提供 SIP Presence以及IM功能。同时应该注意的是OpenSIPS本身并不提供媒体相关服务如呼叫中心、VoiceMail等业务该部分业务可通过 FreeSwtich、sipXecs等平台实现。
参考文献 [1].OpenSIPS: http://www.opensips.org/ [2] FreeSwitch wiki: http://wiki.freeswitch.org/wiki/Main_Page [3] sipXecs: http://www.sipfoundry.org/