LoRa的标准及规范——LoRaWAN网络协议

更新时间:2022-10-28
        本章针对LoRa应用的一些标准和规范展开介绍,其中LoRaWAN协议标准是重点部分。由于LoRaWAN协议在一些高速响应或节点间通信应用中仍然存在一些问题,因而出现了一些协议的更新和创新,其中包括中继Relay协议,阿里巴巴推广的LoRaD2D协议等。这些协议都是基于LoRaWAN协议的创新,都是在兼容原有LoRaWAN协议的前提下的协议创新。Yosmart公司开发的YoLink协议是一个吸收了LoRaWAN、Dash7等多种协议优点的智能家居协议,既具有
LoRaWAN的网络优势,又具有智能家居的快速响应的优势。
       LoRaWAN网络通常采用星状拓扑结构,其中网关(Gateway)转发终端设备(Enddevices)和后台网络服务器之间的消息。网关通过标准IP连接来接入网络服务器,而终端则通过单跳的LoRa或FSK和一 个或多个网关通信。虽然主要传输方式是终端上行传输给网络服务器,但所有的传输通常都是双向的。网关也被称作集中器或基站;终端设备又称为节点(Nodes)或传感器(Sensor)。
 
       终端和网关间的通信被分散到不同的信道频点和数据速率上。数据速率的选择需要权衡通信距离和消息时长两个因素,使用不同数据速率的设备互不影响。LoRaWAN的数据速率范围可以为0.3~50kb/s。为了最大限度地延长终端的电池寿命和扩大网络容量,LoRaWAN网络使用自适应数据速率(ADR)机制来独立管理每个终端的速率和RF输出。
       每个设备可以在任意可用的信道,任意时间,使用任意数据速率发送数据,只要符合如下规定。
     (1)跳频规定:终端的每次传输都使用伪随机方式来改变信道。频率的多变使得系统具有更强的抗干扰能力。
     (2)占空比规定:终端要遵守相应频段和本地区的无线电规定中的最大发射占空比要求。例如,欧洲规范中要求所有的终端设备最大发射占空比为1%;又如某终端发送某数据时的发射时长为1s,则该终端需要等候99s才能进行下一次的发射。
     (3)发射时长规定:终端要遵守相应频段和本地区的无线电规定中的最大发射时长要求,如中国规范要求单次发射的时长不能超过1s。
     (4)发射功率规定:终端要遵守相应频段和本地区的无线电规定中的最大发射功率要求,如中国规范要求E.R.P<50mW。

一、 LoRaWAN类型

      如图6-1所示,LoRaWAN协议分为基础类别ClassA和可选功能类别ClassB、ClassC。
图6-1LoRaWAN协议OSI架构
 
      (1)ClassA(双向传输终端):ClassA的终端在每次上行后都会紧跟两个短暂的下行接收窗口,以此实现双向传输。终端基于自身通信需求来安排传输时隙,在随机时间的基础上具有较小的变化(属于随机多址ALOHA协议)。这种Class  A操作为应用提供了最低功耗的终端系统,只要求应用在终端上行传输后的很短时间内进行服务器的下行传输。服务器在其他任何时间进行的下行传输都需要等待终端的下一次上行。通常用于低功耗的物联网设备,如水表、气表、烟感、门磁等多种传感器。
      (2)ClassB(划定接收时隙的双向传输终端):ClassB的终端会有更多的接收时隙。除了ClassA的随机接收窗口,ClassB设备还会在指定时间打开另外的接收窗口。为了让终端可以在指定时间打开接收窗口,终端需要从网关接收时间同步的信标(Beacon)。这使得服务器可以知道终端何时处于监听状态。一般应用于下行控制且有低功耗需求的场景,如水闸、气闸、门锁等。
      (3)ClassC(最大化接收时隙的双向传输终端):ClassC的终端一直打开着接收窗口,只在发送时短暂关闭。Class  C的终端会比ClassA和ClassB更加耗电,但同时从服务器下发给终端的时延也是最短的。一般ClassC用于长带电的场景,比如电表、路灯等。
       学习Class  A/B/C的时候经常忘记其特征,这里的A代表英文单词“All”,意思就是所有的LoRaWAN终端都必须满足Class  A的规定;B代表英文单词“Beacon”;C代表英文单词“Continuous”。

