ZigBEERF4CE规范基本概念及配对详细讲解.docx
《ZigBEERF4CE规范基本概念及配对详细讲解.docx》由会员分享,可在线阅读,更多相关《ZigBEERF4CE规范基本概念及配对详细讲解.docx(15页珍藏版)》请在冰豆网上搜索。
![ZigBEERF4CE规范基本概念及配对详细讲解.docx](https://file1.bdocx.com/fileroot1/2023-1/22/8684e89b-11c4-4e6c-981b-2fa9d92a5e3d/8684e89b-11c4-4e6c-981b-2fa9d92a5e3d1.gif)
ZigBEERF4CE规范基本概念及配对详细讲解
一.节点的安装初始化
1.1建立网络的过程
(1)目标节点:
首先,扫描信道,对各个信道进行能量检测,选择可允许能量水平的信道进行操作。
然后,发送执行活动的扫描操作,识别其他在工作在所选信道上的属于其他PAN网络的identifiers,允许一个统一的PANidentifier接入它的网络。
最后,目标节点运行常规功能。
(2)控制节点:
接入网络之后,运行常规功能。
二.网络帧结构
Framecontrol:
控制信息
Framecounter:
技术,防止重复和延时攻击
Profileidentifier:
应用帧的传输格式
Vendoridentifier:
供应商标识符,允许商家进行扩展
Framepayload:
传输的应用层数据
Messageintegritycode:
进行认证(安全)
三.传输选项
四.发现(Discovery)
发现服务必须是在非节能模式下才能进行。
节点通过执行发现服务,来寻找能够进行配对的节点;发现服务会在一个固定的期间在三个PAN网络中重复的进行,直到收到所有的应答。
在此期间,设备之间会交换如下信息:
Nodecapabilities:
节点的类型(目标节点或控制节点),节点的供电类型,是否支持安全性。
Vendorinformation:
ZigBeeRF4CE提供一个Vendoridentifier或者venderstring来制定一个特定的供应商标识。
Applicationinformation:
用户自定义一个字符串用来描述节点的应用功能(例如LoungeTV),一个设备类型列表可以制定哪些类型的设备室被支持的(例如一个综合性设备可能同时支持TV和DVD的功能),profileidentifier列表制定该节点支持哪些类型的profiles。
Requesteddevicetype:
discovery期间可以被请求的设备类型(比如一个多功能遥控器可能寻找TV的功能)。
五、频率捷变
(1)目标节点可以根据3个信道的变化,更换信道。
(2)控制节点会记录目标节点的信道,当目标节点信道发生改变时,控制节点会尝试从其他信道发送给目标节点,直到目标节点发送确认信息;之后,控制节点会记录上新的信道。
六、配对
在发现期间,当节点确定在它的通信围有其他能够提供稳定服务的节点时,可以通过建立配对从而进行通信。
在RC网络中在存在配对的发送端和接收端之间只能直接通信。
配对连接可以建立在应用层的要求上,通过交换类似于discovery期间交换的消息。
目标节点可以选择是否接受配对并发送请求配对信息给源节点。
配对成功后,源节点和目标节点会在它们各自的配对表中存储配对。
这个使得源节点可以和目标节点通信,目标节点也可以和源节点通信。
在配对表中的实体包含网络层传输信息给目标节点的所有信息。
这消除了寻址的负担,要实现和相应设备的通信,应用层可以简单的提供一个配对表的index。
配对表中的每个实体包含的信息如下:
Pairingreference
Sourcenetworkaddress
Destinationlogicalchannel
DestinationIEEEaddress
DestinationPANidentifier
Destinationnetworkaddress
Recipientnodcapabilities
Recipientframecounter
Secutitylinkkey
七.ZigBeeRF4CE应用层
两部分组成:
profilecomponent(CERC标准,远程控制)和application-specificcomponent
八.ZigBee中原语(primitive)的概念
Zigbee设备在工作时,各种不同的任务在不同的层次上执行,通过层的服务,完成所要执行的任务。
每一层的服务主要完成两种功能:
根据下层服务要求,为上层提供相应的服务;根据上层的服务要求,对下层提供相应的服务。
各项服务通过原语来实现。
每个事件由服务原句组成,它将在一个用户的某一层,通过该层的服务接入点(SAP)与建立对等连接的用户的相同层之间通信。
服务原语通过提供一种特定的服务来传输必要的信息,原语是一个抽象的概念,它们仅仅指出提供的服务容,而没有指出具体由谁来提供这些服务。
由代表其特点的服务原语和参数的描述来制定一种服务。
一种服务可能有一个或者多个相关的原语,这些原语构成了具体服务相关的执行命令。
原语通常分为如下:
Request:
请求原语,从I1用户发送到它的第N层,请求服务开始;
Indicate:
指示原语,从I1用户的第N层向I2用户发送,指出对于第I2用户有重要意义的部N层的事件。
Response:
响应原语,从I2用户向它的第N层发送,用来表示用户执行上一条原语调用过程的响应。
Confirm:
确认原语,由第N层向第I1用户发送,用来传递一个或者多个前面服务请求原语的执行结果。
9.网络层规
9.1NWK层服务规
NLDE网络数据实体,NLME网络管理实体
9.1.1NWK层数据服务
数据服务中包含的原语如下表所示:
1.NLDE-DATA.request
(
PairingRef,用这个参数来区分各个服务
ProfileId,
VendorId,
nsduLength,
nsdu,
TxOptions
)
2.NLDE-DATA.indication
(
PairingRef,
ProfileId,
VendorId,
nsduLength,
nsdu,
RxLinkQuality,
RxFlags
)
3.NLDE-DATA.confirm确认原语是在响应请求原语时产生的
(
Status(SUCCESS,INVALID_PARAMETER,NO_PAIRING,NO_RESPONSE,FRAME_COUNTER_EXPIRED)
PairingRef
)
节点间原语发送情况:
9.1.2NWK层管理服务
NLME-SAP支持的原语,如下面列表所示:
1.NLME-AUTO-DISCOVER.request
该原语由NLME层生成,允许应用请求NLME自动的处理接收到的discovery请求命令帧。
注意:
在自动discovery响应模式下,NLME不会通过NLME-DISCOVERY.indication原语通知应用层dciscovery请求命令帧到达。
1.1语义
NLME-AUTO-DISCOVERY.request
(
RecAppCapabilities,节点的应用能力
RecDevTypeList,节点支持的设备类型
RecProfileIdList,节点支持的profile标识
AutoDiscDurationNLME自动响应发现模式的时间
)
1.2产生时刻
该原语产生于本地应用实体,使得NLME进入自动响应发现模式。
该模式下,NLME根据原语中包含的信息决定是否响应或接受发现原语命令帧的请求。
如果节点收到的命令帧不是discoveryrequest,将会被丢弃。
1.3接收端影响
(1)收到NLME-AUTO-DISCOVERY.request请求之后,节点匹配原语中的设备类型列表,profile列表,如果找到一个匹配项,则继续等待来自同一个节点的下一个发现请求命令帧。
(2)如果第二个发现请求命令帧也匹配,NLME层产生一个发现应答命令帧,NLME层通过发送一个MSPS-DATA.request给MAC子层,来实现发现应答命令帧的发送(MSPS-DATA.request包含了NLME产生的发现应答命令帧)。
(3)NLME层收到MAC子层的MSPS-DATA.confirm之后,发送NLME-AUTO-DISCOVERY.confirm原语(状态为MSPS-DATA.request原语返回的状态)给对方的NLME层。
(4)如果收到的第二个发现请求命令是来自另外的节点,发送NLME-AUTO-DISCOVERY.confirm原语(状态为DISCOVERY_ERROR);
(5)如果匹配不成功,则丢弃这个请求信息,并做记录。
(6)如果在AutoDiscDuration时间围都没有发现有匹配的项,则NLME-AUTO-DISCOVERY.confirm原语(状态为DISCOVERY_TIMEOUT);
2、NLME-COMM-STATUS.indication
该原语由NLME层生成,NLME层通过该原语告知应用层通信的状态。
2.1语义
NLME-COMM-STATUS.indication(
Status,(SUCCESS,SECURITY_TIMEOUT,SECURITY_FAILUREoranythingfromtheMCPS-DATA.confirmprimitive)
PairingRef,
DstPANId,
DstAddrMode,
DstAddr)
2.2产生时刻
该原语伴随着NLME-DISCOVERY.response原语或者NLME-PAIR.response原语生成.如果是伴随NLME-DISCOVERY.response,则PairingRef应设置为oxff;如果是伴随NLME-PAIR.response,则PairingRef应根据NLME-PAIR.response的ProvPairingRef参数来设定。
2.3接收端影响
theapplicationisnotifiedofthestatusofatransmissionfollowinga.responseprimitive.
3、NLME-DISCOVERY.request
用于请求NLME向特定的感兴趣的设备发送discovery请求。
3.1语义
NLME-DISCOVERY.request
(
DstPANId,发现请求的目标的PAN标识符,这个值可以设置为0xffff来表示一个通配符(wildchild)。
DstNwkAddr,发现请求的目标的网络地址,这个值可以设置为0xffff来表示一个通配符。
OrgAppCapabilities,源节点的应用能力
OrgDevTypeList,源节点包含的设备类型列表
OrgProfileIdList,源节点包含的profile类型列表
SearchDevType,要发现的设备类型
DiscProfileIdListSize,DisProfileList参数中包含的profile标识符的数量
DiscProfileIdList,ZigBee联盟定义的一些profile列表
DiscDuration每个信道中潜在目标节点等待发现应答返回的最大MAC标志数量
)
3.2产生时刻
该原语由本地的应用层实体产生,发送给NLME层,用去请求一个发现操作。
3.3接收端影响
1)收到该原语,NLME产生一个发现请求命令帧,NLMe在每个信道上发送该帧,通过发送MCPS-DATA.request原语给MAC子层,请求MAC子层发送该帧。
2)如果MAC子层成功的传输该帧,NLME在DiscDuration参数时间等待接受发现应答命令。
如果收到的应答帧的设备类型匹配SearchDevType参数、且其中一个profile标识符匹配DiscProfileIDList参数中的至少一个,NLME将根据收到的这个应答命令创建一个新的节点描述记录(记录的容如下表)。
DiscDuration到期之后,NLME切换到另一个信道,重复相同的操作。
3)如果MAC子层传输信息失败(MCPS-DATA.request返回的status不是SUCCESS),NLME切换至下一个信道。
4)在所有可用的信道中传输的发现请求命令被称作“发现审查”,每一个发现审查最多执行nwkMaxDiscoveryRepetitions次,重复的间隔为nwkDiscoveryRepetionInterval.
5)如果在所有发现功能结束时存储的节点描述符的数量正好等于nwkMaxDiscoveryNodeDescriptors参数。
NLME发送NLME-DISCOVERY.confirm原语,该原语中的NodeDescList参数包含了所有节点描述的信息。
6)如果在所有发现功能结束时存储的节点描述符的数量超过了nwkMaxDiscoveryNodeDescriptors参数,NLME发送NLME-DISCOVERY.confirm原语,该原语中将status参数设为DISCOVERY_ERROR。
7)在发现进程的期间,如果存储的节点描述福的数量等于nwkcMaxNodeDescListSize,NLME发送NLME-DISCOVER.confirm原语,该原语中的NodeDescList参数包含了所有节点描述的信息。
8)如果在nwkMaxDiscoveryRepetitions结束时,没有节点描述符被存储,NLME发送NLME-DISCOVER.confirm原语,该原语中将status参数设为DISCOVERY_TIMEOUT.
4、NLME-DISCOVERY.indication
允许NLME告知应用层有发现请求命令被接收。
4.1语义
NLME-DISCOVERY.indication
(
Status,表明配对表是否能够存储潜在配对信息
SrcIEEEAddr,
OrgNodeCapabilities
OrgVendorId,
OrgVendorString,
OrgAppCapabilities,
OrgUserString,
OrgDevTypeList,
OrgProfileIdList,
SearchDevType,
RxLinkQuality通过MAC子层发送的发现请求命令帧的LQI值
)
4.2产生时刻
由NLME产生,发送给应用层,用于指示有发现请求命令被接收;如果NLME的配对表中有为该设备存储潜在配对连接的空间,该原语的status设为SUCCESS.
4.3接收端影响
接收到该原语时,应用层根据原语中的信息决定是否应答。
不管发现请否匹配节点的功能,应答的决定都要遵守这个规。
如果应用层决定应答,则根据发现请求帧中的IEEE地址和LQI发送发送NLME-DISCOVERY.response原语,该原语中包含了自身的设备类型以及接收到的NLME-DISCOVERY.indication原语中的状态信息。
如果应用层决定不应答,则不发送任何原语。
5、NLME-DISCOVERY.response
允许应用层请求NLME应答发现请求命令。
5.1语义
NLME-DISCOVERY.response
(
Status,
DstIEEEAddr,
RecAppCapabilities,
RecDevTypeList,
RecProfileIdList,
DiscReqLQINLME-DISCOVERY.indication中的LQI值
)
5.2产生时刻
由应用层生成,被发送至它的NLME层,用于响应NLME-DISCOVERY.indication原语
5.3接收端影响
接收到该原语,NLME生产一个发现响应命令帧,通过MAC子层在当前的信道中传递该信息。
当收到MCPS-DATA.confirm信息时,NLME发送NLME-COMM-STATUS.indication原语。
9.1.2.2配对
1.NLME-PAIR.request
应用层通过它请求NLME层与另外一个节点配对。
1.1语义
NLME-PAIR.request
(
LogicalChannel,
DstPANId,
DstIEEEAddr,
OrgAppCapabilities,
OrgDevTypeList,
OrgProfileIdList,
KeyExTransferCount
)
1.2产生时刻
由本地的应用层实体产生,发送至NLME层请求一个配对操作。
1.3接收端影响
收到该原语,NLME检查该项配对连接是否已经存在于实体的配对表当中。
如果存在,则更新配对表中的该项记录;如果不存在,NLME检查它是否有容量存储新的配对连接。
如果NLME没有空间,则发送的NLME-PAIR.confirm原语中,status设为NO_ORG_CAPACITY,不进行更多的处理。
NLME生成一个配对请求命令,在传输该帧之前,通过发送MLME-SET.request命令给MAC子层,将phyCurrentChannel交换到请求的信道。
最后发送MCPS-DATA.request原语将帧传送给MAC子层。
如果MAC子层传输失败,则更换到下一个信道,重复相同操作。
传输试图在每个可用的信道中进行,知道传输成功或者所有的信道都被尝试过。
如果传输任然不成功,NLME发送发送的NLME-PAIR.confirm原语中的status值为MAC子层返回的值。
如果MAC子层传输成功,NLME在nwkResponseWaitTime等待响应。
如果这段时间没有收到响应信息,NLME发送的NLME-PAIR.confirm中的status值为NO_RESPONSE,不进行更多的处理.
收到响应信息中status值不等于SUCCESS,则NLME发送的NLME-PAIR.confirm中的status值为收到的应答帧中的信息。
收到的响应星系中status值等于SUCCESS,则NLME创建一个新的实体记录或者更新已经存在的实体记录,并将其标记为零时的。
然后,NLME检测这个配对连接是否要求安全性:
如果不要求安全性,NLME将该配对连接从零时的变为活动的,并根据被创建或者更新的配对连接的配对表索引发送NLME-PAIR.confirm原语,status设为SUCCESS.
如果要求安全........待续
2NLME-PAIR.indication
允许NLME层通知应用层已接收到一个配对请求命令。
2.1语义
NLME-PAIR.indication
(
Status,
SrcPANId,
SrcIEEEAddr,
OrgNodeCapabilities,
OrgVendorId,
OrgVendorString,
OrgAppCapabilities,
OrgUserString,
OrgDevTypeList,
OrgProfileIdList,
KeyExTransferCount,被要求与这个配对发起者交换linkkey的发送者的编号。
ProvPairingRef,
)
2.2产生时刻
由NLME产生,并发送给应用层,指示有请求信息被接收到。
Status用于标识该设备网络层的配对表是否有容量。
2.3接收端影响
接收到该原语,应用层根据原语提供的信息决定怎样应答。
ProvPairingRef参数指示了这个配对连接将被创建的下一个空闲配对表实体。
如果这个参数等于0xff,则表示在配对表中没有空闲的实体,应用层发送的NLME-PAIR.response原语中status为NO_REC_CAPACITY.
如果应用层允许配对,则应答消息中status为SUCCESS;不允许配对,则应答消息中status为NOT_PERMITED.
3NLME-PAIR.response
允许应用层请求NLME响应一个配对请求命令
3.1语义
NLME-PAIR.response
(
Status,
DstPANId,
DstIEEEAddr,
RecAppCapabilities,
RecDevTypeList,
RecProfileIdList,
ProvPairingRef,
)
3.2产生时刻
由应用层产生,发送给他的NLME层。
用于响应NLME-PAIR.indication.
3.3接收端影响
收到该原语,如果Status参数等于SUCCESS,NLME通过指定该配对连接源端的网络地址,根据ProvPairingRef参数更新配对表中的实体。