Zigbee协议栈中文说明

2019-07-20 17:02发布

1.概述

1.1解析ZigBee堆栈架构ZigBee堆栈是在IEEE 802.15.4标准基础上建立的,定义了协议的MAC和PHY层。ZigBee设备应该包括IEEE802.15.4(该标准定义了RF射频以及与相邻设备之间的通信)的PHY和MAC层,以及ZigBee堆栈层:网络层(NWK)、应用层和安全服务提供层。图1-1给出了这些组件的概况。
1.1.1ZigBee堆栈层
每个ZigBee设备都与一个特定模板有关,可能是公共模板或私有模板。这些模板定义了设备的应用环境、设备类型以及用于设备间通信的簇。公共模板可以确保不同供应商的设备在相同应用领域中的互操作性。
    设备是由模板定义的,并以应用对象(Application Objects)的形式实现(见图1-1)。每个应用对象通过一个端点连接到ZigBee堆栈的余下部分,它们都是器件中可寻址的组件 图1-1 zigbe堆栈框架
从应用角度看,通信的本质就是端点到端点的连接(例如,一个带开关组件的设备与带一个或多个灯组件的远端设备进行通信,目的是将这些灯点亮)。
端点之间的通信是通过称之为簇的数据结构实现的。这些簇是应用对象之间共享信息所需的全部属性的容器,在特殊应用中使用的簇在模板中有定义。图1-1-2就是设备及其接口的一个例子:

图1-1-2每个接口都能接收(用于输入)或发送(用于输出)簇格式的数据。一共有二个特殊的端点,即端点0和端点255。端点0用于整个ZigBee设备的配置和管理。应用程序可以通过端点0与ZigBee堆栈的其它层通信,从而实现对这些层的初始化和配置。附属在端点0的对象被称为ZigBee设备对象(ZD0)。端点255用于向所有端点的广播。端点241到254是保留端点。
所有端点都使用应用支持子层(APS)提供的服务。APS通过网络层和安全服务提供层与端点相接,并为数据传送、安全和绑定提供服务,因此能够适配不同但兼容的设备,比如带灯的开关。
APS使用网络层(NWK)提供的服务。NWK负责设备到设备的通信,并负责网络中设备初始化所包含的活动、消息路由和网络发现。应用层可以通过ZigBee设备对象(ZD0)对网络层参数进行配置和访问。
1.1.2  802.15.4 MAC层
IEEE 802.15.4标准为低速率无线个人域网(LR-WPAN)定义了OSI模型开始的两层。PHY层定义了无线射频应该具备的特征,它支持二种不同的射频信号,分别位于2450MHz波段和868/915MHz波段。2450MHz波段射频可以提供250kbps的数据速率和16个不同的信道。868/915MHz波段中,868MHz支持1个数据速率为20kbps的信道,915MHz支持10个数据速率为40kbps的信道。
MAC层负责相邻设备间的单跳数据通信。它负责建立与网络的同步,支持关联和去关联以及MAC层安全:它能提供二个设备之间的可靠链接。
1.1.3  关于服务接入点
ZigBee堆栈的不同层与802.15.4 MAC通过服务接入点(SAP)进行通信。SAP是某一特定层提供的服务与上层之间的接口。
ZigBee堆栈的大多数层有两个接口:数据实体接口和管理实体接口。数据实体接口的目标是向上层提供所需的常规数据服务。管理实体接口的目标是向上层提供访问内部层参数、配置和管理数据的机制。
1.1.4  ZigBee的安全性
安全机制由安全服务提供层提供。然而值得注意的是,系统的整体安全性是在模板级定义的,这意味着模板应该定义某一特定网络中应该实现何种类型的安全。
每一层(MAC、网络或应用层)都能被保护,为了降低存储要求,它们可以分享安全钥匙。SSP是通过ZD0进行初始化和配置的,要求实现高级加密标准(AES)。ZigBee规范定义了信任中心的用途。信任中心是在网络中分配安全钥匙的一种令人信任的设备。
1.1.5  ZigBee堆栈容量和ZigBee设备
根据ZigBee堆栈规定的所有功能和支持,我们很容易推测ZigBee堆栈实现需要用到设备中的大量存储器资源。 不过ZigBee规范定义了三种类型的设备,每种都有自己的功能要求:ZigBee协调器是启动和配置网络的一种设备。协调器可以保持间接寻址用的绑定表格,支持关联,同时还能设计信任中心和执行其它活动。一个ZigBee网络只允许有一个ZigBee协调器。
ZigBee路由器是一种支持关联的设备,能够将消息转发到其它设备。ZigBee网格或树型网络可以有多个ZigBee路由器。ZigBee星型网络不支持ZigBee路由器。
ZigBee端终设备可以执行它的相关功能,并使用ZigBee网络到达其它需要与其通信的设备。它的存储器容量要求最少。然而需要特别注意的是,网络的特定架构会戏剧性地影响设备所需的资源。NWK支持的网络拓扑有星型、树型和网格型。在这几种网络拓扑中,星型网络对资源的要求最低。
ZigBee堆栈应该可以提供ZigBee规范要求的所有功能,因此制造商的重点工作是开发实际的应用。为了更加容易实现,如果制造商使用某种公共模板,那么可用大多数现成的配置。如果没有合适的公共模板,则可以充分利用其它模板已经做过的工作创建自己的模板。
ZigBee协议栈体系包含一系列的层元件,其中有IEEE802.15.4 2003标准中的MAC层和PHY层,当然也包括ZigBee组织设计的NWK层。每个层的元件有其特定的服务功能。本说明描述内容涉及ZigBee协议栈的各层元件,但侧重于描述最具实际和理论探讨性的APL应用层和NWK网络层。图1-1为ZigBee栈结构框图。



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
说书先生
1楼-- · 2019-07-22 07:23