二、帧结构

       图6-2所示为MAC层帧结构。LoRa所有上下行链路消息都会携带PHY载荷。PHY载荷以1B的MAC头(MHDR)开始,紧接着是MAC载荷(MACPayload),最后是4B的MAC校验码(MIC)。
图6-2     LoRaWANMAC层帧结构
 
       MAC载荷,也就是所谓的“数据帧”,包含帧头(FHDR)、端口(FPort)以及帧载荷(FRMPayload),其中端口和帧载荷是可选的。
       帧头(FHDR)是由终端短地址(DevAddr)、1B帧控制字节(FCtrl)、2B帧计数器(FCnt)和用来传输MAC命令的帧选项(FOpts,最多15B)组成。其中自适应数据速率的控制ADR就在FCTRL中。

三、 ClassA

      图6-3所示为一个ClassA终端的通信过程。
图6-3    LoRaWANClassA通信过程
 
        Class A上行消息由终端发出,经过一个或多个网关转发给网络服务器。下行消息由网络服务器发出,经过一个网关转发给某个终端。终端每次上行传输后都要打开两个短的接收窗口。接收窗口开启的时间以上行结束时间为参考。
     (1)第一个接收窗口RX1的数据速率和启动。第一个接收窗口
RX1使用的频率和上行频率有关,使用的速率和上行速率有关。RX1是在上行数据发送结束1s±20μs后打开(这个1s可以通过参数调节,常用默认值为1)。一般情况下,RX1的速率和上行信道的关系是按区域规定的,一般默认RX1下行速率和最后一次上行信道的速率相关。
     (2)第二个接收窗口RX2的数据速率和启动。第二个接收窗口RX2使用一个固定可配置的频率和数据速率,在上行数据发送结束2s±20μs后打开(这个2s可以通过参数调节,常用默认值为2)。其频率和数据速率可以通过MAC命令设置,默认的频率和速率是按区域规定。
     (3)接收窗口的持续时间。接收窗口的长度至少要让终端设备有足够的时间来检测到下行数据的前导码。
     (4)接收端在接收窗口期间的操作。如果在任何一个接收窗口中检测到前导码,终端设备(接收端)需要继续激活,直到整个下行帧都解调完毕。如果在第一接收窗口检测到数据帧,且这个数据帧的地址和MIC校验通过确认是给这个终端,那么终端就不必开启第二个接收窗口。
     (5)网络服务器发送消息给终端。如果服务器想要发一个下行消息给终端,它会精确地在两个接收窗口的起始点发起传输。但是这个下行消息必须先等待到该ClassA设备上行消息后才可以执行。
     (6)接收窗口的重要事项。终端在RX1或RX2接收下行消息,或者在RX2失效之后(第一或第二窗口均未收到下行消息),才能再发起另一个上行消息。

四、   终端激活

       为了加入LoRaWAN网络,每个终端需要初始化及激活。终端的激活有两种方式:一种是空中激活(Over The Air Activation,OTAA),当设备部署和重置时使用;另一种是独立激活(ActivationByPersonalization,ABP),此时初始化和激活这两步就在一个步骤内完成。

1.空中激活

       空中激活的步骤如图6-4所示。
       针对空中激活,终端必须按照入网流程来和网络服务器进行数据交互。如果终端丢失会话消息,则每次必须重新进行一次入网操作。入网操作需要终端设置DevEUI、AppEUI、AppKey这三个参数。
       注意:对于空中激活,终端不会初始化任何网络密钥。只有当终端加入网络后,才会被分配一个网络会话密钥,用来加密和校验网络层的传输信息,以此使得终端在不同网络间的漫游处理变得方便。同时使用网络和应用会话密钥,使得网络服务器中的应用数据,不会被网络提供者读取或者篡改。
