基于SMAC的传感器网络MAC协议移动性支持研究
2011-08-01马嘉涛徐玉斌
马嘉涛,徐玉斌
(太原科技大学计算机科学与技术学院,太原030024)
无线传感器网络(Wireless Sensor Networks,WSN)[1]是一种特殊的多跳分布式网络,被广泛应用于环境监测、智能空间、医疗系统、抢险救援等领域。以往的研究[2]通常认为WSN的节点在部署之后的位置是固定不变的,但越来越多的研究指出了增加节点移动性的优势。节点可移动的WSN也在实际中得以应用,比如文献[3]提出了一个结合WSN、UAV(无人机)以及执行器的灾难响应以及事件探测系统。节点的移动性为WSN提供了更为广阔的应用前景,但同时也为其介质访问控制(Media Access Control,MAC)协议的设计带来了新的挑战。
WSN的MAC协议主要解决大量节点如何在合理、高效、节能的前提下共享信道的问题,其性能直接影响到整个网络的效率。以往WSN的MAC协议研究通常假设节点静止不动,节点间的通信链路稳定,因此能量效率是其考虑的主要问题。适用于WSN的 SMAC协议[4]、SCP-MAC协议[5]等低占空比协议,往往采用周期性唤醒的方法避免节点在空闲状态耗费过多的时间,从而达到提高能量效率的目的。然而,此类协议是针对静止WSN所设计,在节点移动情况下,其性能会受到一定的影响。
分析移动性对MAC协议造成的影响是解决移动性支持的首要问题。文献[6]对节点移动性问题进行了详细探讨,但缺乏数据支持;文献[7-8]提出的支持移动性的MAC协议都是基于SMAC改进的,但这些文献也缺乏对SMAC协议受移动性影响较为详细的分析,协议改进仍存在一定的局限性。本文深入研究了SMAC的工作机制,并通过大量仿真实验验证,详细分析了SMAC协议由节点移动性所引起的一系列问题,并在此基础上提出了SMAC协议实现移动性支持的一些解决思路。
1 SMAC协议
SMAC协议是较早提出并被广泛认可的一种能量有效的无线传感器网络MAC协议。该协议基于IEEE 802.11DCF协议,采用低占空比的周期性侦听/休眠技术减少了由空闲侦听带来的能量损耗;采用RTS/CTS交换及物理和虚拟载波侦听机制避免了数据发送冲突;采用流量自适应的侦听机制减少了数据传输时延;采用消息分片传输机制减少了控制帧的开销和延迟。SMAC协议耗能小、性能稳定且支持一定的网络扩展,但是它的设计中没有考虑节点的移动性,其协议性能在节点移动时会受到很大的影响。
在SMAC协议中,每个节点都有一个调度表用来保存所知道的不同调度(侦听/休眠的时间安排)。节点周期性地侦听周边节点的SYNC消息,并且自身也每10个侦听/休眠周期(一个同步周期)向邻居节点广播一次SYNC.每个节点启动后都尽量选择一个与相邻节点同步的调度,随后进入周期性的侦听/休眠状态切换,在休眠状态关闭其收发机以节省能量,苏醒后侦听信道并完成必要的数据任务。
由于WSN的规模一般较大而且节点间的调度协调也具有自组织性,因此通常节点在初始化结束后会在全网内形成多个局部调度同步的区域,即虚拟簇。由于不同虚拟簇内的节点彼此侦听信道的时间不同(不重叠),处于簇边界区域且分属于不同簇的两个节点就可能无法发现对方。但SMAC中每个节点在初始化阶段会进行邻居发现操作,即节点至少用一个同步周期的时间来侦听信道以发现陌生调度。在初始化结束后,为避免其它原因造成的相邻节点永远无法发现对方的现象,节点仍会每22个侦听/休眠周期进行一次邻居发现。簇边界上的节点经过邻居发现即可得到相邻簇的调度继而同时拥有两个调度,成为两个簇之间通信的桥梁。
2 移动影响理论分析
在支持移动性的无线网络IEEE 802.11协议中,节点之间的连接是通过竞争信道随机建立的,节点通信链路的维持只需在其通信范围内存在相邻节点即可,因此,移动性只会影响其路由层,而对MAC层的影响却很小。SMAC是基于IEEE 802.11 DCF的随机接入MAC协议。但是SMAC协议采用了周期性休眠的机制来节省能量,因此节点就可能由于休眠调度的不同而无法与通信范围内的相邻节点建立连接。
2.1 SMAC的簇内移动分析
当节点只在簇内进行移动时,由于同一虚拟簇内的节点调度同步,因此在节点移动范围内的所有节点都同时激活且同时休眠,这就确保节点间可以收到彼此发送的SYNC分组。通过SYNC交互机制,节点可以在每个侦听周期不断地与周边节点进行调度同步,避免因时钟漂移引起的同步错误。同样通过SYNC的交互,节点还可以不断地更新邻居节点,避免因失去原有邻居而断开网络连接。
在这种情况下,节点在侦听时段的移动类似于采用IEEE 802.11协议时的情况,移动性并不会对其MAC层造成影响;若节点在休眠时段的移动速度过快,可能造成其醒来后失去与所有邻居的连接,但由于移动节点仍然和周边节点都同时处于激活状态,新邻居的发现通常最多也只需它在醒来后等待一个SYNC时段的时间。
移动节点在数据传输过程中可能由于数据分组较长而移动速度又过快的原因,造成分组传送中断、无法收到ACK等错误,从而引起分组重发。分组重发的增多会造成一定的能量浪费并对MAC协议性能产生影响。但是由于无线电信号传送的速度相对于节点的移动速度要快很多,数据分组通常也较短,在常见的移动应用场景中(如车载节点或人员携带节点等),协议性能受这种情况的影响有限。
2.2 SMAC的跨簇移动分析
移动节点在正常的侦听/休眠工作周期中进入一个陌生的虚拟簇时,由于其周期性醒来工作的时间与新簇节点不同(不重叠),它将无法与其周边节点进行通信,并且会随着与原来邻居连接的断开而成为一个孤立节点。该移动节点只有在经过邻居发现操作后才能发现周边节点的调度并与其同步,从而恢复与网络的连接。
虽然SMAC协议默认没有邻居的节点会加快邻居发现操作(每3个侦听周期进行一次邻居发现),但是节点往往并不会及时地“意识”到自己已没有邻居。SMAC的协议设计中并未考虑移动的情形,其每个节点所维护的邻居表并不会及时地删除已超出其通信范围的邻居节点。节点只有在需要发送数据时,在发送路由请求并尝试建立路由失败的情况下才会发现自己成为了孤立节点。无论使用何种路由协议,这个过程也都会耗费一定的时间。那么该节点从进入陌生簇到发现自己是孤立节点并开始邻居发现的这段时间里,就一直处于与网络断开的状态。若是移动节点跨簇后又没有数据需要发送,其与网络断开的时间会更长,最坏情况下可能要等近22个同步周期(进行邻居发现的默认间隔)才能发现周边邻居并恢复网络连接。
根据以上分析,讨论数据传输过程中可能发生的理论时延(发生传输错误造成的时延忽略不计),设Twait为节点从进入陌生簇到需要发送数据的等待时间;Troutfailure为从发送路由请求到建立路由失败的时间,其值取决于所选的路由协议;Tsync为一个同步周期的时间;Tneighbsearch为节点在邻居发现过程中发现新邻居节点所用的时间;Ttimeout为理论上节点总的传输时延。
(1)当移动节点作为发送节点在数据传输过程中发生跨簇且断开了与目的节点的连接,由于移动节点无法收到ACK确认,它会再次发出RTS请求进行重发。根据前面的分析,其发送时延 send-Ttimeout(单位 s)约为:
(2)当移动节点作为接收节点移动到了另外一个簇,虽然发送节点还会进行重发,但由于无法收到重发的RTS请求,移动节点会进入周期性的侦听/休眠,若一直都没有侦听到数据请求,可能直到下一次的邻居发现才能恢复与网络的连接。这时的时延receive-Ttimeout(单位s)约为:
以Crossbow的Mica2无线传感器节点为例,该节点默认使用868/916 MHz频率带宽,根据SMAC代码可计算出节点每个周期的侦听时间约为143 ms,当使用默认的占空比10%时,节点的一个同步周期大约是14.3 s(10*0.143 s/10%)。那么,由式(1),节点在发生跨簇移动且不知道新簇调度的情况下的理论时延最小也会有30 s左右;由式(2),最坏情况下甚至可能达到5 min左右。这样的数据传送延迟往往是多数实际应用不可容忍的,并且由于SMAC默认的RTS/CTS重发次数只有5次,时延较长时节点必然会丢弃该包,所以跨簇移动还会引起丢包率的增加。
还可能发生的情况是,移动节点在进入到陌生簇后仍然会保存着其原先的调度信息,仍然会周期性的广播该调度。当新簇内的节点进行邻居发现时就会发现移动节点的这个“陌生”调度,同样地,移动节点在发现新的邻居后也必然会成为一个“边界”节点。随着网络运行时间的增加,网络中将产生多个不必要的有多个调度的节点,而拥有多个调度的节点由于侦听时间的增加必然会降低其自身的生存寿命,并增加整个网络的平均能耗。
3 移动影响实验分析
为验证以上的理论分析并进一步研究节点的移动性对SMAC协议性能的影响因素,进行以下仿真实验。
3.1 参数设置及网络拓扑
表1 仿真实验参数设置Tab.1 Experimental parameters used in simulations
该仿真实验基于NS2.34[9]网络模拟平台,实验参数设置见表1,其中路由协议采用改进的洪泛路由(MFlood)协议。MFlood协议的工作机制较为简单,它通过节点不断地广播转发将数据包传递到目标节点,在图1所示的直线拓扑中,数据包只能逐个经邻居节点传递到目标节点。在该实验中,MFlood协议的性能受节点移动以及周期性休眠的影响非常小,实验结果可以更准确地反映SMAC协议的性能。网络拓扑如图1所示,节点相隔200 m放置,每个节点都只能和其相邻节点直接通信,这种简化的结构可以避免在多跳通信时因传输路径的不同而对性能分析产生的干扰,从而更直接地研究MAC协议性能指标。
图1 实验模型中的网络拓扑及虚拟簇Fig.1 Network topology and virtual cluster in experimental model
3.2 簇内移动与跨簇移动性能对比实验
3.2.1 实验1模型
实验1验证移动节点分别在簇内运动和跨簇运动时的性能,测试的性能指标为:不同数据负载量下的平均传输时延以及丢包率。
由于SMAC协议中边界节点有两个调度,通过观察实验产生的trace文件中每个节点在一个同步周期里发送的SYNC的个数,可以判断出网络中的分簇情况。在采用如图1所示拓扑且不设置模拟器seed的情况下,当实验中有5个节点的时候,可发现节点2在一个同步周期中(14.3 s)会发送2个SYNC,而其它节点都只发送一个SYNC,由此可以判断节点2为边界节点,网络中存在两个虚拟簇,可用于验证跨簇移动的性能;当实验中有4个节点的时候,每个节点在一个同步周期都只发送一次SYNC,所以4个节点的网络并没有分簇,可以用于验证簇内移动的性能。虽然两个场景中采用的节点数目不同,但是除此之外的移动速度、移动距离、仿真时间等在每次实验中都采用同样的设置,节点数的不同只影响分簇情况。
由于SMAC协议的初始化时间大约是40 s,节点0和节点1之间的cbr数据流从第50 s后的一个介于0~14.3 s之间的一个随机时间t启动并持续320 s,总的仿真时间为400 s.实验在网络分簇和不分簇的情况下,分别进行节点0作为发送节点以及接收节点在5 m/s的速度、10 m/s的速度以及20 m/s的速度下与静止状态的性能对比。在移动场景中,节点0在A-B间共800 m的距离内,以不同的速度往返运动320 s.节点在cbr数据流启动时开始移动,在cbr数据流结束时停止移动。其中,节点以5 m/s的速度时往返一次、10 m/s的速度时往返2次、20 m/s的速度时往返4次。在实验中通过设置10个不同的种子产生10个不同的cbr启动时间分别实验以分析网络性能的均值。
3.2.2 实验1结果及分析
图2-图5所示为由实验1得到的传输时延以及丢包率的性能对比。其中图2、图3为节点0作为接收节点的情况,图4、图5为节点0作为发送节点时的情况。由图可见,节点0在静止情况下,无论其作为数据的发送端还是作为接收端时的传输时延值和丢包率都非常小,且在不同数据负载量下性能表现稳定。当节点在簇内移动时,不同移动速度下的传输时延以及丢包率的增加都相对较小,而且性能在移动节点分别作为接收节点和发送节点时的差别也不大,在不同数据负载量下的性能也较为稳定。而当节点跨簇移动时,不同速度下的时延和丢包率都要高于节点在簇内移动和静止状态时的情况,尤其在数据流量较大时,网络的性能差异更为明显。
图2 移动节点作为发送端时的传输时延Fig.2 End-end-delay with mobile node as sender
图3 移动节点作为接收端时的时延性能Fig.3 End-end-delay with mobile node as receiver
图4 移动节点作为发送端时的丢包率性能Fig.4 Loss-rate with mobile node as sender
图5 移动节点作为发送端时的丢包率性能对比Fig.5 Loss-rate with mobile node as receiver
从实验结果来看,节点以不同的移动速度发生跨簇移动时的性能都明显劣于簇内移动时的性能,说明节点在进入陌生簇后,无论其速度快慢都会由于其调度与新簇节点不同而中断网络连接,陌生调度的发现只能经过邻居发现来实现。对比节点在不同移动速度时的性能可知,节点在簇内移动时的性能受速度差异的影响较小,但节点跨簇移动时的性能却因速度的不同表现出了较大的差异,且无规律可循。由实验中簇内移动时的网络性能受节点移动速度影响不大,说明在移动节点和周边节点同时激活且数据分组长度较小的情况下,一般应用中的移动速度差异对SMAC协议影响较小。而节点在跨簇时的性能却受到了速度的影响,这说明节点在跨簇时的网络性能还受到其它因素的制约。跨簇移动和簇内移动的区别在于节点在移动过程中周边是否存在调度不同的节点,若是节点在跨簇后通过邻居发现获得了陌生簇的调度,那么之后的移动也无异于在“簇内”移动。考虑到实验中节点往返运动的特点,不同的移动速度和数据负载量会影响移动节点对陌生调度的获取,且影响具有不确定性。移动节点获得陌生调度所需时间越长,网络性能就会越差。由此可见,跨簇移动时的性能差异是由移动节点获得陌生调度所需时间的不确定性引起的。分析实验结果还可发现,在跨簇移动时,网络性能因节点0在数据传输中的角色不同表现出了明显的差异。在传输时延上,节点0在作为发送端时的时延值要大于其作为接收端时的时延;而在丢包率上,节点0在作为发送端时的性能却好于其作为接收端时的表现。出现性能差异是由于有发包请求的移动节点可以更快地恢复与网络的连接,而作为接收端的移动节点由于恢复网络连接所需的时间较长,会导致重发超时,因而发生较多的丢包现象。另外,图2、图3中分析的时延性能是指在不丢包情况下的端到端平均传输时延,虽然移动节点在作为发送端时比作为接收端有较低的丢包率,但是相应地,它也必须同时容忍跨簇后相对较长的时延,因此在图3中表现出的跨簇移动传输时延较图2中要大一些。
3.3 多余调度影响网络性能实验
3.3.1 实验2模型
实验2验证移动节点在运动过程中,它的原有调度对整个网络调度同步造成的影响,测试的性能指标为:节点在无数据任务时的网络平均能耗。
同样采用图1所示的网络拓扑,实验分别在网络分簇和不分簇的情况下,分别验证节点0在静止状态以及以1 m/s~10 m/s的速度从其起始位置向右移动800 m时的性能。仿真实验使用同样的移动场景,分别在网络分簇和不分簇的情况下运行1 000 s,节点在50 s的时候开始向右移动,与实验1不同的是,节点在到达目的地后就停止移动,不再进行往返运动。节点在整个仿真过程中没有任何数据的收发,因而实验可以更直接地反映出由于SYNC广播和节点侦听时间不同所造成的能耗差异。
3.3.2 实验2结果及分析
图6 无数据任务时的能耗Fig.6 Mean energy consumption without data transition
实验2结果如图6所示,节点在跨簇移动时的能耗从整体上要明显大于节点在簇内移动时的能耗,而且与静止状态相比,节点发生跨簇移动时的能耗涨幅要大于其在簇内移动时的涨幅。节点在簇内移动时所增加的能耗很少且性能表现稳定,但节点在跨簇移动时的能耗却增加较多,且因速度不同表现出了一定的差异。
整个网络在没有数据收发的情况下,网络的能量消耗主要来自节点侦听信道以及广播SYNC分组,而节点广播SYNC的次数又和侦听信道的时间成正比,因此,网络的平均能耗直接反映了节点侦听信道所用时间的长短。分析实验结果可知,在发生跨簇移动后,网络中某些节点的侦听时间增加了。而在仿真实验中又没有数据收发,节点侦听时间的增加只能是由于其拥有的调度增加而造成的。节点调度的增加必须满足两个条件,即节点周边有调度不同的节点以及节点正在进行邻居发现。由此可见,节点在跨簇移动中可能会出现同时满足以上两个条件的情况,从而使其自身原有调度传播到网络中的其它地方,引起网络平均能耗的无谓增加。图6中跨簇移动的能耗曲线有一定的波动,这是因为每次仿真实验中每个节点启动邻居发现操作的时间都是相同的,而移动节点在不同速度下恰好能遇到进行邻居发现的节点的机率是不一样的,遇到正在邻居发现的节点的次数越多,网络性能受到的影响就越大。此外,实验2只是反映了网络运行1 000 s后的结果,随着网络运行时间的增加,由于调度增加所造成的能量浪费会越来越严重。
4 SMAC的移动支持问题分析
4.1 SMAC在移动应用中的性能
通过以上的理论分析以及实验验证可知,当节点的移动速度以及数据分组长度都不超过常见应用场景中的一般值时,SMAC协议在网络中有移动节点时的性能表现出以下特点:
(1)当节点在簇内运动时,其移动性对SMAC协议性能的影响很小。
(2)当节点跨簇移动时,其移动性对SMAC协议的性能影响较大,具体表现为:当移动节点不参与数据收发时,网络的平均能耗会增加;当移动节点参与数据收发时,除上述影响外,其移动性还会造成数据传输时延及丢包率的增加。
4.2 SMAC协议受移动性影响的原因
SMAC协议受移动性影响是由其本身的工作机制决定的。因为SMAC协议采用了周期性休眠机制来降低能耗,所以节点间必须在保证侦听时段同步的基础上才能进行正常的通信。而由于网络的自组织特性,网络中就会出现多个虚拟簇形式的局部调度同步区域。而SMAC的调度同步机制却不能保证移动节点能及时地和调度不同的节点实现同步。由此可见,SMAC本身的调度同步机制造成了SMAC协议会受到移动性的影响。根据仿真实验的分析,移动性对SMAC协议中调度同步机制的具体影响有:
(1)在SMAC协议中,移动节点在进入陌生簇时,无论其移动速度快慢,除非通过邻居发现否则它都无法获得该簇的调度。
(2)若移动节点在调度不同步的情况下进入到一个陌生簇内,移动节点与该簇节点达到调度同步所需的时间具有不确定性,但总的来说,移动节点有数据需要发送时需要的时间要短一些。
(3)在节点移动过程中,移动节点和其他节点经过一定的时间后会通过邻居发现获得彼此的调度。由于其他节点的调度并不总和移动节点相同,最终的结果就会使网络中出现多个拥有两个或两个以上调度的节点。
4.3 SMAC支持移动性的解决思路
要基于SMAC实现能量高效的移动性支持,仍然需要采用周期性休眠机制来节省能耗,因此必须对SMAC的调度调整机制进行改进。改进方法可从两个角度来考虑:
(1)如何避免网络分为多个虚拟簇,实现全网调度同步。
(2)在网络分簇情况下,如何实现节点在移动过程中的调度动态调整,使得移动节点始终只与其周边节点具有相同的调度。
5 结束语
随着应用领域对WSN节点移动性需求的增加,研究移动传感器网络MAC协议的必要性与日俱增。本文通过详尽的理论分析和实验分析,指出了移动性造成SMAC协议性能下降的具体原因,并在此基础上提出了移动性支持的解决思路。在下一步工作中,将根据本文的结论,深入研究如何改进SMAC现有的调度同步机制,通过调度的动态调整实现SMAC对移动性的支持。
[1]任丰原,黄海宁,林闯.无线传感器网络[J].软件学报,2003,14(7):1282-1291.
[2]张宏巍,徐玉斌.一种无线传感器网络低延时信道接入协议[J].太原科技大学学报,2011,32(1):6-10.
[3]ERMAN A T,LODEWIJK V H,PAUL H.Enabling mobility in heterogeneous wireless sensor networks cooperating with UAVs for mission-critical management[J].IEEE Wireless Communications,2008,12:38-46.
[4]YE W,HEIDEMANN J,ESTRIN D.Medium access control with coordinated adaptive sleeping for wireless sensor networks[J].IEEE/ACM Trans On Networking,2004,12(3):493-506.
[5]YE W,SILVA F,HEIDEMENN J.Ultra-Low duty cycle MAC with scheduled channel polling[C]//Campben A,ed.Proc.of the ACM SenSys 2006.New York:ACM,2006:321-334.
[6]张大龙,李青,于宏毅,等.无线传感器网络MAC协议移动性支持问题的研究[J].电信科学,2008,(24)8:55-60.
[7]Pham H,Jha S.Addressing mobility in wireless sensor media access protocol[C]//Intelligent sensors,sensor networks and information processing conference(ISSNIP2004),2004:113-118.
[8]陈晨,高新波.一种无线传感器网络移动性支持自适应MAC协议[J].西安电子科技大学学报:自然科学版,2010,37(2):279-284.
[9]黄化吉,冯穗力,秦丽姣,等.NS网络模拟和协议仿真[M].北京:人民邮电出版社,2010.