如何使用LoRa基础™站
LoRa Basics™Station是Semtech于2019年最初发布的LoRaWAN®网关软件项目。在这篇文章中,我们回答了一些你可能会问的关于这个项目的问题:
- 为什么是LoRa Basics Station?
- LoRa基础站能做什么?
- LoRa基础站是如何建造的?
- LoRa基本站如何工作?
- LoRa基础站有多安全?
- 我如何开始?
为什么是LoRa Basics Station?
在LoRaWAN组网中,网关是LoRaWAN网络服务器(LNS)的物理层(PHY)接口:它侦听无线电频谱的某些部分,使用LoRa调制从传感器发出的信号中解码出有效的LoRaWAN数据包,并将其转发给LNS。它还将LoRaWAN数据包从LNS传输到传感器,作为lora调制信号。读到这在LoRa开发者门户网站的技术期刊上发表的博客文章以了解更多关于网关在LoRaWAN网络中的角色。
LoRa基础站(Station)是一个LoRaWAN网关软件实现,它提供了处理数据包流、管理频谱访问和LNS回程连接等核心功能。为了在大型网关上安全、可靠、高效地完成这些任务,Station定义了两个后端协议:
1)LNS协议是主要的数据平面,通过安全的WebSockets提供一个低延迟的双向通信通道。负载平衡和集中配置管理的各个方面内置于该协议中。
2)此外,Station还提供凭据管理和固件更新接口配置和更新服务(CUPS)协议-一个简单的认证HTTPS事务,用于交付LNS接口凭据和签名固件二进制文件。
文档和协议定义:https://lora-developers.semtech.com/resources/tools/lora-basics/lora-basics-for-gateways/
网关软件实现:https://github.com/lorabasics/basicstation
LoRa基础站能做什么?
LoRa基础站可实现LoRaWAN A类、B类和c类基本数据包转发功能相关的所有任务。此外,该站的几个特性使其特别适用于集中配置管理和远程检查功能是关键的大规模网关部署。Station的架构使其易于移植到不同的平台,甚至嵌入式系统。CUPS和LNS协议的基本功能是可扩展的,有助于围绕配置管理、计时、远程检查和干预等更复杂的使用场景进行协调。
功能概述:
- 支持通用无线电硬件参考设计:
- v1.5(单个sx1301通过SPI + FPGA用于LBT)
- v2(多个sx1301s通过SPI + DSP进行精细时间冲压)
- Picocell(类似于v1.5,但通过USB和降低功耗- USB加密狗)
- Corecell(单sx1302 over SPI)
精益建筑:
- 资源高效的设计-为嵌入式应用程序做好准备
- 最小的第三方依赖以获得最佳的可移植性
- 低级微调可能通过丰富的运行时参数集
完全支持Linux主机:
- 守护进程模式
- 灵活的日志记录,日志文件旋转和截断
- 主/从设置多无线电操作
安全且防火墙友好的TCP/IP通信:
- 不需要入站连接
- 通过TLS证书或HTTP令牌标头进行身份验证
LNS协议:
- 无线电参数集中管理
- 远程系统命令和可选的交互式shell
- 灵活的运行状况和状态报告机制
- GPS时间推断
- 时间转移(方便室内B类用例)
杯协议:
- 具有回滚功能的连接凭证的事务性更新
- 带有ECDSA签名的安全固件更新交付
有关特性的更全面描述,请参阅LoRa开发者门户.
LoRa基础站是如何建造的?
图1 LoRa Basics Station系统概述
来源:https://lora-developers.semtech.com/resources/tools/lora-basics/lora-basics-for-gateways/
编译后的Station二进制文件是在网关主机平台的操作系统的用户空间中执行的应用程序。图1说明了Station如何与其他系统组件交互。
在左侧,该图暗示了网关无线电硬件及其到网关主机平台的接口,通常通过串行接口(如SPI)连接。Station构建在Semtech为不同网关无线电硬件参考设计提供的硬件抽象层(HAL)库之上,以与无线电硬件交互。
在图像的右侧,显示了Station期望的后端服务以及相应的协议LNS和CUPS。到这些服务的连接通常是通过基于ip的网络建立的。这使得CUPS和LNS协议可以建立在万维网上使用的经过验证的协议栈之上,即用于传输的HTTP和WebSockets以及用于安全的TLS。
中心块表示在操作系统(OS)内运行Station进程的网关主机平台。该模块被划分为Station的高级模块化组件,为各种系统组件提供不同的接口:
- RAL:用于不同hal的无线电抽象层
- SYS:不同操作系统(Linux、FreeRTOS等)的系统抽象层
- NET:构建在mbedTLS之上的网络抽象层
图2显示了LoRa Basics Station软件架构的更详细视图。
图2:LoRa基本站架构
该框图揭示了RAL、SYS和mbedTLS模块组成了一个特定于硬件的适应层,该层为系统组件提供了一个面向可移植核心实现的统一接口。在编译时,选择RAL层和SYS层,生成的对象与mbedTLS库静态链接。
可移植核心是一个无依赖的C模块,围绕异步协作多任务运行时(AIO)构建,包括Station的所有核心功能:LoRa数据包处理、数据包缓冲、下行队列管理、频谱访问管理、协议解析(JSON)、协议状态逻辑(CUPS/LNS)、时间同步等等。
该体系结构支持:
- 易于移植:将Station移植到新的HAL的工作仅限于对RAL模块的更改。将Station移植到新的主机平台的工作仅限于修改SYS模块。
- 易于测试:硬件独立的测试可以通过将HAL块替换为一个组件来完成,该组件将RAL的HAL API调用与远程过程调用(rpc)转换为测试套件。LoRa基础站回归测试利用这种方法。
Station构建环境允许我们设置编译时选项,从而为目标环境生成最佳的Station可执行文件。这些选项被分组到高级标识符中平台而且变体定义为setup.gmk.在构建过程中,依赖项会被自动拉取、编译和链接。
LoRa基本站如何工作?
配置LoRa基础站:
为了执行Station流程,必须设置几个配置文件。的station.conf文件包含配置电台方面的设置以及无线电硬件的静态配置:
{
"radio_conf": {..}
"station_conf": {..}
}
的radio_conf对象取决于无线电硬件配置。它只由制造商填充一次,不会随时间变化。station_conf对象定义了许多行为参数。指LoRa基础站:配置文件参阅有关配置Station的所有详细信息。
在开始Station流程之前,我们需要定义需要连接的位置。这里我们有两个选择:
- 该文件tc.uri包含到LNS WebSocket端点的完整URL。URL以ws: / /如果使用纯文本连接。使用wss: / /方案将触发TLS连接tc。{cert、关键、信任}凭据集。
- 如果文件cups.uri如果存在,则该站将自动使用CUPS协议检索LNS连接的详细信息。该文件包含到CUPS HTTP端点的有效URL。使用https://方案将触发TLS连接杯子。{cert、关键、信任}凭据集。
在成功建立到这些端点的连接之后,相应的文件被复制到{tc,cups}-bak。{uri,cert,key,trust}文件,并在CUPS事务期间用作回退连接。如果是可选{tc、杯子}引导。{uri, cert、关键、信任}这些文件都存在于Station的主目录中,这些文件将被用作最终回退端点,以防其他文件失败。
LNS协议
假设LNS连接配置正确tc.uri, Station将连接到它,并在第一步中将自己通告给服务端点。服务端点使用最终的WebSocket连接端点进行响应,其中Station使用相同的凭证立即进行连接。在将自身通告给最终连接端点后,Station从LNS接收到一个配置对象,该配置对象至少包含网关操作的频率计划和区域上下文。
在应用频率计划并启动无线电之后,网关处于稳定状态,在此期间它可以交换许多消息。当一个有效的LoRaWAN帧被无线电解调时,它被直接转发到LNS。此外,LNS还可以通过网关将下行链路传输到终端设备。如果发送了下行链路,则返回确认信息给LNS。如果LNS连接异常断开,则所有接收到的上行链路都将被缓冲,直到连接重新建立。
CUPS协议
CUPS协议是站内的一个独立引擎。它使用带有json编码主体的HTTP POST向CUPS端点声明其当前配置状态。CUPS服务器使用此信息来决定是否需要更新,并使用一个包含CUPS端点或LNS端点或两者的新凭据集的八字节流进行响应。空响应意味着不需要更新。
在同一个响应中,CUPS可以选择附加一个有签名的可执行blob。此可执行文件的格式与协议本身无关,但它应该与网关主机平台能够应用的格式相匹配。对于嵌入式主机平台或可执行脚本,它可以是完整的固件映像;对于基于linux的主机系统,它可以是自动提取存档。为了检查可执行文件的签名,可以将多个公共ECDSA签名密钥配置为sig-{0,1,2,…}。关键文件。
CUPS并不是被设计成一个全面的网关管理器。相反,它的底层原语为最基本的管理任务提供了一种简单的统一方法:凭据管理和安全的远程固件更新。
LoRa基础站有多安全?
为了确保基于ip的后端连接的安全,LoRa Basics Station依赖于万维网中日常使用的知名概念。给定连接的身份验证模式取决于连接定义文件{tc,cups}.{uri,trust,key,crt}的存在和内容。
没有认证
当服务端点url明确声明纯文本连接时,不使用身份验证:
* .uri: ws: / /…(对于tc.uri)或http://..。(cups.uri)
当操作系统已经通过IPsec在网络层上实现了安全性,或者通过防火墙和网络隔离(所有主机都受信任)建立了安全性时,这非常有用。没有IPsec的internet上的网关连接应该始终使用下一种身份验证方法之一。
服务器和客户端认证
如果服务端点URL声明为安全连接,则启用相互身份验证:
* .uriwss: / /……(对于tc.uri)或https://..。(cups.uri)
根据证书颁发机构(CA)检查服务器的真实性。CA的证书必须在*. .信托文件。
* .trust:服务器CA的受信任证书(PEM或DER编码的X509证书)
根据*的存在,站点提供了两种建立客户端真实性的选项。键和*。crt文件:
- 客户端令牌认证[*.key]
*。key:有效的HTTP报头,包含服务器的客户端身份验证信息(例如:Authorization:…\r\n)
* .crt:客户端证书(PEM或DER编码的X509证书)
*。key:私钥(PEM或DER编码的x509密钥)
提示调试网关TLS设置的一个好方法是执行Station,将环境变量STATION_TLSDBG设置为1(最低)和4(最高)之间的详细级别。
我如何开始?
开始使用LoRa基础站很容易。你可以直接进入快速入门指南.如果你想了解细节,这里有大量关于LoRa基础站在LoRa开发人员门户网站(可从工具页),以及《技术期刊》上的一篇文章,关于lorwan®网关你需要知道的5件事,这可能也有帮助。
如果你有任何问题,我们邀请你在网关通道LoRa开发者门户论坛.