图6-4     LoRaWAN空中激活步骤
 
     (1)DevEUI(终端ID)。DevEUI是一个类似IEEEEUI64的全球唯一ID,标识唯一的终端设备。
     (2)AppEUI(应用ID)。AppEUI是一个类似IEEEEUI64的全球唯一ID,标识终端的应用提供者。AppEUI在激活流程开始前就存储在终端中。
     (3)AppKey(应用密钥)。AppKey由应用程序拥有者分配给终端,很可能是由应用程序指定的根密钥来衍生的,并且受提供者控制。当终端通过空中激活方式加入网络,AppKey用来产生会话密钥NwkSKey和AppSKey。会话密钥分别用来加密和校验网络层和应用层数据。
     (4)入网流程。从终端角度看,入网流程是由终端和服务器的两个MAC命令交互组成的,分别是加入要求(JoinRequest)和加入接受(JoinAccept)。
     (5)加入接受消息:如果网络服务器准许终端加入网络,就会用加入接受对加入请求进行应答。如果加入请求不被接受,则终端不会收到回应。需要注意的是,网络服务器在ECB模式下使用一个AES解密操作去对加入接受消息进行加密,因此终端就可以使用一个AES加密操作去对消息进行解密。这样终端只需要去实现AES加密而不是AES解密。
 
       注意:建立这两个会话密钥使得网络服务器中的网络运营商无法窃听应用层数据。在这样的设置中,应用提供商必须支持网络运营商处理终端的入网以及为终端生成NwkSKey。同时应用提供商向网络运营商承诺,它将承担终端所产生的任何流量费用,并且保持用于保护应用数据的AppSKey的完全控制权。

2.独立激活ABP

       在某些情况下,终端可以独立激活。独立激活是让终端绕过加入请求和加入接受的入网流程,直接加入指定网络中。
       独立激活终端,意味着DevAddr和两个会话密钥NwkSKey和AppSKey直接存储在终端中,而不是DevEUI、AppEUI、AppKey。终端在一开始就配置好了入网必要的信息。
       每个终端必须有唯一的NwkSKey和AppSKey。这样一个设备的密钥被破解也不会造成其他设备的安全性危险。在创建那些密钥的过程中,密钥不允许通过公开可用的信息获得(例如节点地址)。

五、  ClassB

       LoRaWANClassA的限制之一就是终端发送数据使用的Aloha算法,这使得客户应用程序或者服务器不能在确定时间内联系上终端。ClassB的目的就是在ClassA终端随机上行后的接收窗口之外,让终端也能在可预见的时间内开启接收。ClassB是让网关周期发送信标来同步网络中的所有终端,以便终端能够在周期时隙的确定时间打开一个短的接收窗口(叫作“pingslot”)。LoRaWAN的ClassB其实就是5.1.2小节中的同步下行主动模式,并进行了细化。
 
        注意:是否要从ClassA切换到ClassB,这个要在终端的应用层进行处理。如果打算从网络端将ClassA切换到ClassB,客户程序只能利用终端ClassA的上行包来反馈一个下行包给节点。
        对于一个支持Class B的网络,所有网关必须同步广播一个信标,以给所有终端提供一个参考时间。基于这个时间参考,终端可以周期性地打开接收窗口,下文称为“pingslot”,这个“pingslot”被网络建设者用于发起下行通信。网络使用ping slots其中之一来发起下行通信的行为,称之为“ping”。用来发起下行通信的网关,是网络服务器根据终端最近一次上行包的信号传输质量来选择的。基于此,如果终端根据广播的信标帧发现网络发生了切换(通信的网关发生了变化),它必须发出上行帧给网络服务器,以使服务器端更新下行路径的数据库。
       所有终端启动后,以ClassA来加入网络。之后终端应用层可以切换到ClassB。通过以下步骤来实现:
 
     (1)终端应用层请求LoRaWAN层切换到ClassB模式。
     (2)基于信标的强度和电池寿命,终端的应用层选择pingslot所需的数据速率和周期。
     (3)移动的终端,必须周期性地通知网络服务器其位置信息,以便确定下行路径。
     (4)如果在指定周期内没有接收到beacon,则意味着网络同步丢失。MAC层必须通知应用层切换回ClassA。随后终端在上行帧的LoRaWAN层中将不再设置Class B的位域,用以通知网络服务器终端不再处于Class   B模式。终端的应用程序可以周期性地尝试切换回ClassB。在做这个处理时要先探寻beacon。
      图6-5展示了beacon接收时隙和ping时隙。
