我是靠谱客的博主 朴素板凳,最近开发中收集的这篇文章主要介绍zigbee入网过程分析(mac层分析),附Ubiqua抓包1.beacon request2.beacon3.association request 4.data request 5.association response6.transport key7.device announce8.active endpoints request9.active endpoints response10.simple descriptor request11.simple descriptor res,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

普通开关、插座、门锁设备入网流程一般到basic就结束了;灯到identity结束;低功耗传感器设备一般到IAS zone结束。设备入网流程如下:

1.beacon request

由endpoint发出,请求入网,设备一般会全信道扫描找网。

beacon request包括:

  • 帧头(Header)
  • 负载(Payload)
  • 帧尾(Footer)

1.1 帧头(Header)

由帧控制域(frame control)、帧序列号(sequence number)、地址域(addressing fields)组成

1.1.1 帧控制域(frame control)包含了基本的帧信息,长度为16bit:

比特0~2是帧类型(frame type):0b000、0b001、0b010、0b011分别表示信标帧、数据帧、应答帧、命令帧,其他值预留。

比特3是安全使能标志(security enabled):1表示对该帧使用安全机制,0表示不使用安全机制。

比特4是后续帧控制位(frame pending):1表示后续还有更多的数据帧要发送给接收设备,0表示没有。

比特5是应答标志(ack request):1表示该帧需要应答,0表示该帧不需要应答。

比特6是同一PAN 网络标志(intra PAN):1表示当前帧是在同一PAN范围内,只需要目的地址与源地址,而不需源PAN标识符;0表示当前帧不在同一PAN范围内,不仅需要目的地址与源地址,源PAN ID与目的PAN ID均需要

比特10~11表示目的地址模式(destination addr mode):0b00表示不存在PAN ID 和地址域;0b01是预留值;0b10表示后面的地址域为16位短地址;0b11表示地址域为64位扩展地址;

比特14~15表示源地址模式(source addr mode):0b00表示不存在PAN ID 和地址域;0b01是预留值;0b10表示后面的地址域为16位短地址;0b11表示地址域为64位扩展地址;

1.1.2 帧序列号(sequence number)

用于区分相继发送的帧,由该序号可知该帧是重传的帧还是一个新的帧。

对于需要应答帧的情况,规定应答帧的序列号和所应答的帧的序列号相同,这样就能知道应答帧所对应的对象。

设备需要维护两个sequence number,一个用于becon包的序列号BSN,一个用于数据帧、命令帧和应答帧的序列号DSN。

每发送一个对应的帧,DSN或者BSN都会增一,如果超过最大值就变成全零值。

1.1.3 地址域(addressing fields)

分为四部分:目的PAN ID、目的地址、源PAN ID、源地址

这些域的长度与帧控制域中对应子域的取值有关

  • 如果(destination addr mode)是00,那么目的PAN ID和目的地址不存在
  • 如果是10,则目的PAN ID标识存在,目的地址是16位短地址
  • 如果(intra PAN)是1,那么源PAN ID与目的PAN ID相同,不需要携带源PAN ID。

地址域后面是可选的附加安全帧头,如果不采用安全机制,不需要携带此帧头,否则根据所采用的安全机制的具体方式,器长度可能为5、6、10、14字节

1.2 负载(Payload)

长度可变,具体内容由帧类型决定

1.3 帧尾(Footer)

是帧头和负载数据的16位CRC校验值

2.beacon

coordinator在接收到endpoint发送的beacon request帧后发出 beacon帧,是一种特殊的帧,只能由coordinator发送,携带网络相关的信息,用于通告网络信息,以便其他设备加入网络或者了解网络的情况,并且可以用于维护网络通信的同步。

其中mac payload包括:

  • 2字节的超帧描述(super frame specification)
  • 保护时隙域(GTS Fields)
  • 未处理地址区域(Pendling Address Filelds)
  • beacon payload

2.1 超帧描述(super frame specification)

2.1.1 信标顺序(Beacon Order)字段用于指定信标的传输间隔;BI(Beacon Interval)计算公式如下,BO代表信标顺序的值

  • 0≤BO≤14: BI = aBaseSuperframeDuration * 2BO
  • BO=15:则协调器不应发送信标帧;但是在收到信标请求命令时即使BO=15仍然可以发送信标帧

2.1.2 超帧顺序(Superframe Order)字段用于指定超帧的有效时间,包括信标帧传输时间;协调器只能在超帧活动期间与其PAN进行交互;SD(Superframe Duration)计算公式如下,SO代表超帧顺序的值

  • 0≤SO≤BO≤14: SD = aBaseSuperframeDuration * 2SO, 
  • SO=15:则在发送信标之后超帧不应该是活动的

2.1.3 CAP时隙(Final CAP Slot)字段用于指定CAP使用的最终超帧时隙;CAP的持续时间应≥aMinCAPLength;

2.1.4 电池寿命延长(Battery Life Extension)字段,如果在CAP期间发送到信标设备的帧需要在信标的IFS周期之后的第六个完全退避时间段内或之前开始,应设置为1

