一种无线传感器网络多流竞争场景下的数据传输方法

文档序号:7810391阅读:228来源:国知局
一种无线传感器网络多流竞争场景下的数据传输方法
【专利摘要】本发明公开了一种多流竞争场景下的无线传感网络数据传输方法。其采用数据量感知的自适应唤醒机制以及接收节点发放令牌机制,根据接收节点回复的ACK帧指定下一次发送节点的ID号,减少了网络退避延时;同时根据ACK帧中携带的数据量来设定竞争节点休眠时长,解决了竞争节点长时间唤醒问题,降低竞争节点的能耗,延长网络寿命。本发明提出的数据传输方法,特别适用于多流高负载传输场景,在低流量负载场景下依然具有较好的性能表现。
【专利说明】一种无线传感器网络多流竞争场景下的数据传输方法

【技术领域】
[0001] 本发明涉及一种无线传感器网络中优化多流竞争传输的MAC层方法设计,尤其涉 及解决低功耗竞争问题的MAC层方法设计。

【背景技术】
[0002] 无线传感器网络(Wireless Sensor Networks, WSN)是由部署在监测区域内大 量的微型传感器节点通过无线电通信形成的一个多跳自组织网络系统,其目的是协作地感 知、采集和处理网络覆盖区域内被监测对象的信息,并且发送给观察者。随着无线传感器网 络理论和技术的不断成熟,其应用也由最初的军事领域扩张到环境监测、交通管理、医疗健 康、工商服务、反恐抗灾等诸多领域。无线传感器网络的各个节点是由电池供电,由于节点 数目庞大和地理位置严峻,电池的频繁更换是不现实的,因此降低各个节点的能耗是无线 传感网络设计的主要目标。当面向洪水监控、森林防火等特定应用时,由于某一区域突发事 件的产生,网络呈现出一种突发高负载状态。多个节点会在监测到这一事件后向网关节点 传输大量数据包,越靠近网关节点处,节点竞争越激烈。在传统的无线传感器网络中,未竞 争到信道的节点会一直唤醒等待直到竞争到信道的节点完成传输后放弃信道,所有有数据 传输任务的节点会再一次竞争信道。当网络中存在多条竞争流时,这种竞争机制会使得未 竞争到信道的节点持续唤醒较长时间,造成节点功耗急剧上升,降低网络性能。因此,在多 流竞争场景下尽可能减少竞争节点的唤醒等待时间,降低节点的功耗至关重要。
[0003] MAC层处于无线传感器网络协议栈的底层部分,决定了无线信道的使用方式,对无 线传感网络性能有极大影响。其主要负责信道接入、控制节点的数据传输对无线共享信道 的占用,以及通过一组规则和过程来更有效、有序和公平使用共享信道以保证网络的整体 性能,针对特定场景设计适合的MAC协议是解决数据传输问题的有效方法,因此MAC协议是 无线传感器网络中最重要的技术之一。
[0004] 多流竞争是无线传感网络应用中经常存在的问题。针对上述问题,人们提出了多 种MAC协议解决方案。在基于TDMA的MAC协议中,不同的用户按照预先分配好的顺序占用 信道的办法来共享同一频带,每个用户占用一个周期性重复的时隙。这种接入方式,由于 TDMA的发射被时隙化,就要求接收机与每个数据分组保持同步,因此系统需要较高的同步 开销。
[0005] 在基于CSMA的MAC协议中,通常使用二进制指数退避策略解决多流竞争产生的碰 撞问题,即当碰撞发生后,每个节点为了降低再次碰撞的概率,等待一个随机时间后再次发 送数据。这种方法虽然没有控制开销,但是随着网络中数据流增加,数据包碰撞概率越来越 大,消耗能量的同时增加了数据传输延时,使网络性能迅速降低。


【发明内容】