3.3.4允许设备连接

该原语定义了ZigBee协调器或路由器的上层如何设置其设备允许其他设备同其网络连接。

3.3.4.1 NLME-PERMIT-JOINING.request 原语

该原语允许ZigBee协调其或路由器上层设定其MAC层连接许可标志,在一定期间内,允许其他设备同网络连接。

3.3.4.1.1 服务原语的语法

该原语的语法如下:


表3.12详细描述了NLME-PERMIT-JOINING.request原语的参数。


3.3.4.1.3 产生

当ZigBee协调器或路由器上层希望其他设备加入或阻止加入其网络时,将生成该原语,并传送给网络层管理实体。

3.3.4.1.3 接收

仅允许ZigBee协调器或路由器的上层发送该原语。如果ZigBee终端设备的网络层管理实体收到该原语,则将返回状态为INVALID_REQUEST的NLME-PERMIT-JOINING.confirm原语。

一旦网络层管理实体接收到参数PermitDuration的值为0x00的原语,则通过向MAC层发送MLME-SET.request原语将MAC层的PIB的macAssociationPermit属性设置为FALSE。一旦收到MLME-SET.confirm原语,则网络层管理实体发送NLME-PERMITJOINING.

Confirm原语,将其状态值设置为从MAC层所收到的状态。

一旦网络层管理实体接收到参数PermitDuration的值为0xff的原语,则通过向MAC层发送MLME-SET.request原语将MAC层的PIB的macAssociationPermit属性设置为TRUE。一旦收到MLME-SET.confirm原语,则网络层管理实体发送NLME-PERMITJOINING.

Confirm原语,将其状态值设置为从MAC层所收到的状态。

如果收到参数PermitDuration的值为除0x00或0xFF外的值,则网络层管理实体MAC层的PIB的macAssociationPermit属性设置为TRUE。当网络层管理实体收到MLME-SET.confirm原语后,将会启动一个计时器,在PermitDuration秒后,停止计时。一旦计时器启动,网络层管理实体将发送NLME-PERMIT-JOINING.confirm原语,其状态值设置为从MAC层所得到的状态值。如果计时器超时,网络层管理实体将发送参数macAssociationPermit为FALSE的MLME-SET.request原语。

任何一个由上层发出的NLME-PERMIT-JOINING.request原语,可以取代所有一切的请求。

3.3.4.2 NLME-PERMIT-JOINING.confirm原语

该原语向ZigBee协调器或路由器的上层返回允许设备连接网络请求原语的执行结果。

3.3.4.2.1 服务原语的语法

该原语的语法如下:


表3.13详细描述了NLME-PERMIT-JOINING.confirm原语的参数。


