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/
總結
以上是生活随笔為你收集整理的opensips简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基金运作费用怎么算的?基金运作费有哪些
- 下一篇: extensions.conf的常用参数