基于内容的无线传感器网络路由协议

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于内容的无线传感器网络路由协议
张琼
【摘要】针对无线传感器网络环境下低功耗路由问题,根据无线传感器网络是一种以数据为中心的网络的特点,提出了一种基于内容的低功耗路由协议CBP.其基本思想是:Sink节点根据上层应用构造谓词,并对谓词进行广播,网络中所有传感节点以Sink节点的谓词为依据建立路由表,实现数据路由.与现有无线传感器网络路由协议相比较,此路由协议具有低功耗,占用节点资源少,网络容错能力强等特点.仿真结果表明,在节点数量大于100的大规模网络中,基于内容的无线传感器网络路由协议功耗比定向扩散协议功耗降低19%.
【期刊名称】《现代电子技术》
【年(卷),期】2007(030)017
【总页数】5页(P87-91)
【关键词】无线传感器网络;基于内容的路由协议;定向扩散协议;路由容错
【作者】张琼
【作者单位】西安邮电学院,陕西,西安,710061
【正文语种】中文
【中图分类】TN915
1 引言
随着传感器技术、嵌入式技术、分布式信息处理技术和无线通讯技术的发展,以大
量的具有微处理能力的微型传感器节点组成的无线传感器网络逐渐成为学术界的研究热点[1]。

受体积限制,传感器节点一般采用电池供电,能量有限,如何降低网络的功耗以延长网络的生命周期是无线传感器网络软硬件设计所面临的共同挑战。

传感节点能量消耗的模块主要是包括传感器模块、信息处理模块和无线通讯模块,而绝大部分的能量消耗是集中在无线通讯模块上,约占整个传感节点能量消耗的70%。

因此,目前无线传感器网络路由协议主要是围绕着降低功耗而进行。

无线传感器网络有着与传统网络明显不同的技术要求。

前者以数据为中心,后者以传输数据为目的。

为了适应广泛的应用要求,传统网络的设计遵循着“端到端”的边缘论思想,强调将一切与功能相关的处理都放在网络的端系统上,中间节点仅仅负责数据分组的转发。

而无线传感器网络实现传感器到数据处理中心的数据采集,路由协议面向多到一的数据流和一到多的控制流,而非任意源-目的地之间的数据传输。

传输过程中普遍采用数据融合方式。

无线传感器网络协议设计目标以节能为核心,简洁且高效。

因此,现有的传统网络协议不能直接应用于无线传感器网络。

无线传感器网络和Ad Hoc网络都以多跳的形式在各个节点之间建立链接,但是无线传感器网络和Ad Hoc网络的研究重点有所不同:在无线传感器网络中,网络协议以节能为核心,网络中大部分节点是静止的;而Ad Hoc网络受节点移动频繁的影响,协议更注重路由表信息的频繁更新。

Ad Hoc网络中已有的多跳路由协议,如AODV(Ad Hoc Demand Distance Vector)和TORA(Temporally Ordered Routing Algorithm)等,都不适合无线传感器网络的特点和要求。

定向扩散模型(DD)是专门为无线传感器网络设计的路由策略[2],与已有的路由算法有着截然不同的实现机制。

节点用一组属性值来命名他所生成的数据,比如在野生动物检测应用中,传感器生成的数据命名为Type=[four leged
animal],interval=20 ms,duration=10 sencond,rect=[-100,100,200,400]。

Sink节点发出的数据查询也用属性的组合表示,逐级扩散,最终遍历全网,找到
所有匹配的原始数据。

有一个称为“梯度”的变量与整个业务请求的扩散过程相联系,反映了网络中间节点对匹配请求条件的数据源的近似判断。

更直接的方法是节点用一组标量值表示他的选择,值越大意味着向该方向继续搜索获得匹配数据的可
能性越大,这样的处理最终将会在整个网络中为Sink节点的请求建立一个临时的“梯度”场,匹配数据可以沿“梯度”最大的方向中继回Sink节点。

DD 协议中,Sink节点每次需要数据时,都要广播查询条件,然后采集节点上匹配查询条件的
分组沿梯度场返回Sink节点,因此网络的通信量较大。

通过分析现有无线传感器网络的应用,可以得到无线传感器网络结构及数据流的特征如下:
(1) 无线传感器网络中Sink节点的数量远远小于传感器节点的数量,现有的无线
传感器网络应用中,Sink节点的数量不大于5。

(2) Sink节点的查询条件相对稳定。

