摘自:LoRaWAN介绍 - LoRa从业者读这篇就够了 https://blog.csdn.net/iotisan/article/details/69939241

      LoRa网络结构     https://blog.csdn.net/DreamBitByBit/article/details/79889561    

   LoRa基础知识     https://blog.csdn.net/m0_38134493/article/details/72724600 

1.什么是LoRaWAN?

  LoRaWAN是LoRa Wide Area Network(LoRa广域网)的简称,是基于LoRa技术的一种通信协议。它主要包括三个层次的通信实体:LoRa终端、LoRa网关和LoRa服务器。

2.LoRa协议层次

  LoRa整个网络协议层如图所示:                                                                                        

  Application为应用层,常见的LoRaWAN协议即为LoRaMAC协议,协议定义的终端类型有ClassA、ClassB、ClassC三种类型,其主要差别ClassA上行触发下行接收窗口,只有在上行发送了数据的情形下才能打开下行接收窗口;ClassB定义ping周期,周期性进行下行数据监测;ClassC尽可能多地监测下行接收,基本只有在上行发送时刻停止下行接收;协议要求每个终端必须支持ClassA,而B、C为可选功能,同时在支持ClassC功能的终端上无需支持classB类型。

Class A B C介绍

 

    • Class A 
        双向通信终端设备。这一类的终端设备允许双向通信,每一个终端设备上行传输会伴随着两个下行接收窗口。终端设备的传输槽是基于其自身通信需求,其微调是基于一个随机的时间基准(ALOHA协议)。A所属的终端设备在应用时功耗最低,终端发送一个上行传输信号后,服务器能很迅速地进行下行通信,任何时候,服务器的下行通信都只能在上行通信之后。

    • Class B 
        具有预设接收槽的双向通信终端设备。这一类的终端设备会在预设时间中开放多余的接收窗口,为了达到这一目的,终端设备会同步从网关接收一个Beacon,通过Beacon将基站与模块的时间进行同步。这种方式能使服务器知晓终端设备正在接收数据。

    • Class C 
        具有最大接收槽的双向通信终端设备。这一类的终端设备持续开放接收窗口,只在传输时关闭。

 

3.LoRa网络结构

  LoRa整体网络结构分为终端、网关、网络服务、应用服务几个功能。终端节点可以同时发给多个基站,一般LoRa终端和网关之间可以同过LoRa无线技术进行数据传输,而网关和核心网或广域网之间的交互可以通过TCP/IP协议,当然可以是有线连接的以太网,亦可以为3G/4G类的无线连接。为了保证数据的安全性、可靠性,LoRaWAN采用了长度为128比特的对称加密算法AES进行完整性保护和数据加密。

  星型拓扑结构

  LoRaWAN中Server模块按照功能可以细分为Join server、Application server和Network Server,实际中可以是一个物理整体。Join Server用于终端设备的请求网络服务能力时的激活流程,Netwrok Server负责和网关及终端的MAC数据交互,Application Server为应用层服务端。

4.终端节点的加网

  终端节点有两种加网方式:Over-the-Air Activation(空中激活方式OTAA),Activation by Personalization(独立激活方式ABP)

  OTAA激活流程需要准备三个参数:DevEUI,AppEUI,AppKey

DevEUI:类似于设备的MAC地址,标识唯一终端设备。

AppEUI:标识唯一的应用提供者,比如垃圾桶监测应用、烟雾报警器应用等,都具有自己的唯一ID。

AppKey:是一个AES-128的应用密钥,由该应用程序所有者分配给终端设备,从每一个应用独立的根密钥中推演出来。每当一个终端设备通过加入过程加入网络时,AppKey用于推演出为终端设备定义的会话密钥NwkSKey和AppSKey,用于网络通信的安全。而应用密钥用于保障应用的端到端安全。

  终端在发起加网join流程后,发出加网命令,NS(网络服务器)确认无误后会给终端做加网回复,分配网络地址 DevAddr(32位ID),双方利用加网回复中的相关信息以及AppKey,产生会话密钥NwkSKey和AppSKey,用来对数据进行加密和校验。

  如果是ABP激活,则比较简单粗暴,直接配置 DevAddr,NwkSKey,AppSKey 这三个LoRaWAN最终通讯的参数,不再需要join流程。在这种情况下,这个设备是可以直接发应用数据的。

5.数据收发

  LoRaWAN规定的数据帧类型有Comfirmed(需要应答)和Unconfirmed(不需要应答)两种。另外,为支持应用多样性,除了用AppEUI来划分应用类型外,在数据传输时也可以利用FPort应用端口来对数据分别处理。FPort的取值范围是(1-223),由应用层指定。