opensips - bw_0927 - 博客园

标签: | 发表时间:2019-05-14 16:02 | 作者:
出处:https://www.cnblogs.com

http://www.oschina.net/question/5189_8848

http://blog.chinaunix.net/link.php?url=http://blog.csdn.net%2Fgouooo%2Farchive%2F2009%2F01%2F03%2F3687757.aspx

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 bw 博客] 推荐:

opensips - bw_0927 - 博客园

- -
随着通信IP化的发展,IP传输的高带宽、低成本等优势使得越来越多的企业、电信运营商加快建设基于IP的各种通信应用. 在通信协议IP化发展中,SIP协 议毫无争议地成为各大电信运营商构建其未来网络的基础协议,越来越多的SIP软件产品也不断出现在行业应用中. SIP协 议的标准化,同时也造就了一大批优秀的开源软件产品,包括Asterisk、SipXecs、FreeSWITCH、OpenSIPS等SIP服务端软 件,也包括X-lite、LinPhone、eyeBeam等SIP客户端软件.

博客之尾

- FQX - Nings blog
中国的博客时代,2006-2010. 机器人控制世界的时代虽然仍未到来,然而部分机器人如Google Trends已经可以做到这些无伤大雅的数据分析了. 感慨的话不再多说,知者自知,不知者无所谓. 总结一下发现的几个标志着博客时代尾声的点,可能片面些,仅供路过. 在博客时代,博客圈曾盛行一些传播游戏或立场之争.

博客2.0:社交博客的兴起

- maple - GeekPark 捕风捉影
作者:网易科技专栏作家 师北宸(微博). 最近三四年,随着社交网络和微博客的兴起,博客衰退的速度已经快到大家很久都看不到新闻上出现“博客”的程度了——即便出现,也是在讲博客衰退得有多厉害. 我去年建了一个独立博客,贴了几篇文章后,再没有更新. 今年主机商发信要求我续费时,我也没续,只把域名保留了下来.

SpringCloud Gateway与k8s_zhangjunli的博客-CSDN博客

- -
接下来的内容由以下几部分组成:. 什么是SpringCloud Gateway. SpringCloud Gateway实战参考. kubernetes上的SpringCloud Gateway. 开发k8sgatewaydemo. 什么是SpringCloud Gateway. SpringCloud Gateway是SpringCloud技术栈下的网关服务框架,在基于SpringCloud的微服务环境中,外部请求会到达SpringCloud Gateway应用,该应用对请求做转发、过滤、鉴权、熔断等前置操作,一个典型的请求响应流程如下所示:.

轻博客之重

- lijingjing_11 - 月光博客
  从最初的点点、到推他、再到新浪轻博客,后面还有虎视眈眈的腾讯. 似乎只是在不经意之间,轻博客似乎便引燃了整个中国互联网的热情. 尽管在此之前,tumblr已经出现了一段时间,不过在很长一段时间里,tumblr仅仅只是一小众人手中的玩具,就像很多在我的博客上留言的读者所认为的那样,“图床”. 一直到了去年年底,tumblr才真正进入了主流的目光中,直至今日.

博客启用InstantClick

- - 阅微堂
博客 » IT技术 » 阅微堂系统 ». 之前我发现有些网站能瞬间显示新页面,几乎没有延迟,非常类似于AJAX的刷新,但页面URL的确又变了(如果是AJAX刷新,页面地址不会变). 现在我知道这可以用InstantClick实现. 本着阅微堂一直在尝鲜最新技术的传统,我毫不犹豫就装上了. InstantClick的官方主页见 http://instantclick.io/download.

Tribalfish = Twitter + 博客 + 论坛

- Kofai - 36氪
在网络上讨论流行话题有多重选择,你可以在Twitter上追踪话题或名人,也可以在博客上分享经验,更可以在论坛上你来我往,不过,Twitter上的讨论不够深入,博客讨论足够深入又不够及时,Tribalfish 就是集以上讨论工具的大成. 注册登陆后,你会看到好像论坛的界面,只是,不同于一般的论坛界面必须前后查找不同的话题,开启一页又一页的分布,Tribalfish让你可以仪在原页,直接点选感兴趣的内容,并在右方预览,也可以点选分享人的名字后追踪该使用者,这些设计也很像Twitter.

Tumblr博客数超WordPress.com

- jason - 36氪
著名的轻博客Tumblr成立只有四年时间,今天该网站托管的博客数超过了已有八年历史的WordPress.com. 一月份时Tumblr上有700万个独立博客,到目前为止,该网站上的博客计数器显示已有20873182个博客,比WordPress.com上的博客数「20820425」大约多出了8.5万个.

我为什么写博客

- SHENGMING - 博客园-首页原创精华区
如果你也是一名博主,阅读下文前不妨再思考下这个问题. 下文翻译自Gabriel Weinberg的博文《Why I blog》,部分段落为了更通顺地表达,采用了意译的方式. 坚持写这个博客是我所做的最明智的决定之一,我曾经开过很多个博客,只有这个博客坚持了下来. 去年,我为自己订立了一个目标:写100篇博文,最终不但达到目标,还超过了这个数字.