Average TimeSync protocol(ATS)
无线传感器网络是一个新兴的具有宏伟前景的网络类型,常用来大规模或高分辨率地观测环境数据。毫无疑问,时间是无线传感器网络中不可或缺的存在。如果没有准确的时间信息,传感器节点观测的数据通常会丢失有价值的前后数据包。大多数应用程序会标记测量数据的时间戳信息,而只有当节点之间具有足够的时间一致性时,这样的时间戳才会有意义。因此,时间同步在无线传感器网络中显得尤为重要。
算法简介
ATS是一种基于一致性理论的时钟同步协议,其利用了平均一致性进行时钟同步,主要思想是网络中的节点根据各自的硬件时钟周期性的广播本地的时钟信息。在本地节点收到来自邻居节点的信息后,利用时钟的线性性质来估计本地时钟和邻居节点时钟的相对时钟速率,把它们的平均时钟速率和时钟偏差的时间值作为参考时钟进行时钟斜率和偏差(频率偏差和相位偏差)的补偿。
与前文提到的GTSP协议不同的是,GTSP在节点收到所有邻居节点的消息之后才进行后续操作,而ATS只需要接收到某一个邻居消息遍进行后续操作。
时间模型
本节假定网络节点中的硬件时钟模型为线性模型,并如下式所示:
τ
i
(
t
)
=
α
i
t
+
β
i
(1.1)
\tau_i(t)=\alpha_it+\beta_i\tag{1.1}
τi(t)=αit+βi(1.1)其中,
τ
i
(
t
)
\tau_i(t)
τi(t)是硬件时钟读数;
α
i
\alpha_i
αi是硬件时钟漂移,其决定了时钟计时速度;
β
i
\beta_i
βi是硬件时钟偏移。因为网络节点并不知道绝对参考时间(即
t
t
t的取值),所以节点本身并不能计算出
α
i
\alpha_i
αi和
β
i
\beta_i
βi的具体数值。所有节点的同步目标是其硬件时钟等同于一个虚拟参考时钟,如下式所示:
τ
‾
(
t
)
=
α
‾
t
+
β
‾
(1.2)
\overline{\tau}(t)=\overline{\alpha}t+\overline{\beta}\tag{1.2}
τ(t)=αt+β(1.2)因此,本节假定网络中每一个节点都以自身硬件时钟的线性函数来维护对虚拟参考时钟的估计,如下图所示:
τ
^
i
(
t
)
=
α
^
τ
i
(
t
)
+
o
^
i
(1.3)
\hat{\tau}_i(t)=\hat{\alpha}\tau_i(t)+\hat{o}_i\tag{1.3}
τ^i(t)=α^τi(t)+o^i(1.3)时间同步的目标是,为每一个节点找到
(
α
^
i
,
o
^
i
)
(\hat{\alpha}_i,\hat{o}_i)
(α^i,o^i)使得下式成立:
lim
t
→
inf
τ
^
i
(
t
)
−
τ
‾
(
t
)
=
0
,
i
=
1
,
…
,
N
(1.4)
\lim_{t\to\inf}\hat{\tau}_i(t)-\overline{\tau}(t)=0, i=1,\dots,N\tag{1.4}
t→inflimτ^i(t)−τ(t)=0,i=1,…,N(1.4)又因为,式(1.3)可以变化成如下式所示:
τ
^
i
(
t
)
=
α
^
α
i
t
+
α
^
β
i
+
o
^
i
(1.5)
\hat{\tau}_i(t)=\hat{\alpha}\alpha_it+\hat{\alpha}\beta_i+\hat{o}_i\tag{1.5}
τ^i(t)=α^αit+α^βi+o^i(1.5)所以,式(1.4)也可以变化成如下式所示:
{
lim
t
→
inf
α
^
i
(
t
)
α
i
=
α
‾
lim
t
→
inf
α
^
i
(
t
)
β
i
+
o
^
i
(
t
)
=
β
‾
(1.6)
\begin{cases}\lim_{t\to\inf}\hat{\alpha}_i(t)\alpha_i=\overline{\alpha}\\ \lim_{t\to\inf}\hat{\alpha}_i(t)\beta_i+\hat{o}_i(t)=\overline{\beta} \end{cases}\tag{1.6}
{limt→infα^i(t)αi=αlimt→infα^i(t)βi+o^i(t)=β(1.6)实际上,硬件时钟的
α
i
\alpha_i
αi和
β
i
\beta_i
βi会跟随时间变化或环境条件而变化。然而,只要同步周期短于相对于这些参数的变化时间常数,ATS写就能够消除变化所带来的影响。且绝对参考时钟是虚构的时钟,并不是先验固定的,其参数取值受初始条件和网络的拓扑结构影响。
算法步骤
平均时间同步协议包括三个主要部分:相对漂移估计、漂移补偿和偏移补偿。
通信协议:伪周期广播
假设每个节点 i i i以等于 T T T的同步周期周期性地向其他所有邻居发送分组,即,传输时刻 t k i t_k^i tki被定义为 τ i ( t l i ) = l T \tau_i(t_l^i)=lT τi(tli)=lT或者等价于: t l i = L T − β i α i = L T i + β ‾ i (2.1) t_l^i=\frac{LT-\beta_i}{\alpha_i}=LT_i+\overline{\beta}_i\tag{2.1} tli=αiLT−βi=LTi+βi(2.1)如上所述,假设分组被邻居即时接受。该协议之所以被称之为伪周期广播,是因为每个节点基于其自己的时钟在每个周期 T T T广播其消息,其实际上对于周期 T i T_i Ti。然而,由于每个 α i \alpha_i αi略有不同,随着时间的推移,传输顺序以及相对到达间隔可能会发生变化,因此被称之为伪周期。
相对漂移估计
本节涉及推导一种算法,该算法估计每个时钟
i
i
i相对于其邻居
j
j
j的相对漂移。每个节点
i
i
i尝试估计相对于其所有邻居节点
j
∈
N
i
j\in N_i
j∈Ni的相对漂移
α
i
j
=
α
j
α
i
\alpha_{ij}=\frac{\alpha_j}{\alpha_i}
αij=αiαj。通过将节点
j
j
j的本地时间
τ
j
(
t
l
j
)
\tau_j(t_l^j)
τj(tlj)写入分组,随后广播到网络中,节点
i
i
i收到该分组后立即记录自己的本地时间
τ
i
(
t
l
j
)
\tau_i(t_l^j)
τi(tlj)。假设两个本地时钟的读数是瞬时的(在MAC层使用了时间戳)。因此,节点
i
i
i将这对
(
τ
i
j
o
l
d
,
τ
j
o
l
d
)
=
(
τ
i
(
t
l
j
)
,
τ
j
(
t
l
j
)
)
(\tau_{ij}^{old},\tau_j^{old})=(\tau_i(t_l^j),\tau_j(t_l^j))
(τijold,τjold)=(τi(tlj),τj(tlj))本地时间记录到内存中。当从节点
j
j
j发来的新广播数据包被节点
i
i
i接收之后,节点
i
i
i会采取相同的操作记录一对新的
(
τ
i
(
t
l
+
1
j
)
,
τ
j
(
t
l
+
1
j
)
)
(\tau_i(t_{l+1}^j),\tau_j(t_{l+1}^j))
(τi(tl+1j),τj(tl+1j))本地时间。原则上,通过这两对本地时间记录可以直接计算出相对漂移
α
i
j
\alpha_{ij}
αij。但是,由于不可避免的测量和量化误差,
α
i
j
\alpha_{ij}
αij的估计值应通过低通滤波器,其更新表达式如下所示:
{
(
τ
i
j
n
e
w
,
τ
j
n
e
w
)
=
(
τ
i
(
t
l
j
)
,
τ
j
(
t
l
j
)
)
η
i
j
(
t
+
)
=
ρ
η
η
i
j
(
t
)
+
(
1
−
ρ
η
)
τ
j
n
e
w
−
τ
j
o
l
d
τ
i
j
n
e
w
−
τ
i
j
o
l
d
(
τ
i
j
o
l
d
,
τ
j
o
l
d
)
=
(
τ
i
j
n
e
w
,
τ
j
n
w
e
)
t
=
t
l
j
η
i
j
(
t
)
=
η
i
j
(
t
+
)
,
t
∈
(
t
+
,
t
l
+
1
j
]
\begin{cases}(\tau_{ij}^{new},\tau_j^{new})=(\tau_i(t_l^j),\tau_j(t_l^j))\\ \eta_{ij}(t^+)=\rho_\eta\eta_{ij}(t)+(1-\rho_\eta)\frac{\tau_j^{new}-\tau_j^{old}}{\tau_{ij}^{new}-\tau_{ij}^{old}}\\ (\tau_{ij}^{old},\tau_j^{old})=(\tau_{ij}^{new},\tau_j^{nwe})\end{cases}\\t=t_l^j \\\eta_{ij}(t)=\eta_{ij}(t^+),t\in (t^+,t_{l+1}^j]
⎩
⎨
⎧(τijnew,τjnew)=(τi(tlj),τj(tlj))ηij(t+)=ρηηij(t)+(1−ρη)τijnew−τijoldτjnew−τjold(τijold,τjold)=(τijnew,τjnwe)t=tljηij(t)=ηij(t+),t∈(t+,tl+1j]其中,
ρ
η
∈
(
0
,
1
)
\rho_\eta \in (0,1)
ρη∈(0,1)是一个调优参数;
t
+
t^+
t+表示更新。如果不存在测量和量化误差且漂移为常数,则
η
i
j
\eta_{ij}
ηij收敛于
α
i
j
\alpha_{ij}
αij。
漂移补偿
本节是平均时间同步协议的核心过程,因为它使所有的网络节点收敛到共同的虚拟时钟速率
α
‾
\overline{\alpha}
α。其主要思想是使用一个分布式的共识算法,只基于本地进行信息交换。在此共识算法中,任何节点都保持自己对全局变量的估计,并通过将其与林俊的估计进行平均来更新其值。该算法非常简单,每个节点仅存储自己的虚拟时钟漂移估计值
α
i
^
\hat{\alpha_i}
αi^,一旦节点
i
i
i在时间
t
l
j
t_l^j
tlj接收到来自节点
j
j
j的分组,它就根据下式来更新其估计值:
α
^
i
(
t
+
)
=
ρ
v
α
^
i
(
t
)
+
(
1
−
ρ
v
)
η
i
j
(
t
)
α
^
j
(
t
)
,
t
=
t
l
j
,
i
∈
N
j
(2.2)
\hat{\alpha}_i(t^+)=\rho_v\hat{\alpha}_i(t)+(1-\rho_v)\eta_{ij}(t)\hat{\alpha}_j(t),t=t_l^j,i\in N_j\tag{2.2}
α^i(t+)=ρvα^i(t)+(1−ρv)ηij(t)α^j(t),t=tlj,i∈Nj(2.2)其中,
α
^
j
\hat{\alpha}_j
α^j是邻居节点
j
j
j的虚拟试种漂移估计。所有节点的虚拟时钟漂移的初始条件设置为
α
^
i
(
0
)
=
1
\hat{\alpha}_i(0)=1
α^i(0)=1。所有时钟估计最终将具有相同的速度。
偏差补偿
经过上述分析,在应用了漂移补偿算法之后,所有的本地虚拟时钟最终将具有相同的漂移,即,他们将会以同样的速度计时。此时,仅需要补偿可能存在的偏移误差。再一次采用一致性算法来更新估计的时钟偏移,具体算法如下:
o
^
i
(
t
+
)
=
o
^
i
(
t
)
+
(
1
−
ρ
o
)
(
τ
^
j
(
t
)
−
τ
^
i
(
t
)
)
,
t
=
t
l
j
,
i
∈
N
j
(2.3)
\hat{o}_i(t^+)=\hat{o}_i(t)+(1-\rho_o)(\hat{\tau}_j(t)-\hat{\tau}_i(t)), t=t_l^j,i \in N_j\tag{2.3}
o^i(t+)=o^i(t)+(1−ρo)(τ^j(t)−τ^i(t)),t=tlj,i∈Nj(2.3)其中,需要在相同的
t
=
t
l
j
t=t_l^j
t=tlj时刻进行计算
τ
^
j
\hat{\tau}_j
τ^j和
τ
^
i
\hat{\tau}_i
τ^i,且
τ
^
i
(
t
l
i
)
=
α
^
i
(
t
l
i
)
τ
i
(
t
l
j
)
+
o
^
i
(
t
l
i
)
\hat{\tau}_i(t_l^i)=\hat{\alpha}_i(t_l^i)\tau_i(t_l^j)+\hat{o}_i(t_l^i)
τ^i(tli)=α^i(tli)τi(tlj)+o^i(tli)。在双方的通信,对于
t
≠
t
l
j
t\neq t_l^j
t=tlj时刻,
o
^
i
(
t
)
\hat{o}_i(t)
o^i(t)和
α
^
i
(
t
)
\hat{\alpha}_i(t)
α^i(t)都保持恒定。
此篇参考自以下参考文献,感谢这几位研究者的劳动。
[1] Schenato L , Fiorentin F .Average TimeSynch: A consensus-based protocol for clock synchronization in wireless sensor networks[J].Automatica, 2011, 47(9):1878-1886.DOI:10.1016/j.automatica.2011.06.012.