时间同步FTSP

在整个网络生存期,每个节点都要维持自己的独立的系统时钟,每个节点存储了自己时钟和网络中其他节点之间的相关的信息(或者仅存储与那些相关时钟的节点之间的信息)。然后利用线性回归法估算本地时钟的漂移,进而可以根据本地时钟估算出全局时间。

  1. FTSP协议的时间戳

协议将接收者的系统时间与发送者的时间达到同步。发送同步消息采用广播的方式,这样可以达到使用一个消息同步多个节点的效果。这个时间同步广播消息包含:

    1. 发送者的时间戳----发送节点在广播时间同分组的某一特定字节的全局时间。即在完成SYNC字节发射后给时间同步消息标记时间戳并发射出去
    2. 接收者的时间戳----接收节点在接收到该时间同步分组时的本地时钟的读数。

对每一个接收节点来说,一个广播消息就能够提供一个同步点----(globaltime,localtime)。

2、时钟漂移的处理

   协议采用线性拟合的方法来估算节点的时钟漂移。

3. 多跳FTSP协议

   FTSP协议的一个重要的特点就是其健壮性,整个网络的同步性能不会因为个别节点的失效而收到影响。FTSP协议没有建立拓扑结构而是采用泛洪的方法对时间基准节点的时间进行广播,当网络中的时间基准节点正常工作时,每隔一段时间,它将广播一个报文。该报文中包含一个报文流水号指示seqNum(每次时间基准节点发送一个新报文时,对其值加1,故可理解为同步轮数)。根据报文中seqNum的值,接收报文的节点可以判断出报文的有效性,若为有效的新报文,则按照单跳FTSP的方法记录新的同步点于缓冲区中。否则丢弃。随后,这些节点计算出当前时间基准节点的时间,组织并广播一个新的报文去继续同步其他节点。这个过程反复迭代进行,最终网络中所有节点都和时间基准节点同步了。

当时间基准节点失效时,其他节点将在一段时间内接收不到任何新报文。根据FTSP协议的约定,某些节点自动提升为时间基准节点。通过竞争,最终将使网络中ID号最小的有效节点成为新的时间基准节点,从而保证了协议的健壮性。

FTSP协议中的全局时间是由一个节点的本地时钟来实现的,该节点称为root。全局时间通过每个节点周期性广播自己的本地时间来实现的,该本地时间通过算法已和全局时间同步。该算法和单跳算法相同。

网络中没有一个固定的节点用于提供全局时间,因此必须在网络启动时选择一个root。这个选择过程是通过节点的唯一ID来实现的。当一个节点在规定的几个周期内没有收到同步的广播信息,则宣布自己为root,最后要发送同步广播信息。当然,这样就导致网络中,不止一个节点宣布自己为root。FTSP解决的方式是使用流动的方式,通过选择具有最低ID的节点作为网络的root。所有的节点使用本地变量myRootID来存储root的ID,就是他们当前同步的节点的的ID。如果一个节点是root,那么它的myRootID就等于它自己的节点ID。时间同步报文中包含一个域,称为rootID,它的值就等于存储在发送者中的myRootID。如果广播报文中的rootID值比接收节点中的myRootID值大,则这样的广播报文被丢弃。相反,如果rootID值比接收节点中的myRootID值小,则接收节点的myRootID就会被设置成rootID。这样就保证了网络中只有一个root。

处理冗余信息:

处理时钟漂移和单跳:

如果两个节点的本地时钟的偏移量是一个常数,那么一个时间戳同步两个节点是足够的。然后,在Mica2平台上,由于频率的差别,在一秒钟内,它的偏移量可以达到40us。这就要求在一秒一个周期内要不断的重新同步,这样才能保证偏差在微秒级,然而这种做法不可行。因此,需要用相关的发送者的时钟去抵消接收者的时钟偏移。如果短期的时钟稳定性是良好的,那么两个时钟之间的偏移量的改变是成线性的。

(疑问:接收节点如果根据报文流水号来判别报文的有效性?)

网络资料:

FTSP首先在无线传感器网络中动态选择1个根节点,再通过阶段性的发送时间同步报文产生时间同步.无论什么时候,1个节点收到了1个同步报文,它就转发这个报文,因此整个网络充溢着时间同步报文.这一报文本身包含了1个时间标记,当接收节点接收到该标记时也打上时间标记.FTSP算法还对时钟漂移进行了线性回归分析.考虑到在特定时间范围内节点时钟晶振频率是稳定的,因此节点间时钟偏移量与时间成线性关系,通过发送节点周期性的广播时间同步报文,接收节点取得多个数据对,并构造最佳拟和直线L(time),在误差的时间间隔内,节点可直接通过L(time)计算某一时间节点间的时钟偏移量,这能使每个节点维护1个准确的全局时间.它的具体同步步骤如下:
    1)FTSP算法是在完成SYNC字节发射后给时间同步报文标记时间戳T,并发射出去.时间戳T为当前时间减去包含时间戳T的消息数据部分的发射时间.消息数据部分的发射时间可通过数据长度和发射速率得出.
    2)接收节点记录字节SYNC最后到达时间Tr,并计算位偏移(bit offset).在收到完整报文后,接收节点计算位偏移产生的时间延迟Tb,这通过偏移位数与接收速率得出.
    3)接收节点计算与发送节点间的时钟偏移量:offset=Tr-Tb-T,然后调整本地时钟和发送节点时钟同步.

