APP下载

基于无线Mesh网络的嵌入式网关研究与应用

2011-10-21史东冬

大众科技 2011年5期
关键词:网关路由嵌入式

史东冬 杨 清

(桂林电子科技大学信息与通信学院,广西 桂林 541004)

基于无线Mesh网络的嵌入式网关研究与应用

史东冬 杨 清

(桂林电子科技大学信息与通信学院,广西 桂林 541004)

分析了无线Mesh网络的概念及其特性,介绍了一种在无线Mesh网络上基于Linux操作系统的嵌入式网关实现方案。具体讲述了基于ARM9的软硬件平台的构建,同时详细阐述了Linux下的网络编程的实现方法,用Socket编程来实现此平台与计算机的网络通信。并对系统AODV路由协议的实现进行了详细分析。最后结合实例,通过视频监控系统对无线网关进行验证,证明了该方案的可行性和有效性。

socket;无线Mesh网络;嵌入式Linux;AODV

(一)引言

随着无线通信和网络技术的飞速发展,使得无线Mesh网络(Wireless Mesh Network,WMN)应用于数字化、智能化及微型化的嵌入式系统成为可能。由于它具备组网迅速、结构灵活、传输速率大、可靠性强、成本低等突出的优点,适应了市场对网络视频监控的新需求,势必拓宽视频监控的应用范围。 本文介绍一个在嵌入式Linux系统和无线Mesh网上的网络应用,建立一个基于Linux和S3C2440的嵌入式网关平台,通过Socket编程使这个平台与计算机建立网络通信,并给出服务器端和客户端的详细解释。并提出一种由多个监控节点、网关和远程监控中心构建的基于无线Mesh技术的视频监控系统。

(二)无线mesh网络结构及嵌入式网关

为了将无线监控终端设备接入网络实现远程监控,根据条件构建了基于S3C2440和嵌入式Linux的无线网关平台。考虑到业务功能的灵活性,我们实现一种简单通用的视频监控网络平台,其网络结构如图1所示。基于无线Mesh网络的嵌入式视频监控网络结构由多个无线视频监控终端节点、一个无线网关节点以及客户监控主机组成。视频监控终端节点和无线网关节点都是采用基于Linux的ARM9平台,将台式电脑作为远程监控主机。

图1 无线Mesh 网络的嵌入式视频监控网络结构图

结合业务需求,WMN选择Ad Hoc典型按需距离矢量(AODV)路由协议来实现多跳功能。AODV路由协议是一种比较成熟且应用广泛的路由协议,具有较低的内存和处理开销,而且源码开放、实现简单。

无线网关具有管理维护整个Mesh网络正常运行以及数据转发到其他网络的功能。视频监控终端完成现场视频流采集压缩、无线路由以及数据收发的功能,将采集的视频流压缩后经最佳无线路由发送到无线网关,无线网关通过以太网将压缩的视频流转发到远程监控主机,远程监控主机对接收到的视频流进行数据处理,从而完成系统实时监控功能。

1.嵌入式网关硬件方案设计

嵌入式网关硬件结构如图2所示。

本系统采用的嵌入式微处理器是三星公司S3C2440芯片,S3C2440芯片基于ARM920T内核(16-/32-bit RISC CPU),采用五级流水线和哈佛结构,提供 1.1MIPS/MHz的性能,是高性能和低功耗的硬宏单元,基于ARM920T内核的S3C2440微处理器是一个多用途的通用芯片,它内部集成了微处理器和常用外围组件,可用于各种领域,特别适用于手持设备。它是应于手持设备的低成本实现,提供了更高性价比。

根据业务的需要我们还需要在 S3C2440为主控芯片的基础上对资源进行扩展,扩展的主要模块包括电源模块、数据采集模块和网络传输模块。外接电源模块采用了太阳能电池和备用蓄电池双重供电方案。在太阳能电池能量充足的情况下,使用太阳能电池供电,否则使用备用蓄电池。数据采集模块用来收集视频监控系统中采集到的音频数据和视频数据,它对视频进行 H.264格式的压缩编码,将数据流经 USB控制器扩展的USB2.0接口输出到RT73模块。再经由DM9000A以太网控制器模块通过连接互联网转发到远程监控主机。其中RT73模块包含一个集成了MAC和基带处理器的芯片和一个集成了功率放大器和天线的芯片,支持 IEEE 802.11b/g无线传输。

