通讯协议是WSNOS研究的另一大重点。通讯协议的好坏不仅决定通讯功耗的大小,同时也影响到通讯的可靠性(包的丢失率,包过载等)。TinyOS为满足这样要求的通讯协议提供了基于轻量级AM通讯模型的最小的通讯内核。
1 AM通讯模型
介绍了这种轻量级的AM通讯模型,它构成TinyOS极小内核的通讯系统,其他应用都建立在这个通讯系统之上。AM消息包含用户级处理函数名称和作为参数传送的有效载荷,为了避免网络阻塞和保证充分的性能,消息处理函数必须被很快地执行和异步处理。所有的这些措施都是为了实现低功耗的通讯。尽管AM源于大规模并行处理机和计算群集(Computing Cluster),但是一些基本概念也适用于资源受限的网络小设备。特别是轻量级的AM体系结构可作为杠杆来平衡扩展的通讯框架的需求和有效的灵活性。而且基于事件处理函数触发模型,使应用级的开发者得以避免对数据的忙等,使系统能交迭地同其他活动通讯(如,同传感器交互或执行其它的应用)。
2 WSN通讯协议
介绍了AM为基础的单跳协议和多跳协议,如S-MAC[ Sensor-MAC: Medium Access Control for Wireless Sensor Networks用于传感器网络的介质访问控制]是其中一种单跳协议的低功耗实现;介绍了多跳通讯协议,主要解决自组织的网络路由。简单介绍如下:
S-MAC基于RTS/CTS[ Request to send/Clear to Send请求发送/清除发送协议]调度,并返回无线消息来减少监听的开销。S-MAC保持分段操作(split-phase)和无拷贝特性。所谓分段操作即:在TinyOS中由于任务之间不能互相占先执行,所以TinyOS没有提供任何阻塞操作。为了让一个耗时较长的操作尽快完成,一般来说都是将对这个操作的需求和这个操作的完成分开来实现,以便获得较高的执行效率。
自组织(Ad hoc)的网络路由是一种不需要网桥(AP[ Access Point])的无线对等传输模式。任两个传感器若在彼此的通讯覆盖范围内,则这两个传感器可直接互相通讯,共享资源。它具有对称性,即B若在A的通讯范围内,则A也在B的通讯范围内;但往往由于某些外部条件的限制,可能会造成这种对称的不协调。若在两个相距较远的传感器之间通讯,可以寻找一个中间的传感器作为转发的节点,采用接力的方式来完成通讯过程。利用这种方式可以增加无线网络的通讯范围,但随着传输次数增加,数据的正确率会降低,传输过程的可靠性也降低。这种多跳路由一般可采用树状结构的集中,网络内部路由和分发(dissemination)3种形式。
比较普遍的是基于树结构的路由。它包含父节点标识多跳数或从树根开始的深度(即:父节点的多跳数加1)。一个节点传送一个包给父节点,该节点再传给其父节点,直到包到达树根。设计的关键问题是怎样建立路由树和怎样维护以及怎样转发以便提高传输的可靠性并降低功耗。主要用到两种方法:邻节点发现和连接质量估计服务;支持包的封装和监视转发。WSN系统中,基站连接到PC,发出广播,接收到广播的节点更新路由信息,并重新广播给通过它自己可以连接到基站上的那些节点。这些节点记住第一次监听到的路由更新,就是相应的到基站的最短路径。为了防止路由循环,时间被分成多个时间段,每个时间段路由更新广播一次。
3 低功耗监听协议
针对能量消耗,有以下四个特点:(1)主机模块MCU[ Micro-Controller Unit 微处理器]和收发模块占据电源消耗的绝大部分比重;(2)Active(激活)状态耗能最多,相对而言Idle(休眠)状态耗能最少;(3)收发模块比MCU耗能要多很多。发送一个字节(byte)消耗的能量约等于11000个MCU计算周期所消耗的能量,或是收发一位(bit)消耗的能量相当于MCU处理100条指令;从总体的消耗来看,收发数据所消耗的能量也是最多的。如果我们能够让收发模块和MCU处于多数时间休眠,少数时间激活状态,那么就能明显地降低系统的总体功耗。
介绍了两种典型的低功耗监听方式:周期性多跳监听(Periodic Multi-Hop Listening)和低功耗监听(Low Power Listening)。宏观上进行周期性多跳监听,设置周期性采样的时间间隔来减少主机和通讯模块的激活工作时间,例如:每100秒激活10秒,则减少了90%的能耗,但是限制了实际的带宽;微观上进行低功耗监听,增加监听频率,把每100秒监听10秒变成每300微秒监听30微秒,这样可以在监听不到任何信息的时候让无线收发器处于休眠状态,并且能够在传送1/3位信息的时间内唤醒,但是需要额外花费传送5位信息的时间来检测信息的有无。
使用以上两种监听方式带来的降低功耗效果是显著的。两者都不采用时MCU和收发模块的功耗都很大;只采用微观的低功耗监听,MCU的功耗明显降低,但是,收发模块的功耗降低不是很显著;只采用宏观的周期性多跳监听,MCU和收发模块的功耗都显著降低;两者都采用,MCU的功耗几乎为0,收发模块功耗显著降低。可以用电池寿命数据来说明使用了以上两种监听方式带来的低功耗的效果。两者都不采用时电池只能使用3天;只采用微观的低功耗监听,电池可以使用6.54天;只采用宏观的周期性多跳监听,电池寿命明显增加至65天;两者都采用,电池寿命可以达到数年。可见,采用这两种监听方式把电池的寿命从3天延长到几年,对于应用来说是具有突破性意义的。Intel的下一代Mote原型便采用这种策略来使得整个系统维持操作任务周期不超过1%。