Zigbee AODV协议基础知识
关于zigbee基础知识的本教程部分涵盖以下子主题:
关于无线个域网无线个域网网络堆栈体育框架MAC乐队一致性AODV协议产品Zigbee 3.0教程
本页介绍zigbee教程Zigbee AODV协议基础知识。zigbee网络采用AODV协议作为路由协议。
802.15.4 Zigbee协议指定了两种地址类型,即16位网络地址和64位网络地址。
16位地址网络地址在节点加入网络时被分配给节点。它对于zigbee网络中的每个节点都是唯一的。这些地址不是静态的,会发生变化。因此,在以下情况下,node需要一个新的网络地址:
•如果终端设备与其父设备之间存在通信问题,则终端设备将离开zigbee网络并重新加入以寻找新的父设备。
•如果设备类型从终端设备更改为路由器,反之亦然,则设备将离开网络并以新的设备类型重新加入。
Zigbee要求将传输的数据发送到目的节点或设备的16位网络地址。因此,在数据传输之前,知道目标的16位地址是很重要的。
每个节点包含64位地址,该地址是唯一且永久的。
ZigBee应用层定义端点和集群标识符(集群id),用于处理设备上的单个服务或应用程序。端点是运行在ZigBee设备上的独特任务或应用程序,类似于TCP端口。每个ZigBee设备可以支持一个或多个端点。集群id定义了设备上的特定功能或操作。例如,ZigBee家庭控制照明配置文件中的集群id将包括“TurnLightOn”、“TurnLightOff”、“DimLight”等操作。
所有数据包都使用设备层和应用层寻址字段进行寻址。数据可以以广播或单播传输的方式发送。
广播传输:
ZigBee协议中的广播传输旨在在整个网络中传播,以便所有节点都能接收到传输。为了实现这一点,所有接收到广播传输的设备将重传该包3次。
每个传输广播的节点还将在本地广播传输表中创建一个条目。此表项用于跟踪每个接收到的广播数据包,以确保数据包不会无休止地传输。每次输入持续8秒。广播传输表包含8个表项。对于每次广播传输,ZigBee堆栈必须为数据包的副本保留缓冲空间。此副本用于根据需要重新传输数据包。大的广播包将需要更多的缓冲空间。由于广播传输由网络中的每个设备重传,因此应该谨慎使用广播消息。
单播传输:
由于zigbee单播模式下的通信依赖于16位目的地址,这个地址不是永久的。在传输开始之前,需要从已知的64位地址中识别16位地址。这种识别是使用网络地址发现协议完成的。路由发现采用AODV路由协议。
网络地址发现:
数据传输始终发送到目标设备的16位网络地址。然而,由于64位地址对于每个设备都是唯一的,并且通常是已知的,因此ZigBee设备必须在它们可以传输数据之前发现在加入PAN时分配给特定设备的网络地址。
为此,发起传输的设备在整个网络中发送广播网络地址发现传输。此数据包包含启动器需要向其发送数据的设备的64位地址。接收此广播传输的设备检查它们的64位地址是否与广播传输中包含的64位地址匹配。如果匹配,则设备向启动器发送响应报文,提供匹配64位地址的设备网络地址。当接收到此响应时,启动器就可以传输数据。
路由发现:
ZigBee采用网格路由的方式在源设备和目的设备之间建立路由。网状路由允许数据包穿越网络中的多个节点(跳),将数据从源路由到目的。路由器和协调器可以通过路由发现过程参与在源设备和目的设备之间建立路由。路由发现过程基于AODV (Ad-hoc on -demand Distance Vector routing)协议。
AODV (Ad-hoc demand Distance Vector)路由算法
AODV协议下的路由使用每个节点中的表来完成,这些表存储目标节点的下一跳(源节点和目标节点之间的中间节点)。如果下一跳未知,则必须进行路由发现才能找到路径。由于路由器上只能存储有限数量的路由,路由发现将更多地发生在有许多不同节点之间通信的大型网络中。
节点 | 目的地址 | 下一跳地址 |
---|---|---|
R3 | 路由器6 | 协调员 |
C | 路由器6 | 路由器5 |
R5 | 路由器6 | 路由器6 |
当源节点必须发现到目的节点的路由时,发送广播路由请求命令。route request命令包含源网络地址、目的网络地址和路径开销字段(用于衡量路由质量的度量)。当路由请求命令通过网络传播时(参考广播传输),每个重新广播消息的节点都会更新路径开销字段,并在其路由发现表中创建一个临时条目。
图1:示例路由请求(广播)传输,R3试图发现到R6的路由
当目的节点接收到路由请求时,它将‘path cost’字段与之前接收到的路由请求命令进行比较。如果路由请求中存储的路径代价比之前接收到的任何路径代价都好,目的节点将向发起路由请求的节点发送路由应答包。中间节点接收并将路由应答报文转发给源节点(发起路由请求的节点)。
图2:重试及致谢:这里R6可以发送多个回复,如果它确定了更好的路由。ZigBee在Mac和应用程序支持(APS)层都包含确认数据包。当数据传输到远端设备时,可能要经过多个跳才能到达目的地。当数据从一个节点传输到它的邻居时,会向相反的方向发送一个确认包(Ack),以表明传输成功接收。如果没有收到Ack,发送设备将重传数据,最多4次。这个Ack被称为Mac层确认。
图3:此外,发起传输的设备期望从目标设备接收一个确认包(Ack)。这个Ack将遍历数据所遍历的相同路径,但方向相反。如果发起者没有收到这个Ack,它将重传数据,最多2次,直到收到一个Ack。这个Ack被称为ZigBee APS层确认。