• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术文章 > 一种具有多跳功能的无线VoIP终端设计

一种具有多跳功能的无线VoIP终端设计

录入:edatop.com     点击:

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页面的用户接口输入参数来配置终端的参数。

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路由协议实现了多跳的功能。经过三台终端的联合测试,多跳通话可以保证良好的语音效果。

作者:杨  森,习  勇,王丽洁

(国防科学技术大学 电子科学与工程学院  湖南长沙  410073)

来源:中电网

上一篇:串行RapidIO提升模块化基站设计
下一篇:PTN是移动回传网的最佳选择

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图