Asterisk 系统及其应用分析.pdf
《Asterisk 系统及其应用分析.pdf》由会员分享,可在线阅读,更多相关《Asterisk 系统及其应用分析.pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Asterisk 系统及其应用系统及其应用系统及其应用系统及其应用分析分析分析分析 汤秀娟 北京邮电大学计算机科学与技术学院 北京(100876)E_mail: 摘摘摘摘 要要要要:Asterisk是由Digium公司开发的开放源码的软件PBX,它不仅支持传统的电话业务也支持电话会议,语音信箱,收发传真等新型的业务,并且它的通用性强,可扩展性能好,硬件成本低,因此吸引了大量的用户和开发者,有广阔的应用前景。本文系统地介绍了Asterisk的特点,它的内部系统结构,以及系统可动态加载的API模块的功能,并且介绍了拨号方案的语法,给出了一个拨号方案的简单例子;此外,还对Asterisk系统的初始化
2、流程,呼叫流程,呼入呼出场景,以及处理呼叫时的控制流程进行了详细的分析;最后,介绍了一种基于Asterisk的VOIP解决方案。关键词关键词关键词关键词:Asterisk,VOIP,PBX 中图分类号中图分类号中图分类号中图分类号:TP311.52 TN916.1 1.前言前言前言前言 Asterisk 是一个开放源代码的软件 VOIP PBX 系统,它以软件的方式实现了 PBX(专用分组交换机)的所有功能,是一个纯软件实施方案,一个全面的通信平台。它既支持传统的模拟电话设备和数字电话设备,也支持新兴的基于网络的 VOIP 语音系统。实际上 Asterisk已经成为开源项目中语音交换和 PBX
3、 的标准,基于开源 Asterisk 系统结构,提出了实现诸多新业务的运营平台设计框架,并在业务扩展以及业务管理等方面做了改进。Asterisk 囊括 H.323、SIP、MGCP、IAX2 四种通信协议。并且可以提供语音信箱,目录存取,电话会议,IVR(交互语音应答),ACD(呼叫自从分配),CDR(call detail record),三方通话,电话转接,电话抢接等功能。目前,众多企业随着业务的扩张,开设了大量的分支机构,这样企业总部以及分支机构之间的语音沟通是非常频繁,企业长途电话费用是企业经营成本中的一项巨大开支,基于Asterisk 的 VOIP 解决方案也成为许多中小企业的首选方
4、案。1http:/ 2.Asterisk 的特点的特点的特点的特点 Asterisk 是一套可以运行在 Linux 上的 VOIP 软件系统。Asterisk 的主要特性是:它提供了由垄断到开源、由电路交换到 VOIP、由单一声音通讯到多媒体、视频和数据通讯、由数字信号进程到媒体流进程、由集中式交换到点对点交换等的VOIP技术实现。通过Asterisk,你能与上一个世纪六十年代的脉冲拨号的电话通话,也能与最新的 VOIP 设备通话。总的来说,用 Asterisk 来实现 IP-PBX 系统有以下几个优点1:(1)功能多,并且易于扩展新的增值业务。通过软件来实现基于 VOIP 的 PBX 功能意
5、味着无需很大开支就能实现如电话会议、电话转接、语音信箱、收发传真等诸多功能。(2)硬件成本低,局域网的网络拓扑可满足新办公室的布线需求,无须考虑其它电话布线。可用标准 PC 组件来设计并部署系统,比传统方式具有更大价格优势。(3)网络系统配置更为简单,可将现有的资源,如图形用户接口(或 IM 短信)服务于当前的需求。(4)通用性强,维护简单,基于 Asterisk 的软件系统易于管理和维护。(5)可扩展性能好,操作十分简单,而且节约时间和费用。当需要在己有的 PBX 上扩充多个子电话时,传统的 PBX 设备不大支持这种扩充,必须换掉内部模块,这是一笔不小的开支。但是使用 Asterisk 来充
6、当 PBX 的内部核心软件模块,可随时更新,由软件可替代整体的硬件更新,既节省经费又节省时间。(6)使用 Asterisk 来充当 IP-PBX 还有一个非常吸引人的优点是,它可以利用其 VOIP功能用市话价格拨打长途电话,极大节省了长途通信的费用。除了能看到的优点,在深层次的意义上 IP-PBX 系统导致了新的真正集成化的数据、语音应用的大量出现,甚至是当前的 IPTV,从而引起了人们日常工作模式的进步以及效率的提高。3.Asterisk 系统结构系统结构系统结构系统结构 3.1 Asterisk的核心功能的核心功能的核心功能的核心功能 Asterisk 是整个软件的核心,系统中所有与用户呼
7、叫有关的功能和管理都通过它来实现。它的业务包括了各种协议的互通和配置各种呼叫设备的配置文件。Asterisk 的任务包括了基本呼叫处理、补充呼叫服务、设备管理、号码分配和用户信息管理、呼叫纪录和日志生成、呼叫菜单选项等。Asterisk 的内核主要处理以下事务2:PBX 交换:Asterisk 本质上是一个专用分组交换机系统,因此可以自动将来自不同硬件和软件设备的用户呼叫连接起来。应用程序启动器:启动语音服务,如语音邮件、文件回放等。Codec 转换器:使用 Codec 模块对各种压缩格式的音频进行编码/解码。2http:/ 调度器和 I/0 管理器:处理所有负载情况下的任务调度和系统管理,以
8、便优化系统性能。当 Asterisk 第一次启动时,动态模块加载器就会加载并初始化每个模块的驱动程序,然后 Asterisk 的 PBX 交换内核就可以接收呼叫,并根据拨号计划设定的规则处理这些呼叫。3.2 Asterisk的的的的可加载可加载可加载可加载API模块模块模块模块 Asterisk 定义了 4 个可加载的 API 模块,它的模块化设计使其具有很好的灵活性和可扩展性,大部分模块可以通过模块加载器加载并初始化,用户可以根据需要加载或卸载模块。Asterisk 体系结构如图 1 所示。图1 Asterisk体系结构 信道 API 处理呼叫的连接类型,动态模块加载后处理低层的连接类型等细
9、节,使得Asterisk 交换内核可以与不同的时分复用(TDM)或包语音源进行交互;codec 模块可以支持不同的音视频编解码格式,使得 Asterisk 内核可以处理经过编码的各种格式的语音;File Format API 处理读写文件系统存储的不同类型的文件格式,使得 Asterisk 可以读取不同格式的语音文件,如 WAV,MP3 等格式的文件;应用 API 允许不同的任务模块运行以实现不同的功能,允许第三方厂商开发基于 Asterisk 的应用程序,如电话会议以及语音邮件系统3 等。通过这些接口,开发人员可以在电话呼叫的任意阶段与 Asterisk 交互,甚至可以编写全新的电话应用程序
10、;添加对新的电话技术或者声音的编解码的支持非常的方便。例如添加新的声音编解码器只要在 codec translator API 处实现即可;添加新的电话技术的支持只要在Asterisk channel API 处实现即可。Asterisk实现了各种声音编码器的相互转换并且与使用何种电话技术无关,因此Asterisk3http:/ 可以说是电话技术领域的中间件,使用 Asterisk 使得目前任何两种不同技术的电话终端的互通大大简单。3.3 Asterisk的的的的初始化流程初始化流程初始化流程初始化流程 Asterisk 的模块初始化工作由 asterisk.c 负责。asterisk.c 主
11、要负责 asterisk 的启动,初始化等工作。asterisk.c 中的 main()是系统的开始入口函数,它负责设置 Rtp 端口,初始化文件日志管理系统以及远程控制系统接口等工作。main()函数调用了 load_modules()函数来装载各个模块(也就是共享对象)并且注册各个 applycation 的入口函数;调用 load_pbx()函数加载 builtin applications,load_pbx()这个函数的实现在 pbx.c 中,它的主要任务是遍历全局数组builtins 中每个 application 信息,调用 ast_register_application()注册
12、 application 的各个入口函数。模块初始化流程图如图 2 所示。图2 模块初始化流程 4.Asterisk 的的的的呼叫流程呼叫流程呼叫流程呼叫流程 4.1 Asterisk会话建立会话建立会话建立会话建立流程流程流程流程 Asterisk 通话都包含一个 incoming 连接和一个 outbound 连接。每个电话都是通过一种通道驱动程序建立起来的,比如 SIP,ZAP,IAX2 等等。每一类的通道驱动,都拥有自己私有的通道数据结构,这些私有的结构从属于一个通用的 Asterisk 通道数据结构中。Asterisk 会话建立流程(收到呼入电话然后外拨,建立会话通道的全过程)如图
13、4 所示。4http:/ 图4 Asterisk 会话建立流程 呼入呼入呼入呼入抵达抵达抵达抵达Asterisk时的时的时的时的场景场景场景场景:呼叫到达监听端口,被某一类通道驱动的接口感知,比如 SIP socket;通道驱动为其创建一个 PBX 通道并且为这个通道开启一个 PBX 线程;执行拨号方案;在这个时候至少发生下面其中之一:aAsterisk 应答这个呼叫并且播放媒体数据或者读取媒体数据,比如 IVR 业务。b拨号方案促使 Asterisk 通过 dial 应用(dial application)创建一个对外呼叫。桥接通道(Bridging channels)。Asterisk向向
14、向向外拨外拨外拨外拨号号号号时的时的时的时的场景场景场景场景:Dial 创建一个 outbound PBX 通道,并且要求对应的通道驱动创建一个呼叫;当电话被接通,asterisk 桥接媒体流,使得第一个通道的呼叫者能够与第二路通道的被呼叫者进行通话;有些情况下,呼入和呼出的通道使用相同的技术方案和兼容的编解码技术,这时候就会使用本地桥接。这种本地桥接方案中,通道驱动在内部直接传送到来的语音数据到对外的流中,而不通过 PBX 发送语音帧。如果是 SIP 协议,将会有一个external native bridge,Asterisk 重定向端点,使得语音直接在呼叫者和被呼叫者之间传送。信号被保存
15、下来以方便提供正确的 CDR 记录。植入通道(Masquerading channels)。有些情形下,一个通道可能植入到另一个通道中。这种情景在呼叫转移中比较常见,新通道植入并且接管桥接的工作,旧通道就成了僵死的通道而被挂起。4.2 PBX呼叫时的呼叫时的呼叫时的呼叫时的控制流程控制流程控制流程控制流程 在 asterisk 中,有三个重要的逻辑实体4。它们完成管理员设定的各项电话功能。这三个实体是:PBX,Channel,Application。当一个呼叫业务启动后,就会有一个 PBX 线程被启动,它掌控这个呼叫业务,直到呼叫业务的结束。5http:/ Channel 是完成呼叫业务基本功
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Asterisk 系统及其应用分析 系统 及其 应用 分析
限制150内