详解LoRaWAN协议

面包板社区 2021-07-26 17:36

作者:小炉灶

LoRaWAN协议定义了使用LoRa的MAC层规范,处在协议应用层与物理层中间的实现规范。LoRa没有开放的规范化物理层协议,而LoRa物理模块的接口上很多参数都可以进行配置,LoRaWAN同时对一些数据发送格式做了相应的限制。

物理层消息结构
上行带有CRC,而下行没有。

层间组包格式


简要参数说明:DevAddr 为设备地址(包含网络地址信息),Fport复用port域,如果为0表示有效负载为MAC命令,此时FOptsLen为0;FOptsLen:options长度为,FCnt为帧计数;MIC加密完整性检查包含MHDR和FHDR FPort和 FRMPayload;MType为消息类型,指示上下行消息及是否是需要Confirm的消息,如果是confirmed消息则需要回复ACK。Major是LoRaWAN的版本号;ADR 和 ADRAckReq提供服务端用于自适应数据速率控制;ACK确认最新的帧信息;FOpts用于在发送数据时同时携带MAC Command;CID为MAC 命令ID,Args为命令参数;FRMPayload为使用key长128比特AES加密的有效数据。MAC header的最小长度为13字节,最大为28字节;上行没有目标地址,而下行没有源地址。上图不是协议上原始的消息结构图,协议结构图如下,对于每个元素的细节展开参考规范LoRaWAN-v1.1.pdf RFU 填充为0,需要省略的单元MType亦即message type依赖在相应版本Major下的消息类型。FPort如果payload不为空,则FPort必须存在如果FRMPayload只有MAC commands则此域为0。1-223用于上层应有端口,224用于MAC协议测试,225-255留给后续协议扩展。

三种终端类型
三种终端类型,classA、classB、classC,其耗能和数据延时比较如下,而classB和classC的终端可支持组播方式。

ClassA类型终端收发方式如下: 在上行发送后,Receive_Dealy误差+/-20微秒时刻进行下行接收,如果网络在RX1和RX2都发送给同一终端数据,则需要发送同帧数据。终端如果在RX1成功接收到检查成功的数据,则不可再在RX2继续接收数据。RX1的频率和速率和上行发送的频率和速率满足一定的函数关系式(在相关流程中说明),在缺省情况下第一个窗口的数据传输速率和上行发送相同,第二个窗口则采用固定可配置的频率和速率,可以通过MAC Command进行配置。窗口长度至少足够检测下行的preamble,如果检测到下行的preamble,则需要接收到相应frame解调结束。网络需要在RX1或RX2窗口边界才能开始发起数据。终端在前一次上行发送成功后如果没有正确解码到下行数据并且RX2窗口仍未超时的情况下,不可再次出发上行发送。

ClassB类型的终端,在支持CLassA类型的接收方式之外,还需周期性监测网络下行的ping slot,而为了实现周期性的同步,引入beacon来携带时间信息,终端可以利用beacon(beacon周期性128秒进行发送,ping slot周期可配置)进行时、频估计,并作出相应调整。ping slot和Beacon的时序关系如下,Beacon由网关周期性发送。Beacon携带4个字节时间信息,单位为秒(Sunday 6th of January 1980 的0点开始计时),同时携带还有GwSpecific及CRC等。ClassA、ClassB转换通过ClassB比特位来进行。ClassB: 设置为1时,告诉网络服务器端,设备切换到ClassB模式。而在ClassA模式下,为保证能够尽快接收到下行数据,引入Frame Pending bit Fpending inFCtrl只用在下行,表示下行仍有数据发送,需要终端尽快发送上行以打开下行接收窗口。Beacon丢失后可以维持2小时,此时终端根据自身条件维护时间,在此种情况,需要扩展ping和beacon的接收窗口来补偿频率及时间补漂移。对于移动中的终端,GwSpecific 可以携带GPS坐标信息,由于classB需要网关发送ping消息,网络需要知道距离终端最近的网关位置。两种方式来保证设备部丢失:周期性上行发送以或是小区变化时的上行发送,前者不需要检测gateway specific,而后者需要通过此ID来判断小区变化。beacon和ping slot亦可使用跳频发送。

Beacon的周期性发送方式及时序关系如下,DeviceTimeReq可以用于请求网络时间,加快Beacon的发现过程。

ClassC模式的工作流程如下,支持ClassC的终端需要支持ClassA,不需支持classB,ClassC终端在发送时刻以外尽可能长时间处在下行接收状态。ClassA和ClassC的模式转换通过MAC命令来进行(DeviceModeInd 和 DeviceModeCnf)。

