物联网无线传感器网络则将网络技术引入到无线智能传感器中,使得传感器不再是单个的感知单元,而是能够交换信息、协调控制的有机结合体,实现物与物的互联,把感知触角深入世界各个角落,必将成为下一代互联网的重要组成部分(IOT)。无线传感网节点构成节能ZigBee网络的传感器节点都是靠电池供电的,由于电池的寿命有限,再加上可能有时网络的部署比较复杂,就会无法及时的更换电池,所以节能成为了实际应用中的研究重点。而无线通信模块负责信息传输的可靠性和有效性,是无线传感器节点的重要部分,也是整个节点结构中最耗电的一个模块。节能从以下各个方面考虑节能问题:网络——MAC——收发器——其他——路由算法接入机制(CSMA/CA)功率控制时间同步、节点定位等节能网络层的研究重点:就是设计相对节能的路由机制以及确保可靠的数据传输,从而延长网络的生存周期,以达到高效节能的目的。核心ZigBee路由协议Cluster-Tree(簇树路由协议)AODVjr(按需距离矢量路由协议)二者相结合节点分类ZigBee网络将节点分为三类:ZigBee协调节点、路由节点和终端节点。无线设备可分为两类:全功能设备FFD和精简功能设备RFD。其中,ZigBee协调节点和路由节点必须是FFD,终端节点可以是FFD或RFD。在ZigBee网络中,可以将路由节点进一步分为RN+(RoutingNode+)和RN-(RoutingNode-)两种类型。RN+节点是指具有足够的存储空间、有能力执行AODVjr路由协议的路由节点,RN-节点是指不具备足够能力执行AODVjr路由协议,只能执行Cluster-Tree(簇树)协议的路由节点。注:AODVjr需要更多的处理能力和存储空间拓扑分类通信机制组网分簇路由三步走:组建网络(第一步)第一个进入PAN(PersonalAreaNetwork)具有协调点能力且当前未加入任一网络的节点可以发起建立ZigBee网络,这个节点就是该网络的PAN协调点。PAN协调点首先进行信道扫描,选择一个未探测到网络的空闲信道,然后确定自己的16bit网络地址、网络的PANID、网络的拓扑参数等。当各项参数选定后,PAN协调点便可以接受其它节点为子节点。当一个未加入网络的节点A想要加入PAN时,便向网络中的节点发送关联请求,收到关联请求的节点如果有能力接受节点A为其子节点,就为节点A分配一个网络中唯一的16bit网络地址,并发出关联应答,收到关联应答后,节点A成功加入网络,并可以接受其它节点的关联。一个节点是否具有接受其它节点与其关联的能力,主要取决于此节点可利用的资源,如存储空间、能量等。地址分配加入ZigBee网络的节点通过MAC层提供的关联过程组成一棵逻辑树,当网络中的节点允许一个新节点通过它加入网络时,它们之间就形成了父子关系,每个进入网络的节点都会得到父节点为其分配的一个在网络中唯一的16bit网络地址。地址分配网络深度为d的父节点为其子节点进行地址分配的规则如下:(1)假设节点Node(n)是接入其父节点的第n个简化功能设备节点(RFD),即没有路由能力的节点(终端节点),则它的父节点Node(n)将会为它分配如下的地址:An=Aparent+Cskip(d)·Rm+n,1≤n≤(Cm-Rm)(2)设节点Node(n)是接入其父节点的第n个全功能设备节点(FFD),即具各路由能力的节点(路由节点),则它的父节点Node(n)将会为它分配如下的地址:An=Aparent+Cskip(d)·(n-1)当一个路由节点的Cskip(d)为0时,它就不再具备为子节点分配地址的能力,即该路由节点不能在接收新的节点加入网络。分簇(第二步)在Cluster-Tree路由协议中,将传感器节点划分到一个个簇,这种基于簇的分层结构具有天然的分布式处理能力。监测数据首先传到簇首领,簇首领可以对采样数据进行融合,然后再转发到目的节点,以减少网络流量。这类路由协议的典型代表为LEACH算法。为什么要分簇?簇内树型、星型,簇间MeshLEACH算法LEACH是为无线传感网设计的低功耗自适应算法路由协议。其基本思想是网络周期性的随机选择簇头,其他的非簇头节点以就近原则加入相应的簇头,形成虚拟簇。簇内节点将感知到的数据直接发送给簇头,由簇头转发给汇聚节点,簇头可以将本簇内的数据进行融合处理以减少网络传输的数据量。节点轮换——LEACH中利用簇头节点和汇聚节点通信,但是簇头节点会消耗大量的能量,为了避免某些节点过早的死亡,需要定期的更换簇头,以延长整个网络的寿命。LEACH算法网络生存期的周期分为两个阶段:簇的建立和稳定的数据传输阶段,稳定传输阶段的持续时间要大于簇建立所需要的时间。选定簇头后,簇头节点通过广播告知整个网络自己成为簇头的事实,网络中的非簇头节点根据接收信号的强度决定丛书的簇,并通知相关的簇头,最后簇头节点采用TDMA的方式为簇中的每个节点分配传输数据的时隙。ZigBee路由算法被认为是一个分级别的由最佳路由表驱动的路由策略。分级结构中,网络被划分为簇。每个簇由一个簇头和多个簇成员组成。这些簇头形成了高一级的网络。在高一级网络中,又可以分簇,再次形成更高一级的网络,直至最高级。在分级结构中,簇头结点负责簇间数据的转发。层次性拓扑结构路由(第三步)1、cluster-tree算法Cluster-Tree路由算法的描述如下:当一个网络地址为A,网络深度为d的路由节点(FFD)收到目的地址为D的转发数据包时,路由节点首先要判断目的地址D是否为自身的一个子节点,然后根据判断的结果采取不同的方式来处理这个数据。若地址D满足以下判别式,则可以判断D地址节点是A地址节点的一个后代节点:如果D不在这个范围之内则D地址节点是A地址节点的父节点。注:网络深度d——普通节点距离根结点的距离Cluster-Tree算法判断后采取的数据包转发措施如下:1)目的节点是自身的一个后代节点,则下一跳(nexthop)的节点地址为:2)目的节点不是自身的一个后代节点,路由节点将把该包送交自己的父节点处理。这一点与TCP/IP协议中路由器将路由表项中不存在的数据包自己的网关处理类似。Cluster-Tree算法在Cluster-Tree协议中,中间节点在收到分组后,将收到的分组根据算法直接传输给了下一跳地址,这样节点就不用建立路由发现的过程,可以不必去维护路由表,降低了控制开销和节点能量的损耗,这样就对节点的存储能力没有过高的要求,节点的成本也降低了。但根据Cluster-Tree协议来建立形成的路由不一定是最优的,常常会造成较高的分组传输时延,而且靠近ZigBee协调点的节点,即深度较小的节点往往其业务量相对较大,而深度较大的节点业务量又可能会比较小,所以就形成了流量分配不平均的网络,时间长了很可能会引起网络的瘫痪。解决方法找到一条通往目的节点的最优路径AODVjr算法AODVjr路由是一种按需分配的路由协议,只有在路由节点接收到网络数据包,并且网络数据包的目的地址不在节点的路由表中时才会进行路由发现过程。也就是说,路由表的内容是按照需要建立的,而且它可能仅仅是整个网络拓扑结构的一部分。路由建立——三步走1)路由发现2)反向路由建立3)正向路由的建立路由发现当源节点有数据要发送给目标节点时,它首先在自己的路由表中查寻到目标节点的路由,如果路由存在并且有效,则立刻开始发送数据;如果相应的路由不存在或者路由存在但已经标明为无效时,源节点就开启一个泛洪路由发现过程。源节点创建一个路由请求包RREQ,并向其周围节点广播,如果邻居节点收到RREQ,则在它的邻居表中增加一个这个簇标签的路由接入点,并在路由查找表中增加一个目的节点的网络地址的路由接入点。当中间节点收到RREQ的时候,则与它的路由搜索表中的路由成本进行比较,如果这个路由成本比较低的话,则更新路由搜索表。然后继续广播,直到到达目的节点为止。建立反向路由当RREQ消息最终到达了目的节点,节点验证RREQ中的目的地址为自己的地址之后,目的节点就会产生RREP消息,作为一个对RREQ消息的应答。由于之前已经建立了明确的反向路由,因此RREP无需进行广播,只需按照反向路由的指导,采取单播的方式即可把RREP消息传送给源节点。建立正向路由在RREP以单播方式转发回源节点的过程中,沿着这条路径上的每一个节点都会根据PREP的指导建立到目的节点的路由,也就是说确定到目的地址节点的下一跳(next-hop)。方法就是记录RREP是从哪一个节点传播而来,然后将该邻居节点写入路由表中的路由表项。一直到RREP传送到源节点。至此,一次路由建立过程完毕。源节点与目标节点之间可以开始数据传输。当这个路由过程建立完毕后,则原节点向它的簇首发送一个携带有路由信息的路由确认包RNOT(RouteNotify),当簇首收到这个确认包以后,则簇首再广播一个路由更新包RUPT(RouteUpdate),当它的簇员收到这个信息后,则共享刚才节点新建立的路由信息。(体现了分簇的优点)AODVjr寻最优路径ZigBee路由协议中,当RN-节点需要发送分组时,只能使用Cluster-Tree路由协议来对分组进行发送。而当RN+节点需要发送分组时,如果没有通往目的节点的路由表条目时,就会发起一个路由建立的过程。路由协议小结ZigBee路由协议结合了Cluster-Tree和AODVjr,RN+节点执行AODVjr协议,RN-执行Cluster-Tree协议,所以ZigBee路由协议充分利用了两种路由协议的优势,从而实现时延和路由开销的平衡。