APP下载

基于分簇的双簇首水下传感器网络时间同步算法

2020-02-19孔维全刘广钟

计算机工程 2020年2期
关键词:信标报文数据包

孔维全,刘广钟

(上海海事大学 信息工程学院,上海 201306)

0 概述

近年来,水下传感器网络受到学术界和工业界研究人员的极大关注[1],该网络可应用于沿海监视、环境监测、海底勘探、防灾侦查等大量应用场景。然而,由于陆地传感器常用的无线电波在水下会产生高衰减,因此声学通信成为水下传感器主要的传输方法。

为了通过节点间的协调与合作完成各项分布式任务,需要时间同步技术作为支撑,时间同步技术是时分复用调度、传感数据融合、介质访问控制协议等多项关键技术的基础[2]。然而,水下传感器的节点部署要求较高,一旦部署完成很难进行维护和更换,所以传感器的计算资源与能量存储都非常有限。此外,水声信道的传播速度大约为1 500 m/s,比电磁波信号低 5个数量级,由于陆地传感器在进行时间同步时通常会忽略传播延迟,而在水下环境中,巨大的传播延迟在节点通信时是不可忽略的重要因素,其受海水的温度、盐度、密度等多种因素的影响,因此水下声波的速度会发生随机性较大的变化。同时,传感器节点具有随洋流影响而移动的特点,在某节点发送消息和收到回复消息的时间间隔内,节点会发生相对移动,导致传播延迟在每次信息交互中都会发生变化[3],更重要的是,水下传感器的计算能力有限,因此,不宜设计过于复杂的算法使其消耗大量能量。

本文综合考虑水下通信的特点,提出一种基于低能耗分簇辅助的双簇首时间同步算法DCH-Sync。采用分簇模型求解在能耗最低情况下的最佳分簇数量,从簇中选取2个最优节点作为主簇首和副簇首,通过移动信标节点完成簇首同步,并引入节点移动模型提高定位精度。在此基础上,利用双簇首完成对普通节点的时间同步。

1 相关工作

目前,针对陆地传感器网络的时间同步算法的研究已取得较多成果,例如,RBS(Reference Broadcast Synchronization)算法[4]使用第三方发送广播报文实现全局同步,TPSN(Timing-sync Protocol for Sensor Network)算法[5]对所有节点进行分层和逐层同步,FTSP(Flooding Time Synchronization Protocol)算法[6]则考虑了根节点选举与节点失效等的影响。然而,上述研究均未考虑海洋环境的特殊性,并且忽略了传播延迟的影响,因此这类协议不适用于水下传感器。

近年来,针对水下传感器时间同步的研究已取得了一些进展。高延迟水下时间同步协议(Time Synchronization for High Latency,TSHL)[7]将时间同步分为2个阶段,在第1阶段,待同步节点通过接收信标节点发送的25个消息包,利用线性拟合估计自身的时钟频偏,在第2阶段,待同步节点与信标节点进行双向交互,从而计算出时钟相偏。然而,该算法未考虑节点移动的问题,且假设传播延迟不变,并不适用于实际情况。MU-Sync是针对水下节点移动性提出的一种具有代表性的同步算法[8],该算法运用分簇思想进行两轮线性拟合。第1轮采用发送-接收的方式进行10次信息包交互,每次交互可称为一次REF包交换,该轮线性拟合忽略传播延迟的变化,采用固定值计算各节点的时钟频偏,而第2轮线性拟合去除相应的传播延迟,得到更加精确的时钟偏移估计。Mobi-Sync[9]引入节点移动模型,并使用3个信标节点对一个节点进行同步,通过一组速度矢量描述节点的运动情况,但此算法过于繁琐且能耗较大,难以实现。D-Sync[10]算法利用多普勒效应辅助时间同步,通过比较发送、接收数据包的时间估计多普勒因子的值,获得节点的移动方向与速度,其缺点在于需要配备额外的多普勒测量器,增加了部署成本。文献[11]提出一种多普勒辅助水下传感器网络时间同步机制,由于节点在数据传输时发生运动,数据帧在多普勒频移的影响下会被压缩或扩展,因此接收信号的长度会发生变化,利用这一特性可计算多普勒因子,从而完成时间同步。但是,该方法实现难度过高且需要额外的硬件才能完成,不适用于实际情况。上述水下传感器时间同步算法虽然考虑了水下高延迟和节点移动等因素,但均未解决节点能耗过大的问题,具有一定的局限性。本文综合考虑水下通信的特点,通过分簇模型解决各节点的能耗问题[12]。

