一种基于LoRa的数据帧快速连续传输方法与流程

文档序号:14993308发布日期:2018-07-20 22:56阅读:499来源:国知局

本发明属于使用低功耗广域物联网(low-powerwide-areainternetofthings)技术和超长距离超低功耗的数据传输(longrange,简称lora)的技术领域,尤其涉及在网络mac层采用了lorawan接入方式的无线广域物联网场合。



背景技术:

随着物联网的发展,越来越多可行的应用出现在工业中。当前被广泛使用的短距离无线连接技术(例如bluetooth和zigbee)不是非常适合许多低带宽长距离的应用场景。基于蜂窝技术的m2m解决方案以电量消耗为代价提供长距离通信,但这种解决方案不利于绿色环保,其它基于3gpp(例如gsm/gprs,3g/4g/5g)的解决方案都有着相同的缺陷。物联网技术提供了一种更好的解决方案用来处理大量设备之间的通信,并且能够较好的平衡可靠性、距离、延迟和能耗之间的关系。作为物联网技术的一种高效可靠的技术支撑,低功耗广域技术成为该领域中发展最为迅速的技术之一。

低功耗广域技术分为授权(如lte-m、nb-iot)和非授权(如sigfox、lora)两类,在各种低功耗广域技术中nb-iot和lora两大技术占据着主导地位。lora技术由于其长距离、低功耗、超长寿命的特点以及其比较成熟的理论,使其在全世界范围内受到了很多学者研究和厂商的支持。

