前言
随着网络融合的不断演进,IP网络已由当初的数据应用向多媒体转变,基于IP网络的语音通信技术成为研究的热点。传统的语音通信是利用电路交换技术,其特点是通话时需要建立端对端的专用通信链路,语音质量好,但是成本高,不易扩展增值业务。而VOIP利用IP网络做承载网,在通话时将模拟信号经过采样、数字化、压缩编码、打包分组、分配路由、存储交换、解包解压等一系列交换处理,在IP网或互联网上实现语音通信。它促进了网络资源利用,降低了语音业务成本,在软交换的控制下易于实现增值业务,但同时也存在语音延时的问题。近年来,随着系统软件、DSP芯片的性能、IP网络技术、语音压缩编码算法的发展,使VOIP技术获得了空前的应用,国际国内的各大主流运营商都已部署了软交换,这为嵌入式语音网关的发展提供了难得的机遇。本语音网关提供了普通电话机接入IP网络的接口。
关于SIP协议
SIP的特点及发展方向
目前基于VOIP的基本通信协议有四种:H.323协议、SIP协议、MGCP和H.248协议。SIP称为会话发起协议(Session Initiation Protocol),与其他的VOIP协议相比较,其优点是协议本身简单、易扩展、支持移动及终端智能。SIP是Internet工程任务组(IETF)提出的建议中的一项协议,主要是考虑到在下一代网络(NGN)中,由于IP产品和IP网关将在网络中得到大规模使用和集成,使得端到端都可以采用IP,以实现纯IP的业务应用。基于纯IP的SIP借鉴了HTTP和SMTP,结构简单并具有可扩充性和可扩展性,此外,SIP还提供良好的QoS支持。对于NGN在IP网络上实现VOIP和多媒体通信来讲,SIP在全面满足NGN特性要求的应用上具有独特的优势,必将成为下一代网络VOIP的重要解决方案。SIP是一个应用层的信令控制协议,利用SIP可以实现会话的发起、建立和释放,并支持单播、组播和移动性。另外还可以与SDP(Session Description Protocol)配合,动态调整和修改会话属性,如通话带宽、传输媒体类型及媒体编码格式。移动通信标准组织已经决定在SIP基础上建立第三代通信系统(3G)的全IP网络。
SIP网络组成
SIP采用客户机/服务器的工作式,SIP网络体系由两类组件构成:用户代理(User Agent)和网络服务器(Network Server)。用户代理又分为代理客户端(UAC)和用户代理服务器(UAS),其中UAC负责发起SIP呼叫请求,UAS负责对呼叫请求作出响应。网络服务器包括代理服务器、重定向服务器、注册服务器,代理服务器用来将SIP用户请求和响应发到相应的下一代;重定向服务器则提供地址解析服务,通常将SIP呼叫的目的地址映射成零个或多个新地址;注册服务器接受终端的登记请求,对用户的身份进行验证及授权,记录终端的SIP地址(SIP URL)。SIP的基本功能主要包括五个方面:用户定位、用户有效性、用户能力、会话管理、会话建立,从SIP的结构特点来说,它不是一个独立的通信系统,但是,能够和其他的IETF协议一起使用来完成多媒体通信。
语音网关的体系结构设计
语音网关的实时处理性能对语音通信的质量起着重要作用,本语音网关采用了双处理器的结构,即以嵌入式微处理器和数字信号处理器为核心的硬件体系结构。图1展示了一种语音网关的体系结构,在系统组成上充分考虑到它的实时处理性能。
图1 语音网关的体系结构(略)
嵌入式操作系统VxWorks运行在MPC850处理器上,在其外设驱动的支持下,提供给上层应用程序API接口,以便应用程序开发调用。微处理器处理通信协议和应用程序方面的操作,用嵌入式实时操作系统VxWorks进行系统任务的实时任务调度。DSP系统程序主要完成DSP芯片的引导及初始化,通过HPI接口与微处理器通讯,给上层应用程序提供有关语音编解码、信号音处理的相应接口。该体系结构采用模块化层次结构进行设计,具有层次性好、易扩展、配置灵活、性能优越等特点。
语音网关的硬件实现
系统硬件芯片功能
根据图1的语音网关体系结构,其硬件实现框图见图2,采用Motorola的32位高性能嵌入式微处理器MPC850和专用于语音处理的DSP芯片AC48802C为核心部件构建语音网关的硬件平台。
图2 语音网关的硬件框图(略)
MPC850是Motorola公司MPC850系列中性能更加卓越的一款通信控制处理器,它适合各种控制应用,特别适用于通信和网络系统高端产品的设计开发,比如网关、路由器等 。AC48802C是AudioCode公司开发的一款专用于小端口语音处理芯片,提供了丰富的软件开发包 ,提供了G711A、G711U、G723.1、G729等常用编码算法、也支持Modem音及传真音的检测,这为基于Modem的拔号入网及基于IP网络传真提供了良好的支持。基于AC48802C开发的语音网关具有周期短、性价比高的特点,本语音网关主要用来完成语音的编解码。CPLD逻辑芯片使用XC95144X,在本语音网关主要用来完成CPU的复位、系统的时钟分频、存储器的读写控制等。ROM采用Intel的E28F320J3A主要用来存放系统的引导程序和应用程序,另外还支持通过网口的在线升级系统的应用程序及系统程序,RAM主要用来存放系统运行的时数据及中间结果。RS232主要在系统开发时进行设备调试,并为设备的CLI网管提供支持。
语音信号处理流程
本语音网关的语音信号处理流程,从电话侧来模拟音频信号送入SLIC芯片,进行信号放大、去干扰的前置处理,然后送入CODEC芯片进行A/D转换,并被转换为PCM编码的音频信号,再送入DSP芯片进行语音的压缩编码,编码格式可以选用G711A、G711U、G723.1、G729等,即转换成RTP包格式的PayLoad(有效数据净荷)。信号送入CPU,通过其上运行的VxWorks自带的协议栈对PayLoad进行封装、打包,最后通过以太网交换芯片传输到目的网络。语音网关对从以太网收到的语音包则采用相反的处理流程。
语音网关的软件实现
根据图1所给出的语音网关体系结构,该语音网关的软件系统主要包括嵌入式操作系统和SIP协议族。操作系统选择美国Wind River System公司推出的VxWorks,VOIP协议栈选择开源的VOCAL SIP协议。VxWorks是专门为嵌入式系统设计开发的可裁减、高性能的操作系统,以其高度的可靠性和卓越的实时性被广泛应用于通信、军事、航天等实时性要求极高的领域中。VxWorks的TCP/IP协议栈部分在与BSD4.4版本的TCP/IP兼容的基础上,网络处理能力和实时性有较大提高,这使程序易于移植且使网络处理速度及实时性得到提高。其协议栈支持的协议非常丰富,如DHCP、PPP、SNMP、HTTP、TELNET等等,这为语音网关的网络化管理、多种方式的网络接入等功能的后续开发提供了支持。VxWoks系统下的软件可分为两大部分:板级支持包BSP(Board Support Package)和应用程序代码。采用模块化设计方法,把依赖于硬件环境的东西独立出来,放入称为BSP的组件中。VxWorks在目标机上运行时需要相应的BSP的支持,BSP向上层软件提供一致的接口,主要包括硬件的初始化、总线内存地址映射、内存分配等。
具体实现时,使用VxWorks的集成开发环境Tornado2.2进行开发,采用C语言进行程序设计。对于DSP部分可以利用AuddioCode公司提供的开发包,里面有其驱动程序及RTP编解码有关流程,其他硬件的接口调用VxWorks中BSP有关API函数,媒体网络传输则利用嵌入式操作系统提供的Socket接口来实现。
应用程序代码在该网关系统中就是SIP协议族及有关应用程序。系统实现时选用的协议族如图3所示,除了语音通话所必需的协议外,还保留了HTTP、TFTP协议。
图3 语音网关选用协议(略)
(1)SIP协议用来完成呼叫的建立、管理。SDP用来与SIP协议中消息配合使用,SDP描述有两个目的,一是告知某会话的存在,二是给出参与该会话所必须的信息。SDP描述包括会话名和目的、会话激活的时间区段、构成会话的媒体、接收所需的信息(地址、端口、格式)和会话所用的带宽信息。
(2)RTP用来完成封装以G711A、G711U、G729编码的语音数据,以便在网络上传输。RTCP用来与RTP配合使用,完成语音数据的实时传输。
(3)TFTP用来实现系统的应用程的远程升级。
(4)HTTP协议使设备内做一个嵌入WEBServer,这样可以使用普通的IE浏览器即可管理设备。
整个系统采用多任务并行方式执行。硬件检测模块,如DSP、SLIC采用轮询的方式实时检测相关硬件状态,如果检测到新事件产生,则通过消息方式告知相应事务处理模块。事务处理模块在本系统中主要指 系统呼叫主控任务,接收到消息事件后,根据消息内容以及自身当前状态进行相关处理流程,完成一次事务的操作。系统应用程序框图(图
4)及各模块功能如下:
图4 系统应用程序框图(略)
a)系统呼叫主控任务模块实现对整个系统的消息的集中处理及各种呼叫、控制功能;
b)系统呼叫主控任务模块调用函数启动/停止定时器。定时器超时,通过消息队列通知系统呼叫主控任务模块处理相应超时事件;
c)系统呼叫主控任务模块定时轮询DSP、SLIC,进行硬件扫描,当检测到DSP和SLIC的事件时,DSP或SLIC模块通过消息队列报告系统呼叫主控任务模块。系统呼叫主控任务模块通过函数控制DSP和SLIC执行特定动作,例如,对DSP,激活DSP、放拨号音、停止拨号音、模拟拨号等,对SLIC,FXS开始/停止振铃;
d)SIP协议栈处理网络上的SIP消息交互,同时以回调函数的方式告知系统呼叫主控任务模块。SIP协议栈接收到协议消息,调用系统呼叫主控中的相应处理模块,系统呼叫主控通过回调函数进行发起SIP呼叫、结束SIP呼叫等操作;
e)媒体传输模块负责RTP/RTCP数据流的接收和发送,包括和DSP模块交互RTP/RTCP数据包,提供接口给SIP协议栈,分配所需端口地址,提供接口给系统呼叫主控任务模块,申请和释放socket资源。
测试与结束语
为了验证本语音网关的基本通话功能,搭建了以下的测试环境(图5)。
图5 测试环境(略)
本 测试环境搭建在局域网,两个语音网关及SIP服务器均在同一网段。首先,两个语音网关同时注册上ONDO Server服务器,再通过语音网关1下话机1拔打语音网关2为话机2分配的号码,在此过程中通过免费协议分析软件Ethereal抓包,分析抓包得出本语音网关SIP信令流程符合RFC3261规范流程,双方通话时的RTP流正常,RTP包中封装的语音编码格式也正常。通话过程中语音质量良好,不存在语音延迟。
本文提出的基于嵌入式的语音网关硬件利用高性能嵌入式微处理器MPC850和专用语音处理芯片AC48802C为核心构成,软件采用嵌入式实时操作系统VxWorks及开源SIP协议栈为主,通过了与SIP软交换ONDO Server平台的基本语音对通测试。 |