一种数据收集型移动水声传感网络的媒体接入控制方法与流程

文档序号:19815131发布日期:2020-01-31 19:00阅读:250来源:国知局
一种数据收集型移动水声传感网络的媒体接入控制方法与流程

本发明属于通信技术领域,具体是通信技术中媒体接入控制(mediaaccesscontrol,mac)协议领域,涉及一种数据收集型移动水声传感网络的媒体接入控制方法。



背景技术:

近年来,我国对海洋的探测与开发应用进行了大量研究,包括环境监测、海洋环境数据收集和灾难预防等,而这些实现需要水声传感网络的配合。由于采用声波进行数据通信,水声传感网络具有信道传播时延长且可变、带宽受限、丢包率高等特性,因此设计与开发mac协议是数据收集型水声传感网络的一个重要挑战。

水声传感网络mac协议根据信道占用方式,通常可以分为竞争方式、非竞争方式和混合方式。非竞争方式mac协议主要包括时分多址(timedivisionmultipleaccess,tdma)、码分多址(codedivisionmultipleaccess,cdma)和频分多址(frequencydivisionmultipleaccess,fdma)。非竞争mac协议不需要长时间的信道竞争周期,因此吞吐量较高且在协议流程设计上比较简单。然而,由于水声传感网络的特性,使得tdma很难达到精确的时间同步,cdma具有远近效应且需要较高的硬件复杂度,fdma中频带资源严重受限导致难以分配。因此,当前大多数研究都采用基于竞争的mac协议,发送节点通过发送控制包竞争到信道后,再向接收节点传输数据。基于竞争的mac协议能够有效地降低信道接入时延,提高信道利用率,但由于水声传感网络传播时延长且丢包率高,因此提高握手成功的概率是竞争型mac所面临的挑战。另外,混合型mac协议结合了多种类型mac协议的优点,能够满足网络应用层的多种需求。

然而,目前提出的大多数水声传感网络mac协议都是针对静态网络的。在静态网络中,汇聚节点收集传感节点的数据需要经过多跳转发,而由于水声信道条件较差,多跳转发容易发生丢包,并且需要消耗较大的能量,从而降低网络的吞吐量。因此考虑引入移动汇聚节点,利用移动的汇聚节点收集固定传感节点的数据,能够有效地提高信道利用率。



技术实现要素:

本发明的目的是针对现有水声传感网络mac协议不适用移动汇聚节点收集固定传感节点数据的场景,一种数据收集型移动水声传感网络的媒体接入控制方法。

本发明采用基于调度方式的mac协议,首先由移动汇聚节点广播控制包,通知并邀请数据收集范围内的固定传感节点向其传输数据;固定传感节点在收到该控制包后,若有数据需要传输,则发送控制包请求接入信道以传输数据;移动汇聚节点通过估算传播时延,调度固定传感节点依次发送数据包,较好地解决了可能由多个固定传感节点传输数据而引起的冲突,在一定程度上提高了网络吞吐量,保证了节点传输的公平性。

本发明是通过以下技术方案实现的:

步骤(1).广播通知:

该水声传感网络由1个移动汇聚节点与m个固定传感节点组成,m>1;

假设移动汇聚节点收集数据是周期性触发的,移动汇聚节点初始在空闲状态,当周期性数据收集触发后,移动汇聚节点首先广播通知包,用以通知数据收集范围内的固定传感节点准备向其发送数据,通知包由通知标志位、发送节点地址、固定传感节点请求包初始最大等待发送时间τmax和结束位组成,其中τmax为移动汇聚节点与数据收集范围内的固定传感节点间的最大传播时延,设置为:rmax为移动汇聚节点上的声学通信机的最大传输距离,由声学通信机发送功率、通信环境等决定,c为等效声速;

