当前位置: 首页 > news >正文

LoRaWAN设备的两种入网方式(ABP和OTAA)

目录

一、OTAA

1、名词解释

2、入网流程

二、ABP

三、两种入网方式的比较


一、OTAA

1、名词解释

(1)AppEUI:64位(8字节)的唯一标识符,用于标识特定的应用程序或组织(如果用的是chirpstack,终端这里可以配一个随机数)。

(2)DevEUI:64位(8字节)的唯一标识符,用于标识单个LoRaWAN设备,每个设备都有一个唯一的DevEUI。

(3)DevNonce:一个随机数,根据LoRa射频模块的RSSI(信号强度)算出。

(4)AppNonce:由服务端提供的随机值,用于计算NwkSKey 和AppSKey。

(5)NetID:网络ID,也用于计算NwkSKey 和AppSKey。

(6)DevAddr:32bit组成,用于标识当前网络中的终端设备,是在入网过程中由网络服务器NS 分配。

(7)AppSKey:应用会话密钥。

(8)NwkSKey:网络会话密钥。

2、入网流程

(1)终端节点发送Join_Request

        Join_Request格式如下:

         MHDR 为帧头,表示数据的类型(入网请求);入网请求会携带AppEUI和DevEUI,服务器会通过该数据决定是否允许设备入网DevNonce 是一个随机值,通过LoRa射频模块的RSSI(信号强度)算出。服务端会将收到的DevNonce进行存储 ,如果同一个AppEUI的DevNonce是重复发送,服务器会丢弃该入网请求。MIC是校验码,是通过AppKey计算得来的。

(2)服务器处理入网请求

        Join_Request发送至NS处,NS会通过MIC检查数据是否合法,如果合法会将请求交给AS处理。AS 根据报文中的AppEUI和DevEUI来判断是否接收入网请求。 

(3)NS下发Join_Accept

        如果服务器接受入网,NS将会下发一个Join_Accept命令帧。Join_Accept格式如下:

         AS验证设备后会生成AppNonce,NS会生成一个网络标识符NetID,还分配一个4字节的DevAddr。

(4)生成密钥AppSKey和NwkSKey

        终端节点收到Join_Accept后,会根据AppKey生成两个密钥:AppSKey和NwkSKey,生成方式如下:

NwkSKey

NwkSKey = aes128_encrypt(AppKey, 0x01 | AppNonce | NetID | DevAddr | DevNonce)

AppSKey

AppSKey = aes128_encrypt(AppKey, 0x02 | AppNonce | NetID | DevAddr | DevNonce)

        入网后,后续的通信都使用生成的AppSKey和NwkSKey进行加密和解密(AS端也会计算出AppSKey和NwkSKey),确保数据的机密性和完整性。

整体数据加解密过程大致如下图所示:

二、ABP

        ABP入网的方式比较简单,不需要像ABP那样动态获取信息。ABP这种方法比较简单粗暴,以chirpstack为例,我们可以直接在服务器上配置DevAddr,NwkSKey,AppSKey,然后在终端节点上直接配置与服务器相同的DevAddr,NwkSKey,AppSKey。因为已经直接进行配置,就不再需要join流程了。在这种情况下,这个设备是可以直接发应用数据的,当ABP终端成功发送了第一条数据之后,我们就认为ABP终端入网成功了。

三、两种入网方式的比较

        两种入网方式各有各的优势与短板,具体怎么选择我们还是要看设备以及环境等因素。

1、ABP

优点

(1)快速入网:ABP不需要执行join过程,可直接开始通信。

(2)无网络覆盖依赖:在网络信号弱或者不稳定的区域,ABP不依赖于设备与网络服务器的交互进行入网,因此在某些恶劣的网络条件下可能更可靠。

缺点

        安全性较低:设备的密钥在开始时就已经预设,若这些信息被泄露,攻击者可以伪装成设备进行攻击。

2、OTAA

优点

        安全性高:因为设备在入网过程中会通过网络服务器生成新的会话密钥(NwkSKey 和 AppSKey),并使用 AppKey 进行加密。这样,密钥在每次入网时都是唯一的。而且密钥动态生成,难以被提前获取或破解。

缺点

        依赖网络覆盖:在网络信号弱或不稳定的区域,OTAA 的入网过程可能会失败,因为设备需要与网络服务器进行交互。如果网络覆盖不好,设备可能无法完成入网过程。

相关文章:

LoRaWAN设备的两种入网方式(ABP和OTAA)