2.1.5 PAN协调器(PAN Coordinator)字段,当PAN协调器正在发送信标帧时设置为1

2.1.6 关联许可(Association Permit)字段,当macAssociationPermit设置为TRUE时(即协调器正在接受PAN上的关联)应设置为1; 如果协调器当前不接受其网络上的关联请求,该字段应设置为0

2.2 保护时隙域(GTS Fields)

2.2.1 GTS规范字段(GTS Specification)字段格式:

2.2.1.1 GTS描述符计数(GTS Descriptor Count)字段指定了包含在信标帧的GTS列表字段中的3个八位字节GTS描述符的数量。如果该子字段的值大于零,则允许CAP的大小低于aMinCAPLength以适应由包含子字段引起的信标帧长度的临时增加。如果该子字段的值为零,则不存在信标帧的GTS方向字段和GTS列表字段

2.2.1.2 GTS许可(GTS Permit)字段,当如果macGTSPermit设置为TRUE时(即PAN协调器正在接受GTS请求)应设置为1

2.2.2 GTS方向(GTS Directions)字段格式:

2.2.2.1 GTS方向掩码(GTS Directions Mask)字段包含一个掩码,用于标识超帧中GTS的方向
掩码中的最低位对应于信标帧的GTS列表字段中包含的第一个GTS的方向,其余部分依次按照顺序指示

如果GTS是仅接收GTS,则每个比特应设置为1;如果GTS是仅发送GTS,则每个比特应设置为0

注意:GTS方向是相对于设备的数据帧传输方向来定义的

2.2.3 GTS列表GTS List)字段(的大小为信标帧的GTS Specification 中 GTS Descriptor Count 指定的值,包含了正在维护的GTS的GTS Descriptor List

GTS描述符的最大数量应限制为7

每个GTS描述符的长度为3 bytes,其格式如下:

2.2.3.1 设备短地址(Device Short Address)字段包含了GTS描述符所对应的设备的短地址

2.2.3.2GTS起始时隙(GTS Starting Slot)字段包含GTS开始的超帧时隙

2.2.3.3 GTS长度(GTS Length)字段包含GTS活动的连续超帧时隙的数量

2.3 未处理地址区域(Pendling Address Filelds)

2.3.1 待处理地址规范(Pending Address Specification)字段格式如下:

2.3.1.1 处理短地址数量(Number of Short Addresses Pending)字段表示信标帧的地址列表字段中包含的短地址的数量

2.3.1.2 待处理扩展地址数量(Number of Extended Addresses Pending)字段表示信标帧的地址列表字段中包含的扩展地址的数量

2.3.2 待处理地址列表(Pending Address List)字段的大小由信标帧的待处理地址规范(Pending Address Specification)字段中指定的值确定,指定了当前具有协调器待处理消息的设备的地址列表

注意: 地址列表不应包含广播短地址0xffff

待处理地址的最大数量为7,可以包括短地址和扩展地址;所有待处理的短地址应首先出现在列表中,然后是任何扩展地址

如果协调器能够存储七个以上的事务,它应以先到先得的方式在其信标中指示它们,确保信标帧最多包含七个地址

2.4 Beacon Payload

payload部分数据将传输给高层,具体细节解析再后续分析。

主要查看四点,如下图红色方框内,都为yes则网关处于可以接收router和end device设备入网。

3.association request

关联请求入网,由设备发出,此时设备还没有分配短地址,因此在MAC层显示的原地址为设备长地址。


4.data request

收到Coordinator的MAC层确认后,Endpoint发送一个Data request请求Coordinator给其分配16位网络地址。


5.association response

可以查看到给设备分配的短地址。(当Coordinator接收到Data request后经NWK层的算法为其分配一个唯一的网络短地址,然后向Endpoint发送一个包含些短地址的包,这个包是通过MAC地址发送的)

6.transport key

传输link key

7.device announce

一般为设备广播两次,网关广播两次。此时设备已经入网,但是网关还没有识别是什么设备。

  1. 常电供电设备广播:

8.active endpoints request

网关向设备发出的 endponints 请求

9.active endpoints response

设备给网关回应的 endponints 数

10.simple descriptor request

网关请求设备的一些属性或者特性的描述,使网关去判断这是什么设备。

11.simple descriptor response

设备回应,告诉网关该设备的属性等信息。(每个endpoint都会分别查询)

12.basic:read attributes

网关请求设备的 basic cluster 相关信息

13.basic:read attributes response

设备回应,告诉网关该设备的 basic cluster 相关信息

on/off设备到此入网结束

 

 

 

 

 

 

最后

以上就是朴素板凳为你收集整理的zigbee入网过程分析(mac层分析),附Ubiqua抓包1.beacon request2.beacon3.association request 4.data request 5.association response6.transport key7.device announce8.active endpoints request9.active endpoints response10.simple descriptor request11.simple descriptor res的全部内容,希望文章能够帮你解决zigbee入网过程分析(mac层分析),附Ubiqua抓包1.beacon request2.beacon3.association request 4.data request 5.association response6.transport key7.device announce8.active endpoints request9.active endpoints response10.simple descriptor request11.simple descriptor res所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部