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窗口仍未超时的情况下,不可再次出发上行发送。