LoRa的标准与规范

LoRa的标准与规范

一、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 类型

如图所示,LoRaWAN 协议分为基础类别 Class A 和可选功能类别 Class BClass C.

 

(1) Class A(双向传输终端): Class A 的终端在每次上行后都会紧跟两个短暂的下接收窗口,以此实现双向传输。终端基于自身通信需求来安排传输时隙,在随机时间的基上具有较小的变化(属于随机多址 ALOHA 协议)。这种 Class A 操作为应用提供了最功耗的终端系统,只要求应用在终端上行传输后的很短时间内进行服务器的下行传输,务器在其他任何时间进行的下行传输都需要等待终端的下一次上行。通常用于低功耗的物联网设备,如水表、气表、烟感、门磁等多种传感器。

(2)Class B(划定接收时隙的双向传输终端):Class B 的终端会有更多的接收时隙除了Class A的随机接收窗口,Class B 设备还会在指定时间打开另外的接收窗口。为了终端可以在指定时间打开接收窗口,终端需要从网关接收时间同步的信标(Beacon)。这使得服务器可以知道终端何时处于监听状态。一般应用于下行控制且有低功耗需求的场景如水闸、气闸、门锁等。

(3) Class C(最大化接收时隙的双向传输终端): Class C 的终端一直打开着接收窗口只在发送时短暂关闭。Class C 的终端会比 Class A 和 Class B 更加电,同时从服务器下发给终端的时延也是最短的。一般 Class C 用于长带电的场景,比如电表、路灯等。学习 Class A/B/C 的时候经常忘记其特征,这里的 A代表英文单词“AlI”意思就是所有的LoRaWAN终端都必须满足 Class A 的规定;B代表英文单“Beacon”,C代表英文单词“Continuous”

三、帧结构

图所示为 MAC层结构。LoRa所有上下行链路消息都会携带PHY 载荷。PHY载荷以1B的 MAC头(MHDR)开始,紧接着是 MAC荷(MACPayload),最后是4B的MAC 校验码(MIC)。

 

MAC载荷,也就是所谓的“数据帧”,包含顿头(FHDR),端口(FPort)以及载荷FRMPayload),其中端口和帧载荷是可选的。

帧头(FHDR)是由终端短地址(DevAddr)、1B 控制字节(FCtrl)2B 计数器(FCnt)和用来传输 MAC命令的选项(FOpts,最多 15B)组成。其中自适应数据速率的控制ADR就在 FCTRL中。

四、Class A

图所示为一个 Class A 终端的通信过程。

 

Class A上行消息由终端发出,经过一个或多个网关转发给网络服务器。下行消息由网络服务器发出,经过一个网关转发给某个终端。终端每次上行传输后都要打开两个短的接收窗口。接收窗口开启的时间,是以上行结束时间为参考。

第一个接收窗口RX1的数据速率和启动: 第一个接收窗口RX1使用的频率和上行频率有关,使用的速率和上行速率有关。RX1 是在上行数据发送结束1秒(+/ 20微秒)后打开(这个1秒可以通过参数调节,常用默认值为1)。一般情况下,RX1的速率和上行信道的关系是按区域规定的,一般默认RX1下行速率和最后一次上行信道的速率相关。第二个接收窗口RX2的数据速率和启动

第二个接收窗口RX2使用一个固定可配置的频率和数据速率,在上行数据发送结束 2秒后(+/- 20微秒)打开(这个2秒可以通过参数调节,常用默认值为2)。其频率和数据速率可以通过 MAC 命令设置,默认的频率和速率是按区域规定。

终端在RX1或RX2接收下行消息,或者在RX2失效之后(第一或第二窗口均未收到下行消息),才能再发起另一个上行消息。

  • 终端激活

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

1.空中激活

空中激活的步骤如图所示。

 

针对空中激活,终端必须按照人网流程来和网络服务器进行数据交互。如果终端丢失会话消息,则每次必须重新进行一次人网操作。人网操作需要终端设置 DevEUI、AppEUI.AppKey这三个参数。

值得注意的是对于空中激活,终端不会初始化任何网络密钥。只有当终端加入网络后,才会被分配一个网络会话密钥,用来加密和校验网络层的传输信息,以此使得终端在不同网络间的漫游处理变得方便。同时使用网络和应用会话密钥,使得网络服务器中的应用数据,不会被网络提供者读取或者篡改。

(1)DevEUI(终端ID)。DevEUI是一个类似IEEE EUI64 的全球唯- ID,标识唯一的终端设备。

(2)AppEUI(应用 ID)。AppEUI 是一个类似IEEE EUI64 的全球唯一 ID,标识终端的应用提供者。AppEUI 在激活流程开始前就存储在终端中。

(3) AppKey(应用密钥)。AppKey 由应用程序拥有者分配给终端,很可能是由应用程序指定的根密钥来衍生的,并且受提供者控制。当终端通过空中激活方式加人网络,AppKey 用来产生会话密 NwkSKey 和 AppSKey。会话密分别用来加密和校验网络层和应用层数据。

(4)入网流程。从终端角度看,入网流程是由终端和服务器的两个 MAC命令交互组成的,分别是加人要求(Join Request)和加人接受(Join Accept)。

(5)加人接受消息:如果网络服务器准许终端加人网络,就会用加入接受对加入请求进行应答。如果加人请求不被接受,则终端不会收到回应。需要注意的是,网络服务器在ECB模式下使用一个AES解密操作去对加入接受消息进行加密,因此终端就可以使用个AES加密操作去对消息进行解密。这样终端只需要去实现 AES加密而不是AES解密。

