«上一篇 下一篇»
  计算机工程  2020, Vol. 46 Issue (2): 214-220, 229  DOI: 10.19678/j.issn.1000-3428.0053850
0

引用本文  

孔维全, 刘广钟. 基于分簇的双簇首水下传感器网络时间同步算法[J]. 计算机工程, 2020, 46(2), 214-220, 229. DOI: 10.19678/j.issn.1000-3428.0053850.
KONG Weiquan, LIU Guangzhong. Cluster-based Time Synchronization Algorithm Using Dual Cluster Headsfor Underwater Sensor Network[J]. Computer Engineering, 2020, 46(2), 214-220, 229. DOI: 10.19678/j.issn.1000-3428.0053850.

基金项目

国家自然科学基金(61202370);中国博士后科学基金(2014M561512);上海市教委科研创新项目(14YZ110)

作者简介

孔维全(1994-), 男, 硕士研究生, 主研方向为水声传感器网络、海洋物联网;
刘广钟, 教授、博士

文章历史

收稿日期:2019-01-30
修回日期:2019-03-22
基于分簇的双簇首水下传感器网络时间同步算法
孔维全 , 刘广钟     
上海海事大学 信息工程学院, 上海 201306
摘要:水下传感器的时间同步会受到节点移动、传播时延、能耗等因素的影响,陆地传感器的时间同步算法无法直接应用于水下环境。综合考虑水下通信的特点,提出一种基于分簇的双簇首辅助时间同步算法。基于节点能耗和深度对其进行分簇,从簇中选取2个最优节点作为主副簇首,引入节点移动模型以减小节点移动性造成的计算误差,并使用移动信标节点完成簇首间的同步。在此基础上,利用双簇首对普通节点进行同步,并考虑声速动态变化对同步性能的影响。仿真结果表明,与TSHL、MU-Sync、multi-hop、D-Sync等算法相比,该算法的能耗较低,同步精度较高。
关键词水下传感器    分簇    双簇首    时间同步    时钟频偏    
Cluster-based Time Synchronization Algorithm Using Dual Cluster Headsfor Underwater Sensor Network
KONG Weiquan , LIU Guangzhong     
College of Information Engineering, Shanghai Maritime University, Shanghai 201306, China
Abstract: Time synchronization algorithms for a terrestrial environment cannot be directly used in an underwater environment, as time synchronization of underwater sensors is influenced by many factors, including movement of nodes, transmission delay and energy consumption.This paper comprehensively considers the characteristics of underwater communication and proposes a cluster-based time synchronization algorithm using dual cluster heads.The algorithm clusters nodes according to their energy consumption and depth, and selects two optimal nodes for each cluster as the primary and secondary cluster heads.Then a model for node movement is introduced to reduce the calculation error caused by node mobility, and the mobile beacon node is used to complete the synchronization of cluster nodes.On this basis, dual cluster heads are used for synchronization of common nodes, considering the influence of the dynamically changing sound speed on synchronization performance.Simulation results show that the proposed algorithm has lower energy consumption and a higher synchronization precision than TSHL, MU-Sync, multi-hop and D-Sync algorithms.
Key words: underwater sensor    cluster    dual cluster heads    time synchronization    clock frequency offset    
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给出分簇后节点的工作过程, 其中传感器网络的结构主要由信标节点、主簇首、副簇首和成员节点组成。该分簇模型主要用于时间同步而非数据传输工作, 信标节点首先对主、副簇首进行时间同步, 再利用簇首同步成员节点。无论是簇首与信标的通信还是簇内通信一律采用单跳通信方式而非通过路由多跳存储转发, 避免靠近信标的节点因能量消耗过度而迅速消亡。

Download:
图 1 分簇后节点的工作过程 Fig. 1 Working process of clustered nodes

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

$ {E_{{\rm{TX}}}}\left( {l,d} \right) = l{E_{{\rm{elec}}}} + l{T_{\rm{b}}}CHd{{\rm{e}}^{a\left( f \right)d}} $ (1)

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

$ a\left( f \right) = \frac{{0.11{f^2}}}{{1 + {f^2}}} + \frac{{44{f^2}}}{{4100 + {f^2}}} + 2.75 \times {10^{ - 4}}{f^2} + 0.003 $ (2)

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

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

$ {E_{{\rm{RX}}}}\left( {l,d} \right) = l{E_{{\rm{elec}}}} $ (3)

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

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

$ {E_{{\rm{M}} - {\rm{TX}}\left( {ki} \right)}} = {E_{{\rm{elec}}}} + {T_{\rm{b}}}CHr{{\rm{e}}^{\bar a\left( f \right)r}} $ (4)

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

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

$ {E_{{\rm{M}} - {\rm{RX}}\left( {ki} \right)}} = {E_{{\rm{elec}}}} $ (5)

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