消息类型
消息类型,message type的类型如下,消息中主要指示负载数据类型或者Join流程消息类型。

Conifrmed Data需要接收端进行相应数据包的ACK应答,而Uncofirmed则是无应答要求数据。Joint / Rejoint程序用于OTA激活程序处理。数据消息可以传输MAC指令或应用层数据(可合并一起发送)。Confirmed消息是需要进行ACK确认的消息。Proprietary专用消息可用于非标准消息,但必须和标准消息不冲突,当终端或服务端不能识别相应消息时刻,可以选择丢弃该消息。

Joint request包含JoinEUI DevEUI和DevNonce(2个字节,上电时值为0,每次发送Joint-request值加一,掉电时需要保留在NVM中non-volatile memory),网络跟踪DevNonce值的变化,如果没有改变的Joint-Request将作为无效消息丢弃。Joint-Request消息无需加密。

Join-accept如果网络允许设备接入则会回复这条消息。使用跳频技术的随机接入,Join-Accept接收和ClassA下行接收类似,不过RX1和RX2的delay为JOIN_ACCEPT_DELAY1和JOIN_ACCEPT_DELA2由物理层特性定义。在join-accept成功后,需要发送RekeyInd、RekeyConf进行交互开启新的加密模式。如果不允许终端接入,则网络不会给终端任何回复。joint-accept中包含信息:JoinNonce、NetID、DevAddr、DLSettings、RxDelay、CFList。home_NetID为设备归属网络的ID,属于NetID一类。DLsettings包含OptNeg,指示网络为1.0或是1.1,unset为1.0版本,set为1.1及其后续版本,包含RX1DRoffset(第一个接收窗和上行速率关系),和RX2Data rate(速率大小索引)。JoinNonce用来获取FNwkSIntKey,SNwkSIntKey, NwkSEncKey、AppSKey。JoinNonce每次处理Join-accept则加一。Join-Nonce需要一直累加,并且终端判断该值不大于存储值时认为消息无效。NetID24比特,当为私人或实验网络时,分配地址如下:

Rejoin的流程和Join-request类似,同样回复join-accept。JoniReqType分为0xFF Join-request,0x00Rejoin-request type0,0x01 Rejoi、n-request type1,0x02:Rejon-request type2。Rejon-accept用于网络间的切换,维持或改变设备在已有网络上的地址。Rejoin-request,0包含NetID+DevEUI,重置所有无线相关参数。type1包含JoinEUI+DevEUI,作用和Joint-request类似,type3包含NetID+DevEUI,维护或改变设备地址,seesion秘钥,帧号等,无线资源参数不变化。

设备激活
Join流程的作用是用于终端激活,终端激活的作用,是当设备刚开始工作时完成在相应网络初始化的过程,没有显式定义的去激活过程,只能通过应用层处理。在终端接入LoRaWAN网络进行有效服务之前,需要进行激活。激活的方式有两种OTAA(Over-The-Air-Activation)和ABP(Activation By Personalization)。激活过程需要完整一些信息确认,DevAddr占用32比特,7bit用于指示网络,25比特指示终端在网络中的地址ID。得到的NwkKey、AppKey是用于产生终端完整保护及数据加密key的基础,LoRaWAN采用AES128比特算法作为数据加密基础。激活的流程参考

Join处理流程

加密及数据完整性保护
LoRaWAN为了提高数据的安全性、可靠性,提供了加密和完整性保护MIC。Device root keys (AppKey & NwkKey) 为IEEE 802.15.4 中AES-128比特的密钥,在OTAA模式下,NwkKey 用来产生FNwkSIntKey,SNwkSIntKey和NwkSEncKey,而AppKey用来产生AppSKey。在v1.0版本中AppSKey亦是由NwkKey产生的。只支持ABP模式的设备不需要NwkKey和Appkey。JSIntKey和JSEncKey也是从NwkKey来得到,前者用于Rejoin-Request type1和对应Join-Accept回复的MIC,后者用于加密Rejoin-Request触发的Join-Accept。在激活之后,终端可以得到的信息: DevAddr NwkSEncKey SNwkSIntKey FNwkSIntKey及AppSKey。DevAddr用于指示终端在当前网络中的身份,由于AddrPrefix和NwkAddr组成,AddrPrefix由网络服务器身份NetID获取。DevAddr共占用32比特,其中有7:24比特用来表示AddrPrefix,其他表示NwkAddr。AddrPrefix有Lora联盟分配,私有网络和实验网络可以用7比特b0000000和b0000001表示。如果使用OTAA方式,需要采用join程序进行交互,joint-request用于发起请求,而join-accept用于网络应答,同时终端可以得到NwKkey和AppKey,在ABP模式下不需要通过Join流程来完成信息交互,设备端本身存有所需的DevAddr、FNwkSIntKey, SNwkSIntKey, NwkSEncKey 和AppSKey。OTAA模式下需要终端携带JointEUI、DevEUI,前者是网络中设备标识,而后者是设备全球唯一标识。当ABP模式设备接入网络时,首先应当触发ResetInd/ResetCnf流程。而在OTAA模式设备上需要完成Joint程序后出发RekeyInd、RekeyConf流程(只在OTA模式及1.1的网络中支持,用于确认密钥更新)。Key的产生过程在V1.0和V1.1中略有差别,具体参考如下