2 低能耗分簇技术

对于水下传感器网络,其节点分簇模型已有较多研究,当前多数分簇算法采用“一对多”的数据传输模式,容易增加网络节点的通信负载,且能量消耗不均衡。由于在水下环境部署节点较困难,一旦簇首节点的能量消耗完毕,就必须重建网络,这对系统的稳定性和安全性造成极大的影响,因此需要考虑冗余机制。

本文在分簇过程中选取双簇首,一方面是为了在主簇首无法工作时,副簇首能接替其位置,另一方面,在后续过程中,使用双簇首辅助普通节点进行同步,可有效提高同步精度。图1给出分簇后节点的工作过程,其中传感器网络的结构主要由信标节点、主簇首、副簇首和成员节点组成。该分簇模型主要用于时间同步而非数据传输工作,信标节点首先对主、副簇首进行时间同步,再利用簇首同步成员节点。无论是簇首与信标的通信还是簇内通信一律采用单跳通信方式而非通过路由多跳存储转发,避免靠近信标的节点因能量消耗过度而迅速消亡。

图1 分簇后节点的工作过程

与传统的传感器不同,水下传感器的能量消耗与距离、频率和深度等因素相关。本文采用文献[13]的水声能耗模型,当发射机传输大小为lbit的数据包时,其消耗的能量如式(1)所示。

ETX(l,d)=lEelec+lTbCHdea(f)d

(1)

其中,Eelec是节点处理1 bit信息所消耗的能量,Tb是发送1 bit信息所需的时间,C=2π×0.67×10-9.5,H为节点的深度,d为传输距离,a(f)是吸收系数,其计算公式如下:

(2)

其中,f表示频率,单位为kHz,a(f)单位为dB/km。式(2)体现了信号频率与能量衰减之间的关系。

接收机接收lbit的数据包与数据融合所消耗的能量相同,如式(3)所示。

ERX(l,d)=lEelec

(3)

文献[14]提出最佳分簇数量的计算方法,但其未考虑簇首与成员节点工作方式不同而导致的能量消耗差异。本文对该方法进行改进,假设在求最佳分簇数量期望值时不考虑簇内节点的转发任务,单纯从簇首和成员节点发送、接收和数据融合消耗能量的角度进行分析。

从成员节点的角度来看,第k个簇的第i个成员节点发送1 bit信息需要的能量如下:

EM-TX(ki)=Eelec+TbCHrea(f)r

(4)

其中,r表示节点至簇首的距离。

接收1 bit信息需要的能量是:

EM-RX(ki)=Eelec

(5)

成员节点所消耗的总能量如式(6)所示。

EM-total(ki)=2Eelec+TbCHrea(f)r

(6)

从簇首节点的角度来看,其消耗的能量由发送数据、接收成员节点数据和数据融合3个步骤所需的能量组成,如式(7)所示。

EC-total(k)=2NkEelec+Nk(Eelec+TbCHrea(f)r)

(7)

(8)

(9)

(10)

在完成分簇以后,需在每个簇中选出主簇首与副簇首。首先引入网络平均能量Ea(i),在进行簇首选举前,只有剩余能量高于网络平均能量的节点(Er(i)≥Ea(i))才有资格参与选举,其目的是防止能量过低的节点被选举为簇首,从而平衡整个网络的能量消耗。然后通过式(11)计算每个节点的综合属性值W(i),选取出属性值最高和次高的节点作为主簇首与副簇首。