用户通常所关心的是采集数据中的异常数据或者数据的异常变化,而这种异常的判断条件一般用阀值的方式表示,通常情况下这些阀值变化不大。

以无线传感器网络结构及数据流的特征为基础,结合现有发布/订阅网络模型,为
我们研究基于内容的无线传感器网络的协议提供了重要依据。

2 系统模型
2.1 发布/订阅模型
根据分组转发驱动来源的不同,可以将网络分为基于地址的网络和基于内容的网络。

Internet是一种基于地址的网络,发送方在分组报头中指定接收方的地址,网络
中的转发节点根据接收方的地址进行数据转发。

基于内容的网络完全不同于Internet,发送方不直接指定分组目的地址,当分组进入网络后,根据各个接收节点对数据的需求决定分组的转发,即转发是由消息的内容驱动的。

基于内容的网络协议对大规模松散耦合的分布式应用有良好的支持[3],这些应用的共同点是从发送方到接收方的消息流是由接收方的特点决定的,而不是由发送方决定的。

基于内容的网络协议弥补了传统的基于地址网络的单点和多点传输在这方面的缺陷[4]。

典型的无线传感器网络是由一组能够采集各种类型数据的传感器节点组成以及少量Sink节点组成。

无线传感器网络的上层应用所关注的是以一定的采样频率采集的各种数据,传感器结点被抽象为一种普通意义上的数据产生源[5]。

在无线传感器网络中,大部分的节点是数据采集节点,是消息的发布者;少数节点是接收节点,是消息的订阅者。

发布者是传感器节点,订阅者一般指的是Sink节点,Sink节点一般提供数据融合计算或者充当网关,向更高层的网络提供整个数据。

大规模无线传感器网络中Sink节点数目占所有节点数目在1%~0.1%。

在基于内容的网络协议中,接收节点通过谓词向网络声明自己需要的数据,发送方只是简单地把消息从外围节点注入网络,网络根据谓词向接收节点发送消息。

中间节点的数据转发由2个相关的子过程组成:路由和转发。

路由用于在网络中的每个结点上建立和更新路由表,路由表信息包含目的节点以及到达这一节点的下一跳节点地址;转发用于对接收数据进行处理,网络每个结点的转发使得数据通过网络路由。

基于内容网络通信模型非常适用于无线传感器网络。

在这种模型中,消息从一个发送节点到一个或多个接收节点的传输中,发送方不需在消息中写上具体的接收节点的地址。

接收节点把他们想接收的各种信息以谓词表达,网络向接收节点交付满足这些谓词的消息,谓词是接收节点通过广播的方式表达的。

在这种由接收节点驱动的通信模型中,为了减小网络计算和通信的时间,网络协议负责有效地匹配谓词和消息内容。

2.2 谓词匹配
在基于内容的网络模型中,订阅者向网络发布的谓词是路由的驱动。

包含传感器数据的消息匹配一个或多个谓词,如果谓词完全匹配,消息就向发布谓词的接收方转发,否则直接丢弃。

例如无线传感器网络中的一个Sink节点监控森林中的火灾情况,如果温度或风速达到某个警戒值时需要通知Sink节点,Sink节点向网络发布的谓词为:(ws>30∧0<wd<160)∨(tp>150∧hum<5)
式中ws表示风速,wd表示风向,tp表示温度,hum表示湿度,此谓词表达式表达了两种火灾报警情况,即风速较大且风向为某个特定方向,或者温度较高(>150)且湿度较低(<5)。

如果传感节点采集的各项参数满足谓词条件,则网络将此数据向发布谓词的订阅者路由转发。

这种网络层的服务模型非常类似于应用层通信模式“发布/订阅模型”。

在基于内容的路由协议中,信息的转发取决于谓词,每个传感节点保存有网络中所有Sink 节点的谓词。

当传感节点采集到数据后,路由算法比较匹配所有Sink节点的谓词条件,如果消息满足某个订阅者谓词中的条件,消息将沿着到此接收节点的路径转发。

3 基于内容的WSN路由协议
3.1 定义
在基于内容的网络中存在两个格式的分组,谓词广播分组以及数据分组。