V1.0版本中的产生方式

V1.1版本中的产生方式


MAC Command处理
LoRaWAN的MAC命令提供了有效定制终端参数的方式,如LinkCheckReq可以用于终端测试其连接情况,其他的命令都是提供服务端使用,这些命令可以用于控制的终端的数据速率、功率输出、数据重传次数,接收周期、接收窗口等配置参数;同时还有一些命令可以用于请求终端报告电池、接收质量等相关信息。MAC指令可以作为有效的数据内容携带在FRMPayLoad里面同时FPort设置为0,也可以与数据共存,放置在FOpts中,此种情况下最长15字节。每个ID(command identifer)占用1个字节。MAC指令按照接收顺序处理回复,同一帧收到的MAC指令必须在同一帧内进行回复。优先发送MAC指令回复在FOpts和FRMPayload,如果超过FRMPayload长度,则只发送可发长度,网络服务端将对为回复的MAC指令进行重新发送。网络计算MAC指令回复内容FRMPayload Size的方式:在ADR为0是认为最大FRMPayload为最低速率,ADR比特为1时网络认为最大Payload size为上次上行发送速率对应的大小。设备只对接收到的MAC命令做一次回复,如果消息丢失,网络需要重发命令。网络在接收到新的上行而没有对MAC命令回复时决定是否需要重发命令,由于RxParamSetupReq、RxTimingSetup和DlChannelReq影响下行信道参数,他们的ACK方式有所不同。网络需要在RX1、RX2窗口回复终端的MAC命令,如果终端没有收到回复,则自主调度重传机制。


MAC命令交互及功能

ClassB增加

ClassC增加


自适应速率控制 ADR(Adaptive data rate control)
如果上行ADR设置为1,则网络可以通过MAC命令进行速率和发送功率的控制,否则网络不会尝试改变速率或发送功率,但可能改变信道和数据重复次数。如果下行ADR设置为1只表明网络处于可以进行ADR控制的状态。如果下行ADR比特位0,在移动的终端则需要reset上行ADR比特,按照自身策略进行速率控制,而静止的终端则忽略此状态,进行正常ADR控制。LinkADRReqMAC指令可以用于调整速率和功率。终端发送功率默认为最大值或当地允许的最大值,如果网络终端的速率大于缺省的速率或者发送功率小于缺省的功率,终端需要周期确认网络能够收到上行帧。为了实现这个功能,引入ADR_ACK_CNT计数器,如果发送次数(重复传输不计算在内,只考虑新的数据传输)超过门限设置ADR_ACK_LIMIT时仍未收到下行的任何数据,则需要设置ADRACKReq比特位,网络需要在ADR_ACK_DELAY帧长时间内做出回复,下行接收到数据,则复位ADR_ACK_CNT计数器。如果在ADR_ACK_LIMIT + ADR_ACK_DELAY时间内网络没有回复,终端需要通过回复缺省配置功率和降低速率的方式重新连接,当ADR_ACK_DELAY超时时速率一步步进行降低,如果一直到达最低速率都未能重新获得连接,终端需要重新恢复功率、速率、频点信道初始配置。当速率和功率和缺省值相等时,表示无法提升连接性能,此时ADRACKReq不应使用,三个条件可触发此流程: 速率高于缺省速率、配置功率小于缺省功率或是目前配置的可用信道为缺省可用信道的子集。