(11)

其中,Ei(i)和Er(i)分别是节点i的初始能量和剩余能量,Ea(i)是节点i所在簇的平均能量,D是节点距离水面的深度,ω1、ω2是在竞选过程中能量因素与节点深度的比例,且ω1+ω2=1。通过式(11)可以选举出剩余能量高且深度较浅的节点作为簇首节点。

3 簇首同步

簇首是簇中唯一与外界通信的节点,其不仅需要获得高精度的时间信息,而且负责簇内全部节点的时间同步工作,具有非常重要的作用。本节主要解决簇首节点的时间同步问题。在文献[15]中,簇首节点直接向水面浮标发出同步请求,但未考虑某些簇首所处位置过深的情况,导致传播距离过远,影响同步精度。文献[16]通过多跳传输方法进行同步,但每个中间节点在处理数据包时都会产生一定的时延,经过多跳累积后会造成更大的延迟。文献[17]使用移动信标节点对所有节点进行时间同步,本文在其基础上进行改进,采用单跳传输模式以减少因数据包多跳传输而产生的延迟与同步误差。将自主式水下交通工具(Autonomous Underwater Vehicle,AUV)作为信标节点,对所有簇中的主簇首与副簇首直接进行时间同步。由于AUV能量充足且具有高效移动性,因此不会出现能量不足的情况。考虑到节点的移动对传播延迟产生的影响,本文选取权威的洋流模型模拟节点的移动方式,并计算移动速率。具体的报文交互采用基于发送-接收的单向与双向混合报文同步方式,其中,单向交互用于计算时钟频偏,双向交互用于计算时钟相偏。

AUV在进行时间同步时应尽可能接近每一个待同步簇首,以减少声速变化带来的影响,同时应将运动轨迹设计得尽可能简单、高效。AUV的运动轨迹如图2所示,图中实线为AUV进行同步工作时的主运动轨迹,负责当前层次中各簇首节点的同步工作,保证各节点在AUV通信半径之内,虚线是辅助运动轨迹,帮助AUV潜入更深水域,实现深层次的簇首节点同步工作。以此循环,直至完成所有节点的同步。

图2 移动信标节点移动轨迹

在同步过程中引入水下节点移动模型,由于节点的移动会造成两节点的相对位置发生变化,因此传播延迟会有所不同,需要考虑节点移动速度对同步过程的影响。文献[18]提出一个权威洋流模型,如式(12)所示。

(12)

其中,c用来控制洋流位移速率,B(t)用来控制曲线的宽度,ε用来控制整个洋流场的振幅,ω是洋流场中洋流通过的频率,相关参数按经验进行取值,具体如下:A=1.2,c=0.12,ω=0.4,ε=0.3,k=2π/7.5。在一般情况下,仅考虑节点在x和y方向的位移,不考虑竖直方向上的位移,则节点在x和y方向上的运动速度如下:

(13)

图3给出详细的同步示意图。根据时钟同步原理,普通节点C的本地时钟与标准时钟的关系为T=λt+β,其中,t代表标准时间,λ代表时钟频偏,β代表时钟相偏[19]。

图3 信标节点与簇首的报文交互

Fig.3 Message interactions between beacon nodes and cluster heads

簇首同步的过程分为如下2个阶段:

1)第1阶段用于计算时钟频偏,信标节点B连续发送i个同步信息数据包给簇首节点C,其中,di是数据传输延迟,t[i]代表信标节点发送第i个数据包的时间戳,T[i]代表簇首节点接收第i个数据包的时间戳,其相互关系如式(14)所示。本文规定信标节点共发送10个数据包。

t[i]+di=λT[i]+β

(14)

定义Si是簇首C第i次接收到数据包时与信标节点的距离,则Si与Si-1之间有如下关系:

Si=Si-1+v(t[i]-λT[i-1]-β)+v(λT[i]+β-t[i])

(15)

(16)

