LORAWAN中文,lorawan中文全称
本作品内容为LORAWAN中文,格式为 doc ,大小 790568 KB ,页数为 45页
('LoRaWAN规范1。0(2~8章)2IntroductiononLoRaWANoptions2。1LoRaWANClasses\uf0b7终端双向通讯(A类)\uf0b7低功耗,先发送后接收,发送和接收交替进行。终端只有再发送数据后才能接收处理服务器发送来的数据,发送数据不受接收数据的限制。收发比=1:1\uf0b7具有接收时隙的终端双向通讯(B类)\uf0b7同样是先发送后接收,不同的是每次发送后按照一定时间间隔启动接收窗口,接收多条数据。时间间隔从网关获取,以便服务器知晓终端接收消息的时刻。收发比=1:N\uf0b7最大接收时隙的终端双向通讯(C类)\uf0b7打开接收窗口的时间间隔很小,几乎不间断的接收消息。比A和B更耗能,但和服务器交互的延迟低。2。2规范\uf0b7高级类的附加功能向下兼容低级类。所有LoRaWAN终端必须实现A类的功能.\uf0b7注意:本规范手册中:物理消息格式、MAC消息格式以及A类和其它高级类都具备的东西,只在本手册的A类部分介绍。3PhysicalMessageFormats\uf0b7LoRa中区分上行和下行的术语。3。1上行链路消息\uf0b7上行链路消息由终端发送经过一个或多个网关中转到达网络服务器。\uf0b7它使用的LoRa无线分组显性模式由物理头(PHDR)和它的CRC(PHDR_CRC)校验组成。负载的一致性(发送和接收的数据完全一致,不仅仅是完整)由CRC保证.UplinkPHY:3。2下行链路消息\uf0b7下行链路消息由网络服务器发送给终端设备,每条消息对应的终端设备是唯一确定的,而且只通过一个网关中转。\uf0b7下行链路消息由物理头(PHDR)和这个头的CRC(PHDR_CRC)组成.下行链路消息:3。3接收窗口设备终端每次发送数据(上行传输)后打开两个短接收窗口(shortreceivewindows)。接收窗口的启动时间是配置好的时间周期,该时间在最近一条上行传输比特数据的结尾。4MACMessageFormatsLoRa所有的上下行链路消息都会包含PHY负载,该负载以单字节MAC头为开始,MAC头后面是MAC负载,结尾是4字节的消息一致码(MIC)。4。1MACLayer(PHYPayload)MACPayload字段长度M的最大值见第六章.4.2MACHeader(MHDRfield)MAC头中包含消息类型(MType)和帧编码所遵循的LoRaWAN规范的主版本号(Major)。RFU是保留位。4。2.1Messagetype(MTypebitfield)LoRaWAN自定义了六个独特的MAC消息类型:joinrequest,joinaccept,unconfirmeddataup/down,以及confirmeddataup/downMTypeDescription备注000JoinRequest无线激活过程使用,具体见章节6。2001JoinAccept无线激活过程使用,具体见章节6。2010UnconfirmedDataUp接受者不必回应011UnconfirmedDataDown接受者不必回应100ConfirmedDataUp接受者必须回应101ConfirmedDataDown接受者必须回应110RFU保留111Proprietary用来实现自定义格式的消息,交互的设备之间必须有相同的处理逻辑,不能和标准消息互通4.2。1。1Join-requestandjoin—acceptmessages已经添加上表的到备注4。2。1.2Datamessages消息数据既能传输MAC命令又能传输应用数据,甚至可以一起发送。不同消息类型用不同的方法保证一致性,下面会介绍这一点.4。2。2Majorversionofdatamessage(Majorbitfield)MajorbitsDescription00LoRaWANR101。.11RFU(保留)\uf0b7注意:主版本号指明激活过程中(inthejoinprocedure)使用的消息格式(章节6。2)和MACPayload前4字节(第4章).终端要为每个不同的主版本号实现不同子版本的消息格式。终端使用的主版本号应当提前发送给网络服务器,可以作为其它消息的一部分捎带发送,如,设备个性化信息。4.3MACPayloadofDataMessages(MACPayload)MAC荷载,也就是所谓的“数据帧”,包含:帧头(FHDR)、可配置的端口字段(FPort)以及可配置的帧负载字段(FRMPayload)4.3.1Frameheader(FHDR)FHDR由:终端短址(DevAddr)、一个帧控制字节(FCtrl)、2字节的帧计数器(即帧大小,FCnt)和最多15个字节的配置(FOpts,用来传输MAC命令)组成。4。3。1.1帧头中的自适应数据速率控制(ADR,ADRACKReqinFCtrl)LoRa网络对终端的数据速率没有任何限制。LoRaWAN协议通过该特性调整优化静态终端(相对移动终端来讲)的数据速率,即自适应数据速率(AdaptiveDataRate(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位,因为终端在等待接收期间收到任何应答都表示网关还能接收来自该设备的上行数据.\uf0b7注意:为了让网络对下行链路给出最佳的调度方案,不要要求对ADR请求立刻做出应答,要给网络留足时间。\uf0b7注意:上行传输时,如果ADR_ACK_CNT>=ADR_ACK_LIMIT并且当前数据速率比设备的最小数据速率高,就要设置ADRACKReq,其它情况下不需要。4。3。1。2消息确认位和确认流程(ACKinFCtrl)收到confirmed类型的消息时,接收者要回复一条确认消息(ACK,通过设置确认位实现)。如果发送者是终端,网络就把消息发送到该终端打开的接收窗口。如果发送者是网关,终端就自行决定发送确认消息的传输方式。确认消息只会在收到消息以后作为响应发送,并且不重发.\uf0b7注意:为了尽量简化终端处理、减少状态,一旦收到需要确认的消息要立刻发送确认消息,确认消息要简单直接(最好发空消息).4.3。1。3重传机制(Retransmissionprocedure)\uf0b7如果终端设备发送一条需要确认的消息后没有收到响应,终端就会重新发送这条消息.不同设备间的消息重传的次数和每次的时间可能不同,当然这些也可以通过网络服务器调节。\uf0b7注意:18章给出了一些确认机制的时间\uf0b7注意:如果设备重传次数到限制后还没收到确认消息,就会降低自身的数据传输速率来增加连接距离再次尝试连接.这种条消息的重传或者放弃是由终端决定的。\uf0b7注意:如果网络服务器重传次数达到限制后还没有收到确消息,在没有收到设备的消息之前会认为无法与终端建立连接(终端不可达)。这种消息的重传或者放弃是由服务器决定的。\uf0b7注意:上面提到的重传期间的数据速率回归机制在18.4有详细介绍4.3.1.4帧挂起位(FPendinginFCtrl,downlinkonly)\uf0b7帧挂起位(FPending)只在下行交互中使用,表示网关还有数据挂起等待发送。此时需要终端尽快发送上行消息来再打开一个接收窗口。FPending的详细用法在18。3。4。3。1.5计数器(FCnt)\uf0b7每个终端有两个计数器:上行链路计数器(FCntUp),由终端产生并维护,记录发往服务器的帧数量;下行链路计数器(FCntDown),由服务器产生并维护,记录服务器发往终端的帧数量(此处与我们当前的设备服务器与设备的交互中的messageid作用相同,都是为了保证消息收发一致)。终端加入服务器成功以后,终端和服务端的帧号同时置0。之后每次其中一方发送消息后,与之对应的FCntUp或FCntDown就会加1。接收方会同步保存接收数据的的帧号,对比收到的增加过的值和当前保存的值,如果两者之差小于MAX_FCNT_GAP(要考虑号码归零,即号码达到最大值后重新从0开始),接收方就与收到的数据保持同步(更新成收到的值).如果两者之差大于MAX_FCNY_GAP就说明中间丢失了很多数据然后就会丢掉这条数据。PS4翻译更正如下:\uf0b7LoRaWAN的帧计数器有16位和32位两种长度,两者有所不同:16bits时,其值可以直接作为FCnt使用(反之亦然),此时有需要的话通过在前面填充0(值为0)字节(来补足);32bits时,FCnt对应计数器的16个最低有效位(2个低字节).上行数据使用上行FCnt,下行数据使用下行FCnt。一个节点在上行FCnt的一次循环内,如果不是消息重传,上行传输数据使用的FCnt不能重复.\uf0b7PS:注释掉原文的直译,原文说法有问题。\uf0b7FCnt的一次循环指的是:从1到达最大值,0x1~0xFFFF(因为LoRaWAN中的FCnt字段是2个字节)。\uf0b7原文档中所谓的“相同的的应用会话密钥和网络会话密钥”就是没有重新入网,重新入网FCnt重新计算,是FCnt循环计数的一种特殊情况。当计数器使用32位时,FCnt字段只发送32bits中的16个最低有效位.此时服务器需要通过观察传输的数据来自己维护16个最高有效位.4.3.1。6帧配置(FOptsLeninFCtrl,FOpts)\uf0b7帧配置长度(FOptsLen)位于帧的FCtrl部分,表示FOpts的总长度。FOpts搭载到数据帧中发送的MAC命令最长15字节,详细的MAC命令见4.4.如果帧配置长度FOptsLen=0,FOpts为空;如果FOpts不为空(里面是MACommand),端口号要么省略,要么是一个非零值(具体看下面).\uf0b7MAC命令不能同时出现在payload(负载)和帧配置项中。4。3.2端口字段Portfield(FPort)\uf0b7负载(payload)不为空的时候端口号(port)也不能是空。此时port=0表示FRMPayload中只有MAC命令(详情见章节4。4).FPort值的可用范围是:1~223(0x01~0xDF),224~255(0xE0~0xFF)为保留值,方便以后扩展.\uf0b7N是应用负载的字节数,N的取值范围见第7节N≤M—1-(FHDR的字节长度)\uf0b7其中M是MAC的最大有效荷载长度。4。3。3MAC帧负载据加密(FRMPayload)\uf0b7如果帧数据中包含payload,要先对FRMPayload进行加密,再计算消息的一致码(MIC)。\uf0b7加密方案使用基于IEEE802。15.4/2006AnnexB[IEEE802154]的AES加密,秘钥长度128位.默认情况下,所有FPort的加/解密都在LoRaWAN层完成;如果FPorts不为0,加/解密可以在LoRaWAN层之上完成。4.3。3。1LoRaWAN加密\uf0b7加密秘钥K取决于消息的FPort:FPortK备注0NwkSKey网络密钥1。。255AppSKey应用密钥表3,FPort列表\uf0b7加密字段:pld=FRMPayload\uf0b7采用分组加密,算法位每条消息数据定义一个块的序列,序列分为k块,k=ceil(len(pld)/16)(向上取整),每组用Ai表示,i=1…k,每块结构如下:字节数1414411Ai0x014×0x00DirDevAddrFCntUp或FCntDown0x00i\uf0b7Dir字段:上行帧为0,下行帧为1。对Ai加密,得到Si:\uf0b7通过分割对payload进行加解密:4.3.3.2EncryptionabovetheLoRaWANlayer\uf0b7对于选定的端口(FPort不能是0,因为0表示MAC命令),如果LoRaWAN前面的一些层给LoRaWAN的FRMPayload是加密过的,LoRaWAN就把FRMPayload从MACPayload转发给应用,并且转发过程中不做任何改动。4。4MessageIntegrityCode(MIC)对整个消息进行MIC计算(AES签名算法CMAC),需要加密的消息包括以下字段:msg=MHDRFHDR|FPort|FRMPayloadlen(msg)表示消息的字节长度。MIC算法参考RFC4493:\uf0b7B0定义如下:字节数1414411B00x494×0x00DirDevAddrFCntUp或FCntDown0x00len(mgs)Dir字段:上行帧为0,下行帧为15MACCommands网络管理时会在网络服务器和终端MAC层之间传输一系列MAC命令。一帧数据中可以包含任何MAC命令,MAC命令既可以放在FOpts中,也可以放在FRMPayload中,但不能同时在两个字段携带MAC命令。MAC命令放在FRMPayload时,FPort=0。放在FOpts的命令不加密(原因:加密Payload,对整个数据签名),也不能超过15个字节(2^4-1)。放在FRMPayload的MAC命令长度不能超过FRMPayload的最大值。\uf0b7注意:不想被别人截获的命令要放到FRMPayload,并单独发送该数据帧\uf0b7一条mac命令由一个命令ID(CID,一个字节),和特定的命令序列组成,命令序列可以是空.命令ID命令终端发送网关发送简介0x02LinkCheckReq×用于终端验证网络连接0x02LinkCheckAns×回应验证请求,同时包含终端接收质量相关的估算的信号功率0x03LinkADRReq×请求终端改变数据率、传输功率、接收率或者信道0x03LinkADRAns×LinkRateReq的应答0x04DutyCycleReq×设置设备的最大总发射占空比0x04DutyCycleAns×DutyCycleReq的应答0x05RXParamSetupReq×设置接收时隙相关参数0x05RXParamSetupAns×RXSetupReq的应答0x06DevStatusReq×请求终端状态0x06DevStatusAns×返回终端装填,即电量和解调情况0x07NewChannelReq×创建或修改无线电信道0x07NewChannelAns×NewChannelReq的应答0x08RXTimingSetupReq×设置接收时隙的时间命令ID命令终端发送网关发送简介0x08RXTimingSetupAns×RXTimingSetupReq的应答0x800xFFProprietary××保留命令\uf0b7注:MAC命令长度没有明确给出来,这就需要MAC执行端通过某种方式隐性获得.因为无法忽略不明的MAC命令,而且一旦遇到不明的MAC命令,就会导致处理MAC命令队列的进程终止。因此,建议参考使用LoRaWAN规范中的MAC命令。这样的话,所有当前版本LoRaWAN规范中实现的MAC命令都可以被更高版本的规范兼容处理。5。1链路检查LinkCheckReq和LinkCheckAns终端使用LinkCheckReq命令对链路进行有效性检查,该命令不含payload。网络服务器收到网关(一个或多个)转发过来的LinkCheckReq数据后回复一条LinkCheckAns命令。大小(字节)11LinkCheckAnsPayloadMarginGwCntMargin(解调幅度)是最近一条被成功收到的LinkCheckReq命令的链路预算(单位dB),是一个8位(bits)无符号整型,范围[0,254]。值为0表示在解调(信号强度)的下限上收到了数据,值20表示网关在比解调下限高出20dB的信号强度上收到了数据.255是保留值.GwCnt是最近一次成功收到LinkCheckReq的网关的数量。linkmargin参考:Linkmargin5。2速率自适应LinkADRReq和LinkADRAns服务器通过发送LinkADRReq命令让终端设备进行速率自适应.大小(字节)121LinkADRReqPayloadDataRate_TXPowerChMaskRedundancy大小(位bits)[7:4][3:0]DataRate_TXPowerDataRateTXPower数据速率(DataRate)和TX输出功率(TXPower),两者和地理区域相关,编码参考第7章.信道掩码(ChMask)通过对相应的最低有效位填0来对上行信道进行编码,信道列表如下:表5:信道状态表第几位可用信道0Channel11Channel2.。.。15Channel16ChMask中某位是1,表示该位对应的上行信道可用;如果是0,则表示对应的上行信道不可用。终端设备当前使用的信道要设为1(不知道是我不会断句,还是官方文档这里说的不明白)。第几位7[6:4][3:0]Redundancybits保留ChMaskCntlNbRep冗余(Redundancy)位中,NbRep表示每条上行消息被重复收到的次数,仅用于unconfirmed类型的上行消息。默认值为1,有效范围[1:15]。如果终端设备收到NbRep==0,则使用默认值。服务器使用该字段控制节点上行数据冗余,以得到给定的服务质量。终端在重传时的调频照常执行,每次重发以后等待接收数据,直到接收窗口过期。信道掩码控制(ChMaskCntl)字段控制上面ChMask的位掩码的解释。当网络上信道的实现超过16个,该字段必须是一个非0值。用它来控制ChMask使用哪16个信道,还可以用它来全局性的打开或关闭所欲使用指定调制方式的信道.该字段的具体使用和地域相关,具体见第7章.信道频率也和地域有关,具体定义见第6章。终端收到LinkADRReq后回复LinkADRAns命令。大小(字节)1LinkADRAnsPayloadStatus大小(位)[7:3]210StatusbitsRFUPowerACKDatarateACKChannelmaskACKLinkADRAnsStatus释义如下:表6:LinkADRAns状态位定义字段(字段值=)0(字段值=)1ChannelmaskACK要使用的信道未定义。忽略该命令,终端状态不改变设置成功*DatarateACK*终端未定义或者不支持该速率(可用信道不支持该速率)。命令被忽略,终端状态不改变设置成功PowerACK终端未定义该功率等级。命令被忽略,终端状态不改变设置成功以上三个字段任意一个是0,命令就会执行失败,而节点也保持之前的状态不变。5.3终端的发射占空比(DutyCycleReq和DutyCycleAns)DutyCycleReq,网络协调员使用该命令来限制终端设备的总发射占空比的最大值。总发射占空比指所有子频带的发射占空比。大小(字节)1DutyCycleReqPayloadMaxDCycle终端允许的发射占空比的最大值:总发射占空比=12MaxDCycleMaxDutyCycle有效范围[0:15]。在没有区域调节设置占空比限制的情况下,使用0表示“占空比没有限制”。值为255时要求终端设备立刻转为静默状态,等价于远程关闭终端。终端收到DutyCycleReq后回复DutyCycleAns,DutyCycleAns不包含任何payload。5。4接收窗口相关参数(RXParamSetupReq,RXParamSetupAns)对于每一次的上发,通过下发RXParamSetupReq命令,可以修改第二个接收窗口(RX2)使用的频率和数据率。还可以使下行RX1数据率相对上行数据率偏移。大小(字节)13RX2SetupReqPayloadDLsettingsFrequency第几位76:43:0DLsettingsRFURX1DRoffsetRX2DataRateRX1DRoffset用来设置终端设备上行和下行第一个接收窗口(RX1)数据速率之间的偏移,默认值是0.设置偏移是因为基站所在区域的功率密度可能会有上限,还可以用来平衡上行和下行的无线链路预算。RX2DataRate定义第二个接收窗口使用的数据速率,用法和LinkADRReq一样(例如,0表示DR0/125kHz)。Frequency是第二个接收窗口使用的信道频率,其频率编码规则的定义见NewChannelReq命令。终端设备回复RXParamSetupAns,其payload只有一个字节:大小(字节)1RX2SetupAnsPayloadStatusStatus位结构如下:第几位7:3210StatusbitsRFURX1DRoffsetACKRX2DatarateACKChannelACK表7:RX2SetupAns的statusbits含义字段(值=)0(值=)1ChannelACK(对于终端)频率不可用RX2信道设置成功RX2DatarateACK(对于终端)未知的数据速率RX2数据速率设置成功RX1DRoffsetACKRX1上行/下行数据速率的偏移不在可用范围设置成功其中的任何一个是0,命令都会执行失败并保持之前的状态。5.5终端状态(DevStatusReq,DevStatusAns)服务器通过发送DevStatusReq获取一个终端设备的状态,该命令没有载荷。终端收到DevStatusReq之后回复DevStatusAns。大小(字节)11DevStatusAnspayloadBatteryMargin电池电量(Battery)上报的数据编码如下:电量说明0终端在使用外接电源1。。254电池电量,1是最小值,254是最大值255终端设备无法获取电池电量表8:电池电量编码余量(Margin)是最近一次接收成功DevStatusReq命令的解调信噪比,其值(四舍五入)取整,单位dB。余量值是一个有符号整型,长度6个比特位,最小值-32,最大值31。占位(bits)7:65:0StatusRFUMargin5。6创建或修改信道(NewChannelReq,NewChannelAns)NewChannelReq命令要么用来修改已有信道的参数,要么创建一个新的信道。该命令设置新信道的中心频率以及该信道的数据速率范围。大小(字节)131NewChannelReqpayloadChIndexFreqDrRange信道索引(ChIndex)是新信道或者待修改信道的索引值。LoRaWAN规范中已经为不同的地域和频宽内置了默认信道,这些信道存在所有的设备上,而且不能通过NewChannelReq(见第6章)进行修改.如果默认的信道数量是N,那默认的信道就是0~N-1,而ChIndex可用范围就是N~15.终端设备至少要能处理16个不同的信道。在某些特定的区域终端允许存储超过16个信道。频率(Freq)是一个24bits无符号整型,实际信道频率是100×FreqHz(笔记:按这个说法,433.1MHz服务器发送的数据是4331000),其中100MHz以下的值留待未来使用.通过这种方法可以以100Hz为步长,设置使用100MHz~1.67GHz之间任意的信道频率。Freq==0表示不使用该信道.终端设备必须对频率进行检查,保证它的射频硬件支持要使用的频率,并返回一个是否错误的信息。数据速率范围(DrRange),该字段指明此信道的数据速率范围。该字由两个4位长的索引组成:大小(bits)7:43:0DrRangeMaxDRMinDR根据章节5.2的定义,最小数据速率(MinDR)字段指定此信道最低数据速率,例如:0表示指定DR0/125kHz。与之类似,最大数据速率指定最高数据速率,例如:DrRange=0x77表示信道只能使用50kbpsGFSK,DrRange=0x50表示数据速率范围是DR0/125kHz到DR5/125kHz.启用新定义的信道,并可以马上用它进行通信。终端回复NewChannelAns命令,其payload如下:大小(字节)1NewChannelAnsPayloadStatus状态(Status)每位的含义如下:大小(bits)7:210StatusRFUDataraterangeokChannelfrequencyok字段(字段值=)0(字段值=)1Dataraterangeok数据速率范围超出终端当前所允许的范围终端兼容该数据速率范围Channelfrequencyok终端无法使用该频率可以使用两者之中有一个是0,就表示命令执行失败,不会创建信道.5。7Rx和Tx之间的延迟(RXTimingSetupReq,RXTimingSetupAns)RXTimingSetupReq用来配置上行TX结束到打开第一个接收窗口的延迟。第二个接收窗口比第一个晚1秒打开(根据当前规范这里时间差不能改动)。大小(字节)1RXTimingSetupReqPayloadSettings延迟(Delay)字段指定延迟,由两个4位的索引组成:大小(bits)7:43:0SettingsRFUDel延迟单位是秒(s),0对应1秒:Del延迟(秒)01112233……1515终端设备回复RXTimingSetupAns,不携带payload(负载数据)。6终端激活(End-DeviceActivation)所有终端设备在正式加入LoRaWAN网络之前必须先进行初始化并激活。有两种激活方式:无线激活(Over-The-AirActivation(OTAA)),设备部署和重置时使用;手动激活(ActivationByPersonalization(ABP)),此时初始化和激活一步完成。6.1激活成功后存储在终端设备的数据以下信息在激活成功后回存储在终端设备:设备地址(DevAddr)、应用ID(AppEUI)、网络会话密钥(NwkSKey)和应用会话密钥(AppKey)。6.1.1终端设备地址(DevAddr)DevAddr是终端在当前网络中的识别码,大小32bits。结构如下:Bit[31.。25][24..0]DevAddrbitsNwkIDNwkAddr最高7位是网络ID(NwkID),用以区分有地域重叠的不同网络运营商和弥补有路由问题的网络。接下来的25bits,终端设备网络地址(NwkAddr),该地址可以有由网络管理员分配。6。1.2应用唯一识别ID(AppEUI)AppEUI是IEEEEUI64的全球唯一应用ID,用以识别终端设备的应用服务提供商(等等)。AppEUI在进行激活操作之前就存储在终端设备中了。就是说AppEUI是出厂时烧录进去的。6.1.3网络会话密钥(NwkSKey)NwkSKey是分配给终端设备的网络会话密钥。网络服务器和设备用它来计算和校验所有消息的MIC(消息一致码),来保证收发的数据一致。也可以用来对MAC负载(MAC命令放在Payload里面)的消息进行加/解密。6.1.4应用会话密钥(AppSKey)AppSKey是分配给终端设备的应用会话密钥。网络服务器和设备用来对应用指定的Payload字段进行加解密。也可以用来计算和校验应用层MIC(可能存放在应用指定消息的Payload中)。6。2无线激活(Over—the-AirActivation)终端设备在与网络服务器交流(数据交换)之前,必须先通过加入过程加入网络服务器。每次终端设备会话的上下文丢失(与服务器通信断开)后都要重新加入。加入服务器之前,要使用以下信息初始化终端设备:全局唯一设备ID(DevEUI)、应用ID(AppEUI)、AES-128密钥(AppKey)。AppEUI在上面6。1。2中有介绍。注意:无线激活时,网络密钥初不会向初始化那样写死到终端,而是在终端加入网络时由网络层衍生并分发,该密钥用来对传输数据进行加密和校验。这样,终端设备能很方便的在不同的网络服务器和应用提供商之间切换.使用网络会话密钥和应用会话密钥*可以避免应用数据被网络供应商(网络服务器拥有者)解析或篡改,从而接入大量的网络服务器。6.2。1终端设备ID(DevEUI)DevEUI是全球终端ID,符合IEEEEUI64,用来唯一辨识终端设备.6.2.2应用密钥(AppKey)AppKey是AES—128的应用密钥,由应用拥有者通过应用指定的根密钥衍生并分配给终端设备,根密钥只有应用供应商知晓和掌握。终端设备通过无线激活入网时,通过AppKey衍生会话密钥NwkSKey和AppSKey,并分发相应的终端设备,用来加密和校验网络通讯和应用数据.6.2.3入网流程从终端的角度看,和服务器交互的入网流程包含两个MAC消息:joinrequest和joinaccept。6。2.4入网请求(Join—requestmessage)入网流程由终端发起,终端入网时发送入网请求,消息格式(MACPayoad)如下:字节数882JoinRequestAppEUIDevEUIDevNonce入网请求消息包含:AppEUI、DevEUI和终端设备产生的2字节的随机数(DevNonce)DevNonce是个随机值,终端设备最近使用的一些(数量自定义)DevNonce会保存在网络服务器(NS)。如果终端发送的入网请求中的DevNonce在NS中可以查到,该请求就会被忽略。注意:该机制的目的是防止重放攻击(replayattacks),避免其它人通过发送之前的入网请求来断开终端设备和网络的连接。入网请求的消息一致性校验码(MIC)(见第4章MAC消息部分)通过下述算法计算:cmac=aes128_cmac(AppKey,MHDRAppEUI|DevEUIDevNonce)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章。大小(字节)33411变长(16)接受入网AppNonceNetIDDevAddrDLSetingRxDelayCFListAppNonce是由网络服务器产生的一个随机数或唯一ID,终端设备用它来衍生两个会话密钥:NwkSKey和AppSKey。衍生算法如下:NwkSKey=aes128_encrypt(AppKey,0x01|AppNonceNetID|DevNoncepad16)AppSKey=aes128_encrypt(AppKey,0x02|AppNonceNetIDDevNoncepad16)接受入网的MIC计算方式如下:cmac=aes128_cmac(AppKey,MHDR|AppNonceNetIDDevAddr|RFURxDelayCFList)MIC=cmac[0。。3]消息本身采用AppKey加密,加密方式如下:aes128_decrypt(AppKey,AppNonceNetID|DevAddr|RFU|RxDelay|CFList|MIC)注意:网络服务器加密接收入网消息使用的是AECECB模式的解密算法。这样终端就不必再实现AES解密算法,只用AES加密即可。PS:之前关于NetID的翻译有误,特此更正。NetID包含:7个最低有效位的NetID,称作NwkID;17个最高有效位,存放前面提到的终端短址。区域相邻或重叠的网络的NwkID不能相同。网络服务器可以任意处理余下的17个最高有效位.NetID包含:NetID的7个最低有效位称作NwkID,即DevAddr(终端短址)的7个最高有效位。区域相邻或重叠的网络的NwkID不能相同。余下的17个最高有效位由网络运营商自由分配.DLsetting字段含有下行配置:位(Bits)76:43:0DLsettingsRFURX1DRoffsetRX2DatarateRX1DRoffset设置上下行数据速率之间的偏移(偏差),和终端设备交互的首个接收时隙(RX1)。(感冒好几天了,头懵,不知道该怎么翻译)offset默认为0.下行数据速率不能比上行的大。考虑到一些地区基站的最大功率密度限制,offset用来平衡上行和下行的无线链路余量。上行和下行链路数据速率之间的确切关系见章节“物理层(PhysicalLayer)"延时RxDelay规则和RXTimingSetupReq命令中的Delay字段相同。6.3手动激活手动激活需要生产商提供的工具和配套网关等,考虑到目前国内还没有,暂时不翻译。7。1欧洲ISM频段863-870MHz7.1。1欧洲863-870前导码同步字见下表:调制方式同步字前导码长度LoRa0x348symbolsGFSK0xC194C15bytessymbols参考资料:比特速率、码片速率和符号速率等区分7.1.2欧洲863—870ISM频段信道频率欧洲的无线电频谱的ISM频段由ETSI[EN300。220]分配。网络运营商可以自己定义网络通道,但任何EU868MHz终端设备都必须实现下面三个默认信道.这些信道是所有网络网关都必须一直终监听的最小集合。调制方式带宽[kHz]信道频率[MHz]FSK比特率或LoRa数据率或比特率Nb信道占空比LoRa125868.10/868。30/868。50DR0至DR5/0。3-5kbps3〈1%为了访问物理层,ETSI强制规定了一些限制,发射机可以在线的最大时间或者发射机每小时内可以发送的最大时间。ETSI允许使用占空比限制或者使用所谓的ListenBeforeTalkAdaptiveFrequencyAgility(LBTAFA)传输管理。为了遵守ETSI规定,现在的LoRaWAN规范仅使用占空比对传输做限制.LoRaWAN强制规定每个子带的占空比限制。给定子带上每一帧数据的发射时间和空中传输时间都会被记录下来。子带在接下来Toff秒之内不能再次使用,其中:Toff_subband=TimeOnAirDutyCycle_subband−TimeOnAir在指定子带不可用期间,设备可以通过其它子带发送数据,如果所有的子带都不可用,设备就只能等待下一次传输。设备根据可用子带调整其信道调频顺序。例如:A设备在默认信道上只传输帧数据消耗了0.5s,该信道子带的占空比1%,那么A在接下来49.5s内不能再次使用整个子带(868-868.6)。49。5=0.51%−0。5=0.5×100−0.5EU868MHzISM频段的终端设备的默认参数如下:默认无线传输的发送功率:14dBmEU868Mhz频段的终端设备应能够在863~870MHz频段范围内运行,并且应有至少能存储16个信道参数的信道数据的结构体。一个信道数据结构对应一个频率以及一组改频率下可用的数据速率。前三个信道是868.1,868.3和868。5MHz/DR0至DR5,这些参数必须在所有(EU868MHz下使用的)终端设备实现。这些默认信道不能通过NewChannelReq命令进行修改,以保证终端设备和网关之间存在最小的信道集合。下表给出了终端设备用来发送入网激活请求的频率列表,入网请求传输占空比绝对不能超过0.1%表13:EU863—870JoinReqChannellist解调模式带宽[kHz]信道频率[MHz]FSK比特率\\n\\rLoRa数据速率/比特率Nb信道占空比LoRa125864。10,864。30,864。50,868。10,868。30,868.50DR0-DR5/0。3—5kbps6<0。1%7。1.3EU863—870数据速率以及节点输出功率的编码下表是数据速率(DR)和节点输出功率(TXPower)在EU863—870上的编码:表14:数据速率和TX功率数据速率配置对应物理比特速率[bit/s]0LoRa:SF12/125kHz2501LoRa:SF11/125kHz4402LoRa:SF10/125kHz9803LoRa:SF9/125kHz17604LoRa:SF8/125kHz31255LoRa:SF7/125kHz54706LoRa:SF7/250kHz110007FSK:50kbps500008。。15RFU…TXPower配置020dBm(ifsupported)114dBmTXPower配置211dBm38dBm45dBm52dBm6..15RFU7。1。4EU863-870JoinAcceptCFList欧洲863—870ISM频段的LoRaWAN在JoinAccept消息中实现了一个16字节的可选信道配置列表(CFlist)。CFList由第4至第8这5个信道组成,每个信道都是3字节的无符号整型数字,不使用的信道填充0。所有列表里面的信道都可以使用LoRa模式的DR0~DR5。列表最后有一个填充字节用来凑足16字节,该字节暂时无意义(保留字节)。字节333331CFListFreqCh4FreqCh5FreqCh6FreqCN7FreqCh8RFU列表中道值的单位是100Hz,其中100Mhz以下的频率暂时保留(待未来使用).这就可以以100Hz为步长,在100MHz~1。67GHz之间设置任意频率的信道。CFList是可选配置,可以通过检查JoinAccpet消息长度来检测它.一旦CFList出现,就会用它里面的信道替换节点上除了3个默认信道(第6章有说明)以外的信道,新的信道立刻可用并被终端用来通信.7.1.5EU863—870的LinkAdrReq命令EU863-870的LoRaWAN支持最多16个信道,此时“ChMaskCntl”字段值是0,ChMask字段挨个“打开/关闭”这16个信道。表15:ChMaskCntl值列表ChMaskCntlChMask控制的信道0信道1~16ChMaskCntlChMask控制的信道1RFU…RFU4RFU5RFU6开启所有信道。设备打开所有已经定义的独立于ChMask字段的信道7RFU7.1。6EU863-870payload最大字节数MACPayload最大长度(单位:字节)见下表。该长度受PHY层限制,考虑到可能会有中继封装层PHY层依赖于有效调制速率.下表同样给出了在没有FOpt的情况下,应用负载最大长度的参考值(翻译调整,感谢朋友:四渡赤水)(不参考前面章节根本不知道什么断句,这语法也是醉了).如果FOpt字段费空,N的值可能会更小:表16:EU863—870payload最大长度DataRateM(MACPayload长度)N(FRMPayload长度)059511595125951312311542302225230222623022272302228:15未定义未定义7。1。7EU863-870接收窗口第一个接收窗口RX1使用和上行(使RX1开启的上行消息)相同的信道,数据速率是上行数据速率的一个函数,RX1DROffset见下表。RX1DROffset的范围是[0:5],[6:7]是保留值。RX1DROffset上传数据速率(列)\\下发数据速率RX1slot(行)012345DR0DR0DR0DR0DR0DR0DR0DR1DR1DR0DR0DR0DR0DR0DR2DR2DR1DR0DR0DR0DR0DR3DR3DR2DR1DR0DR0DR0DR4DR4DR3DR2DR1DR0DR0DR5DR5DR4DR3DR2DR1DR0DR6DR6DR5DR4DR3DR2DR1DR7DR7DR6DR5DR4DR3DR2接收窗口“RX2"使用修改后的频率和数据速率。默认参数是869.525MHz/DR0(SF12,125kHz)7.1.8EU863-870默认设置下面是EU863—870Mhz频段相应参数的推荐值参数推荐值RECEIVE_DELAY11sRECEIVE_DELAY22s(必须是RECEIVE_DELAY1+1s)JOIN_ACCEPT_DELAY15sJOIN_ACCEPT_DELAY26sMAX_FCNT_GAP16384ADR_ACK_LIMIT64参数推荐值ADR_ACK_DELAY32ACK_TIMEOUT2+/-1s(1~3的随机值)如果终端中实现的实际值和这些默认值不一样(比如,RECEIVE_DELAY1和RECEIVE_DELAY2延迟时间更长),这些参数的值一定要通过外带信道(out—of-bandchannel)通知给网络服务器.网络服务器可能会不接受与默认值不一致的参数。7。2美国902-928MHzISM频段7.3中国779-787MHzISM频段7.4欧洲902—928MHzISM频段目前的LoRaWAN协议(也就是lorawan1.0.x)可以分成两部分.章节1~7、17~.这是LoRaWAN协议的基础,讲A类和C类.对服务器来说C类和A类差别不大,关于第17章C类章节8~13主要讲B类。A类和B类在协议格式上区别不大,但从服务器角度看这两个除了协议包,其它变动都很大,想要在同一个逻辑里面实现比较困难.10B类模式的上行数据帧除了帧头中FCtrl字段的保留(RFU)位,B类和A类的上行数据帧一样.B类使用A类中没有使用的RFU位:第几位76543…0FCtrlADRADRACKReqACKClassBFOptsLen上行数据中的ClassB位设为1,来告诉网络服务器:设备已经转换为B类模式,已经准备在照预定时间接收下行ping。下行数据的FPending位意义不变,仍然表示服务器上有等待发送给设备的消息。如果下行数据使用该标记,设备应当按照A类的规范来接收数据。11下行Ping帧格式(B类)11.1物理层帧格式和A类下行帧格式一致,不过可能要按照不同的信道频率规划.11。2单播和组播MAC消息消息可以是单播,也可以是组播.给一个终端设备单独发送消息使用单播,给多个终端设备发送使用组播.组播时属于同一组的设备必须使用相同的组播地址和加密密钥。LoRaWANB类规范并没有指定这些,这就是说要远程设置组播的组,或者安全地分发组播需要的密钥相关的信息。这些信息必须要设置,要么在节点手动激活的时候一起配置,要么通过应用层配置(远程).11。2。1单播的MAC消息格式单播时的,下行Ping的MAC负载(MACpayload)遵循A类规范,终端设备处理数据的方式完全相同。同时也使用相同的帧计数器,无论下行数据使用B类的pingslot还是使用A类的“piggy-back”slot,计数器都会增加。11。2。2组播的MAC消息格式组播帧和单播帧的格式只有一些微小差别:禁止携带MAC命令,不论在FOpt还是在payload(port=0):因为组播和单播的验证稳健性不同。ACK和ADRACKReq必须为0,MType必须使用不需要回复的类型(UnconfirmedDataDown)。此处的FPending表示还有组播数据需要发送。一旦使用,下一次组播的接收时隙会发送一个数据帧;如果不使用,下一个组播可以带数据也可以不带数据。当接收时隙冲突时,终端可以用它来评估优先级。12信标捕获和追踪终端设备由A类切换到B类之前要先接收一次网络的信标,来校正它的内部时序。终端设备进入B类模式以后,为了关闭和网络时间不一致(时基发生漂移)的内部时钟,要定期搜寻、接收网络信标。使用B类的终端有时可能会接收不到信标(超出网关连接范围、有干扰等等),这种情况下终端设备就必须逐步扩大其信标的范围,而且pingslots的接收窗口也要考虑到内部时钟漂移的情况。注:例如,一个设备,其内部时钟精度10ppm,那么每个信标周期就可能会漂移+/-1。3ms。10ppm,每天误差百万分之十秒,表示一天会有10×24×60×60=0。864s的误差.12。1最小无信标操作时间设备在没有信标的情况下,会维持B类模式2小时(距最后一次收到信标120分钟),这种临时的没有信标的B类操作称作“无信标"操作,这些操作都依赖终端设备自身的时钟计时.在无信标期间,为了适应终端可能出现的时钟漂移,单播、组播和信标的接收时隙必须要逐步扩大。12.2建立在接收上的无信标操作扩展在120分钟“无信标”期间,终端接收到任何信标,都会重置“无信标”时间(重新从0计算)。终端设备会通过接收到的信标来修正时间漂移,并重置接收时隙的时间长度。12。3时间漂移最小化终端设备可以使用信标(如果可以的话)的精度周期性的校准它们的内部时钟,并降低内部时钟频率的误差。由于定时振荡器的时间偏移与温度相关,并且可以计算出来,因此可以通过使用温度传感器进一步降低时间漂移。13B类下行时隙时间13。1定义为保证B类终端设备操作成功,必须要在精确的时间点开启接收时隙,该时间点与基础信标有关。本节会详细介绍这些时间.两个信标起点之间的时间间隔称作信标周期。信标以BEACON_RESERVED的起点作为数据传输的起始时刻。每个信标的前面都有一段守护时间,守护时间内部不会有任何pingslot。守护时间的时间长度和所允许的最长帧在空中的传输时间一致,以此来保证守护时间之前任何时刻开始的下行数据都能被接收完,并且不会和接收信标发生冲突。pingslot的可用时间范围:从信标预留时间的结束时刻开始,到下一个信标守护时间的起始时刻结束。表35:信标时间名称时间长度Beacon_period128sBeacon_reserved2.120sBeacon_guard3。000sBeacon-window122.880s信标在空中传输的时间远远小于信标为网络管理广播帧预留的时间。信标窗口时间间隔分成215=4096个时长为30ms的pingslots(ping时隙),这些时隙从第0个开始,至4095个结束。终端设备一旦使用第N个时隙,就必须精确的在信标起始之后的第Ton秒打开接收窗口,其中Ton计算方法如下:Ton=beacon_reserved+N×30N是时隙索引(第N个时隙),单位ms。最后一个pingslot在上次信标开始之后的第beacon(信标)_reserved+4095×30ms=124970ms或者下次信标开始之前的第3030ms打开。13。2随机时隙为了避免系统冲突和over—hearing(不确定是窃听还是过载,不过根据LoRWAN的功能推断这里应该是过载),使用随机的时隙索引,并且每个信标期间都要变化.参数如下:DevAddr设备单播或组播网络地址,32位pingNb每个信标周期内的pingslot数量.必须是2的指数倍:2k其中1≤k≤7pingPeriodPeriodofthedevicereceiverwake-upexpressedinnumberofslots:212pingNbpingOffsetoffset是个随机值,每次信标周期开始时通过计算获得。范围:0~(pingPeriod—1)beaconTime该时间在BCNPayload中,TimeoftheimmediatelyprecedingbeaconframeslotLen一个pingslot的时长:30ms为了校准(对齐)接收时隙,每个信标周期终端设备和服务器都会重新计算一个伪随机偏移。随机数生成使用AES加密算法,密钥全部由0组成:Key=16x0x00Rand=aes128_encrypt(Key,beaconTime|DevAddr|pad16pingOffset=(Rand[0]+Rand[1]x256)modulopingPeriod本信标周期内使用的缝隙:RX0和RX1叫做接收窗口,窗口的范围比较大,也比较固定,而此处打开的是比窗口更小的单位(一个周期内的N个pingslot),译为缝隙.slot有插槽的意思,作为程序员看到“接收槽容易误解为”接收池。不管插槽还是猪槽,槽都是一个盛放东西的容器,而窗口和缝隙都是从一个地方到另一个地方的接口,使用缝隙更合适。为什么不使用时隙?因为缝隙更形象、直接.pingOffset+NxpingPeriod其中N=[0:pingNb-1]节点在以下时间点打开接收缝隙:缝隙开启时刻缝隙1Beacon_reserved+pingOffsetxslotLen缝隙2Beacon_reserved+(pingOffset+pingPeriod)xslotLen缝隙3Beacon_reserved+(pingOffset+2xpingPeriod)xslotLen……缝隙nBeacon_reserved+(pingOffset+(n-1)xpingPeriod)xslotLen如果终端设备同时提供一个单播以及一个或多个组播缝隙,那么在一个新的信标周期开始时,要进行多次这种计算。为单播地址计(节点网络地址:DevAddr)算一次,为每个组播地址计算一次。单播和组播的缝隙冲突时,终端设备的接收器优先处理组播.如果多个组播接收缝隙冲突,上次FPending标记位非0的优先处理。使用随机化方案来避免单播时隙和组播时隙之间系统级别的冲突。如果在某个信标周期出现冲突,下一个信标周期几乎没有发生冲突的可能性。电磁波波长传播的距离长还是波长短的传播距离长?1、波长越长,绕射能力越强,可以绕过小于波长的障碍物,可以延长一些传播距离,传播距离就长。沿地面传播的无线电波叫地波.当天线架设较低,且其沿地面方向为最大辐射方向时,主要是地波传播。地波传播的特点是信号比较稳定,基本上不受天气的影响因此,地波能够传播超过数百千米或数千千米。2、波长越短,绕射能力越差,在有障碍物的情况下,传播距离近。但是穿透能力强。即直接穿透障碍物。所以我们在使用电磁波进行穿视和材料探伤时,选用短波、微波。3、但是在星际通讯中,不考虑障碍物时,波长的长短一样,传播衰减按照距离。1引言本文描述了LoRaWAN?网络协议,该协议被优化用于电池供电终端设备,这些设备既可以是移动的,也可以是安装在某一固定位置的。LoRaWAN网络协议基于star-of—stars拓扑结构.在该结构中,网关在终端设备和后台的中央网络服务器中传递信息.网关通过标准IP连接网络服务器,与此同时,终端设备使用单跳段的LoRa和FSK通信方式来和一个或多个网关相连。尽管主要的通信量来自于从终端设备到网络服务器的上行链路,但所有的通信一般来说都是双向的.终端设备和网关之间的通信在不同频率的信道中以不同的数据率传出。数据率的选择是通信范围和消息长度的折中。不同数据率的通信不会互相干扰。LoRa的数据率范围是从0.3kbps到50kbps。为了使电池寿命和整体网络容量同时最大化,LoRa的网络基础设施用自适应数据率的方案单独处理每个终端设备的数据率和射频输出。只要遵守以下规则,终端设备可以在任意时间在任意可利用的信道中,以任意可利用的数据率进行传输。对于每一次传输,终端设备以随机的方式改变信道.由此产生的频率差异性可以使系统对干扰具有更强的鲁棒性.设备终端的最大传输占空比和使用的子带及当地规则有关.设备终端的最大传输持续时间(或停留时间)和使用的子带及当地规则有关。注意:每个子带最大传输占空比和停留时间具有区字段差别并且由第六章给出定义。1.1LoRaWAN的分类本文所描述的所有的LoRaWAN设备至少需要执行CLASSA功能。除此之外,他们可以完成CLASSB的选择,本文也会描述CLASSC或者其他被定义了的类型。在所有的情况下,他们必须可以保持和CLASSA兼容。1网关也被称作集线器或者基站2终端设备也被成为微粒3中间单元的支持—中继器-不会在本文中进行描述。但是封装开销的负荷限制会包括在此说明中.中继器使用LoRaWAN作为其回程机制。1.2惯例MAC指令被写为LinkCheckReq,字和字段被写为FRMPayload,常量被写为RECEIVE_DELAY1,变量被写为N.在本文中,所有多八位位字段的八位指令是低位优先。?EUI是64位整型,以低位优先传输.2LoRaWAN选项简介LoRa?是由Semtech研发的远程低功耗低数据率的无线调制设备。完成高于CLASSA的设备在本文中称为“更高等级终端设备”。2。1LoRaWAN的分类LoRa网络区分为基本LoRaWAN(命名为CLASSA)和可选功能(CLASSB,CLASSC……):双向终端设备(CLASSA):通过在终端设备上行链路传输后开放两个下行链路窗口,使ClassA的设备可以双向通信。传输时隙由终端设备决定,该传输时隙基于其自身的通信需求,在随机时间基准(ALOHA型协议)上进行小变动。由于应用层只在终端设备上行链接传输后较短的时间内需要来自服务器的下行链路通信,因此CLASSA模式的设备是功耗最低的终端设备系统。服务器在其他任意时刻的下行链路都需要等待直到下一个确定的上行链路。低功耗,先发送后接收,发送和接收交替进行.终端只有再发送数据后才能接收处理服务器发送来的数据,发送数据不受接收数据的限制。收发比=1:1。具有确定接收时隙的双向终端设备(CLASSB):CLASSB设备考虑了更多接收时隙。除CLASSA的随机接收窗口外,CLASSB设备会在确定的时间内打开额外的接收窗口。为保证终端设备在确定的时间内打开接收窗口,终端设备会从网关接收到一个时间同步信标。这使服务器知道终端设备何时在监听。先发送后接收,每次发送后按照一定时间间隔启动接收窗口,接收多条数据。时间信标从网关获取,以便服务器知晓终端接收消息的时刻。收发比=1:N具有最大接收时隙的双向终端设备(CLASSC):CLASSC的终端设备具有接近于连续地开放接收窗口,接收窗口只在传输时关闭。相对于CLASSA和CLASSB,CLASSC终端设备会消耗更多的能量,但是在CLASSC模式下,服务器到终端设备通信的延时最短。打开接收窗口的时间间隔很小,几乎不间断。更耗能,但和服务器交互的延迟低。2.2说明范围这个LoRa规范描述了将一个更高等级的终端设备和CLASSA区分开来的额外功能。一个更高等级的终端设备也会完成在LoRaWAN中CLASSA规范中所有描述的功能,具有向下兼容性。注意:物理信息格式、MAC信息格式和其他和CLASSA及更高级终端设备所共有的这个规范地其他部分都只是在LoRaWANCLASSA规范中进行了描述,以此来避免冗余。3物理消息格式LoRa术语区分上行链路和下行链路消息。3。1上行链路消息上行链路信息由终端设备通过一个或多个网关传输给网络服务器。下行设备使用LoRa射频传输包显性模式,模式包括LoRa的物理和它的CRC校验.有效负荷的完整性由CRC进行保护。无线收发器将PHDR,PHDR_CRC和有效负荷CRC字段插入其中。上行链路PHY:图2上行链路PHY结构3。2下行链路消息每一个下行链路消息都由网络服务器通过唯一的网关转接传输给一个终端设备。下行消息使用射频数据包显性模式,该模式包括一个物理数据头和CRC头。下行链路PHY图3下行链路PHY结构3.3接收窗口每个上行链路传输后,终端设备会紧接着开放两个短接收窗口。接收窗口开始时间是传输的最后一个上行位末尾。1看LoRa射频收发器数据手册对LoRa射频数据包隐式/显性模态的描述2本规范没有描述从一个网络服务器到多个终端设备的多情况信息的传输。3在这个水平下完成无有效负荷完整性检查,以此来在保证对任意的被使用了的ISM带占空比限制的最小的影响下,信息尽量短。图4终端设备接收时隙时序3.3。1第一个接收窗口信道,数据率,和开始第一个接收窗口RX1和上行链路使用同一个频率信道,并且数据率是上行链路所使用数据率的函数。在上行调制结束RX1开放,持续时间RECEIVE_DELAY11s(正负20us误差)。上行链路和RX1时隙下行数据率的关系是具有局字段性的,在第七章会有详细地描述。系统默认值为第一个接收窗口的数据率和上一个上行链路的数据率一致。3。3。2第二个接收窗口信道,数据率,和开始第二个接收窗口RX2使用固定配置频率和数据率。当上行链路调制结束后接收窗开放RECEIVE_DELAY21s(正负20us误差)的时长.频率和数据率可以通过MAC指令进行修改(参考第五章)。使用的系统默认的频率和数据率具有局字段性,详细情况参考第七章.3。3。3接收窗口时长接收窗口长度必须至少是终端设备无线收发器有效地检测到一个下行前导所需要的最小时间。3.3.4接收窗口的接收激活若任意一个接收窗口中检测到前导,射频接收器将保持活性直到下行链路帧解调制。如果在第一接收窗口检测到一个帧并解调制。如果在地址及消息完整性代码检测后确认该帧是给该终端设备的帧,终端设备则不会再打开第二接收窗。3。3。5网络向终端设备发送消息如果网络准备向终端设备传输一个下行链路,他通常会在两个窗口的任意一个窗口的开始时间准确地进行传输RECEIVE_DELAY1和RECEIVE_DELAY2在第六章进行讲解3。3。6关于接收窗口的重要提示一个终端设备在它在先前传输的第一个或者第二个接收窗口已经接到了下行消息,或者先前传输的第二个接收窗口过期之前,是不能够接受其他上行链路消息的.3.3。7接收或传输其他协议节点可以监听或者传输其他协议或者在LoRaWAN传输和接收窗口间做处理,只要终端设备保持了和当地规则的兼容性并且和遵守LoRaWAN的规则。4MAC信息格式;所有LoRa上行链路和下行链路消息均携带一个PH;4.1MAC层(PHY有效载荷);MAC有效载荷字段的最大长度(M)具有局域性并在;4.2MAC头(MHDR字段);MAC头中包含消息类型(MType)和帧编码所遵;最大有效载荷字节数在第六章详细说明;4.2.1消息类型(MTypebitfield);LoRaWAN区分六个不同的MAC信息类4MAC信息格式所有LoRa上行链路和下行链路消息均携带一个PHY有效载荷,以单字节MAC头4。1MAC层(PHY有效载荷)MAC有效载荷字段的最大长度(M)具有局域性并在第六章做了详细的定义.4.2MAC头(MHDR字段)MAC头中包含消息类型(MType)和帧编码所遵循的LoRaWAN规范的主版本号(Major)。RFU是保留位最大有效载荷字节数在第六章详细说明4。2.1消息类型(MTypebitfield)LoRaWAN区分六个不同的MAC信息类型:joinrequest,joinaccept,unconfirmeddataup/down,以及confirmeddataup/down。入网接受无线激活过程使用,具体见章节6.2MTypeDescription000入网请求001入网接受010无ACK数据上行接受者不必回应011无ACK数据下行接受者不必回应100含ACK数据上行接受者必须回应101含ACK数据下行接受者必须回应110保留保留用来实现自定义格式的消息,交互的设备之间必须有相同的处理逻辑,不能和标准消息互通111专有表1MAC信息类型4.2。1。1Join-requestandjoin—accept信息Join—requestandjoin—acceptmessages信息的使用方法通过6。2中的无线激活程序给出。4.2.1。2数据消息数据消息用来传输MAC指令和设备数据,MAC指令和设备数据可以整合到一个消息中。unconfirmeddataup/down消息需要接收器确认(ACK),confirmeddataup/down消息不需要确认(ACK)。专有消息可以用于不能与被标准消息共同使用但是必须要在和私有扩展有共识的设备中使用的非标准信息格式。对于不同的信息类型,信息的完整性由不同的方式进行保证,并且由以下每一个信息类型进行描述.表2主要列表注意:主要版本指定了加入进程中(见6。2)中被改变的信息的格式并且MAC有效载荷的首起的四个字节在第四章阐述.对于每一个主要版本,终端设备可以完成帧格式的不同的副本。被终端设备使用的副本必须使用带外消息提前告知网络服务器。(例如,作为设备初始化信息的一部分)描述LoRaWANR1RFU一个确认机制的详细的时序表在第十八部分给出.4.3数据信息的MAC有效载荷(MAC有效载荷)数据信息的MAC有效载荷,被称为“数据帧",包括一个帧头(FHDR),紧接着可配置的端口字段(FPort)和可选帧有效载荷字段(FRMPayload)。4。3。1帧头(FHDR)帧头(FHDR)包括了终端设备的设备短地址(DevAddr),一个一位帧控制位(FCtrl),一个2位帧计数器和一个达到15位的,用来传递MAC指令的帧配置(FOpts)。下行帧的帧头的Fctrl的内容:上行帧的帧头的Fctrl内容:4。3.1.1在帧头中的自适应数据率控制(ADR,ADRACKReqinFCtrl)LoRa网络允许终端设备单独使用任何可能的数据率。LoRaWAN应用该特性来适应和优化静态终端设备的数据率。这称为自适应数据率(AdaptiveDataRate,ADR)并且当该ADR被使能时,网络将会被优化尽可能地使用最快的数据率。当移动终端设备在射频环境中引起快速变化时数据率管理是不现实的,因此移动终端设备需要使用固定的默认数据率。如果ADR位置位,网络将会通过合适的MAC指令控制终端设备的数据率.如果ADR不置位,不管接收信号的质量如何,网络将不能试图控制终端设备的数据率.根据需求,在指令中ADR直接可以被终端设备或网络置位或不置位。然而,无论什么时候可能,ADR应该使能来增加终端设备电池的寿命和充分利用网络带宽。注意:即使是移动终端设备实际上在大多数时间都是不移动的。因此根据移动性的状态,终端设备可以要求网络使用ADR去优化数据率。如果终端的数据速率经过网络优化比默认值大,那他就要定期检查保证网络能够收到上传的数据。终端上行的帧号每增加一次(重复发送不增加帧号),同时ADR_ACK_CNT+1。上行帧号达到ADR_ACK_LIMIT(ADR_ACK_CNT〉=ADR_ACK_LIMIT)仍然没有收到回复,就设置ADR请求应答标记(ADRACKReq).接下来向网络发送请求,如果在发送上行请求后的一定时间ADR_ACK_DELAY内收到服务器下行帧的回应则重置ADR_ACK_CNT数量。在此期间不需设置下行ACK位,因为在终端等待接收期间(接收时隙内)收到任何应答都意味着网关还会接收来自该设备的上行数据.如果终端在下一个上行链路ADR_ACK_DELAY(例如,一共过了时间:ADR_ACK_LIMIT+ADR_ACK_DELAY))内没有收到任何回复,就会尝试切换到更低的数据速率上(无线广播范围的距离更长)再次连接,每次终端设备达到ADR_ACK_LIMIT就会再次降低自己的数据速率.如果设备使用默认的数据速率就不需要设置ADRACKReq,因为这种情况下任何操作都不会改善连接范围(增加连接距离)。注意:不需要立即响应ADK确认请求为网络优化其下行链路提供了灵活性.注意:在上行链路传输,如果ADR_ACK_CNT>=ADR_ACK_LIMIT并且当前数据率比设备默认的最小数据率大,那么ADRACKReq会被设置,而在其他情况下,ADRACKReq会被清除.4。3.1.2信息确认位和确认进程(ACKinFCtrl)当接收到一个确认数据(confirmeddata)消息时,接收器将会用确认位置位的数据帧来响应。如果发射器是个终端设备,网络将会在发射操作后使用由终端设备开放任一的接收窗发送的确认(ACK).如果发射器是一个网关,那么终端设备将会在其权限中终端就自行决定发送确认消息的传输方式。确认只是在对最新接收的信息响应中发送,而且绝不会重新发送。注意:为了使终端设备尽可能简单,尽可能减少状态,在数据信息需要确认的请求被接收后,它可以立刻传输一个明文(可能是空的)确认数据信息.作为二选一,终端设备也可以推迟ACK的传输,用下一个数据消息装载其ACK。4。3.1.3重新机制对于被请求确认(ACK)但并未接收到(ACK)的同一个信息重发(及时间设置)的次数是由终端设备自己设置,每一个终端设备可能都不相同,也可以通过网络服务器设置或调整。注意:如果一个终端设备重发次数已达到最大值,但仍未收到ACK,可以通过降低数据率获取更大的射频范围来尝试重新连接。它取决于终端设备再次重发信息或放弃传输该信息继续发送其他信息。注意:如果网络服务到了最大数量的重发而未接到ACK,一般可认为终端设备是不可以到达的,直到再次接到来自终端设备的信息。它取决于网络服务器一旦问题终端设备再次重新连接就再次重发信息或放弃传输该信息继续发送其他信息。4.3.1。4帧挂起位(FPendinginFC;帧挂起位(FPending)只在下行链路交互中使;帧挂起位准确的使用方法在18.3中描述;4。3.1.5帧计数(FCnt);每一个终端设备有两个帧计数器来记录上行发送给网络;LoRa允许使用16位或者32位的帧计数器;FCnt的一次循环指的是:从1到达最大值,0x1。4.3。1。4帧挂起位(FPendinginFCtrl,只在下行链路中)帧挂起位(FPending)只在下行链路交互中使用,这表示网关有更多的数据挂起等待发送,因此要求终端设备通过发送另外一个上行信息,尽可能快的开放另一个接收窗口.帧挂起位准确的使用方法在18。3中描述。4.3。1。5帧计数(FCnt)每一个终端设备有两个帧计数器来记录上行发送给网络服务器的数据帧数量(FCntUp),由终端设备来增加,由来自网络服务器(FCntDown)的终端设备的下行链路来接收,FCntDown的值由网络服务器增加。网络服务器跟踪上行链路帧计数器并且为每一个终端设备产生下行计数器.在加入接收后,终端设备和终端设备的网络服务器的帧计数器被重新置0。随后在各自的方向每发送一个数据帧,在发送侧的FCntUp和FCntDown均加1。在接收器侧,倘若接收到的值相比于当前计数值大并且比在考虑了号码归零之后的MAX_FCNT_GAP指定值小,那么对应的计数值保持和接收到的值保持同步。如果差距比MAX_FCNT_GAP的值大,这意味着很多数据帧已经丢失了,将放弃后续发送.LoRa允许使用16位或者32位的帧计数器。网络侧需要在带外被告知已在指定设备中完成的帧计数器的宽度。如果使用一个16位帧计数器,可以直接使用FCnt字段作为计数器,如果需要通过前置0字节尽可能地扩展。如果使用一个32位帧计数器,则FCnt字段分别对应32位帧计数器的最低有效16位(例如,上行数据使用上行FCnt,下行数据使用下行FCnt)。一个节点在上行FCnt的一次循环内,如果不是消息重传,上行传输数据使用的FCnt不能重复。FCnt的一次循环指的是:从1到达最大值,0x1~0xFFFF(因为LoRaWAN中的FCnt字段是2个字节)注意:当计数器使用32位时,FCnt字段只发送32bits中的16个最低有效位。此时服务器需要通过观察传输的数据来自己维护16个最高有效位.4。3。1。6帧配置(FOptsLeninFCnt,FOpts)FCtrl位中的帧配置长度字段表示帧配置字段(FOpts)的实际长度.MAX_FCNT_GAP、RECEIVE_DELAY1andRECEIVE_DELAY2的实际最大值,可以在7.1。7forEU863-870or7。2。7forUS902—928找到Fopts装载到数据帧中发送的MAC命令最长15字节;4。4给出了有效的MAC指令清单。如果FOptsLen是0,那么FOpts字段是缺省的.如果FOptsLen不为0,例如如果在FOpts有MAC指令存在,那么端口端口号要么省略,要么是一个非零值(具体看下面).MAC指令不能同时出现在有效负载字段和帧配置字段。4。3。2端口字段(FPort)如果帧有效负载字段不空,那么端口字段也不能空。一个FPort的0值表明FRMPayload只包括MAC指令,见4.4有效的MAC指令清单.FPort值1..223(0x01..0xDF)是具体应用的.FPort值224。.255(0XE0.。0xFF)是为将来的标准化设备扩展保留的.N是设备有效载荷的字节数.N的有效范围具有区域特异性并且在第七章被定义.N应该等于或者小于:N?M?1??lengthofFHDRinoctets?其中M是MAC有效载荷字节数的最大值。4.3。3MAC帧有效载荷加密(FRMPayload)如果一个数据帧装载一个有效载荷,FRMPayload必须在信息整体编码计算前加密。使用的加密方案是基于IEEE802.15。4/2006AnnexB[IEEE802154]中描述的泛型算法,该算法使用的AES的秘钥长度为128字节.作为默认值,在LoRaWAN层为所有的FPort进行加密、解密。如果这样对设备更加方便的话,也可以在LoRaWAN层上为除0以外特定的FPorts加密和解密。关于FPort和来自于哪个节点的、在LoRaWAN层外被加密或解密的信息必须要通过带外信道和服务器进行通信。(见第十九章)4。3。3.1LoRaWAN中的加密使用的秘钥K取决于数据信息的FPortKNwkSKeyAppSKey备注网络密钥应用密钥表3FPort列表加密字段为:pld=FRMPayload采用分组加密,对于每个数据消息,算法确认了块序列Ai,i=1。。。k,k=(len(pld)/16)正向取整。字段的方向(Dir)上行链路帧是0,下行链路帧是1。块Ai被加密以获得一个块Si来获得序列S:Si=aes128_encrypt(K,Ai)fori=1.。kS=S1S2…|Sk有效载荷的加密和解密通过截断完成:(pldpad16)xorS4.3.3。2LoRaWAN层以上的加密如果LoRaWAN层上在被选择的端口提供预加密FRMPayload给LoRaWAN层(但并未在FPort0,该端口MAC指令预留),LoRaWAN将来自MACPayload的FRMPayload转化为设备,并且将来自设备的FRMPayload不经过对FRMPayload的任何修正直接转化为MACPayload。4.4信息完整编码信息完整编码在信息全部的字段中被计算。msg=MHDRFHDRFPort|FRMPayload通过len(msg)表示在字节中信息的长度。根据[RFC4493]计算MICcmac=aes128_cmac(NwkSKey,B0|msg)MIC=cmac[0..3]块B0的定义如下:方向字段(Dir)对于上行帧是0,对于下行帧是1.5MAC指令对于网络管理,一系列MAC指令可能只在网络服务器和终端设备的MAC层上进行交换。MAC层指令对应用或应用服务器或在终端设备上的运行应用是不可见的。单一的数据帧可以包括任意序列的MAC指令,或者在FOpts字段装载或者当在FPort字段的值被设为0的FRPayload字段中发送一个单独的数据帧的时候装载.装载的MAC指令通常不经过加密就会被发送,并且必须不能超过15个字节.作为FRMPayload发送的MAC指令经常是加密的并且最大长度不能超过FRMPayload的最大长度.一帧数据中可以包含任何MAC命令,MAC命令既可以放在FOpts中,也可以放在FRMPayload中,但不能同时在两个字段携带MAC命令。MAC命令放在FRMPayload时,FPort=0.一个MAC指令由一个字节的,并很可能紧跟一序列空的特定指令序列的指令标识符组成。指令标识符0x02指令LinkCheckReq终端发送网关发送简介:用于终端设备来检验和网络的连接性响应LinkCheckReq指令,包括已接受信号功率评估只是终端设备接收质量(连接范围)要求终端设备改变数据率、传输功率、重复速率或信道确认LinkRateReq指令设置一个设备最大的聚合传输占空比。确认DutyCycleReq指令设置接收时隙参数确认RXSetupReq指令请求终端设备状态返回终端设备状态,即电池水平和解调制范围创建或者修改射频信道定义。确认NewChannelReq指令设置接收时隙时序确认RXTimingSetupReq指令.保留专有网络命令拓展。注意:MAC指令的长度没有明确的给出的并且必须使MAC执行暗自知晓,因此未知的MAC指令不能被跳过,并且第一个未知的MAC指令终止MAC指令序列的进程。因此根据LoRaWAN的说明书版本来定制MAC指令,而说明书在第一次就已经介绍了MAC指令。这样所有取决于已完成的LoRaWAN说明书的版本的MAC指令均可以用一个比已完成的LoRaWAN说明书版本更新的版本进行处理。注意:任何被网络服务器调整了的值(例如RX2,新的或者被调整了的信道定义)仍保持有效的直到下一个终端设备的加入。因此当每一个成功加入进程后,终端设备再次采用默认参数并且由网络服务器按照需要重新调整值。5。1连接检查指令(LinkCheckReq,LinkCheckAns)采用LinkCheckReq指令,一个终端设备可以证明其和网络的连接性。该指令无有效载荷。当网络服务器通过一个或多个网关接收到LinkCheckReq时,它会以LinkCheckAns指令进行响应.Margin(解调幅度)是最近一条被成功收到的LinkCheckReq命令的链路预算(单位dB),是一个8位(bits)无符号整型,范围[0,254]。值为0表示在解调(信号强度)的下限上收到了数据,值20表示网关在比解调下限高出20dB的信号强度上收到了数据.255是保留值。网关计数值(GwCnt)是网关成功接收的上一个的LinkCheckReq指令的数量。5。2链路ADR指令(LinkADRReq,LinkADRAns)通过LinkADRReq指令,网络服务器要求终端设备执行速率配适。请求的数据率(DataRate)和TX发送功率(TXPower)是具有区域段特异性的并且按第七章的方式进行编码.如下所示信道掩码(ChMask)通过使0位对应对低有效位编码信道使其可以为上行链路访问所使用。Bit#01。。15可利用信道Channel1Channel2。。Channel16表5信道状态表在ChMask字段一个位被设置为1意味着如果某一信道允许当前被终端设备使用的数据率,那么对应的该信道可由上行链路所使用。若被设为0意味着对应信道应该被避免使用。在冗余位重复数量(NbRep)字段是每条上行链路消息重复的数量。这仅应用于“unconfirm"上行帧。默认值是1,有效范围是[1。。15]。如果接收到NbRep==0,那么终端设备需要使用默认值.网络管理员可以使用这个字段来控制节点上行链路的冗余性来获得指定的服务质量。像通常一样终端设备在重复的传输中执行频率跳跃,它需要在每一个重复后等待直到接收窗口过期。信道掩码控制(ChMaskCntl)字控制了先前定义的信道掩码控制位ChMask屏蔽的释义.若网络中有多于16个的信道在执行,那么该字段为非0值.用它来控制ChMask使用哪16个信道。通过特殊的调制方法它也可以应用于全局开关所有信道中。该字段的使用具有区域特异性并在第七章中给出定义.信道频率具有具有区域特异性并且在第六章被定义。一个终端设备通过LinkADRAns指令来响应LinkADRReq。LinkADRAnsStatus位有以下意义:ChannelmaskACKBit=0发送信道掩码使能一个未定义信道。这个指令被舍弃而且终端设备状态不改变。终端设备不知道要求的数据率或者被提供的信道掩码是不可能考虑到(任何使能的信道都不支持)。指令被舍弃且终端设备状态不改变在设备中要求的功率等级未定义。指令被舍弃且终端设备状态不改变表6:LinkADRAnsStatus位意义如果这三位等于0,指令不成功,节点被保持在先前的状态。Bit=1信道掩码发送被成功释义。所有当前定义的信道状态根据屏蔽被置位DatarateACK成功设置数据率PowerACK成功设置功率等级5.3终端设备传输占空比(DutyCycleReq,DutyCycleAns)网络协调员使用DutyCycleReq指令来限制总发射占空比的最大值.总发射占空比指所有子频带的发射占空比。终端设备传输最大的占空比为:aggregateddutycycle=12MaxDCycleMaxDutyCycle的最大有效范围是[0.。15]。在没有区域调节设置占空比限制的情况下,使用0表示“占空比没有限制”。值255指终端设备将会立刻变得静默.它等效于终端设备远距离关断。终端设备采用DutyCycleAns指令来响应DutyCycleReq。DutyCycleAnsMAC回复不包括任何有效载荷。5.4接收窗口参数(RXParamSetupReq,RXParamSetupAns)RXParamSetupReq指令允许在紧跟每个上行链路第二个接收窗口(RX2)的频率的改变和数据率的设置。指令也允许在上行链路和RX1时隙下行数据率之间编写一个偏移量。RX1DRoffset字段设置了上行链路数据率和在第一个接收时隙(RX1)和终端设备通讯的下行链路数据率的偏移量.偏移量的默认值为0。偏移量是在为某些地区基站考虑最大功率密度限制时和平衡上行链路与下行链路射频连接边界而使用的。与LinkADDRReq指令的惯例一致(例如0代表DR0/125kHz),数据率(RX2dataRate)字段定义了使用第二个接收时隙的下行链路的数据率.频率(Frequency)字段对应第二接收窗口使用的信道频率,因此频率按照NewChannelReq指令定义的惯例进行编码。设备终端使用RXParamSetupAns确认接收了RXParamSetupReq指令。有效载荷包括单个的状态字。状态(Status)字有以下的意义:如果3个字节中的任何一个等于0,指令不成功并且保持之前的参数。5。5终端设备状态(DevStatusReq,DevStatusAns)网络服务器通过DevStatusReq指令要求来自终端设备的状态信息。该指令无有效载荷。如果一个DevStatusReq被终端设备接收,终端设备会以DevStatusAns进行响应。电池水平(Battery)报告按照如下方式编码:电池1。。254255描述终端设备连接了外部电源电池水平,1是最小水平,254是最大水平设备不能够检测到电池水平表8电池水平解码调制幅度(Margin)是最近一次接收成功DevStatusReq命令的解调信噪比,其值(四舍五入)取整,单位dB。调制幅度值是一个有符号整型,长度6个比特位,最小值-32,最大值31。5.6信道的创建/修改(NewChannelReq,NewChannelAns)NewChannelReq指令可以用来修改已存在信道的参数,或创建新的信道。指令设置了新信道的中心频率和在该信道上可以使用的数据率的范围。信道索引(ChIndex)是被创建或修改的信道的索引.根据使用的地区和频率带,LoRaWAN规范强调默认信道必须可以适用于所有的设备,而且不能被被NewChannelReq指令修改(第六章)。如果默认信道的数量为N,那么默认的信道为0~N—1,则ChIndex可接受的范围是N~15。一个设备必须能够处理至少16个不同的信道定义。在某一区域内设备也许可以存储超过16个的信道定义。频率(Frequency)字段是24位的无符号整形.实际的信道频率以Hz为单位是100×Freq。低于100MHz的频率被保留。这使得一个信道的频率必须要在以每100Hz为步长的100MHz到1.67GHz范围内。Freq值为0为禁用信道.终端设备需要确射频硬件允许某一定信道频率,否则返回一个错误.数据率范围(DrRange)字段指定了信道允许的数据率范围.这个字段分开为2个四位索引:BitsDrRange7.。4MaxDR3。。0MinDR根据5.2中对惯例的定位,最小数据率(MinDr)子段指定了信道上允许的最低数据率。例如0指定了DR0/125kHz。同样的,最大数据率(MaxDR)子字段制定了最高数据率。例如,DrRange=0x77意味着在信道上只允许50kbpsGFSK而DrRange=0x50意味着DR0/125kHz到DR5/125kHz是支持的。新定位的信道被使能并可以立刻在通信中使用。终端通过返回NewChannelAns指令来确认对NewChannelReq的接收。该消息的有效载荷包括以下信息:状态(Status)位有以下含义:DataraterangeokBit=0设备的指定的数据率范围超出终端设备当前定义的数据率,设备不能使用该频率。表9NewChannelAns状态位说明如果2位中的任意一位为0,则指令不成功,新的信道不会被创建。Bit=1数据率范围和终端设备的可能性兼容。设备可以使用该频率Channelfrequencyok5。7设置TX和RX的延时(RXTimingSetupReq,RXTimingSetupAns)RXTimingSetupReq指令允许在TX上行链路末尾和开放第一个接收时隙之间配置延时。第二个接收时隙在第一个接收时隙开放后1s开放。延时(Delay)表明延时.该字段分为两个4位索引:延时用秒来表示。Del0延时1s。终端设备通过无有效负荷的RXTimingSetupAns指令来响应RXTimingSetupReq。6终端设备激活为了加入到一个LoRaWAN网络中,每一个终端设备不得不初始化并被激活。终端设备的激活可以以两种方式获得:当一个终端设备被部署或重置可以通过无线激活(Over—The—AirActivation,OTA);或者通过手动激活(ActivationByPersonalization,ABP),在这种方式中,终端设备的初始化和激活两步是由一步完成的.6.1终端设备激活后的数据存储激活后,以下的信息被储存在终端设备中:设备地址(DevAddr),应用标识符(AppEUI),网络会话秘钥(NwkSKey)和应用会话秘钥(AppSKey)。6.1。1终端设备地址(DevAddr)DevAddr由32位来识别在当前网络中的终端设备,其的结构如下:最高的7位用来为网络身份证(NwkID)来区分不同网络运营商网络重叠的部分并且去补救漫游问题。低25位,终端设备的网络地址(NwkAddr)或者是终端设备,可以被网络管理员任意分配。6.1.2应用标识符(AppEUI)AppEUI在IEEEEUI64具有全球唯一应用ID,可以单独识别终端设备的应用服务提供商(等等)。AppEUI在激活程序执行前已储存在终端设备中。6.1。3网络会话秘钥(NwkSkey)NwkSkey是终端设备特定的网络会话秘钥。他在网络服务器和终端设备中使用来计算和验证所有数据信息的MIC以确保数据的完整性。它进一步使用在只有MAC数据消息的有效载荷字段加密和解密中.6.1。4应用会话秘钥(AppSKey)AppSKey是终端设备特定的应用会话秘钥。它在网络服务器和终端设备中使用来加密和解密特定应用数据消息字段的有效载荷。它也可以用于计算和验证可能被包括在应用特定数据消息的有效载荷的应用层MIC。6.2无线激活(OTA)终端设备在与网络服务器交流(数据交换)之前,必须先通过加入过程加入网络服务器。每次终端设备会话的上下文丢失(与服务器通信断开)后都要重新加入。在开始加入进程之前,加入程序需要终端设备以以下信息来进行初始化:一个全球的唯一的终端设备标识符(DevEUI),应用标识符和一个AES-128秘钥(AppKey)。AppEUI在上述6.1.2中进行了描述。注意:无线激活时,网络密钥初不会向初始化那样写死到终端,而是在终端加入网络时由网络层衍生并分发,该密钥用来对传输数据进行加密和校验.这样,终端设备能很方便的在不同的网络服务器和应用提供商之间切换.使用网络会话密钥和应用会话密钥可以避免应用数据被网络供应商(网络服务器拥有者)解析或篡改,从而接入大量的网络服务器。6。2。1终端设备标识符(DevEUI)DevEUI是全球终端ID,符合IEEEEUI64,用来唯一辨识终端设备。6。2.2应用秘钥(AppKey)AppKey是终端设备一个特定的AES—128应用秘钥,该秘钥由应用所有者分配给终端设备,根密钥只有应用供应商知晓和掌握。无线激活入网时,通过AppKey衍生会话密钥NwkSKey和AppSKey,并分发相应的终端设备,用来加密和校验网络通讯和应用数据。6。2。3入网流程从终端的角度看,和服务器交互的入网流程包含两个MAC消息:joinrequest和joinaccept。6。2.4入网请求(Join—requestmessage)入网流程开始于终端设备发送一个入网请求消息。入网请求消息包括终端设备的AppEUI和DevEUI,紧随其后的是2字节的随机数(DevNonce)。DevNonce是个随机值,终端设备最近使用的一些(数量自定义)DevNonce会保存在网络服务器(NS)。如果终端发送的入网请求中的DevNonce在NS中可以查到,该请求就会被忽略。注意:该机制的目的是防止重放攻击(replayattacks),避免其它人通过发送之前的入网请求来断开终端设备和网络的连接。1由于所有的终端设备是以与终端设备不相关的特定程序秘钥结束的,从一个终端设备中抽取AppKey只会对该终端设备折中.2假设随机数的质量满足真正的随机数的标准,那么DevNonce可以使用一序列的RSSI测量值来抽取。加入请求消息的消息整体编码(MIC)值(查看第四章对MAC消息的描述)计算方法如下1:cmac=aes128_cmac(AppKey,MHDR|AppEUI|DevEUI|DevNonce)MIC=cmac[0.。3]入网请求以明文发送。6.2。5接受入网消息(Join—accept)如果终端设备被允许加入网络,网络服务器(NServer)将会通过join—accept消息来响应join—request消息。join-accept消息像普通的下行链路一样发送,但是会使用JOIN_ACCEPT_DELAY1或者JOIN_ACCEPT_DELAY2(来分别代替RECEIVE_DELAY1andRECEIVE_DELAY2)。这两个接收窗口使用的信道频率和数据率与在“物理层”章节描述的“接收窗口”部分的接收窗口RX1和RX2是一致的.如果入网请求被拒绝,那么网络服务器(NServer)不会给终端设备响应。join-accept消息包括应用层随机数(AppNonce),3字节;网络ID(NetID);终端地址(DevAddr);介于TX和RX(RxDelay)之间的延迟;信道频率的一系列配置(CFList)。CFList相关内容见第7章.AppNonce是由网络服务器产生的一个随机数或唯一ID,终端设备用它来衍生两个会话密钥:NwkSKey和AppSKey。衍生算法如下:NwkSKey=aes128_encrypt(AppKey,0x01|AppNonceNetID|DevNonce|pad16)AppSKey=aes128_encrypt(AppKey,0x02AppNonceNetID|DevNonce|pad16)join—accept消息的MIC值按照如下方式计算4:cmac=aes128_cmac(AppKey,MHDR|AppNonceNetIDDevAddr|RFU|RxDelayCFList)MIC=cmac[0..3]join-accept消息用AppKey来进行加密:aes128_decrypt(AppKey,AppNonce|NetID|DevAddrRFURxDelayCFList|MIC)pad16函数附加0字节以便于数据长度是一个16的倍数注意:网络服务器使用以ECB模式进行AES解密操作来加密加入接受消息使终端设备可以使用AES加密操作来解密消息。这样终端设备仅仅只需要完成AES加密而不是AES解密。注意:建立这两个会话秘钥考虑到了联盟网络服务器结构,在这种结构中网络运营商不能偷听程序数据。在这样的数据中,终端设备实际加入网络和建立终端设备的NwkSKey的进程中应用供应商必须支持网络运行商。与此同时应用供应商承诺网络运营商任何终端设备的产生通信量它都会收费,并保持对保护应用数据的AppSkey的完全控制。NetID的格式如下:7个NetID的最低有效位被称作NwkID并且匹配之前描述的终端设备短地址的7个最高有效位。邻近或重叠的网络必须有不同的NwkID。网络运行商可以随意选择保留的17个最高有效位。DLsetting字段包括下行链路配置:RX1Droffset字段设置上行链路数据和被用作在第一接收时隙(RX1)中与终端设备通信的下行链路数据之前的偏移。偏移默认值为0.下行数据率通常小于等于上行链路数据率。偏移量被用来考虑在某些区字段基站的最大功率密度限制以及平衡上行链路和下行链路射频通信线路的边界。上行链路和下行链路数据率的实际关系是有区域特异性的,并且在“物理层”部分会详细介绍。延时RxDelay遵循着在RXTimingSetupReq指令中的延时字段一样的惯例。6。3手动激活在某些环境中,终端设备可以被手动激活.直接手动激活通过旁路join—request和join-accept进程使终端设备连接到指定的网络。手动激活终端设备意味着DevAddr和两个会话秘钥NwkSKey、AppSKey直接存储到终端设备而不是DevEUI、AppEUI和AppKey中.当被启动时,终端设备被配备了加入特定LoRaWAN网络所需要的信息.每一个设备应该有NwkSKey和AppSKey独特的设置.折中一个设备的秘钥不应该折中其他设备通信的安全性。建立这些秘钥的流程应该是建立在从来自公共可用信息(例如节点地址)以任何方式都不能推断出的秘钥之上。',)
提供LORAWAN中文,lorawan中文全称会员下载,编号:1700774013,格式为 docx,文件大小为45页,请使用软件:wps,office word 进行编辑,PPT模板中文字,图片,动画效果均可修改,PPT模板下载后图片无水印,更多精品PPT素材下载尽在某某PPT网。所有作品均是用户自行上传分享并拥有版权或使用权,仅供网友学习交流,未经上传用户书面授权,请勿作他用。若您的权利被侵害,请联系963098962@qq.com进行删除处理。