嵌入式网关如图1所示:

图2 嵌入式网关硬件结构图

2.嵌入式网关软件设计

(1)嵌入式网关软件结构

嵌入式网关软件框图如图3所示。

Linux的网络功能是与其内核紧密相连的,并且在网络支持方面Linux要优于其他操作系统,同时其多用户、多任务、低成本、可用于多种硬件平台的特性也使得它在网络开发方

图3 嵌入式网关软件框图

(2)主要软件实体

1)Linux操作系统

Linux操作系统采用成熟稳定的2.6.28内核。配置时根据硬件资源选择Flash和SDRAM的大小,在网络子项中选择对TCP/IP和IEEE 802.1lb/g协议的支持,除去不需要的选项以缩减内核体积,执行编译后得到Linux的内核映像文件,再根据自己的需要定制yaffs文件系统镜像。

2)驱动程序

Linux操作系统通过调用驱动程序的接口函数实现硬件访问请求。RT73和DM9000的驱动程序分别控制相应芯片完成数据接收和转发,USB接口控制和网络传输控制功能,采用中断触发/响应机制协调工作。

3)系统初始化程序

系统初始化即引导加载程序,初始化硬件设备、建立内存空间的映射图,将系统的软硬件带到一个合适的状态,以便为我们最终调用操作系统内核准备好正确的环境。

4)AODV路由协议栈

无线路由是系统的重要组成部分,移植AODV路由协议是实现系统无线路由的基础。编译 AODV路由协议源程序,对Linux内核进行配置,编译出支持ARM体系结构的可执行文件并将其烧录到无线网关。

5)无线传输及网关软件

网络传输部分采用了Linux下的Socket网络编程对接收到的视频数据进行传输。网络传输程序完成视频流数据包的封装,经以太网传送到客户监控主机。为保证视频流的实时性,使用 IEEE802.11b/g标准完成压缩视频流的无线接收和转发。

(3)嵌入式Linux下的AODV协议开发

结合Ad hoc网络的路由协议和无线Mesh网络自身的特点,本网关决定采用AODV(Ad-hoc On-Demand Distance-Vector)协议作为系统路由协议,AODV路由协议是针对移动 Ad hoc网设计的,它是按需式和表驱动式两者的结合,同时具备了两种思想的优点。AODV路由算法属于按需路由算法,即当有源节点需要向某目的节点通信时,才在节点间建立路由,路由信息不会一直被保存,具有一定的生命期(TTL),若这条路由已不需要,则会被删除。

下面简单描述路由建立的过程,如图4所示。

图4 AODV路由建立过程

当源节点S要给目的节点D发送数据包,但路由表中没有到达D的路由时,S会发起一个路由发现过程。在路由发现过程中,将缓冲数据包。AODV路由发现过程如图所示。

源节点 S在整个网络中广播路由请求信息(Route Request,RREQ)。除了几个标志位之外,RREQ包还包括跳数、RREQ标识符、目的地址和目的序列号、发端地址和发端序列号。跳数区域包括到发起RREQ消息的源节点的距离、源节点S。这时RREQ到当前位置所经过的跳数。RREQ ID是与发端地址相结合,唯一标识一个路由请求。这用来保证即使节点从它的邻节点多次接收到了RREQ消息,它都只需要重新广播一次该路由请求消息,以避免广播引起的拥塞。

当节点接收到RREQ包时,它执行以下过程。

1)产生或更新到上一跳节点的路由,RREQ包是从上一跳节点接收的。

2)核实RREQ ID和源地址,以确定是否已经接收该RREQ。如果是,则丢弃该包。

3)跳数增加1。

4)产生或更新到源节点S的方向路由。

5)如果该节点就是请求的目的节点,则产生一个路由应答(Route Reply,RREP),并将该RREP包沿着产生的到源节点S的方向路径发送给发起者。

6)如果该节点不是目的节点,但有到目的节点的确定路径,它将依赖目的节点的唯一标识给源节点发起一个RREP包。

如果中间节点应答RREQ,可能是这种情况:目的节点不能听到任何RREQ消息,因此它没有到源节点的反向路由。如果RREQ设置了无条件的RREP标识,应答的中间节点将给目的节点发送一个无条件的RREP。这样就在目的节点设置了到RREQ发起者的路径。

7)如果节点没有产生RREP且TTL≥1,则更新RREQ并重新广播。

