一种基于分簇的水声传感器网络混合介质访问控制通信方法与流程

文档序号:11180309阅读:825来源:国知局
一种基于分簇的水声传感器网络混合介质访问控制通信方法与流程

本发明涉及的是一种水声信号处理方法,具体地说是一种水声传感器网络数据链路层的介质访问控制(mediaaccesscontrol,mac)协议。



背景技术:

水声传感器网络一般由位于水面上的浮标节点、位于海洋底部的固定传感器节点以及位于海水中可移动的传感器节点构成,是对海洋区域进行数据信息收集、处理和发送的综合传感器网络。网络中的位于海洋底部的节点通过海水中可移动的传感器节点作为中继节点,传输到水面上的浮标节点。mac协议的作用是将网络中十分有限的信道资源合理分配给每个节点使用,确保所有节点都能够进行安全可靠高效的数据传输。因为水声传感器网络的传输载波和传输环境与其他无线网络有很大不同,所以许多现有的经典mac协议无法直接在水声传感器网络中使用,需要结合水下环境进行适当的设计与改进。

tdma(timedivisionmultipleaddress)协议按照周期进行通信,每一个通信周期为节点各自分配一个时隙,节点在各自的时隙内进行传输。tdma协议具有节能、无数据传输冲突、公平性好的优点。但是水声传感器网络传播时延较大,每个通信周期都是陆上无线传感器网络的数十倍,对于大规模多节点的网络使用tdma协议会造成端到端时延急剧增高,同时tdma要求较为严格的时隙同步,大规模网络进行时间同步十分困难,还会消耗大量的能量,降低了网络的使用寿命。

maca(multipleaccesswithcollisionavoidance)协议是基于竞争的协议,数据发送过程中,发送节点发送数据前先向接收节点发送rts控制报文,接收者收到rts后,回送cts报文,发送节点收到cts后,发送节点开始发送数据。收到rts的其它节点在一段时间内不能发送任何消息,以保证发送节点能够接收并响应cts分组。听到cts的节点,知道在它的通信范围内有节点要接收某种长度的分组,通过实施二进制指数退避算法延迟发送来避免冲突。发送节点只有在收到对方回送的cts后才能发送数据,如果没有收到cts,则认为rts因为冲突被破坏,然后执行二进制指数退避算法,延迟重发rts。采用maca协议能够有效避免数据冲突,同时避免时间同步的麻烦,但是对于大规模多节点的水声传感器网络,竞争的开销过大,且竞争效率下降的十分明显。



技术实现要素:

本发明的目的在于提供一种能有效解决大规模水声通信网络网络资源浪费造成的吞吐量性能差以及数据报文端到端时延过长的问题的基于分簇的水声传感器网络混合介质访问控制通信方法。

本发明的目的是这样实现的:

步骤1:水声传感器网络初始化

整个水声传感器网络由一个水面中心节点和k个水下信息采集传感器节点构成,rmax为水面中心节点通信范围半径,k个水下信息采集传感器节点按照自身节点id进行标识;

步骤2:水面中心节点广播通知分簇信息

水面中心节点根据k个水下信息采集传感器节点的地理位置信息以及实时信息采集的需求,将k个水下信息采集传感器节点进行分簇,为每个簇分配簇id并确定簇内节点及其通信频率,选取每个簇内节点id最小的传感器节点作为簇头,依据每个簇内节点间的最远传输距离lmax确定簇内时隙长度为t=lmax/v,其中v为声波在水中的传输速率,水面中心节点将分簇信息以广播的形式通知每个水下信息采集传感器节点,所述分簇信息包含每个簇的簇id、簇头id、簇成员id、通信频率以及簇内时隙长度;

步骤3:确定簇内时隙表

每个水下信息采集传感器节点接收水面中心节点发送的分簇信息后,获得所在簇的分簇信息,首先判断自身是否被分配为簇头节点,如果不是簇头节点,则根据每个簇内时隙表按照簇成员id的升序排列分配原则,确定簇内时隙表以及自身在簇内的发送时隙,进入统计周期;

步骤4:统计周期开始,簇成员节点根据簇内时隙表,在自身时隙将数据报文发送给簇头节点;

步骤5:簇头节点接收完一个时隙周期内簇成员发送的数据报文后,统计周期结束;

步骤6:簇头节点通过侦听是否有来自其他簇头节点或者水面中心节点的消息,从而判断信道是否处于空闲状态,簇头节点的信道侦听时间为tl=2rmax/v,若簇头节点在信道侦听时间tl内没有接收到来自其他簇头节点或者水面中心节点的数据报文,则判断信道处于空闲状态,否则判断信道处于忙碌状态;

步骤7:簇头节点根据步骤6中侦听到的信道状态,确定是否向水面中心节点发送rts信道预约报文,

