(5)LoraWAN:Join procedure、Receive Windows
网络在建立之初,终端设备启动后需要向服务端发起Jion请求(接入请求),只有在接入请求得到成功答复,并根据答复配置相关参数后,终端才算成功加入网络。Jion成功后才能进行数据的上行、下行通信。
Jion过程、CLASS A等模式下,服务器、终端之间约定了两个下行接收窗口(时间窗口)来实现数据的交互。一般通信方式为:终端上行数据包后进入低功耗模式,等到约定的时间窗口后开始进入接收模式,接收服务器下行来的数据。
在Jion之前要了解一下Receive Windows概念。
接收窗口Receive Windows
在每次上行传输的终端设备打开两个短的接收窗口。接收窗口开始时间是一个配置周期的传输结束的最后一个上行比特。 终端在上行结束后考虑到功耗等问题不会立即进入接收模式,低功耗到合适时机再打开接收,接收下行数据。此协议约定了两个窗口,数据只会在其中一个窗口中接收到。
First receive window channel, data rate, and start
第一接收窗RX1使用相同的频率信道作为上行链路和一个数据速率是用于上行链路数据速率的函数。上行链路调制结束后RX1打开RECEIVE_DELAY1秒(+/- 20微秒)。上行链路和RX1时隙下行链路数据速率之间的关系,特定区域和详见的第7节;默认情况下,第一接收窗口数据速率是相同的,即最后的上行链路的数据速率。
Second receive window channel, data rate, and start
第二接收窗RX2采用固定配置的频率和数据率;上行链路调制结束后RX2打开RECEIVE_DELAY2秒(+/- 20微秒)。可通过MAC命令修改的频率和数据速率。
接收窗口持续时间Receive window duration
接收窗口的长度必须至少为有效地检测的下行链路前同步码所要求的终端设备的无线电收发机的时间。
Receiver activity during the receive windows
如果在接收窗口中的一个被检测到前置码,无线接收机将一直处于活动状态直到下行链路帧被解调。如果一个帧被检测到并且随后在第一接收窗口期间解调出来了,且在地址和MIC(消息完整性代码)校验通过后,该帧该是终端的目的帧,终端将不会打开第二接收窗口。
Network sending a message to an end-device
如果网络打算发送的下行链路到一个终端设备,它总是恰恰在接收窗口(两个之一)开始之前发起传输。
接收窗口重要提示Important notice on receive windows
一个终端不得发送另一个上行链路消息,除非它已经接收在上次发送的第一或第二接收窗的下行链路消息,或者前一次传输的第二接收窗口已过期。
接收或发送其他协议Receiving or transmitting other protocols
节点可以在LoRaWAN发送和接收窗口之间侦听、发送其他协议或做任何业务,只要终端仍符合当地法规,和LoRaWAN规范兼容。
Join procedure
从终端角度来看,Join过程包含两个MAC层数据信息与server服务器交换,即join request 和 join accept。
enum {
// Join Request frame format
OFF_JR_HDR = 0,
OFF_JR_ARTEUI = 1,
OFF_JR_DEVEUI = 9,
OFF_JR_DEVNONCE = 17,
OFF_JR_MIC = 19,
LEN_JR = 23
};
enum {
// Join Accept frame format
OFF_JA_HDR = 0,
OFF_JA_ARTNONCE = 1,
OFF_JA_NETID = 4,
OFF_JA_DEVADDR = 7,
OFF_JA_DLSET = 11,
OFF_JA_RXDELAY = 12,
OFF_CFLIST = 13,
LEN_JA = 17,
LEN_JAEXT = 17+16
};
[x] Join-request message
Join-request信息包含终端的AppEUI、DevEUI及随机的DevNonce(2字节)。
DevNonce是一个随机值。网络服务器server将保持对每个终端的过去一定数量的DevNonce值进行跟踪,如果join request请求过程中的DevNonce值与跟踪的DevNonce值相同则将忽略该终端的join请求。DevNonce主要用于网络的重放攻击。[x] Join-accept message
假如终端被允许接入网络,网络服务器将用join-accept响应终端的join-request请求。Join-accept信息将像普通的下行一样的发送,只不过会使用JOIN_ACCEPT_DELAY1 或JOIN_ACCEPT_DELAY2(而不是分别用RECEIVE_DELAY1和RECEIVE_DELAY2) 这样的延时。
假如join-request请求没有被接受,将不会给终端响应。Join-accept信息中包含3字节的App应用随机数(AppNonce),一个网络标示(NetID),一个设备地址(DevAddr),一个TX和RX之间延时(RxDelay)以及一个终端正在加入的网络的频率信道列表选项(CFList)。
AppNonce是一个随机值或者基于某些形式的由网络服务器提供的唯一ID值,AppNonce用于终端导出NwkSKey和AppSKey两个会话密钥。
NetID格式如下:低7位(LSB)命名为NwkID与前面章节所述的的7位MSB短地址相匹配。相邻或者重叠的网络必须具有不同的NwkIDs。剩下的17个高位可以由网络运营商任意选择。
DLsettings字段的下行链路配置:Bits | 7 | 6:4 | 3:0 |
-------------|---|--------| -------|
DLsettings |RFU|RX1DRoffset|RX2 Data rate
RX1DRoffset 字段设置在第一接收窗口(RX1)上行数据速率与下行数据速率通信之间的偏移,默认情况下该偏移量为0;改偏移量主要考虑到在某些区域基站的最大功率约束密度以平衡上行及下行的链路余量。
终端激活后的数据存储
终端激活后,以下信息将保存:设备地址(DevAddr),APP应用标示(AppEUI),网络会话密钥,APP应用密钥 (AppSKey)。
终端地址End-device address (DevAddr)
所述DevAddr由当前网络内终端32位标示组成,其格式如下:
Bit# | [31..25] | [24..0] |
-------------|----------|---------|
DevAddr bits | NwkID | NwkAddr |
高7位用作网络标识符(NwkID)以分离不同的网络运营商的地域重叠网络的地址,并以补救漫游的问题。所述低25位为终端的网络地址(NwkAddr),可以任意地由网络管理器分配。
u4_t addr = os_rlsbf4(LMIC.frame+OFF_JA_DEVADDR);
...
LMIC.devaddr = addr;
APP应用标示 Application identifier (AppEUI)
AppEUI是IEEE标准的全球APP应用ID,EUI地址空间是终端APP应用供应商的唯一标示。
所述AppEUI在执行激活过程之前就被存储在终端中。
网络会话密钥Network session key (NwkSKey)
所述NwkSKey终端特定的网络会话密钥。网络服务器和终端通过NwkSKey来计算和确认的所有数据信息的MIC验证(消息完整码),以确保数据的完整性。NwkSKey进一步用于加密和解密Payload字段仅MAC相关层的数据信息。
终端Join请求过程中在其开始执行Join之前如下的信息需要个性化设置:全球唯一终端标示(DevEUI)、APP应用标示(AppEUI)、AES-128加密/解密密钥(AppKey)。
APP应用会话密钥Application session key (AppSKey)
AppSKey是终端特定的APP应用会话密钥。网络服务器和终端通过AppSKey加密和解密Payload字段中APP应用程序特定数据信息。它也可以用来计算和验证包含在Payload字段中应用程序特定数据消息的应用程序级的MIC。
End-device identifier (DevEUI)
DevEUI是IEEE标准中的全球终端ID;EUI64地址空间是终端的全球唯一标示。
Application key (AppKey)
AppKey是针对该终端特有的AES-128应用密钥,该密钥由应用程序所有者分配给该终端设备。APPKey仅能从已知的特定App应用根密钥中获取和App应用提供者控制下得到。每当一个终端经过空中激活过程,所述的AppKey将用于导出NwkSKey会话密钥及AppSKey会话密钥,特定于该终端的会话密钥以便该终端加密和验证网络通信和App应用数据。
static void MsgProcess(void)
(5)LoraWAN:Join procedure、Receive Windows的更多相关文章
- (3)LoraWAN:链路控制、SF BW CR
三.Introduction on LoRaWAN options 本文件描述了一种用于可为移动的或固定在一个固定位置的电池供电的终端设备而优化的LoRaWAN™网络协议.LORA™是一个由Semte ...
- Django(九)下:Ajax操作、图片验证码、KindEditor使用
三.Ajax操作 ajax操作基于浏览器的xmlHttpRequest对象,IE低版本是另外一个对象,jQuery 1 版本对那两个对象做了封装,兼容性最好,2 .3版本不再支持IE低版本了. Aja ...
- MySql从一窍不通到入门(五)Sharding:分表、分库、分片和分区
转载:用sharding技术来扩展你的数据库(一)sharding 介绍 转载:MySQL架构方案 - Scale Out & Scale Up. 转载: 数据表分区策略及实现(一) 转载:M ...
- (4)LoraWAN:Physical Message Formats
四.Physical Message Formats LoRa数据包结构 LoRaTM调制解调器采用隐式和显式两种数据包格式.其中,显式数据包的报头较短,主要 包含字节数.编码率及是否在数据包中使用循 ...
- (2)LoraWAN:Lora LMIC library 编程模型及API
二.LMIC library 编程模型及API LMiC库可以通过一组API函数(API functions),运行时函数(run-time functions),回调函数(callback func ...
- Django(三) 模型:ORM框架、定义模型类并创建一个对应的数据库、配置Mysql数据库
一.模型概述 https://docs.djangoproject.com/zh-hans/3.0/intro/tutorial02/ https://www.runoob.com/django/dj ...
- Django(二) 模板:基本使用、模板语法、模板继承
一.模板的使用实战 接:https://blog.csdn.net/u010132177/article/details/103788677 参考:https://docs.djangoproject ...
- 线性判别分析(LDA)准则:FIsher准则、感知机准则、最小二乘(最小均方误差)准则
准则 采用一种分类形式后,就要采用准则来衡量分类的效果,最好的结果一般出现在准则函数的极值点上,因此将分类器的设计问题转化为求准则函数极值问题,即求准则函数的参数,如线性分类器中的权值向量. 分类器设 ...
- 机器学习算法(优化)之一:梯度下降算法、随机梯度下降(应用于线性回归、Logistic回归等等)
本文介绍了机器学习中基本的优化算法—梯度下降算法和随机梯度下降算法,以及实际应用到线性回归.Logistic回归.矩阵分解推荐算法等ML中. 梯度下降算法基本公式 常见的符号说明和损失函数 X :所有 ...
随机推荐
- RedisTemplate 获取过期时间的问题
RedisTemplate redisTemplate; Long seconds = redisTemplate.opsForValue().getOperations().getExpire(&q ...
- 例题3_3 回文词(UVa401)
输入一个字符串,判断它是否为回文串以及镜像串.输入字符串保证不含数字0.所谓回文串,就是反转以后和原串相同,如abba和madam.所有镜像串,就是左右镜像之后和原串相同,如2S和3AIAE.注意,并 ...
- Python学习第二十二课——Mysql 表记录的一些基本操作 (增删改)
记录基本操作: 增:(insert into) 基本语法: insert into 表名(字段) values(对应字段的值): 例子1: insert into employee(id,name,a ...
- 19市赛 树状数组 第k个小的糖果
int find_kth(int k) { , cnt = , i; ; i >= ; i--)/ { ans += ( << i); if (ans >= maxn|| cn ...
- Update(Stage5):Kudu_javaApi使用_Spark整合
Table of Contents: 2.3. 安装 Zookeeper 2.4. 安装 Hadoop 2.4. 安装 MySQL 2.5. 安装 Hive 2.6. 安装 Kudu 2.7. 安装 ...
- 在自定义的widget中引入图表后,运行时出现TypeError #1009错误
本人网上查找了很多资料,其中大部分都是关于Flash中的动画效果问题,与这里的问题关系型不太大.故把问题的解决方法写在这里,与人方便,与己方便. 方法一: 1.在自定义的widget中添加如下两个方法 ...
- sql server alter column identity
上网找 alter column identity 语句,将表中的一个字段调整成自动新增.发现没有. 跟踪了一下sql server 执行这一动作的语句,发现是新建了新表,将字段修改成自动新增,然后将 ...
- Wcf托管在IIS中,HttpContext.Current为空
config中需要配置 <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 另需要在服务类上加 ...
- NET站点升级后,新特新无法编译通过
NET3.5 webconfig中有自动配置如下代码,用于指示编译器. <system.codedom> <compilers> <compiler language=& ...
- Mac OS删除文件夹和文件的命令
https://www.jianshu.com/p/0376bf0514e3 2017.08.18 17:27* 字数 219 阅读 16709评论 0喜欢 0 rmdir删除空目录,不过一旦目录非空 ...