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

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

目录

1 前言

2 相关数据

2.1 DevAddr

2.2 NwkSKey

2.3 AppSKey

3 OTAA

3.1 入网准备

1)DevEUI

2)AppEUI(JoinEUI)

3)AppKey

3.2 Join-Request

3.3 Join-Accept

1) 什么是DR

2) 命令解析

3)加密

3.4 NwkSKey/AppSKey计算

4 ABP

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

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

MHDR作为帧头,MIC作为校验码,已在《LoRaWAN协议-MAC帧格式详解》做出详解分析

AppEUI & DevEUI:入网请求命令中会携带这两个数据,服务器收到命令后,会通过该数据决定是否允许设备入网。

DevNoce:每次请求时,该值设定为随机值。服务端会持续记录近段时间的DevNoce,如果同一个AppEUI的DeviNoce之前有重复,服务端会自动过滤Join-request命令。

MIC校验码:唯一需要注意的是,其值是通过AppKey作为密钥计算的,MIC取AES运算后的前4字节。

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

3.3 Join-Accept

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

1) 什么是DR

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

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

2) 命令解析

MHDR/MIC和Join-Request原理一样,这里就不做分析了

JoinNoce:由服务端提供的随机值,该值唯一的作用就是计算NwkSKey和AppSKey

NetID:网络ID,同时也用于计算NwkSKey和AppSKey

DevAddr:分配给终端设备的地址

DLSettings

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

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

RXDealy:下行RX1窗口开启的延时时间,按标准是默认1s

CFLIST: 可选字段,用于信道分配,后续单独文章说明

3)加密

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

3.4 NwkSKey/AppSKey计算

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

4 ABP

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

✨ 相关作品

阝的笔顺(笔画顺序)汉字阝的笔顺动画
Bet体育365第二次提款要多久

阝的笔顺(笔画顺序)汉字阝的笔顺动画

📅 10-12 👁️‍🗨️ 8727
如何保存web文件图片
Bet体育365第二次提款要多久

如何保存web文件图片

📅 10-28 👁️‍🗨️ 1965
首頁〉成語檢索〉正文〉[石破天驚]
365bet官网是多少

首頁〉成語檢索〉正文〉[石破天驚]

📅 10-10 👁️‍🗨️ 5791