3.3.4.2.2 产生

该原语由ZigBee协调器或路由器初始化的网络管理实体生成,并且向上层发送作为对NLME-PERMIT-JOINING.request原语的确认。其状态参数既可以为MAC层所收到的状态,也可以INVALID-REQUEST的出错代码。这些状态值的原因详见3.3.4.1小节。

3.3.4.2.3 接收

当接收到该原语后,所初始化的设备上层即可得知允许其他设备连接网络请求原语的执行结果。

3.3.5路由器初始化

该原语允许一个新加入网络的ZigBee路由器开始参加ZigBee路由器的活动,包括数据帧的路由、路由发现、接收其他设备加入网络的请求。

3.3.5.1 NLME-START-ROUTER.request原语

该原语允许一个ZigBee路由器的上层发起路由。

3.3.5.1.1 服务原语的语法

该原语的语法如下:


3.3.5.1.2 产生

该原语由新设备的网络层管理实体上层生成,并发出给网络管理实体要求将设备初始化为ZigBee路由器。

3.3.5.1.3 接收

如果不是作为网络ZigBee路由器的设备接收到该原语后,网络层管理实体将返回状态参数为INVALID_REQUEST的NLME-START-ROUTER.confirm原语。

为初始化一个路由,网络层管理实体向MAC层发送MLME-START.request原语,MLME-START.request原语中的BeaconOrder 和 SuperframeOrder参数值设置为15,表明beaconless操作。MLME-START.request原语的CoordRealignment参数设置为FALSE。

当网络层管理实体收到相应的MLME-START.confirm原语,将向上层发送NLME-START-ROUTER.confirm原语,其中其状态值与MLME-START.confirm原语中的状态值一样。只有当MLME-START.confirm原语返回的状态值为SUCCESS时,设备开始作为ZigBee路由器开始工作,包括数据帧的路由、路由发现、接收设备加入网络的请求。否则,设备不允许做这些工作。

3.3.5.2 NLME-START-ROUTER.confirm原语

该原语返回执行ZigBee;路由器配置初始化的结果。

3.3.5.2.1 服务原语的语法

该原语的语法如下:


表3.14描述了NLME-START-ROUTER.confirm原语的参数。


3.3.5.2.2 产生

该原语由网络层管理实体生成,在接收到NLME-START-ROUTER.request原语时,向上层发送该原语作为响应。该原语返回的参数值为INVALID_REQUEST或者为MLME-START.confirm所返回的任何状态值。3.3.5.1.3小节描述了在哪些条件下返回这些值。

3.3.5.2.3 接收

接收到该原语,上层就得到ZigBee路由器初始化请求的结果。如果网络层管理实体已经成功设置,其返回的参数状态为SUCCESS,否则,参数状态为出错信息。


说书先生
2楼-- · 2019-07-22 07:26
 精彩回答 2  元偷偷看……
说书先生
3楼-- · 2019-07-22 11:42
3.3.8直接将设备同网络连接
该原语定义了ZigBee协调器或路由器上层利用直接请求的方式,将另一个设备同自身网络连接。
3.3.8.1 NLME-DIRECT-JOIN.request原语
该原语给出了ZigBee协调器或路由器的上层如何请求直接把另一个设备连接到自己的网络中。3.3.8.1.1 服务原语的语法
该原语的语法如下:

表3.21详细描述了NLME-DIRECT-JOIN.request原语的参数。

3.3.8.1.2 产生
ZigBee协调器或路由器生成该原语把新设备直接连接到自己的网络。这个过程不需要任何传输。
3.3.8.1.3 接收
网络层管理实体接收到此原语后,将会尝试把参数DeviceAddress所给定地址的设备连接到邻居表中,而参数CapabilityInformation设定了加入网络后设备的运行能力。在执行协议中,alternate PAN coordinator位为0。如果设备作为ZigBee路由器,那么其device type位为1,如果为终端设备则为0。如果设备的电源为交流电源,则power source位置为1,否则为0。如果设备在空闲期间,设备接收器打开,则receiver on when idle位置为1,否则置为0。如果设备具有安全操作能力,则security capability位置为1,否则为0.
如果网络层管理实体成功地把连接设备加入其邻居表,则发送状态参数为SUCCESS的NLME-DIRECT-JOIN.confirm原语。如果网络层管理实体发现所要加入的设备已在其邻接表中,则发送状态参数为ALREADY_PRESENT的NLME-DIRECT-JOIN.confirm原语。如果网络层管理实体不能将新的设备加入到邻接表中,则发送状态参数为NEIGHBOR_TABLE_FULL的NLME-DIRECT-JOIN.confirm原语。
3.3.8.2 NLME-DIRECT-JOIN.confirm 原语
该原语向ZigBee协调器或路由器上层通告直接把一设备加入网络请求原语的执行结果。
3.3.8.2.1 服务原语的语法
该原语的语法如下:

表3.22详细描述了NLME-DIRECT-JOIN.confirm原语的参数。

3.3.8.2.2 产生
在接收到NLME-DIRECT-JOIN.request原语后,网络层管理实体生成该原语,并向上层发送作为对请求原语的响应。如果请求成功,则参数表示连接成功,否则,状态参数为错误代码,即为ALREADY_PRESENT或 NEIGHBOR_TABLE_FULL。这些状态值的理由如3.3.8.1.3小节所述。3.3.8.2.3 接收
正在初始化设备的上层接收到该原语后,即可得到其直接把一设备加入网络的请求原语执行结果。
3.3.9断开网络
本小节介绍了设备上层请求自身或其他设备同网络断开连接的原语,同时也介绍了当设备成功地同网络断开后,向ZigBee协调器上层报告时所采用的原语。
3.3.9.1 NLME-LEAVE.request原语
设备上层利用该原语请求自身或者其他设备同网络断开连接。
3.3.9.1.1 服务原语的语法
该原语的语法如下:

表3.23详细描述了NLME-LEAVE.request原语的参数。

3.3.9.1.2 产生
当设备上层需要同网络断开连接,或者ZigBee协调器或路由器上层准备将一个设备同网络断开连接时,生成该原语。
3.3.9.1.3 接收
如果设备没有同网络连接,而设备的网络层管理实体接收到该原语,则网络层管理实体发送状态参数为INVALID_REQUEST的NLME-LEAVE.confirm原语。当一个网络连接设备的网络层管理实体接收到该原语,并且其DeviceAddress参数为NULL,RemoveChildren参数为FALSE时,网络层管理实体将按照3.7.1.8.1小节所述将自身与网络断开连接。网络层管理实体将清除路由表入口参数,并向MAC层发送MLME-RESET.request原语。如果网络层管理实体收到MLME-RESET.confirm原语其状态参数不为SUCCESS,时,网络层管理实体可能会选择重发复位请求。网络层管理实体也将把相对于父节点的邻居表入口的relationship域设置为0x03,表明没有关系。如果接收到的NLME-LEAVE.request原语的DeviceAddress参数为NULL,RemoveChildren参数为TRUE,那么网络层管理实体将试图如3.7.1.8.3小节所述,移除其子节点。
当ZigBee协调器或路由器接收到该原语,且原语的设备地址参数不为NULL,则网络层管理实体将判断所指定设备是否存在于邻居表中,。如果所请求设备不存在于邻居表中,则网络层管理实体将发送状态值为UNKNOWN_DEVICE的NLME-LEAVE.confirm原语。如果所请求的设备存在于邻居表中,网络层管理实体将按照3.7.1.8.3小节所述将设备从网络移除。如果RemoveChildren参数为TRUE,将请求移除该设备的子节点。移除结束,网络层管理实体将发送NLME-LEAVE.confirm原语,其参数DeviceAddress为移除设备的64位IEEE地址,状态参数为MCPS-DATA.confirm原语所返回的状态值。然后对应于移除设备的邻居表的relationship域将被更新。Relationship域按照NLME-LEAVE.request原语的Rejoin参数进行更新。如果Rejoin域的值为FALSE,那么relationship域为0x03,表明没有关系。如果Rejoin域为TRUE,那么relationship域为0x04,表明节点属于上一层的子节点。
3.3.9.2 NLLME-LEAVE.indication原语
3.3.9.2.1 服务原语的语法
该原语的语法如下:

表3.24详细描述了NLLME-LEAVE.indication原语的参数。