定义1 谓词广播分组结构
predc_pkt {
sink_addr;
//发起谓词广播的sink节点地址
next_hop;
//当前此分组的发送者地址
distance;
//上个节点到达最终目的节点的路径跳数
seq_num;
//分组的序列号
predc;
//为sink节点的谓词表达式
}
定义2 数据分组结构
data_pkt {
receivers;
//数据分组接收者集合
msg_id;
//分组序列号
route_fail;
//路由失败标志
sense_data
}
分组中以位向量方式表示接收节点集合,位向量中每一个位代表了不同的接收节点。

定义3 距离向量路由表
route_entry {
sink_addr;
//sink节点的地址
predc;
//本sink节点的谓词条件
seq_num
vector_arr[MAX_PATH];
//路由路径向量
}
基于内容的网络协议使用距离向量构造路由表,每个节点维护一组指向下一跳的路由项,路由协议使用表结构存储距离向量表。

对网络中的每一个接收节点r,路由表中存储有路径信息以及其他非路径信息。

非路径信息包括接收节点的谓词predc,路径信息包括一组距离向量项vector_arr[MAX_PATH]。

其中每个向量可以表示
为{nr,lr}偶对,nr表示向接收节点r转发路径的下一节点;lr表示该路径的度量,度量可以采用功耗、信道质量等参数。

向量长度MAX_PATH是协议的静态参数,在内存受限的情况下,一般在2~5之间取值。

向量中的第一项代表最优的距离向量,向量的第二项代表次优的距离向量,依次类推。

这些向量用作当最优路径出现故障时的备用路径:在转发过程中,如果最优路径无法抵达,则沿次优路径进入次优路径下一节点,从下一节点开始,又沿最优路径开始推进。

3.2 CBP协议算法
在CBP协议中,要求网络中所有节点统一编址,地址可以采用底层MAC地址或
者人为设定。

在初始状态下,所有节点的路由表为空,传感节点处于休眠或者接收状态;Sink
节点负责初始化网络,根据上层应用程序的需求,Sink节点构造相应谓词,向整个网络广播;网络中的各个传感节点接收到广播分组后,首先更新本节点路由信息。

Algorithm 1 Init:
proc init_route(predc_pkt p) {
if p.sink_addr ∉ Set (route_table.sink_addr) then
r.sink_addr ←p.sink_addr;
r.predc←p.predc;
r.vector_arr[1]←p.next_hop;
route_entry:=route_entry∪r;
else
if p.seq_num > route_table{r}.seq_num then
r.predc←p.predc;
r.seq_num←p.seq_num;
else p.seq_num = route_entry{r}.seq_num then
r.vector_ar r[curPath++]←p.next_hop;
else if p.seq_num=0 then
route_entry := route_entry-r;
else
drop the packet;
end;
end;
copy p to pkt;
pkt.next_hop ← this node id;
pkt.distance++;
broadcast(pkt)
}
网络中的节点接收到谓词广播消息后,首先对比本节点路由表中和广播分组中的Sink_addr域。

当路由表中不存在广播分组中的Sink地址时,这个分组所带的谓词被认为是新加入网络的Sink节点广播,需要添加到本节点的路由表中;当本节
点路由表中已经存在广播分组中的Sink地址,并且分组的序列号大于路由表中的
序列号时,表示Sink节点更新了谓词条件,传感节点需要用新的谓词替换以前的
谓词,同时更新路由信息,Sink节点通过这种方式动态改变谓词;对比分组与数
据包中的seq_num域,当广播分组中的seq_num域小于路由表中的seq_num
域时,认为该谓词已超时,直接抛弃;当广播分组的seq_num域等于路由表中seq_num域时,其路由信息添加到路由向量中作为备份次优路径,广播分组中的零seq_num域用于移去路由表中的路由项;节点更新完本节点路由信息后,对广播分组中的子项进行更新:递增distance域,更新next hop域为本节点地址,
然后广播此谓词分组。

当网络中所有节点都接收到广播分组后,网络路由信息构造完成,每个节点路由表中包含Sink节点的地址,到达Sink节点的最优路径、次优路径等,可以完成数
据路由转发。

从以上的路由初始化过程可以看出,当订阅者r广播了一个谓词Pr,路由协议将向网络中的所有节点广播此谓词,从而形成一棵以r为根节点的转发树。

基于内容的转发树将满足条件Pr的数据包向节点r转发。

