在这里,我们将介绍ZigBee网络的一些基本概念,包括:
- 设备类型
- 网络地址
- PAN ID
- 扩展 PAN ID
- 设备地址
- 节点编号
- Eui64
一、设备类型
IEEE-802.15.4定义了两种设备类型:
- FFD, 全功能设备,能够执行IEEE 802.15.4标准中描述的所有职责,并且可以在网络中担任任何角色。
- RFD, 剪裁功能设备,功能有限。
注意: RFD设备的处理能力和内存大小通常小于FFD设备。
在ZigBee中,存在三种设备类型:
- 协调器,Coordinator,他是负责创建网路的,所以他是第一个成员,所以他的地址是0x0000;
- 路由设备,Router,可以路由消息,作为网络的中间节点来转发消息;
- 终端设备,End Device,包括睡眠终端设备和非睡眠终端设备。作为网络的边缘节点,必须有一个parent,必须附着在一个router或者coordinator上面。不能转发消息,不能做路由用,不能做中间节点用。
设备类型 | 创建网络 | 路由 | 供电方式 | 作父节点 | |
---|---|---|---|---|---|
协调器 | 是 | 是 | 主电源 | 是 | 网络中只有一个,且节点ID始终为0 |
路由设备 | 否 | 是 | 主电源 | 是 | |
终端设备 | 否 | 否 | 主电源或电池 | 否 | 必须有父节点 |
Coordinator对比Router,除了可以创建网络之外,其余功能是一样的。
每个设备入网后,都会广播发出一个Announce报文,通知所有的设备,我加入这个网络了。
二、网络地址
马鞍山虽然是一个地名,但不是一个精确的地名。据统计,中国可能有二十几个地方叫马鞍山。
对应到ZigBee网络也会有同样的问题。ZigBee使用PAN ID和扩展的PAN ID来识别网络。
马鞍山就类似于PAN ID,Extended PAN ID就类似一个全地名,比如说安徽省马鞍山市
ZigBee是一个低速率的通信技术,本身最大的数据传输速率就只有250Kbps,并且在实际传输的时候有MAC层头部、网络层头部,还有各种安全控制的字段等等,导致的后果就是真正有效的数据载荷占比比较低。这种情况下,如果每次通信仍然使用这个64 bit的PAN ID,就会导致有效载荷占比进一步降低。所以大部分时候的通信都是使用16 bit的PAN ID来标识目的网络,可以改善这种情况。仅在回复节点扫描请求入网的Beacon Request的Beacon报文中,或是进行PAN ID更新时,才会在报文中使用扩展的PAN ID。
2.1 PAN ID
PAN,又称个人区域网络,通过其PAN ID与其他网络分开。这是同一PAN中所有节点将共享的16位标识符。因此,这与以太网世界中的子网掩码类似,因为您通常只与本地网络内的设备通信,在这种情况下为PAN。该标识符放置在每个传出数据包中的低层MAC层标头中,它使接收该数据包的设备可以过滤出与他们的网络无关的消息。 他们可以将其与自己的PAN ID进行比较,并确定这是来自自己网络中某人的消息,还是来自恰好在此信道上的其他网络中的某人的消息,因此无需尝试解码或解密。
0xFFFF这个PANID用于广播,那么所有网络都能收得到。
PAN ID由协调器在网络创建时随机生成,或者在创建网络的时候由用户指定。因为PAN ID是一个网络与另一个网络之间的区别因素,所以它应该是随机的以确保其唯一性。建议您为PAN ID选择一个随机的16位值,以防止您的网络与该区域中碰巧存在的任何其他网络重合。
现在,如果您碰巧选择了另一个网络已经使用的PAN ID,该怎么办?或者,如果您确实选择了一个与任何其他网络都没有冲突的随机PAN ID,但后来又有另一个网络与您的网络重叠,该怎么办?如果曾经发生过PAN ID冲突,则协议栈实际上可以检测到这种冲突并可以自动更新其PAN ID,并通知其网络中的所有节点都移至新的PAN ID,以便每个节点可以继续与原始网络中的节点进行通信,并排除冲突网络上的任何节点。如果PAN ID冲突,我们需要使用扩展的PAN ID来区分网络。
2.2 扩展 PAN ID
扩展PAN ID是PAN中所有节点都知道的另一个网络标识符。
正常的短16位PAN ID由于简短,在空中传输的所有数据包中都有包含,但64位扩展PAN ID很少通过空中传输。扩展的PAN ID对于每个PAN也是唯一的,当16位PAN ID不足以始终将一个网络与另一个网络区分开时,它基本上用作备份标准。例如,当发生PAN ID冲突并且您要通知网络中的所有设备更新PAN ID时,将网络与冲突的网络区分开的方式是,网络中的这些设备都共享相同的扩展PAN ID。扩展PAN ID极不可能发生冲突,因为与短PAN ID中的16位相比,它具有64位。
扩展的PAN ID由协调器在网络创建时随机生成。
这也是允许您选择网络的有用因素。如果您尝试加入一个网络而不是创建一个网络,那么您可能想知道如何判断哪些网络可用。网络之间可区分的方式不仅在PAN ID中,而且在扩展的PAN ID中。您可能想做一些特别的事情,决定只使用扩展PAN ID的特定子集,以便您可以将网络与其他网络区分开来,但不要太限制自己,因为您限制得越多您发生冲突的可能性就越大,并且如果您的扩展PAN ID曾经发生冲突,您实际上无能为力。它有点像WiFi SSID,不同之处在于WiFi网络之间的SSID可以相同,而ZigBee不同网络间的扩展PAN ID则不能相同。
三、节点地址
除了其网络范围的标准外,一个节点还通过其单独的节点地址与另一个节点区分开。
节点具有短地址和长地址。长地址是IEEE分配的MAC地址或EUI-64,称为IEEE地址或MAC地址。它是一个全球唯一的64位地址,这意味着世界上没有两个基于IEEE的无线电设备具有相同的EUI-64。通常在制造时分配。芯片在出厂之前,它们会被分配(IEEE会给芯片厂商分配不同的地址范围),并且它们永远不会改变。它用来区分不同的无线设备。但是因为64位是相对比较大的数据量,所以这个长地址不是经常通过空中发送的。
在大多数情况下,为了提供通信的效率,更短的16位地址是通过无线方式使用的。这被称为Short ID或Node ID,在网络中是唯一的,类似于以太网世界中的IP地址。它是在节点进入网络时由他的父节点分配的,并且在该网络内应该是唯一的。可能有两个网络,每个网络都有一个具有相同节点ID的节点,但是因为它们位于不同的PAN中,所以没有关系。
请注意,短地址有可能会发生变化,因为有可能会产生冲突。两个节点在进入网络时可能选择了相同的随机节点ID。如果发生这种情况,就像PAN ID方案一样,有一种解决冲突的方法。当节点注意到冲突时,基于EUI-64信息作为后备,它们可以商定新地址。因此,如果需要,节点可以根据冲突在运行时更改地址。