一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

无线自组网的数据自动重传方法及应用与流程

2022-07-23 12:20:11 来源:中国专利 TAG:


1.本发明涉及无线通信的数据传输技术领域,尤其涉及一种无线自组网的数据自动重传方法及应用。


背景技术:

2.无线自组网(mobile ad-hoc network,manet,又称移动自组网)是由一组带有无线收发装置的移动结点组成的一个无线移动通信网络,其通过动态路由和移动管理技术来传输具有服务质量要求的多媒体信息流。无线自组网不依赖于预设的基础设施临时组建,网络的移动结点利用自身的无线收发设备交换信息,当相互之间不在通信范围之内时,可以借助其他节点来实现通信。中间节点帮助其他节点中继时,先接收前一个节点发送的分组,然后再向下一个节点转发以实现中继,所以也称分组无线网或多跳网。这种网络形式突破了传统无线蜂窝网络的地理局限性,能够更加快速、便捷、高效地部署。
3.在无线自组网场景下,由于组网设备灵活的移动性和无线环境的复杂性的影响,数据传输存在不稳定性,导致数据误码、丢包等问题,例如组网设备间有其他移动物体或建筑物的遮挡,导致接收信号质量变差,同时在无线环境中存在其他正在工作的同频设备,也会影响数据传输的可靠性。为提高数据传输的稳定性和可靠性,目前业界常规做法:物理层信道编解码算法优化(qpsk)、mac(媒介访问控制层)层抗干扰算法(即跳频技术)和传输层协议tcp(transmission control protocol,传输控制协议)。
4.传输层tcp协议是面向连接的数据传输协议,在收发数据前必须和对方建立可靠的连接,从而提供可靠的通信传输。通常来说,一个tcp连接必须要经过三次对话(即tcp三次握手过程)才能建立起来,过程较复杂,要求的系统资源也较多。因此,在一些应用场景下——比如系统资源比较紧张的时候,在传输层不适用使用tcp协议进行数据传输,而适用于采用基于无连接的udp(user datagram protocol,用户数据报协议)。udp是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,udp传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,udp把每个消息段放在队列中,应用程序每次从队列中读一个消息段。udp使用尽最大努力交付,但不保证可靠交付的策略,使得主无需再维持复杂的链接状态表。然而,由于udp不提供数据的逻辑控制机制(其将逻辑控制机制转移到应用程序去处理),如果在数据传输途中出现了丢包、包到达顺序错乱等问题,目前通常由采用udp的应用程序去处理。
5.另一方面,数据的自动重传请求(automatic repeat-request,arq)是当前常用的处理信道带来的差错的方法(arq是osi模型中数据链路层的错误纠正协议之一,其通过接收方请求发送方重传出错的数据报文来恢复出错的报文)。通俗地讲,是在一个数据包发送出去之后,只有收到对方的回复,发送方才认为该数据包被正确接收,并根据回复信息判断是否重传数据,这种方法通常叫做ack(acknowledged)确认重传机制,该机制是为了保证数据传输的可靠性,是现代通信必不可少的一部分。目前,传统的自动重传请求分成为三种:
停等式arq(stop-and-wait arq),回退n帧arq (go-back-n arq),以及选择性重传arq (selective repeat arq);三者的区别在于对于出错的数据报文的处理机制不同。然而,由于无线自组网中的节点多、且时帧较长,上述现有的数据重传方法会导致节点传输效率降低、数据重传时延长,难以用于udp场景下对数据传输具有高可靠性要求的无线自组网系统中。
6.综上所述,根据无线自组网中节点多且时帧长的特点,在传输层采用udp协议进行数据传输时,如何配置无线自组网下的自动重传策略以提高节点间的数据重传效率和传输可靠性,是当前亟需解决的技术问题。


技术实现要素:

7.本发明的目的在于:克服现有技术的不足,提供了一种无线自组网的数据自动重传方法及应用。本发明根据无线自组网中的组网特点,针对需要数据重传的节点配置对应的节点窗口队列以显示该节点的所有一跳内节点的arq收发窗口信息,并通过arq发送模块arq_tx模块和arq接收模块arq_rx模块对arq收发窗口的发送窗口和接收窗口中的数据进行配置,提高了传输层采用udp情况下进行数据自动重传的重传处理效率和可靠性,适用于udp场景下对数据传输有高可靠性要求的自组网系统。
8.为实现上述目标,本发明提供了如下技术方案。
9.一种无线自组网的数据自动重传方法,包括如下步骤:获取需要数据重传的无线自组网中各节点的节点id;针对前述各节点配置对应的节点窗口队列,一个节点id对应一个节点窗口队列,在所述节点窗口队列中显示该节点的所有一跳内节点的arq收发窗口信息,所述arq收发窗口包括对齐的发送窗口和接收窗口,对应发送窗口和接收窗口分别设置有arq发送模块arq_tx模块和arq接收模块arq_rx模块;监测发送窗口和接收窗口的窗口对齐信息,当发送窗口和接收窗口未对齐时触发窗口重置以使窗口对齐,所述窗口重置包括发送窗口重置和接收窗口重置,对重置过的窗口配置重置标记信息;其中,所述arq_tx模块被配置为:判定具有可发数据时,接收逻辑链路控制层llc层的协议数据单元llc pdu后将该llc pdu封装成媒介访问控制层mac层的协议数据单元mac pdu,将所述mac pdu发送到前述发送窗口,并将该mac pdu发送给物理层,启动超时定时器,当发送窗口重置过时mac pdu携带重置标记发送;通过所述发送窗口显示前述mac pdu,直至接收到接收端回复的确认报文ack后或者该mac pdu达到预设的最大重传次数时,将前述mac pdu从发送窗口清除以释放缓存,同时执行窗口滑动前移操作以查询下一个可发数据。
10.进一步,所述arq_rx模块被配置为:接收到本节点的mac pdu后,解析该mac pdu中的llc pdu头中的重置标记和pdu 序号sn;根据该重置标记和pdu 序号sn与接收窗口的重置信息,判断是丢弃当前llc pdu还是将该llc pdu载入到接收窗口中;其中,在将该llc pdu载入接收窗口中时,启动该llc pdu的超时接收定时器,检查接收窗口的窗底信息,当窗底具有数据时,从窗底依次将llc pdu转换成逻辑链路控制层llc层的服务数据单元llc sdu后发送到网络层,直至窗底没有
数据为止。
11.进一步,判断是丢弃当前llc pdu还是将该llc pdu载入到接收窗口的步骤如下:获取发送窗口和接收窗口的重置标记,判断发送窗口和接收窗口是否重置过;在判定接收窗口重置过但发送窗口未重置过时,向发送端发送窗口重置信令,并丢弃当前llc pdu,结束当前接收处理流程;前述发送端接收到前述窗口重置信令后能够触发发送窗口重置;在判定接收窗口未重置过时,继续判断前述sn是否在接收窗口中;判定sn在接收窗口中且对应位置已经载入数据时,丢弃当前的llc pdu,结束当前接收处理流程;判定sn在接收窗口中且对应位置无数据时,将该llc pdu载入接收窗口中。
12.进一步,监测接收窗口各个子窗的超时接收定时器,当一个子窗的超时接收定时器发生超时时触发窗口滑动操作以调整窗底数据;所述窗口滑动操作为,将该子窗之前的每个子窗中的数据顺序发送到上层模块并清除对应的超时接收定时器,直至该子窗之后的第一个没有接收到数据的子窗作为窗底。
13.进一步,接收窗口的窗底每发生一次变化,产生一次ack帧,将窗底作为ack序列号;所述ack帧为可变长度的帧,长度范围信息配置在ack帧的帧头标识中。
14.进一步,所述llc pdu由多个sdu或sdu seg组合而成,在一个llc pdu中的每个sdu或sdu seg前均配置有信息头以便接收端解析还原sdu,所述信息头包含段标记和数据长度;以及,针对每个llc pdu配置有帧头,所述帧头包含业务类型和pdu序号sn,每次给帧头添加完sn后,执行sn 。
15.进一步,所述arq_tx模块还被配置为:轮询发送窗口,对于每个发送窗口,判断该发送窗口是否重置过;当发送窗口重置过且有已经发送的数据帧在等待ack时,判定无发送数据,结束当前发送处理流程;否则判定具有可发送数据。
16.进一步,所述arq_tx模块还被配置为:将mac pdu发往空口后,启动一个重发超时定时器,在该重发超时定时器超时前该mac pdu不会被重传;其中,在收到nack确认或者该重发超时定时器超时触发重传,在收到ack确认时,清除该重发超时定时器;以及,接收到mac层的发送请求时,判断发送窗口中的mac pdu的等待信息;当发送窗口中的mac pdu都在等待ack且都没有超时,触发新的mac pdu发送,为新的mac pdu选择一个未被使用的缓存;当发送窗口中已有mac pdu等待超时,则优先发送重传的mac pdu,重传的mac pdu的缓存不变。
17.本发明还提供了一种无线自组网的数据自动重传装置,包括如下结构:节点信息采集模块,用于获取需要数据重传的无线自组网中各节点的节点id;收发窗口配置模块,用于针对前述各节点配置对应的节点窗口队列,一个节点id对应一个节点窗口队列,在所述节点窗口队列中显示该节点的所有一跳内节点的arq收发窗口信息,所述arq收发窗口包括对齐的发送窗口和接收窗口,对应发送窗口和接收窗口分别设置有arq发送模块arq_tx模块和arq接收模块arq_rx模块;窗口重置处理模块,用于监测发送窗口和接收窗口的窗口对齐信息,当发送窗口和接收窗口未对齐时触发窗口重置以使窗口对齐,所述窗口重置包括发送窗口重置和接收
窗口重置,对重置过的窗口配置重置标记信息;其中,所述arq_tx模块被配置为:判定具有可发数据时,接收逻辑链路控制层llc层的协议数据单元llc pdu后将该llc pdu封装成媒介访问控制层mac层的协议数据单元mac pdu,将所述mac pdu发送到前述发送窗口,并将该mac pdu发送给物理层,启动超时定时器,当发送窗口重置过时mac pdu携带重置标记发送;通过所述发送窗口显示前述mac pdu,直至接收到接收端回复的确认报文ack后或者该mac pdu达到预设的最大重传次数时,将前述mac pdu从发送窗口清除以释放缓存,同时执行窗口滑动前移操作以查询下一个可发数据。
18.本发明还提供了一种无线自组网的数据自动重传系统,包括多个节点,对应各节点设置有arq处理装置;所述arq处理装置被配置为:获取需要数据重传的无线自组网中各节点的节点id;针对前述各节点配置对应的节点窗口队列,一个节点id对应一个节点窗口队列,在所述节点窗口队列中显示该节点的所有一跳内节点的arq收发窗口信息,所述arq收发窗口包括对齐的发送窗口和接收窗口,对应发送窗口和接收窗口分别设置有arq发送模块arq_tx模块和arq接收模块arq_rx模块;监测发送窗口和接收窗口的窗口对齐信息,当发送窗口和接收窗口未对齐时触发窗口重置以使窗口对齐,所述窗口重置包括发送窗口重置和接收窗口重置,对重置过的窗口配置重置标记信息;所述arq_tx模块被配置为:判定具有可发数据时,接收逻辑链路控制层llc层的协议数据单元llc pdu后将该llc pdu封装成媒介访问控制层mac层的协议数据单元mac pdu,将所述mac pdu发送到前述发送窗口,并将该mac pdu发送给物理层,启动超时定时器,当发送窗口重置过时mac pdu携带重置标记发送;通过所述发送窗口显示前述mac pdu,直至接收到接收端回复的确认报文ack后或者该mac pdu达到预设的最大重传次数时,将前述mac pdu从发送窗口清除以释放缓存,同时执行窗口滑动前移操作以查询下一个可发数据。
19.本发明由于采用以上技术方案,与现有技术相比,作为举例,具有以下的优点和积极效果:根据无线自组网中的组网特点,针对需要数据重传的节点配置对应的节点窗口队列以显示该节点的所有一跳内节点的arq收发窗口信息,并通过arq发送模块arq_tx模块和arq接收模块arq_rx模块对arq收发窗口的发送窗口和接收窗口中的数据进行配置,提高了传输层采用udp情况下进行数据自动重传的重传处理效率和可靠性,适用于udp场景下对数据传输有高可靠性要求的自组网系统。
附图说明
20.图1为本发明实施例提供的自组网系统中节点窗口队列的示例图。
21.图2为本发明实施例提供的网络层、llc和mac各层的数据处理框图。
22.图3为本发明实施例提供的arq发送和arq接收的逻辑流程图。
23.图4为本发明实施例提供的arq收发窗口的数据传输处理示例图。
24.图5为图4的arq收发窗口的窗底滑动后的数据传输处理示例图。
具体实施方式
25.以下结合附图和具体实施例对本发明公开的无线自组网的数据自动重传方法及
应用作进一步详细说明。应当注意的是,下述实施例中描述的技术特征或者技术特征的组合不应当被认为是孤立的,它们可以被相互组合从而达到更好的技术效果。在下述实施例的附图中,各附图所出现的相同标号代表相同的特征或者部件,可应用于不同实施例中。因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
26.需说明的是,本说明书所附图中所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定发明可实施的限定条件,任何结构的修饰、比例关系的改变或大小的调整,在不影响发明所能产生的功效及所能达成的目的下,均应落在发明所揭示的技术内容所能涵盖的范围内。本发明的优选实施方式的范围包括另外的实现,其中可以不按所述的或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
27.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
28.相关的技术术语如下:arq,自动重传请求,automatic repeat-request。
29.llc,逻辑链路控制层,logical links control。
30.mac,媒介访问控制层,medium access control。
31.pdu,协议数据单元,protocol data unit。
32.sdu,服务数据单元,service data unit。
33.ack,确认报文,acknowledged。
34.nack,否定确认报文,negative acknowledgment。
35.rst,重置报文,reset。
36.实施例在无线自组网中,每个节点均可以发送数据或者接收数据。针对每一个数据,数据的发送方称之为发送节点,数据的接收方称之为接收节点。接收节点用于接收其他发送节点发送的、指向所述接收节点(即将该接收节点作为目标节点)的数据。
37.本发明提供的无线自组网系统能够进行多节点下数据自动重传。在多节点下重传时,每个节点需要维护其他所有一跳内节点的收发窗口。参见图1所示,以3个节点为例,示例了各节点1、节点2和节点3各自的收发队列。其中,节点1的一跳内节点包括节点2和节点3,在节点1的节点窗口队列中显示有节点2和节点3的收发窗口信息,标识为que[2]收发和que[3]收发。节点2的一跳内节点包括节点1和节点3,在节点2的节点窗口队列中显示有节点1和节点3的收发窗口信息,标识为que[1]收发和que[3]收发。节点3的一跳内节点包括节点1和节点2,在节点3的节点窗口队列中显示有节点1和节点2的收发窗口信息,标识为que[1]收发和que[2]收发。
[0038]
针对每个在线的一跳节点,配置有对应的数据传输模块,包括发送模块和接收模块,发送模块用于将数据发送到某个一跳目标节点,接收模块用于将接收来自某个发送节点的数据。
[0039]
参见图2所示,媒介访问控制层mac层,用于维护网络的时隙同步,时隙管理,接入控制等功能,以时分多址接入方式为基本接入策略,静态占用和动态占用相结合的调度方式,完成业务数据的收发控制。在mac层中定义了mac帧的发送、接收、校验、时隙控制及接入控制。在逻辑链路控制层llc层中定义了对应用数据包(eth/ip包)进行重传、排序等操作过程。在网络层中定义了数据从源节点到目的节点、中继节点和路由功能。
[0040]
本方案主要涉及到的是对llc层中重传、排序操作流程进行改进,在逻辑链路控制层形成llc sdu,进而形成llc pdu,最终形成mac pdu,在逻辑链路控制层配置arq发送和arq接收功能。
[0041]
业务数据存放到先进先出队列中,每个节点id对应一个先进先出队列,在业务数据分类组成网络数据帧后,数据帧进入相应队列的时候累加该队列的数据量,在数据帧移出相应队列的时候减去该队列数据量。所述llc在收到mac的组包调度后,能够快速的遍历队列,哪个队列有数据就指示该队列对应的处理模块去完成组帧处理,如果没有数据则直接填空包发送。先进先出数据处理方式属于现有技术,在此不再赘述。
[0042]
本实施例提供的一种无线自组网的udp下的数据自动重传方法,具体包括如下步骤。
[0043]
s100,获取需要数据重传的无线自组网中各节点的节点id。
[0044]
s200,针对前述各节点配置对应的节点窗口队列,一个节点id对应一个节点窗口队列,在所述节点窗口队列中显示该节点的所有一跳内节点的arq收发窗口信息,所述arq收发窗口包括对齐的发送窗口和接收窗口,对应发送窗口和接收窗口分别设置有arq发送模块arq_tx模块和arq接收模块arq_rx模块。
[0045]
s300,监测发送窗口和接收窗口的窗口对齐信息,当发送窗口和接收窗口未对齐时触发窗口重置以使窗口对齐,所述窗口重置包括发送窗口重置和接收窗口重置,对重置过的窗口配置重置标记信息。
[0046]
本实施例中,arq处理要求发送端和接收端的窗口是对齐的。在某些情况下可能出现窗口未对齐——比如节点开机、重启等情况下,发送端和接收端的窗口可能无法对齐,因此需要监测发送窗口和接收窗口的窗口对齐信息,当发现窗口未对齐时则需要进行窗口重置以使窗口对齐。
[0047]
窗口重置包括发送窗口重置和接收窗口重置。本实施例中,在以下场景下可能触发发送窗口重置:发送节点(发送端)开机或重启导致窗口未对齐;发送节点接收到了接收节点(接收端)发送的重置信令——所述重置信令是为了防止发送端没有收到接收端的ack响应。在以下场景下可能触发接收窗口重置:接收节点开机或重启导致窗口未对齐。
[0048]
所述arq_tx模块被配置为:判定具有可发数据时,接收逻辑链路控制层llc层的协议数据单元llc pdu后将该llc pdu封装成媒介访问控制层mac层的协议数据单元mac pdu,将所述mac pdu发送到前述发送窗口,并将该mac pdu发送给物理层,启动超时定时器,当发送窗口重置过时mac pdu携带重置标记发送;通过所述发送窗口显示前述mac pdu,直至接收到接收端回复的确认报文ack后或者该mac pdu达到预设的最大重传次数时,将前述mac pdu从发送窗口清除以释放缓存,同时执行窗口滑动前移操作以查询下一个可发数据。
[0049]
发送节点作为发送端,在收到mac的调度指示后,可以根据当前mac调度结果获取mac pdu(媒介访问控制层mac层的协议数据单元)的载荷能力,根据载荷能力获取对应队列
中的llc sdu(逻辑链路控制层llc层的服务数据单元)组合形成llc pdu(逻辑链路控制层llc层的协议数据单元)。一个llc pdu可以是由若干个sdu或者sdu seg(sdu分段,即sdu中的一部分;seg 为segment的简写,表示段)组合而成。
[0050]
在一个llc pdu中,每个sdu或sdu seg前均配置有信息头以便接收端解析还原sdu,所述信息头包含段标记(比如段首、段尾、段中、整段标记)和数据长度。针对每个llc pdu都配置有自己帧头,所述帧头包含业务类型和pdu序号sn,每次给帧头添加完sn后,执行sn 。
[0051]
前述组合生成的llc pdu,将会传送到arq发送模块,即arq_tx模块,该arq_tx模块可以将llc pdu封装成mac pdu后送入发送窗口区,并将该mac pdu传送给物理层,启动超时定时器。当发送窗口重置过时mac pdu携带重置标记发送。进入发送窗口区的mac pdu不会被清除,等待接收端回复ack后或者达到最大重传次数才会将其从发送窗口清楚,释放缓存(buffer),同时窗口滑动前移。
[0052]
所述arq_tx模块还被配置为:轮询发送窗口,对于每个发送窗口,判断该发送窗口是否重置过;当发送窗口重置过且有已经发送的数据帧在等待ack时,判定无发送数据,结束当前发送处理流程;否则判定具有可发送数据。
[0053]
优选的,所述arq_tx模块将mac pdu发往空口后,将会启动一个重发超时定时器。在该重发超时定时器超时前,该mac pdu不会被重传,直到收到nack确认、或者该重发超时定时器超时,才能够触发重传。如果收到ack确认时,则清除该重发超时定时器。
[0054]
当mac请求发送时,所述arq_tx模块可以接收到mac层的发送请求,然后判断发送窗口中的mac pdu的等待信息。如果发送窗口中的mac pdu都在等待ack且都没有超时(表示可以进行新的mac pdu发送),则可以触发新的mac pdu发送,为新的mac pdu选择一个未被使用的缓存。如果发送窗口中已经有mac pdu等待超时,则优先发送重传的mac pdu,重传的mac pdu的缓存(buffer)位置不变。
[0055]
接收节点作为接收端,在接收到本节点的mac pdu后,能够通过arq_rx模块解析llc pdu头中的重置标记、sn序号。
[0056]
具体的,所述arq_rx模块被配置为:接收到本节点的mac pdu后,解析该mac pdu中的llc pdu头中的重置标记和pdu 序号sn;根据该重置标记和pdu 序号sn与接收窗口的重置信息,判断是丢弃当前llc pdu还是将该llc pdu载入到接收窗口中;其中,在将该llc pdu载入接收窗口中时,启动该llc pdu的超时接收定时器,检查接收窗口的窗底信息,当窗底具有数据时,从窗底依次将llc pdu转换成逻辑链路控制层llc层的服务数据单元llc sdu后发送到网络层,直至窗底没有数据为止。
[0057]
具体的,判断是丢弃当前llc pdu还是将该llc pdu载入到接收窗口的步骤可以如下:获取发送窗口和接收窗口的重置标记,判断发送窗口和接收窗口是否重置过;在判定接收窗口重置过但发送窗口未重置过时,向发送端发送窗口重置信令,并丢弃当前llc pdu,结束当前接收处理流程;前述发送端接收到前述窗口重置信令后能够触发发送窗口重置;在判定接收窗口未重置过时,继续判断前述sn是否在接收窗口中;判定sn在接收窗口中且对应位置已经载入数据时,丢弃当前的llc pdu,结束当前接收处理流程;判定sn在接收窗口中且对应位置无数据时,将该llc pdu载入接收窗口中。
[0058]
也就是说,根据重置标记进行判断选择,如果接收窗口重置过但发送窗口未重置
过,则需要发送窗口重置信令给发送端(发送端接收到接收端发送的窗口重置信令时,触发发送窗口重置操作),并丢弃当前llc pdu数据帧,退出当前接收处理流程(结束流程)。如果接收窗口重置过,则进一步判断sn是否在接收窗口中,如果sn在窗口中,继续判断对应的位置是否已经有数据;如果对应的位置已经有数据,则丢弃当前的llc pdu(滤除重复包);如果对应的位置没有数据,则将该llc pdu缓存在该位置,并启动一个超时接收定时器。然后,检查接收窗口,如果接收窗口的窗底有数据,从窗底依次将llc pdu恢复成llc sdu发送到网络层,直到窗底没有数据为止,同时清除所有发送过数据的窗的超时接收定时器。
[0059]
本实施例中,当某一个接收窗口的子窗的超时接收定时器超时,则不论此窗之前的窗口是否收到数据帧,顺序发送每个窗中的数据到上层模块(清除定时器),直到此窗后的第一个没有收到数据的窗作为窗底;每次涉及到窗口滑动,窗底改变后,需要产生ack帧处理。
[0060]
具体的,执行如下步骤:监测接收窗口各个子窗的超时接收定时器;当一个子窗的超时接收定时器发生超时时触发窗口滑动操作以调整窗底数据。所述窗口滑动操作为,将该子窗之前的每个子窗中的数据顺序发送到上层模块并清除对应的超时接收定时器,直至该子窗之后的第一个没有接收到数据的子窗作为窗底。
[0061]
接收窗口的窗底每发生一次变化,产生一次ack帧,将窗底作为ack序列号;所述ack帧为可变长度的帧,长度范围信息配置在ack帧的帧头标识中。
[0062]
下面结合图3中的各电路模块详细描述arq发送(tx)和arq接收(rx)的处理过程。
[0063]
业务数据经以太网(ethernet)进入arm处理器中,网口接收后进行skb包业务分类适配,将数据发送到网络包发送模块net_tx模块。
[0064]
net_tx模块,用于接收网口适配层的数据,为单播业务查找目的节点号(通过查找arp表)及下一跳节点(通过查找路由表),根据业务类型添加网络帧头,所述帧头包括序号、源节点号和目的节点号信息。然后将网络包放入对应的队列,形成业务发送队列[max_node_num]。
[0065]
llc_tx_dump模块,用于定义发送队列,在接收frm_tx模块的数据请求指示后,依据接收节点号和传输模式,读取对应的队列,将读取结返回给为frm_tx模块。
[0066]
frm_tx模块,用于负责组llc pdu功能,在收到arq_tx模块的组帧指示后,有以下两种情况。
[0067]
第一种情况,frm_tx模块保存有上次组包剩余的数据分段。
[0068]
第一种情况又可分为a1情况和a2情况。
[0069]
a1,pdu可以容纳当前数据分段。
[0070]
此时,frm_tx模块被配置为执行如下步骤:步骤,执行一次成帧操作,将该数据分段打包(添加分段头信息)进pdu;步骤,如果pdu还有剩余空间,向llc_tx_dump模块请求数据;步骤,等到数据回复后,如果pdu可以容纳数据包,则返回执行步骤;步骤,如果pdu已经填满,则将组好的pdu反馈给arq_tx模块,流程结束,否则重复执行步骤和步骤;步骤,等到数据回复后,如果pdu只能容纳数据包的一部分,则返回执行步骤
,将剩余的数据分段保存下来,将组好的pdu反馈给arq_tx模块。
[0071]
a2,pdu只能容纳数据分段的一部分。
[0072]
此时,frm_tx模块被配置为执行如下步骤:步骤,执行一次成帧操作,将该数据分段的一部分打包(添加分段头信息)进pdu,将剩余的数据分段保存下来,将组好的pdu反馈给arq_tx模块。
[0073]
第二种情况,frm_tx模块没有待组数据分段。
[0074]
此时,frm_tx模块被配置为执行如下步骤:步骤,向llc_tx_dump模块请求数据;步骤,等到数据回复后,如果pdu可以容纳数据包,则执行一次成帧操作,将该数据分段打包(添加分段头信息)进pdu;步骤,pdu已经填满,则将组好的pdu反馈给arq_tx模块,流程结束,否则,重复执行前述步骤、和;步骤,等到数据回复后,pdu只能容纳数据包的一部分,则执行一次成帧操作,将该数据分段打包(添加分段头信息)进pdu;将剩余的数据分段保存下来,将组好的pdu反馈给arq_tx模块,流程结束。
[0075]
arq_tx模块,用于实现mac pdu的缓存、重发纠错功能。
[0076]
具体的,arq_tx模块在收到llc_tx_ctrl模块的发送请求后,可以执行如下一系列操作。
[0077]
判断发送窗口是否重置过,如果重置过,且有已经发送的数据帧在等待ack,则反馈无发送数据,结束当前流程。
[0078]
轮询发送窗口,具有可发数据时,执行如下步骤:如果发送窗口重置过,mac pdu序携带重置标记发送,在发往口空后启动重发超时定时器,在重置未响应前不再发送新的数据帧,如果此mac pdu达到最大重发次数,删除缓存的pdu,重置窗口,再次发送新mac pdu还需要携带重置标记,流程一样,直到ack响应收端重置成功,窗口重置解除。
[0079]
窗口重置解除后,优先重发,如果有mac pdu达到最大发送次数,当做传输成功操作,删除缓存的pdu,滑动发送窗口,查询下一个可发数据,重发数据的缓存buffer不变,反馈mac pdu信息给llc_tx_ctrl模块,同时启动超时重发定时器。
[0080]
轮询发送窗口,如果没有数据可发,则向frm_tx模块请求组llc pdu。
[0081]
frm_tx模块返回组好的llc pdu后,arq_tx模块添加 pdu标记序号,将mac pdu挂入发送窗口,为mac pdu指定缓存buffer,将mac pdu信息反馈给llc_tx_ctrl模块,同时启动超时定时器;如果frm_tx返回结果是没有数据,则arq_tx模块向llc_tx_ctrl模块反馈无数据。
[0082]
收到接收端发送的重置信令,重置发送窗口,清空发送窗口所有数据。
[0083]
收到ack信令,解析ack信息,如果有重置响应,解除重置,将发送窗口窗底滑动到ack序列号,窗口中其他帧如果被确认收到则置状态为接收成功,并停止超时定时器释放缓存buffer,如果没有接收到则状态置为待发送,并停止超时定时器。
[0084]
超时定时器,启动时配置超时定时器为最大超时时间(从空口发出去到收到ack的极限时间),作为优选,可以以1ms为颗粒度,每一毫秒中断里面将所有配置了超时定时器的窗的计数器信息减1,某个窗计数器减到0后代表超时,将该窗的mac pdu置为可发送状态,等待重发。
[0085]
llc_tx_ctrl模块,用于将mac的调度指示转发到对应节点的对应模块,发送组包请求给该节点对应的arq_tx处理模块,在收到组好的llc pdu后添加对应的mac子头。
[0086]
llc_rx_ctrl模块,用于对接收到的mac pdu进行解析,解析mac子帧头,再解析llc pdu帧头,以获取其中的接收节点和发送节点号及业务类型信息,再依据预设的处理规则将数据帧发送到对应节点的arq_rx模块处理。
[0087]
如果是本节点的数据,发送对应节点arq_rx模块;业务类型是llc信令(ack/rst),发送对应节点arq_tx模块。
[0088]
arq_rx模块,用于llc pdu的缓存、排序、ack确认回复、滤重,顺序发送。
[0089]
具体的,arq_rx模块在收到llc_rx_ctrl模块的数据上报指示后,可以执行如下一系列操作。
[0090]
判断接收窗口是否重置过,如果重置过,但发送窗口未重置过,则发送重置信令给发送端,丢弃当前帧,结束流程;如果接收窗口没有重置过,若llc pdu序号不在窗口范围直接丢弃,结束流程,若llc pdu序号在窗口中,且该窗无数据则将该llc pdu存入窗中,如果窗有数据则丢弃以过滤重复信息。启动该pdu的超时接收定时器,检查窗底是否有数据,如果有将数据帧发送frm_rx am模块,清除pdu及超时接收定时器,窗底滑动一次,再次检查窗底执行上述过程,直到窗底没有数据为止。
[0091]
在每一个1ms中断里面对接收窗口中所有启动了定时的子窗的定时减1,若某个子窗超时了,则不论此子窗之前的窗口是否收到数据帧,顺序发送每个子窗中的数据到frm_rx模块(同时清除定时器),直到此子窗后的第一个没有收到数据的子窗作为窗底。
[0092]
窗底每发生一次变化,产生一次ack帧,将窗底作为ack序列号,窗底和最大接收序列号之间的接收状态用0/1表示,1表示正确收到,0表示没有收到或收错,因此ack帧是个可变长度的帧,长度范围会在ack帧头标识。
[0093]
frm_rx模块,与arq_rx模块直接交互。
[0094]
所述frm_rx模块在收到llc_rx_ctrl模块的数据信息后,存在两种处理情况。第一种情况,是frm_rx模块保存有上次未组完整的sdu分段,第二中情况,是frm_rx模块没有保存有sdu分段。
[0095]
如果有保存的分段数据,则进一步判断当前pdu的序号是否和上次的序号是连续的,如果不连续,则丢弃上次未组完保存的sdu分段(保证当前pdu的序号和上次的序号是连续的)。
[0096]
具体的解包组sdu过程,是frm_tx模块处理的逆过程。将解析恢复出来的sdu发送到llc_rx_dump模块。
[0097]
llc_rx_dump模块,用于接收frm_rx模块发送的网络包,并将该网络包直接发送到net_rx模块。
[0098]
net_rx模块,用于接收底层恢复出来的网络包,负责滤重、判决是否中继等功能。
[0099]
具体的,所述net_rx模块在接收到llc_rx_dump模块上报的网络包后,可以执行如下操作。
[0100]
判断是否广播包,广播包需要过滤旧的、重复的网络包,对于新网络帧需要中继,并且给上层应用上报一份。
[0101]
判断是否单播包,单播包需要过滤旧的、重复的网络包,如果目的是本节点的数据包,去除网络帧头发送上层应用,如果目的节点不是本节点,为其查询路由,发送到下一跳节点队列。
[0102]
下面结合图4和图5详细描述arq收发窗口的窗口对齐和重置过程。
[0103]
参见图4所示,arq收发窗口中包括发送窗口和接收窗口,发送窗和接收窗口的窗底和窗顶是对齐的,窗底序号sn=0,窗顶序号sn=63。当前发送了4帧数据序号1-4,然后接收端只收到了0、2、3,序号为1的帧没有收到(出现error),于是返回ack,携带了sn=1及以后帧的接收情况。
[0104]
因为窗底sn=0接收到了数据,所以将该帧数据递交frm_rx模块,窗底滑动到sn=1;因为此时sn=1没有收到数据帧,窗顶也随着滑动到sn=64。
[0105]
发送端在收到ack后,得知sn=0、2、3已收到,触发发送窗口滑动,窗底sn=1,窗顶sn=64,参见图5所示。
[0106]
图5中,发送端继续发送了序号为1、4、5、6的帧,因为2、3帧已经反馈发送成功不用再重发,接收端在收到数据帧后反馈ack;接收端连续收到了序号1-6的数据帧,于是顺序将接收到的数据帧递交到frm_rx模块,并且接收窗口窗底滑动到sn=7,窗顶滑动到sn=70。
[0107]
发送端在收到ack后,得知序号1-6的数据帧都发送成功,于是发送窗口滑动,窗底滑动到sn=7,窗顶滑动到sn=70。
[0108]
如果发生ack丢失的情况,此时接收端的接收窗口已经变为14-77,而发送端窗口由于没收到ack(ack丢失),导致窗口仍然是9-72。此时,执行如下操作:当序号为9、11、12、13的帧超时后,重新发送这几帧数据;接收端收到这几帧数据后,判断这几帧数据是否落在接收窗口的范围外,如果判定这几帧数据落在了接收窗口外,则扔掉这几帧数据。如果接收端收到的是序号13以后的数据帧,则将他们做正常的滑窗处理。
[0109]
本发明的另一实施例,还提供了一种无线自组网的数据自动重传装置。
[0110]
所述无线自组网的数据自动重传装置包括节点信息采集模块,收发窗口配置模块和窗口重置处理模块。
[0111]
所述节点信息采集模块,用于获取需要数据重传的无线自组网中各节点的节点id。
[0112]
所述收发窗口配置模块,用于针对前述各节点配置对应的节点窗口队列,一个节点id对应一个节点窗口队列,在所述节点窗口队列中显示该节点的所有一跳内节点的arq收发窗口信息,所述arq收发窗口包括对齐的发送窗口和接收窗口,对应发送窗口和接收窗口分别设置有arq发送模块arq_tx模块和arq接收模块arq_rx模块。
[0113]
所述窗口重置处理模块,用于监测发送窗口和接收窗口的窗口对齐信息,当发送窗口和接收窗口未对齐时触发窗口重置以使窗口对齐,所述窗口重置包括发送窗口重置和接收窗口重置,对重置过的窗口配置重置标记信息。
[0114]
其中,所述arq_tx模块被配置为:判定具有可发数据时,接收逻辑链路控制层llc
层的协议数据单元llc pdu后将该llc pdu封装成媒介访问控制层mac层的协议数据单元mac pdu,将所述mac pdu发送到前述发送窗口,并将该mac pdu发送给物理层,启动超时定时器,当发送窗口重置过时mac pdu携带重置标记发送;通过所述发送窗口显示前述mac pdu,直至接收到接收端回复的确认报文ack后或者该mac pdu达到预设的最大重传次数时,将前述mac pdu从发送窗口清除以释放缓存,同时执行窗口滑动前移操作以查询下一个可发数据。
[0115]
其它技术特征参考在前实施例,在此不再赘述。
[0116]
本发明的另一实施例,还提供了一种无线自组网的数据自动重传系统,包括多个节点,对应各节点设置有arq处理装置。
[0117]
所述arq处理装置被配置为:获取需要数据重传的无线自组网中各节点的节点id;针对前述各节点配置对应的节点窗口队列,一个节点id对应一个节点窗口队列,在所述节点窗口队列中显示该节点的所有一跳内节点的arq收发窗口信息,所述arq收发窗口包括对齐的发送窗口和接收窗口,对应发送窗口和接收窗口分别设置有arq发送模块arq_tx模块和arq接收模块arq_rx模块;监测发送窗口和接收窗口的窗口对齐信息,当发送窗口和接收窗口未对齐时触发窗口重置以使窗口对齐,所述窗口重置包括发送窗口重置和接收窗口重置,对重置过的窗口配置重置标记信息;所述arq_tx模块被配置为:判定具有可发数据时,接收逻辑链路控制层llc层的协议数据单元llc pdu后将该llc pdu封装成媒介访问控制层mac层的协议数据单元mac pdu,将所述mac pdu发送到前述发送窗口,并将该mac pdu发送给物理层,启动超时定时器,当发送窗口重置过时mac pdu携带重置标记发送;通过所述发送窗口显示前述mac pdu,直至接收到接收端回复的确认报文ack后或者该mac pdu达到预设的最大重传次数时,将前述mac pdu从发送窗口清除以释放缓存,同时执行窗口滑动前移操作以查询下一个可发数据。
[0118]
其它技术特征参考在前实施例,在此不再赘述。
[0119]
在上面的描述中,本发明的公开内容并不旨在将其自身限于这些方面。而是,在本公开内容的目标保护范围内,各组件可以以任意数目选择性地且操作性地进行合并。结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程 rom、电可擦除可编程 rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。另外,像“包括”、“囊括”以及“具有”的术语应当默认被解释为包括性的或开放性的,而不是排他性的或封闭性,除非其被明确限定为相反的含义。所有技术、科技或其他方面的术语都符合本领域技术人员所理解的含义,除非其被限定为相反的含义。在词典里找到的公共术语应当在相关技术文档的背景下不被太理想化或太不实际地解释,除非本公开内容明确将其限定成那样。本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献