3.3.9.2.2 产生
当与ZigBee协调器或路由器所连接的设备同网络断开时,协调器或路由器的网络层管理实体生层该原语,并且发送到ZigBee协调器或路由器的上层。该原语也可由ZigBee路由器或终端设备的网络层管理实体生层,并发送给设备上层以表明该设备已同该设备所连接的ZigBee协调器或路由器成功地断开连接。
3.3.9.2.3 接收
ZigBee协调器或路由器上层一旦收到该原语,就可得到与其连接的设备已离开网络的消息。ZigBee路由器或终端设备上层也由该原语可得到它与所连接的ZigBee协调器或路由器断开的通告消息。
如果参数Rejoin值为TRUE,那么上层期望按照3.7.1.3小节所述的NLME-JOIN.request原语重新与网络连接。如果参数Rejoin值为FALSE,离开的设备将不能自动的与网络重新连接,尽管可能在上层的指导下与网络重新连接。
3.3.9.3 NLME-LEAVE.confirm原语
该原语向一个设备上层通告请求设备自身或其他设备离开连接网络的结果。
3.3.9.3.1 服务原语的语法
该原语的语法如下:

表3.25详细描述了NLME-LEAVE.confirm原语的参数

3.3.9.3.2 产生
该原语向一个设备上层通告请求设备自身或者其他设备离开连接网络的结果。如果请求断开连接原语成功执行,则该状态参数值表明为成功地断开连接;否则,状态参数为INVALID_REQUEST或UNKNOWN_DEVICE或为MCPS-DATA.confirm原语所返回的任意状态值。这些状态值的原因如3.3.9.1.3小节所述。3.3.9.3.3 接收
正在初始化中的设备上层收到此原语,就可得到请求自身或其他设备同网络断开的执行结果。

说书先生
4楼-- · 2019-07-22 13:00
 精彩回答 2  元偷偷看……
说书先生
5楼-- · 2019-07-22 14:31

3.3.12信息库维护

该原语介绍了设备上层如何读写网络信息库的属性

3.3.12.1 NLME-GET.request原语

设备上层应用该原语请求读取网络信息库中某一属性值。

3.3.12.1.1 服务原语的语法

该原语的语法如下:


表3.28详细描述了NLME-GET.request原语的参数。


3.3.12.1.2 产生

该原语由设备网络层管理实体的上层生成,并发送给网络层管理实体以便从网络信息库中读取所指定的属性值。

3.3.12.1.3 接收

网络层管理实体一旦接收到该原语,就试图从它的数据库中获取所请求的属性值。如果在数据库中没有找到所指定的属性标识符,则发送状态为UNSUPPORTED_ATTRIBUTE的NLME-GET.confirm原语。

如果网络层管理实体成功地获取了所请求的属性值,则发送状态参数为SUCCESS以及NIB属性标识符和属性值的NLME-GET.confirm原语。

3.3.12.2 NLME-GET.confirm原语

该原语报告了从网络信息库中读取属性值的执行结果。

3.3.12.2.1 服务原语的语法

该原语的语法如下:


表3.29详细描述可该原语的参数。


3.3.12.2.2 产生

该原语由网络层管理实体生成,并发送给它的上层,作为对NLME-GET.request原语的确认。该原语返回的状态参数为SUCCESS,则表明成功地读取了所请求的NIB属性值,或者为UNSUPPORTED_ATTRIBUTE的错误代码。

3.3.12.2.3 接收

网络层管理实体上层一旦接收到该原语,就可得知读取NIB属性请求原语的执行结果。如果成功地执行了请求原语,则状态参数置为SUCCESS。否则,状态参数为错误代码。

3.3.13.3 NLME-SET.request原语

网络层管理实体上层使用该原语向网络信息库写入所指定的属性值。

3.3.13.3.1 服务原语的语法

该原语语法如下:


表3.30详细描述了该原语的参数。


3.3.12.3.2 产生

该原语由网络层管理实体上层生成,并发送给网络层管理实体,以此向网络信息库写入所给定的属性值。

3.3.12.3.3 接收

网络层管理实体一旦接收到该原语,就试图向它的数据库中写入所指定的属性值。如果所指定的属性参数在数据库中不存在,则网络层管理实体将发送状态参数为UNSUPPORTED_ATTRIBUTE的NLME-SET.confirm原语。如果所指定的属性值超出了所给定属性的正常范围,则网络层管理实体将发送状态为INVALID_PARAMETER的NLME-SET.confirm原语。

