网络协议
信道接入协议对网络的性能起着决定性的作用,是WSNs技术的研究重点之一。单信道的信道接入协议在节点规模增大时,网络性能明显变差。采用多信道机制,可以提高网络吞吐量,减小传播延时,降低冲突的概率,更易于支持网络的QoS(Quality of Service)保障。多信道协议主要应解决两个问题:信道分配和接入控制,信道分配是要为不同的通信节点分配相应的信道,接入控制是确定节点接入信道的时机,解决好竞争和冲突的避免问题。本文介绍3种多信道的信道接入协议:多信道的CSMA(Carrier Sense Multiple Access),FAMAC(Frequency Assignment based multi-channel Multiple Access Control),DCA-PC,其中DCA-PC是本文的重点。
基于CSMA和FAMAC的多信道MAC层协议
● 多信道CSMA
是一种基于载波监听的信道接入协议。其设计目标是通过使用多信道来减少隐终端问题的影响,减少数据报文的冲突。它采用准信道预留技术,通过分布式的载波监听来对多个信道进行分配。
准信道预留技术的原理是:当节点发送报文时,它优先选择上次使用过的信道;如果该信道忙,就通过载波监听随机选择一个空闲信道发送数据。
多信道CSMA将可用信道分为N个不重叠的信道,一般而言N要小于无线传感网网络中节点的数目。每个子信道的带宽是整个信道带宽的1/N。
● FAMAC协议
FAMAC是一种基于频率分配的多信道接入协议,设置一个控制信道和多个数据信道。实现时,所有节点使用一个固定的频率作为控制信道,完成RTS(Request To Send)和CTS(Clear To Send)的交互。处于空闲状态的节点驻留在控制信道上。另外,为每个节点分配一个不同的频率,作为该节点的数据信道值。信道选择时,发送者向接受者发送的RTS中,携带自己的频率信息。接收者收到RTS后,记录发送者的频率,回送CTS,将电台切换到发送者的频率上,接收数据。
以上两种协议都是针对多信道设计的,较好地解决了接入控制和信道选择问题;隐终端和暴露终端的影响也得到了很好地控制。由于WSNs的节点通常运行在人无法接近的恶劣甚至危险的远程环境中,能源无法代替,难以补充。所以能量受限的约束条件要求其MAC协议首先要关注的就是能量效率,要尽可能地节约能源,而上述两种协议对此未作足够的考虑。DCA-PC协议从节约能耗的观点出发,在MAC协议设计中探索了集成功率控制和多信道接入两种机制的可能性。
采用功率控制的多信道协议DCA-PC
DCA-PC协议首先在WSNs的MAC层设计中将功率控制的概念与多信道接入结合起来,节约能耗,减少邻居节点共用信道时的相互干扰,提高信道复用度。
● 信道模型
带宽被划分为一个控制信道和n个数据信道D1,D2,……,Dn。控制信道用于控制报文的传送,目标是为节点合理分配数据信道,避免冲突;数据信道用于数据报文和ACK(Acknowledgement)报文的传送。
从避免冲突,提高信道预约成功率的角度出发,控制报文发送采用最大功率;为了降低能耗,提高信道复用度,将数据报文的发送功率划分为大小不同的若干等级,通过RTS-CTS握手,可计算出双方通信必需的最小功率,数据报文发送采用最接近最小发送功率的那个功率等级。
为实现动态信道分配和功率控制,每个节点都要保存3个数组。以节点A为例来说明:
Power[i]功率列表: 节点A向节点i发送数据报文时应采用的功率等级。(——可利用功率控制的原理计算得出。)
CUL(Channel Usage List)[i]信道使用状况列表: A节点获悉的已用信道列表。CUL[i]有4个域:
——CUL[i].host:记录节点A的邻居节点的主机。
——CUL[i].ch :记录CUL[i].host占用的数据信道。
——CUL[i].rel-time :表示释放CUL[i].ch数据信道的时间。
——CUL[i].int记录CUL[i].host发送的信号是否会被节点A听到(CUL[i].int值为1或0)。
FCL空闲信道列表: 节点发送数据时的可用信道列表,可根据CUL计算得出。
● 完整的协议过程
(1) 主机A要向B传送数据报文时,首先检查下列两个条件
条件一:B节点的主机应满足条件:CUL[i].rel-time≤Tcurr+(TDIFS+TRTS+TSIFS+TCTS)。否则在RTS,CTS报文交互之后,对应的数据信道CUL[i].ch仍处于忙态。
条件二:对所有数据信道CUL[i].ch,至少有一条Dj满足:
(CUL[i].ch=)→{CUL[i].rel-time≤Tcurr+(TDIFS+TRTS+TSIFS+TCTS)}∨{(CUL[i].int=0)∧(Power[CUL[i].host]> Power[B])}
两条件满足时,A将所有满足条件二的Dj加入到自己的空闲信道列表FCL中;否则A将退避等待。
(2). A向B发送RTS(含有FCL,Ld的信息)。
(3). B收到RTS(FCL,Ld)后,检查FCL中是否有这样的数据信道Dj,对所有的i,均满足
(CUL[i].ch=Dj)→{CUL[i].rel-time≤Tcurr+(TSIFS+TCTS)}∨{(CUL[i].int=0)∧(Power[CUL[i].host]> Power[A])}
若有,从所有满足条件的信道中选择出第一条Dj,向A回复CTS(含有Dj,NAVCTS,PCTS)。这里,
NAVCTS= Ld/Bd+TACK+2τ
PCTS= Power[A]
同时B将数据收发器调整到Dj,等待接收来自A的数据报文。
若没有找到满足条件的Dj,B将向A回复CTS(Test)信号,Test=min{i, CUL[i].rel-time }- Tcurr-TSIFS-TCTS (Test是正在使用的数据信道的最早释放时间减去CTS报文交换时间)
(4).除B以外的其他主机收到A的RTS(FCL,Ld)时,要计算一个退避时间,此时间内不使用控制信道:NAVCTS= 2TSIFS+TCTS+TRES+2τ,以避免冲突。
A发送RTS后,要经过TSIFS+TCTS+ TRES+2τ时期,等待B的CTS的到来。若未收到CTS,则退避重发。
(5) A收到B的CTS(Dj,NAVCTS,PCTS)后,执行以下步骤:
步骤1:添加CUL[k]到CUL信道使用列表中:
CUL[k].host=B
CUL[k].ch=Dj
CUL[k].rel-time=Tcurr+ NAVCTS
CUL[k].int=1
步骤2:用最大功率在控制信道上广播RES(Dj,NAVRES,PRES)报文,
NAVRES= NAVCTS-TSIFS-TRES
PRES= Power[B]
步骤3:用Power[B]在数据信道Dj上传送数据报文(步骤2与步骤3同步进行)。
若A收到的是B的CTS(Test)信号,则A回到步骤1退避等待,或者重新选择新释放的数据信道。
(6).除A以外的其他主机收到B的CTS(Dj,NAVCTS,PCTS)时,将更新自己的CUL,与(6)的步骤1类似。但应注意:
CUL[k].rel-time=Tcurr+ NAVCTS +τ
CUL[k].int=
若收到的是B的CTS(Test)信号,则忽略该报文。
(7) 若除A以外的其他主机收到RES(Dj,NAVRES,PRES)报文,则添加CUL[k]到CUL信道使用列表中:
CUL[k].host=A
CUL[k].ch=Dj
CUL[k].rel-time=Tcurr+ NAVRES
CUL[k].int=
(8) B收到A的完整数据报文后,用Power[A]在数据信道Dj上回送ACK报文。
结语
通过以上分析,能看出DCA-PC协议具有以下特点:首先,能按需为节点分配信道 。当节点有信号需要传送时,协议通过RTS/CTS/RES握手控制报文取得一个信道,传送任务完成后释放该信道。其次,在这种按需分配传送的机制下,网络信道数目的分配与网络的规模,拓扑和复杂度无关。另外,不需要在全网范围内提供时钟同步。具有基于CSMA和FAMAC的多信道协议不具备的优势。现有的其他多信道协议往往只是单独考虑信道接入和功率控制的问题,而DCA-PC独创性地将二者结合起来。研究结果表明,使用多信道和动态信道分配技术,可以显著提高网络的吞吐量。通过在数据信道上使用功率控制技术,增加了频率的空间复用度,在提高网络吞吐量的同时,也降低了网络的能耗,对改善WSNs的性能具有重要意义。
全部0条评论
快来发表一下你的评论吧 !