物理层的上面是MAC层,它的核心是信道接入技术,包括时分复用GTS技术和随机接入信道技术CSMA/CA。不过ZigBee实际上并没有对时分复用GTS技术进行相关的支持,因此我们可以暂不考虑它,而专注于CSMA/CA。ZigBee/IEEE 802.15.4的网络所有节点都工作在同一个信道上,因此如果邻近的节点同时发送数据就有可能发生冲突。为此MAC层采用了CSMA/CA的技术,简单来说,就是节点在发送数据之前先监听信道,如果信道空闲则可以发送数据,否则就要进行随机的退避,即延迟一段随机时间,然后再进行监听,这个退避的时间是指数增长的,但有一个最大值,即如果上一次退避之后再次监听信道忙,则退避时间要增倍,这样做的原因是如果多次监听信道都忙,有可能表明信道上的数据量大,因此让节点等待更多的时间,避免繁忙的监听。通过这种信道接入技术,所有节点竞争共享同一个信道。在MAC层当中还规定了两种信道接入模式,一种是信标(beacon)模式,另一种是非信标模式。信标模式当中规定了一种“超帧”的格式,在超帧的开始发送信标帧,里面含有一些时序以及网络的信息,紧接着是竞争接入时期,在这段时间内各节点以竞争方式接入信道,再后面是非竞争接入时期,节点采用时分复用的方式接入信道,然后是非活跃时期,节点进入休眠状态,等待下一个超帧周期的开始又发送信标帧。而非信标模式则比较灵活,节点均以竞争方式接入信道,不需要周期性的发送信标帧。显然,在信标模式当中由于有了周期性的信标,整个网络的所有节点都能进行同步,但这种同步网络的规模不会很大。实际上,在ZigBee当中用得更多的可能是非信标模式。
MAC层往上就属于ZigBee真正定义的部分了,我们可以参看一下ZigBee的协议栈(图3)。底层技术,包括物理层和MAC层由IEEE 802.15.4制定,而高层的网络层、应用支持子层(APS)、应用框架(AF)、ZigBee设备对象(ZDO)和安全组件(SSP),均由ZigBee Alliance所制定。
图3 ZigBee协议栈
这些部分当中最下面的是网络层。和其他技术一样,ZigBee网络层的主要功能是路由,路由算法是它的核心。目前ZigBee网络层主要支持两种路由算法—树路由和网状网路由。树路由采用一种特殊的算法,具体可以参考ZigBee的协议栈规范。它把整个网络看作是以协调器为根的一棵树,因为整个网络是由协调器所建立的,而协调器的子节点可以是路由器或者是末端节点,路由器的子节点也可以是路由器或者末端节点,而末端节点没有子节点,相当于树的叶子。这种结构又好像蜂群的结构,协调器相当于蜂后,是唯一的,而路由器相当于雄蜂,数目不多,末端节点则相当于数量最多的工蜂。其实有很多地方仔细一想,就可以发现ZigBee和蜂群的许多暗合之处。树路由利用了一种特殊的地址分配算法,使用四个参数—深度、最大深度、最大子节点数和最大子路由器数来计算新节点的地址,于是寻址的时候根据地址就能计算出路径,而路由只有两个方向—向子节点发送或者向父节点发送。树状路由不需要路由表,节省存储资源,但缺点是很不灵活,浪费了大量的地址空间,并且路由效率低,因此常常作为最后的路由方法,或者干脆不用。ZigBee当中还有一种路由方法是网状网路由,这种方法实际上是AODV路由算法的一个简化版本,非常适合于低成本的无线自组织网络的路由。它可以用于较大规模的网络,需要节点维护一个路由表,耗费一定的存储资源,但往往能达到最优的路由效率,而且使用灵活。除了这两种路由方法,ZigBee当中还可以进行邻居表路由,其实邻居表可以看作是特殊的路由表,只不过只需要一跳就可以发送到目的节点。
网络层的上面是应用层,包括了APS、AF和ZDO几部分,主要规定了一些和应用相关的功能,包括端点(endpoint)的规定,还有绑定(binding)、服务发现和设备发现等等。其中端点是应用对象存在的地方,ZigBee允许多个应用同时位于一个节点上,例如一个节点具有控制灯光的功能,又具有感应温度的功能,又具有收发文本消息的功能,这种设计有利于复杂ZigBee设备的出现。而绑定是用于把两个“互补的”应用联系在一起,如开关应用和灯的应用。更通俗的理解,“绑定”可以说是通信的一方了解另一方的通信信息的方法,比如开关需要控制“灯”,但它一开始并不知道“灯”这个应用所在的设备地址,也不知道其端点号,于是它可以广播一个消息,当“灯”接收到之后给出响应,于是开关就可以记录下“灯”的通信信息,以后就可以根据记录的通信信息去直接发送控制信息了。服务发现和设备发现是应用层需要提供的,ZigBee定义了几种描述符,对设备以及提供的服务可以进行描述,于是可以通过这些描述符来寻找合适的服务或者设备。
ZigBee还提供了安全组件,采用了AES128的算法对网络层和应用层的数据进行加密保护,另外还规定了信任中心(trust center)的角色—全网有一个信任中心,用于管理密钥和管理设备,可以执行设置的安全策略。
ZigBee性能分析
上面对ZigBee协议栈作了一些介绍,要知道ZigBee能胜任什么工作,还需要作进一步的分析,主要有几个方面:数据速率、可靠性、时延、能耗特性、组网和路由。
ZigBee的数据速率比较低,在2.4GHz的频段也只有250kb/s,而且这只是链路上的速率,除掉帧头开销、信道竞争、应答和重传,真正能被应用所利用的速率可能不足100kb/s,并且这余下的速率也可能要被邻近多个节点和同一个节点的多个应用所瓜分。所以我们不能奢望ZigBee去做一些如传输视频之类的高难度的事情,起码目前是这样,而应该聚焦于一些低速率的应用,比如人们早就给它找好的一个应用领域—传感和控制。