无线传感网络的MAC协议的协同休眠
发布时间:2008/11/26 0:00:00 访问次数:595
周期性休眠有效地降低空闲侦听时的能量消耗。在s-mac中,节点相互协调它们的休眠时间表,而不是随机的自我休眠。该节介绍所有节点选择和保持时间表的过程,同时也介绍降低每个节点由于周期性休眠而延迟的技术。
1.选择和保持时间表
在每个节点开始它周期性的侦听和休眠之前,它需要选择一个时间表,并且同它的邻居节点交换时间表。每个节点保持一个时间表,里面记录它所知道的邻居节点的时间表。它按照下面的步骤来选择时间表和建立时间表。
(1)节点首先侦听一个固定时长,至少是一个同步周期,如果它没有收到其他节点的时间表,那么它会马上选择一个自己的时间表并开始遵循该时间表。同时,该节点通过广播一个sync包试图发布时间表,广播一个sync包遵循标准竞争流程。随机载波侦听时间降低sync包的碰撞几率。
(2)如果节点在选择和发布自己时间表前收到邻居节点的时间表,它就按照收到的时间表设置一个相同的时间表。然后,该节点将在下一个预定侦听时间发布它的时间表。
(3)如果节点在选择和发布自己的时间表后收到一个不同的时间表,在这里有两种情况。一是如果一个节点没有其他邻居节点,它会丢弃它现有的时间表,并且遵循一个新的时间表;二是如果一个节点已经与邻节点遵循相同时间表,它会采用这两个时间表,在两个时间表的侦听间隔内都会唤醒。
s-mac引人周期性邻居发现机制,防止两个邻居节点因时间表完全不同而无法通信。
2.保持同步
尽管相邻节点协同它们的休眠时间表,但是节点时钟漂移可能造成同步错误。有两种技术可以用来克服该错误:①所有交换的时间戳是相对值而不是绝对值;②侦听周期远远大于时钟漂移速度,比如说,0.5s的监听时间比典型的时钟漂移速度长lo倍以上。同具有很短时隙的tdma机制相比,s-mac需要更宽松的时间同步。尽管长的侦听时间能够容忍相当大的时钟漂移,但是邻居节点仍然需要周期性地用它们的时间表更新自己,以阻止长期时钟漂移,同步时间可能会相当长。测量数据表明,两节点间的时钟漂移不会超过0.5ms/s。
如上所述,通过发送一个sync包来完成时间表的更新。sync包很短,包括发送者的地址和它的下次休眠时间,下次休眠时间设定为发送者开始传输该sync包的时刻。当接收者从sync包中获取时间后,它就减去该包传输时间,并用该新值调整它的计时器。为了让节点既能接收sync包又能接收数据包,它的侦听间隔被分成同步部分和数据部分,如图1所示。每部分都有一个竞争窗口,其中有许多小的时间槽,用来让发送者执行载波侦听。比如说,一个发送者想发送一个sync包,当接收者开始侦听时,它任意选择一个时隙完成载波侦听,如果在时隙结束时还没有探测到任何传输,它就竞争到窗口并且开始发送它的sync包。发送数据包遵循相同的流程。图1给出了发送者向接收者传送信息的三种可能情形的时序关系:发送者1只发送一个sync包;发送者2只发送一个单播数据包;发送者3既发送一个sync包,又发送一个数据包。
图1 接收者和不同发送者之间的时序关系
3.适应侦听
当业务负载轻时,周期性侦听和休眠机制能够大大减少花在空闲侦听上面的时间。然而,当一个传感事件确实发生时,人们希望传感数据能够没有太大延迟地在网络中传递。当每个节点严格地遵循它们的休眠时间表时,在每跳都有一个潜在的时延,它的平均值与帧的长度成比例。由于这个原因,我们引入一个机制,在该情况下把节点从占空比模式转换成更主动模式。
s-mac采用一种被称为适应侦听的重要技术,用于改善在多跳网络中每个节点周期性休眠造成的延迟。适应侦听的基本思想是:让串音邻居传输的节点在传输结束时很短的时间唤醒。如果该节点就是下一跳,邻居就立即将数据传输给它,而不用等到下一个侦听时间。若节点在适应侦听中没有收到任何消息,则返回休眠状态,直到它的下一个计划侦听时间。
在图1中,如果下一跳节点就是发送者的邻居,那么它将收到rts包。如果它仅仅是接收者的邻居,那么它将从接收者收到cts包。因此,发送者和接收者的邻居都可以从rts包和cts包的持续时间域知道传输时间。所以它们能够在传输结束时自动唤醒。
适应侦听间隔和正常侦听间隔一样,不包括sync包的时间。sync包仅仅在计划侦听时间发送,以保证所有邻居都能收到。为了给sync包优先权,如果从上次传输结束时间到通常的计划侦听时间之间的持续时间比适应侦听间隔短时,适应侦听和传输不执行。
值得注意的是,并不是所有下一跳节点都能够串音上一次传输的分组,特别当上次传输是自适应开始的,也就是说,不在计划侦听时间。所以,如果一个发送者在适应侦听时间内通过发出rts包开始传输,那么它有可能收不到cts回复,在这种情况下,它只有回到休
周期性休眠有效地降低空闲侦听时的能量消耗。在s-mac中,节点相互协调它们的休眠时间表,而不是随机的自我休眠。该节介绍所有节点选择和保持时间表的过程,同时也介绍降低每个节点由于周期性休眠而延迟的技术。
1.选择和保持时间表
在每个节点开始它周期性的侦听和休眠之前,它需要选择一个时间表,并且同它的邻居节点交换时间表。每个节点保持一个时间表,里面记录它所知道的邻居节点的时间表。它按照下面的步骤来选择时间表和建立时间表。
(1)节点首先侦听一个固定时长,至少是一个同步周期,如果它没有收到其他节点的时间表,那么它会马上选择一个自己的时间表并开始遵循该时间表。同时,该节点通过广播一个sync包试图发布时间表,广播一个sync包遵循标准竞争流程。随机载波侦听时间降低sync包的碰撞几率。
(2)如果节点在选择和发布自己时间表前收到邻居节点的时间表,它就按照收到的时间表设置一个相同的时间表。然后,该节点将在下一个预定侦听时间发布它的时间表。
(3)如果节点在选择和发布自己的时间表后收到一个不同的时间表,在这里有两种情况。一是如果一个节点没有其他邻居节点,它会丢弃它现有的时间表,并且遵循一个新的时间表;二是如果一个节点已经与邻节点遵循相同时间表,它会采用这两个时间表,在两个时间表的侦听间隔内都会唤醒。
s-mac引人周期性邻居发现机制,防止两个邻居节点因时间表完全不同而无法通信。
2.保持同步
尽管相邻节点协同它们的休眠时间表,但是节点时钟漂移可能造成同步错误。有两种技术可以用来克服该错误:①所有交换的时间戳是相对值而不是绝对值;②侦听周期远远大于时钟漂移速度,比如说,0.5s的监听时间比典型的时钟漂移速度长lo倍以上。同具有很短时隙的tdma机制相比,s-mac需要更宽松的时间同步。尽管长的侦听时间能够容忍相当大的时钟漂移,但是邻居节点仍然需要周期性地用它们的时间表更新自己,以阻止长期时钟漂移,同步时间可能会相当长。测量数据表明,两节点间的时钟漂移不会超过0.5ms/s。
如上所述,通过发送一个sync包来完成时间表的更新。sync包很短,包括发送者的地址和它的下次休眠时间,下次休眠时间设定为发送者开始传输该sync包的时刻。当接收者从sync包中获取时间后,它就减去该包传输时间,并用该新值调整它的计时器。为了让节点既能接收sync包又能接收数据包,它的侦听间隔被分成同步部分和数据部分,如图1所示。每部分都有一个竞争窗口,其中有许多小的时间槽,用来让发送者执行载波侦听。比如说,一个发送者想发送一个sync包,当接收者开始侦听时,它任意选择一个时隙完成载波侦听,如果在时隙结束时还没有探测到任何传输,它就竞争到窗口并且开始发送它的sync包。发送数据包遵循相同的流程。图1给出了发送者向接收者传送信息的三种可能情形的时序关系:发送者1只发送一个sync包;发送者2只发送一个单播数据包;发送者3既发送一个sync包,又发送一个数据包。
图1 接收者和不同发送者之间的时序关系
3.适应侦听
当业务负载轻时,周期性侦听和休眠机制能够大大减少花在空闲侦听上面的时间。然而,当一个传感事件确实发生时,人们希望传感数据能够没有太大延迟地在网络中传递。当每个节点严格地遵循它们的休眠时间表时,在每跳都有一个潜在的时延,它的平均值与帧的长度成比例。由于这个原因,我们引入一个机制,在该情况下把节点从占空比模式转换成更主动模式。
s-mac采用一种被称为适应侦听的重要技术,用于改善在多跳网络中每个节点周期性休眠造成的延迟。适应侦听的基本思想是:让串音邻居传输的节点在传输结束时很短的时间唤醒。如果该节点就是下一跳,邻居就立即将数据传输给它,而不用等到下一个侦听时间。若节点在适应侦听中没有收到任何消息,则返回休眠状态,直到它的下一个计划侦听时间。
在图1中,如果下一跳节点就是发送者的邻居,那么它将收到rts包。如果它仅仅是接收者的邻居,那么它将从接收者收到cts包。因此,发送者和接收者的邻居都可以从rts包和cts包的持续时间域知道传输时间。所以它们能够在传输结束时自动唤醒。
适应侦听间隔和正常侦听间隔一样,不包括sync包的时间。sync包仅仅在计划侦听时间发送,以保证所有邻居都能收到。为了给sync包优先权,如果从上次传输结束时间到通常的计划侦听时间之间的持续时间比适应侦听间隔短时,适应侦听和传输不执行。
值得注意的是,并不是所有下一跳节点都能够串音上一次传输的分组,特别当上次传输是自适应开始的,也就是说,不在计划侦听时间。所以,如果一个发送者在适应侦听时间内通过发出rts包开始传输,那么它有可能收不到cts回复,在这种情况下,它只有回到休