<p>本文是一篇LoRaWAN的科普介绍,你已经在朋友圈看过无数蜻蜓点水的LoRaWAN文章,是时候来一篇真正的技术干货了。本文先从横向介绍下LoRaWAN的背后势力和网络部署情况,然后纵向讲解了网络架构和具体的协议内容,帮助LoRa从业者系统地了解LoRaWAN协议。</p>
<p>1 LoRaWAN是什么</p>
<p>按照LoRa联盟官方白皮书《what is LoRaWAN》的介绍,LoRaWAN是为LoRa远距离通信网络设计的一套通讯协议和系统架构。</p>
<p>另外官方提供了这张略偏技术的协议层次图,各位看官大体感受下。</p>
<p><img alt="LoRaWAN协议层次图" data-entity-type="file" data-entity-uuid="af96e536-230b-470a-9601-567bcda7219c" src="/sites/default/files/inline-images/LoRaWAN%E5%8D%8F%E8%AE%AE%E5%B1%82%E6%AC%A1%E5%9B%BE_0.png" /></p>
<p>LoRaWAN在协议和网络架构的设计上,充分考虑了节点功耗,网络容量,QoS,安全性和网络应用多样性等几个因素。经过接下来的这些内容,将会对开头这段介绍有更深刻的体会。</p>
<p>2 LoRa联盟</p>
<p>和LoRa相爱相杀的 NB-IoT 出自于全球标准化组织 3GPP ,由大名鼎鼎的ETSI(欧洲电信标准化委员会)、日本ARIB(无线行业企业协会)和TTC(电信技术委员会)、CCSA(中国通信标准化协会)、韩国TTA(电信技术协会)和北美ATIS(世界无线通讯解决方案联盟)等等组成。</p>
<p>相比于 3GPP 的根正苗红,LoRaWAN 背后的LoRa联盟则势力弱了一些。从协议的封面可以看到作者是来自于3个董事会成员公司: N. Sornin (Semtech), M. Luis (Semtech), T. Eirich (IBM), T. Kramp (IBM), O.Hersent (Actility)。</p>
<p>我们知道每一项技术的推广,都伴随着利益的推动。虽然组织和联盟都是非盈利性组织,但是旗下的企业成员都不是一心来做公益的。从企业角度来讲,花5W去投入做的事情,注定是抱着撬动至少50W美金的预期去做的。</p>
<p>LoRa联盟于2015年上半年由思科(Cisco)、IBM和升特(Semtech)等多家厂商共同发起创立,截止目前(2017.04)有400+的成员,董事会成员中也有不少大企业,大家共同为瓜分未来低功耗广域网的蛋糕而抱团努力着。这是我做的一个表格,收集了现阶段愿意交纳5W美金会费的19个董事会成员,你可以看到这些企业的愿ye景xin。</p>
<p><img alt="LoRa联盟" data-entity-type="file" data-entity-uuid="809a9621-13ec-4b69-ae90-ee53833a3e22" src="/sites/default/files/inline-images/LoRa%E8%81%94%E7%9B%9F.JPG" /></p>
<p>3 LoRaWAN的网络部署情况</p>
<p>在绑定了几个一级电信运营商后,网络部署情况就比较可观了。按照官方目前(2017.04)的声明,网络部署情况是这样:</p>
<p>34个公开声明部署的网络,至少150个在进行的城市试点部署</p>
<p><img alt="34个公开声明部署的网络,至少150个在进行的城市试点部署" data-entity-type="file" data-entity-uuid="69c4a8dc-0cc2-40e8-9807-fa9c078a1322" src="/sites/default/files/inline-images/34%E4%B8%AA%E5%85%AC%E5%BC%80%E5%A3%B0%E6%98%8E%E9%83%A8%E7%BD%B2%E7%9A%84%E7%BD%91%E7%BB%9C%EF%BC%8C%E8%87%B3%E5%B0%91150%E4%B8%AA%E5%9C%A8%E8%BF%9B%E8%A1%8C%E7%9A%84%E5%9F%8E%E5%B8%82%E8%AF%95%E7%82%B9%E9%83%A8%E7%BD%B2.gif" /></p>
<p>4 LoRaWAN 网络架构</p>
<p>在前面部分了解了LoRaWAN很火之后,我们具体从技术角度做些了解。如下是LoRa联盟官方白皮书中的网络架构图。</p>
<p><img alt="LoRa联盟官方白皮书中的网络架构图" data-entity-type="file" data-entity-uuid="3e5c55bb-cc4d-4ab1-8d06-4789c7c6fc0f" src="/sites/default/files/inline-images/LoRa%E8%81%94%E7%9B%9F%E5%AE%98%E6%96%B9%E7%99%BD%E7%9A%AE%E4%B9%A6%E4%B8%AD%E7%9A%84%E7%BD%91%E7%BB%9C%E6%9E%B6%E6%9E%84_0.png" /></p>
<p>可以看到一个LoRaWAN网络架构中包含了终端、基站、NS(网络服务器)、应用服务器这四个部分。基站和终端之间采用星型网络拓扑,由于LoRa的长距离特性,它们之间得以使用单跳传输。在终端部分官方列了6个典型应用,有个细节,你会发现终端节点可以同时发给多个基站。基站则对NS和终端之间的LoRaWAN协议数据做转发处理,将LoRaWAN数据分别承载在了LoRa射频传输和Tcp/IP上。</p>
<p>下面结合下行业生态再来看下这个网络架构,大家可以有更深的认知。图来自ST的LoRa白皮书《IoT connectivity made easier STM32 MCUs & LoRa》。</p>
<p><img alt="行业生态" data-entity-type="file" data-entity-uuid="ebf29281-d9e4-43d8-a1dc-a411e1c3c100" src="/sites/default/files/inline-images/%E8%A1%8C%E4%B8%9A%E7%94%9F%E6%80%81_0.png" /></p>
<p>5 协议概述</p>
<p>5.1 终端节点的分类</p>
<p>在开头的介绍中我们就看到有协议中有规定 Class A/B/C 三类终端设备,这三类设备基本覆盖了物联网所有的应用场景。</p>
<p>为了方便大家,我又做了个表。</p>
<p><img alt="终端节点的分类" data-entity-type="file" data-entity-uuid="d500967a-0927-4643-89bb-7781cedcdee6" src="/sites/default/files/inline-images/Class%20A%E3%80%81B%E3%80%81C%20%E4%B8%89%E7%B1%BB%E7%BB%88%E7%AB%AF%E8%AE%BE%E5%A4%87.JPG" /></p>
<p>5.2 终端节点的上下行传输</p>
<p>下面来点时序图,让大家有更深的感受。</p>
<p>这是Class A 上下行的时序图,目前接收窗口RX1一般是在上行后1秒开始,接收窗口RX2是在上行后2秒开始。</p>
<p><img alt="Class A 上下行的时序图" data-entity-type="file" data-entity-uuid="6bd4c60e-073a-4d35-bbf0-fdf5e528f548" src="/sites/default/files/inline-images/Class%20A%20%E4%B8%8A%E4%B8%8B%E8%A1%8C%E7%9A%84%E6%97%B6%E5%BA%8F%E5%9B%BE.png" /></p>
<p>Class C 和 A 基本是相同的,只是在 Class A 休眠的期间,它都打开了接收窗口RX2。</p>
<p><img alt="Class A 上下行的时序图2" data-entity-type="file" data-entity-uuid="70c62507-eedd-474f-b436-bd73d6c6af34" src="/sites/default/files/inline-images/Class%20A%20%E4%B8%8A%E4%B8%8B%E8%A1%8C%E7%9A%84%E6%97%B6%E5%BA%8F%E5%9B%BE2.png" /></p>
<p>Class B 的时隙则复杂一些,它有一个同步时隙beacon,还有一个固定周期的接收窗口ping时隙。如这个示例中,beacon周期为128秒,ping周期为32秒。</p>
<p><img alt="Class A 上下行的时序图3" data-entity-type="file" data-entity-uuid="ff8953d6-c6fa-49e3-941b-f18a0fcdb5fc" src="/sites/default/files/inline-images/Class%20A%20%E4%B8%8A%E4%B8%8B%E8%A1%8C%E7%9A%84%E6%97%B6%E5%BA%8F%E5%9B%BE3.png" /></p>
<p>5.3 终端节点的加网</p>
<p>搞明白了基础概念之后,就可以了解节点如何工作了。在正式收发数据之前,终端都必须先加网。</p>
<p>有两种加网方式:Over-the-Air Activation(空中激活方式 OTAA),Activation by Personalization(独立激活方式 ABP)。</p>
<p>商用的LoRaWAN网络一般都是走OTAA激活流程,这样安全性才得以保证。此种方式需要准备 DevEUI,AppEUI,AppKey 这三个参数。</p>
<p><img alt="终端节点的加网" data-entity-type="file" data-entity-uuid="8f5ee615-d1dd-490d-97ea-c309e6c18f99" src="/sites/default/files/inline-images/%E7%BB%88%E7%AB%AF%E8%8A%82%E7%82%B9%E7%9A%84%E5%8A%A0%E7%BD%91.png" /></p>
<p>DevEUI 是一个类似IEEE EUI64的全球唯一ID,标识唯一的终端设备。相当于是设备的MAC地址。 <br />
AppEUI 是一个类似IEEE EUI64的全球唯一ID,标识唯一的应用提供者。比如各家的垃圾桶监测应用、烟雾报警器应用等等,都具有自己的唯一ID。 <br />
AppKey 是由应用程序拥有者分配给终端。</p>
<p>终端在发起加网join流程后,发出加网命令,NS(网络服务器)确认无误后会给终端做加网回复,分配网络地址 DevAddr(32位ID),双方利用加网回复中的相关信息以及AppKey,产生会话密钥NwkSKey和AppSKey,用来对数据进行加密和校验。</p>
<p>如果是采用第二种加网方式,即ABP激活,则比较简单粗暴,直接配置 DevAddr,NwkSKey,AppSKey 这三个LoRaWAN最终通讯的参数,不再需要join流程。在这种情况下,这个设备是可以直接发应用数据的。</p>
<p>5.4 数据收发</p>
<p>加网之后,应用数据就被加密处理了。</p>
<p>LoRaWAN规定数据帧类型有 Confirmed 或者 Unconfirmed 两种,即 需要应答 和不需要应答类型。厂商可以根据应用需要选择合适的类型。</p>
<p>另外,从介绍中可以看到,LoRaWAN设计之初的一大考虑就是要支持应用多样性。除了利用 AppEUI 来划分应用外,在传输时也可以利用 FPort 应用端口来对数据分别处理。FPort 的取值范围是(1~223),由应用层来指定。</p>
<p>5.5 ADR 机制</p>
<p>我们知道LoRa调制中有扩频因子的概念,不同的扩频因子会有不同的传输距离和传输速率,且对数据传输互不影响。</p>
<p>为了扩大LoRaWAN网络容量,在协议上了设计一个LoRa速率自适应(Adaptive data rate - ADR)机制,不同传输距离的设备会根据传输状况,尽可能使用最快的数据速率。这样也使得整体的数据传输更有效率。</p>
<p>5.6 MAC命令</p>
<p>针对网络管理需要,在协议上设计了一系列的MAC命令,来修改网络相关参数。比如接收窗口的延时,设备速率等等。在实际应用过程中,一般很少涉及,暂时不管。</p>
<p>6 地区参数</p>
<p>LoRa联盟官方在协议之外,还发布了一个配套补充文档《LoRaWAN 地区参数》,这份文档描述了全球不同地区的LoRaWAN具体参数。为了避免新区域的加入而导致文档的变动,因此将地区参数章节从协议规范中剥离出来。</p>
<p>这份文档主要讲了LoRaWAN在全球各地区的具体物理层参数,不单单是频段有区别,细化到信道划分,甚至是数据速率,发射功率,最大数据长度等等都有区别。</p>
<p>为了方便大家了解总体情况,我又做了个表。</p>
<p><img alt="地区参数" data-entity-type="file" data-entity-uuid="2fc399e7-6845-4b30-b404-6ada01759028" src="/sites/default/files/inline-images/%E5%9C%B0%E5%8C%BA%E5%8F%82%E6%95%B0.png" /></p>
<p>其实这个表也可以看出一个好玩的事情,为什么韩国的参数和亚洲各国其实差不太多,却单独拎出来。如果你有记得前文中的董事会成员记录,就应该知道韩国SK电信在LoRa联盟中的地位。这么高的地位搞点小特殊,你说过分么。</p>
<p>好了,介绍完如上的信息,大家应该对LoRaWAN有了系统的了解。</p>
<p>文章来源:<a href="http://blog.csdn.net/iotisan/">twowinter的学习小站</a></p>