当判断信道处于忙碌状态时,簇头节点重置侦听等待时间tl,继续侦听,直到判断信道处于空闲状态;当判断信道处于空闲状态,簇头节点向水面中心节点发送一个rts信道预约报文进行信道预约;

步骤8:水面中心节点在成功接收到簇头节点发送的rts信道预约报文后向该簇头发送cts应答报文,并将信道预约标识设置为1,拒绝接收其他簇头节点发送的rts信道预约报文;

步骤9:簇头节点在发送rts信道预约报文后的侦听等待时间tl内没有收到水面中心节点发送的cts应答报文,重新发送rts信道预约报文并重置侦听等待时间tl,等待水面中心节点发送的cts应答报文;如果簇头节点在发送rts信道预约报文后的侦听等待时间tl内接收到水面中心节点发送的cts应答报文,判断自身地址是否为cts应答报文的预约节点地址,若自身地址不是cts应答报文的预约节点地址,则判断信道已被其他簇头节点预约,信道处于忙碌状态,重新执行步骤7继续侦听,直到判断信道为空闲状态时再次向水面中心节点发送rts信道预约报文;若自身地址是cts应答报文的预约节点地址,则判断信道预约成功,簇头节点准备发送数据报文;

步骤10:簇头节点向水面中心节点发送数据报文

簇头节点将每个簇成员发送的数据前面加上起始标识符和数据帧id作为一个数据帧,并将所有数据帧按照簇成员id的升序排列组成数据报文,数据报文的最后有终止标识符,簇头节点将数据报文发送给水面中心节点;

步骤11:水面中心节点未完全正确接收簇头节点发送的数据报文后,发送nack报文给簇头节点;如果水面中心节点完全正确接收簇头节点发送的数据报文后,生成ack报文,重新分配分簇信息,将重新分配的分簇信息加到ack报文中并将ack报文发送给簇头节点;

步骤12:簇头节点发送完数据报文后,如果在侦听等待时间tl内接收到水面中心节点发送的nack报文,根据nack报文中的错误帧id重新向水面中心节点发送对应数据帧id的数据,直到接收到水面中心节点发送的ack报文为止,如果侦听等待时间tl内接收到水面中心节点发送的ack报文,则依据ack报文中包含的分簇信息广播发送给簇成员节点,执行步骤3,进入下一个统计周期。

本发明针对大规模集中式传感器网络在使用时隙分配协议时同步困难,以及使用竞争协议时资源浪费的缺点,提出了一种基于分簇的tdma协议和maca协议混合的水声传感器网络mac协议(cm-maca协议)实现方法,有效的解决大规模水声通信网络网络资源浪费造成的吞吐量性能差以及数据报文端到端时延过长的问题。

本发明的基于分簇的水声传感器网络混合mac协议的实现方法,将大规模集中式网络进行分簇,簇内和簇间通信采取不同数据传输协议,簇内通信采取基于时隙的tdma协议,簇间通信采取基于竞争的maca协议,同时根据水声信号的传输特点,对簇间通信中使用的maca协议进行针对性改进,加入了侦听机制有效防止隐藏终端,另外在数据传输过程中将数据报文分解为多个帧并加入起始标识符和簇成员id,由此来降低数据丢失后重发的延迟时间。

本发明的优点在于:

1)合理利用每个节点的能量,提高整体网络的能量利用率,不会出现单一节点能量剩余较少而其他节点能量剩余较多的情况;

2)簇内收集数据可以多个簇同时进行,互不影响,提高网络吞吐量;簇头与中心节点间采用的带侦听机制的竞争协议,可以有效防止消息碰撞,同时解决了大规模网络节点间时间同步困难的问题。

附图说明

图1:拓扑结构示意图。

图2:本发明流程框图。

图3:rts/cts报文格式示意图。

图4:数据报文格式示意图。

图5:nack报文格式示意图。

图6:ack报文格式示意图。

图7:本发明提出的cm-maca协议与tdma以及maca协议吞吐量性能比较。

图8:本发明提出的cm-maca协议与tdma以及maca协议端到端时延性能比较。

图9:本发明提出的cm-maca协议与tdma以及maca协议能源消耗性能比较。

具体实施方式

下面结合附图举例对本发明的技术方案做进一步详细说明。

实施例1:

如图1所示为本发明具体实施例的拓扑结构示意图。

步骤1,进行水声传感器网络初始化。整个水声传感器网络由一个水面中心节点和六个水下信息采集传感器节点构成,rmax为水面中心节点通信范围半径,六个水下信息采集传感器节点按照自身节点id进行标识。节点a的id为1,节点b的id为2,节点c的id为3,节点d的id为4,节点e的id为5,节点f的id为6。