移动汇聚节点发送通知包后,进入wf_request(等待请求包)状态,启动wf_request(等待请求包)定时器,等待来自数据收集范围内的固定传感节点的请求包,wf_request定时器时长twf_request_timer设置为:其中kwf_request为移动汇聚节点等待请求包次数,0≤kwf_request≤kmax,kmax为移动汇聚节点在一轮传输过程中的请求包最大等待次数,kmax≥1,θ为一个控制包传输时长,kwf_request初始值为0,故twf_request_timer初始值为3τmax+θ;

当wf_request定时器超时,若移动汇聚节点未接收到来自固定传感节点的请求包,表明数据收集范围内的节点无数据需要传输,或节点发送的请求包发生碰撞,移动汇聚节点保持wf_request状态,重新启动wf_request定时器,等待来自数据收集范围内的固定传感节点可能重传的请求包;随着kwf_request增大,当wf_request定时器超时,且kwf_request=kmax时,若移动汇聚节点仍未接收到来自固定传感节点的请求包,则进入空闲状态;

步骤(2).通知响应:

当固定传感节点i收到通知包后,如果没有数据需要传输,则保持空闲状态;如果节点i有数据需要传输,则根据收到的通知包中包含的请求包初始最大等待发送时间τmax,在[0,τmax]范围内随机选择一段等待时间twt_s_request,i,进入wt_s_request(等待发送请求包)状态,启动wt_s_request(等待发送请求包)定时器;

当wt_s_request定时器超时,节点i发送请求包请求接入信道以传输数据,请求包由请求标志位、发送节点地址、接收节点地址、节点等待发送请求包时间twt_s_request,i、需要传输的数据包个数和结束位组成;

当节点i发送请求包后,进入wf_order(等待排序包)状态,启动wf_order(等待排序包)定时器,等待来自移动汇聚节点的排序包,wf_order定时器的时长twf_order_timer,i设置为:其中ks_request,i为节点i发送请求包的次数,0≤ks_request,i≤kmax,ks_request,i初始值为0,故twf_order_timer,i初始值为3τmax+θ-twt_s_request,i;

当wf_order定时器超时,若节点i未收到排序包,则在范围内随机选择一段等待时间twt_s_request,i,进入wt_s_request状态,启动wt_s_request定时器,当wt_s_request定时器超时,节点i重传请求包请求接入信道以传输数据;随着ks_request,i增大,当wf_order定时器超时,且ks_request,i=kmax时,若节点i仍未收到来自移动汇聚节点的排序包,则放弃本轮数据传输,进入空闲状态;

步骤(3).广播调度:

移动汇聚节点收到固定传感节点发送的请求包后,根据通知包的发送时刻ts_hello、请求包的接收时刻tr_request,i和节点i等待发送请求包时间twt_s_request,i,估算出移动汇聚节点与节点i之间的传播时延τsink,i:

当wf_request定时器超时,移动汇聚节点根据估算的与各固定传感节点之间的传播时延递增顺序,安排各节点的数据包发送顺序表;为了补偿移动汇聚节点在靠近或远离节点i时产生传播时延计算误差,从而对数据传输造成影响,在移动汇聚节点接收节点i的第一个数据包前和最后一个数据包后分别设置一个保护间隔,保护间隔时长tguard,i设置为:其中vsink为移动汇聚节点的移动速度;

为保证各固定传感节点的数据包无冲突地依次到达移动汇聚节点处,移动汇聚节点需调度节点i的数据包发送,即节点i在发送数据包前需要等待一段特定时间,节点i发送数据包前需等待时间twt_s_data,i设置为:

其中i,j∈{o1,o2,…,on},oi和oj分别是节点i和节点j的数据包发送顺序,n为确认发送数据包的节点个数,δ是一个数据包传输时长;

移动汇聚节点将计算的各固定传感节点发送数据包之前需等待的时间包含在排序包中广播出去,调度固定传感节点的数据发送,排序包由排序标志位、接收节点地址、相应的节点i等待发送数据时间twt_s_data,i、数据接收总时长twf_data_timer和结束位组成;

移动汇聚节点发送排序包后,进入wf_data(等待数据包)状态,启动wf_data(等待数据包)定时器,等待来自固定传感节点的数据包,wf_data定时器时长twf_data_timer设置为:

步骤(4).数据传输:

当节点i接收到排序包,关闭wf_order定时器,若排序包中不含自身地址,表明节点i发送的请求包发生碰撞;若ks_request,i=kmax,则节点i放弃本轮数据传输,进入空闲状态;若ks_request,i<kmax,则节点i进入quiet(静默)状态,启动quiet(静默)定时器,直到接收到来自移动汇聚节点的确认包或邀请包,quiet定时器时长tquiet_timer设置为:

tquiet_timer=twf_data_timer+θ;

若排序包中含自身地址,节点i根据节点i等待发送data时间twt_s_data,i,进入wt_s_data(等待发送数据包)状态,启动wt_s_data(等待发送数据包)定时器,当wt_s_data定时器超时,节点i发送数据包,该数据包由数据标志位、发送节点地址、接收节点地址、数据、数据校验位和结束位组成;当节点i发送完数据包后,进入wait(等待)状态,启动wait(等待)定时器,等待来自移动汇聚节点的确认包或邀请包,wait定时器时长twait_timer,i设置为:

步骤(5).传输响应:

如果移动汇聚节点正确接收到所有约定传输的数据包,关闭wf_data定时器,广播确认包,确认包不仅用于确认数据包的正确接收,还用于邀请数据收集范围内的静默节点向其传输数据,确认包由确认标志位、数据包接收成功指示位和结束位组成;

移动汇聚节点发送确认包后,进入wf_request状态,启动wf_request定时器,等待来自数据收集范围内的静默节点重传的请求包;

当处于wait状态的节点i接收到来自移动汇聚节点的确认包,表明节点成功传输数据包,则关闭wait定时器,进入空闲状态;

当静默节点i接收到来自移动汇聚节点的确认包,则关闭quiet定时器,并在范围内随机选择一段等待时间twt_s_request,i,进入wt_s_request状态,启动wt_s_request定时器,当wt_s_request定时器超时,节点i重传请求包请求接入信道以传输数据;

当wf_data定时器超时,如果移动汇聚节点没有正确接收所有约定传输的数据包,则广播邀请包,邀请包不仅用于请求丢失或错误数据包的重传,还用于邀请数据收集范围内的静默节点向其传输数据;在发生丢包或错包时,移动汇聚节点需重新调度节点i重传相应的数据包,移动汇聚节点通过计算节点i在收到邀请包后需等待重传相应数据包的时间,并包含在邀请包中发送出去,邀请包由邀请标志位、需重传数据包的接收节点地址、相应数据包序号、节点等待重传数据包时间、相应数据包收总时长twf_re_data_timer和结束位组成;节点i重传相应数据包前需等待时间twt_res_data,i设置为:

其中i,j∈{o1',o2',…,on'},oi'和oj'分别为节点i和节点j的相应数据包重传顺序,n'为重传相应数据包的节点个数;

移动汇聚节点发送邀请包后,进入wf_re_data(等待重传的数据包)状态,启动wf_re_data(等待重传的数据包)定时器,等待来自节点i重传的相应数据包,wf_re_data定时器时长twf_re_data_timer设置为:

当wf_re_data定时器超时,移动汇聚节点进入wf_request状态,启动wf_request定时器,等待来自数据收集范围内的静默节点重传的请求包;

当处于wait状态的节点i接收到来自移动汇聚节点的邀请包,关闭wait定时器,若邀请包不含自身地址,则表明该节点成功传输数据包,进入空闲状态;若邀请包中含自身地址,则节点i根据节点i等待重传相应数据包时间twt_res_data,i,进入wt_res_data(等待重新发送相应数据包)状态,启动wt_res_data(等待重新发送相应数据包)定时器,当wt_res_data定时器超时,节点i重传相应数据包;

当静默节点i接收到来自移动汇聚节点的邀请包,关闭quiet定时器,并根据邀请包中包含的数据包接收总时长twf_re_data_timer,在范围内随机选择一段等待时间twt_s_request,i,进入wt_s_request状态,启动wt_s_request定时器,当wt_s_request定时器超时,节点i发送请求包请求接入信道以传输数据;

当静默节点i的quiet定时器超时,若节点i未接收到来自移动汇聚节点的确认包或邀请包,则放弃本轮数据传输,进入空闲状态。

与其它水声传感网络mac协议相比,本发明的优点体现在:

1、现有的水声传感网络mac协议都是针对静态网络的。在静态网络中,汇聚节点收集传感节点的数据需要经过多跳转发,而由于水声信道条件较差,多跳转发容易发生丢包,并且需要消耗较大的能量,从而降低网络的吞吐量。因此,考虑引入移动汇聚节点,本发明利用移动的汇聚节点来收集固定传感节点的数据,能够有效地提高信道的利用率。

2、当水声传感网络中有多个固定传感节点需要向移动汇聚节点传输数据时,本发明通过估算移动汇聚节点和各固定传感节点之间的传播时延,调度节点数据包发送顺序,计算各个固定传感节点在发送数据包之前需等待的时间,保证多个固定传感节点的数据包依次到达移动汇聚节点处,有效地避免了数据冲突,提高了数据收集型网络的传输吞吐量。

3、由于汇聚节点是移动的,为了补偿移动汇聚节点在靠近或远离节点时产生传播时延计算误差,从而对数据传输造成影响,本发明在移动汇聚节点接收各固定传感节点的第一个数据包前和最后一个数据包后分别设置一个短的保护间隔。

4、本发明针对数据传输中发生的丢包、错包问题,将其与正确接收所有数据包的情况分开考虑,在前者情况下,移动汇聚节点通过广播邀请包请求节点重传相应数据包,并邀请数据收集范围内的静默节点向其传输数据;在后者情况下,移动汇聚节点通过广播确认包确认数据包的正确接收,同时也邀请数据收集范围内的静默节点向其传输数据。

附图说明

图1为带移动汇聚节点的数据收集网络拓扑示意图;

图2为无错包和丢包发生时的mac协议工作时序;

图3为发生错包或丢包时的mac协议工作时序;

图4为移动汇聚节点的状态转移图;

图5为固定传感节点的状态转移图;

图6为控制包和数据包格式;

图7为移动汇聚节点的状态转移图事件及其说明示意图;

图8为固定传感节点的状态转移图事件及其说明示意图。

具体实施方式

以下结合附图实施例对本发明作进一步详细说明。

一种数据收集型移动水声传感网络的媒体接入控制方法,具体通过以下步骤实现:

步骤(1)广播通知:

图1所示的数据收集型水声传感网络中,传感节点a、b、c、d、e、f、g、h和i是固定节点,汇聚节点是移动的,移动汇聚节点和固定传感节点分别按图4和图5所示a进行状态转移,相应的状态转移图事件及其说明分别如图7和图8所示。mac协议的工作时序如图2所示,其中auv表示负责收集数据的移动汇聚节点,节点a、b、c、d、e和f为auv数据收集范围内的固定传感节点。假设auv收集数据是周期性触发的,auv初始在idle(空闲)状态,当周期性数据收集触发后,auv首先广播hello(通知)包,用以通知数据收集范围内的固定传感节点准备向其发送数据。hello包格式如图6(a)所示,由hello标志位、发送节点地址、固定传感节点request(请求)包初始最大等待发送时间τmax和结束位组成,其中τmax为auv与数据收集范围内的固定传感节点间的最大传播时延,设置为:其中rmax为auv上的声学通信机的最大传输距离,由声学通信机发送功率、通信环境等决定,c为等效声速。auv发送hello包后,进入wf_request状态,启动wf_request定时器,等待来自数据收集范围内的固定传感节点的响应request包。wf_request定时器时长twf_request_timer设置为:

其中kwf_request为auv等待request包次数,0≤kwf_request≤2,θ为一个控制包传输时长。kwf_request初始值为0,故此时twf_request_timer=3τmax+θ。

当wf_request定时器超时,若auv未接收到来自固定传感节点的request包,表明数据收集范围内的节点无数据需要传输,或节点发送的request包发生碰撞,auv保持wf_request状态,重新启动wf_request定时器,等待来自数据收集范围内的固定传感节点可能重传的request包。随着kwf_request增大,当wf_request定时器超时,且kwf_request=2时,若auv仍未接收到来自固定传感节点的request包,则进入idle状态。

步骤(2)通知响应:

当固定传感节点i收到hello包后,如果没有数据需要传输,则保持idle状态,如图2中的节点e。如果节点i有数据需要传输,如图2中的节点a、b、c、d和f,则根据收到的hello包中包含的request包初始最大等待发送时间τmax,在[0,τmax]范围内随机选择一段等待时间twt_s_request,i,进入wt_s_request状态,启动wt_s_request定时器。当wt_s_request定时器超时,节点i发送request包请求接入信道以传输数据。request包格式如图6(b)所示,由request标志位、发送节点地址、接收节点地址、节点等待发送request时间twt_s_request,i、需要传输的数据包个数和结束位组成。当节点i发送request包后,进入wf_order状态,启动wf_order定时器,等待来自auv的order(排序)包。wf_order定时器时长twf_order_timer,i设置为:

其中ks_request,i为节点i发送request包的次数,0≤ks_request,i≤2,ks_request,i初始值为0,故此时twf_order_timer,i=3τmax+θ-twt_s_request,i。

当wf_order定时器超时,若节点i未收到order包,则在范围内随机选择一段等待时间twt_s_request,i,进入wt_s_request状态,启动wt_s_request定时器。当wt_s_request定时器超时,节点i重传request包请求接入信道以传输数据。随着ks_request,i增大,当wf_order定时器超时,且ks_request,i=2时,若节点i仍未收到来自auv的order包,则放弃本轮数据传输,进入idle状态。

步骤(3)广播调度:

auv收到固定传感节点发送的request包后,根据hello包的发送时刻ts_hello、request包的接收时刻tr_request,i与request中包含的节点i等待发送request时间twt_s_request,i,大致估算出auv与节点i之间的传播时延τauv,i为:

当wf_request定时器超时,auv根据估算的与各固定传感节点之间的传播时延递增顺序,安排各节点的data(数据)包发送顺序表。由于可能会发生两个或两个以上的固定传感节点发送的request包碰撞,如图2所示,节点d和f发送的request包发生碰撞,则auv无法正确接收节点d和f的request包,只能估算出与节点a、b和c之间的传播时延。假设τauv,a≤τauv,b≤τauv,c,节点data包发送顺序表为{a→b→c}。

为了补偿auv在靠近或远离节点i时产生传播时延计算误差,从而对数据传输造成影响,在auv接收节点i的第一个data包前和最后一个data包后分别设置一个保护间隔。保护间隔时长tguard,i设置为:其中vauv为auv的移动速度。

为保证各固定传感节点的data包无冲突地依次到达auv处,auv需调度节点i的data包的发送,即节点i在发送data包前需要等待一段特定时间。节点i发送data包前需等待时间twt_s_data,i设置为:

其中i,j∈{a,b,c},oi和oj分别是节点i和节点j的data包发送顺序,如图2所示,o1=a,o2=b,o3=c,δ是一个数据包传输时长。

auv将计算的各固定传感节点发送data包之前需等待的时间包含在order包中广播出去,调度固定传感节点的数据发送。order包格式如图6(c)所示,由order标志位、接收节点地址、相应的节点i等待发送data时间twt_s_data,i、data接收总时长twf_data_timer和结束位组成。auv发送order包后,进入wf_data状态,启动wf_data定时器,等待来自固定传感节点的data包。wf_data定时器时长twf_data_timer设置为:

步骤(4)数据传输:

当节点i接收到order包,关闭wf_order定时器,若order包中不含自身地址,表示节点i发送的request包发生碰撞。若ks_request,i=2,则节点i放弃本轮数据传输,进入idle状态。若ks_request,i<2,如图2中的节点d和f,则节点i进入quiet(静默)状态,启动quiet定时器,直到接收到来自auv的ack包或invite包。quiet定时器的时长tquiet_timer设置为:tquiet_timer=twf_data_timer+θ;

若order包中含自身地址,节点i根据节点i等待发送data时间twt_s_data,i,进入wt_s_data状态,启动wt_s_data定时器。当wt_s_data定时器超时,节点i发送data包。data包格式如图6(d)所示,由data标志位、发送节点地址、接收节点地址、数据、数据校验位和结束位组成。当节点i发送完data包后,进入wait状态,启动wait定时器,等待来自auv的ack(确认)包或invite(邀请)包。wait定时器时长twait_timer,i设置为:

步骤(5)传输响应:

如果auv正确接收到所有约定传输的data包,关闭wf_data定时器,广播ack包,ack包不仅用于确认data包的正确接收,还用于邀请数据收集范围内的静默节点向其传输数据。ack包格式如图6(e)所示,由ack标志位、数据包接收成功指示位和结束位组成。auv发送ack包后,进入wf_request状态,启动wf_request定时器,等待来自数据收集范围内的静默节点重传的request包。

当处于wait状态的节点i接收到来自auv的ack包,如图2中的节点a、b和c,表明节点成功传输数据包,则关闭wait定时器,进入idle状态。

当静默节点i接收到来自auv的ack包,如图2中的节点d和f,则关闭quiet定时器,并在范围内随机选择一段等待时间twt_s_request,i,进入wt_s_request状态,启动wt_s_request定时器。当wt_s_request定时器超时,节点i重传request包请求接入信道以传输数据。

当wf_data定时器超时,如果auv没有正确接收所有约定传输的data包,则广播invite包。invite包不仅用于请求丢失或错误数据包的重传,还用于邀请数据收集范围内的静默节点向其传输数据。在发生丢包或错包时,auv需重新调度节点i重传相应的data包,如图3所示,节点b的data包传输出现错包,节点c的data包传输出现丢包,则auv分别计算节点b和c在收到invite包后需等待重传相应data包的时间,并包含在invite包中发送出去。invite包格式如图6(f)所示,由invite标志位、需重传data包的接收节点地址、相应data包序号、节点等待重传data包时间、相应data接收总时长twf_re_data_timer和结束位组成。节点i重传相应data包前需等待时间twt_res_data,i设置为:

其中i,j∈{b,c},oi'和oj'分别为节点i和节点j的相应data包重传顺序,如图3所示,o1'=b,o2’=c。

auv发送invite包后,进入wf_re_data状态,启动wf_re_dat定时器,等待来自节点i重传的相应data包。wf_re_data定时器时长twf_re_data_timer设置为:

当wf_re_data定时器超时,auv进入wf_request状态,启动wf_request定时器,等待来自数据收集范围内的静默节点重传的request包。

当处于wait状态的节点i接收到来自auv的invite包,关闭wait定时器。若invite包不含自身地址,则表明该节点成功传输数据包,进入idle状态。若invite包中含自身地址,则节点i根据节点i等待重传相应data包时间twt_res_data,i,进入wt_res_data状态,启动wt_res_data定时器,如图3中的节点b和c。当wt_res_data定时器超时,节点i重传相应data包。

当静默节点i接收到来自auv的invite包,如图3中的节点d和f,则关闭quiet定时器,并根据收到的invite包中包含的data接收总时长twf_re_data_timer,在范围内随机选择一段等待时间twt_s_request,i,进入wt_s_request状态,启动wt_s_request定时器。当wt_s_request定时器超时,节点i发送request包请求接入信道以传输数据。

当静默节点i的quiet定时器超时,若节点i未接收到来自auv的ack包或invite包,则放弃本轮数据传输,进入idle状态。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1