节点接收到RREP消息后,将产生或更新其到目的节点D的路由。跳数逐跳加 1,最新的 RREP将转发给相应的 RREQ源发端。最终,如果存在一条到达目的节点的路径,源节点S将接收一个RREP消息。这时,缓冲的数据包就可以通过新发现的路径发送到目的节点D了。

(4)无线网络传输及网关程序设计

为了网关系统与其他监控节点的建立网络数据连接,需要用到 Linux上的套接口编程,我们可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。如图5所示为基于TCP协议的客户端/服务器进程图。

网关服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果网络内有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。

图5 基于TCP协议的客户端/服务器进程图

服务器端主要代码如下:

pid_t fd;

struct sockaddr_in serveraddr;//定义网络套接字地址结构//

/*创建一个套接字,用于监听*/

listensock = socket(AF_INET,SOCK_STREAM,0);

bzero(&serveraddr,sizeof(struct sockaddr)); //地址结构清零

serveraddr.sin_family = AF_INET; //指定使用的通讯协议族

serveraddr.sin_addr.s_addr = htonl(INADDR_ANY); //指定接受任何连接

serveraddr.sin_port = htons(5000); //指定监听的端口

bind(listensock,(struct sockaddr*)&serveraddr,sizeof(structsockaddr_in));

//给套接口绑定地址

listen(listensock,1024);//开始监听

connsock = accept(listensock,(struct sockaddr *)NULL,NULL);

//建立通讯的套接字,accept 函数,等待客户端程序使用connect 函数的连接

……

close(sockfd);

exit(0);

(三)系统测试

把本系统应用于某景区进行测试,将3台视频监控终端安置于监控点,各监控点之间的距离约为200m。与无线网关平台无线连接并组成无线多跳网络。在启动系统后,各个视频监控终端将采集到的视频流经MPEG-4软件压缩后通过无线网卡经最佳路由发送到无线网关。无线网关对接收到的视频流经以太网转发到远程监控主机。无线网关还具有识别和管理各个视频监控终端的功能。远程监控主机对接收到的视频流进行数据实时处理。实验测试表明,系统视频流畅、图像清晰、实时性强,无线网关可以完成连接各无线视频监控终端并且将其监控到的视频转发给远程监控主机的功能。

(四)结语

无线Mesh网络具有组网的快速灵活性和节点的分布性等优点,可以提供高速的接入速率,优于其他的接入方式。此外,其以少量的基础设施构成覆盖范围广的高速无线网络,投资较小,网络建设时间短,便于升级。随着科学家和工程师对无线Mesh网络的重视程度日益提高和研究的不断深入,更加成熟的无线Mesh网络系统将很快得到推广和应用。

国内在这方面虽然还处于起步研发阶段,但已经有了一些成熟的产品。笔者根据无线Mesh网络的路由协议特点,在嵌入式平台下实现了一个简单实用的无线网状网络下的无线网关系统。实验证明,该无线网关系统可以和外网连接,实现真正意义上的无缝连接。

[1] KEITH R.Mesh wireless networking[J].IEEE Communications Engineering,2003(10/11):44-47.

[2] 邹思轶.嵌入式 Linux设计与应用[M].北京:清华大学出版社,2002,(2).

[3] 任智,郭伟.多跳无线网路由协议研究进展[J].电信科学,2003,19(8):10-16.

[4] 杨树清,王欢.Linux环境下 C 编程指南(第二版)[M].北京:清华大学出版社,2010,(2).

TN911

A

1008-1151(2011)05-0024-03

2011-02-23

史东冬(1985-),男,吉林四平人,桂林电子科技大学信息与通信学院硕士,研究方向为无线通信;杨清(1986-),女,江西临川人,桂林电子科技大学信息与通信学院硕士,研究方向为光通信技术。面优势明显。本系统设计选择采用成熟稳定的 Linux2.6.28内核。系统软件设计主要工作包括底层驱动程序开发和上层应用程序开发。

猜你喜欢

网关路由嵌入式
铁路数据网路由汇聚引发的路由迭代问题研究
信号系统网关设备的优化
探究路由与环路的问题
搭建基于Qt的嵌入式开发平台
嵌入式软PLC在电镀生产流程控制系统中的应用
基于预期延迟值的扩散转发路由算法
LTE Small Cell网关及虚拟网关技术研究
应对气候变化需要打通“网关”
PRIME和G3-PLC路由机制对比
Altera加入嵌入式视觉联盟