企业网站制作方案,wordpress 固定链接 id,微信分销网站建设比较好,赤峰酒店网站建设哪家便宜说明#xff1a;
本文档探讨基于Asterisk如何实现VoIP的一些基本功能#xff0c;包括基本呼叫功能的方案选取、主叫号码透传、如何编写AsteriskAGI程序、Radius认证计费模块等。 本文档VoIP软终端使用X-Lite#xff0c;其它终端均可以接入测试。 文章内容仅供参考,转载请注…说明
本文档探讨基于Asterisk如何实现VoIP的一些基本功能包括基本呼叫功能的方案选取、主叫号码透传、如何编写AsteriskAGI程序、Radius认证计费模块等。 本文档VoIP软终端使用X-Lite其它终端均可以接入测试。 文章内容仅供参考,转载请注明出处。
1 VoIP系统相关协议和标准由于IP电话技术标准的开发涉及多个领域因此VOIP系统要想实现这些IP电话之间的通信则必须提供支持这些协议的实现。目前主要涉及的协议如图1-1所示其中除了HTTP是与WWW相关的协议外其它的都是VOIP相关协议。图1-1 所有基于IP协议的协议族 由图1-1可以看出与VOIP相关的协议共分五层每一层又由许多协议组成。目前有关IP电话制定的标准体现在应用层。而应用层又可分为信令控制协议、网关控制协议、媒体编码和传输协议和QOS协议等。
信令控制协议目前被广泛接受的IP电话控制信令体系主要有ITU-T的H.323系列和IETF的会话初始化协议(SIP)。 网关控制协议网关控制协议主要有媒体网关控制协议(MGCP)。该协议是为了解决目前IP电话负担过重不能满足未来容量和业务扩展的要求而设计的。 媒体编码媒体编码主要有两类——视频编码和音频编码。视频编码主要有H.261和H.263。音频编码主要有G.7xx系列。 实时传输协实时传输协议有包括了实时传输协议(RTP)、实时传输控制协议(RTCP)、实时流协议(RTSP)和资源预留协议(RSVP)。相关的协议标准可以参考相应的网上资料在这不细述。
2 Asterisk简介Asterisk是一个开源的软件包它可以运行PBX的所有功能通常运行在Linux操作系统平台上。它不仅包含了PBX的功能同时还有其它一些附加特性。Asterisk可以用三种协议来实现VoIP同时可以与目前电话使用的标准硬件进行交互通信。Asterisk提供了附加的语音邮件服务、电话会议、交互语音应答、呼叫排队等基本电话服务。它还提供了多方呼叫、显示呼叫者ID(显示主叫号码)等服务Asterisk在实现VoIP时不需要任何附加硬件DDD软交换所采用的也是这种使用方式。但是如果企业没有与VoIP语音网关运营商建立合作关系想要自己构建这样的一个平台那么要和数字电话设备与模拟电话设备进行交互通信Asterisk需要一个PCI硬件的支持这个硬件生产商中最著名的是Digium平台提供的。Asterisk的结构基本上是十分简单但是它不同于大多数的电话产品。基本上Asterisk担任的是一个中间件的功能它连接了底层的电话技术和上层的电话应用。Asterisk为布局混合的电话环境提供了一致性。Asterisk是开源PBX (Private BrancheXchange)和IVR (Interactive VoiceResponse)系统。使用兼容的PCI硬件Asterisk支持传统的电话线路包括:TDM(Time DivisionMultiplexing), TI/El PRI/PRARBS (Robbed BitSignal)模式、模拟电话线/模拟电话(POTS),ISDN(Integrated Services DigitalNetwork)和BRI(Basic Rate)与PRI(Primary Rate)。Asterisk可以透明的桥接VoIP之间的一些协议包括会话初始协议(SIP-Session InitiationProtocol), H.323(国际电信工业会的一种标准)、IAX(Inter-AsteriskeXchange)媒体网关控制协(MGCP-Media Gateway ControlProtocol)等其它一些协议。Asterisk具有很大的柔韧性特殊的API接口都围绕着PBX核心系统。这个核心处理着PBX内部之间的相互联系。每一部分都是清晰来自于协议、编码或内部电话使用的硬件接口的抽象。这些抽象的接口使Asterisk可以与任何的硬件和技术以及将来的硬件和软件技术完美的结合。从图2-5可以看出Asterisk由内部核心和外围动态可加载模块组成。内部核心由以下六个部分组成PBX交换核心模块(PBX SwitchingCore)、调度和I/O管理模块(Scheduler and I/O Manager)、应用调用模块(ApplicationLauncher)、编解码转换模块(Codec Translator)、动态模块加载器模块(Dynamic ModuleLoader)和CDR生成模块(CDR Core)。图3-1 VOIP通信系统功能模块图 Asterisk提供了很多的基本拨号语法及应用的拨号函数它共有40多个配置文件通过Asterisk特有的语法修改特有的配置文件才能实现通话的基本功能同时可以实现针对不同的用户实现不同的通信功能。它的配置文件的源文件采用的是C语言编写。但是基于Asterisk的ApplicationAPI编程接口如AGI对外部的应用程序可以使用PHPPythonPerlJava等语言编写。Asterisk运行操作系统平台的Linux内核要求大于等于2. 4. x的版本。 3 VoIP通信系统基本功能概述 如果是基于纯软件的实现方案Asterisk是构建VoIP项目的核心系统中所有与用户呼叫有关的功能和管理都通过它来实现,包括VoIP各种协议的互通和配置以及各种呼叫设备的配置文件。本文档所讨论的VoIP通信系统基本功能如图3-2所示一般的Asterisk的任务包括了两方面一是与呼叫有关的包括基本呼叫处理、主叫号码透传、呼叫纪录和日志生成等二是与呼叫控制有关即终端用户的认证计费功能。 图3-1 VOIP通信系统功能模块图
4 基于Asterisk实现VOIP通信系统基本功能 PBX是专用交换机俗话叫集团电话。广泛地运用在企业办公机构中极大地提高了企业的办事效率。但传统的PBX存在缺点有
它对新兴的CTI计算机与电话集成和VoIP支持不够。 传统的PBX都采用的是专用技术缺乏开放性和标准性并且价格昂贵。解决它的缺点的措施是IP PBX技术。 4.1 VoIP通信系统方案选择方案1模拟电话语音网关网守PBX模拟电话语音网关型的应用是将VoIP语音网关的FXO/FXS接口同总部或分支机构的PBX(小交换机或集团电话)直接相连当需要打长途电话时将话音转到VoIP网关上通过因特网传输。用户在使用时只需在分机上先拨IP电话特服号(如可设为8)便可直接拨打IP电话。在这个方案中若要像普通电话那样的数字号码拨号就得经过网守的路由管理但对于中小企业这种设备太昂贵。网守处于高层提供对端点的呼叫管理功能是IP电话网络系统中的重要管理实体。网守的主要功能有地址解析、接入控制、带宽管理、区域管理等四项基本功能;此外还能提供呼叫控制信令、呼叫管理等其他功能。要构建一个稳定可靠的、实用的VoIP网离不开GK的管理。基于VoIP语音网关的复杂性与成本昂贵本文档不使用这种方案。方案2VoIP电话/IP电话商业IP-PBX设备PBX模拟电话IP-PBX是一种基于IP的电话交换系统它具有传统PBX交换机的所有功能它的目标是取代企业内部原先的PBX。这个系统可以完全将话音通信集成到公司的数据网络中从而建立能够连接分布在全球各地办公地点和员工的统一话音数据网络。IP-PBX最显著的特征是一个集成通信系统因此通过互联网仅需要单一设备即可为用户提供语音、传真、数据和视频等多种通信方式建立中、小型的呼叫中心。由于VoIP技术是将语音以数据包的形式在IP网络中进行传送因此采用VoIP技术构建的通信平台用户具有可移动的特性形象的说就是同一个用户在A地用的是011的号码到了B地还是011的号码号码随着人走VoIP还支持语音信箱、多方会议、视频会议等传统PBX没有的功能。有助于移动办公和异地协同办公。虽然说商业的VoIP设备或者软件如华为SoftCo 5816IP语音交换机、贝尔阿尔卡特A5020他们能够更容易、方便提供丰富的IP-PBX业务类型也提供了数字中继接口与PSTN网络方便连接并且只需要手动配置参数就可以投入到使用不需要大量地编程但是这种方案需要的成本跟方案1差不多比较昂贵并且灵活性不够所以不使用。方案3IP电话/模拟电话Linux PC机开源IP-PBX媒体网关PBX模拟电话基于PC服务器Asterisk呼叫管理软件的IP-PBX系统Asterisk作为IP电话网络的控制中心(PC型PBX)该控制中心以软件方式工作安装在一台服务器内。数字中继网关与原有传统PBX的E1中继接口相联(在这里媒体网关特指单独的VoIP落地网关运营商的语音网关设备本文档让Asterisk与之对接实现IP与PSTN的完美转换)VoIP媒体网关提供的多路数字设置为中继模式一端连接PSTN专网一端对接Asterisk软交换IP侧。在控制中心的服务器上对IP电话号码进行分配。通过适当调整控制中心软件的参数以及添加、修改某些模块代码即可完成本文档最终完成的IP电话系统的建设。如果使用专用、商业的IP-PBX系统可能会花费不菲所以本文档使用方案3。本节的目标就是基于开源IP-PBXAsterisk设计VoIP电话系统的基本呼叫功能模块、认证计费功能模块、AGI功能模块等。4.2 VOIP系统的基本组件一般VOIP系统基本组件组成如图4-1所示。图 4-1 VOIP系统的基本组成 IP- PBX主要功能组件如图4-1所示下面讨论这些基本功能组件。 1. 呼叫控制器 IP电话系统的智能部分它负责提供一切传统PBX系统的中心-PBX交换机所能提供的服务。负责控制所有的呼叫建立和呼叫管理能轻易提供大部分基本服务(如呼叫保持、呼叫转移、呼叫等待等)以及配置电话的分机号码(ExtensionNumber)、功能按钮、通话管理和路由决策功能。此外它还控制所有的PC虚拟电话功能如语音邮件、统一消息、自动话务员、交互式语音响应(IVR)和自动呼叫分配等。 2. 媒体网关 在IP-PBX系统中媒体网关用来实现IP网络和传统电路交换网的通信负责把呼叫转接到PSTN网完成异种网络的电话呼入和呼出。它除了具有接通被叫的功能外还可以把来自PSTN的呼叫连接到IP电话系统。媒体网关在整个VoIP系统中起着非常关键的作用。它不仅使VoIP系统能够连接PSTN用户而且能够增加整个系统的可靠性使系统具有处理紧急呼叫的能力。媒体网关还需要完成语音编码转换通信协议转换以及LAN/WAN-PSTN之间的呼叫建立拆除等功能。 3. 局域网接入模块 提供IP-PBX系统各组件之间的连接。在局域网的环境中该模块可以使用局域网交换机来代替。 4. 控制中心 包括资源管理系统、计费系统、网管系统、语音信箱等。 5. 信令网关 提供和其它信令网络的互通功能可以支持H.323IAXSIPMGCP等的全部或者部分功能。 6. 应用服务器 为IP-PBX系统提供增值应用。 7. I P话机终端 包括终端部分软件PC PhoneI P-Phone等。 8. 模拟终端普通电话传真机等传统模拟设备。 本文档IP-PBX系统的基本组件 1VoIP软终端X-Lite对应图4-1的PCPHONEPC用户使用SIP软终端(目前只使SIP协议作为输入信令)访问IP-PBX服务器软交换后台对普通座机或手机发起呼叫实现PC2Phone的通讯。 2IP-PBX(VoIP软交换)对应图4-1的呼叫控制器基于开源软交换平台Asterisk接受VoIP软终端(或其它能发起SIP/H323请求的硬件终端)发起的呼叫信令、解析被叫号码、构建VoIP语音数据包发送到IP网络中。 3语音网关对应图4-1的媒体网关、信令网关因为实际使用中大部分的媒体网关设备都集成了信令网关功能提供模拟语音信号和VoIP信令的转换即从IP网络进入的VOIP数据包被转换成模拟语音通过与PBX相连的数字中继线路进入到PBX(数字程控交换机)。 4数字程控交换机(PBX)用于电话交换网的交换设备它以计算机程序控制电话的接续从语音网关的E1数字中继线路送出来的7号信令或1号信令或PRI信令以及模拟语音数据包进入到数字程控交换机。 4.3 VOIP系统的软硬件平台 第1节已经简单介绍过Asterisk它是一个非常灵活的软件可以轻松的安装在任何Linux平台上。Asterisk的资源需求与其它的嵌入式、实时的应用系统很类似都是通过优先级的方式来访问CPU和总线并规定系统上的任何函数都不能直接调用比Asterisk优先的进程。对于非专业的系统而言这也许不是很重要如果目标是商用系统这种优先级方式带来的性能上的缺陷会引起通话质量的问题。比如经常出现回声、噪音等等。这种情况在手机超出服务区外的时候常常出现。由于对于Linux的内核代码和优化技巧不是很了解选择一个高的配置而不是重新对内核进行编程是一个比较好的主意。 硬件平台 表4-1可以对系统的硬件配置有一个大概的认识
表4-1 VOIP 系统的硬件配置
系统并发通话数量最小要求非专业系统5 400M CPU 256M内存SOHO系统5-101G CPU 512M内存小型商用系统10-153G CPU 1G 内存中等商用系统15双处理器在分布式构架里采用多个服务器集群 对于要安装Asterisk的计算机如果在预算有限的情况下下面是一些建议系统的稳定性及质量取决于所选择主板的结构设计考虑使用服务器主板是一个很好的主意。比如服务器主板提供的PCI插槽有3.5V和5.0V服务器主板可以给主板提供更稳定的电压和电流。而且语音卡常常会造成每秒100个以上的中断请求所以对于主板来说一定要仔细考察芯片组是否能供支持。 安装PCI显卡而不是AGP显卡因为AGP通道会造成内存的高占用率和CPU中断占用。如果采用工控机/服务器构架根本没有安装显卡而是使用Console来管理系统。对于CPU而言由于Asterisk使用CPU进行信号的模数转换(也就是说CPU具有DSP的作用)所以浮点运算能力是非常重要的同时CPU的L2Cache也应该尽量的大。 1. 专有板卡的准备 如果准备连接Asterisk系统到任何电信设备上去必须需要一个专有硬件的支持。板卡的主要功能是连接PSTN和LAN/WAN。为了桥接电路交换的电信网络和包交换的数据网络最流行和最经济的连接PSTN的方法是使用接口卡接口卡有好几种这里仅仅讨论常见的两种情况。 (a)模拟接口卡 PSTN介入情况是普通的电话线或者模拟中继电话线的时候就需要这种卡。 最流行的Asterisk模拟接口卡也许是TDM400P(实际上这款卡和时分复用没有任何关系仅仅是这么叫好听而已)由Digium公司制造。TDM400P是一个4口卡可以插4块子卡既可以提供FXO口也可以提供FXS口。这个卡是贵的当然最有名气。 (b)数字接口卡 如果需要多于10条电路或者需要数字连接的时候就要购买或者寻找T1或El卡了。但是要注意El的接入的价格由信息产业部统一规定在一些地区可以找到非常便宜的PSTN接入价格(落地价格)有关这方面的内容在这不细述。 2. 硬件的需求 针对中小型公司硬件的要求一般不是很高普通的网络设备就可以满足要求。如果想采用很好的语音质量可以采用专门的语音网关来处理语音信息。因为采用通信的硬件设备目前大多是PSTN电话终端因此要求附加一个硬件来将PSTN电话转化为“IP”电话。目前大多采用ATA设备来转换PSTN的电话终端。当然也可以使用IP电话如X-Lite等。 对于本文档的VoIP开发环境说明如下
基于非专业系统的配置需求来进行硬件的配置如Ubuntu 7.04。 不方便配备专有板卡寻找某些地区的PSTN接入运营商简称VoIP落地运营商或者VoIP落地网关他们能够提供接口卡(数字接口卡、语音网关、媒体网关)。 软件平台1.操作系统对于中小型公司而言Linux可能是首选的操作系统。同时Asterisk源码便于在Linux中编译和运行相对比较安全。在对于中小型软件研发而言Linux可能成为开发中的首选的操作系统。2.Asterisk软件包Asterisk的核心主要由三个包组成
Asterisk主程序(Asterisk) Zapate电话驱动(zaptel) PRI库(libpri) 其余的还有一些其它的软件如语音附加包等都可以从开源的网站上下载。4.4 Asterisk构建VoIP整合应用方案(基本呼叫功能的实现)Asterisk和VoIP的最初设计思想相同其最终目的是减少长途通话的费用实现通话的网络化使IP网络成为一个可运载语音数据和其它数据的平台实现语音网络和视频网络等完美地结合。为了实现基本的呼叫功能即摘机、挂机等功能目前设计的拓扑结构为VoIP软终端---SIP代理服务器(SIPProxy Server、SIP RedirectServer)--转发到用户代理服务器(UASAsterisk)---与VoIP语音网关通信(CiscoAS5300华为8010等设备一般有2、4、n个数字中继接口)----通过E1中继线路对接数字程控交换机华为Cc08、贝尔S1240数字程控交换机。VoIP系统第一部分——IP侧的实现VoIP系统有两侧IP侧与PSTN侧这部分主要是IP侧发起呼叫请求的VoIP软终端是任何一个能够发起SIP请求的客户端软件或者硬件设备或者语音网关设备网络拓扑结构图如下所示图中每个结点在前几个小节均有描述。(点击看大图)
第二部分——VoIP网关、PSTN网络层 这部分是本文档所讨论的开源软交换平台(Asterisk)通信的VoIP语音网关如图4-3所示经过它出局的数字中继是一个E1接口又称一个PCM是一对引自数字程控交换机的同轴电缆线在电缆线上数据传输速率是2.048 Mbps可以同时容纳32时隙 *64Kbps的语音数据。 (点击看大图)结合图4-2与图4-3基本呼叫处理包含主叫摘机、拨号、通话、挂机、被叫挂机全过程。通常应用呼叫的方式可能是PC到PC、PC到电话(PSTN/IP)、电话(PSTN/IP)到电话(PSTN/IP)等方式。对于基本的呼叫流程是任何PBX都具有的设计流程大多都一样。
在X-Lite客户端输入完被叫号码后点击呼叫按钮用户听到VoIP会话应用程序播放的拨号音然后开始拨号。 X-Lite收集用户拨打的号码并按照标准的SIP代理服务器到VoIP用户代理服务器Asterisk。 Asterisk动态的调用呼叫模块进入到Asterisk内部的呼叫Dialplan,并按照呼叫Dialplan中配置的被叫号码模板进行匹配。 当成功匹配某个已配置的被叫号码模板后号码将被映射至某语音网关此语音网关直接连接目的电话或用户小交换机PBX。 IP-PBXAsterisk的IP网络利用H.323/SIP协议向语音网关发起呼叫并为每路呼叫建立通道用以发送和接收语音数据。 被叫语音网关接收IP侧的H.323/SIP呼叫通过PSTN信令将呼叫传递到给PBX处理直到接通目的电话。 在呼叫连接过程中的H.323/SIP阶段IP侧与PSTN侧协商所使用的语音编解码方式并使用RTP协议传递语音数据。 呼叫中的任何一方挂机时VoIP会话应用程序X-Lite将结束会话。 4.5 基本呼叫功能环境搭建示例(SIP与H.323互通)图4-4 简单拓扑图
软终端Xlite注册到软交换Asterisk上 图4-5 软终端设定
4.5.1 IP-PBX服务器Asterisk抓包分析 (点击看大图)图4-6 SIP_REGISTER_1 (点击看大图) 图4-7 SIP_REGISTER_2
X-Lite(UA) ------ asterisk PBX读取SIPINVITE消息 (点击看大图)图4-8 IP_INVITE_1
Asterisk PBX 针对上面的分析情况响应X-Lite会话继续下去 Transmitting to X-Lite202.108.12.6 (点击看大图)图4-9 SIP_INVITE_2 (点击看大图)图4-10 SIP_TRYING 执行拨号方案 (点击看大图)图4-11 dialplan
Asterisk然后开始与华为8010语音网关建立H323通信 ① Call set up. H225/Q.931 Call Setup (点击看大图)图4-12 h323_SETUP_1 (点击看大图) 图4-13 h323_SETUP_2 ②ALERT/PROGRESS 表示被叫已经正在响铃… (点击看大图)图4-14 h323_3_ALERT 这时候Asterisk PBX将被叫手机正在响铃的信号以SIP消息的形式发送到客户端X-Lite这是一种sip_indicate类型的SIP消 息。 (点击看大图)图4-15 SIP_Ringing Asterisk响应会话继续的SIP消息 (点击看大图)图4-16 SIP_183_SESSION_PROGRESS Asterisk与华为8010语音网关的H323连接已经成功建立 ③Connect 表示软交换Asterisk与华为8010语音网关的H323连接已经成功建立 (点击看大图)图4-17 H323_ESTABLISHED Asterisk与X-Lite之间发送OK与ACK响应消息表示SIP软终端已经跟H323语音网关建立了连接并且被叫已经接听开始成功通话 (点击看大图)图4-18 SIP_200ok_ack被叫先挂断Asterisk与华为8010语音网关的H323连接在此释放
④Release Complete 表示软交换Asterisk与华为8010语音网关的H323连接在此释放 (点击看大图)
图4-19 H323_RELEASE Asterisk向软终端X-Lite发送BYE消息 图4-20 SIP_BYE X-Lite收到BYE消息后以OK消息响应整个会话就此终止 图4-21 SIP_BYE_OK
4.5.2 结论 通过观察上面这个流程图可以容易的看出,语音网关在收到INVITE消息后立即发送SETUP消息,反之亦然. 所以可以得到如下的H.323和SIP的消息对应关系:
H.323 消息SIP 消息SetupInviteCall Proceeding100 TryingAlerting180 RingingConnect200 OKRelease CompleteBYE
H.323 消息SIP 消息SetupInviteCall Proceeding100 TryingAlerting180 RingingConnect200 OKRelease CompleteBYE H.323 消息SIP 消息SetupInviteCall Proceeding100 TryingAlerting180 RingingConnect200 OKRelease Complete