$ {E_{{\rm{M - total}}\left( {ki} \right)}} = 2{E_{{\rm{elec}}}} + {T_{\rm{b}}}CHr{{\rm{e}}^{a\left( f \right)r}} $ (6)

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

$ {E_{{\rm{C - total}}\left( k \right)}} = 2{N_k}{E_{{\rm{elec}}}} + {N_k}\left( {{E_{{\rm{elec}}}} + {T_{\rm{b}}}CHr{{\rm{e}}^{a\left( f \right)r}}} \right) $ (7)

其中, Nk是第k个簇中的成员个数, 且满足$\sum\limits_{k=1}^{c} N_{k}=N$, N是系统中的节点总数。由此可求出所有簇的总能耗, 具体如式(8)所示。

$ {E_{{\rm{total}}}} = \sum\limits_{k = 1}^c {\left( {{E_{{\rm{C - total}}\left( k \right)}} + \sum\limits_{i = 1}^{{N_k}} {{E_{{\rm{M - total}}\left( {ki} \right)}}} } \right)} $ (8)

通过计算总能耗Etotal的期望可以得到每个簇消耗能量的期望值$\overline{E_{\text {total }}}$, 如式(9)所示。

$ \overline {{E_{{\rm{total}}}}} = 3N{E_{{\rm{elec}}}} + 2N\left( {{E_{{\rm{elec}}}} + {T_{\rm{b}}}CHE\left( {r{{\rm{e}}^{a\left( f \right)r}}} \right)} \right) $ (9)

由式(9)可知, E(rea(f)r)为变量, 其他皆为已知条件。为了使每个簇消耗的总能量最小, 则变量E(rea(f)r)应取极小值。假设簇中节点都以单跳模式通信, 即所有节点都能与簇首直接通信, 且节点至簇首的距离r的分布函数$F(r)=\frac{r^{2}}{R_{c}^{2}}$, Rc是簇的半径, 则概率密度分布函数为$f(r)=\frac{2 r}{R_{c}^{2}}$。将f(r)代入E(rea(f)r)可以得到式(10)。

$ E\left( {r{{\rm{e}}^{a\left( f \right)r}}} \right) = \int_0^{{R_c}} r \times {{\rm{e}}^{a\left( f \right)r}} \times \frac{{2r}}{{R_c^2}}{\rm{d}}r $ (10)

Rc求偏微分并取其零点值, 可得到$\overline{E_{\text {total }}}$在取极小值时的Rc值, 由此可得在水域中的分簇数量$n = \frac{M}{{{\rm{ \mathit{ π} }}R_c^2}}$其中M为水域面积。根据得到的分簇数量, 针对水域内随机分布的节点进行分簇。

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

