LoRaWAN 1.1 网络协议规范

LoRaWAN 1.1 版本封稿很久了也没有完整啃过一遍,最近边啃边翻译,趁着这个机会把它码下来。

如果觉得哪里有问题,欢迎留言斧正。

翻译不易,转载请申明出处和链接。


1 引言

本文档阐述了LoRaWAN网络协议,它是针对电池供电的终端设备(不论移动还是固定位置)进行了优化的。

LoRaWAN网络通常采用星形拓扑结构,其中网关1(gateways)用于转发终端设备2(end-devices)和中心网络服务器(network server)之间的消息,网络服务器把来自终端设备的数据转发至相应的应用服务器(Application Server)。为了确保无线传输,LoRaWAN协议采用了对称加密,这种加密使用由设备主密钥派生出的会话密钥。设备主密钥的存贮和相关密钥的推导由后台的入网服务器(Join Server)来保证的。

本文档把网络服务器,应用服务器和入网服务器它们视为位于同一处,通过各自不同的网络节点访问这些网络服务并不在本文档的说明范围内,但是这需要后台服务器来实现。

网关通过标准的安全的IP连接接入网络服务器,而终端设备则是通过单跳的LoRa调制或者FSK来和一个或多个网关通讯3。尽管主要的传输方式都是都是由终端设备传输给网络服务器,但是所有的传输一般都是双向的。

终端设备和网关之间的通讯被分散到不同的信道(frequency channels)数据速率(data rates) 上.数据速率的选择需要在通讯距离、消息时长两者中权衡,以此达到不同数据速率之间的通讯互不干扰,LoRa的数据速率范围可以从0.3kbps到50kbps。为了最大程度的延长终端设备的电池寿命和扩大网络容量,LoRa网络使用自适应速率(adaptive data rate)机制来单独管理每一个终端设备的数据速率和RF输出。

只要遵守一下规定,终端设备可以在任意的时间,以任意的数据速率,使用任意的信道来进行传输:

  • 终端设备的每次传输都使用伪随机方式来改变信道。这样导致的频率多变性使得系统具有更强的抗干扰能力。

  • 终端设备要遵守占用子频段和当地无线电规定的最大发射占空比要求。

  • 终端设备要遵守占用子频段以及当地无线电规定的最大发射时长(空中停留时间)要求。

    备注: 占用子频段的最大发射占空比和最大发送时长以不同区域特性的定义在[LoRaWAN区域特性参数文档]

1.1 LoRaWAN 类别(Classes)

所有的LoRaWAN设备必须至少实现本文档描述的Class A的功能。此外也可以实现本文档中描述的Class B或Class C以及后续规定的可选功能。但是在任何情况下,LoRaWAN设备都必须兼容Class A。

1.2 约定

关键字必须(MUST)、不能(MUST NOT)、要求(REQUIRED)、应该(SHALL)、不应该(SHALL NOT)、可能(SHOULD)、不可能(SHOULD NOT)、推荐(RECOMMENDED)、可以(MAY)、可选的(OPTIONAL)在本文档将按照RFC 2119的规定来解释。

MAC指令的格式为LinkCheckReq(粗斜体),位和位域的格式为FRMPayload(粗体) ,常量的格式为RECEIVE_DELAY1(大写偏大),变量的格式为N(斜体)

在本文档中,

  • 所有多字节段的字节序均采用小端模式
  • EUI是8字节段,采用小端模式传输
  • 默认情况下,RFU保留位都设为0并且接收端应该忽略。

1网关也被称为集中器或基站。

2终端设备也被称为节点。

3本文档没有对中间元素(中继器)进行描述,但是对于因封装开销的有效负载却体现在本文档。中继器要求使用LoRaWAN作为回程机制。