[0006] 鉴于上述问题,本发明将针对多流竞争的无线传感网络应用场景,进行低功耗传 输的MAC协议设计与实现。本发明的能够避免每次数据帧传输完毕后的重新信道竞争和未 竞争到信道节点的持续唤醒等待问题,同时能避免隐藏节点竞争产生的碰撞,降低网络节 点的功耗,提升网络性能。
[0007] 技术方案:为实现上述目的,本发明采取以下技术方案:
[0008] 1、一种无线传感器网络多流竞争场景下的数据传输方法,采用数据量感知的自适 应唤醒机制以及接收节点发放令牌机制。根据接收节点回复的ACK帧指定下一次发送节点 的ID号,避免了指定发送节点的随机退避,减少了网络延时,同时根据ACK帧中携带的数据 量来设定竞争节点休眠的时长,解决了竞争节点长时间唤醒问题,降低竞争节点的能耗,延 长网络寿命。具体为:首先对加入网络的节点进行初始化,发送节点建立接收列表和邻居列 表,当接收节点检测到碰撞时,接收节点发送一个带有竞争窗的信标帧,发送节点收到信标 帧后做随机退避,竞争到信道的节点发送数据帧,在此数据帧中携带此刻缓存队列中的数 据量。接收节点收到数据帧后,回复ACK确认帧,在ACK帧中指定下一次发送节点的ID号 和发送节点的数据量。对于收到ACK帧带有的ID号是自己的发送节点不必做竞争退避,立 刻发送数据帧,其余未竞争到信道的节点收到ACK帧后根据数据量开启定时器并休眠,等 定时器超时后唤醒进行数据的传输。
[0009] 上述方法具体包括如下步骤:
[0010] 一种无线传感器网络多流竞争场景下的数据传输方法,分为三个步骤,其特征在 于:
[0011] 步骤a、对加入网络的节点进行初始化,发送节点建立接收列表和邻居列表,当接 收节点检测到碰撞时,接收节点发送一个带有竞争窗的信标帧,发送节点收到信标帧后做 随机退避,竞争到信道的节点发送数据帧,在此数据帧中携带此刻缓存队列中的数据量;
[0012] 步骤b、接收节点收到数据巾贞后,回复ACK确认巾贞,在ACK巾贞中指定下一次发送节点 的ID号和发送节点的数据量;
[0013] 步骤c、对于收到ACK帧带有的ID号是自己的发送节点不必做竞争退避,立刻发送 数据帧,其余未竞争到信道的节点收到ACK帧后根据数据量开启定时器并休眠,等定时器 超时后唤醒进行数据的传输。
[0014] 其中,所述步骤a具体为步骤1到步骤3,具体如下:
[0015] 步骤1、发送节点有数据需要发送,查询接收列表,如果接收节点在发送节点的接 收列表中,进入步骤1-1 ;如果接收节点不在发送节点的接收列表中,进入步骤1-2 ;
[0016] 步骤1-1、发送节点预测接收节点醒来的时间,在接收节点醒来前唤醒侦听信道, 进入步骤2 ;
[0017] 步骤1-2、发送节点立刻唤醒侦听信道,进入步骤2 ;
[0018] 步骤2、接收节点唤醒,并发送信标帧,进入步骤3 ;
[0019] 步骤3、当发送节点接收到不含竞争窗的信标帧,进入步骤3-1 ;当发送节点接收 到含有竞争窗的信标帧,进入步骤3-2 ;当发送节点收到ACK确认帧,进入步骤3-3 ;当发送 节点收到数据分组时进入步骤3-4 ;
[0020] 步骤3-1、此时表明接收端未检测到碰撞,发送节点经过DIFS时长后发送数据帧, 数据帧中携带此时队列中的数据量。查询接收列表,如果接收节点不在列表中,需要在发送 的数据帧中添加请求标识位,进入步骤4 ;
[0021] 步骤3-2、此时表示接收端检测到碰撞,发送节点经过DIFS加随机退避时长后发 送数据帧,数据帧中携带此时队列中的数据量,进入步骤4 ;
[0022] 步骤3-3、进入步骤5 ;
[0023] 步骤3-4、发送节点对于发给自己的数据分组则接收,并进入步骤4 ;发送节点对 于串音收到的数据分组则丢弃;
[0024] 其中所述步骤b具体如下:
[0025] 步骤4、接收节点收到数据帧,根据数据帧是否含有请求标识位回复ACK帧。数据 帧含有请求标识位,进入步骤4-1 ;数据帧不含请求标识位,进入步骤4-2 ;当接收节点检测 到了碰撞进入步骤4-3 ;
[0026] 步骤4-1、添加自身调度信息、发送节点的数据量和发送节点的ID号到ACK帧,如 果此时发送节点的数据量为〇,则不添加发送节点的ID号,发送ACK帧,进入步骤5 ;
[0027] 步骤4-2、添加发送节点的数据量和发送节点的ID号到ACK帧,如果此时发送节点 的数据量为〇,则不添加发送节点的ID号,发送ACK帧,进入步骤5 ;
[0028] 步骤4-3、使用二进制指数退避方法,接收节点发送带有竞争窗口的信标帧,返回 步骤3 ;
[0029] 其中所述步骤c具体为步骤5到步骤6,具体如下:
[0030] 步骤5、当发送节点收到含有ID号的ACK帧,进入步骤5-1 ;当发送节点收到不含 ID号的ACK帧进入步骤5-2 ;
[0031] 步骤5-1、当ACK帧中的ID号是自己则无需退避继续传输;当ACK帧中的ID号不 是自己,则解析ACK帧中携带的数据量,设定定时器并休眠,进入步骤6 ;
[0032] 步骤5-2、当ACK帧发送给自己且发送节点有数据待发送,做CCA检测,通过CCA检 测后发送数据;当ACK帧不发送自己,将ACK帧转变成信标帧并广播;
[0033] 步骤6、等待定时器超时后唤醒侦听信道,如果发送节点收到不含ID号的ACK帧, 竞争信道,准备数据传输;如果发送节点仍收到带有ID号的ACK帧,返回步骤5。
[0034] 所述设定的定时器时长为ACK帧中所携带的数据量的个数乘以单个数据包单跳 范围内完成一次传输所消耗的时间。
[0035] 具体的,所述步骤1中,发送节点采用线性同余法预测接收节点醒来时间,具体 为:
[0036] Xn+1 = (aXn+c)modm
[0037] 其中,m是系数,m > 0 ;a是乘数,0 < a < m ;c是增量,0 < c < m ;Xn是当前的种 子,0 < Xn < m ;每个Xn产生的Xn+1可以用于伪随机数,成为一个新的种子。因此,只要发送 节点能够知道m、a、c和X n的值,那么发送节点就可以推算出接收节点未来的唤醒时间。
[0038] 所述步骤5中,设定的定时器时长为ACK帧中所携带的数据量的个数乘以单个数 据包单跳范围内完成一次传输所消耗的时间。
[0039] 有益效果:本发明提供的无线传感器网络多流竞争场景下的数据传输方法,具有 如下优点:1、通过接收节点发放令牌,避免了获得令牌的发送节点的随机退避时间,减少了 网络传输延时;2、计算获得信道的发送节点持续传输占用信道的时长,未竞争到信道的节 点休眠,在竞争到信道节点发送结束后唤醒,节省节点能耗,延长网络寿命;3、在ACK帧中 携带ID号能够解决隐藏终端产生的碰撞问题;4、适用于多流的、高负载的WSN网络,也同样 适用于稀疏的、低负载网络。