图6-5LoRaWANClassB时隙图
 
       在图6-5这个示例中,指定beacon周期是128s,ping接收时隙的周期是32s。大部分时候服务器并没有使用ping时隙,因此终端可以在接入信道时监听是否有前导码,如果没有,则立即关闭接收窗口。如果监测到前导码,终端则会持续接收,直到下行帧解调完毕。MAC层随后处理数据帧,检查确认地址域匹配和MIC校验有效之后再转发给应用层。
 
       信息的传播方式可以是“单播”或者“多播”。单播是指将信息传递给一个指定的终端,多播是指将信息传递给多个终端。多播组内的所有终端都必须共享一个相同的多播地址和相关的加密密钥。LoRaWANClassB协议中并没有明确规定如何去建立这样的多播组,以及如何安全地分配多播密钥。这必须通过节点个性化设置或应用层实现,8.2.3小节中有关于ClassB多组播的策略讨论。
       在从ClassA切换到ClassB之前,终端必须首先接收一个网络的信标来将它自身的时间基准与网络时间进行校准。一旦处于Class B模式,终端必须定期地去搜索并且接收网络信标,以消除自身内部基准时间相对于时间的漂移。Class B模式下的设备也许会短暂性地无法接收信标(超出与网关的通信范围,存在干扰等),这种情况之下,终端必须考虑它内部时钟可能产生的漂移,逐步地加大信标和ping时隙的接收窗口时间。例如,一个设备精度为10×10-6的内部时钟,每个信标周期(128s)就会有±1.3ms的漂移。
       终端可以使用信标的准确周期(当信标可用时)去校准其初始化时钟,这样可以减少初始化时钟频率的不准确性。由于温补晶振具有较好的温度漂移特性,因此使用温补晶振可以尽可能地减小时间漂移。

六、   ClassC

       具备Class C能力的终端,通常应用于供电充足的场景,因此不必精简接收时间。ClassC的终端不能执行ClassB。ClassC终端会尽可能地使用RX2窗口来监听。按照ClassA的规定,终端是在RX1无数据收发才进行RX2接收。为了满足这个规定,终端会在上行发送结束和RX1接收窗口开启之间,打开一个短暂的RX2窗口,一旦RX1接收窗口关闭,终端会立即切换到RX2接收状态;RX2接收窗口会持续打开,除非终端需要发送其他消息。
 
       注意:没有规定节点必须要告诉服务器它是ClassC节点。这完全取决于服务器的应用程序,它们可以在加入流程通过协议交互来获知是不是ClassC节点。
 
       ClassC设备执行和ClassA一样的两个接收窗口,但它们没有关闭RX2,除非它们需要再次发送数据。因此它们几乎可以在任意时间用RX2来接收下行消息,包括MAC命令和ACK传输的下行消息。另外在发送结束和RX1开启之间还打开了一个短暂的RX2窗口。图6-6为ClassC终端的接收时隙时序图。
图6-6ClassC终端的接收时隙时序图
         和ClassB类似,ClassC设备也可以接收多播下行帧。多播地址和相关的NwkSKey及AppSKey都需要从应用层获取。

下一篇

开源SIP服务器你了解多少

通信系统集成

开源SIP服务器你了解多少

SIP服务器是促进基于互联网的电话的重要工具。它将您公司的IPPBX连接到互联网电话服务提供商(ITSP)。SIP开源服务器允许您以低成本创建自己的服务器,这与许多商业替代方案不同。 ...

相关内容

对讲平台(如何选择最适合你的一款)

对讲平台(如何选择最适合你的一款)

作为一种高效的沟通工具,对讲平台在现代化的办公环境中越来越受欢迎。不仅可以提高工......

通信系统集成

2023-11-30

楼宇可视对讲主机(如何选择最适合的品牌和型号)

楼宇可视对讲主机(如何选择最适合的品牌和型号)

楼宇对讲主机是现代化公寓、写字楼、商场等建筑中不可或缺的安全设备之一。它可以通过......

通信系统集成

2023-11-29

手持对讲机的使用方法(如何选择适合自己的款式和品牌)

手持对讲机的使用方法(如何选择适合自己的款式和品牌)

手持对讲机是一种便捷的通讯工具,它可以在没有信号的地方进行通讯,比如山区、森林、......

通信系统集成

2023-11-28