值得注意的是建立这两个会话密钥使得网络服务器中的网络运营商无法窃听应用层数据。在这#的设置中,应用提供商必须支持网络运营商处理终端的入网以及为终端生成NwkSKey。同时应用提供商向网络运营商承诺,它将承担终端所产生的任何流量费用,并且保持用于保护应用数据的 AppSKey 的完全控制权。

2.独立激活ABP

在某些情况下,终端可以独立激活。独立激活是让终端绕过加入请求和加入接受的人网流程,直接加人指定网络中。

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

  • Class B

LoRaWAN Class A的限制之一就是终发送数用的 Aloha 算法,这使。用程序或者服务器不能在确定时间内联系上终。Class B 的目的就是在 Cas A机上行后的接收窗口之外,让终端也能在可预见的时间内开启接收。Class B 是让网关隔发送信标来同步网络中的所有终端,以便终端能够在周期时隙的确定时间打开一个短的收窗口(叫作“ping slot”)。

需要注意是否要从ClassA 切换到 Class B,这个要在终端的应用层进行处理。如果打算从网路端将 ClassA切换到 Class B,客户程序只能利用终端 Class A 的上行包来反情-个下行包给节点。

对于一个支持 Class B的网络,所有网关必须同步广播一个信标,以给所有终端提供一个参考时间。基于这个时间参考,终端可以周期性地打开接收窗口,下文称为“ping slot”这个“ping slot”被网络建设者用于发起下行通信。网络使用 ping slots 其中之一来发起下行通信的行为,称之为“ping”。用来发起下行通信的网关,是网络服务器根据终端最近一次上行包的信号传输质量来选择的。基于此,如果终端根据广播的信标帧发现网络发生了切换(通信的网关发生了变化),它必须发出上行帧给网络服务器,以使服务器端更新下行路径的数据库。

所有终端启动后,以 Class A 来加人网络。之后终端应用层可以切换到 Class B。通过一下步骤来实现:

  1. 终端应用层请求 LoRaWAN 层切换到 Class B模式
  2. 基于信标的强度和电池寿命,终端的应用层选择 ping slot 所需的数据速率和周期。
  3. 移动的终端,必须周期性地通知网络服务器其位置信息,以便确定下行路径。
  4. 如果在指定周期内没有接收到 beacon,则意味着网络同步丢失。MAC层必须通知应用层切换回 Class A。随后终端在上行的 LoRaWAN 层中将不再设置 Class B的位域用以通知网络服务器终端不再处于 Class B 模式。终端的应用程序可以周期性地尝试切换回Class B。在做这个处理时要先探寻 beacon。

 

在上图这个示例中,指定 beacon 周期是 128sping 接收时的周期是 32s。大部分时候服务器并没有使用 ping 时隙,因此终端可以在接人信道时监听是否有前导码,如果没有,则立即关闭接收窗口。如果监测到前导码,终端则会持续接收,直到下行帧解调完毕,MAC层随后处理数据帧,检查确认地址域匹配和 MIC 校验有效之后再转发给应用层。

信息的传播方式可以是“单播”或者“多播”。单播是指将信息传递给一个指定的终端,多播是指将信息传递给多个终端。多播组内的所有终端都必须共享一个相同的多播地址和相关的加密密钥。LoRaWAN Class B 协议中并没有明确规定如何去建立这样的多播组以及如何安全地分配多播密钥。这必须通过节点个性化设置或应用层实现,8.2.3 小节中有关于 Class B 多组播的策略讨论。

在从 Class A 切换到 Class B 之前,终端必须首先接收一个网络的信标来将它自身的时间基准与网络时间进行校准。一旦处于 Class B 模式,终端必须定期地去搜索并且接收网络信标,以消除自身内部基准时间相对于时间的漂移。Class B 模式下的设备也许会短暂性地无法接收信标(超出与网关的通信范围,存在干扰等),这种情况之下,终端必须考虑它内部时钟可能产生的漂移,逐步地加大信标和 ping 时隙的接收窗口时间。例如,一个设备精度为的内部时钟,每个信标周期(128s)就会有士1.3ms 的漂移。终端可以使用信标的准确周期(当信标可用时)去校准其初始化时钟,这样可以减少初始化时钟频率的不准确性。由于温补晶振具有较好的温度漂移特性,因此使用温补晶振可以尽可能地减小时间漂移。

  • Class C

具备 Class C能力的终端,通常应用于供电充足的场景,因此不必精简接收时间。ClassC的终端不能执行 Class B。Class C终端会尽可能地使用 RX2 窗口来监听。按照 Class A的规定,终端是在 RX1无数据收发才进行 RX2 接收。为了满足这个规定,终端会在上行发送结束和RX1 接收窗口开启之间,打开一个短暂的 RX2窗口,一旦 RX1 接收窗口关闭,终端会立即切换到 RX2 接收状态;RX2 接收窗口会持续打开,除非终端需要发送其他消息。

需要注意的是没有规定节点必须要告诉服务器它是 Class C节点。这完全取决于服务器的应用程序,它们可以在加入流程通过协议交互来获知是不是 Class C 节点。

Class C设备执行和 Class A 一样的两个接收窗口,但它们没有关闭 RX2,除非它们需要再次发送数据。因此它们几乎可以在任意时间用 RX2 来接收下行消息,包括 MAC 命令和ACK 传输的下行消息。另外在发送结束和 RX1 开启之间还打开了一个短暂的 RX2 窗口。下图为 Class C 终端的接收时隙时序图。

 

本文所介绍内容以本公司(江苏芮捷智能科技有限公司)自研技术的技术方案、技术经验以及技术原理介绍为主; 如有雷同或者侵权,请主动联系官网联系人删除内容。参考文献:LoRa物联网通信技术 甘泉

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值