lora是一种新兴的、基于1ghz以下非授权频段的低功耗长距离通信技术(参见文献[1]:iotconnectivitymadeeasierwithstm32mcusandlora.semtechcorporation,presentations&trainingmaterial[eb/ol].http://www.st.com/content/ccc/resource/sales_and_marketing/presentation/product_presentation/group0/b5/72/c6/ec/c8/e3/4a/8c/iotaugmented_stm32-lrwan/files/iotaugmented_stm32-lrwan.pdf/jcr:content/translations/en.iotaugmented_stm32-lrwan.pdf,january2017.)。lora的物理层采用了一种增强型的基于css的扩频调制技术,该调制技术显著提高了数据传输的灵敏度,能够在868mhz频段下以-137dbm的灵敏度和433mhz频段下以-148dbm灵敏度正常通信。

lora基站采用了带有自适应机制的多信道调制传输机,用来接收多个不同信道中的帧。扩频调制机制通过每个信号特定的扩频因子,使得扩频后的信号之间成正交关系,增强了通信节点的抗干扰能力。在lora调制技术中,吞吐量和通信距离依赖于lora的三个重要参数:bw(带宽)、cr(编码率)、sf(扩频因子)。bw代表射频调制的物理带宽(例如125khz),带宽越大,其有效的数据传输速率越高,传输时间也就越短。位速率与调频斜率和符号率之间的关系如下公式:

从式中可以看出,数据速率rb和sf成线性关系。sf代表扩频因子,其有效范围一般在6-12,不同的芯片支持可设置的扩频因子的有效范围不同。扩频因子越小,数据传输速率越高,但是其抗干扰能力也就越差,通信距离也将变短。

lora通信系统中网关在终端设备和网络服务器之间透传帧,终端设备不与特定的网关相关联,一个数据包会经过很多个网关发送给核心服务器,这些数据包在内容上是相同的,区别在于其它性能指标(例如信号强度、数据的完整性),因此要求核心服务器必须具备数据包过滤的能力、安全性校验能力、同时能发送acks回应网关;核心服务器收到数据包后选择整体性能最好的包发送给特定的网关。

针对不同的应用场景和lora的相关特性,近来人们提出了一些解决方案,其中lora联盟对lora技术的传输机制做出了详解的阐述,lora联盟将设备运行模式划分为三类,分别对应三个不同级别的mac协议:classa、classb、classc(参见文献[2]:sorninn,luism,eiricht,etal.lorawanspecification[eb/ol].https://portal.lora-alliance.org/desktopmodules/inventures_document/filedownload.aspx?contentid=1398,july2016.),并对帧的连续传输机制也做了设计,具体如下:

(1)下行数据连续传输机制

在lora接入技术中,下行数据帧(“下行”指从网关到终端)的连续传输采用了fpending机制,并且该机制只用在下行链路中。fpending机制的基本思路是:在数据帧头部设置一个“fending”位,用来表示网关是否还有后续帧需要发送给终端;如果该位置1表示还有后续帧需发送,置为0则表示没有。终端接收到fending位置1的帧后,向网关发送一个数据帧或者空帧(无数据帧发送则发空帧;空帧是只有头部和尾部的帧)以便用来打开下一个接收窗口接收下行帧并且促使网关发送数据帧;网关每次发帧之前都需要收到终端发来的数据帧。

(2)上行数据帧连续传输

在lora接入技术中,上行数据帧(“下行”指从终端到网关)的连续传输和单个传输一样,没有做特别的设计。具体传输方式是:如果终端有多个数据帧需要发送给网关,则它先从mac层发送缓存中取出第一个数据帧,发送给网关,接着等待一个或两个接收窗口的时间;然后取出第二个数据帧,发送给网关,又等待一个或两个接收窗口的时间;依此类似操作,直至所有数据帧都发送完毕。

近来人们对lora技术开展了一些研究。孙曼等对lora技术的classa、classb和classc三种传输方式进行了深入剖析(参见文献[3]:孙曼,张乃谦,金立标,等.基于lora标准的mac层协议研究[j].电视技术,2016,40(10):77-81.),并指出classa的终端设备在应用中功耗最低且允许双向通信。文中对两个等确认信息的通信进行了相关的阐述,不过没有考虑对其传输机制的改进,其传输机制仍然采用lorawan官方采用的相关传输机制。

sanfratelloa在enablingrelay-basedcommunicationinloranetworksfortheinternetofthings:design,implementationandexperimentalevaluation(参见文献[4]:sanfratelloa.enablingrelay-basedcommunicationinloranetworksfortheinternetofthings:design,implementationandexperimentalevaluation[d].italy:universit`adipisa.2016.)一文中提出一种基于tdma的lora传输方式,文中将时隙分为bindphase和transmissionphase两个阶段。在bindphase阶段,终端进行中继的寻找和认证,transmissionphase阶段进行信息的交互。但这种基于tdma的传输方式,对终端设备的要求相对严格,终端需要打开一个bindslot窗口进行同步。这种传输方式在通信量相对较低的场景中明显不适用,因为在低通信量的场景中,终端大多时间是处于休眠模式以减少额外的能耗,但文中提出的传输方式在其能耗方面有所增加。

综上所述,lora是一门新兴技术,由于它的超长距离和低功耗等优点,已经受到了学术界及厂商的极大关注,并且近几年也等到了快速的发展。但随着深入研究发现,现有lora相关技术的数据帧连续传输方法存在以下问题:

(1)无论是上行还是下行数据帧的连续传输,数据帧发送节点在发出一个数据帧后,均需要等待一段时间才能发送下一个数据帧;而且,在下行数据帧连续传送时,网关需要收到终端发的上行帧才能发送下一个数据帧;这种方式不仅导致了数据帧延迟的增加,而且也会增大控制开销。

(2)在收到数据帧后回复确认信息方面,对于上行或下行的数据帧,现有相关方法均单独为每一个帧回复确认信息,每次回复操作只能确认一个数据帧接收成功,在能够用一次回复确认多个数据帧接收成功时,会显现出一定的冗余控制开销和数据帧延迟。

上述问题会导致数据帧延迟和控制开销偏大,不利于mac层数据传输性能的提高,因此有待解决。



技术实现要素:

为了解决上述现有lora相关技术在数据帧连续传输方法中存在的问题,本发明提出一种基于lora的数据帧快速连续传输方法;它包含“分批编号连续发帧”和“自适应回复确认信息”两种新机制,在数据帧的传输过程中,使节点可以一次连续发送最多8个需确认数据帧和不限数量的无需确认数据帧,并且可以用一个自适应可变长确认帧对最多8个需确认数据帧进行回复,从而不仅能够加快数据帧的发送,减小数据帧延迟,而且还能够在总体上减少确认帧的数量,降低控制开销。

(一)本发明提出的新机制的基本思路和主要操作

以下具体介绍本发明提出的“分批编号连续发帧”和“自适应回复确认信息”两种新机制的基本思路和主要操作。

1.分批编号连续发帧

“分批编号连续发帧”新机制的设计目的是使数据帧发送节点能够一次性发送多个帧,从而加快数据帧的发送速率,减小数据帧延迟。它的基本思路是:分批次连续发送待发的需确认数据帧,并利用帧头部的3个保留位(如附图1所示)在每一批次中对需确认数据帧进行编号,从而有利于回复确认信息时对数据帧的接收状况进行标识;对于无需确认数据帧,则按照它们所装分组在mac层缓存中的位置依序发送,不编号,也不为它们回复确认信息;每一批数据帧对应于一次连续的发送过程,一次连续发送最多可以发送8个需确认数据帧和不限数量的无需确认数据帧。停止当前批次数据帧连发的方式有以下三种:发完全部待发分组;发完第8个需确认数据帧;当前数据帧为需要立即确认的数据帧。不管是网关节点还是终端节点,在连续发送数据帧的过程中都不需要对方节点发帧来进行触发。

“分批编号连续发帧”新机制的流程如附图2所示,主要操作如下:

s1_1:每个节点均在mac层设置一个容量为8个最大长度数据帧的待确认数据帧缓存,用于存储已经发送但还没收到对应确认信息的需确认数据帧;并且,设置一个数据帧编号的整数型参数;同时,设置一个“等待接收确认帧”参数(用“wait”表示),用于表示是否在等待接收已发数据帧对应的确认帧,其值=0表示未等待,其值≠0表示在等待,在等待时间内不能发送新的数据帧,缺省初始值为0;此外,再设置一个“当前目的mac地址”的参数(用“mac_a”表示),用于表示当前正在发生的这一批数据帧的目的mac地址,缺省初始值为-1。

s1_2:一个节点判断:wait=1?如果成立,执行下一步;如果不成立,设置mac_a=-1,然后转步骤s1_4。

s1_3:当前节点执行数据帧确认和重传操作,完成后设置:wait=0,mac_a=-1。数据帧确认和重传操作的主要内容包括:收到数据帧确认信息就根据该信息删除待确认数据帧缓存里对应的数据帧;设置一个时间阈值,超过该阈值还没有收到数据帧确认信息就重发待确认数据帧缓存里的数据帧。

s1_4:当前节点判断:在自己的mac层发送缓存中有无待发的分组?如果有,执行下一步;如果无,转步骤s1_2。

s1_5:当前节点判断:mac_a=-1?如果成立,设置mac_a=mac层发送缓存中第一个待发分组的目的mac地址,然后转步骤s1_8;如果不成立,执行下一步。

s1_6:当前节点判断:mac层发送缓存中第一个待发分组的目的mac地址=mac_a?如果成立,转步骤s1_8;如果不成立,执行下一步。

s1_7:当前节点判断:待确认缓存的帧数>0?如果成立,设置wait=1,然后转步骤s1_3;如果不成立,设置wait=0和mac_a=mac层发送缓存中第一个待发分组的目的mac地址,然后执行下一步。

s1_8:当前节点从mac层发送缓存中取出第一个待发分组,加上帧头和帧尾,组装成一个数据帧。

s1_9:当前节点判断:待发送的数据帧是否需要确认?如果是,则令数据帧编号=待确认数据帧缓存的帧数,并将该编号以3位二进制数的形式,依序写入数据帧头部的3位保留位中,接着将数据帧拷贝至待确认缓存的尾部,然后执行下一步;如果否,则在帧头部的类型字段设置帧类型为“无需确认”类型,然后转步骤s1_12。

s1_10:当前节点判断:待发送的数据帧是否需要立即确认?如果是,则设置帧头部的帧类型字段为需立即确认类型,然后转步骤s1_15;如果否,则设置帧头部的帧类型字段为需确认类型,然后执行下一步。

s1_11:当前节点判断:待确认缓存中的帧数≥8?如果是,转步骤s1_15;如果否,执行下一步。

s1_12:当前节点判断:发送缓存中第一个待发分组存在(即有分组待发)且它的目的地址=mac_a?如果成立,转步骤s1_14;如果不成立,执行下一步。

s1_13:当前节点判断:待确认缓存中的帧数>0?如果成立,转步骤s1_15;如果不成立,设置:数据帧头部的fpending位置为0,wait=0,mac_a=-1,发送数据帧,然后转步骤s1_4。

s1_14:当前节点设置:数据帧头部的fpending位置为0,wait=0,接下来发送数据帧,然后转步骤s1_8。

s1_15:当前节点设置:数据帧头部的fpending位置为0,wait=1,接下来发送数据帧,然后转步骤s1_3。

2.自适应回复确认信息

“自适应回复确认信息”新机制的设计目的是通过自适应地灵活使用多种形式为需确认数据帧回复确认信息,达到减小控制开销的效果。它的基本思路是:用一个确认帧回复多个需确认数据帧,用一个可变长度的一维二进制矢量来表示各数据帧是否接收成功;用1个新类型、无帧体的确认帧表示需确认数据帧被全部成功接收;当需确认数据帧不多于3个时借用帧头部的保留位捎带确认信息,并且可以使用数据帧头部捎带确认信息。通过以上思路的运用,能够达到从整体上减少确认帧数量、降低控制开销的效果。

“自适应回复确认信息”新机制的流程如附图3所示,主要操作如下:

s2_1:每个节点均在mac层设置一个长度为8位的2进制矢量——需确认数据帧接收矢量(用“wv”表示),用于记录成功接收需确认数据帧的状况,矢量中每一位元素的位置对应需确认数据帧的编号,元素的值为“1”表示成功收到该元素所在位置对应的需确认数据帧,值为“0”表示未收到,缺省默认值为“0”。

s2_2:一个节点判断:是否收到对方节点发给自己的数据帧?如果是,将数据帧帧体的内容取出,上传给节点的上一层,并提取出帧头部“mtype”字段的值,然后执行下一步;如果否,继续循环执行本步骤。

s2_3:当前节点根据“mtype”字段值判断:该数据帧是否需要确认?如果是,转步骤s2_7;如果否,执行下一步。

s2_4:当前节点判断:收到的数据帧头部的“fpending”位的值是否为0?如果是,说明发送节点后续不再发帧,执行下一步;如果否,说明发送节点后续还会发帧,转步骤s2_2。

s2_5:当前节点判断:wv=0?如果是,说明没有需要回复的确认信息,转步骤s2_2;如果否,说明有需要回复的确认信息,执行下一步。

s2_6:当前节点生成一个新类型的(mtype字段的值为110,如附图5所示)、帧体长度可以在0~5bits之间自适应动态变化的确认帧;接着,从该确认帧头部的3个保留位开始,依序填入需确认数据帧接收矢量的元素,确认帧里的1位填入矢量的1个元素,如果确认帧头部装不完元素就在帧体里增加位数;如果需确认数据帧接收矢量从某一位开始,其后的元素值均为0,则确认帧里只装载该位之前的元素,从该位起之后的元素不再装载,帧体也不再因此而增加位数;然后,将该确认帧发送给对方节点(即需确认数据帧的发送节点);如果需确认的数据帧全部被成功接收,则生成另一种新类型、无帧体的确认帧(mtype字段的值为111,如附图5所示),然后,将该帧发送给对方节点;如果需确认数据帧接收矢量中只有0号元素值为1且当前节点即将向对方节点发送数据帧,则当前节点不发送确认帧,而是将待发数据帧头部的“ack”位置1,然后将数据帧发送给对方节点;最后,设置wv=0并转步骤s2_2。

s2_7:当前节点从收到的数据帧头部的3个保留位中取出值,依序组合形成该数据帧的编号,接着将需确认数据帧接收矢量中与该编号对应的元素置为1。

s2_8:当前节点查询收到的数据帧头部的“mtype”字段,判断:该数据帧是否是需要立即确认?如果是,转步骤s2_6;如果否,执行下一步。

s2_9:当前节点判断:收到的数据帧头部的“fpending”位的值是否为0?如果是,说明发送节点后续不再发帧,转步骤s2_6;如果否,说明发送节点后续还会发帧,转步骤s2_2。

(二)本发明提出的基于lora的数据帧快速连续传输方法的主要操作

本发明提出的基于lora的数据帧快速连续传输方法运行在采用lora技术的无线网络的节点上,无论是网关还是终端均可使用,既适用于从网关到终端的下行数据帧传输,也适用于从终端到网关的上行数据帧传输。当一个节点需要向另一个节点发送任何类型的数据帧时,便可以使用本发明提出的基于lora的数据帧快速连续传输方法。

本发明提出的一种基于lora的数据帧快速连续传输方法,其主要操作步骤如下:

s_1:每个节点均在mac层设置:(1)一个容量为8个最大长度数据帧的待确认数据帧缓存,用于存储已经发送但还没收到对应确认信息的需确认数据帧;同时,设置一个“等待接收确认帧”参数(用“wait”表示),用于表示是否在等待接收已发数据帧对应的确认帧,其值=0表示未等待,其值≠0表示在等待,在等待时间内不能发送新的数据帧,缺省默认值为0。(2)一个长度为8位的2进制矢量——需确认数据帧接收矢量(用“wv”表示),用于记录成功接收需确认数据帧的状况,矢量中每一位元素的位置对应需确认数据帧的编号,元素的值为“1”表示成功收到该元素所在位置对应的需确认数据帧,值为“0”表示未收到,缺省默认值为“0”。(3)一个“当前目的mac地址”的参数(用“mac_a”表示),用于表示当前正在发生的这一批数据帧的目的mac地址,缺省初始值为-1

s_2:一个节点判断:wait=0?如果成立,转步骤s_4;如果不成立,执行下一步。

s_3:当前节点执行数据帧确认和重传相关操作,完成后设置:wait=0,mac_a=-1。

s_4:当前节点判断:在自己的mac层发送缓存中有无待发的分组?如果有,执行下一步;如果无,转步骤s_8。

s_5:当前节点判断:当前正在发送的数据帧批次是否已发送完毕(判断条件是:“mac_a=-1”)?如果是,则在一个新的连续发送数据帧批次中发送mac层发送缓存中的第一个待发分组,然后转步骤s_8;如果不是,执行下一步。

s_6:当前节点判断:mac层发送缓存中的第一个待发分组能否放在当前正在发送的数据帧批次中发送(判断条件是:“wait=0”且“第一个分组对应的目的mac地址=mac_a”且“待确认数据帧缓存中的帧数<8”)?如果能,执行下一步;如果不能,转步骤s_8。

s_7:当前节点将mac层发送缓存中的第一个待发分组放在当前正在发送的数据帧批次中发送,然后转步骤s_8。

s_8:当前节点判断:是否收到对方节点发给自己的数据帧?如果是,将数据帧帧体的内容取出,上传给节点的上一层,然后执行下一步;如果否,转步骤s_2。

s_9:当前节点查询收到的数据帧头部的“mtype”字段,判断:该数据帧是否无需确认?如果是,执行下一步;如果否,转步骤s_13。

s_10:当前节点判断:收到的数据帧头部的“fpending”位的值是否为0?如果是,说明发送节点后续不再发帧,执行下一步;如果否,说明发送节点后续还会发帧,转步骤s_2。

s_11:当前节点判断:wv矢量=0?如果是,说明没有需要回复的确认信息,转步骤s_2;如果否,说明有需要回复的确认信息,执行下一步。

s_12:当前节点生成一个新类型的、帧体长度可以在0~5bits之间自适应动态变化的确认帧;接着,从该确认帧头部的3个保留位开始,依序填入需确认数据帧接收矢量的元素,确认帧里的1位填入矢量的1个元素,如果确认帧头部装不完元素就在帧体里增加位数;如果需确认数据帧接收矢量从某一位开始,其后的元素值均为0,则确认帧里只装载该位之前的元素,从该位起之后的元素不再装载,帧体也不再因此而增加位数;然后,将该确认帧发送给对方节点(即需确认数据帧的发送节点);如果需确认的数据帧全部被成功接收,则生成另一种新类型、无帧体的确认帧,然后,将该帧发送给对方节点;如果需确认数据帧接收矢量中只有1号元素值为1且当前节点即将向对方节点发送数据帧,则当前节点不发送确认帧,而是将待发数据帧头部的“ack”位置1,然后将数据帧发送给对方节点;最后,转步骤s_2。

s_13:当前节点从收到的数据帧头部的3个保留位中取出值,依序组合形成该数据帧的编号,接着将需确认数据帧接收矢量中与该编号对应的元素置为1。

s_14:当前节点查询收到的数据帧头部的“mtype”字段,判断:该数据帧是否是需要立即确认的数据帧?如果是,转步骤s_12;如果否,执行下一步。

s_15:当前节点判断:收到的数据帧头部的“fpending”位的值是否为0?如果是,说明发送节点后续不再发帧,转步骤s_12;如果否,说明发送节点后续还会发帧,转步骤s_2。

(三)本发明的有益效果

本发明的有益效果主要是:在使用lora接入技术的无线网络的数据帧传输过程中,能够一次连续发送最多8个需确认数据帧和不限数量的无需确认数据帧,从而不仅能加快数据帧的发送,减小数据帧延迟,而且还能在总体上减少确认帧的数量,降低控制开销。

本发明减小数据帧延迟、从总体上降低控制开销的有益效果主要来自以下两个方面:

(1)采用“分批编号连续发帧”新机制后,数据帧发送节点能够一次连续发送最多8个需确认数据帧和不限数量的无需确认数据帧,在连续发帧过程中不需要对方节点发帧来触发(在现有相关方法中网关的发帧操作需要终端发帧来触发),也不需要安排等待时间,从而能够加快数据帧的发送,减小数据帧延迟。

(2)采用“自适应回复确认信息”新机制后,数据帧接收节点可以用一个确认帧回复多个需确认数据帧,用1个新类型、无帧体的确认帧表示需确认数据帧被全部成功接收,当需确认数据帧不多于3个时借用帧头部的保留位捎带确认信息,并且可以使用数据帧头部捎带确认信息;从而能够达到从整体上减少确认帧数量、降低控制开销的效果。

附图说明

附图1为数据帧头部的保留位和关键标志位示意图。

本发明所提新方法用到了数据帧头部的n1、n2和n3共3个保留位,也使用了原有的“fpending”位。

附图2为“分批编号连续发帧”新机制的流程图。

附图3为“自适应回复确认信息”新机制的流程图。

附图4为需确认数据帧接收矢量示意图。

附图5为“mtype”字段值代表的帧类型说明。其中“110”代表可变长的确认帧,“111”代表所有数据帧均被成功接收的数据帧。

具体实施方式

本发明提出的基于lora的数据帧快速连续传输方法适用于在采用lora技术的无线通信系统或网络中使用;在由一个lora网关节点和一个lora终端节点组成的无线通信系统中,网关节点和终端节点均可使用本发明提出的连续传输方法,具体实施方式如下:

cs_1:网关节点和终端节点均在各自mac层设置:(1)一个容量为8个最大长度数据帧的待确认数据帧缓存,用于存储已经发送但还没收到对应确认信息的需确认数据帧;同时,设置一个“等待接收确认帧”参数(用“wait”表示),用于表示是否在等待接收已发数据帧对应的确认帧,其值=0表示未等待,其值≠0表示在等待,在等待时间内不能发送新的数据帧,缺省默认值为0。(2)一个长度为8位的2进制矢量——需确认数据帧接收矢量(用“wv”表示),用于记录成功接收需确认数据帧的状况,矢量中每一位元素的位置对应需确认数据帧的编号,元素的值为“1”表示成功收到该元素所在位置对应的需确认数据帧,值为“0”表示未收到,缺省默认值为“0”。(3)一个“当前目的mac地址”的参数(用“mac_a”表示),用于表示当前正在发生的这一批数据帧的目的mac地址,缺省初始值为-1

cs_2:一个节点判断:wait=0?如果成立,转步骤cs_4;如果不成立,执行下一步。

cs_3:当前节点执行数据帧确认和重传相关操作,完成后设置:wait=0,mac_a=-1。数据帧确认和重传操作的主要内容包括:收到数据帧确认信息就根据该信息删除待确认数据帧缓存里对应的数据帧;设置一个0.5s的时间阈值,超过该阈值还没有收到数据帧确认信息就重发待确认数据帧缓存里的数据帧。

cs_4:当前节点判断:在自己的mac层发送缓存中有无待发的分组?如果有,执行下一步;如果无,转步骤cs_8。

cs_5:当前节点判断:当前正在发送的数据帧批次是否已发送完毕(判断条件是:“mac_a=-1”)?如果是,则在一个新的连续发送数据帧批次中发送mac层发送缓存中的第一个待发分组,然后转步骤cs_8;如果不是,执行下一步。

cs_6:当前节点判断:mac层发送缓存中的第一个待发分组能否放在当前正在发送的数据帧批次中发送(判断条件是:“wait=0”且“第一个分组对应的目的mac地址=mac_a”且“待确认数据帧缓存中的帧数<8”)?如果能,执行下一步;如果不能,转步骤cs_8。

cs_7:当前节点将mac层发送缓存中的第一个待发分组放在当前正在发送的数据帧批次中发送,然后转步骤cs_8。

cs_8:当前节点判断:是否收到对方节点发给自己的数据帧?如果是,将数据帧帧体的内容取出,上传给节点的上一层,然后执行下一步;如果否,转步骤cs_2。

cs_9:当前节点查询收到的数据帧头部的“mtype”字段,判断:该数据帧是否无需确认?如果是,执行下一步;如果否,转步骤cs_13。

cs_10:当前节点判断:收到的数据帧头部的“fpending”位的值是否为0?如果是,说明发送节点后续不再发帧,执行下一步;如果否,说明发送节点后续还会发帧,转步骤cs_2。

cs_11:当前节点判断:wv矢量=0?如果是,说明没有需要回复的确认信息,转步骤cs_2;如果否,说明有需要回复的确认信息,执行下一步。

cs_12:当前节点生成一个帧体长度可以在0~5bits之间自适应动态变化的新类型确认帧,mtype字段的值设为110;接着,从该确认帧头部的3个保留位开始,依序填入需确认数据帧接收矢量的元素,确认帧里的1位填入矢量的1个元素,如果确认帧头部装不完元素就在帧体里增加位数;如果需确认数据帧接收矢量从某一位开始,其后的元素值均为0,则确认帧里只装载该位之前的元素,从该位起之后的元素不再装载,帧体也不再因此而增加位数;然后,将该确认帧发送给对方节点(即需确认数据帧的发送节点);如果需确认的数据帧全部被成功接收,则生成另一种新类型、无帧体的确认帧,mtype字段的值为111,然后,将该帧发送给对方节点;如果需确认数据帧接收矢量中只有1号元素值为1且当前节点即将向对方节点发送数据帧,则当前节点不发送确认帧,而是将待发数据帧头部的“ack”位置1,然后将数据帧发送给对方节点;最后,转步骤cs_2。

cs_13:当前节点从收到的数据帧头部的3个保留位中取出值,依序组合形成该数据帧的编号,接着将需确认数据帧接收矢量中与该编号对应的元素置为1。

cs_14:当前节点查询收到的数据帧头部的“mtype”字段,判断:该数据帧是否是需要立即确认的数据帧?如果是,转步骤cs_12;如果否,执行下一步。

cs_15:当前节点判断:收到的数据帧头部的“fpending”位的值是否为0?如果是,说明发送节点后续不再发帧,转步骤cs_12;如果否,说明发送节点后续还会发帧,转步骤cs_2。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1