其中,c是水下声速。由于此时信标节点与簇首距离较近,因此可忽略声速的变化,设定c=1 500 m/s,则可算出每个数据包的传输延迟,如式(17)所示。

(17)

其中,v是节点在水下的移动速度,ΔT[i]的计算公式如下:

(18)

联立式(11)、式(12),整理后可得式(19)。

(19)

由此可计算出节点的时钟频偏。

2)第2阶段通过发送-接收模式交互数据包。簇首首先在T1时刻发送信息,信标节点在T2时刻接收到数据包,随后在T3时刻发送反馈数据包,簇首在T4时刻接收。时钟相偏可以通过式(20)~式(22)进行计算。

T1+D=λT2+β

(20)

T3+D=λT4+β

(21)

(22)

4 簇内节点同步

在主簇首与副簇首完成时间同步以后,其可充当簇内的信标节点,向各成员节点发送时间同步消息。文献[3]提出使用3个信标节点完成对一个普通节点的时间同步,并使用一组速度矢量来表示节点的运动速度,从而推算出节点的传播延迟。然而,该算法复杂度高,不适用于实际情况。本文使用主簇首与副簇首2个节点对普通节点进行同步。在正常工作时,2个簇首同时进行时间同步工作,若主簇首或副簇首出现故障,则使用单个簇首进行同步。此方法与单信标时间同步相比,虽然会增加一部分能量消耗,但提高了同步精度,并且系统的冗余性和鲁棒性也得到增强。由于水下情况复杂,因此需考虑声速的变化,根据深度、温度等因素计算实时的声速值。报文交互采用基于发送-接收的单向与双向混合报文同步方式,并结合声速与节点移动速度计算时钟频偏和相偏。

在水下传感器网络中,时间同步的精度受到各种因素的影响,其与陆地传感器最大的不同在于,水下传感器具有较高的传播延迟,而传播延迟与声速密切相关。陆地传感器的传播介质是空气,一般可忽略传播延迟,而在海洋环境中,声波的传播速度会受到深度、温度和盐度等各种因素的影响[19],因此在设计时间同步算法时需考虑声速的变化。目前,较常使用的衡量声速的方法如式(23)所示[20-21]。

c(t,s,p)=1 449.2+4.6t-0.55t2+0.000 29t3+

(1.34-0.01t)(s-35)+0.16p

(23)

其中,c为声速,t、s和p分别表示温度、盐度和压力。

图4给出簇内各节点在进行时间同步时的信息交换过程,图5为普通节点与簇首节点之间的报文发送过程。由图5可知,同步进程由普通节点A发起,分别向两个簇首S1、S2(即主簇首和副簇首)发送同步请求报文RTS,其中包含MAC层时间戳T[1]。在收到RTS之后,簇首记录本地时间t[1]并开始向普通节点A连续发送i=5个回复包CTS[i],2个包之间的间隔时间固定。报文CTS[i]中包含MAC层时间戳t[i]、温度tSi和压力pSi。普通节点收到CTS[i]后,记录其本地时间戳T[i],同时记录接收时刻温度tAi和压力pAi。假设每个节点的深度已知,则可用式(19)和式(20)计算出温度和压力值。随后,普通节点分别对所接收到的报文中的温度、压力等数据取均值,并代入式(21)中计算声速。

图4 簇内时间同步时的信息交换过程

Fig.4 Information exchange process during time synchroni-zation within a cluster

图5 簇内报文发送过程

在同步过程中,各时间戳之间的关系可用式(24)和式(25)表示。

λT[1]+β+d1=t[1]

(24)

t[i]+di=λT[i]+β,i>1

(25)

时钟频偏λ可用第2节提到的方法进行求解,如式(26)所示。

(26)

其中,声速c由普通节点在数据包交互过程中获取的信息计算得出,节点的移动速度v根据洋流模型进行计算,时钟相偏可根据式(22)计算得到。

5 仿真结果与分析

