SipXecs
谈到开源的IP-PBX,对该领域熟悉的人大概都知道Asterisk 这个大名鼎鼎的开源IPPBX。对于Asterisk的介绍,各类技术文档不少。然而在此我要介绍的是却是另一个同样是开源系统的IPPBX方案—sipXecs 。通过Google查阅有关sipXecs的中文资料和介绍,发现不多,显然和Asterisk不再一个热门程度上。但是不是Asterisk就一定比sipXecs强,sipXecs就一定没有Asterisk所比拟的优势吗?
一、sipXecs是什么,能干什么?
根据其官网(http://www.sipfoundry.org/)上的资料介绍, sipXecs企业通信系统(ECS) 是一个高伸缩性、企业级的通信解决方案。它是名为 SIPFoundry 的非盈利性、开源组织的一个独立的产品。借助标准和基于开源环境, sipXecs 提供低成本、易使用,以及在其他系统中找不到的互操作性、功能和可伸缩性。
sipXecs基于SIP协议。它提供了所期望的PBX的全部典型功能,包括:语音信箱(VoiceMail)、统一消息(Unified Messaging)、自动总机(Auto-Attendant)、电话会议(Conferencing)、出席(Presence)、以及呼叫中心(Call Center)应用等。
sipXecs不仅仅是一个指令集的网路电话交换平台,而可以算是一个整体解决方案(Total Solution)。也就是说,它已包含了一个网路电话交换系统要能实际上线使用、所有需要并会用到的应用组件,例如Web-UI等。sipXecs是目前开源IP-PBX中唯一可以做到终端电话免设定,可以即插即用的系统。这种特性对于应用在办公室的大量部署非常有用。不过有一点要注意,与Asterisk不同,sipXecs是以L-GPL软件授权,这与GPL授权大致是相同,只是差别在于函式库部分有特别的授权条款。
总结起来,sipXecs的特性主要有:
-
Voice Mail(语音信箱):集成的语音信箱支持每个用户个性的自动应答
-
自动呼叫分配系统(Automatic Call Distribution):集成的呼叫中心方案通过智能路由将呼叫分配至多个坐席和队列。
-
统一消息(Unified Messaging):语音邮件消息能通过Web浏览器检索,或者转发至任何email客户端。
-
多个自动应答(Multiple Auto Attendants):可以通过浏览器界面容易地配置自动应答。
-
配置管理(ConfigurationManagement):真正的即插即用。可通过直观的浏览器界面完成对拨号计划(dial plan)、用户和终端进行集中控制和管理。
-
用户门户:强大的Web用户门户使得用户能单独管理诸如基于时间的find-me/follow-me等关键特性。
-
易安装、易使用:部署sipXecs只需要几个小时就够了。同时,sipXecs被设计成每个人都能成为管理员。安装后,用户使用一个Web界面就能完成全部的增加、迁移和改变等事情。
与Asterisk通过语音板卡与PSTN连通不同,sipXecs通过外部网关,即通过传统的模拟中继(FXO语音网关)或数字中继(T1/T1/PRI)与PSTN连通。另外,sipXecs也可利用某个服务提供商(ITSP)提供的SIP中继与外部连通。使用4口模拟中继线,可以利用sipXecs搭建一个理想的支持4到12个用户的企业IP语音解决方案;或者通过一条或多条数字中继,使系统能支持到数百个用户的规模。由于sipXecs本身的体系支持分布式部署,因此,sipXecs IP-PBX的可伸缩性非常地好。例如,对于集团-分公司这样的组织,在分支机构可以进行不同的配置:
(1)分公司运行自己的sipXecs实例;
(2)分公司使用集团IP网络与集中管理和运行的sipXecs相连;
(3)每个分公司可以有一个冗余或非冗余的sipXecs配置。
每个分公司可以配置本地网关。这可为改进处理紧急呼叫、提供最小成本路由、或者将集团WAN网络连接呼叫直接卸荷至本地电话网提供弹性。
二、Asterisk vs. sipXecs:
熟悉Asterisk的可能都知道,确切来说,Asterisk是一个平台,而不是解决方案。而sipXecs,则是一个搭建企业通信系统的完整解决方案。Asterisk和sipXecs的不同定位,可谓各有利弊。
Asterisk是一个基于命令行的应用,虽然有一些基于Asterisk的开源系统提供Web-UI,但Asterisk本身是没有Web界面的。而sipXecs,作为一个完整的解决方案,提供内建的Web UI应用。另外,Asterisk可以支持SIP、H.323、Cisco SCCP、Nortel Unistim、MGCP、IAX,甚至SS7。而sipXecs只支持SIP。与Asterisk理念不同,sipXecs的目标是通过对SIP标准的完全实现来建立一个全能的SIP系统。
sipXecs IP-PBX是一个完整的SIP解决方案,其全部特性通过SIP实现。该系统的关键特性以独立组件完全分布。这些组件使用SIP通讯,可以在单机或者分布在多台机器上运行。而Asterisk可以认为是一个应用,它不能分布部署,也不能提供冗余。Asterisk不是一个用来提供SIP会话的全局路由的SIP代理服务器,它与所有的不同信令协议“谈话”,其内部是一个专用系统,外部信令进入Asterisk时被转换。
如前所述,sipXecs使用外部网关。sipXecs的网关能部署在任何需要它们的地方,同时也提供了低成本的路由。而Asterisk使用PCI网关卡,一台服务器上可用的PCI槽会限制端口数。
通过将信令和媒体分离,sipXecs的呼叫(媒体)路由不经过服务器。因此,sipXecs能支持LAN/WAN带宽所许可的许多路并发呼叫。而Asterisk由于呼叫会经过Asterisk服务器,因此它会受到硬件的限制。一般而言,对于2G内存的双核XEON机器,其限制就是60路并发呼叫。
由于采用SIP协议,而SIP标准的设计就是是信令和媒体分离。这样,sipXecs的架构支持呼叫路由的直接点对点,而无需通过呼叫控制服务器。sipXecs支持两个终端的HD语音,也支持诸如会议、语音信箱和自动总机等PBX服务。由于媒体不通过服务器,因此视频支持不会对sipXecs造成额外的负载。
OpenSips
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图形界面管理OpenSIPS,OpenSIPS社区还提供了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/
要是談到 Open Source IP-PBX,很多玩家(包含筆者自己)多半都是在討論 Asterisk,這個平台不管是在公開的社群討論或實際被作為商業應用的產品,其普及性都佔了很高的比率,然而此篇要介紹是另一個方案 – sipXecs, 原創公司 SIPfoundry,會介紹這個方案的原因是,它不僅僅是一個指令集的網路電話交換平台,而可以算是一個 Total Solution,也就是它已包含了一個網路電話交換系統,要能實際上線使用,所有需要會用到的應用元件,例如 Web-UI 等。
sipXecs 是目前 Open Source IP-PBX 唯一可以做到終端電話免設定,可以即插即用(plug & play),這對於應用在辦公室的大量佈署上非常有用,當然 IP-PBX 該有的基本或進階功能,也都一應俱全,不過有一點要注意,sipXecs 是以 L-GPL 軟體授權,這與 GPL 授權大致是相同,只是差別在對於函式庫部份有特別的授權條款。
以下簡單敘述 sipXecs 的 特色:
功能特色:
-
全功能的統一通訊方案
-
容易安裝 – 作業系統支援 CentOS 5
-
容易使用
-
即插即用管理
-
SIP Trunking 及遠端工作者 – 可連結 SIP Provider 系統
-
電話會議 – 此功能是基於 FreeSWITCH 的整合功能
-
系統備援及具可擴充性
-
Trunk 備援及故障轉移
-
系統本地化 – 語言套件包含語音提示, 管理介面, 撥號設計, 區域型指定的撥號程序
-
良好的通話品質 – 媒體串流使用 peer-to-peer 路由方式,不會經過 sipXecs 主機,所有這個帶來許多好處,包括不限制的可線上語音通話數量,及影像通話
-
網站型服務,SOA(服務導向架構)及 IT 整合
官方網址:http://www.sipfoundry.org/index.php
操作畫面預覽:http://www.sipfoundry.org/sipxecs-screenshots.html
官方安裝手冊:http://sipx-wiki.calivia.com/index.php/Start_Here_to_Use_sipXecs_IP_PBX
介绍的内容太老了,大家还是去www.sipfoundry.org看它们的官方资料吧,现在稳定版已经是4.0以上了.4.0相较于以前的版本最大的改变是采用Freeswitch(www.freeswitch.org)作为Media server,Conference server和Voicemail server.另外由于北电(www.nortel.com)参与的关系,新的体系架构完全是基于服务器角色的完全分布式架构,这是我认为的最先进的架构.原本的sipxecs是一个Sip proxy,在nat travial和功能性方便和asterisk相比相差甚远,至于容量,sipxecs是proxy(只传递sip信令)和asterisk(B2BUA,桥接信令和media path),这从侧面反映了sipxecs的底气不足.但是到了4.0,一切有了翻天覆地的变化,freeswitch功能相较于asterisk,功能相似但是更为稳健.有理由相信sipxecs将会抢夺asterisk的SMB市场用户(我说的不是开源市场,北美对SMB的定义是500线以下).毕竟,Asterisk在超过100线并发的领域,对服务器的要求已经很高,而sipxecs用主流的PC,已经可以支持到500线.当然在大型应用当中(2000线以上),sipxecs作为纯sip proxy性能还是达不到要求,这样的应用,还是用openSIPs(前身是著名的openSER)