logo资料库

论文研究-基于TinyOS的无线传感器网络数据汇聚协议研究 .pdf

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
中国科技论文在线 http://www.paper.edu.cn 基于 TinyOS 的无线传感器网络数据汇聚协议研究 雷鸣,冯驰 哈尔滨工程大学信息与通信工程学院,哈尔滨 (150001) E-mail:greatmyth6@gmail.com 摘 要:无线传感器网络是一种能量和计算能力受限的应用相关的网络。CTP 是一种基于 TinyOS 的应用于无线传感器网络的数据汇聚协议。该协议采用汇聚树思想,在网络中设置 若干汇聚根节点,节点通过与邻居节点交换相互的链路质量估计信息来选择父节点作为下一 跳,从而建立起一条可靠的到某一汇聚根节点的路由。本文分析了 CTP 的原理和实现机制, 并编写了测试程序对其进行仿真。仿真结果表明,该协议在网络通信量较小时具有良好的性 能,传输效率较高,适用于小型环境监测无线传感器网络。 关键词:无线传感器网络;数据汇聚;TinyOS;链路估计 中图分类号:TP393 1.引言 无线传感器网络[1]是集信息采集、信息传输和信息处理于一体的综合智能信息处理系 统,它包含大量传感节点,这些节点被随机密集地布置于待测区域中,以自组多跳的网络方 式将监测数据通过无线传输聚合到汇聚节点,经过数据融合后传给远程用户中心进行处理。 不同于传统网络,无线传感器网络的能量资源十分有限,研究表明数据传输消耗了其总能量 的 70%,因此减少数据传输量,优化传输路径是延长 网络寿命的有效手段。通过数据汇聚 来减小数据冗余、数据碰撞和传输量是减少能耗最重要的途径之一[2]。传感器网络的路由是 以数据为中心的路由,在数据汇聚中作用至关重要。 TinyOS[3]是 UC Berkeley(加州大学伯克利分校)开发的开源操作系统,专为嵌入式无 线传感器网络 设计,现已 广泛应用 于无线传感 器 网络研究和应 用领域。它 基于组件 (Component-Based)的架构方式,使快速实现各种应用成为可能,同时能够突破传感器存 储资源少的限制。本文研究了一种基于 TinyOS 2.x 的数据汇聚协议 CTP(Collection Tree Protocol),深入分析了 CTP 的原理和实现机制,在 TinyOS 2.x 上对其进行编程实现并在自 带的仿真工具 Tossim[4]上进行了仿真,结合仿真结果对 CTP 性能进行了分析。 2.CTP 原理 将监测数据汇聚到基站(sink)是无线传感器网络应用的常见需求。一种有效的方法是 建立至少一棵汇聚树[5],汇聚树的根节点作为基站,其它节点都从邻居节点中选择一个父节 点作为下一跳。一方面节点自身采集数据,另一方面节点转发来自其它节点的数据,通过汇 聚树最终传递到基站。当网络中包含有多个根节点时,就形成了一片汇聚树林。 CTP 就是这样一种基于树状结构的汇聚协议,通过将网络中的一些节点设为根节点, 其它节点根据路由梯度形成到根节点的路由,从而形成到根节点的汇聚树网络。节点并不是 向固定的根节点发送数据包,而是通过选择父节点作为下一跳隐式地选择根节点。CTP 提 供了到根节点的尽力的多跳的数据传输,它具有保证传输可靠性的路由选择机制。此外, CTP 检查包重复,抑制重复传输和路由循环。 2.1 协议总体架构 -1-
中国科技论文在线 http://www.paper.edu.cn 发送队列 路由表 邻居表 转发引擎 数据包 收发器 父节点 路由引擎 单跳链路质量 链路估计器 图 1 CTP 总体架构 CTP 可以分为三个部分:链路估计器,路由引擎和转发引擎,这三个部分的关系如图 1 所示。其中链路估计器位于最底层,负责估计节点与邻居节点间的单跳链路质量,并维护一 个邻居表。路由引擎位于中间层,使用链路估计器提供的信息选择到根节点传输代价最小的 节点作为父节点,并维护一个路由表。转发引擎维护本地包和转发包的发送队列,选择适当 的时机把队头的包发送给父节点。 2.2 链路质量估计 2.2.1 LEEP 原理 CTP 的链路质量估计由链路估计交换子协议 LEEP(Link Estimation Exchange Protocol) 来完成。节点使用 LEEP 来估计和交换其与邻居节点间的链路质量信息。 在 LEEP 中,节点根据接收数据的成功率来估计到某个邻居节点的入站链路质量。以节 点 A、B 为例,B 作为参考节点,A 向 B 发送的总包数为 total_AB,其中 B 成功接收到的包 数为 success_AB,从而有 B 的入站链路质量: 入站链路质量 = success_AB/ total_AB 同理,出站链路质量可由节点发送的数据被某个邻居节点接收到的成功率来估计,仍以 节点 A、B 为例,B 作为参考节点,B 向 A 发送的总包数为 total_BA,其中 A 成功接收到 的包数为 success_BA,从而有 B 的出站链路质量: 出站链路质量 = success_BA/ total_BA LEEP 定义节点 A,B 之间的双向链路质量等于 A 到 B 的单向链路质量与 B 到 A 的单 向链路质量的乘积,那么 A 和 B 的双向链路质量可以表示成 B 的入站链路质量与 B 的出站 链路质量的乘积。 节点通过广播 LEEP 帧的收发成功率来估计单跳双向链路质量,由于 LEEP 帧是通过广 播方式发送的,节点 B 无法得知节点 A 是否收到,故无法计算 success_BA。但考虑到 B 到 A 的出站链路质量即 A 到 B 的入站链路质量,要解决该问题只有让 A 把它到 B 的入站链路 质量反馈给 B,从而 A,B 的双向链路质量也可用 B 到 A 的入站链路质量与 A 到 B 的入站 链路质量的乘积表示。在邻居节点间交换入站链路质量,这也是 LEEP 帧的另一个功能。 2.2.2 LEEP 帧 LEEP 帧包括头、负载、链路信息项,如下所示: -2-
中国科技论文在线 http://www.paper.edu.cn 图 2 LEEP 帧格式 LEEP 帧头中设有序列号字段 seqno,节点每广播一次 LEEP 帧,它会将该字段加 1,接 收节点只需计算连续收到的 LEEP 帧序列号的差值就可以得到丢失的 LEEP 帧数,从而估计 从发送者过来的入站链路质量。LEEP 帧的链路信息项描述的是它的邻居节点的子集的的入 站链路质量,包括 2 字节的链路层地址和 1 字节的对应入站链路质量估计。链路信息项可以 让接收节点根据自己的链路层地址查询到自己到发送者的出站链路质量。 2.3 路由的选择维护和数据转发 2.3.1 路由选择策略 CTP 使用 ETX(Expected Transmissions,期望传输值)作为路由梯度来表示双向链路质 量估计值。ETX 值越小,表示链路质量越好。根节点的路径 ETX 为 0,普通节点的路径 ETX 为其下一跳节点的路径 ETX 加上它们之间链路的连接 ETX,因此节点的路径 ETX 是该节 点到根节点之间整条路由的每跳连接 ETX 之和。链路估计器计算与邻居节点间的链路质量, 并通过 LEEP 帧广播这些链路信息。路由引擎维护了一个路由表,记录了邻居节点的路径 ETX,同时它根据链路信息计算到各邻居节点的连接 ETX,然后把两者对应相加,即算出 节点以各邻居节点为下一跳时的路径 ETX,选择最小路径 ETX 对应的邻居节点作为父节点, 从而给出一种有效的路由选择策略。 2.3.2 路由的维护和数据转发 路由引擎每隔一定时间就会根据更新的链路质量估计重新进行路由选择,主要是计算路 径 ETX 和重选父节点,然后广播一个路由帧,包括当前的父节点地址和路径 ETX。节点收 到邻居节点的路由帧后,则更新其路由表中对应的表项。 CTP 路由帧格式如图 3。其中 P 是拉路由位,它允许节点从邻居节点请求路由信息,如 果节点收到一个 P 置位的包,它应当传输一个路由帧。C 是拥塞标志位,如果节点丢弃了一 个 CTP 数据帧,它必须在下一个传输的路由帧中置 C 位。 图 3 CTP 路由帧格式 路由引擎把路由信息提供给转发引擎,后者把转发数据和本地数据封装成数据帧送入发 送队列,然后调用底层无线通信模块发送给父节点,如此层层转发最终送达根节点。转发引 擎同时还处理重传,抑制包重复,检测路由循环,并将传输是否成功的结果反馈给链路估计 器。 CTP 数据帧格式如图 4。其中 P、C 位同路由帧,THL 是已存活时间(Time Have Lived), 它主要用于解决数据包在路由循环环路中停留太久的问题。origin, SeqNo, Collect_id,Data 共同标识了唯一的源数据包,转发节点不可修改它们。 -3-
中国科技论文在线 http://www.paper.edu.cn 0 P C 7 15 保留位 ETX(单跳发送者的路径ETX) THL(已存活时间) origin(数据帧的源地址) SeqNo(源顺序号) Data(数据)…… Collect_id(高层协议标识) 图 4 CTP 数据帧格式 路由循环和包重复是可能出现在 CTP 中的问题。路由循环通常发生在节点选择的父节 点的路径 ETX 比其自身的 ETX 大的多的情况下,这可能是由于其与侯选的父节点失去连接 造成的。若转发引擎检测到上述情况,则通知路由引擎广播路由帧,上一跳节点收到后相应 地调整并更新它的路由表。包重复发生在节点收到一个数据帧,并回复一个 ACK,但 ACK 中途丢失的情况下。发送者重传这个包,而接收者又将收到它。这在多跳传输中是灾难性的, 因为重复是指数级增长的。同时路由循环使重复抑制变得更复杂,因为路由循环可能使节点 合法地收到一个包多次。因此,如果仅仅根据源地址和顺序号进行源数据包抑制,路由循环 中的包可能被丢弃。CTP 数据帧每过一跳都对 THL 字段加 1。这样 THL、origin、SeqNo 和 Collect_id 合起来标识了网络中唯一的数据包实例,采用包实例抑制则允许转发处于短暂路 由循环中的包。 3.CTP 的实现 3.1 CTP 实现的软件结构 CTP 在 TinyOS 2.x 中的实现包含 3 个主要的模块: 链路估计器(Estimator),路由引 擎(Router) 和转发引擎(Forwarder)。它们通过接口相互导通(wire)构成顶层配置 CtpP, 如图 5 所示。 图 5 CTP 顶层配置导通关系 TinyOS 模块化的结构使 CTP 功能分明,便于调用。Estimator 通过接口 LinkEstimator 向 Router 提供邻居表的链路信息。Router 选择父节点,维护路由表。Forwarder 调用接口 UnicastNameFreeRouting 获 得 当 前 的 路 由 信 息 , 然 后 转 发 数 据 到 父 节 点 , 同 时 调 用 -4-
中国科技论文在线 http://www.paper.edu.cn LinkEstimator 向 Estimator 反馈是否发送成功。它们调用了很多底层的组件,比如定时器和 AM 组件,MainC 组件则为三个模块提供了初始化。 3.2 链路估计的实现 LinkEstimatorP(Estimator)使用两种机制来估计链路质量:周期性的 LEEP 帧和数据 包。LEEP 帧由一个以指数级随机递增的定时器控制发送。 节点根据 LEEP 帧的链路估计(B 估计)始于事件 SubReceive.receive。添加 LEEP 帧头 尾,更新邻居表,这些操作在函数 processReceiveMessage 中处理,该函数找到 LEEP 帧发 送者对应的邻居表项,更新收到包数记数值和丢包数记数值。其中丢包数就是本次与上次 LEEP 帧中顺序号字段的差值。当收到包数达到一个固定值时,更新 B 估计值。 节点根据数据包的链路估计(D 估计)以发送数据包的成功率来作 ETX 值的估计。 Estimator 根据 ACK 判断数据包是否发送成功,它提供两个命令 txAck 和 txNoAck 供上层组 件调用。txAck 用于告知 Estimator 数据包发送成功,它将对应通信邻居的成功传输数据包 计数值和总传输包计数值加 1。当总传输包数达到一个固定值时,更新 D 估计值。 当 B 估计或 D 估计有更新时,均调用函数 updateETX 更新累积 ETX 值。公式如下: 根据动态移动平均原理更新累积 ETX,TinyOS 2.x 中设 α 值为 9,因此每次更新时,旧 累积ETX = (α*原ETX + (10-α)*newEst)/10 值占 9/10 的权重,而新值占 1/10 的权重。 3.3 路由引擎的实现 CtpRoutingEngineP(Router)提供 RootControl 接口允许节点被动态地配置为根节点。 Router 维护了一个路由表,里面存放了各邻居节点的路由信息,包括它们当前的父节点和路 径 ETX,通过调用接口 LinkEstimator 来取得 LinkEstimatorP 维护的邻居表中信息,然后在 定时器 RouteTimer 控制下周期地调用任务 UpdateRouteTask,计算以各个邻居节点为下一跳 的路径 ETX,然后选择最小的路径 ETX 与当前路径 ETX 比较,若最小 ETX 与当前 ETX 的 差值大于一个阈值,则更换父节点,最小路径 ETX 对应的邻居节点成为新的父节点。 Router 由定时器 BeaconTimer 控制周期地调用任务 sendBeaconTask 广播自己的路由信 息,以路由帧的形式发送。当节点接收到一个邻居节点广播的路由帧后,则触发事件 BeaconReceive.receive,然后调用函数 routingTableUpdateEntry 更新自己的路由表对应表项。 3.4 转发引擎的实现 CtpForwardingEngineP(Forwarder)提供了顶层接口 Packet、Send、Receive、Snoop 等 供应用程序调用。它管理了一个发送队列,采取先入先出(FIFO)策略。当节点收到来自 子节点的数据包时,它首先对数据包 THL 字段加 1,然后检查发送队列和发送缓存确定是 否是重复的包,如果是则丢弃它。在确定数据包不是重复包之后,若自身是根节点,则触发 receive 事件;若不是根节点,则调用函数 forward 将数据包送入发送队列,然后检测路由循 环,若为路由循环,则通知路由引擎立即广播路由帧,期望发送者收到后更新它的路由表, 打破循环。若未检测到路由循环,则立即启动任务 sendTask。sendTask 检查位于发送队列头 部 的 包 , 请 求 路 由 信 息 , 并 提 交 到 AM 层 进 行 发 送 。 当 发 送 完 毕 时 , 触 发 事 件 Subsend.sendDone 检查发送的结果。如果包收到 ACK 确认,则将包从发送队列中移出,若 包是本地产生的,则向上触发 sendDone 事件,若包是转发的,则将包释放到消息缓冲区以 -5-
中国科技论文在线 http://www.paper.edu.cn 备检查包重复之用。如果队列中还有剩余的包(比如没有被 ACK 确认的),它启动一个随 机定时器以重新发布这个任务,若达到最大重传次数还未被确认,则将其移出发送队列并丢 弃。 4.CTP 性能分析 Tossim 是 TinyOS 自带的仿真器,能对成百上千个节点的网络活动进行模拟,并实时输 出调试信息,允许用户从不同角度分析和观察程序的执行过程。为测试 CTP 性能,在 Tossim 中对其进行了仿真。首先编写上层测试程序,主要功能是对虚拟传感器组件 DemoSensorC 进行一定速率的采样,然后把数据周期地通过汇聚树传输到汇聚节点。通过编写 Tossim 中 的 python 测试脚本,配置节点数目和网络拓扑结构,设定输出调试信息和测试时间。 信道模型和噪声模型采用斯坦福大学 Meyer 实验室提供的 topo 和 meyer-short,仿真时 间为 1000 秒,输出 TreeRouting、Forwarder、AM 等调试信息,一共进行了四组仿真,结果 见表 1。针对第二组仿真,根据节点间选择父节点的情况绘出其网络拓扑示意图,如图 6。 图 6 网络拓扑示意图 其中根节点编号为 0,其它节点编号为 1-9,粗实线箭头表示拓扑稳定后节点最终选择 的父节点,虚线箭头则是曾选择过的父节点。可以看到节点 1、2、4 一次即确定了父节点, 节点 3、5、6 经历了一次父节点更替,节点 7、8、9 则进行了多次父节点更替,最终均形成 了到根节点 0 的 ETX 最小优化汇聚树状路由。父节点更替是链路估计不断累积和更新的结 果,这样保证了节点间通信的最大可靠性。 表 1 仿真结果 节点数 根节点数拓扑建立时间/s拓扑稳定时间/s 5 10 20 20 1 1 1 2 13 11 10 10 13 70 106 220 从表 1 四组结果对比可以发现拓扑的建立时间差别不大,说明只要产生了链路估计便能 快速生成路由。拓扑稳定时间和网络规模、根节点数有关,当节点个数较多时,拓扑稳定所 需时间较长,主要是因为节点的邻居节点增多,链路情况更加复杂,父节点的变更较为频繁。 而相同网络规模下,更多的根节点意味着节点还需在根节点中做出选择,拓扑稳定时间变长, 但一些节点的跳数会减少,传输时延随之减小。调试信息显示这四组仿真中根节点均收到其 它节点汇聚的数据,基本无发送失败现象,通信成功率很高,因为 CTP 建立的路由是优先 考虑传输可靠性的。 -6-
中国科技论文在线 http://www.paper.edu.cn 5.结论 CTP 是 TinyOS 2.x 中针对传感器网络特点设计和实现的一个数据汇聚协议。它以节点 间链路质量估计作为选择父节点的依据,父节点是唯一的下一跳节点,从而建立起一个以汇 聚节点为根节点的树状路由网络。CTP 适用于小型无线监测网络,数据采集节点均形成一 条到汇聚节点的优化传输路径。仿真表明 CTP 的传输可靠性很高,随着网络规模的增大, 拓扑稳定所需时间增大。由于节点选择父节点只考虑链路质量估计,到汇聚节点的跳数可能 不是最少的,造成过多的能耗。如何在保证一定可靠性的同时减少跳数是需要进一步研究的 问题。 参考文献 [1] 王雪.无线传感网络测量系统[M],北京:机械工业出版社,2007. [2] 孙利民.无线传感器网络[M],北京:清华大学出版社,2005. [3] TinyOS Tutorials [EB/OL].http://docs.tinyos.net/index.php/TinyOS_Tutorials,2009. [4] TinyOS Programming [EB/OL].http://www.tinyos.net/tinyos.net/tinyos-2.x/doc/pdf/tinyos-programming.pdf, [5] 龚本灿,李腊元,蒋廷耀等.基于生成树的无线传感器网络分布式路由协议[J].微电子学与计算机, 2006. 2008,25(11):77-80. Wireless sensor network is an application dependent network with limited energy and computing ability. CTP is a data collection protocol for wireless sensor network based on TinyOS. It adopts Collection tree theory,and sets some sink nodes as tree roots in the network. Each node exchanges the link quality estimates with its neighbor nodes to choose parent node as a next hop. Nodes establish a reliable route to one of the collection roots. This paper analyses the principal and implementation of CTP. A test application is written for simulating the protocol. The simulation result shows that CTP has a good performance of relatively high transmission efficiency in a network with low traffic rates,and is suited to small-scale wireless sensor network for environment monitoring. Keywords: wireless sensor network; data collection; TinyOS; Link Estimate A Data Collection Protocol For Wireless Sensor Network Based On TinyOS School of Information and Communication Engineering, Harbin Engineering University, Harbin Lei Ming , Feng Chi (150001) Abstract -7-
分享到:
收藏