LoRaWAN 设备入网流程详解(OTAA和ABP)

本文详细介绍了LoRaWAN中设备的入网过程,包括DevAddr、NwkSKey和AppSKey的作用,以及OTAA(空中激活)和ABP(本地激活)两种方式。重点讲解了OTAA中的Join-Request和Join-Accept命令,以及Join-Accept命令中的加密机制。

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

目录

1 前言

2 相关数据

2.1 DevAddr

2.2 NwkSKey

2.3 AppSKey

3 OTAA

3.1 入网准备

3.2 Join-Request

3.3 Join-Accept

4 ABP


Lora LoraWAN教程

1 前言

在LoRaWAN协议中,设备都需要入网激活。入网成功后,终端设备会被分配一个唯一地址(DevAddr)。同时会生成加密密钥NwkSKey和AppSKey,用于双方后续通信命令的加密和校验。

入网方式有2

空中激活OTAA

通过入网命令流程来激活设备,并获取DevAddr,NwkSKey以及AppSKey。

本地激活ABP

DevAddr,NwkSKey以及AppSKey终端设备和服务器提前约定好,保存在各自的本地中。无需在通过入网命令来激活。

2 相关数据

终端设备激活后,需在本地保存好如下数据:DevAddr,NwkSKey以及AppSKey,用于入网后的上下链路通信。

2.1 DevAddr

32bit组成,用于标识当前网络中的终端设备。是在入网过程中由网络服务器分配。

2.2 NwkSKey

网络会话密钥,用于加密FRMPayload以及MIC校验。

PS:加密和MIC校验过程参考专栏《LoRaWAN协议-MAC帧格式详解》一文。

2.3 AppSKey

应用会话密钥,用于加密FRMPayload。

PS:加密过程参考专栏《LoRaWAN协议-MAC帧格式详解》一文

3 OTAA

https://i-blog.csdnimg.cn/blog_migrate/84ae9a1db98e090511eee18ded5fdafc.png

  • 入网前,双方需提前约定好AppEUI(JoinEUI),DevEUI和APPKey。
  • 终端设备和服务器通过命令Join-Request和Join-Accept来进行入网流程,最终节点设备会获取到DevAddr,NwkSKey和AppSKey完成激活。
  • 终端设备收到命令Join-Accept后,通过该命令中携带的数据,以AppKey作为密钥,通过AES128加密计算出NwkSKey和AppSKey。
  • Join-Request命令帧未加密,而Join-Accept命令帧有加密。

3.1 入网准备

入网前终端设备和服务器端需提前约定好AppEUI(JoinEUI),DevEUI,APPKey。

1)DevEUI

作为EUI64地址空间中的一个全局终端设备ID,唯一的设备标识。建议设备出厂前就固定化到存储器中。

2)AppEUI(JoinEUI)

在不同版本名字不一样,AppEUI或者JoinEUI。作为应用标识,对设备来说并不是唯一的。同一设备入网不同的后台使用不同的应用服务器,就可以使用AppEUI来区分了。

3)AppKey

作为AES-128加密的密钥,在入网过程中主要有三个作用:

  • 用于入网命令MIC校验码计算。在《LoRaWAN协议-MAC帧格式详解》一文中有提到,LoRaWAN帧结构中MIC校验是由NwkSkey作为密钥计算出来的。但入网还未结束,设备终端和服务器都还未获取到NwkSkey,此时入网命令Join-request和Join-accept的MIC校验码暂时通过AppKey来计算。
  • 用于加密衍生出NwkSkey和AppSKey。
  • 用于加密命令Join-Accept。(命令Join-Request未加密)。

3.2 Join-Request

由终端设备主动发送命令Join-Request开始入网请求。

https://i-blog.csdnimg.cn/blog_migrate/f6e4d2fdb7e3ef8bda620879b5a20197.png

  • MHDR作为帧头,MIC作为校验码,已在《LoRaWAN协议-MAC帧格式详解》做出详解分析。
  • AppEUI & DevEUI:入网请求命令中会携带这两个数据,服务器收到命令后,会通过该数据决定是否允许设备入网。
  • DevNoce:每次请求时,该值设定为随机值。服务端会持续记录近段时间的DevNoce,如果同一个AppEUI的DeviNoce之前有重复,服务端会自动过滤Join-request命令。
  • MIC校验码:唯一需要注意的是,其值是通过AppKey作为密钥计算的,MIC取AES运算后的前4字节。

https://i-blog.csdnimg.cn/blog_migrate/1ee02ca81eeae206c9b5bc1d2f20196f.png

  •       入网请求命令只做了数据校验,并未加密。

3.3 Join-Accept

服务器接收到命令后,匹配后台的AppEUI/DevEUI,如果允许入网则会回复Join-Accept。

1) 什么是DR

LoRaWAN协议-物理层(PHY)详解》一文中已经分析过了,LoRaWAN协议采用LoRa调制作为PHY层,其调制配置参数除了扩频因子SF和带宽BW,其他参数在协议中都是固定不变的。协议规定DR0~DR15,在不同区域使用不同的SF,BW组合,即表示不同的调制配置,比如:

https://i-blog.csdnimg.cn/blog_migrate/2f9827afb8b8004b22046c50c49b7308.png

对用户来说,最直观的理解就是终端设备和网关需要配置相同的DR才能正常通信,不同的DR意味着不同的速率以及传播距离

2) 命令解析

https://i-blog.csdnimg.cn/blog_migrate/8f0d160ac0b797a236c9b966183454e3.png

  • MHDR/MIC和Join-Request原理一样,这里就不做分析了。
  • JoinNoce:由服务端提供的随机值,该值唯一的作用就是计算NwkSKey和AppSKey。
  • NetID:网络ID,同时也用于计算NwkSKey和AppSKey。
  • DevAddr:分配给终端设备的地址。
  • DLSettings。

https://i-blog.csdnimg.cn/blog_migrate/5d4d877866e4a367d11ddb8d3bfd2b1a.png

        a. RX1DROffset:服务端告知节点,下行RX1窗口的DR和上行的DR偏差,一般默认0。

        b. RX2DataRate:服务端告知节点,下行RX2窗口的DR(0~15)。

  • RXDealy:下行RX1窗口开启的延时时间,按标准是默认1s。
  • CFLIST: 可选字段,用于信道分配,中国 470-510MHz 不支持 LoRaWAN 的 JoinAccept 命令中携带可选 CFlist。如果 CFlist 字段非空,那终端得忽略它。

3)加密

Join-Accept命令帧使用AppKey做为密钥,AES128加密算法,ECB模式进行加密。加密作用域如下:

https://i-blog.csdnimg.cn/blog_migrate/8a764d2857c1e65ce4841c076ff9ece7.png

NwkSKey/AppSKey计算

https://i-blog.csdnimg.cn/blog_migrate/68dcdf70b0e3dfafb6aa85126a66a34f.png

  • 使用AppKey做为密钥。
  • 使用到JoinNonce,NetID,DevNoce字段数据进行AES128计算得出NwkSKey和AppSKey。

4 ABP

        本地激活方式是直接连入网络,终端设备和服务器约定好DevAddr,NwkSKey和AppSKey,这样就省去了Join-Request和Join-Accept命令过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值