zigbee入网过程分析(mac层分析),附Ubiqua抓包

本文详细解析了ZigBee设备入网流程,从beaconrequest到associationresponse,再到deviceannounce,直至basiccluster信息读取,涵盖了普通开关、插座、门锁、灯具及低功耗传感器设备的入网过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

普通开关、插座、门锁设备入网流程一般到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设备到此入网结束

 

 

 

 

 

 

<think>好的,用户想了解ZigBee组网的相关信息或解决方案,特别是配置教程或搭建指南。首先我需要回顾ZigBee的基本概念,确保自己理解正确。ZigBee是基于IEEE 802.15.4标准的低功耗局域网协议,主要用于低速率、短距离的无线通信,适合物联网设备。 接下来,用户可能需要知道组网的步骤。通常,ZigBee网络包含协调器、路由器和终端设备三种角色。协调器负责启动网络,分配地址,是网络的核心。路由器扩展网络覆盖,终端设备则是低功耗的传感器等。需要详细说明每个设备的作用和配置方法。 然后要考虑网络拓扑结构,比如星型、树型和网状网络。不同拓扑的优缺点和应用场景需要解释清楚,比如网状网络的高可靠性适合工业环境,而星型结构简单适合家庭使用。 硬件选择方面,用户可能需要推荐具体的模块,比如TI的CC2530或Silicon Labs的EFR32MG系列。这里要确保提到的模块支持ZigBee 3.0,因为这是较新的标准,兼容性更好。 软件配置部分,可能需要使用Z-Stack协议栈,特别是针对协调器的初始化设置,比如PAN ID、信道选择。需要给出具体的代码示例或配置步骤,比如在Z-Stack中如何设置信道掩码和PAN ID,以及编译下载的过程。 设备入网流程也很重要,终端设备如何通过按键或指令加入网络,用户可能需要具体的操作步骤,比如按住按钮触发入网,或者使用AT命令。这里需要确保步骤清晰,避免遗漏关键点。 网络测试部分,用户需要验证设备是否成功入网,数据通信是否正常。可能需要介绍使用串口调试工具查看日志,或者使用网络抓包工具如Ubiqua分析数据包,确保网络运行正常。 在常见问题中,信号覆盖不足、设备无法入网、数据丢包是常见问题,需要给出解决方案,比如增加路由器或调整信道。同时,功耗优化方法也需要提及,比如终端设备的睡眠模式设置。 最后,生成的相关问题需要覆盖协议对比、故障排查、安全加密、与WiFi蓝牙的干扰、大规模部署等,这些都是用户可能进一步感兴趣的方面。需要确保每个问题都有针对性,帮助用户深入理解。 检查是否有遗漏,比如是否解释了ZigBee的频段,2.4GHz全球通用,以及不同地区的信道差异。另外,安全配置如设置网络密钥可能也需要提到,确保网络的安全性。 现在需要把以上内容结构化,按照用户的要求,使用中文,正确应用LaTeX格式,添加引用标识,并在最后生成相关问题。注意代码块要用正确的语法,比如协调器的初始化代码示例。同时确保每个步骤清晰,语言简洁,符合系统级指令的要求。</think>### ZigBee组网配置指南 ZigBee是基于$IEEE\ 802.15.4$标准的低功耗无线通信技术[^1],支持星型、树型和网状网络拓扑。以下是网络搭建核心步骤: #### 一、硬件准备 1. **设备角色定义** - **协调器**:负责创建网络,分配16位短地址,存储设备表 - **路由器**:中继数据包,扩展网络覆盖范围 - **终端设备**:低功耗传感器节点(如温湿度传感器) 2. **推荐硬件** ```python # 常用ZigBee模块配置参数示例 modules = { "TI CC2530": {"频段": "2.4GHz", "发射功率": "4.5dBm"}, "EFR32MG13": {"协议": "ZigBee 3.0", "内存": "256KB Flash"} } ``` #### 二、网络配置流程 1. **协调器初始化** 使用Z-Stack协议栈配置参数: ```c // Z-Stack协调器初始化代码片段 zgConfig = { .panID = 0x1234, // 网络标识符 .channelMask = 0x02108800,// 信道11-14 .securityLevel = 5 // AES-128加密 }; ZDO_StartDevice(0, &zgConfig); ``` 编译后通过JTAG/SWD接口烧录至协调器模块[^2] 2. **设备入网流程** - 终端设备上电后发送$Beacon\ Request$ - 协调器响应$Beacon\ Frame$包含网络参数 - 完成$Association$过程后建立父子关系 $$网络容量公式:N_{max} = \sum_{k=0}^{L_{max}} C_k \quad (C为子节点最大数量)$$ #### 三、网络优化建议 1. **信道选择** 使用$Wi-SUN$工具扫描2.4GHz频段干扰: ```bash # 信道质量检测命令示例 zbstumbler -d /dev/ttyUSB0 ``` 优先选择干扰最小的信道(默认信道11/20/26) 2. **路由优化** 采用$Cluster-Tree+$混合路由算法: - 父节点维护$Routing\ Table$ - 使用$RSSI\propto \frac{1}{d^2}$进行链路质量评估 #### 四、常见问题排查 | 现象 | 检测方法 | 解决方案 | |-------------|---------------------------|------------------------| | 设备无法入网 | 检查协调器PAN ID一致性 | 复位ZigBee协议栈 | | 数据丢包 | 抓包分析MACACK响应 | 增大NWK_MAX_DATARETRIES| | 高延迟 | 监控路由跳数$Hop\ Count$ | 增加路由器节点密度 |
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值