数据的ACK与重传
当数据为Confirmed模式需要ACK的时候,网关需要在终端上行打开的下行周期进行发送,而终端则可自行调度,ACK只针对最新收到的数据进行。在没有收到ACK的情况,服务端采用新的帧号进行发送。而上行confirmed 和unconfirmed帧都是重传NbTrans次,除非收到下行有效传输。重传次数可以由网络根据不同的Qos配置,重传间可以使用跳频,而重传间隔各个终端可以自行决定。而设备收到ACK时需要停止相应帧的重复传输。对于uncofirmed数据,ClassA在RX1或RX2收到有效数据则停止重复发送,calssB&C在RX1收到数据时停止重复发送。NbTrans上行传输次数,对confirmed和unconfirmed消息都采用,缺省值为1,有效范围1-15,如果接收到的配置值为0,则保持现有值不变。

FCnt: Frame counter,在LoRaWAN1.1版本设备需要维护三个计数器,而在1.0之前版本只需要两个,差别在于原来计数分上行下行两个FCntUp和FCntDown,而在1.1后的版本采用单独的NFCntDown用于MAC交互的port0和Fport未存在的时刻,而AFCntDown用于其他port,逻辑上NFCntDown由网络服务端维护,AFCntDown由应用服务器端维护。在OTAA模式下,当成共处理Joint-accept时刻,将Frame Counter全部reset到0,而在ABP设备上初始为0,在设备存货周期内都不会重置,甚至掉电也需维持。计数器总共32比特,而发送在消息中的FCnt只有最后16比特,设备对于重复的数据只需ACK一次。

关于信道配置
参考LoRaWAN-Regional-Parameters-v1.1rA.PDF,由于ISM属于非授权公共免费频谱,但需要满足一定的限制条件,各个频率及地区限制以及相适应的物理参数在文档中做了详细的说明。

名词解释
FNwkSIntKey: Forwarding Network session integrity key
SNwkSIntKey: Serving Network session integrity key
NwkSEncKey: Network session encryption key v1.0中mac payload的MIC和加密key相同。
AppSKey: Application session key ()用于应用层服务端和设备端的数据加密。
Session Context 分为Network Session和Application Session,network session上下文包括信息F/SNwkSIntKey、NwkSEncKey 、FCntUp 、FCntDwn (LW 1.0) or NFCntDwn (LW 1.1)、DevAddr。Application session上下文包括:AppSKey 、FCntUp 、FCntDown (LW 1.0) or AFCntDwn (LW 1.1)。
OTAA: Over-The-Air Activationvia
ABP: Activation By Personalization
MIC: message integrity code

文章转载自:CSDN

—END—

热门推荐:




调制的理解

三极管滤波是个什么鬼?TA不止会放大哦~

实用:牛人总结的单片机三种应用程序架构!

超详细:SerDes知识详解


什么是自举电路

动画+原理图!深度解剖4类MOS管底层原理,看过都收藏了

PWM原理及其应用


放大器正、负反馈基础电路介绍与仿真


开发板、书籍免费申请
01




02




 内容合作 视频、课程合作 | 开发板合作转载开白 

 请联系小助手微信:15889572951(微信同号)


点击阅读原文,下载《通信原理》

面包板社区 面包板社区——中国第一电子人社交平台 面包板社区是Aspencore旗下媒体,整合了电子工程专辑、电子技术设计、国际电子商情丰富资源。社区包括论坛、博客、问答,拥有超过250万注册用户,加入面包板社区,从菜鸟变大神,打造您的电子人脉社交圈!
评论
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 173浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 104浏览
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 85浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 127浏览
  •     为控制片内设备并且查询其工作状态,MCU内部总是有一组特殊功能寄存器(SFR,Special Function Register)。    使用Eclipse环境调试MCU程序时,可以利用 Peripheral Registers Viewer来查看SFR。这个小工具是怎样知道某个型号的MCU有怎样的寄存器定义呢?它使用一种描述性的文本文件——SVD文件。这个文件存储在下面红色字体的路径下。    例:南京沁恒  &n
    电子知识打边炉 2025-01-04 20:04 100浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 75浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 71浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 119浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 80浏览
  • 随着市场需求不断的变化,各行各业对CPU的要求越来越高,特别是近几年流行的 AIOT,为了有更好的用户体验,CPU的算力就要求更高了。今天为大家推荐由米尔基于瑞芯微RK3576处理器推出的MYC-LR3576核心板及开发板。关于RK3576处理器国产CPU,是这些年的骄傲,华为手机全国产化,国人一片呼声,再也不用卡脖子了。RK3576处理器,就是一款由国产是厂商瑞芯微,今年第二季推出的全新通用型的高性能SOC芯片,这款CPU到底有多么的高性能,下面看看它的几个特性:8核心6 TOPS超强算力双千
    米尔电子嵌入式 2025-01-03 17:04 55浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 87浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 145浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 45浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