李 晶
(南京邮电大学 通信与信息工程学院,江苏 南京 210003)
随着科技的飞速进步,各种抄表计量的使用也越来越多,但是,由于传统的人工抄表方式效率较低、数据无法实时更新、数据精度较差,因此,这种方式已经不能满足当今的需求。在物联网技术的快速推动下,无线抄表已逐渐代替人工抄表,在人们的生活中扮演着越来越重要的角色,所以这也对无线抄表系统提出了更高的要求[1-6]。在无线抄表的应用场景中,节点一般采用电池供电,而且节点数量非常多、散布非常广,所以在该场景中,节点功耗、覆盖范围以及能容纳节点的数量是很重要的考虑指标。
低功耗广域网(Low Power Wide Area Network,LPWAN)是一种低功耗、低数据速率和远距离通信的无线广域网络,与其他技术相比,其通信距离更远,通信功耗更低、覆盖范围更广[7-8]。LoRa作为LPWAN的代表技术之一,具有覆盖范围广、功耗低、容量大等优点[9-10]。LoRaWAN是在LoRa物理层传输技术基础之上的、以介质访问控制(Media Access Control,MAC)层为主的一套协议标准,是LoRa技术的协议之一[11]。在通信协议方面,LoRaWAN的MAC层设计过于简单,所有节点均采用纯ALOHA(Pure ALOHA,P-ALOHA)的方式来发送数据[12],这虽然能降低节点功耗,但易造成通信冲突。在无线抄表的应用场景中,主要存在两种类型的业务数据:一类是周期业务数据,该业务数据需要每隔一段时间上报一次,如用电量、用水量和用气量等各种抄表数据,由于需要频繁发送,所以业务量比较大;另一类是突发业务数据,该业务数据只有在遇到紧急情况时才会上报,如抄表数据超过某些值的用量提醒、各种基表的低电量预警等,由于只有在特定情况下才会发送,所以业务量比周期业务数据要少。另外,不同类型的业务数据对传输性能的要求也不尽相同,周期业务数据对信道利用率与可靠性要求严格,而突发业务则对可靠性和时延非常敏感。在上述场景下,由于P-ALOHA协议的随机性强,节点间发生碰撞的概率非常高,从而导致信道利用率非常低和发送时延非常大;另外随着节点数量增加,节点间发生碰撞的概率大大提高,且当节点数量达到一定程度时,还会使信道陷入瘫痪,无法正常工作。
学者们针对LoRaWAN的应用主要做了以下研究:韦福鹤等人[13]基于LoRaWAN协议族和开源协议栈,分析了其中的核心结构和层间接口,并提出了一系列实用的工作流程。Polonelli等人[14]采用时隙ALOHA(Slot ALOHA,S-ALOHA)协议替代P-ALOHA协议,提高了LoRaWAN协议在丢包率和网络吞吐量方面的性能。Piyare等人[15]提出了一种基于协议与时分多址(Time Division Multiple Access,TDMA)的异步MAC协议,以实现超低功耗状态及LoRa远程连接。李民政等人[16]针对经典轮询协议的局限性,提出了一种具有动态重传和差异服务机制的TDMA时隙分配协议,能够降低丢包率以及实现区别服务。牛超等人[17]针对LoRa通信技术的特点,提出一种基于TDMA的通信组网方法,能有效降低竞争冲突,提高信道利用率。Han等人[18]针对LoRaWAN协议的局限性,研究了一种基于多通道通信的SPDS-TDMA时隙分配协议,该协议具有自适应信道速率规划和差分服务机制,能明显减小时延和降低丢包率。Ali等人[19]讨论了TDMA接入方案适用于节点接入数量多且需要定期上传数据的情况,但如果节点需要传输突发业务数据,就需要与带冲突避免的载波监听多路访问(Carrier Sense Multiple Access with Collision Avoid,CSMA/CA)方法相结合。
研究发现,TDMA协议虽然能改善P-ALOHA协议的性能,但存在一定的缺陷,当接入节点数量少且不稳定时,信道利用率非常低。混合式接入机制刚好能够弥补TDMA协议的缺陷。文献[4]是基于常见的CSMA/CA信道与TDMA信道相结合的混合式接入机制,这种机制需要节点频繁地进行信道切换,会增加节点功耗,而且受CSMA/CA信道的限制,在节点数量比较大时,碰撞率也会非常高。另外,在入网请求帧/入网响应帧与RTS/CTS报文长度相当的情况下,采用CSMA/CA协议还会降低通信效率。
当前的研究都不能很好地解决LoRaWAN在无线抄表应用场景中的局限性,为了提升LoRaWAN协议的性能,亟需设计一个新的MAC层协议,该协议基于超帧的结构,采用传统S-ALOHA与TDMA相结合的混合式接入机制,即在TDMA时隙之外,专门留出一段时间用来划分S-ALOHA时隙;在信道上融入突发业务的发送,节点可以根据TDMA时隙的使用情况,在S-ALOHA时隙与未被分配的TDMA时隙上竞争发送数据,可以很好地减少碰撞以及提高信道利用率;设计了将节点分散到一个超帧的不同复帧的方法,很好地解决了因大量节点同时发送数据而引起的高碰撞率、低信道利用率以及信道瘫痪的问题;利用超帧的结构,能使具有不同发送周期的节点在同一个信道上工作,提升信道灵活性。
1.2.1 超帧和复帧结构设计
无线抄表应用场景中的周期业务节点需要每隔一段时间发送一次数据,不同的周期业务节点可能有不同的发送周期。在传统的设计中,将发送周期T作为一个复帧的长度,复帧长度固定,此类信道只能接入一种周期长度的节点,设计不灵活。为了解决这个问题,本文设计了超帧的结构。如图1所示,一个超帧由若干个复帧组成,超帧中具体所划分的复帧数目有1~8共8种选择,超帧中复帧数目设置的参考因素将在后文详细讨论。超帧中每个复帧的长度可配,有16、32、64、128 s四种选择。超帧长度单位为s,其随复帧长度和超帧中划分复帧数目的变化而变。节点根据自己的发送周期T、超帧内复帧数目的划分情况以及复帧的长度,确定在一个超帧的发送次数。具有不同发送周期的节点在一个超帧内的发送次数是不同的,所以可以接入多种不同发送周期长度的节点。
图1 超帧及复帧结构图Fig.1 Structure diagram of superframe and multiframe
每个复帧的起始为Beacon时隙,用于网关广播Beacon帧,Beacon时隙的长度与信道参数的设置(如信道带宽、扩频因子、编码率等)及Beacon帧字节长度有关,单位为ms。除Beacon时隙之外,复帧内的其余时间又可分为两部分:竞争时段(Contention Priod,CP)和非竞争时段(Contention Free Priod,CFP)。CP时节点采用S-ALOHA的方式竞争入网或发送突发业务数据。CFP时节点采用TDMA的方式发送周期业务数据。节点在一个复帧内只能占用一个TDMA时隙,在一个超帧内发送多次数据的节点需要占用多个不同复帧的TDMA时隙。CP与CFP的长度比与复帧长度有关,对应关系如表1所示。当复帧长度配置好后,CP与CFP的长度比固定。
表1 复帧长度与CP/CFP时段长度比的对应关系Tab.1 Correspondence between the length of multiframe and the length ratio of CP/CFP time period
1.2.2 时隙结构设计
LoRa网关采用半双工的工作方式,为了保证网关与节点之间的正常通信,本文对时隙结构进行了重新设计。如图2所示,CP将每个S-ALOHA时隙分为两部分:一部分为上行,用于节点入网和发送突发业务数据;另一部分为下行,用于接收来自网关的响应帧。
图2 S-ALOHA时隙上下行的划分图Fig.2 S-ALOHA time slot uplink and downlink partition diagram
如图3所示,CFP根据TDMA时隙是否被分配,将其分为两部分:一部分为已分配出去的TDMA时隙,用于节点发送周期业务数据,该部分认为节点一定能成功发送数据,所以不需要接收网关的响应帧,因此该部分只用作上行;另一部分为未分配的TDMA时隙,可用于节点竞争入网或发送突发业务数据,由于需要接收网关的响应帧,所以节点在该部分时隙竞争发送数据时,需要占用相邻的两个TDMA时隙,前一个用作上行,竞争发送数据,后一个用作下行,等待接收网关响应帧。因此在设计时,CFP中的TDMA时隙可根据具体使用情况,作为上行或下行。
图3 CFP时段中的TDMA时隙的使用情况Fig.3 Usage of TDMA time slots during the CFP time interval
为了统计TDMA时隙的分配情况,网关以超帧为单位维系一张时隙分配表,表中记录着节点与超帧中某些复帧内时隙的占用关系。如果节点成功预约时隙,网关就会将该节点与分配时隙的占用关系添加到时隙分配表中。如果网关在连续两个超帧的某个时隙没有收到节点发送的数据,那么网关就会释放该时隙与节点的占用关系,即回收该时隙,回收了的时隙,网关可以分配给其他的节点使用。如果网关出现异常,时隙分配表会被强制清空,节点需要重新申请TDMA时隙。
1.2.3 帧结构改进与节点工作方式设计
当信道上的周期业务节点数量较少时,CFP内的大部分时隙都没有被分配,若节点只能在CP内竞争发送数据,信道利用率非常低。为解决这个问题,提出了竞争使用未被分配的TDMA时隙的方法,灵活设定节点竞争发送数据的时隙范围。为此,在Beacon帧内新增一个UnAllocSlot字段,用来告知节点未被分配的起始TDMA时隙编号。如图4所示,节点根据此字段可在S-ALOHA时隙和未分配的TDMA时隙中竞争发送数据。这样不仅可以缓解节点在CP内碰撞,还可充分利用信道资源,提高信道利用率。
图4 复帧内可用于竞争发送数据的时隙分布图Fig.4 Distribution diagram of time slots available for competitive transmission of data within a multiframe
为了减少周期业务节点上行的业务量、降低碰撞率,本文在入网请求帧中增设了Slot字段,用于告知网关节点是否预约TDMA时隙或预约数目的情况,使节点在入网的同时完成对TDMA时隙的预约。另外,为给节点分配时隙,在入网响应帧中增设了MultiNum字段和SlotNum字段,MultiNum字段是分配时隙所在的复帧编号,SlotNum字段是相应复帧内具体分配的时隙编号。
为降低节点同时发送数据而引起的碰撞,提出了分复帧发送的方法,将同时有发送需求的节点分散到一个超帧的不同复帧来发送数据,可以有效解决节点同时争抢资源而导致的高碰撞率及信道瘫痪的问题。为此,在Beacon帧中增设了MNum字段,用于告知节点当前所处复帧的编号,以便节点确认要发送数据的复帧是否到来。
由于本文采用分复帧发送的方法,所以在一个超帧内划分的复帧的数目越多,在碰撞率不超过某个值的情况下,所能接入的节点数量就越多,而且节点平均发送数据的时延就越大,所以在设置超帧内划分的复帧数目时,需要权衡考虑接入节点数量和时延这两个因素。在无线抄表的应用场景下,需要接入的节点数量比较多且对时延有一定的要求,所以在设置超帧内的复帧数目时,既要保证能接入更多数量的节点,又要尽可能地减小时延带来的影响,另外综合考虑复帧长度,将超帧内的复帧数目最多设置为8个。为此,本文在Beacon帧中增设了一个SMNum字段,用来告知节点超帧内复帧数目的划分情况。将超帧内所划分的复帧数目设置为4,即设置为一个相对适中的值,后续还可以根据具体情况再次进行修改。
本文还提出了在超帧内复帧数目固定的情况下,根据接入节点数量,动态设置复帧长度的方法:当接入节点数量较少时,将复帧长度设置为较小的值,以充分利用信道资源;当接入节点数量超过该复帧长度所能接入的最大节点数量后,将复帧长度设置为相对更大的值,来接入更多的节点。通过拉长或缩小复帧长度,能灵活地适应接入节点数量不稳定的场景,从而实现更好的性能。为此,在Beacon帧中增设了Mpriod字段,用于告知节点所设置的复帧长度。
基于上述功能需求,LoRaWAN中Beacon帧已不再适用,所以重新对Beacon帧的结构进行了设计,设计后的Beacon帧结构如图5所示。
图5 重新设计的Beacon帧结构Fig.5 Redesigned Beacon frame structure
图中,DesAddr字段为广播地址,SouAddr字段为服务器MAC地址,长度均为4 Byte;Time字段为时间戳,长度为4 Byte,主要用于完成网关与节点之间的时钟同步;SMNum字段为超帧内所划分的复帧数目,长度为3 bit,SMNum字段值0~7,分别对应超帧内划分的复帧数目为1~8;MNum字段为当前所处复帧的复帧编号,长度为3 bit,MNum字段值0~7,分别对应复帧1~8; Mpriod为复帧长度字段,长度为2 bit,Mpriod字段值与复帧长度的对应关系如表2所示;UnAllocSlot字段为未分配的起始TDMA时隙编号,长度为1 Byte;CRC字段为循环冗余校验,主要用于对前面的字段的校验,长度为1 Byte。
表2 Mpriod字段值与复帧长度的对应关系Tab.2 Corresponding relationship between mpriod field value and multiframe length
1.2.4 节点工作流程设计
无论是周期业务节点还是突发业务节点,在发送数据之前都需要先在信道上进行入网,入网以后才能向网关发送数据,步骤1~6给出了这两种节点的入网流程,图6为对应的入网流程图。
图6 节点入网流程Fig.6 Node networking process
步骤1节点上电初始化后,在信道上接收网关下发的Beacon帧,与网关保持时钟同步。
步骤2节点在超帧内随机选择一个发送入网请求的复帧M,将节点分散到一个超帧的不同复帧接入,然后进入休眠。
步骤3休眠时,节点在每个复帧的Beacon时隙醒来接收Beacon帧,以完成时钟同步和获取Beacon帧中的SMNum字段、MNum字段、Mpriod字段及UnAllocSlot字段信息,然后进入休眠。
步骤4复帧M到来,根据Beacon帧中的UnAllocSlot字段信息,在S-ALOHA时隙以及未分配的TDMA时隙之间随机选择一个发送入网请求的时隙N,然后进入休眠。
步骤5等到相应的时隙到来时,节点醒来发送入网请求帧。节点需要醒来的时隙与时隙N所处的时段有关。如果时隙N位于CFP,节点需要在时隙N+1处醒来(因为在设计时,时隙编号由复帧的起始到复帧的结束依次减小),检测信道是否空闲:如果信道空闲,则说明时隙N不是其他节点的下行时隙,那么节点可以在时隙N处发送入网请求帧;否则说明时隙N已被网关用于发送下行数据,此时节点需要跳转到步骤3,到下一个超帧的相同复帧进行重发。如果时隙N位于CP,则在时隙N到来时,节点醒来发送入网请求帧。
步骤6等待接收来自网关的入网响应帧。节点发送完入网请求帧后,如果没有收到网关的入网响应帧,则说明入网失败,需要跳转到步骤3,等到下一个超帧的相同复帧到来时,进行重发;否则,则说明节点入网成功,结束入网流程。
枸杞子药材采自宁夏、青海、甘肃、新疆等枸杞子主产区,共15批(见表1),经中国中医科学院中药资源中心金艳副研究员鉴定为真品。
入网之后,周期业务节点和突发业务节点会进入休眠,在休眠时,除了要在发送数据时醒来外,还要在每个复帧的Beacon时隙处醒来接收Beacon帧,以与网关保持时钟同步,接收完之后会再次进入休眠。当周期业务节点所分配的TDMA时隙到来时,节点醒来发送周期业务数据,发完之后,节点进入休眠,等待下一次数据的发送。入网后周期业务节点的工作流程如图7所示。
图7 入网后周期业务节点的工作流程Fig.7 Workflow of periodic business nodes after entering the network
对于突发业务节点,当突发业务数据到来时,节点发送突发业务数据的流程与节点入网流程中的步骤2~6类似,只是将上述步骤中的入网请求帧换为突发业务数据帧、入网响应帧换为ACK帧。另外,为了保证突发业务数据的时效性,突发业务节点只有一次重传机会,若重传过后还未发送成功,则直接丢弃数据,放弃重传。在成功发送数据后,节点会进入休眠,等待下一次数据的发送。入网后突发业务节点的工作流程如图8所示。
图8 入网后突发业务节点的工作流程图Fig.8 Workflow of sudden business nodes after entering the network
仿真时,设置信道带宽为125 kHz,扩频因子为8,编码率为4/5,超帧内划分的复帧数目为4,Beacon时隙、TDMA时隙和S-ALOHA时隙分别确保能传输15、42、61 Byte的数据,时隙之间及S-ALOHA时隙的上下行之间的保护时间间隔为2 ms,突发业务节点与周期业务节点数量比为1∶1,周期业务节点在一个超帧平均发送两次数据,突发业务节点在一个超帧平均发送一次数据,第一个超帧只用于节点入网以及发送周期数据,第二个及以后的超帧,用于入网碰撞重传、发送周期与突发业务数据以及突发业务数据碰撞重传。在上述条件下,由式(1)可计算出复帧内各时隙的长度,单位为ms,计算结果如表3所示。
表3 复帧内各时隙时长的划分情况Tab.3 Division of various time slot durations within a multiframe
(1)
式中:Lb为时隙能传输的字节长度,Fs为信道采用的扩频因子,B为信道带宽,Rc为信道编码率。
在表3的时隙长度下,长度为16 s和32 s的复帧能划分的时隙数目如表4所示。由于在某一复帧长度下,超帧内的TDMA时隙数目有限,当所有的TDMA时隙都被分配以后,就无法继续接入更多数量的节点,所以在某一复帧长度下,信道上所能接入的节点数量也有限,式(2)给出了在某个复帧长度下,信道能接入节点数量最大值的计算公式。
表4 不同长度的复帧内时隙数目的划分情况Tab.4 Division of the number of multiframe time slots with different lengths
(2)
基于式(2)可计算出,当复帧长度为16 s时,信道最多可接入292个节点;当复帧长度为32 s时,信道最多可接入772个节点。在仿真时,为了充分利用信道资源,实现最佳信道性能,当接入节点总数≤292时,复帧长度设置为16 s;当292<接入节点总数≤ 772时,复帧长度设置为32 s。
此外,本文主要从碰撞率以及信道利用率两方面分析本文设计的MAC协议的性能。在仿真时,碰撞率就是复帧内发生碰撞的节点数量与要竞争发送数据节点总数的比值,信道利用率是复帧内成功发送数据的总时间与复帧长度的比值,这两个性能的计算公式分别如式(3)和式(4)所示。另外,在计算这两个性能时,认为周期业务节点在分配的TDMA时隙上一定能成功发送数据。
(3)
式中:Nsum为复帧长度内要竞争发送数据的节点总数,Nc为Nsum中发生碰撞的节点总数,Nnet为复帧长度内要进行入网的节点数量,Nb为复帧长度内要发送突发业务数据的节点数量,Ncr为复帧长度内需要重传数据的节点数量。
(4)
式中:Tm为复帧长度,Tsu为复帧长度内成功发送和接收数据的总时间,TB为Beacon时隙的长度,Tp为复帧长度内成功发送周期业务数据的时间,Tnet为复帧长度内成功入网的时间,Tb为复帧长度内成功发生突发业务数据的时间,Tcr为复帧长度内成功重传数据的时间。对于P-ALOHA协议,由于不需要进行时钟同步,所以Beacon时隙的长度为0。
图9、图10分别给出了在上述仿真条件下,当接入节点总数为300时,碰撞率以及信道利用率随节点接入过程(即从节点开始入网到所有节点都接入信道的过程)的变化情况。
图9 碰撞率随节点接入过程变化的曲线图Fig.9 Curve plot of collision rate changing with node access process
图10 信道利用率随节点接入过程变化的曲线图Fig.10 Curve plot of channel utilization rate changing with node access process
图9为本文设计的MAC协议,其碰撞率随节点的不断接入呈近似阶梯型下降,在所有节点都接入信道后趋于恒定值,这是由于:① 当超帧内的复帧数目固定时,在一个超帧中,随着节点不断接入,复帧内可用于竞争的TDMA时隙越来越少,所以节点在复帧1~4内发生碰撞的概率会逐渐增大;② 由于后一个超帧某个复帧内的节点主要来自前一个超帧在相同复帧中发生碰撞的节点,所以前一个超帧某个复帧内的节点数要大于后一个超帧相同复帧内的节点数,因此相邻两个超帧之间碰撞率的差值很大;③ 由于信道上融入了突发业务的发送,所以当所有节点都入网以后,碰撞率也不会降为0,而是恒定在某个值。
综合分析图9和图10可知,本文设计的MAC协议通过采用S-ALOHA与TDMA相结合的混合式接入机制、节点分复帧接入以及竞争使用未分配的TDMA时隙,可以有效降低碰撞率、提高信道利用率以及减少信道进入稳定的时间,该MAC协议的整体性能远优于P-ALOHA协议。
图11和图12分别给出了在上述仿真条件下,所有节点都进入信道后,碰撞率和信道利用率随接入节点总数的变化情况。当接入的节点数量非常少时,无论哪种协议,信道利用率和碰撞率都非常低,没有研究意义。由表3可知,发送数据所需要的最长时间为159 ms,当复帧长度为32 s时,共能划分200个左右长度为159 ms的时间段。所以在无碰撞的情况下,P-ALOHA协议在32 s内最多可允许200个左右的节点发送数据,故仿真时从接入节点总数为200时开始研究。
图11 在所有节点接入信道以后碰撞率随接入节点 总数变化的曲线图Fig.11 Curve plot of collision rate changing with the total number of access nodes after all nodes are connected to the channel
图12 在所有节点接入信道以后信道利用率随接入节点 总数变化的曲线图Fig.12 Curve plot of channel utilization rate changing with the total number of access nodes after all nodes are connected to the channel
由图11和图12的仿真结果可知,本文设计的MAC协议与LoRaWAN的P-ALOHA协议相比,无论接入节点数量多或少,都能有效降低碰撞率、提高信道利用率;另外,该协议还能以较低的碰撞率有效解决P-ALOHA协议因节点数量多而导致的信道崩溃问题,极大提升了LoRaWAN协议的性能。
本文在LoRaWAN MAC层协议的基础上,针对无线抄表的应用场景,设计了一种新的MAC协议。设计该MAC层协议的难点在于,在降低节点功耗的同时,保证大量节点能够同时进行可靠的传输,并能充分利用信道资源。如果不将节点分复帧接入、划分专门的TDMA时隙以及充分利用未被分配的TDMA时隙,很难改善大量节点之间的碰撞问题。仿真结果表明,本文设计的MAC协议使得LoRaWAN中的P-ALOHA协议在节点数量多时碰撞率高、信道瘫痪的问题得到很好地解决,并显著提高了信道利用率,很好地拓展了LoRaWAN协议的应用场景。