一种具有多跳功能的无线VoIP终端设计
扫描二维码
随时随地手机看文章
传统的工厂生产线调度系统通信都是通过有线电话实现的。这种有线连接方式存在着无法满足移动通信需求,线缆设施易受损,且布设和维护成本高等诸多问题。基于IEEE 802.11协议的无线局域网接入技术拥有广泛的应用基础,具有传输速率快,覆盖范围广等突出优势,可以很好地解决这些问题。
为了能在基于IEEE 802.11协议的无线局域网上实现语音通信目的,必须采用无线VoIP(Voice overIP)技术。考虑到一般工厂的通信范围为l km左右,目前采用基于IEEE 802.11的技术,在空旷地带的传输距离只有大约200 m,因此考虑采用多跳的方式增加通信的覆盖范围。本文提出了一种基于IEEE 802.11协议的无线VoIP终端设计方案,并通过在嵌入式终端上实现Ad Hoc路由协议AODV(Ad hoc On-demand Distance Vector,按需距离矢量路由协议),使终端具有了多跳通话功能。
1 相关技术及协议
1.1 VoIP
VoIP是利用IP网络实现语音通信的一种先进通信手段,是基于IP网络的语音传输技术。其基本原理是利用电话网关服务器之类的设备将电话语音数字化,将数据压缩后打包成数据包,然后把这些语音数据按IP等相关协议进行打包并通过IP网络把数据包传输到目的地,目的地收到这一串数据包后,将数据重组、解压缩后再还原成原来的语音信号,这样就达到了通过网络传送语音的目的。
采用VoIP技术进行语音传输的最大优势在于能够以报文的形式传递音频数据,不占用固定信道,并且采用了先进的数字信号处理技术,以降低数据量,可以将传统的64 Kb/s语音信号压缩成6~8 Kb/s,从而有效地节省了带宽,同时由于不需要单独建立通信网络,大大降低了通信费用。
1.2 IEEE 802.11无线技术
IEEE 802.11是由IEEE定义的无线网络通信工业标准,目前主流的IEEE 802.11协议主要有IEEE 802.11a,IEEE 802.11b和IEEE 802.11g。IEEE 802.1la工作于5 GHz频段,使用正交频分复用(OFDM)调制技术作为传输方案,支持6~54 Mb/s的传输速率,802.11a的优势在于传输速率快(最高达54 Mb/s)且干扰少,但价格相对较高。IEEE 802.11b工作于2.4 GHz频段,使用补码键控(CCK)调制和直序列调频(DSSS)技术,支持1~11 Mb/s的传输速率,802.11b的优势在于价格低廉,但速率较低(最高为11 Mb/s)。IEEE 802.11g构建在已有的IEEE 802.11b物理层与介质访问控制层标准基础上,同样选择2.4 GHz作为工作频段,由于采用了OFDM调制技术,可实现最高54 Mb/s的传输数率。由于其仍然工作在2.4 GHz频段,并且保留了IEEE 802.11b所采用的CCK技术,可与IEEE 802.11b的产品保持兼容。
1.3 AODV路由协议
AODV是一种基于距离矢量的按需路由算法,是专为移动Ad Hoc网络设计的路由协议,它的处理过程简单,路由开销以及存储开销都较小,能对链路状态的变化做出快速反应,并通过在控制报文中引入序列号,确保在任何时候都不会形成路由环。由于AODV路由协议性能优越,且实现复杂度低,被IETF(InternetEngineering Task Force)的MANET工作组认为是无线自组网最好的候选路由协议之一。因此,本设计采用AODV作为路由协议的实现方案。
2 终端硬件设计
终端的硬件架构如图1所示,采用英飞凌公司的高速率ADM5120嵌入式微处理器作为主要器件,同时在终端集成了存储器模块、语音处理模块、FXS连接模块、IEEE 802.11b/g无线模块等共同构建终端的硬件平台。
(1)处理器ADM5120
ADM5120是一种基于MIPS构架的高度集成、高度灵活的SoC处理器,内置了MIPS 32内核,工作主频最高可达175 MHz,内部集成了8 KB指令缓存和8 KB数据缓存,对外提供8/16位的LOCAL BUS(支持标准的ROM/FLASH接口)、32位的SDRAM接口,1路UART接口。ADM5120内部还集成了1个Switch引擎、5路10/100 Mb/s的PHY芯片,可对外提供5个10/100 Mb/s的以太网接口。ADM5120是终端通信控制和管理的核心,主要用于完成操作系统的运行、资源的管理和分配、与各个模块的接口和通信等功能。
(2)语音处理模块
采用了高性能的DSP(VINETIC-2CPE),具有很强大的数字信号处理能力。用于完成处理模拟电话信号,语音压缩包,并提供实时压缩包的缓冲,自适应回声抵消,静音检测,DTMF信号产生、译码等功能,且不需要另外的存储单元。
(3)FXS连接模块
终端通过一个带有DC/DC转换功能的SLIC-DC芯片连接模拟电话线路。通信过程中,模拟话音信号通过RJ-11电话接口经SLIC和CODEC电路转换后,将产生的PCM流送到语音处理模块中进行处理。SLIC即用户线接口电路,主要完成用户状态检测和语音信号输入输出。它能够检测电话为挂机状态还是摘机状态,并产生高电压驱动振铃。CODEC(编解码电路)由ADC与DAC电路构成。ADC将模拟电话中的模拟信号转换为可通过’VoIP网络传输的数字信号。DAC将数字信号转换为模拟电平,以驱动模拟电话。
(4)IEEE 802.11b/g无线模块
IEEE 802.11b/g无线模块实现空中无线接口,完成无线局域网的接入功能。终端提供一个MiniPCI接口,采用的是美国Atheros公司AR2413芯片组的无线网卡WMIA-165G,支持IEEE 802.11b/g标准,可提供54 Mb/s高速无线连接。
3 终端软件设计
终端采用了主流的嵌入式Linux操作系统,Linux具有源码开放,稳定性与安全性较高,移植和扩展能力较好的特点。如图2所示,采用模块化的设计思想对终端软件进行设计。
硬件驱动层:主要功能是实现对IEEE 802.11b/g无线模块、DSP芯片、以太网接口及串口等底层硬件设备的驱动控制。针对终端的无线网卡类型,IEEE 802.11b/g无线模块中采用了madwifi(Multiband Atheros Driverfor wifi)驱动。madwifi是为Atheros系列芯片IEEE802.11a/b/g无线网卡在Linux系统下实现的驱动程序。
Linux内核层:为语音数据的压缩处理和语音包的实时传输提供了保证。TCP/IP协议软件栈提供了对TCP/IP的支持,考虑到语音数据的实时性要求,终端的语音传输采用UDP方式实现。建立在UDP之上的RTP协议用于保障数据流的实时可靠传输。语音处理模块提供了对G.723等音频编解码软件的支持。在网络协议栈中包括了实现多跳通话功能的AODV路由协议。
应用程序层:包括电话应用程序接口TAPI(Telephony Application Program Interface)3.0和Web服务器两部分。TAPI 3.0集成了传统电话的媒体流控制功能,并封装了对底层电话硬件进行操作的功能,通过将呼叫控制的功能抽象出来,达到屏蔽不同的、不兼容的通信协议的目的。通过TAPI 3.0,的编程接口可以方便地自定义信令协议,完成点对点的拨号过程。同时为了便于使用,在终端中植入了一个支持CGI的、非常适合于嵌入式系统的Boa Web Server,使用户可以通过Web页面的用户接口输入参数来配置终端的参数。[!--empirenews.page--]
3.1 无线模块驱动编译
所有的Atheros芯片无线网卡基本都可以使用madwifi驱动,驱动程序源码madwifi-0.9.4.tar.gz可以从http://madwifi.org/上下载。在进行无线模块驱动开发时,首先要配置并编译Linux内核,使其支持MiniPCI网卡,然后针对终端环境修改madwifi-0.9.4目录下的Makefile,再使用make命令进行编译,生成适用于MIPS的驱动程序模块,并使用insmod命令将模块在终端的Linux中进行加载。加载成功后,用Linux下的无线局域网工具命令iwconfig对无线网卡进行配置,注意配置时要将无线网卡的工作模式设定成为Ad Hoc模式。
./wlanconfig ath0 destroy
./wlanconfig ath0 create wlandev wifi0 wlanmode adhoc
3.2 AODV路由协议的实现
Linux操作系统的内核并不直接支持按需路由,因此要实现AODV路由协议需要对操作系统进行相应的扩充和修改。
Linux操作系统的路由体系结构按功能可分为转发功能模块和路由功能模块,可以在转发功能模块保持不变的情况下,通过修改路由功能模块,实现不同的路由协议。转发功能在Linux内核中实现,根据需要发送的数据分组目的地址;查找路由表,按照最长前缀匹配原则寻找与目的地址匹配的表项,如果找到匹配项,则将数据分组发送到相应的网络接口;否则就丢弃该分组。路由功能模块作为后台进程在用户空间运行,主要负责与其他网络节点进行信息交流,采用适当的路由算法建立路由,更新和维护内核路由表。
目前发布的针对AODV协议的实现方案中多数协议的实现都采用了Netfilter功能框架。Netfilter是Linux核心中的一个通用架构,用于实现数据包过滤、状态保持、NAT以及安全等多种网络功能。Netfilter结构提供了一系列的“列表”(tables),每个列表由若干个“链”(chains)组成,而每条链中又可以有一条或数条规则(rules)进行规范,规则的定义采用“如果数据包头符合这样的条件,就这样处理该数据包”。当一个数据包到达一个链时,系统就会从第一条规则开始查看是否符合该规则所定义的条件。如果满足,系统将根据该条规则所定义的方法处理该数据包;否则,继续检查下一条规则。如果该数据包不符合该链中任何一条规则的定义,系统就会根据该链的缺省策略处理该报文。
Linux在内核2.4版本以上的系统中提供了五个hook注册点,这些hook点处在数据分组流经协议栈的几个关键位置,用户可以在这些位置注册自己定义的操作函数,流经hook点的数据分组将执行函数的操作。如图3所示,Netfilter便由处于Linux协议栈中的五个hook函数组成。
在AODV协议的实现过程中,Netfilter的配置是协议正常运行的前提,需要在内核中注册hook函数,但并不是所有的Linux系统都默认启用Netfilter,因此需要在内核配置选项中进行配置并编译进内核。进入Linux内核源代码安装目录,输入make manuconfig命令进入内核配置主菜单,通过空格键选择:
Networking options-->[*]Network packet filtering(replaces ipchains)
IP:Netfilter Configuration--><*>Userspaee queueing via NETLINK
4 结语
结合IEEE 802.11无线技术和VoIP技术的优势,采用了高性能的微处理器ADM5120和功能稳定强大的嵌入式Linux操作系统作为软件平台,构建了一个基于IEEE 802.11b/g技术的无线VoIP便携式终端。通过在终端的系统上加载AODV路由协议实现了多跳的功能。经过三台终端的联合测试,多跳通话可以保证良好的语音效果。