LoRaWAN 1.1 网络协议规范 - 1 引言的更多相关文章

  1. LoRaWAN 1.1 网络协议规范 - 5 MAC指令

    LoRaWAN 1.1 网络协议规范 LoRaWAN 1.1 版本封稿很久了也没有完整啃过一遍,最近边啃边翻译,趁着这个机会把它码下来. 如果觉得哪里有问题,欢迎留言斧正. 翻译不易,转载请申明出处和 ...

  2. LoRaWAN 1.1 网络协议规范 - 4 MAC 帧格式 Part II

    LoRaWAN 1.1 网络协议规范 LoRaWAN 1.1 版本封稿很久了也没有完整啃过一遍,最近边啃边翻译,趁着这个机会把它码下来. 如果觉得哪里有问题,欢迎留言斧正. 翻译不易,转载请申明出处和 ...

  3. LoRaWAN 1.1 网络协议规范 - 4 MAC帧格式 Part I

    LoRaWAN 1.1 网络协议规范 LoRaWAN 1.1 版本封稿很久了也没有完整啃过一遍,最近边啃边翻译,趁着这个机会把它码下来. 如果觉得哪里有问题,欢迎留言斧正. 翻译不易,转载请申明出处和 ...

  4. LoRaWAN 1.1 网络协议规范 - 3 物理层帧格式

    LoRaWAN 1.1 网络协议规范 LoRaWAN 1.1 版本封稿很久了也没有完整啃过一遍,最近边啃边翻译,趁着这个机会把它码下来. 如果觉得哪里有问题,欢迎留言斧正. 翻译不易,转载请申明出处和 ...

  5. LoRaWAN 1.1 网络协议规范 - 2 LoRaWAN选项介绍

    LoRaWAN 1.1 网络协议规范 LoRaWAN 1.1 版本封稿很久了也没有完整啃过一遍,最近边啃边翻译,趁着这个机会把它码下来. 如果觉得哪里有问题,欢迎留言斧正. 翻译不易,转载请申明出处和 ...

  6. 黑客编程教程(三)Windows 网络协议

    首先介绍一下网络协议:网络协议是网络上所有设备之间通信规则的集合,他定义了通信时信息必须采用的格式和这些格式的意义.大多数 网络协议都采用分层体系结,每一层都建立在他的下层之上,向他的上一层提供服务, ...

  7. Windows Embedded Compact 7网络编程概述(下)

    11.1.1 Select I/O模型 在Windows CE中,Select模型是唯一被支持的I/O模型.Select I/O模型就是利用select函数对I/O进行管理. 函数select的功能在 ...

  8. 应用LORAWAN技术的好处是什么

    LoRaWAN现在一种非常流行的LPWA通信标准,在ISM(工业.科学.医疗)频段使用未经许可的无线电频谱,频率约为900MHz到430MHz(世界各地的标准各不相同). 物联网连接环境除了智能家庭联 ...

  9. 物联网常见通信协议RFID、NFC、Bluetooth、ZigBee等梳理

    1  概述 在上一篇文章<物联网常见通信协议与通讯协议梳理[上]-通讯协议>中,对物联网常用通信协议和通讯协议作了区分,并对通讯协议进行了分享:本文将对常用的通信协议进行剖析,重点面向市场 ...

随机推荐

  1. tidb 架构 ~Tidb学习系列(1)

    一 简介:今天来研究Tidb 二 安装测试: 0 下载Tidb wget http://download.pingcap.org/tidb-latest-linux-amd64.tar.gz   按如 ...

  2. 文加图, 理解Http请求与响应

    1. http请求和响应步骤 在讲解OkHttp之前, 我们首先来个高清大图, 看下http请求的整个步骤, 有个整体概念.  2. http每一步详细内容 在一次完整的HTTP通信过程中, Web浏 ...

  3. Python3 configparse模块(配置)

    ConfigParser模块在python中是用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section),每个节可以有多个参数(键=值). 注意:在 ...

  4. MVC自定义视图引擎地址

    先看结构 1.RouteConfig 文件(注意顺序) public static void RegisterRoutes(RouteCollection routes) { routes.Ignor ...

  5. C/C++杂记:深入虚表结构

    1. 虚表与“虚函数表” 在“C/C++杂记:虚函数的实现的基本原理”一文中曾提到“虚函数表”的概念,只是为了便于理解,事实是:虚函数表并不真的独立存在,它只是虚表(virtual table)中的一 ...

  6. 使用ado.net打造通用的数据库操作类

    最近在项目中使用中碰到了这样一种情况,查询的数据是从Oracle中获取的,但是记录下来的数据是存在Sql Server中(企业Oracle数据库管理太严,没办法操作).而且我在之前的工作中也碰到过使用 ...

  7. 转载:编译安装Nginx(1.5.1)《深入理解Nginx》(陶辉)

    原文:https://book.2cto.com/201304/19618.html 1.5 configure详解 可以看出,configure命令至关重要,下文将详细介绍如何使用configure ...

  8. gitlab代码仓库迁移

    有的时候我们需要对gitlab上的代码进行迁移,希望在迁移后能保持原有的branch.tag.commit记录等.可以使用以下方式: 1.clone代码到本地. 2.修改remote仓库的地址,添加新 ...

  9. javascript 类型比较方法

    不要使用new Number().new Boolean().new String()创建包装对象: 用parseInt()或parseFloat()来转换任意类型到number: 用String() ...

  10. cf799c 树状数组魔改

    这题的树状数组是用来维护区间最大值的!非常神奇 第一次见到这种用法,其实和区间求和也没什么差别 /* 树状数组魔改版 有三种方案:选两种c,选两个d,选一个c一个d 前两种方案需要选出符合条件的魅力值 ...