如果成功地写入了NIB属性,网络层管理实体将发送状态为SUCCESS的NLME-SET.confirm原语。

3.3.12.4 NLME-SET.confirm原语

该原语报告了尝试向网络信息管理库中写入属性值的执行结果。

3.3.12.4.1 服务原语的语法

该原语的语法如下:


表3.31详细描述了该原语的参数。


3.3.12.4.2 产生

该原语由网络层管理实体生成,并向其上层发送,作为对NLME-SET.request原语的确认。如果该原语返回的状态为SUCCESS,则表明所指定的属性值已经成功地写入所指定的NIB属性中,或者状态为INVALID_PARAMETER或UNSUPPORTED_ATTRIBUTE。这些状态值的情况如3.3.12.3.3小节所述。

3.3.12.4.3 接收

网络层管理实体上层一旦接收到该原语,就可得知请求写入NIB属性值原语的执行结果。如果成功执行,则状态参数为SUCCESS;否则,状态参数为出错代码。

3.3.13路由错误报告

该原语用来描述设备网络层通知其上层发生路由失败,结果是至少一个单播或多播帧发送失败或通过该设备转发信息帧失败。广播帧的路由错误是帧发送到如表3.23所示的广播地址没有报告。

3.3.13.1 NLME-ROUTE-ERROR.indication原语

该原语向设备上层通告网络通信失败。

3.3.13.1.1 服务原语的语法

该原语的语法如下:


表3.32详细描述了该原语的参数。


3.3.13.1.2 产生

当如下情况发生时,设备的网络层用该原语通知设备的上层:

(1)   设备发现或重修ShortAddr参数所给地址的路由发生错误

(2)   因为表3.40所给出的原因,设备向参数ShortAddr所给出的16位网络地址的终端子设备发送数据帧失败

(3)   设备收到该设备的路由错误命令帧。在这种情况下,参数ShortAddr域将反映目的地址的值和命令帧的错误码域。

     接收

设备上层通过该原语被通告与确定地址的通信失败。

3.3.14路由发现

该原语用来定义设备上层如何初始化路由发现,如单播路由发现、多点传送路由发现和多对一路由发现,并被通知路由发现的结果信息。

3.3.14.1 NLME-ROUTE-DISCOBERY.request原语

该原语允许设备上层初始化路由发现。

3.3.14.1.1 服务原语的语法

该原语的语法如下:


表3.33详细描述了该原语的参数。



3.3.14.1.2 产生

该原语由ZigBee协调器或路由器的上层产生并发送给网络层管理实体请求初始化路由发现。

3.3.14.1.3 接收

如果是ZigBee终端设备的网络层管理实体接收到该原语,那么网络层管理实体将向上层发送状态参数为INVALID_REQUEST的NLME-ROUTE-DISCOVERY.confirm原语。

如果该原语的DstAddrMode参数不为0x00,并且DstAddr参数不为广播地址,那么网络层管理实体将向上层发送状态值为INVALID_REQUEST的NLME-ROUTE-DISCOVERY.confirm原语。

如果接收到该原语的ZigBee路由器或协调器没有路由能力,并且DstAddrMode参数为0x01或0x02,那么网络层管理实体将向上层发送状态值为NO_ROUTING_CAPACITY的NLME-ROUTE-DISCOVERY.confirm原语。

如果接收到该原语的ZigBee路由器或协调器有路由能力,并且参数DstAddrMode的值为0x02,网络层将开始发现从当前设备到参数DstAddr所示的16位网络地址设备的路由。初始化发现单播路由的详细描述见3.7.3.5.1小节。

如果接收到该原语的ZigBee路由器或协调器有路由能力,并且参数DstAddrMode的值为0x01,网络层管理实体将通过查看在nwkGroupIDTabl入口中是否有与目的地址相对应的入口来检查该设备是否是DstAddr参数所确定的多点传输组标识符的一员。如果设备时多点传输组中的一员,则网络层管理实体将立即发送状态值为SUCCESS的NLME-ROUTE-DISCOVERY.confirm原语,终止NLME-ROUTEDISCOVERY.request原语的后续处理。如果设备不是多点传输组的一员,网络层管理实体将初始化一个从当前设备到由DstAddr参数确定的多点传输组的单播路由发现。初始化发现单播路由的详细描述见3.7.3.5.1小节。

