无线传感器网络中低功耗mac协议—S-MAC

S-MAC(Sensor MAC,传感器媒体访问控制)协议是较早的一个基于同步调度并且基于竞争的MAC协议。是在IEEE802.11 MAC协议的基础上,特别针对无线传感器网络中节点能量有限这一特性,并假定网络能容忍一定的延迟,允许节点周期性睡眠提出的,达到了较好的节能效果。S-MAC主要机制有时序同步,串音避免,流量自适应侦听以及分片传输。

 

S-MAC原理

在S-MAC中,将时间划分为重复的工作循环,每一个循环分为三个阶段,分别为同步、数据和睡眠。节点在同步阶段被唤醒进行时钟同步,在数据阶段所有的节点都维持在活动状态。如果节点有一个数据包要发送给另一个节点,传输数据前需要在数据阶段交换RTS(Request-to-Send)和CTS (Clear-to-Send)帧,传输数据包之后再返回一个确认帧。未涉及通信的节点在数据阶段恢复到睡眠阶段,通信节点必须在完成确认之后才能返回睡眠状态。S-MAC协议原理图如下:

 

如上所示,节点A向节点B发送数据之前首先发送控制信息RTS,节点B收到信息后得知有数据发给自己,那么发送一个CTS作为应答。节点A在接到CTS回复后便可开始发送DATA数据了。其他节点在收到RTS或CTS消息之后,如果确认这个数据包不是发给自己的,则利用一个定时器设置虚拟载波侦听时间,然后进入休眠状态。休眠状态的时间由RTS或CTS信息包里的duration(传输持续时间)来确定,等经过duration时间之后重新醒来监听信道。通过RTS一CTS信号完成发送方和接收方之间的握手过程,目的是为了公告发送方和接收方两者的邻居节点,避免邻居节点此时传输数据造成冲突碰撞。

 

S-MAC主要机制

S-MAC主要机制有时序同步,串音避免,流量自适应侦听以及分片传输。

1、时序同步

时序同步过程是为了让网络中相邻的节点保持相同的侦听/睡眠调度信息。通过使用相同的任务环,节点间能够及时通信,并且也能够有效降低网络中的控制开销。网络中的节点通过发送 SYNC 同步帧向其邻居节点通告其自身的调度信息,实现节点间的同步。同时在节点内部设定一个调度表,  用以保存所有邻居节点的调度信息。

同步过程为:节点首先侦听信道一段时间,用以检测是否收到其他节点发来的调度信息。如果有,则采用收到的调度信息,并且广播该调度信息。如果在规定的时间内没有收到其他节点的调度信息,那么就生成自己的调度信息并将其广播出去。可能存在一种情况:一个节点已经具有了自己的调度信息,而又收到了其他节点的调度信息。此时该节点就必须保存这两个时间表,工作在两种调度周期下。 

2、串音避免

在无线传感器网络中,如果存在两个节点向同一个节点发送数据,这是接收节点就不能正确接受数据,这就是串音。串音避免采用RTS/CTS机制。每个要发送数据的节点都要历经RTS/CTS/DATA/ACK的四个过程,节点会在每个传输包里携带一个域值,它是用来表示剩下的通信过程还需要多长时间。这样收到数据包的节点就会判断,该数据是不是发送给自己的。如果不是发送给自己的就可以根据这个阈值判断自己还需要等待多久。此节点就将这个值上报给网络分配矢量(NAV)并给它设置一个定时器,每接收到一次数据分组该矢量就会更新一次。定时器始计时以后,节点收到数据后就将NAV的值递减1,一直减到0。节点需要发送数据时,它会先查看NAV值,NAV为0时,该节点就认为信道是处于“空闲”的状态,否则就认为此时信道“忙”。

3、流量自适应侦听

在节点的一次数据传输过程中,邻居节点在通信结束后不立即进入睡眠状态,而是继续侦听一段时间。在这段时间内,如果节点接收到RTS分组,就立刻接收数据,不需要下一个周期的到来,这样就减少了数据分组的传输延迟;如果节点没有接收到RTS分组,则进入睡眠状态,等到下一个周期再传输数据。
 

4、分片传输

对于无线信道,传输差错与包长度成正比,长包成功传输的概率要小于短包。消息传递机制根据这一原理,将长消息分为若干短包,采用一次RTS/CTS握手,集中连续发送全部短包。每次传输一个短包,发送者等待接收者送来的ACK,如果发送者没收到ACK,它就会为更多的分组扩展保留的传输时间,并立即重传现有的片断。该机制有效地减少了控制开销,又提高发送成功率。

 

S-MAC的缺点

S-MAC协议空闲监听占空比固定,不能适应数据量动态变化,不能及时进入睡眠状态,导致能量浪费。另外节点的同步机制中如果存在多个调度周期,能量消耗会增加。

 

 

猜你喜欢

转载自blog.csdn.net/qq_15391889/article/details/83240844