本文采用Matlab进行仿真,并在相同环境下比较本文算法与DCH-Sync、TSHL、MU-Sync、multi-hop、D-Sync等算法的性能差异。本文的仿真在1 000 m×1 000 m的水下环境中进行,其中有100个随机分布的传感器节点,节点运动采用随机洋流模型,仿真中使用的时间戳为MAC层时间戳,其他仿真参数如表1所示。

表1 默认参数值

节点消耗的能量主要取决于产生数据包的数量与报文长度,图6给出TSHL算法、MU-Sync算法与本文DCH-Sync算法在运行30次同步后产生的数据包数量,以此分析能耗高低。在仿真过程中,假定TSHL算法采用25个成对时元组,MU-Sync算法采用10次REF包交换。从图6可以看出,本文算法所产生的数据包数量少于其他2种算法,分别比TSHL算法和MU-Sync算法减少62.89%和28.95%,其原因是TSHL算法和MU-Sync算法需要进行多次线性拟合,导致数据包的开销增大。

图6 同步次数与数据包数量的关系

Fig.6 Relationship between the number of synchronization times and number of data packets

此外,本文研究了如何有效进行簇首间的时间同步。若簇首直接与水面浮标进行同步,一些距离水面较远的节点需要多跳传输才能与信标进行通信,从而产生传输延迟,大幅影响同步精度,因此,本文采用AUV作为移动信标辅助同步工作。图7给出本文算法与多跳传输算法在同步完成后,本地时钟误差的增长趋势,可以看出,本文算法的误差明显小于多跳传输算法,在105s以后,误差减小52.57%左右,在106s以后,误差约减小35.60%。

图7 簇首时间同步后的本地时钟误差变化趋势对比

Fig.7 Comparison of the varying trends of local clock errors after time synchronization between cluster heads

图8给出本文算法、MU-Sync算法和TSHL算法在完成同步后,本地时钟误差的增长趋势。从图8可以看出,本文算法的误差明显小于其他算法,在105s以后,本文算法的误差分别比TSHL算法、MU-Sync算法降低68.27%和42.80%,在106s以后,分别降低44.56%和18.50%。本文算法的同步误差之所以小于其他2种算法,主要有2个原因:通过2个节点辅助同一节点的思想,大幅提高了同步精度;采用洋流模型测算节点的速度,提高了传播延迟的计算精度。

图8 簇内时间同步后的本地时钟误差变化趋势对比

Fig.8 Comparison of the varying trends of local clock errors after time synchronization within the cluster

传播延迟的动态变化主要是由节点的移动速度引起的。图9给出节点的移动速度对同步误差的影响,将本文算法与同样考虑节点移动性的MU-Sync算法、D-Sync算法进行对比,速度的变化范围是1 m/s~4.5 m/s。从图9可以看出,三者的同步精度基本不受速度变化的影响,但是,MU-Sync算法、D-Sync算法和DCH-Sync算法的同步误差分别约为0.023 s、0.011 s和0.004 s,本文算法误差小于其他2种算法。

图9 节点移动速度对同步误差的影响

Fig.9 Influence of the speed of moving nodes on synchroni-zation errors

6 结束语

本文提出一种基于分簇的双簇首辅助时间同步算法DCH-Sync。采用分簇模型对节点进行分簇,从簇中选取2个最优节点作为主副簇首,通过节点移动模型完成簇首同步,在此基础上,利用双簇首实现对簇内普通节点的同步。仿真结果表明,与TSHL、MU-Sync、multi-hop、D-Sync算法相比,该算法的同步精度较高且能量消耗较少。下一步将优化分簇模型,扩大DCH-Sync算法的应用范围。

猜你喜欢

信标报文数据包
基于J1939 协议多包报文的时序研究及应用
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
CTCS-2级报文数据管理需求分析和实现
一种基于置信评估的多磁信标选择方法及应用
浅析反驳类报文要点
C#串口高效可靠的接收方案设计
RFID电子信标在车-地联动控制系统中的应用
ATS与列车通信报文分析
基于信标的多Agent系统的移动位置研究