如果接收到该原语的ZigBee路由器或协调器的DstAddrMode参数为0x00,网络层管理实体将初始化多对一路由发现。初始化多对一路由发现的过程详见3.7.3.5.1小节。

在任何一个上述的三中路由发现情况下,网络层管理实体将使用MAC层的MCPS-DATA.request原语试图传输一个路由发现命令帧来初始化路由发现。如果提供了可选参数Radius,那么该值将出现在输出帧的网络层帧头的radius域;如果没有提供该值,那么如果要传输数据帧,网络层帧头的radius域将设置为网络层信息库中nwkMaxDepth参数的二倍。如果MAC层因为某些原因传输路由请求命令帧失败,那么网络层管理实体将向上层发送ROUTE-DISCOVERY.confirm原语,其状态参数与MCPS-DATA.confirm原语返回的状态值一致。如果路由发现命令帧发送成功,并且参数DstAddrMode值为0x00,表明为多对一路由发现,网络层管理实体将立即发送状态值为SUCCESS的ROUTE-DISCOVERY.confirm原语。否则,网络层管理实体将等待直到接收到路由响应命令帧或路由发现操作超时,如3.7.3.5小节所示。如果在路由发现操作时间结束前接收到路由响应命令帧,网络层管理实体将向上层发送状态值为SUCCESS的NLME-ROUTE-DISCOVERY.confirm原语。如果操作时间超时,将发送状态值为ROUTE_DISCOVERY_FAILED的NLME_ROUTE-DISCOVERY.confirm原语。

3.3.14.2 NLME-ROUTE-DISCOVERY.confirm原语

该原语用来向设备上层报告初始化路由发现操作的结果。

3.3.14.2.1 服务原语的语法

该原语的语法如下:


表3.34详细描述了NLME-ROUTE-DISCOVERY.confirm原语的参数。


3.3.14.2.2 产生

该原语由网络层管理实体产生,并作为初始化路由发现的结果发送给设备上层。

3.3.14.2.3 接收

设备上层通过该原语得知初始化路由发现的执行结果。可能的状态参数和它们在何种情况下产生如3.3.14.1.3小节所述。


说书先生
6楼-- · 2019-07-22 14:38
3.3.15网络回退
该原语用来定义设备上层如何在改变信道前初始化网络回退。
3.3.15.1 NLME-START-BACKOFF.request原语
设备上层利用该原语用来请求初始化网络回退。
3.3.15.1.1 服务原语的语法
该原语的语法如下:

表3.35详细描述了NLME-START-BACKOFF.request原语的参数。

3.3.15.1.2 产生
设备上层在改变信道前利用该原语确保在执行改变信道时没有传输数据包。
3.3.15.1.3 接收
接收到该原语,网络层管理实体将不再处理NLDE-DATA.requests原语,并返回BACKOFF PERIOD错误代码。NLDE-DATA.confirm and .indication将继续正常处理。










3.4帧格式
本小节详细介绍了网络层帧的格式,即网络协议数据单元(NPDU)的格式。网络层帧由下列基本部分组成:
(1) 网络层帧头,包含帧控制、地址和序列信息。
(2) 网络层帧的可变长有效帧载荷,包含帧类型所指定的信息。
网络层帧是一种按指定的序列排列的序列。本节中所有的帧格式按MAC层的传播顺序来描述,即从左到右,最左边的比特位最先发送。长度为k个比特的帧,按从0(最左为最低位)到k-1(最右为最高位)进行编号。帧长度大于一个8比特的帧,将按照最小序列的比特组到最大序列号的比特组顺序传送到MAC层。
3.4.1通用网络层帧格式
网络层帧格式通常由一个网络层报头和一个网络层有效载荷组成。网络层报头按固定顺序出现。然而,仅仅只有多播标志值是1时才存在多播控制域。网络层帧格式如图3.3所示。
字节:222110/80/80/1变长变长帧控制目的地址源地址广播半径域广播序列号目的IEEE地址源IEEE地址多点传送控制源路由帧帧的有效载荷
网络层帧报头网络层的有效载荷

一周热门 更多>