s-mac协议针对这些因素采取了哪些措施
S-MAC协议是在IEEE 802.11协议的SC9636-006基础上针对传感器网络节省能量的需求设计的。S-MAC包括了从各种能量消耗方式中节省能耗的方法,比如:空闲侦听、冲突、串音和控制开销。在描述 S-MAC的构成之前,我们首先概述关于无线传感网络及其应用的设想。
无线传感网络的MAC协议的S-MAC协议概述
传感网络由多个节点组成,利用短距离多跳通信来保存能量,大部分通信都发生在对等节点之间。网内处 理对网络生存期很重要,也就是暗示数据将作为整个消息以存储转发的方式进行处理。最后,我们假设应用 将具有很长一段空闲时间,并且能够容忍网络传递时间顺序的延迟。
1.周期性侦听和休眠
如上所述,在多数传感网络应用中,如果没有感测到事件发生,节点将长期空闲。我们假设这样一个事实 ,在该段时期内数据速率非常低,因此没有必要使节点一直保持侦听。S——MAC通过让节点处于周期休眠状态 来降低侦听时间,每个节点休眠一段时间,然后唤醒并侦听是否有其他节点想和它通信。在休眠期间,节点 关闭无线装置,并设置定时器,随后来唤醒自己。
侦听和休眠的一个完整周期被称为一帧。侦听间隔通常是固定的,根据物理层和MAC层的参数来决定,比 如无线带宽和竞争窗口大小。占空比指侦听间隔与整个帧长度之比。休眠间隔可能根据不同的应用需求而改 变,它实际上改变占空比。简单而言,这些值对所有的节点都是一样的,所有节点都可以自由选择它们各自 的侦听/休眠时间表。然而,为了降低控制开销,我们更希望邻居节点保持同步,也就是说它们同时侦听和 同时进入休眠。值得注意的是,在多跳网络中不是所有的邻居节点都能够保持同步。如果节点A和节点B必须 分别与不同的节点C和节点D同步,那么节点A和节点B可能具有不同的时间表,邻居节点A和B具有不同的时间表,它们分别与节点C和节点D保持同步。
节点通过周期地向它们的直接邻居广播SYNC包来交换它们的时间表。一个节点在预定侦听时间与它的邻居 节点通信,以确保所有邻居节点能够通信,即使它们具有不同的时间表。比如,如果节点A想与 节点B通信,节点A必须等待直到节点B在侦听c一个节点发送一个SYNC包的时间称为同步时间。S——MAC的一个 特征是它将节点形成一个平面型的对等拓扑结构,不像簇协议,SMAC不需要通过簇头协作。相反,节点在公 用时间表形成虚拟簇,与对等节点之间直接通信。该方法的一个优点是在拓扑发生变化时,它比基于簇方法 健壮。该机制的不足是由于周期休眠增加了延迟,而且,延迟有可能在每跳积聚。
2.冲突避免
如果多个邻居节点同时想与一个节点通信,它们将试图在该节点开始侦听时发送消息,在该情况下,它们需要竞争媒体。在竞争协议中,IEEE 802.II在冲突避免这方面做得很好。S——MAC遵循类似的流程,包括虚拟载波侦听和物理载波侦听,解决隐藏终端问题的RTS/CTS(请求发送/清除发送)交换。每个传输包中都有一个持续时闾域来标识该包要传输多长时间,如果一个节点收到一个传输给另外一个节点的包,该节点就能从持续时间域知道在多长时间内不能发送数据。节点以变量形式记录该值,被称为网络分配矢量(NAV),NAV可以被看成一个计时器,每次计时器开始计时,节点递减它的NAV,直到减少到0。在传输之前,节点首先检查它的NAV,如果它的值不为0,节点就认为媒体忙,这被称为虚拟载波侦听。物理载波侦听在物理层执行,通过侦听信道进行可能的传输。载波侦听时间是竞争窗口内的一个随机值,以避免冲突和饥饿现象。如果虚拟载波侦听和物理载波侦听都标识媒体空闲,那么媒体就是空闲的。
在开始传输前,所有发送者都执行载波侦听。如果一个节点没有获得媒体,它将进入休眠,当接收机空闲和再一次侦听时唤醒。广播分组的发送不需要RTS/CTS,单播分组在发送者和接收者之间遵循RTS/CTS/DATA/ACK序列。RTS和CTS成功交换后,两个节点将利用它们的休眠时间进行数据分组传输,直到它们完成传输后才遵循它们的休眠时间表。在每个侦听间隔内,由于占空比操作和竞争机制,S-MAC有效地标识由于侦听和碰撞产生的能量消耗。
4.S-MAC协议实现的关键技术如下。
(1)数据包的嵌套结构
在S-MAC协议中,上一层数据包包含了下一层数据包的内容。数据包传送到哪一层,那一层只需要处理属于它的部分。
(2)堆栈结构和功能
在S-MAC协议堆栈内,当MAC层接收到上层传送过来的数据包后,它就开始载波侦听。如果结果显示MAC层空闲,它就会把数据传到物理层;如果MAC层忙,它将会进入睡眠状态,直到下一个可用时间的到来,再重新发送。当MAC层在收到物理层传送过来的数据包后,先通过循环冗余校验(CRC)表示没有错误,MAC层就会将数据包传向上层。
(3)选择和维护调度表
在开始周期性侦听和睡眠之前,每个节点都需要选择睡眠调度机制并与邻居节点一致。如何选择和保持调度机制分为以下3种情况。
①节点在侦听时间内,如果它没有侦听到其他节点的睡眠调度机制,则立即选择一个睡眠调度机制。
②当节点在选择和宣布自己的调度机制之前,收到了邻居节点广播的睡眠调度机制,它将采用邻居节点的睡眠调度机制。
③当节点在选择和广播自已的睡眠调度机制之后,收到几种不同的睡眠调度机制时,就要分以下两种情况考虑:当节点没有邻居节点时,它会舍弃自己当前的睡眠调度机制,采用刚接收到的睡眠调度机制;当节点有一个或更多邻居节点时,它将同时采用不同的调度机制。
(4)时间同步
在S-MAC协议中,节点与邻居节点需要保持时间同步来同时侦听和睡眠。S-MAC协议采用的是相对而不是绝对的时间戳,同时使侦听时间远大于时钟误差和漂移,来减少同步误差,并且节点会根据收到的邻居节点的数据包来更新自己的时间,从而与邻居节点保持时间同步。
(5)带冲突避免的载波侦听多路访问
带冲突避免的载波侦听多路访问( CSMA/CA)的基本机制是在接收者和发送者之间建立一个握手机制来传输数据。
握手机制是:由发送端发送一个请求发送( RTS)包给它的接收者,接收者在收到以后就回复一个准备接收(CTS)包,发送端在收到CTS包后,开始发送数据包,RTS与CTS之间的握手是为了使发送端和接收端的邻居节点知道它们正在进行数据传输,从而减少传输碰撞。
(6)网络分配矢量
在S-MAC协议中,每个节点都保持了一个网络分配矢量(NAV)来表示邻居节点的活动时间,S-MAC协议中在每个数据包中都包含了一个持续时间指示值,持续时间指示值表示目前这个通信需要持续的时间。邻居节点收到发送者或接收者发往其他节点的数据包时,就可以知道它需要睡眠多久,即用数据包中的持续时间更新NAV昀值,当NAV的值不为零时,节点应该进入睡眠状态来避免串音。当NAV变为零时,它就马上醒来,准备进行通信。
与IEEE 802.11 MAC相比,S-MAC协议尽量延长其他节点的休眠时间,降低了碰撞概率,减少了空闲侦听所消耗的能源;通过流量自适应的侦听机制,减少消息在网络中的传输延迟;采用带内信令来减少重传和避免监听不必要的数据;通过消息分割和突发传递机制来和带内数据处理来减少控制消息的开销和消息的传递延迟。因而S-MAC协议具有很好的节能特性,这对无线传感网络的需求和特点来说是合理的,但是由于S-MAC中占空比固定不变,因此它不能很好地适应网络流量的变化,而且协议的实现非常复杂,需要占用大量的存储空间。这个对于资源受限的传感器节点尤为突出。