传输时延分为下面几个部分:

  1. 发送时延(Send Time)-----发送方用来装配消息以及向MAC层提出发送请求的时间。取决与上层操作系统的系统调用和当时的处理器负担。发送时延是不确定的,有时会高达几百毫秒。
  2. 访问时延(Access Time)-----链路层协议等待信道空闲的时间。在消息时延中访问时延的确定性最低,变化范围从毫秒级到秒级,取决于当前网络传输流量。
  3. 传输时延(Transmission Time)-----物理层发送包的时间。通常是几十毫秒。取决于消息报的长度。
  4. 传播时延(Propagation Time)----数据在链路上传输的时延,在无线环境下等于距离除以电磁波速度。由于电磁包速度恒定,因此,传输时延取决于两个节点间的距离。在300米的范围内,传播时延不会超过1微秒。
  5. 接收时延(Reception Time)-----物理层接收数据包所花费的时间,接收时延与传输时延相对应,并且与传输时延有重叠。
  6. 接收处理时延(Receive Time)-----节点处理收到的数据包,并通知相应程序所花费的时间。与发送时延相对应,这段时间的长短也是不确定的。

在典型的传感器平台(如 Mica2 mote)上,都是有能力直接对MAC层进行访问的,消息的时间信标可以在消息传送和接收的时候记录,这样可以直接消除发送时延、访问时延和接收处理时延的影响。

  1. 中断处理时延(Interrupt Handling Time)-----通信芯片开始工作到微控制器响应一个中断的时间。这段时间远远小于几微秒(等待微处理器完成当前正在处理的指令的时间),但是如果中断是无效中断的话,这个时延会变得很大。
  2. 编码时延(Encoding Time)-----通信芯片将消息片段编码和转换为电磁波的时间。这段时延从通信芯片产生一个中断,告诉微处理器准好接收这个特殊字节开始。这段时延是确定的,可以根据数据长度计算出来。
  3. 解码时延(Decoding Time)-----接受方的通信芯片将电磁包还原成二进制数据的过程。这段时间直到通信芯片生成一个中断为止,这个中断用来告诉处理器节点已经收到了这个特殊的字节。这段时间也是确定的。

一些芯片在接受方不能捕捉到传送消息流的校正字节,无线通信协议栈就要从一个已知的同步字节队列中确定消息的位偏移,然后按照这个位偏移来进行校正。在有些通信模块中,为了校正传输中的错误而导致延迟可能会高达几百微秒,这是不能忽略的。

  1. 字节校正时延(Byte Alignment Time)-----由发送和接收到的字节除外差异而导致的时延。这段时间是确定的,而且在接收端可以利用位偏移和电波传输速度计算出来。

为了提高时间同步的精度,FTSP采用了以下几个方法:

  1. 消息发送方和接受方都是在MAC层记录时间信标,这样可以完全消除发送时延、 访问时延和接受处理时延的影响。
  2. 为了消除传输时延和接收时延的影响,FTSP协议将这两类时延进一步细分为中断处理时延、编码时延、解码时延和字节校正时延四个部分。其中编码/解码时延和字节校正时延都是确定的,在接受方可以以一定的方法计算出来。这样,影响FTSP协议精度的时间延迟就剩下传播时延和中断处理时延两类了。
  3. 在发送和接收的过程中,多次记录时间信标。在节点发送时间消息报的过程中,时间信标在同步字节之后的每个字节的边界都都要记录。采用这个方法可以有效的降低由中断处理时延和编码/解码时延的不确定性引起的误差。
  4. 对时间信标规格化。规格化就是在每个时间信标中减去一个整数倍的最小字节的传输时延。最小字节传输时延是传输一个字节的时间延迟。规格化可以统一每个字节边界记录的时间信标,消除字节传输造成的这些时间信标之间的差异。中断处理时延是非正态分布的时间延迟,采用规格化的多个时间信标可以有效的消除中断处理的时延的影响。
  5. 对记录下来的几个时间信标取平均值,然后将这个平均值发送出去。这样可以减小编码和解码时延的波动。
  6. 在接受方,利用字节校正时延对接收到的时间信标进行最后的修正。字节校正时延可以从传输速度和位偏移中计算出来。
  7. 接受方采用线性回归的方法估计节点的时间漂移和时间偏移。节点在自己的内存中构建一个线性回归表,这个表包括8个全局时间—本地时间对,用这8个数据估计节点的时间漂移和时间偏移,这样可以大大减少偶然因素对时间同步的影响,而且在对时间漂移进行补偿后,可以延长两次时间同步之间的时间间隔。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值