无线传感器网络(WSN)由一些独立、完全嵌入式操作的小体积低功耗节点组成,这些节点能够检测来自目标环境的数据或控制目标环境,并且相互间通过无线方式通信。检测和控制是通过互连着的传感器和激励器完成的,而这些传感器和激励器或通过远程、或通过嵌入式应用程序进行管理。这些节点的数量从十几个到数千个不等,一个典型系统由数百个分布于整座大楼或室外空间的节点组成。
许多无线传感器网络采用私有标准实现无线组网,但最近的趋势是逐渐向标准化的低功耗无线通信发展。基于著名的802.15.4规范的ZigBee就是一种用于无线检测和控制的标准。虽然802.15.4文档仅描述了协议的PHY和MAC层,但基于802.15.4构建的ZigBee还提供网络和应用层规范。
ZigBee具有许多优点,包括可以实现多跳路由和数据发送的网格协议、安全规范和针对应用层互操作性的整套参数设置。总之,ZigBee向嵌入式应用开发人员提供了管理网络以及连接其它节点的更高抽象层次。
虽然本文主要讨论的是ZigBee,但其中许多观点和结论同样也适用于采用802.15.4 MAC和PHY的其它标准。为了避免出现混乱,后文假设我们的目标设计涉及的是使用网格路由协议、802.15.4兼容调制方案和介质访问协议的多跳网络。本文还假设读者对ZigBee和802.15.4规范已有基本了解。
网络组织和规模
网络组织和规模也许是最重要的设计选项,它往往对接下来的设计过程起着告知和指导作用。它还有约束作用,因为大型网络通常更难设计和维护。幸运的是,如今已经有方法能轻松实现和维护非常大的网络。
目前最先进的ZigBee网络规模在300到500个节点之间。这个规模看起来不大,但试想一下,所有这些节点工作在同一物理信道上,彼此在同一时间发送数据,根据每个节点的行为路由数据,并在同一时间试图保持整个网络的完整性(通过发送周期性控制消息),这该是个很吵很拥挤的网络。另外还要注意,ZigBee标准所依据的802.15.4规范使用了CSMA/CA(载波侦听多址访问/碰撞避免)协议,也就是说,在各自“听力”范围内没有两个节点能同时“说话”。如果同时“说话”,都会遭遇通信失败,必须延迟一段时间后重试。如果网络已经拥塞,那么这些重试将产生级联传输故障,试图发起空中访问的节点将越来越多,从而加剧信道的拥挤。
事实上,在设计数百个节点以上的网络时面临的主要挑战之一是如何有效地管理网络拥塞(另外一个挑战是在运行时优化用于存储内部堆栈状态的系统资源)。下面的小节将简要介绍用于解决拥塞问题的三种不同策略。
0
图1:基于802.15.4的ZigBee提供网络层和应用层规范。
网络密度
显然,“300个节点的网络”给我们提供的有关网络组织的信息是很少的。由于存在上述冲突碰撞问题,网络密度也是影响网络健康的一个重要因素,也就是说在每个节点听力范围内存在多少个节点,或者换句话说,一个普通节点可以听到多少个其它节点?专家建议是小于5个,因为这个数量支持冗余设计和相对无阻塞的通信介质。7个节点以上的网络很可能出现严重拥塞的网段而加重网络负担。
一个相关的问题随之而来,系统设计师该如何判断有多少个节点能被听到?一个显而易见的策略是定制嵌入式应用程序。有关相邻节点的信息实际上是ZigBee网络中协议操作的一个重要部分。事实上,节点会主动广播他们自己的信息,并且这些信息会被有效范围内的每个其它节点接收到。相邻表格可以被驻留程序查询,并计算唯一性条目的数量。然后驻留程序再将这个诊断结果发送给指定节点。很明显,这样做只有在网络密度仍能改变的网络安装过程中才有意义。一旦网络安装完毕并开始运行,密度信息将在故障排除过程中发挥顾问的作用。
请注意,如果相邻表格的大小小于周围节点的数量,ZigBee堆栈将强制周期性地撤消表格条目。这种撤消也可能负面影响总体网络性能,因为即使路径中没有节点离线,也会强制路由被重新发现。因此,除了限制网络密度以避免拥塞外,还必须根据系统资源(如相邻表格的大小)确定网络密度。
在节点的物理位置由于应用要求而被固定的情况下,网络密度可以方便地通过降低拥塞区域中收发器的输出功率来得到控制。从理论上讲,降低输出功率与增加节点间距离、使它们彼此听到的可能性变小具有相同的效果。制造商倾向于将输出功率设为最大值,以确保最大工作范围和最佳链路质量。根据我们的经验,在距离性能不很重要的室内应用场合,输出功率可以很容易降低。根据经验,输出功率降低3dBm,有效距离范围可以缩短1.5倍。
有关密度的最后一个考虑因素是,故障率增加到足够高以致于触发上述级联故障效应的理论极限。当然,这个参数取决于应用程序本身发送的信息量。根据经验,如果每个节点每秒发送一个最大长度的数据包,那么在各个节点的听力范围内这个极限值约为25个节点。密度极限似乎是不变的,与堆栈实现无关,这意味着密度极限与MAC层更基本的CSMA操作有关。例如,我们可以推断每隔n秒发送一个包的节点的密度极限值,就是将最大密度乘以1.2n倍。这个近似值从来不应被用作网络密度的精确指导值,因为实际值将取决于网络中的路由器和终端设备的比例。