$ W\left( i \right) = \left\{ {\begin{array}{*{20}{l}} {{\omega _1}\frac{{{E_{\rm{r}}}\left( i \right)}}{{{E_{\rm{i}}}\left( i \right)}} + {\omega _2} \times D,{E_{\rm{r}}}\left( i \right) \ge {E_{\rm{a}}}\left( i \right)}\\ {0,{E_{\rm{r}}}\left( i \right) < {E_{\rm{a}}}\left( i \right)} \end{array}} \right. $ (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潜入更深水域, 实现深层次的簇首节点同步工作。以此循环, 直至完成所有节点的同步。

Download:
图 2 移动信标节点移动轨迹 Fig. 2 Trajectories of a moving beacon node

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

$ \left\{ {\begin{array}{*{20}{l}} {\varphi \left( {x,y,t} \right) = - \tanh \left[ {\frac{{y - B\left( t \right)\sin \left( {k\left( {x - ct} \right)} \right)}}{{\sqrt {1 + {k^2}{B^2}\left( t \right){{\cos }^2}\left( {k\left( {x - ct} \right)} \right)} }}} \right]}\\ {B\left( t \right) = A + \varepsilon \cos \left( {wt} \right)} \end{array}} \right. $ (12)

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

$ \left\{ {\begin{array}{*{20}{l}} {u = - \frac{{\partial \varphi }}{{\partial y}} + \sigma u\left( t \right)}\\ {v = \frac{{\partial \varphi }}{{\partial x}} + \sigma v\left( t \right)} \end{array}} \right. $ (13)

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

Download:
图 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\left[ i \right] + {d_i} = \lambda T\left[ i \right] + \beta $ (14)

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

$ {S_i} = {S_{i - 1}} + v\left( {t\left[ i \right] - \lambda T\left[ {i - 1} \right] - \beta } \right) + v\left( {\lambda T\left[ i \right] + \beta - t\left[ i \right]} \right) $ (15)

由式(15)可知, Si的值是簇首节点接收到第i-1个数据包时与信标节点的距离, 再加上TCi-1TBiTBiTCi时间段内所增加的距离。根据式(15)可以得到di的计算公式, 具体如式(16)所示。

$ {d_i} = \frac{{{S_i}}}{c} $ (16)

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

$ \Delta {d_i} = \frac{{{S_i} - {S_{i - 1}}}}{c} = \frac{{v\lambda \Delta T\left[ i \right]}}{c} $ (17)

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

$ \Delta T\left[ i \right] = T\left[ i \right] - T\left[ {i - 1} \right] = \frac{{\Delta t\left[ i \right] + \Delta {d_i}}}{\lambda } $ (18)

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

$ \lambda = \frac{{c\Delta t\left[ i \right]}}{{\left( {c - v} \right)\Delta T\left[ i \right]}} = \frac{{c\left( {t\left[ i \right] - t\left[ {i - 1} \right]} \right)}}{{\left( {c - v} \right)\left( {T\left[ i \right] - T\left[ {i - 1} \right]} \right)}} $ (19)

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

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

$ {T_1} + D = \lambda {T_2} + \beta $ (20)
$ {T_3} + D = \lambda {T_4} + \beta $ (21)
$ \beta = \frac{{{T_1} + {T_3} + 2D - \lambda \left( {{T_2} + {T_4}} \right)}}{2} $ (22)
4 簇内节点同步

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

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

$ \begin{array}{l} c\left( {t,s,p} \right) = 1449.2 + 4.6t - 0.55{t^2} + 0.00029{t^3} + \\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\left( {1.34 - 0.01t} \right)\left( {s - 35} \right) + 0.16p \end{array} $ (23)

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

图 4给出簇内各节点在进行时间同步时的信息交换过程, 图 5为普通节点与簇首节点之间的报文发送过程。由图 5可知, 同步进程由普通节点A发起, 分别向两个簇首S1S2(即主簇首和副簇首)发送同步请求报文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)中计算声速。

Download:
图 4 簇内时间同步时的信息交换过程 Fig. 4 Information exchange process during time synchroni-zation within a cluster
Download:
图 5 簇内报文发送过程 Fig. 5 Message sending process within a cluster

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

$ \lambda T\left[ 1 \right] + \beta + {d_1} = t\left[ 1 \right] $ (24)
$ t\left[ i \right] + {d_i} = \lambda T\left[ i \right] + \beta ,i > 1 $ (25)

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

$ \lambda = \frac{{c\Delta t\left[ i \right]}}{{\left( {c - v} \right)\Delta T\left[ i \right]}} = \frac{{c\left( {t\left[ i \right] - t\left[ {i - 1} \right]} \right)}}{{\left( {c - v} \right)\left( {T\left[ i \right] - T\left[ {i - 1} \right]} \right)}} $ (26)

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

5 仿真结果与分析

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

下载CSV 表 1 默认参数值 Table 1 Default parameter values

节点消耗的能量主要取决于产生数据包的数量与报文长度, 图 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算法需要进行多次线性拟合, 导致数据包的开销增大。

Download:
图 6 同步次数与数据包数量的关系 Fig. 6 Relationship between the number of synchronization times and number of data packets

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

Download:
图 7 簇首时间同步后的本地时钟误差变化趋势对比 Fig. 7 Comparison of the varying trends of local clock errors after time synchronization between cluster heads

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

Download:
图 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种算法。

Download:
图 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算法的应用范围。

参考文献
[1]
CUI Hongyu, ZHANG Youwen, LIU Xin.The simulation and emulation platforms of underwater acoustic sensor networks[C]//Proceedings of 2016 IEEE/OES China Ocean Acoustics Symposium.Washington D.C., USA: IEEE Press, 2016: 1-5.
[2]
CHEN Keyu, MA Maode, CHENG En, et al. A survey on MAC protocols for underwater wireless sensor networks[J]. IEEE Communications on Surveys and Tutorials, 2014, 16(3): 1433-1447. DOI:10.1109/SURV.2014.013014.00032
[3]
ZHOU Zhong, PENG Zheng, CUI Junhong. Scalable localization with mobility prediction for underwater sensor networks[J]. IEEE Transactions on Mobile Computing, 2011, 10(3): 335-348. DOI:10.1109/TMC.2010.158
[4]
ELSON J, GIROD L, ESTRIN D.Fine-grained network time synchronization using reference broadcast[C]//Proceedings of the 5th Synposium on Operating Systems Design and Implementation.Berkeley, USA: USENIX Association, 2002: 147-163.
[5]
GANERIWAL S, KUMAR R, SRIVASTAVA M B.Timing-sync protocol for sensor networks[C]//Proceedings of the 1st International Conference on Embedded Networked Sensor Systems.New York, USA: ACM Press, 2003: 138-149.
[6]
MAROTI M, KUSY B, SIMON G, et al.The flooding time synchronization protocol[C]//Proceedings of the 2nd International Conference on Embedded Networked Sensor Systems.New York, USA: ACM Press, 2004: 39-49.
[7]
SYED A A, HEIDEMANN J.Time synchronization for high latency acoustic networks[C]//Proceedings of 2006 IEEE International Conference on Computer Communications.Washington D.C., USA: IEEE Press, 2006: 1-12.
[8]
CHIRDCHOO N, SOH W S, CHUA K C.MU-Sync: a time synchronization protocol for underwater mobile networks[C]//Proceedings of the 3rd ACM International Workshop on Underwater Networks.New York, USA: ACM Press, 2008: 35-42.
[9]
LIU Jun, ZHOU Zhong, PENG Zheng, et al.Mobi-Sync: efficient time synchronization for mobile underwater sensor networks[C]//Proceedings of IEEE Global Telecommunications Conference.Washington D.C., USA: IEEE Press, 2010: 1-5.
[10]
LU F, MIRZA D, SCHURGER C.D-Sync: doppler-based time synchronization for mobile underwater sensor networks[C]//Proceedings of the 15th ACM International Workshop on Under Water Networks.New York, USA: ACM Press, 2010: 1-8.
[11]
FENG Xiaoning, WANG Zhuo, ZHU Xiaolong, et al. Doppler auxiliary time synchronization algorithm for underwater acoustic sensor network[J]. Journal on Communications, 2017, 38(1): 9-15. (in Chinese)
冯晓宁, 王卓, 朱晓龙, 等. 多普勒辅助水下传感器网络时间同步机制研究[J]. 通信学报, 2017, 38(1): 9-15.
[12]
WEI Juyi, ZHANG Jianjun, WEI Zhenchun. An energy-balanced and low-overhead WSN time synchronization algorithm[J]. Computer Engineering, 2016, 42(12): 5-10. (in Chinese)
魏炬熠, 张建军, 魏振春. 一种能量均衡的低开销WSN时间同步算法[J]. 计算机工程, 2016, 42(12): 5-10.
[13]
ZHAO Liang, LIANG Qilian.Optimum cluster size for underwater acoustic sensor networks[C]//Proceedings of IEEE Military Communications Conference.Washington D.C., USA: IEEE Press, 2006: 1-5.
[14]
WANG Fei, WANG Liming, HAN Yan. Study on the clock synchronization of underwater acoustic sensor networks based on the clustering technology[J]. Computer Measurement and Control, 2014, 22(12): 4207-4209. (in Chinese)
王飞, 王黎明, 韩焱. 基于分簇技术的水下传感器网络的时钟同步研究[J]. 计算机测量与控制, 2014, 22(12): 4207-4209. DOI:10.3969/j.issn.1671-4598.2014.12.112
[15]
XU Ming, LIU Guangzhong. Research on cluster-wise time synchronization protocol for underwater acoustic sensor networks[J]. Application Research of Computers, 2013, 30(8): 2476-2479. (in Chinese)
徐明, 刘广钟. 水声传感器网络中成簇时间同步协议研究[J]. 计算机应用研究, 2013, 30(8): 2476-2479. DOI:10.3969/j.issn.1001-3695.2013.08.059
[16]
YANG Bozhen.Research on time synchronization techniques in underwater acoustic sensor networks[D].Qingdao: Ocean University of China, 2014.(in Chinese)
杨博真.水下传感器网络时间同步技术研究[D].青岛: 中国海洋大学, 2014.
[17]
CUI Haiwei.Study on time synchronization algorithm of marine sensor network[D].Qingdao: Qingdao University of Science and Technology, 2015.(in Chinese)
崔海伟.海洋传感器网络时间同步算法研究[D].青岛: 青岛科技大学, 2015.
[18]
CARUSO A, PAPARELLA F, LUIZ F M.The meadering current mobility and its impact on underwater mobile sensor networks[C]//Proceeding of the 27th Conference on Computer Communications.Washington D.C., USA: IEEE Press, 2008: 2198-2206.
[19]
ZHOU Xianwei, WEI Wei, QIN Boping. Research on time synchronization in wireless sensor networks[J]. Chinese Journal of Sensors and Actuators, 2006, 19(1): 20-29.
[20]
TIAN Chen, JIANG Hongbo, LIU Xue, et al.Light-weight time synchronization protocol for high resource-constrained networks[C]//Proceedings of IEEE International Communications.Washington D.C., USA: IEEE Press, 2009: 14-18.
[21]
GUO Ying. Energy attenuation-based time synchronization for mobile underwater sensor networks[J]. Journal of China Universities of Posts and Telecommunications, 2012, 19(Sup): 57-64.