蒋 华, 曲艳博 , 潘文吉, 杨 磊, 王 坤
(1.北京电子科技学院 通信工程系,北京 100070;2.西安电子科技大学 通信工程学院,陕西 西安 710071)
VoIP(Voice over Internet Protocol)即通过 Internet进行语音通信,将模拟的声音信号经过压缩与封包之后,以数据包的形式在IP网络上进行语音信号的传输。VoIP不仅具有成本低、频带利用率高、话费低等优点,通过把传统的电话网与互联网进行高效的资源整合,就可以充分利用带宽资源进行文本、语音、视频及多方会议等形式的通信。随着数据网络带宽的不断发展,VoIP技术也日趋成熟,尤其是发达国家VoIP市场规模在迅速扩大[1]。VoIP电话的核心设备是网关。集电话,传真,调制解调器等功能于一体的PBX(专用交换机)完成企业内部之间以及与公共电信网络的电话交换,但传统的PBX存在缺点有:对新兴的CTI(计算机与电话集成)和VoIP支持不够;传统的PBX都采用的是专用技术,缺乏开放性和标准性,并且价格昂贵。解决它的缺点的措施是IPPBX技术。而数据网的飞速扩大和公众对分组交换的广泛接受及互联网的广泛使用促成了VoIPPBX的发展。
Asterisk是一个开放源代码的软件VoIP PBX系统,是一个运行在Linux环境下的纯软件的实施方案,它可以运行PBX的所有功能,同时还可以提供语音邮件服务、电话会议等增值服务[2]。Asterisk既支持传统的模拟电话设备和数字电话设备,也支持新兴的VoIP语音系统。Asterisk包含所有的用于构建 PBX系统、IVR系统,如各种 VoIP协议的驱动、各种PSTN接口卡和设备的驱动、存取公司目录系统的LDAP集成、单方和多方呼叫桥接,系统集成商或开发者能够利用它的这些自身的优点快速生成一个语音使能系统。由Asterisk构成的VoIP系统已经渐渐成为中小型企业的首选方案[3]。本文中以Asterisk作为VoIP网关为例进行实验。
本实验的系统环境为双系统,主机为Windows7系统,主机上的虚拟机VM Virtualbox装有Linux系统,版本为Ubuntu10.04,安装开发工具以及开发库。此外,还需要的软件包括Asterisk源代码包 asterisk-1.6.1.20.tar.gz,版本:1.6.1.20;eyebeam 版本:1.5.14.4;X-Lite 版本:3.0。
在Linux下安装Asterisk需要以管理员身份进行操作,主要步骤包括:环境检测和预配置、重新编译Asterisk程序和安装Asterisk程序。在安装时要注意用户权限,同时可能还需要清除陈旧的已编译文件,其命令是make clean。另外个人计算机管理的方便,可以选择将压缩包解压到指定的文件夹,如asterisk-1.6.1.20,这样可以做到见名知意。如果有需要,还可以安装配置模板、网页语音信箱等功能。
Asterisk提供了很多的基本拨号语法及应用的拨号函数,它共有40多个配置文件,通过Asterisk特有的语法修改特有的配置文件,才能实现通话的基本功能,同时可以实现针对不同的用户实现不同的通信功能[4]。这里主要介绍SIP对象配置文件和拨号规则配置文件的详细配置。
2.2.1 配置SIP对象配置文件
Asterisk服务器的SIP对象配置文件是在/asterisk下的sip.conf文件。打开 /etc/asterisk/sip.conf文件,增加以下用户定义小节即自定义的SIP配置段[5]。主要包括支持的编码方式、用户名、用户密码、指定主机位置的方式、指定在拨号规则文件中使用那一套拨号规则等。如下是名字为9001的小节配置细则。其他用户的小节可参考此小节配置。
[9001];定义名字为“9001”的小节
videosupport=yes
type=friend
username=9001
secret=9001
host=dynamic
context=demo
disallow=all
allow=h264,g729
dtmfmode=rfc2833
canreinvite=no
maxcallbitrate=384
2.2.2 配置拨号规则配置文件
拨号规则配置文件是在/asterisk下的extensions.conf,需要在这个文件的末尾增加以下内容:
[demo]
exten=>_9.,1,Dial(SIP/${EXTEN},20,r)
这里的_9.表示匹配所有9为首字的任意长度的字符的用户拨号,Dial表示拨号执行动作,即这是APP应用程序,当你拨打9001时,${EXTEN}的值就是9001,20表示拨号超过20秒后就会自动跳跃执行次序。
由于本次仿真实验是在一台主机上进行,所以采用了两种软电话,分别是:eyebeam版本:1.5.14.4及X-Lite版本:3.0。使用eyebeam和X-Lite注册9001和9003这两个SIP用户到Asterisk上去,并且使其互相呼叫并通话[6]。
将软终端eyebeam上用户9001注册到软交换Asterisk上的配置如图1所示,主要包括用户名、密码、域名、代理等。这里不使用代理,即Asterisk服务器同时兼做用户代理服务器和代理。
图1 软终端eyebeam上用户9001的注册Fig.1 Registration of 9001 on soft client eyebeam
将软终端X-Lite上用户9003注册到软交换Asterisk上的配置与用户9001的配置相同,也包括用户名、密码、域名、代理等,这里不再给出图。
要想在软电话将进行通话,需要保证用户都可以联网,这个网可以是局域网也可以是互联网,这里使用局域网。首先配置Linux虚拟机地址为192.168.1.9,主机地址为192.168.1.12,即使虚拟机和主机在一个局域网内以保证可以互通。然后在Linux终端启动Asterisk服务,命令是/usr/sbin/safe_asterisk。这样已注册的双方就可以通话了。用户9001为主叫,与用户9003通话的过程如图2所示。
实验结果还可以在Asterisk服务器后台进行观察。通过在管理员权限下输入命令/usr/sbin/asterisk-crvvvvvvv进入后台观察已注册用户的情况,检测用户的注册、拨号、通话及挂断等动作。观察情况如图3所示。
从后台观察到的情况表明用户9001与9001已注册。当用户9001主叫用户9003时,可以观察到9003振铃中,以及被叫9003摘机应答、挂断等一系列动作。这些观察到的情况表明Asterisk确实是充当了VoIP网关,可以承载SIP通信。
IP电话系统具有可靠性强、安全性好等优点,可在局域网或Internet上使用,还可以扩展成融文本、视频会议于一体的网络交互式多媒体系统。本文介绍了Asterisk的安装过程、部分配置步骤,并利用其作为VoIP网关进行了实验仿真,更深的研究还需要更多的时间研究。Asterisk与Linux等开源项目结合,可以在原有网络基础上为企业提供IP语音解决方案,具有广阔的应用前景。
图2 双方通话过程Fig.2 Process of communication between them
图3 后台观察情况Fig.3 Observation on the station
[1]蔡云刚.VoIP网络浅析 [J].网络安全技术与应用,2009(12)34-36.CAIYun-gang.Analysis of VoIPnetwork[J].Network Security Technology&Application,2009,12:34-36.
[2]邹慧.基于Asterisk的VoIP系统实验研究[D].北京:北京交通大学,2009.
[3]刘薇.基于Asterisk的电话会议系统研究与设计[J].现代电子技术,2010(8):77-79.LIU Wei.Research and design of conference phone system based on asterisk[J].Modern Electronic Technique,2010(8):77-79.
[4]王继鹏.基于Asterisk构建中小型公司IP-PBX通信系统的研究[D].西安:西北工业大学,2007.
[5]Asterisk Development Team.Asterisk Reference Information Version 1.6.0.28[EB/OL].Asterisk.org,[2010-5-17].http://www.asterisk.org.
[6]张登银,孙精科.VoIP技术分析与系统设计[M].北京:人民邮电出版社,2003.
[7]鸟哥.鸟哥的Linux私房菜[M].2版.北京:人民邮电出版社,2007.
[8]陈锡生,糜正琨.现代电信交换[M].北京:北京邮电大学出版社,1999.