目录 一、OTAA 1、名词解释 2、入网流程 二、ABP 三、两种入网方式的比较 一、OTAA 1、名词解释 (1)AppEUI:64位(8字节)的唯一标识符,用于标识特定的应用程序或组织(如果用的是chirpstac…...

【Rust光年纪】极致性能与灵活选择:Rust语言数学优化库详解

Rust语言中的数学优化:六大利器汇总 前言 在当今信息时代,数据处理和数学优化成为了各行各业中不可或缺的重要环节。为了满足对高效、快速计算的需求,Rust语言逐渐成为了许多开发者的首选,因其性能优越、并发安全等特点。本文将…...

机器学习 | 回归算法原理——最小二乘法

Hi,大家好,我是半亩花海。很早便想学习并总结一本很喜欢的机器学习图书——立石贤吾的《白话机器学习的数学》,可谓通俗易懂,清晰形象。那就在此分享并作为学习笔记来记录我的学习过程吧!本章的回归算法原理基于《基于…...

.NET Core 中的字符串压缩方法

字符串压缩的概念 字符串压缩通常指的是通过算法减少字符串表示所需的数据量,同时保持字符串的原始信息或能够无损地恢复原始字符串。这种压缩可以是针对文本数据的特定算法,也可以是更通用的数据压缩算法。 .NET Core 中的字符串压缩方法 使用数据压…...

SQL 基础知识

SQL(结构化查询语言)是一种用于管理和操作关系数据库的标准编程语言。以下是一些 SQL 的基础知识: 基本概念 数据库(Database): 存储和管理数据的容器。一个数据库可以包含多个表。 表(Table&…...

【数据结构初阶】单链表经典算法题十二道——得道飞升(上篇)

目录 1、移除元素 2、反转链表 3、链表的中间节点 4、合并两个有序链表 Relaxing Time!!! ———————————————— 天气之子幻 ———————————————— 1、移除元素 思路: 创建一个新链表&#xff0…...

Python爬虫技术 第16节 XPath

XPath是一种在XML文档中查找信息的语言,尽管XML和HTML在语法上有区别,但XPath同样适用于HTML文档的解析,尤其是在使用如lxml这样的库时。XPath提供了一种强大的方法来定位和提取XML/HTML文档中的元素和属性。 XPath基础 XPath表达式由路径表…...

本地部署,Whisper: 开源语音识别模型

目录 简介 特点 应用 使用方法 总结 GitHub - openai/whisper: Robust Speech Recognition via Large-Scale Weak SupervisionRobust Speech Recognition via Large-Scale Weak Supervision - openai/whisperhttps://github.com/openai/whisper 简介 Whisper 是一个由 O…...

history,hash缓存那些事

vue-router 中的 createWebHistory,createWebHashHistory两种模式 createWebHistory 是基于 window.history 对象是HTML5提供的用于维护当前标签页浏览历史的对象,主要功能是前进后退和在不刷新页面的情况下,修改地址栏里的URL地址。histor…...

Spring Boot的Web开发

目录 Spring Boot的Web开发 1.静态资源映射规则 第一种静态资源映射规则 2.enjoy模板引擎 3.springMVC 3.1请求处理 RequestMapping DeleteMapping 删除 PutMapping 修改 GetMapping 查询 PostMapping 新增 3.2参数绑定 一.支持数据类型: 3.3常用注解 一.Request…...

Spark 解析嵌套的 JSON 文件

1、什么是嵌套的JSON文件? 嵌套的JSON文件是指文件中包含了嵌套的JSON对象或数组。例如,以下是一个嵌套的JSON文件的示例: {"name": "John","age": 30,"address": {"street": "123…...

VMware虚拟机中CentOS7自定义ip地址并且固定ip

配置固定ip(虚拟机) 前提:虚拟机网络配置成,自定义网络并选择VMnet8(NAT 模式) 操作(如下图):点击虚拟机–》设置–》–》硬件–》网络适配器–》自定义:特定虚拟网络–》选择:VMnet8(NAT 模式) 虚拟机网络设置 需要记…...

CCS(Code Composer Studio 10.4.0)编译软件中文乱码怎么解决

如果是所有文件都出现了中文乱码这时建议直接在窗口首选项中修改:选择"Window" -> "Preferences",找到"General" -> "Workspace",将"Text file encoding"选项设置为"Other&quo…...

Flutter 3 完全支持网页端

Flutter 3 可以用于开发网页端应用。自 Flutter 2.0 起,Flutter 就已经支持 Web 平台,并且在 Flutter 3 中得到了进一步的改进和优化。以下是使用 Flutter 3 开发网页端的一些优势和特点: Flutter 3 开发网页端的优势: 跨平台一致…...

vue.js入门

目录 一. 框架概述 二. vue常用命令 2.1 插值表达式 2.2 v-text 2.3 v-html 2.4 v-on 2.5 v-model 2.6 v-show 2.7 v-if 2.8 v-else 2.9 v-bind 2.10 v-for 三. vue生命周期函数 目录 一. 框架概述 二. vue常用命令 2.1 插值表达式 2.2 v-text 2.3 v-html 2…...

API签名认证

前言(项目背景): 这个API签名认证是API开放平台得一个重要环节,我们知道,这个API开发平台,用处就是给客户去调用现成得接口来完成某些事情得。 在讲API签名认证之前,我们先模拟一个场景并且介绍…...

C#进阶-基于.NET Framework 4.x框架实现ASP.NET WebForms项目IP拦截器

在这篇文章中,我们将探讨如何在 ASP.NET WebForms 中实现IP拦截器,以便在 ASMX Web 服务方法 和 HTTP 请求 中根据IP地址进行访问控制。我们将使用自定义的 SoapExtension 和 IHttpModule 来实现这一功能,并根据常用的两种文本传输协议&#…...

前端(1)HTML

1、标签 创建1.html文件&#xff0c;浏览器输入E:/frontheima/1.html&#xff0c;可以访问页面 页面展示 在VSCODE安装IDEA的快捷键&#xff0c;比如ctld复制一行、ctrlx剪切 <p id"p1" title"标题1">Hello,world!</p> <p id"p2"…...

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十三章 设备树下的platform驱动

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…...

Java正则表达式判断有无特殊字符

//^代表否定&#xff0c;匹配除了数字、字母、下划线的特殊字符。 private static final String SPECIAL_CHAR_PATTERN "[^a-zA-Z0-9_]"; Pattern pattern Pattern.compile(SPECIAL_CHAR_PATTERN); Matcher matcher pattern.matcher(userAccount); // 如果 find(…...

强化学习在双摆控制中的应用与挑战

1. 双摆控制中的强化学习挑战双摆系统是控制理论中经典的欠驱动非线性系统&#xff0c;由两个通过关节连接的刚性杆组成&#xff0c;仅有一个关节可施加驱动力。这种系统表现出丰富的动力学特性&#xff0c;包括混沌行为和高度敏感性&#xff0c;使其成为测试控制算法的理想平台…...

Squirrel-RIFE实战指南:7步掌握AI视频补帧核心技术

Squirrel-RIFE实战指南&#xff1a;7步掌握AI视频补帧核心技术 【免费下载链接】Squirrel-RIFE 效果更好的补帧软件&#xff0c;显存占用更小&#xff0c;是DAIN速度的10-25倍&#xff0c;包含抽帧处理&#xff0c;去除动漫卡顿感 项目地址: https://gitcode.com/gh_mirrors/…...

从零构建GUI自动化测试框架:openclaw-maxauto核心原理与实战

1. 项目概述&#xff1a;一个面向自动化测试的“机械爪”看到Maxch3306/openclaw-maxauto这个项目标题&#xff0c;我的第一反应是&#xff1a;这应该是一个与自动化测试或机器人控制相关的开源工具。拆解一下&#xff0c;“openclaw”直译为“开放的爪子”&#xff0c;很容易联…...

电子取证实战:利用FTK Imager与VMware实现DD/E01镜像的动态仿真与启动

1. 电子取证中的镜像仿真入门 第一次接触电子取证时&#xff0c;我被各种专业术语搞得晕头转向。直到有一次需要分析一个嫌疑人的硬盘镜像&#xff0c;才真正体会到动态仿真的重要性。简单来说&#xff0c;动态仿真就是让存储在DD或E01镜像中的操作系统"活"起来&…...

S19|MCP 与插件:多 Agent 平台 —— 外部能力总线,让外部工具安全接入

在前十八章&#xff0c;我们的 Agent 已经拥有完整的内部能力体系&#xff1a;循环、工具、计划、子代理、技能、压缩、权限、Hook、记忆、提示词流水线、错误恢复、任务系统、后台任务、定时调度、多 Agent 团队、团队协议、自主代理、Worktree 隔离&#xff0c;所有工具都写在…...

长期使用 Token Plan 套餐后感受到的月度成本控制效果

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用 Token Plan 套餐后感受到的月度成本控制效果 对于依赖大模型 API 进行开发的个人或团队而言&#xff0c;成本始终是一个需…...

如何在Linux上快速配置开源打印机驱动:foo2zjs完整实用指南

如何在Linux上快速配置开源打印机驱动&#xff1a;foo2zjs完整实用指南 【免费下载链接】foo2zjs A linux printer driver for QPDL protocol - copy of http://foo2zjs.rkkda.com/ 项目地址: https://gitcode.com/gh_mirrors/fo/foo2zjs 在Linux系统中遇到打印机兼容性…...

MATLAB 2024 升级指南:彻底卸载旧版,高效部署新版

1. 为什么需要彻底卸载旧版MATLAB&#xff1f; 每次MATLAB大版本更新都会带来新功能和性能优化&#xff0c;但很多用户直接覆盖安装后常遇到各种奇怪问题。我去年帮实验室处理过几十台电脑的升级故障&#xff0c;90%的问题都源于旧版残留文件。比如有位同学复现图像处理代码时&…...

Win7/Win10 离线部署 VS2019 全流程实战与避坑指南

1. 离线部署VS2019的必要性与准备工作 在开发环境中&#xff0c;经常会遇到无法连接互联网的情况&#xff0c;比如企业内网隔离、保密项目开发或者老旧设备维护。这时候就需要离线安装Visual Studio 2019。我经历过多次这样的场景&#xff0c;特别是在给工厂车间的老旧Win7设备…...

基于RAG的德国开放数据智能问答助手:从原理到工程实践

1. 项目概述&#xff1a;当德国开放数据遇上GPT最近在折腾一个挺有意思的项目&#xff0c;叫 OpenDataGermanyGPT。光看名字&#xff0c;你可能觉得这又是一个“GPT套壳”应用&#xff0c;但实际玩下来&#xff0c;我发现它的核心价值远不止于此。简单来说&#xff0c;这是一个…...