LORAWAN中文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LoRaWAN 规范1.0 (2~8章)
2 Introduction on LoRaWAN options
2.1 LoRaWAN Classes
•终端双向通讯(A类)
•低功耗,先发送后接收,发送和接收交替进行。
终端只有再发送数据后才能接收处理服务器发送来的数据,发送数据不受接收数据的限制。
收发比=1:1 •具有接收时隙的终端双向通讯(B类)
•同样是先发送后接收,不同的是每次发送后按照一定时间间隔启动接收窗口,接收多条数据。
时间间隔从网关获取,以便服务器知晓终端接收消息的时刻。
收发比=1:N
•最大接收时隙的终端双向通讯(C类)
•打开接收窗口的时间间隔很小,几乎不间断的接收消息。
比A和B更耗能,但和服务器交互的延迟低。
2.2 规范
•高级类的附加功能向下兼容低级类。
所有LoRaWAN终端必须实现A类的功能。
•注意:本规范手册中:物理消息格式、MAC消息格式以及A类和其它高级类都具备的东西,只在本手册的A类部分介绍。
3 Physical Message Formats
•LoRa中区分上行和下行的术语。
3.1 上行链路消息
•上行链路消息由终端发送经过一个或多个网关中转到达网络服务器。
•它使用的LoRa无线分组显性模式由物理头(PHDR)和它的CRC (PHDR_CRC)校验组成。
负载的一致性(发送和接收的数据完全一致,不仅仅是完整)由CRC保证。
Uplink PHY:
3.2 下行链路消息
•下行链路消息由网络服务器发送给终端设备,每条消息对应的终端设备是唯一确定的,而且只通过一个网关中转。
•下行链路消息由物理头(PHDR)和这个头的CRC(PHDR_CRC)组成。
下行链路消息:
3.3 接收窗口
设备终端每次发送数据(上行传输)后打开两个短接收窗口(short receive windows)。
接收窗口的启动时间是配置好的时间周期,该时间在最近一条上行传输比特数据的结尾。
4 MAC Message Formats
LoRa所有的上下行链路消息都会包含PHY负载,该负载以单字节MAC头为开始,MAC头后面是MAC负载,结尾是4字节的消息一致码(MIC)。
4.1 MAC Layer (PHYPayload)
MACPayload字段长度M的最大值见第六章。
4.2 MAC Header (MHDR field)
MAC 头中包含消息类型(MType)和帧编码所遵循的LoRaWAN规范的主版本号(Major)。
RFU是保留位。
4.2.1 Message type (MType bit field)
LoRaWAN自定义了六个独特的MAC消息类型:join request, join accept, unconfirmed data up/down, 以及confirmed data up/down
MType Description 备注
000 Join Request 无线激活过程使用,具体见章节6.2
001 Join Accept 无线激活过程使用,具体见章节6.2
010 Unconfirmed Data Up 接受者不必回应
011 Unconfirmed Data Down 接受者不必回应
100 Confirmed Data Up 接受者必须回应
101 Confirmed Data Down 接受者必须回应
110 RFU 保留
111 Proprietary 用来实现自定义格式的消息,交互的设备之间必须有相同的处理逻辑,不能和标准消息互通
4.2.1.1 Join-request and join-accept messages
已经添加上表的到备注
4.2.1.2 Data messages
消息数据既能传输MAC命令又能传输应用数据,甚至可以一起发送。
不同消息类型用不同的方法保证一致性,下面会介绍这一点。
4.2.2 Major version of data message (Major bit field)
Major bits Description
00 LoRaWAN R1
01..11 RFU(保留)
•注意:主版本号指明激活过程中(in the join procedure)使用的消息格式(章节6.2)和MAC Payload前4字节(第4章)。
终端要为每个不同的主版本号实现不同子版本的消息格式。
终端使用的主版本号应当提前发送给网络服务器,可以作为其它消息的一部分捎带发送,如,设备个性化信息。
4.3 MAC Payload of Data Messages (MACPayload)
MAC 荷载,也就是所谓的“数据帧”,包含:帧头(FHDR)、可配置的端口字段(FPort)以及可配置的帧负载字段(FRMPayload)
4.3.1 Frame header (FHDR)
FHDR由:终端短址(DevAddr)、一个帧控制字节(FCtrl)、2字节的帧计数器(即帧大小,FCnt)和最多15个字节的配置(FOpts,用来传输MAC 命令)组成。
4.3.1.1 帧头中的自适应数据速率控制(ADR, ADRACKReq in FCtrl)
LoRa网络对终端的数据速率没有任何限制。
LoRaWAN协议通过该特性调整优化静态终端(相对移动终端来讲)的数据速率,即自适应数据速率(Adaptive Data Rate (ADR))。
ADR可用时,网络会为其优化来使用尽可能快的数据速率。
移动终端在移动过程中会快速切换无线广播环境,该过程中进行数据速率管理没什么实际意义,此时移动终端应使用已经修正过的默认数据速率。
设置ADR之后,网络通过MAC命令控制终端的数据速率。
如果没有设置ADR,网络会无视收到的信号的质量,不对终端的数据速率做任何调整。
终端或网络用不用ADR要根据需求决定。
不过,只要条件允许就应该开启ADR,这样可以延长终端的电池寿命并充分利用网络带宽。
注意:
哪怕移动终端在大多数时间下都是不移动的。
因此终端可以根据它自己移动状态请求网络通过ADR进行数据速率优化。
如果终端的数据速率经过服务器优化比默认值大,那节点就要定期检查保证服务器能够收到上传的数据。
终端上行的帧号每增加一次(重复发送不增加帧号)的同时,ADR_ACK_CNT + 1。
ADR_ACK_DELAY (这么长)时间之内收到下行消息:ADR_ACK_CNT=0(重置)。
否则ADR_ACK_CNT 继续根据前面规则处理。
ADR_ACK_CNT>=ADR_ACK_LIMIT(一共用时:ADR_ACK_LIMIT +
ADR_ACK_DELAY)就切换到更低的数据速率上(无线广播范围的距离更长)重复上述过程,每次终端设备达到ADR_ACK_LIMIT 就会再次降低自己的数据速率。
如果设备使用默认的数据速率就不需要设置ADRACKReq ,这种情况下任何操作都不会改善连接范围(增加连接距离)。
在此期间的下行数据不需设置ACK位,因为终端在等待接收期间收到任何应答都表示网关还能接收来自该设备的上行数据。
•注意:为了让网络对下行链路给出最佳的调度方案,不要要求对ADR 请求立刻做出应答,要给网络留足时间。
•注意:上行传输时,如果ADR_ACK_CNT >= ADR_ACK_LIMIT 并且当前数据速率比设备的最小数据速率高,就要设置ADRACKReq,其它情况下不需要。
4.3.1.2 消息确认位和确认流程 (ACK in FCtrl)
收到confirmed类型的消息时,接收者要回复一条确认消息(ACK,通过设置确认位实现)。
如果发送者是终端,网络就把消息发送到该终端打开的接收窗口。
如果发送者是网关,终端就自行决定发送确认消息的传输方式。
确认消息只会在收到消息以后作为响应发送,并且不重发。
•注意:为了尽量简化终端处理、减少状态,一旦收到需要确认的消息要立刻发送确认消息,确认消息要简单直接(最好发空消息)。
4.3.1.3 重传机制(Retransmission procedure)
•如果终端设备发送一条需要确认的消息后没有收到响应,终端就会重新发送这条消息。
不同设备间的消息重传的次数和每次的时间可能不同,当然这些也可以通过网络服务器调节。
•注意:18章给出了一些确认机制的时间
•注意:如果设备重传次数到限制后还没收到确认消息,就会降低自身的数据传输速率来增加连接距离再次尝试连接。
这种条消息的重传或者放弃是由终端决定的。
•注意:如果网络服务器重传次数达到限制后还没有收到确消息,在没有收到设备的消息之前会认为无法与终端建立连接(终端不可达)。
这种消息的
重传或者放弃是由服务器决定的。
•注意:上面提到的重传期间的数据速率回归机制在18.4有详细介绍
4.3.1.4 帧挂起位(FPending in FCtrl, downlink only)
•帧挂起位(FPending)只在下行交互中使用,表示网关还有数据挂起等待发送。
此时需要终端尽快发送上行消息来再打开一个接收窗口。
FPending的详细用法在18.3。
4.3.1.5 计数器(FCnt)
•每个终端有两个计数器:上行链路计数器(FCntUp),由终端产生并维护,记录发往服务器的帧数量;下行链路计数器(FCntDown),由服务器产生并维护,记录服务器发往终端的帧数量(此处与我们当前的设备服务器与设备的交互中的message id作用相同,都是为了保证消息收发一致)。
终端加入服务器成功以后,终端和服务端的帧号同时置0。
之后每次其中一方发送消息后,与之对应的FCntUp 或FCntDown 就会加1。
接收方会同步保存接收数据的的帧号,对比收到的增加过的值和当前保存的值,如果两者之差小于MAX_FCNT_GAP (要考虑号码归零,即号码达到最大值后重新从0开始),接收方就与收到的数据保持同步(更新成收到的值)。
如果两者之差大于MAX_FCNY_GAP 就说明中间丢失了很多数据然后就会丢掉这条数据。
PS4翻译更正如下:
•LoRaWAN的帧计数器有16位和32位两种长度,两者有所不同:
16bits时,其值可以直接作为FCnt使用(反之亦然),此时有需要的话通过在前面填充0(值为0)字节(来补足);32bits时,FCnt对应计数器的16个最低有效位(2个低字节)。
上行数据使用上行FCnt,下行数据使用下行FCnt。
一个节点在上行FCnt的一次循环内,如果不是消息重传,上行传输数据使用的FCnt不能重复。
•PS:注释掉原文的直译,原文说法有问题。
•FCnt的一次循环指的是:从1到达最大值,0x1 ~ 0xFFFF(因为LoRaWAN 中的FCnt字段是2个字节)。
•原文档中所谓的“相同的的应用会话密钥和网络会话密钥”就是没有重新
入网,重新入网FCnt重新计算,是FCnt循环计数的一种特殊情况。
当计数器使用32位时,FCnt字段只发送32bits中的16个最低有效位。
此时服务器需要通过观察传输的数据来自己维护16个最高有效位。
4.3.1.6 帧配置(FOptsLen in FCtrl, FOpts)
•帧配置长度(FOptsLen)位于帧的FCtrl 部分,表示FOpts的总长度。
FOpts搭载到数据帧中发送的MAC命令最长15字节,详细的MAC命令见4.4。
如果帧配置长度FOptsLen=0,FOpts为空;如果FOpts不为空(里面是MACommand)
,端口号要么省略,要么是一个非零值(具体看下面)。
•MAC命令不能同时出现在payload(负载)和帧配置项中。
4.3.2 端口字段Port field(FPort)
•负载(payload)不为空的时候端口号(port)也不能是空。
此时port=0表示FRMPayload中只有MAC命令(详情见章节4.4)。
FPort值的可用范围是:1~223(0x01~0xDF),224~255 (0xE0~0xFF)为保留值,方便以后扩展。
•N是应用负载的字节数,N的取值范围见第7节
N ≤ M - 1 - (FHDR的字节长度)
•其中M是MAC的最大有效荷载长度。
4.3.3 MAC 帧负载据加密(FRMPayload)
•如果帧数据中包含payload,要先对FRMPayload进行加密,再计算消息的一致码(MIC)。
•加密方案使用基于IEEE 802.15.4/2006 Annex B [IEEE802154] 的AES加密,秘钥长度128位。
默认情况下,所有FPort 的加/解密都在LoRaWAN层完成;如果FPorts不为0,加/解密可以在LoRaWAN层之上完成。
4.3.3.1 LoRaWAN 加密
•加密秘钥K取决于消息的FPort:
FPort K 备注
0 NwkSKey 网络密钥
1..255 AppSKey 应用密钥
表3,FPort列表
•加密字段:pld = FRMPayload
•采用分组加密,算法位每条消息数据定义一个块的序列,序列分为k 块,k=ceil(len(pld)/16) (向上取整),每组用Ai表示,i=1…k,每块结构如下:字节数 1 4 1 4 4 1 1
Ai 0x01 4 × 0x00Dir DevAddr FCntUp或
0x00 i
FCntDown •Dir字段:上行帧为0,下行帧为1。
对Ai加密,得到Si:
•通过分割对payload进行加解密:
4.3.3.2 Encryption above the LoRaWAN layer
•对于选定的端口(FPort不能是0,因为0表示MAC 命令),如果LoRaWAN 前面的一些层给LoRaWAN的FRMPayload是加密过的,LoRaWAN就把FRMPayload从MACPayload转发给应用,并且转发过程中不做任何改动。
4.4 Message Integrity Code (MIC)
对整个消息进行MIC计算(AES签名算法CMAC),需要加密的消息包括以下字段:
msg = MHDR | FHDR | FPort | FRMPayload
len(msg) 表示消息的字节长度。
MIC算法参考RFC4493:
•B0 定义如下:
字节数 1 4 1 4 4 1 1
B0 0x49 4 × 0x00Dir DevAddr FCntUp 或
FCntDown
0x00 len(mgs)
Dir字段:上行帧为0,下行帧为1
5 MAC Commands
网络管理时会在网络服务器和终端MAC层之间传输一系列MAC命令。
一帧数据中可以包含任何MAC命令,MAC命令既可以放在FOpts中,也可以放在FRMPayload中,但不能同时在两个字段携带MAC命令。
MAC命令放在FRMPayload时,FPort = 0。
放在FOpts的命令不加密(原因:加密Payload,对整个数据签名),也不能超过15个字节(2^4 - 1)。
放在FRMPayload的MAC命令长度不能超过FRMPayload的最大值。
•注意:不想被别人截获的命令要放到FRMPayload,并单独发送该数据帧•一条mac命令由一个命令ID(CID,一个字节),和特定的命令序列组成,命令序列可以是空。
命令ID 命令终端
发送
网关
发送
简介
0x02 LinkCheckReq ×用于终端验证网络连接
Margin(解调幅度)是最近一条被成功收到的 LinkCheckReq 命令的链路预算(单位dB),是一个8位(bits)无符号整型,范围[0,254]。
值为 0 表示在解调(信号强度)的下限上收到了数据,值20表示网关在比解调下限高出 20 dB 的信号强度上收到了数据。
255是保留值。
GwCnt是最近一次成功收到LinkCheckReq的网关的数量。
link margin参考:Link margin
5.2 速率自适应LinkADRReq和LinkADRAns
服务器通过发送 LinkADRReq 命令让终端设备进行速率自适应。
数据速率(DataRate)和TX输出功率(TXPower),两者和地理区域相关,编码参考第7章。
信道掩码(ChMask)通过对相应的最低有效位填0来对上行信道进行编码,信道列表如下:
表5:信道状态表
ChMask中某位是1,表示该位对应的上行信道可用;如果是0,则表示对应的上行信道不可用。
终端设备当前使用的信道要设为1(不知道是我不会断句,还是官方文档这里说的不明白)。
冗余(Redundancy)位中,NbRep表示每条上行消息被重复收到的次数,仅用于 unconfirmed 类型的上行消息。
默认值为 1 ,有效范围[1:15]。
如果终端设备收到NbRep == 0,则使用默认值。
服务器使用该字段控制节点上行数据冗余,以得到给定的服务质量。
终端在重传时的调频照常执行,每次重发以后等待接收数据,直到接收窗口过期。
信道掩码控制(ChMaskCntl)字段控制上面ChMask的位掩码的解释。
当网络上信道的实现超过16个,该字段必须是一个非0值。
用它来控制ChMask 使用哪16个信道,还可以用它来全局性的打开或关闭所欲使用指定调制方式的信道。
该字段的具体使用和地域相关,具体见第7章。
信道频率也和地域有关,具体定义见第6章。
终端收到LinkADRReq后回复LinkADRAns命令。
LinkADRAns Status释义如下:
表6:LinkADRAns状态位定义
以上三个字段任意一个是0,命令就会执行失败,而节点也保持之前的状态不变。
5.3 终端的发射占空比(DutyCycleReq 和 DutyCycleAns)
DutyCycleReq,网络协调员使用该命令来限制终端设备的总发射占空比的最大值。
总发射占空比指所有子频带的发射占空比。
终端允许的发射占空比的最大值:
总发射占空比=12MaxDCycle
MaxDutyCycle有效范围[0:15]。
在没有区域调节设置占空比限制的情况下,使用0表示“占空比没有限制”。
值为255时要求终端设备立刻转为静默状态,等价于远程关闭终端。
终端收到DutyCycleReq后回复DutyCycleAns,DutyCycleAns不包含任何payload。
5.4 接收窗口相关参数(RXParamSetupReq,RXParamSetupAns)
对于每一次的上发,通过下发RXParamSetupReq命令,可以修改第二个接收窗口(RX2)使用的频率和数据率。
还可以使下行RX1数据率相对上行数据率偏移。
RX1DRoffset用来设置终端设备上行和下行第一个接收窗口(RX1)数据速率之间的偏移,默认值是0。
设置偏移是因为基站所在区域的功率密度可能会有上限,还可以用来平衡上行和下行的无线链路预算。
RX2DataRate定义第二个接收窗口使用的数据速率,用法和LinkADRReq 一样(例如,0表示DR0/125kHz)。
Frequency是第二个接收窗口使用的信道频率,其频率编码规则的定义见NewChannelReq命令。
终端设备回复RXParamSetupAns,其payload只有一个字节:
Status位结构如下:
表7: RX2SetupAns 的status bits 含义
其中的任何一个是0,命令都会执行失败并保持之前的状态。
5.5 终端状态(DevStatusReq, DevStatusAns)
服务器通过发送DevStatusReq获取一个终端设备的状态,该命令没有载荷。
终端收到DevStatusReq之后回复DevStatusAns。
电池电量(Battery)上报的数据编码如下:
表8:电池电量编码
余量(Margin)是最近一次接收成功DevStatusReq命令的解调信噪比,其值(四舍五入)取整,单位dB。
余量值是一个有符号整型,长度6个比特位,最小值-32,最大值31。
5.6 创建或修改信道(NewChannelReq, NewChannelAns)
NewChannelReq命令要么用来修改已有信道的参数,要么创建一个新的信道。
该命令设置新信道的中心频率以及该信道的数据速率范围。
信道索引(ChIndex)是新信道或者待修改信道的索引值。
LoRaWAN规范中已经为不同的地域和频宽内置了默认信道,这些信道存在所有的设备上,而且不能通过NewChannelReq(见第6章)进行修改。
如果默认的信道数量是N,那默认的信道就是0 ~ N-1,而ChIndex可用范围就是N ~ 15。
终端设备至少要能处理16 个不同的信道。
在某些特定的区域终端允许存储超过16个信道。
频率(Freq)是一个24bits 无符号整型,实际信道频率是100 ×Freq Hz(笔记:按这个说法,433.1MHz 服务器发送的数据是4331000),其中100MHz以下的值留待未来使用。
通过这种方法可以以100 Hz为步长,设置使用
100MHz~1.67GHz 之间任意的信道频率。
Freq== 0表示不使用该信道。
终端设备必须对频率进行检查,保证它的射频硬件支持要使用的频率,并返回一个是否错误的信息。
数据速率范围(DrRange),该字段指明此信道的数据速率范围。
该字由两个4位长的索引组成:
根据章节5.2的定义,最小数据速率(MinDR)字段指定此信道最低数据速率,例如:0 表示指定DR0/125 kHz。
与之类似,最大数据速率指定最高数据速率,例如:DrRange = 0x77表示信道只能使用50kbps GFSK,DrRange = 0x50表示数据速率范围是DR0 / 125 kHz 到DR5 / 125 kHz。
启用新定义的信道,并可以马上用它进行通信。
终端回复NewChannelAns命令,其payload如下:
状态(Status)每位的含义如下:
两者之中有一个是0,就表示命令执行失败,不会创建信道。
5.7 Rx和Tx之间的延迟(RXTimingSetupReq,RXTimingSetupAns)
RXTimingSetupReq用来配置上行TX结束到打开第一个接收窗口的延迟。
第二个接收窗口比第一个晚1秒打开(根据当前规范这里时间差不能改动)。
延迟(Delay)字段指定延迟,由两个4位的索引组成:
延迟单位是秒(s),0对应1秒:
终端设备回复RXTimingSetupAns,不携带payload(负载数据)。
6 终端激活(End-Device Activation)
所有终端设备在正式加入LoRaWAN网络之前必须先进行初始化并激活。
有两种激活方式:无线激活(Over-The-Air Activation (OTAA)),设备部署和重置时使用;手动激活(Activation By Personalization (ABP)),此时初始化和激活一步完成。
6.1 激活成功后存储在终端设备的数据
以下信息在激活成功后回存储在终端设备:设备地址(DevAddr)、应用ID (AppEUI)、网络会话密钥(NwkSKey)和应用会话密钥(AppKey)。
6.1.1 终端设备地址(DevAddr)
DevAddr是终端在当前网络中的识别码,大小32bits。
结构如下:
最高7位是网络ID(NwkID),用以区分有地域重叠的不同网络运营商和弥补有路由问题的网络。
接下来的25bits,终端设备网络地址(NwkAddr),该地址可以有由网络管理员分配。
6.1.2 应用唯一识别ID(AppEUI)
AppEUI是IEEE EUI64 的全球唯一应用ID,用以识别终端设备的应用服务提供商(等等)。
AppEUI在进行激活操作之前就存储在终端设备中了。
就是说AppEUI是出厂时烧录进去的。
6.1.3 网络会话密钥(NwkSKey)
NwkSKey是分配给终端设备的网络会话密钥。
网络服务器和设备用它来计算和校验所有消息的MIC(消息一致码),来保证收发的数据一致。
也可以用来对MAC负载(MAC命令放在Payload里面)的消息进行加/解密。
6.1.4 应用会话密钥(AppSKey)
AppSKey是分配给终端设备的应用会话密钥。
网络服务器和设备用来对应用指定的 Payload字段进行加解密。
也可以用来计算和校验应用层MIC(可能存放在应用指定消息的Payload中)。
6.2 无线激活(Over-the-Air Activation)
终端设备在与网络服务器交流(数据交换)之前,必须先通过加入过程加入网络服务器。
每次终端设备会话的上下文丢失(与服务器通信断开)后都要重新加入。
加入服务器之前,要使用以下信息初始化终端设备:全局唯一设备ID (DevEUI)、应用ID(AppEUI)、AES-128密钥(AppKey)。
AppEUI在上面6.1.2中有介绍。
* 注意:无线激活时,网络密钥初不会向初始化那样写死到终端,而是在终端加入网络时由网络层衍生并分发,该密钥用来对传输数据进行加密和校验。
这样,终端设备能很方便的在不同的网络服务器和应用提供商之间切换。
使用网络会话密钥和应用会话密钥*可以避免应用数据被网络供应商(网络服务器拥有者)解析或篡改,从而接入大量的网络服务器。
6.2.1 终端设备ID(DevEUI)
DevEUI是全球终端ID,符合 IEEE EUI64,用来唯一辨识终端设备。
6.2.2 应用密钥(AppKey)
AppKey是AES-128的应用密钥,由应用拥有者通过应用指定的根密钥衍生并分配给终端设备,根密钥只有应用供应商知晓和掌握。
终端设备通过无线激活入网时,通过AppKey衍生会话密钥NwkSKey和AppSKey,并分发相应的终端设备,用来加密和校验网络通讯和应用数据。
6.2.3 入网流程
从终端的角度看,和服务器交互的入网流程包含两个MAC消息:join request 和 join accept.
6.2.4 入网请求(Join-request message)
入网流程由终端发起,终端入网时发送入网请求,消息格式(MACPayoad)如下:
入网请求消息包含:AppEUI、DevEUI和终端设备产生的2字节的随机数(DevNonce)
DevNonce是个随机值,终端设备最近使用的一些(数量自定义)DevNonce会保存在网络服务器(NS)。
如果终端发送的入网请求中的DevNonce在NS中可以查到,该请求就会被忽略。
注意:该机制的目的是防止重放攻击(replay attacks),避免其它人通过发送之前的入网请求来断开终端设备和网络的连接。
入网请求的消息一致性校验码(MIC)(见第4章MAC消息部分)通过下述算法计算:
cmac = aes128_cmac(AppKey, MHDR | AppEUI | DevEUI | DevNonce)
MIC = cmac[0..3]
入网请求以明文发送。
6.2.5 接受入网消息(Join-accept)
服务器同意终端入网后网络服务器(NS)会回复“接受入网”消息。
接受入网使用“JOIN_ACCEPT_DELAY1”或“JOIN_ACCEPT_DELAY2”(而不是
RECEIVE_DELAY1 和RECEIVE_DELAY2),和普通消息一样发送。
这两种接收窗口使用的信道频率和数据率与 RX1和RX2的接收窗口(见章节“物理层”之”接收窗口”)相同。
入网请求被拒绝则服务器不发送任何数据。
接受入网消息包含以下字段:应用层随机数(AppNonce),3字节;网络ID (NetID);终端地址(DevAddr);介于 TX 和 RX(RxDelay)之间的延迟;信道频率的一系列配置(CFList)。
CFList相关内容见第7章。
AppNonce是由网络服务器产生的一个随机数或唯一ID,终端设备用它来衍生两个会话密钥:NwkSKey和AppSKey。
衍生算法如下:
NwkSKey = aes128_encrypt(AppKey, 0x01 | AppNonce |NetID | DevNonce | pad16)
AppSKey = aes128_encrypt(AppKey, 0x02 | AppNonce | NetID | DevNonce | pad16) 接受入网的MIC计算方式如下:
cmac=aes128_cmac(AppKey,MHDR|AppNonce|NetID|DevAddr|RFU|RxDelay|CFList)
MIC = cmac[0..3]
RX1DRoffset设置上下行数据速率之间的偏移(偏差),和终端设备交互的首个接收时隙(RX1)。
(感冒好几天了,头懵,不知道该怎么翻译)offset默认为0。
下行数据速率不能比上行的大。
考虑到一些地区基站的最大功率密度限制,offset用来平衡上行和下行的无线链路余量。
上行和下行链路数据速率之间的确切关系见章节“物理层(Physical Layer)”
延时RxDelay规则和RXTimingSetupReq命令中的Delay字段相同。
6.3 手动激活
手动激活需要生产商提供的工具和配套网关等,考虑到目前国内还没有,暂时不翻译。
7.1 欧洲ISM频段863-870MHz
7.1.1 欧洲863-870 前导码
同步字见下表:
symbols参考资料:比特速率、码片速率和符号速率等区分
7.1.2 欧洲863-870 ISM频段信道频率
欧洲的无线电频谱的ISM频段由ETSI[EN300.220]分配。
网络运营商可以自己定义网络通道,但任何 EU868MHz 终端设备都必须实现下面三个默认信道。
这些信道是所有网络网关都必须一直终监听的最小集合。
为了访问物理层,ETSI强制规定了一些限制,发射机可以在线的最大时间或者发射机每小时内可以发送的最大时间。
ETSI允许使用占空比限制或者使用所谓的Listen Before Talk Adaptive Frequency Agility (LBT AFA) 传输管理。
为了遵守ETSI规定,现在的LoRaWAN规范仅使用占空比对传输做限制。
LoRaWAN强制规定每个子带的占空比限制。
给定子带上每一帧数据的发射时间和空中传输时间都会被记录下来。
子带在接下来Toff 秒之内不能再次使用,其中:
Toff_subband=TimeOnAirDutyCycle_subban d−TimeOnAir 在指定子带不可用期间,设备可以通过其它子带发送数据,如果所有的子带都不可用,设备就只能等待下一次传输。
设备根据可用子带调整其信道调频顺序。
例如:A设备在默认信道上只传输帧数据消耗了0.5s,该信道子带的占空比1%,那么A在接下来 49.5s 内不能再次使用整个子带(868-868.6)。
49.5=0.51%−0.5=0.5×100−0.5
EU868MHz ISM 频段的终端设备的默认参数如下:
列表中道值的单位是 100Hz,其中100Mhz以下的频率暂时保留(待未来使用)。
这就可以以100Hz为步长,在100MHz~1.67GHz之间设置任意频率的信道。
CFList是可选配置,可以通过检查JoinAccpet消息长度来检测它。
一旦CFList
出现,就会用它里面的信道替换节点上除了3个默认信道(第6章有说明)以外。