【专利附图】

【附图说明】
[0040] 图1是本发明方法整体流程图
[0041] 图2是ACK帧格式示意图
[0042] 图3是预测唤醒MAC示意图
[0043] 图4是数据量感知的自适应唤醒示意图
[0044] 图5是步骤3的流程图
[0045] 图6是步骤4的流程图
[0046] 图7是步骤5的流程图

【具体实施方式】
[0047] 下面结合附图对本发明的进行详细的描述。
[0048] 一种无线传感器网络多流竞争场景下的数据传输方法,首先对加入网络的节点进 行初始化,发送节点建立接收列表和邻居列表,当接收节点检测到碰撞时,接收节点发送一 个带有竞争窗的信标帧,发送节点收到信标帧后做随机退避,竞争到信道的节点发送数据 帧,在此数据帧中携带此刻缓存队列中的数据量。接收节点收到数据帧后,回复ACK确认 帧,在ACK帧中指定下一次发送节点的ID号和发送节点的数据量。对于收到ACK帧带有的 ID号是自己的发送节点不必做竞争退避,立刻发送数据帧,其余未竞争到信道的节点收到 ACK帧后根据数据量开启定时器并休眠,等定时器超时后唤醒进行数据的传输。如图1所 示,该方法具体包括如下步骤:
[0049] 步骤1、发送节点有数据需要发送,查询接收列表,如果接收节点在发送节点的接 收列表中,进入步骤1-1 ;如果接收节点不在发送节点的接收列表中,进入步骤1-2 ;
[0050] 步骤1-1、发送节点预测接收节点醒来的时间,在接收节点醒来前唤醒侦听信道, 进入步骤2 ;
[0051] 步骤1-2、发送节点立刻唤醒侦听信道,进入步骤2 ;
[0052] 步骤2,接收节点唤醒,并发送信标帧,进入步骤3 ;
[0053] 步骤3、当发送节点接收到不含竞争窗的信标帧,进入步骤3-1 ;当发送节点接收 到含有竞争窗的信标帧,进入步骤3-2 ;当发送节点收到ACK确认帧,进入步骤3-3 ;当发送 节点收到数据分组时进入步骤3-4 ;
[0054] 步骤3-1、此时表明接收端未检测到碰撞,发送节点经过DIFS时长后发送数据帧, 数据帧中携带此时队列中的数据量。查询接收列表,如果接收节点不在列表中,需要在发送 的数据帧中添加请求标识位,进入步骤4 ;
[0055] 步骤3-2、此时表示接收端检测到碰撞,发送节点经过DIFS加随机退避时长后发 送数据帧,数据帧中携带此时队列中的数据量,进入步骤4 ;
[0056] 步骤3-3、进入步骤5 ;
[0057] 步骤3-4、发送节点对于发给自己的数据分组则接收,并进入步骤4 ;发送节点对 于串音收到的数据分组则丢弃;
[0058] 步骤4、接收节点收到数据帧,根据数据帧是否含有请求标识位回复ACK帧。数据 帧含有请求标识位,进入步骤4-1 ;数据帧不含请求标识位,进入步骤4-2 ;当接收节点检测 到了碰撞,进入步骤4-3 ;
[0059] 步骤4-1、添加自身调度信息、发送节点的数据量和发送节点的ID号到ACK帧,如 果此时发送节点的数据量为0,则不添加发送节点的ID号,发送ACK帧,进入步骤5 ;
[0060] 步骤4-2、添加发送节点的数据量和发送节点的ID号到ACK帧,如果此时发送节点 的数据量为〇,则不添加发送节点的ID号,发送ACK帧,进入步骤5 ;
[0061] 步骤4-3、使用二进制指数退避方法,接收节点发送带有竞争窗口的信标帧,返回 步骤3 ;
[0062] 步骤5、当发送节点收到含有ID号的ACK帧,进入步骤5-1 ;当发送节点收到不含 ID号的ACK帧进入步骤5-2 ;
[0063] 步骤5-1、当ACK帧中的ID号是自己则无需退避继续传输;当ACK帧中的ID号不 是自己,则解析ACK帧中携带的数据量,设定定时器并休眠,进入步骤6 ;
[0064] 步骤5-2、当ACK帧发送给自己且发送节点有数据待发送,做CCA检测,通过CCA检 测后发送数据;当ACK帧不发送自己,将ACK帧转变成信标帧并广播;
[0065] 步骤6、等待定时器超时后唤醒侦听信道,如果发送节点收到不含ID号的ACK帧, 竞争信道,准备数据传输;如果发送节点仍收到带有ID号的ACK帧,返回步骤5。
[0066] 具体的,所述步骤1中,发送节点采用线性同余法预测接收节点醒来时间,具体 为:
[0067] Xn+1 = (aXn+c)modm
[0068] 其中,m是系数,m > 0 ;a是乘数,0 < a < m ;c是增量,0 < c < m ;Xn是当前的种 子,0 < Xn < m ;每个Xn产生的Xn+1可以用于伪随机数,成为一个新的种子。因此,只要发送 节点能够知道m、a、c和Xn的值,那么发送节点就可以推算出接收节点未来的唤醒时间。 [0069] 所述步骤5中,设定的定时器时长为ACK帧中所携带的数据量的个数乘以单个数 据包单跳范围内完成一次传输所消耗的时间。
[0070] 下面就本发明的具体加以说明。
[0071] 在网络初始化后,发送节点有数据帧需要发送时检查自己的接收列表中,如果接 收节点不在自己的接收列表中,发送节点立刻唤醒等待接收节点的信标帧;如果接收节点 在自己的接收列表中,发送节点预测接收节点醒来的时间,在接收节点醒来前唤醒侦听信 道,在发送节点成功收到接收节点的信标帧之后进行数据帧的传输。发送节点在发送数据 帧之前会查询接收节点是否在自己的接收列表中,如果不在则在数据帧中添加请求标识 位,要求接收节点提供调度信息,此外发送节点还在数据帧中添加当前缓存队列中的数据 量。
[0072] 接收节点收到数据帧之后会检测数据帧是否含有请求标识位,对于含有请求标识 位的数据帧,接收节点在回复的A CK确认帧中携带调度信息;接收节点同时在A CK帧中添加 数据帧中携带的数据量和发送数据帧节点的ID号,当解析出数据量为零时,则不在ACK帧 中添加发送节点的ID号,收到这样ACK帧的发送节点会重新竞争信道,ACK帧格式如图2所 示。此后,发送节点可以预测到接收节点醒来的时间,提前醒来,进行分组的发送,如图3所 示,大大减少了发送节点侦听时间,其核心机制是利用伪随机数算法,如公式(1)所示:
[0073] Xn+1 = (aXn+c)modm
[0074] (1)
[0075] 其中,m是系数,m > 0 ;a是乘数,0 < a < m ;c是增量,0 < c < m ;Xn是当前的种 子,0 < Xn < m ;每个Xn产生的Xn+1可以用于伪随机数,成为一个新的种子。因此,只要发送 节点能够知道m、a、c和X n的值,那么发送节点就可以推算出接收节点未来的唤醒时间。在 本发明实验中取a = 21,c = 7, m = 750。
[0076] 发送节点如果没有收到回复的ACK帧,一段时间后会重传数据帧,重传的上限为5 次,当重传计数器超过5次时,这个数据帧会被丢弃。如果收到带有ID号的ACK帧且ID号 就是自己,则发送节点不需做随机退避,在DIFS时长后发送数据帧。如果发送节点收到不 含有ID号的ACK帧,则发送节点需要在DIFS加随机退避时长后竞争信道发送数据帧。如 图4所示,如果发送节点收到带有ID号的ACK帧但ID号并不是自己,发送节点解析ACK帧 中携带的数据量,开启定时器并立刻休眠,根据数据量设定定时器的超时时间,在定时器超 时后唤醒检测信道,进行数据的传输。未竞争到信道的发送节点不必一直唤醒等待信道,竞 争到信道的节点由于获得带有自己ID号的令牌无需做随机退避。
[0077] 由于发送节点缓存队列中的数据是动态更新的,而竞争节点收到第一个ACK帧后 休眠,并不知道后续发送节点的缓存情况。因此在本发明中,我们在ACK帧中指定发送节点 的ID号。当竞争节点唤醒后,如果发送节点缓存队列中新增数据帧而并没有传输完毕,由 于ID号是自己的发送节点不需要随机退避,因此该节点可以继续占用信道,而其余唤醒的 竞争节点则继续根据新的数据量设定再一次休眠的时长。此外,在基于CSMA传统无线传感 器网络的异步MAC协议中并没有考虑隐藏终端问题,在ACK帧中发放令牌指定发送节点的 ID号,隐藏节点收到带有ID号不是自己的ACK帧根据ACK帧中的数据量设定休眠时长,能 够有效避免隐藏节点产生的碰撞问题,节省节点能耗。
[0078] 以上所述仅是本发明的优选实施方式,应当指出:对于本【技术领域】的普通技术人 员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应 视为本发明的保护范围。
【权利要求】
1. 一种无线传感器网络多流竞争场景下的数据传输方法,分为三个步骤,其特征在 于: 步骤a、对加入网络的节点进行初始化,发送节点建立接收列表和邻居列表,当接收节 点检测到碰撞时,接收节点发送一个带有竞争窗的信标帧,发送节点收到信标帧后做随机 退避,竞争到信道的节点发送数据帧,在此数据帧中携带此刻缓存队列中的数据量; 步骤b、接收节点收到数据帧后,回复ACK确认帧,在ACK帧中指定下一次发送节点的 ID号和发送节点的数据量; 步骤c、对于收到ACK帧带有的ID号是自己的发送节点不必做竞争退避,立刻发送数据 帧,其余未竞争到信道的节点收到ACK帧后根据数据量开启定时器并休眠,等定时器超时 后唤醒进行数据的传输。
2. 如权利要求1所述的无线传感器网络多流竞争传输的优化方法,其中所述步骤a具 体为步骤1到步骤3,具体如下: 步骤1、发送节点有数据需要发送,查询接收列表,如果接收节点在发送节点的接收列 表中,进入步骤1-1 ;如果接收节点不在发送节点的接收列表中,进入步骤1-2 ; 步骤1-1、发送节点预测接收节点醒来的时间,在接收节点醒来前唤醒侦听信道,进入 步骤2 ; 步骤1-2、发送节点立刻唤醒侦听信道,进入步骤2 ; 步骤2、接收节点唤醒,并发送信标帧,进入步骤3 ; 步骤3、当发送节点接收到不含竞争窗的信标帧,进入步骤3-1 ;当发送节点接收到含 有竞争窗的信标帧,进入步骤3-2 ;当发送节点收到ACK确认帧,进入步骤3-3 ;当发送节点 收到数据分组时进入步骤3-4 ; 步骤3-1、此时表明接收端未检测到碰撞,发送节点经过DIFS时长后发送数据帧,数据 帧中携带此时队列中的数据量, 查询接收列表,如果接收节点不在列表中,需要在发送的数据帧中添加请求标识位,进 入步骤4 ; 步骤3-2、此时表示接收端检测到碰撞,发送节点经过DIFS加随机退避时长后发送数 据帧,数据帧中携带此时队列中的数据量,进入步骤4 ; 步骤3-3、进入步骤5 ; 步骤3-4、发送节点对于发给自己的数据分组则接收,并进入步骤4 ;发送节点对于串 音收到的数据分组则丢弃; 其中所述步骤b具体如下: 步骤4、接收节点收到数据帧,根据数据帧是否含有请求标识位回复ACK帧, 数据帧含有请求标识位,进入步骤4-1 ;数据帧不含请求标识位,进入步骤4-2 ;当接收 节点检测到了碰撞进入步骤4-3 ; 步骤4-1、添加自身调度信息、发送节点的数据量和发送节点的ID号到ACK帧,如果此 时发送节点的数据量为0,则不添加发送节点的ID号,发送ACK帧,进入步骤5 ; 步骤4-2、添加发送节点的数据量和发送节点的ID号到ACK帧,如果此时发送节点的数 据量为〇,则不添加发送节点的ID号,发送ACK帧,进入步骤5 ; 步骤4-3、使用二进制指数退避方法,接收节点发送带有竞争窗口的信标帧,返回步骤 3 ; 其中所述步骤c具体为步骤5到步骤6,具体如下: 步骤5、当发送节点收到含有ID号的ACK帧,进入步骤5-1 ;当发送节点收到不含ID号 的ACK帧进入步骤5-2 ; 步骤5-1、当ACK帧中的ID号是自己则无需退避继续传输;当ACK帧中的ID号不是自 己,则解析ACK帧中携带的数据量,设定定时器并休眠,进入步骤6 ; 步骤5-2、当ACK帧发送给自己且发送节点有数据待发送,做CCA检测,通过CCA检测后 发送数据;当ACK帧不发送自己,将ACK帧转变成信标帧并广播; 步骤6、等待定时器超时后唤醒侦听信道,如果发送节点收到不含ID号的ACK帧,竞争 信道,准备数据传输;如果发送节点仍收到带有ID号的ACK帧,返回步骤5。
3.根据权利要求2所述无线传感器网络多流竞争场景下的数据传输方法,其中所述设 定的定时器时长为ACK帧中所携带的数据量的个数乘以单个数据包单跳范围内完成一次 传输所消耗的时间。
【文档编号】H04L1/00GK104092523SQ201410370854
【公开日】2014年10月8日 申请日期:2014年7月30日 优先权日:2014年7月30日
【发明者】刘昊, 张泰平, 张萌, 蒋富龙 申请人:东南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1