传感节点数据采集算法如下:
Algorithm 2 Data Matching:
proc data_match() {
data_vector← get sense data from all sensors;
foreach r ∈ route_table do
if match(data_vector,route_entry) then
send_pkt(data_vector,route_entry.vector_arr);
end;
end;
网络中的数据采集节点采集到数据后,根据本节点路由表中的谓词判断采集到的数
据是否符合某一个或者几个Sink节点的谓词条件,如果符合条件,则构造分组发送,否则,直接抛弃采集到的数据。

Algorithm 3 Forwarding:
proc forwarding(data_pkt p) {
find next_hop for p.sink_addr;
send_pkt(p,next_hop);
当数据分组进入网络后,中转节点不对其进行谓词匹配,只根据本节点的路由表信息转发数据分组。

3.3 网络路由容错处理
无线传感器网络部署环境恶劣,路由协议的容错必不可少,无线传感器网络节点故障可以分为两类,暂时故障和永久故障。

暂时故障包括无线通信部件由于屏蔽或者其他干扰而暂时无法通信;永久故障包括节点永久失效或者节点的电池用完等。

故障诊断和故障修复是无线传感器网络协议必须解决的问题之一。

CBP在传输过程中检测和修复错误的算法如下:
Algorithm 3 Falt Recover:
proc Falt_Recover(data_pkt p) {
if forwarding(p)= failed then
p.route_fail :=true;
foreach p ∈ vector_arr do
forwarding(p);
end;
if send failed then
broadcast(p);
end;
end;
在CBP协议中,发送节点首先多次尝试向故障节点发送数据,暂时性故障有可能在多次尝试中恢复,如果故障一直存在,通过谓词广播重新选路。

具体过程为:节点根据本节点路由表的路由信息,通过最优路径发送数据,如果最优路径下一节点出现故障,则首先在分组中设置路由失败标记,将分组标识记录在本地缓存,尝试从所有备选路径发送分组,如果所有的备选路径都失败,则通过广播分组。

当节点接收到分组后,如果有失败标记,首先检查本地缓存是否有此分组标识,如果在本地缓存中存在此标识,则可以推测,这个分组的路由上有回环,直接广播分组。

CBP协议首先通过备用路由进行容错,广播是最后的一种选择,这样可以尽量减少广播带来的大量能源消耗。

当分组最终到达目标Sink节点后,接收节点如果发现分组中含有节点失败标记,说明本节点的转发树的某一支出现故障,通过谓词广播重新建立转发树。

3.4 多重交付及回环避免策略
基于内容的转发过程把分组以多跳的方式交付给需要数据的Sink节点,这种转发会出现双重交付和路由回环。

例如,在图1中,假设满足p1和p2的消息m送到结点5,此时的数据分组中接收集合的第1,2位为1,根据节点5的路由表,分组分别沿着p1和p2路径的最佳路径,到达结点4和2。

到达结点2的分组除了本节点接收此分组外,由于接收集合中的第1为也为1,根据本节点的路由表,节点2同时将数据转发到结点4,引起双重交付。

同样,回环也在结点2和节点4以及结点1和节点4之间出现,这种回环在转发算法中可以通过限定消息不能回环至初始发送节点来避免,但是在更多节点的网络中,很容易构造3个或更多结点的回环,采用以上策略很难消除回环。

图1 多重交付与回环
为了避免双重交付和回环,我们利用动态接收节点分区的方法来优化转发过程。

如图2(a)所示,节点r,s,t为接收节点,a,b为转发节点,节点r的谓词为p,节点s,t的谓词为q。

假设数据符合谓词p和q的数据分组到达a。

按照上节中的转发过程,则接收节点r上会出现双重交付,r和b之间会出现回环。

图2 接收节点动态划分
在动态接收方分区优化算法是在每个转发节点上进行的,以图2(b)为例,其过程如下:
节点a首先根据数据分组中的receiver set得到接收节点的集合D={r,s,t};然后节点a根据本节点路由表中到每个接收节点(receiver)的下一跳结点(next_hop)分割D。

本例中可以将D分割为两部分D1={r}和D2={s,t},他们的下一跳分别为r 和b。

节点a根据这两个集合以及各自的下一跳,构造两个分组,其中第一个分组的receiver_set为{r},转发给节点r;第二个分组的receiver_set为{s,t},转发给b,如图2(b)所示,这样可以完全避免双重交付和回环。

4 仿真
本文在NS2环境下对协议进行了仿真。

系统在1 000 m×1 000 m的区域内部署节点,节点数为10~200个并随机放置。

仿真的内容包括:随机布撒节点;在网络中随机产生2~10个Sink节点;在正常数据采集情况下,对比定向扩散协议与CBP协议的30 min运行过程中总体功耗,在MAC层协议相同的情况下,为方便分析,网络总体功耗以所有节点发送数据包的总和表示;模拟节点暂时故障和永久故障,对比定向扩散协议与CBP协议的丢包率。

实验模型参见文献[3]。

参数如表1所示,实验数据均为20次模拟实验的平均抽样结果。

表1 仿真实验环境参数配置(ns-allinone-2.29)网络尺寸1 000 m×1 000 m节点数10~100节点分布形式随机感知范围100 mSink节点编号1~20节点初始能量50 nJ/b (含义)初始能量2 J/battery(含义)传播范围100 m
首先仿真对比CBP协议与定向扩散协议网络整体功耗,由于CBP协议采用数据包
融合技术,当网络中Sink节点增多时,其节能优越性表现突出,如图3所示,当网络中Sink节点为1~2个时,由于定向扩散协议也是一种以数据为中心的协议,而且在路由过程中采用数据融合技术,其整体功耗低于CBP协议,当网络中的Sink节点数量增多时,采用数据包融合技术的CBP协议平均功耗为定向扩散协议的80%,当多个Sink节点的地理位置比较接近时(在实际应用中,这种情况非常
普遍),其功耗仅为定向扩散协议功耗的30%。

图3 多Sink节点网络功耗对比
CBP协议采用动态接收节点划分策略避免多重交付与回环,定向扩散协议采用梯
度的方式动态调整网络路由信息,防止多重交付与回环。

与CBP比较,梯度方式
具有收敛速度慢,无法解决暂时性故障等缺点。

同时,采用路由向量实现多重路径备份实现容错,与定向扩散协议比较,网络的丢包率降低,图4所示为定向扩散
协议与CBP协议之间的丢包率对比,由于无线传感器网络的短距离无线通信信道
容易受环境噪音的影响,同时由于没有采用拓扑控制技术,节点之间的干扰也比较大,当网络规模增大时,网络的丢包率也逐渐增大。

与定向扩散协议比较,CBP
协议的丢包率在网络规模较大时比较低,平均丢包率为定向扩散丢包率的75%。

图4 网络丢包率对比
5 结语
在基于内容的网络协议CBP中,根据接收节点的谓词生成分组,即符合谓词条件
的采集数据才能生成分组进行转发,谓词的匹配由采集数据的传感节点完成,中转节点仅仅需要判断位向量,而不用匹配整个谓词。

采用动态接收节点分区技术,当节点转发消息时,保证向一个网络分区只发送一个消息。

这种简单的本地处理算法可避免消息回环和消息冗余。

在网络流量方面,基于内容的网络协议在初始化完成后,各个采集节点采用主动方式发送数据,比传统请求/响应模型节约50%左右通信流量;与定向扩散协议比较,
网络流量降低20%;在节点存储容量方面,由于网络中的Sink节点稀少,所以节点需要保存的路由信息数目不多,对节点的内存要求不高;在节点计算能力方面,只有采集数据进入网络之前进行计算,在转发过程中没有复杂的路由计算。

基于内容的网络协议能够处理暂时和永久的网络故障。

分组在转发过程中,网络中的所有传感节点都维护到达每个Sink节点的一个最优路径和一组次优路径,在最优路径失败后通过次优路径进行数据传递,极大提高了网络的容错能力。

参考文献
[1] Akyildiz IF,Su W,Sankarasubramaniam Y,et al.A Survey on Sensor Networks[J].IEEE Communications Magazine,2002,40(8):102-114.
[2] Intanagonwiwat C,Govindan R,Estrin D.Directed Diffusion:A Xcalable and Robust Communication Paradigm for Sensor Networks.Proceedings of the 6th Annual ACM/IEEE International Conference on Mobile Computing and Networking (MobiCom′00),Boston,MA,2000.
[3] Carzaniga A,Wolf A L.Forwarding in a Content-based Network.In SIGCOMM 2003,Karlsruhe,Germany,2003:163-174.
[4] Ganesan D,Govindan R,Shenker S,et al.Highly-resilient,Energy-efficient Multipath Routing in Wireless Sensor Networks.Mobile Computing and Communications Review,2002.
[5] Hill J,Szewczyk R,Woo A,et al.System Architecture Directions for Networked Sensors.In ASPLOS IX,Cambridge,MA,2000.。

相关文档
最新文档