步骤2,水面中心节点广播通知各节点分簇信息。水面中心节点根据六个水下信息采集传感器节点的地理位置信息以及实时信息采集的需求,将六个水下信息采集传感器节点进行分簇,为每个簇分配簇id并确定簇内节点及其通信频率,节点a、节点b、节点c的簇id为1,节点d、节点e、节点f的簇id为2,选取每个簇内节点id最小的传感器节点作为簇头,依据每个簇内成员节点间的最远传输距离lmax确定簇内时隙长度为t=lmax/v,其中v为声波在水中的传输速率。第1簇的簇头为节点a,簇内时隙长度为t=lbc/v,第2簇的簇头为节点d,簇内时隙长度为t=ldf/v。水面中心节点将以上得到的分簇信息以广播的形式通知每个水下信息采集传感器节点,使得每个水下信息采集传感器节点获得自身的簇id、簇头id、簇成员id、通信频率以及簇内时隙长度。其中节点a、节点b、节点c的簇id为1、簇头id为1、簇成员id为2、3,节点c、节点d、节点e的簇id为2、簇头id为4、簇成员id为5、6。

步骤3,确定簇内时隙表。每个水下信息采集传感器节点收到水面中心节点发送的分簇信息后,首先判断自身是否被分配为簇头节点。如果不是簇头节点,则根据每个簇内时隙表按照簇成员id的升序排列分配原则,确定簇内时隙表以及自身在簇内的发送时隙,进入统计周期。

步骤4,统计周期开始,节点b、节点c根据步骤3中得到的簇内时隙表,在自身时隙将数据报文发送给簇头节点a。

步骤5,簇头节点a接收完一个时隙周期内簇成员节点发送的数据报文后,统计周期结束。

步骤6,簇头节点a通过侦听是否有来自簇头节点d或者水面中心节点的消息,从而判断信道是否处于空闲状态。簇头节点a的信道侦听时间为tl=2rmax/v,其中rmax为水面中心节点通信范围半径,v为声波在水中的传输速率。若簇头节点a在信道侦听时间tl内没有接收到来自其他簇头节点d或者水面中心节点的数据报文,则判断信道处于空闲状态,否则判断信道处于忙碌状态。

步骤7,簇头节点a根据步骤6中侦听到的信道状态,确定是否向水面中心节点发送rts信道预约报文。当判断信道处于忙碌状态时,簇头节点a重置侦听等待时间tl,继续侦听,直到判断信道处于空闲状态;当判断信道处于空闲状态,簇头节点a向水面中心节点发送一个rts信道预约报文进行信道预约。

步骤8,水面中心节点在成功接收到簇头节点a发送的rts信道预约报文后向该簇头发送cts应答报文(报文格式如图3所示),并将信道预约标识设置为1,拒绝接收其他簇头节点发送的rts信道预约报文。

步骤9,簇头节点a在发送rts信道预约报文后的侦听等待时间tl内没有收到水面中心节点发送的cts应答报文,重新发送rts信道预约报文并重置侦听等待时间tl,等待水面中心节点发送的cts应答报文;如果簇头节点a在发送rts信道预约报文后的侦听等待时间tl内接收到水面中心节点发送的cts应答报文,判断自身地址是否为cts应答报文的预约节点地址。若自身地址不是cts应答报文的预约节点地址,则判断信道已被其他簇头节点预约,信道处于忙碌状态,重新执行步骤7继续侦听,直到判断信道为空闲状态时再次向水面中心节点发送rts信道预约报文;若自身地址是cts应答报文的预约节点地址,则判断信道预约成功,簇头节点a准备发送数据报文。

步骤10,簇头节点将每个簇成员发送的数据前面加上起始标识符和数据帧id作为一个数据帧,并将所有数据帧按照簇成员id的升序排列组成数据报文,数据报文的最后有终止标识符。簇头节点将数据报文发送给水面中心节点。

步骤11,水面中心节点未完全正确接收簇头节点a发送的数据报文后,发送nack报文给簇头节点a,nack报文的格式如图5所示,如果水面中心节点完全正确接收簇头节点a发送的数据报文后,发送ack报文给簇头节点a,根据接收到的每个数据帧内信息重新分配分簇信息,将重新分配的分簇信息加到ack报文中并将ack报文发送给簇头节点,ack报文的格式如图6所示。

步骤12,簇头节点a发送完数据报文后,如果在侦听等待时间tl内接收到水面中心节点发送的nack报文,根据nack报文中的错误帧id重新向水面中心节点发送对应数据帧id的数据,直到接收到水面中心节点发送的ack报文为止,如果侦听等待时间tl内接收到水面中心节点发送的ack报文,则依据ack报文中包含的分簇信息广播发送给簇成员节点,执行步骤3,进入下一个统计周期。

图7~图9分别给出了本发明提出的cm-maca协议与tdma以及maca协议在网络吞吐量、端到端时延、能源消耗性能的比较。由图7~图9可以看出,随着网络业务量的增加,本发明提出的cm-maca协议可以更好地提高水声通信网络的吞吐量,降低端到端时延以及网络能源消耗。

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