一种重传数据包的方法、装置及系统的制作方法

文档序号:7702226阅读:580来源:国知局
专利名称:一种重传数据包的方法、装置及系统的制作方法
技术领域
本发明涉及数据传输技术,特別涉及一种重传数据包的方法、装置及系统。
背景技术
对于无线通信系统来说,发射端发射的数据包经过空中无线资源的传输 被接收端接收,在传输过程中,由于空中传输时延、干扰以及路径衰落的影 响,接收端接收到的数据包可能存在丟包的情况,大大影响了数据传输的可 靠性,而在很多应用领域,保证数据传输的可靠性是非常重要的。
为了提高无线数据传输的可靠性和传输过程中的抗干扰能力,现有技术 中,除了采用编码调制、纠错等方法传输数据包外,还普遍采用緩存重传方 法以提高无线通信的可靠性、减少丢包率,发送端设置緩存区,对待发送的 数据包设置序列号标志并緩存,接收端接收数据包,如果接收的数据包正确,
向发送端发送确认(ACK)消息,通知发送端该数据包已被正确接收,发送 端接收确认消息后,从緩存区删除该数据包以緩存后续待发送的数据包;如 果接收的数据包不正确,则通过应答要求发送端重传该数据包,直到该数据 包被成功接收,或者,发送端判断重传的次数超过预先设定的重传次数,将 该数据包丢弃,或者,通过应答要求发送端从该数据包丢失之处开始重传, 然后,发送端继续发送緩存区中下一待发送的数据包,最后,接收端根据接 收的数据包携带的序列号标志对接收的数据包进行重新排序,以恢复接收的 数据包的顺序。
由上可见,现有技术在传输数据包的过程中,当无线通信干扰较强或传 输路径恶劣时,使得数据包一次传输的成功率较低,可能需要多次重传该数据包,如果一直持续重传该数据包,不仅造成緩存区緩存了大量待发送的数 据包,浪费了系统资源,还可能会造成无线通信链路堵塞,在恢复时将丟失
大量緩存的数据包,无线通信的可靠性以及传输效率都较低;进一步地,将 重传次数超过预先设定的重传次数的数据包丢弃,存在一定的丟包率,不能 保证无线通信的可靠性;而且,根据序列号标志对接收的数据包进行重新排 序,排序流程复杂,将耗费接收端大量的资源以及排序计算时间。

发明内容
有鉴于此,本发明的一个主要目的在于提供一种重传数据包的方法,提
高无线通信的可靠性、节约系统资源。
本发明的另一个主要目的在于提供一种重传数据包的装置,提高无线通
信的可靠性、节约系统资源。
为达到上述目的,本发明提供了一种重传包数据的方法,该方法包括 发送端在待发送数据包中设置标识该数据包的名称号并发送数据包; 接收端接收所述数据包,判断接收的所述数据包是否正确 如果接收的所述数据包正确,按照数据包携带的名称号将该数据包存储
在与数据包名称号相匹配的接收数组中;
如果接收的所述数据包不正确,向发送端发送携带要求重传的数据包消
息,发送端将消息中要求重传的数据包进行緩存;
发送端检测通信状态,如果处于空闲状态,发送緩存的要求重传的数据包。
所述名称号包括用于标识发送端身份的发送端识别ID、用于标识数据 包所属批次的批次标识、以及用于标识数据包在所属批次中的顺序的标记
号;
所述接收数组名称号包括数据包源端ID、数组名以及元素名; 所述发送端识别ID与所述数据包源端ID相同,所述批次标识匹配所述 数组名,所述标记号匹配所述元素名。所述发送端在待发送数据包中设置标识该数据包的名称号包括 发送端为待发送数据包设置批次标识,所述待发送数据包的标记号依次 递增;
当标记号达到预先设置的最大标记号时,发送端重新设置与已设置的批 次标识不同的批次标识,并重新设置该批次标识对应数据包的标记号;
发送端将待发送数据包緩存在第 一数据包緩存器中。
所述按照数据包携带的名称号将该数据包存储在与数据包名称号相匹 配的接收数组中包括
判断所述数据包携带的名称号与已设置的接收端的接收数组名称号是 否匹配,如果匹配,将所述数据包存储至匹配的接收数组中;如果不匹配, 将当前接收数组中存储的数据包存储至存储模块,设置与当前接收的数据包 名称号相匹配的接收数组并接收所述数据包。
所述将数据包存储至匹配的接收数组中包括
如果数据包携带的名称号与当前接收数组名称号相匹配,根据数据包的
标记号将该数据包存储至当前接收数组与标记号匹配的元素名中;如果数据 包携带的名称号与存储模块中的接收数组名称号相匹配,根据数据包发送端 ID、批次标识以及标记号将数据包存储至存储模块中与之匹配的接收数组的 元素名中。
所述发送端将消息中要求重传的数据包进行緩存包括发送端从第一数 据包緩存器中提取消息中要求重传的数据包,緩存至第二数据包緩存器。 所述方法进一步包括
如果发送端处于忙状态,通知第二数据包緩存器停止发送緩存的要求重 传的数据包。
所述发送端检测通信状态包括
检测发送端第 一数据包緩存器的緩存状态,如果第 一数据包緩存器为 空,则确定发送端处于空闲状态;如果第一数据包緩存器不为空,则确定发 送端处于忙状态。一种重传数据包的发送端装置,该发送端装置包括采集模块、数据包 处理模块、存储模块、射频模块以及检测模块,其中,
采集模块,用于按照预先设定的周期及采样率对采样点进行顺序采样, 将采集到的数据按照通信协议约定的数据包大小进行打包形成数据包,在数 据包帧格式中加入发送端ID、批次标识以及标记号并发送至数据包处理模
块;
数据包处理模块,用于按照通信协议规则对采集模块发送的数据包进行
编码、纠错后输出至存储模块;接收射频模块携带要求重传的数据包消息, 通知存储模块;
存储模块,用于緩存数据包处理模块发送的数据包并输出至射频模块, 接收数据包处理模块的通知消息,根据通知消息中包含的重传数据包信息, 从緩存的数据包中将该重传数据包再次进行緩存;接收检测模块发送的射频 模块空闲消息,将緩存的重传数据包依次输出至射频模块;
射频模块,用于将存储模块输出的数据包进行发送;接收来自接收端射 频模块发送携带要求重传的数据包消息,发送至数据包处理模块;
检测模块,用于检测发送端状态,如果确定发送端状态空闲,向存储模 块发送射频模块空闲消息。
所述存储模块包括第一数据包緩存器以及第二数据包緩存器,其中,
第 一数据包緩存器,用于緩存数据包处理模块发送的数据包;
第二数据包緩存器,用于根据数据包处理模块发送的通知消息中包含的 重传数据包信息,从第一数据包緩存器中将该重传数据包读入;接收检测模 块发送的射频模块空闲消息,将緩存的数据包依次输出至射频模块。
所述检测模块,根据预先设定的周期检测第 一数据包緩存器的緩存状 态,如果第一数据包緩存器为空,则向第二数据包緩存器发送射频模块空闲
消息;如果第一数据包緩存器不为空,则向第二数据包緩存器发送射频模块 忙消息,第二数据包緩存器停止输出緩存的重传数据包。
一种重传数据包的接收端装置,该接收端装置包括射频模块、主处理模块、以及存储模块,其中,
射频模块,用于接收发送端射频模块发送的数据包,输出至主处理模块,
接收主处理模块输出的携带要求重传的数据包消息,发送至接收端; 主处理模块,用于接收射频模块输出的数据包,
如果接收的所述数据包正确,判断所述数据包携带的名称号与已设置的 接收端的接收数组名称号是否匹配,如果是,将所述数据包存储至匹配的接 收数组中;如果不,将当前接收数组中存储的数据包存储至存储模块,设置 与当前接收的数据包名称号相匹配的接收数组并接收所述数据包;
如果确定接收的数据包不正确,向射频模块发送携带要求重传的数据包 消息。
所述主处理模块将所述数据包存储至匹配的接收数组中为 主处理模块判断当数据包携带的名称号与当前设置的接收数组名称号 相匹配时,根据数据包的标记号将该数据包存储至当前接收数组与标记号匹 配的元素名中;当数据包携带的名称号与存储模块中的接收数组名称号相匹 配时,根据数据包发送端ID、批次标识以及标记号将数据包存储至存储模 块中与之匹配的接收数组的元素名中;当数据包携带的名称号与当前设置的 接收数组名称号、以及存储模块中的接收数组名称号不相匹配时,将当前接 收数组中存储的数据包存储至存储模块,设置与当前接收的数据包名称号相 匹配的接收it组并接收所述lt据包。
一种重传数据包的系统,该系统包括发送端和接收端,其中, 发送端,用于在待发送数据包中设置唯一标识该数据包的名称号,将该 设置名称号的数据包进行发送;接收来自接收端的携带要求重传的数据包消 息,将该要求重传的数据包进行緩存,并在该发送端处于空闲状态时,发送 该緩存的要求重传的数据包;
接收端,用于接收数据包,如果确定接收的数据包正确,按照数据包携 带的名称号将该数据包存储在与数据包名称号相匹配的接收数组中;如果确 定接收的数据包不正确,向发送端发送携带要求重传的数据包消息。
10由上述的技术方案可见,本发明提供的重传数据包的方法、装置及系统,
发送端在待发送数据包中设置唯一标识该数据包的名称号并发送数据包;接 收端接收所述数据包,判断接收的所述数据包是否正确如果接收的所述数 据包正确,按照数据包携带的名称号将该数据包存储在与数据包名称号相匹 配的接收数组中,从而避免了对接收数据包进行重新排序而导致的排序流程 复杂、排序计算时间长、资源开销大的缺陷,节约了系统资源;如果接收的 所述数据包不正确,向发送端发送携带要求重传的数据包消息,发送端将消 息中要求重传的数据包进行緩存;检测发送端通信状态,如果发送端处于空 闲状态,发送緩存的要求重传的数据包,减少了无线通信链路堵塞,提高了 无线通信的可靠性。


图1为本发明重传数据包的系统结构示意图; 图2为本发明发送端的结构示意图; 图3为本发明数据包结构示意图; 图4为本发明接收端的结构示意图5为本发明重传数据包的无线传感器网络收发系统的结构示意图6为本发明重传数据包的方法流程示意图7为本发明重传数据包的方法第一实施例流程示意图8为本发明重传数据包的方法第二实施例流程示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体 实施例对本发明作进一步地详细描述。
本发明实施例提出的重传数据包的方法、装置及系统,发送端在待发送 数据包中设置唯一标识该数据包的名称号并发送数据包,接收端接收数据包 后,如果接收的所述数据包正确,将数据包緩存在设置的与数据包携带的名称号相匹配的接收数组中,接收端判断需要重传数据包时,向发送端发送携 带要求重传的数据包消息,发送端接收该消息后,将消息中要求重传的数据 包进行緩存,当检测到发送端处于空闲时,发送緩存的重传数据包。
以下以无线通信的数据采集、发送和接收为例,对本发明的重传数据包 的方法进行详细描述,所应说明的是,本发明也可应用于对数据通信实时性 要求不太高的无线数据包收发等领域。
图1为本发明重传数据包的系统结构示意图,参见图1,该系统包括 发射端11和接收端12,其中,
发送端11,用于对需要发送的数据打包形成数据包,设置唯一标识数 据包的名称号,将该设置名称号的数据包进行发送;接收来自接收端12的 携带要求重传的数据包消息,将该要求重传的数据包进行緩存,并在该发送 端处于空闲状态时,发送该緩存的要求重传的数据包;
本实施例中,名称号包括发送端识别(ID)、批次标识以及标记号,其
中,
发送端ID,用于标识发送端身份,发送端ID是唯一的,不同的发送端 对应不同的发送端ID;
批次标识,用于标识数据包所属的批次;
标记号,用于标识该数据包在所属的批次中的顺序,标记号的最大值可 以由发送端与接收端根据自身的能力和资源等情况协商确定。例如,可以设 置标记号为接收端最佳的处理长度,例如,标记号可以设置为512 ( 512仅 仅为了方便阐述,不同接收端最佳的处理长度可能并不相同)。这样,通过 在给数据包设置包括批次标识和标记号的名称号,首先通过批次标识将发送 端的数据包进行批次分类,然后为该批次中的数据包按序分配标记号,从而 在接收端,首先匹配数据包的批次记录,然后再在该批次的数据包标记号中 匹配该数据包标记号,可以减少为数据包一次分配标记号时,在接收端,需 要从所有标记号中匹配该数据包标记号时,造成匹配时间较长、提高了数据 包匹配的效率。实际应用中,发送端在发送数据包前, 一般还需要緩存该数据包,射频 模块读取緩存的数据包进行发送的流程为现有技术,在此不再赘述。以下描
述的緩存重传的数据包,是指将该数据包从现有的緩存中提取出来,另行进 行存储。
发送端也可以在按照现有设定的重传次数发送数据包后,如果该数据包 还未被正确接收,才将该数据包緩存,并在发送端处于空闲时再次发送。
接收端12,用于接收数据包,如果确定接收的数据包正确,按照数据 包携带的名称号将该数据包存储在与数据包名称号相匹配的接收数组中;如 果确定接收的数据包不正确,向发送端发送携带要求重传的数据包消息。
本实施例中,接收端设置接收数组以接收数据包,接收数组以接收数组 名称号进行标识,接收数组名称号包括数据包源端ID、数组名以及元素名, 其中,
数据包源端ID,与数据包发送端ID相同; 数组名,与批次标识相对应; 元素名,与标记号相对应。
接收数组包含多个元素,每个元素映射数据地址,对应存储一个数据包。 接收端设置接收数組可以是通过与发送端协商确定,也可以是通过发送 端在发送批次标识的第一个数据包时,携带数据包最大标记号信息,接收端 根据接收数据包的名称号以及最大标记号信息设置与名称号相匹配的接收 数组,还可以是根据接收到的标记号动态地增加接收数组的长度,另外,还 可以是随机设置接收数组,当接收数组中存储满数据包时,将数组中的数据 包存储到外部的存储介质。
由上述实施例可见,由于发送端在待发送的数据包中设置了能唯一标识 该数据包的名称号,并在接收端设置与数据包名称号相匹配的接收数组,因 而,在接收到数据包后,根据数据包携带的名称号,将该数据包存储至与数 据包名称号相匹配的接收数组的相应元素中,从而避免了对接收数据包进行 重新排序而导致的排序流程复杂、排序计算时间长、资源开销大的缺陷,同时,可以在接收数组存储满约定长度的数据包时,将该约定长度的数据包存 储到外部的存储介质,这样,利用外部的存储介质存储数据包,节约了接收 端的系统资源。进一步地,发送端在获知需要重传数据包时,将要求重传的 数据包进行緩存,并在发送端处于空闲状态时,发送緩存的要求重传的数据 包,这样,在空闲时重传数据包,而不是从该数据包丢失之处开始重传,减 少了发送端一直持续重传该数据包而导致的緩存区緩存大量待发送的数据 包以及无线通信链路堵塞,节约了緩存区空间、保证了无线通信的可靠性、 提高了无线传输效率,尤其适用于资源有限的低功耗无线传感器网络系统。 (曰7
图2为本发明发送端的结构示意图,参见图2,该发送端包括采集模 块210、数据包处理模块211、存储模块212、射频模块213以及检测模块 214,其中,
采集模块210,用于按照预先设定的周期及采样率对采样点进行顺序采 样,将采集到的数据按照通信协议约定的数据包大小进行打包形成数据包, 在数据包帧格式中加入发送端ID、批次标识以及标记号并发送至数据包处 理模块;
实际应用中,由于发送端进行数据采集时,通常需要为每一个采样点设 置标记号,因而,本发明中,还可以以采样点的标记号作为标记号。
本实施例中,发送端进行数据采集时,按照现有无线通信协议将采样点 数据打包成数据包。举例来说,如果通信协议约定一个数据包大小为32字 节(Byte),采集模块210中的模数转换器(A/D )采集的位数为16位(采 样率),则采集模块210在设定的采样周期内,将16个顺序采集的采样点 数据打包为一个数据包,并在数据包帧格式中加入发送端ID、批次标识以 及标记号。
标记号依次增加,当达到约定的数据包最大标记号时,重新开始循环计 凄史,同时,改变批次标识,分配新的批次标识。
下面举一具体例子,对在数据包帧格式中加入发送端ID、批次标识以及标记号进行说明
对于该发送端发送的数据包,其发送端ID都相同,如果协议约定的数 据包总数为512,即标记号从零开始,最大标记号为511,则对于第1个打 包形成的数据包(包含16个顺序采集的采样点数据信息),其数据包的批 次标识为a,标记号为0;对于第512个打包形成的数据包,其数据包的相 应批次标识值为a,标记号为511。此时,由于标记号511为协议约定的最 大标记号,因而,对于下一个打包形成的数据包,其数据包的批次标识为b, 标记号为0,如此循环。这样,通过在数据包包头中添加发送端ID、批次标 识和标记号,就可以唯一标识无线通信网络中的一个数据包,从而接收端可 以设置相应的接收数组存储数据包,后续中可以根据接收的重传数据包包含 的名称号信息,将该重传数据包存储至相应接收数组的相应元素中,从而保 证了接收的数据包的完整性。
实际应用中,不同发送端发送的数据包中包含的批次标识、以及标记号 可以相同,也可以不同。
图3为本发明数据包结构示意图,参见图3,该数据包包括数据包包 头和数据包内容,其中,
数据包包头,即数据包名称号,用于标识数据包,包括发送端ID、 糸匕次标识以及标记号;
数据包内容,用于存储采样点数据信息。
这样,在发送端,每个待发送的数据包将具有一个唯一的名称号,例如 IDal。
当然,也可以不使用批次标识,直接使用采样点的标记号作为标记号, 如果数据包包含的采样点数量不同,可以将数据包内第 一个采样点的标记号
作为该数据包初始标记号,同时增加数据长度标识。举例来说,如果发送端 将1个采集的采样点数据打包为一个数据包,数据包初始标记号为100,数 据长度标识指示为IO,则该数据包IO个采样点的序号依次为100、 101、 102、 103、 104、 105、 106、 107、 108、 109。接收端依据资源情况,i殳置容纳釆
15样点容量(采样点个数)的接收数组。当达到采样点容量时,将接收数组中 存储的数据包写入到外部的存储介质,再根据下 一数据包的数据长度标识设 置新的接收数组以存储该数据包。
数据包处理模块211,用于按照通信协议规则对采集模块发送的数据包
进行编码、纠错后输出至存储模块212;接收射频模块213携带要求重传的 数据包消息,通知存储模块212;
存储模块212,用于緩存数据包处理模块发送的数据包并输出至射频模 块213,接收数据包处理模块211的通知消息,根据通知消息中包含的重传 数据包信息,从緩存的数据包中将该重传数据包再次进行緩存;接收检测模 块214发送的射频模块空闲消息,将緩存的重传数据包依次输出至射频模块 213,包括第一数据包緩存器以及第二数据包緩存器,其中,
第一数据包緩存器,用于緩存数据包处理模块212发送的数据包;
第二数据包緩存器,根据数据包处理模块212发送的通知消息中包含的 重传数据包信息,从第一数据包緩存器中将该重传数据包读入;接收检测模 块214发送的射频模块空闲消息,将緩存的数据包依次输出至射频模块213。
本实施例中,第二数据包緩存器从第 一数据包緩存器读取重传的数据包 的方式可以是例如剪切的方式,这样,可以提高第一数据包緩存器的资源利 用率。进一步地,第二数据包緩存器还可以接收检测模块214发送的射频模 块忙消息,停止发送緩存的数据包。
较佳地,为了提高重传数据包处理的效率,将緩存的数据包依次输出至 射频模块213的顺序是从后往前依次输出。
存储模块212可以是随机存储器(RAM),也可以是闪存(FLASH)。
射频模块2B,用于从存储模块212读取待发送的数据包进行发送;接 收来自接收端射频模块发送携带要求重传的数据包消息,发送至数据包处理 模块211。
本实施例中,射频模块根据通信协议的发送应答确认(ACK )机制进行 通信。这些通信流程依据相应通信协议标准进行,不同的是,本发明对于重传数据包,当检测到发送端处于空闲状态时才发送,或者设置较少的重传次
数,这样可以提高通信的流畅性,例如,对于IEEE802.15.4通信标准,可以 设置重传三次失败就暂时放弃重传该数据包并将该数据包从待发送的緩存 队列中提取出来,再次进行緩存,以在空闲的时候再发送该数据包。
检测模块214,用于检测发送端状态,如果确定发送端状态空闲,向存 储模块212发送射频模块空闲消息。
本实施例中,检测发送端状态可以通过检测第 一数据包緩存器的緩存状 态来实现,检测模块根据预先设定的周期检测第 一数据包緩存器的緩存状 态,如果第一数据包緩存器不为空,则向第二数据包緩存器发送射频模块忙 消息;如果第一数据包緩存器为空,则向第二数据包緩存器发送射频模块空 闲消息。
图4为本发明接收端的结构示意图,参见图4,该接收端12包括射频 模块120、主处理模块122、以及存储模块121,其中,
射频模块120,用于接收发送端射频模块发送的数据包,输出至主处理 模块122,接收主处理模块122输出的携带要求重传的数据包消息,发送至 接收端。
主处理模块122,用于接收射频模块120输出的数据包, 如果确定当前接收的数据包正确,判断数据包携带的名称号与已设置的 接收端的接收数组名称号是否匹配,如果是,将数据包存储至匹配的接收数 组中;如果不,将当前接收数组中存储的数据包存储至存储模块121,并设 置与当前接收的数据包名称号相匹配的接收数组并接收数据包;
如果确定接收的数据包不正确,向射频模块120发送携带要求重传的数 据包消息。
本实施例中,主处理模块122判断接收的数据包是否正确为现有技术, 在此不再赘述。
对于主处理模块122将数据包存储至匹配的接收数组中的流程如下当 数据包携带的名称号与当前设置的接收数组名称号相匹配时,根据数据包的标记号将该数据包存储至当前接收数组与标记号匹配的元素名中;当数据包 携带的名称号与存储模块中的接收数组名称号相匹配时,根据数据包发送端 ID、批次标识以及标记号将数据包存储至存储模块中与之匹配的接收数组的
元素名中;当数据包携带的名称号与当前设置的接收数组名称号、以及存储 模块中的接收数组名称号不相匹配时,将当前接收数組中存储的数据包存储 至存储模块,设置与当前接收的数据包名称号相匹配的接收数组并接收所述 数据包。
主处理模块122可以是与接收端12 (网关)连接的上位机,也可以是 接收端12内部单独的单片机、数字处理器(DSP)、或现场可编程门阵列 (FPGA)等,也可以利用射频模块中进行协议解析的CPU。
主处理模块122按照与发送端的通信协商,设置与当前数据包名称号相 匹配的接收it组,例如,当前数据包名称号为IDAO,则设置接收数组为 ID(ao,…,aM),其中,ID为接收数组中数据包的数据包源端ID, a为接收数 组的数组名,i为数组中的元素名,这样,当主处理模块122接收数据包时, 首先判断数据包中包含的批次标识是否接收数组的数組名相匹配(例如,预 先设定批次标识A匹配接收数组名a),则开始依据标记号i将该数据包写 入到接收数组对应的元素i中,当数据包最大标记号达到约定的最大标记号 时,将该接收数组中的所有元素写入到存储模块121,当再接收到下一个数 据包时,由于数据包中包含的批次标识与当前接收数组的数组名不相匹配, 则i殳置新的接收数组或将当前数組名更新为与批次标识相匹配的数组名,例 如,数组(bl,...,bi)以緩存后续的数据包。
接收数组中的元素和存储模块的数据地址可以是按预先约定映射的,通 常将接收数组中各元素映射为存储模块中连续的数据地址,举例来说,数组 元素aO映射的存储模块中的数据地址是00000000, a511映射的数据地址是 000001FF, b0映射的数据地址是00010000, b511映射的数据地址是 OOOIOOFF, c0映射的tt据地址是00020000, c512映射的数据地址是 000200FF。这样,数组中元素映射为存储模块中的数据地址,可以保证数据包的高效填入。
由于无线通信中千扰和丢包的存在,主处理模块122中接收数组緩存的 数据包与写入到存储模块的数据包可能不是完整的,因而,在发送携带要求 重传的数据包消息后,在通信空闲时,接收发送端发送的数据包,如果确定 重传的数据包发送端ID、批次标识分别与当前接收数组的数据包源端ID以 及数组名相匹配,依据数据包的标记号,将该数据包緩存在接收数组中与标 记号相匹配的元素中,如果确定重传的凄t据包发送端ID、 4比次标识与当前 ,接收数组不相匹配,依据数据包发送端ID、批次标识和标记号,写入相应 映射数据地址的存储模块中。
图5为本发明重传数据包的无线传感器网络收发系统的结构示意图,参 见图5,对于无线传感器网络系统,通常组成星型,树型甚至网状网拓朴结 构。接收端(网关)可能同时接收众多发送端发送的数据包,同一发送端也 可能同时需要向不同的终端设备发送数据包,数据包的无线传输也需要进行 多跳传输,该无线传感器网络收发系统包括N个发送端节点(节点l到节 点N) 、 ^各由节点501、网关502、以及上位才几503。
节点n(l《n《N, N为自然数)的数据包通过5^由节点501多跳传输 到网关502,网关502将接收到的数据包汇集后送给上位机503进行显示、 存储。
节点1的采集模块在进行数据打包的时候,在数据包帧结构中加入了节 点ID号l,相应地,节点2加入了ID号2,节点N加入了ID号N,所有 的ID号用32位长地址来定义,具有全球的唯一性。而网关502在接收到不 同ID号的数据包时,相应开设对应的多个接收数组进行处理,具体的处理 流程与上述实施例相同,在此不再赘述。
以下对本发明重传数据包的方法流程进行详细说明。 图6为本发明重传数据包的方法流程示意图,参见图6,该流程包括 步骤601,发送端在待发送数据包中设置唯一标识该数据包的名称号并 发送数据包;
19本步骤中,发送端将待发送的数据打包,设置唯一标识数据包的名称号, 形成数据包并发送。
发送端进行数据采集时,按照现有无线通信协议将采样点数据打包成数 据包。
名称号包括发送端ID、批次标识以及标记号,对于数据采集的情况,
由于发送端进行数据采集时,通常需要为每一个采样点设置标记号,因而,
本发明中,名称号也可以只包括发送端ID、以及采样点的标记号。
对于第一个待发送的数据包,发送端为该数据包设置批次标识,将该标 记号设置为零,后续中待发送数据包的标记号依次递增,当标记号达到预先 设置的最大标记号时,发送端重新设置与已设置的批次标识不同的批次标 识,并重新设置该批次标识对应的标记号。
待发送的数据包按照常规通信协议、比如802.15.4通信标准,规定的编 码纠错以及重传机制进行发送。
步骤602,接收端接收数据包,判断接收的数据包是否正确,如果是, 执行步骤603,否则,执行步骤604;
接收端可以是网关,也可以是终端设备等。
步骤603,按照数据包携带的名称号将该数据包存储在与数据包名称号 相匹配的接收数组中;
本步骤中,在确定接收的数据包正确后,进一步判断数据包携带的名称 号与已设置的接收数组名称号是否匹配,如果是,将该接收的数据包存储至 匹配的接收数組中;如果不是,将当前接收数组中存储的数据包存储至存储 模块,设置与当前接收的数据包名称号相匹配的接收数组并接收;
已设置的接收数组名称号包括当前接收数组名称号以及存储至存储模 块的接收数组名称号,当判断数据包携带的名称号与当前接收数组名称号相 匹配,根据该接收的标记号将数据包存储至当前接收数组相应的元素中;当 判断数据包携带的名称号与存储模块中的接收数组名称号相匹配,根据该接 收的数据包发送端ID、批次标识以及标记号将数据包存储至存储模块中相应接收凄t组的相应元素中。
如果接收的数据包携带的名称号与已设置的接收数组名称号不相匹配, 表明该数据包为新的批次标识所属的数据包,需要将当前接收数组存储至存 储模块,并设置与当前接收的数据包名称号相匹配的接收数組以接收新数据 包,设置的方法可以是将当前接收数组中包含的数据包存储至存储模块后, 将当前接收数组名称号更改为与当前接收的数据包名称号相匹配的接收数 组名称号,也可以是将当前接收数組进行剪切,存储至存储模块后,重新设 置与当前接收的数据包名称号相匹配的接收数组。
步骤604,向发送端发送携带要求重传的数据包消息;
本步骤中,也可以在判断接收的数据包不正确,向发送端发送携带要求
重传的数据包消息时,同时存储该数据包。
步骤605,发送端接收携带要求重传的数据包消息,将该要求重传的数
据包进行緩存;
本步骤中,现有技术中,发送端在发送数据包时,先緩存数据包,例如, 利用第 一数据包緩存器进行緩存,由射频模块从緩存的数据包中采用滑窗的 方式读取数据包进行发送,如果有数据包需要重传,则重新发送该滑窗内的 数据包,直至发送成功,或者达到预先设定的重传次数放弃发送,而在该发 送时间内,需要不断增加緩存空间以緩存后续待发送的数据包,本发明中, 当数据包发送不成功时,将该数据包从緩存区中提取出来另行存储,例如, 緩存至第二数据包緩存器中,使得滑窗可以向前推移,发送其他待发送的数 据包,从而有效降低了緩存空间。
当然,实际应用中,也可以是在重传次数超过预先设定的重传次数时,
再将该数据包进行緩存。
步骤606,检测发送端通信状态,如果发送端处于空闲状态,发送緩存 的要求重传的数据包,返回执行步骤602。
本步骤中,检测发送端通信状态主要是检测发送端緩存区中待发送的数 据包是否发送完毕,如果待发送的数据包已发送完毕,即发送端緩存待发送的数据包区域已空,则可以从緩存重传数据包的緩存区中读取緩存的要求重 传的数据包,进行发送。当然,也可以通过检测发送端的射频模块在预定的 时间内没有发送数据包,则认为发送端处于空闲状态。
此外,在待发送数据包量较大的情况下,为了减少接收端设置接收数组 用以接收该待发送数据包而占用的緩存空间,接收端还可以按照设定的批次 标识容量将接收的数据包分成小文件存储,即设置较小的接收数组,同一发
送端ID和批次标识的数据包分做几次进行存储。例如,当接收到的数据包
的包标记号达到规定的批次标识容量时,将接收数组内緩存的数据保存到硬
盘或其他存储介质内,再设置同样数据包源端ID和数组名的接收数组进行 接收,所不同的是,各接收数组中的元素名不同。
图7为本发明重传数据包的方法第一实施例流程示意图,参见图7,该 流程包括
步骤701,进行数据采集并为每个采样点加入标记号; 步骤702,对采集的数据进行打包; 步骤703,在数据包帧结构中加入唯一的数据包名称号; 步骤704,发送数据包;
步骤705,如果接收端接收到数据包,发送成功,则根据数据名称号放 入设置的与数据包名称号相匹配的接收数组的相应位置;
步骤706,如果发送失败,发送失败的数据包被送入发送端的緩存区内; 步骤707,判断发送端通信状态;
步骤708,当发送端通信空闲时,緩存区的数据将重新进行发送,如果 发送端通信忙,则其他数据包发送继续进行;
步骤709,发送端统计已经发送的数据包,接收端统计已经接收的数据 包并进行核对,如果没有数据包漏发,则通信结束。
图8为本发明重传数据包的方法第二实施例流程示意图,参见图8,本 实施例考虑了发送端没有采用ACK机制的数据包重传方法。在将数据打包 后发送数据包的同时,采集模块将数据包全部备份在存储模块内部,接收端在收到数据包放入接收数组的时候,对丢包的数据包进行统计并记录在丢包 存储区,当通信空闲的时候,接收端依据未接收数据包记录,将未接收到的 数据包名称号和重传请求发送给发送端,发送端保存下未接收数据包记录, 依据数据包名称号映射的数据地址,从存储模块中提出未接收数据包,执行 重传,接收端将重传的数据包放入接收数组中相应位置。
该方法接收端的流程包括 步骤801,接收数据包;
本步骤中,数据包的名称号包括发送端ID以及采样点标记号。
步骤802,判断当前数据包的标记号是否大于或等于上一标记号,如果 大于或等于,执行步骤803,否则,执行步骤808;
步骤803,判断当前数据包的标记号是否等于上一标记号,如果是,表 明数据包连续,执行步骤804,否则,表明接收端有丢包,执行步骤806;
步骤804,接收数据包,设置接收端接收数组的元素名为下一个数据包 对应的元素名,即接收端接收数组的元素名等于当前标记号与当前采样点数 之和;
步骤805,将接收的数据包存储至相匹配的接收数组的相应元素中;
步骤806,接收当前数据包,根据当前标记号以及上一标记号计算丟包 的数据标记号,存入丟包存储区;
步骤807,在检测到通信空闲时,将丢包存储区存储的数据标记号以及 该标记号所属的lt据包标识、发送端ID信息发送至相应的发送端;
步骤808,当前数据包的标记号小于上一标记号,从丢包存储区查找是 否存在该数据包,如存在,则为重传数据包,接收当前数据包;如不存在, 则为重复发送的数据包,丟弃该数据包。
以上举较佳实施例,对本发明的目的、技术方案和优点进行了进一步详 细i兑明,所应理解的是,以上所述^f又为本发明的较佳实施例而已,并不用以 限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、 改进等,均应包含在本发明的保护范围之内。
权利要求
1、一种重传数据包的方法,其特征在于,该方法包括发送端在待发送数据包中设置标识该数据包的名称号并发送数据包;接收端接收所述数据包,判断接收的所述数据包是否正确如果接收的所述数据包正确,按照数据包携带的名称号将该数据包存储在与数据包名称号相匹配的接收数组中;如果接收的所述数据包不正确,向发送端发送携带要求重传的数据包消息,发送端将消息中要求重传的数据包进行缓存;发送端检测通信状态,如果处于空闲状态,发送缓存的要求重传的数据包。
2、 如权利要求l所述的方法,其特征在于,所述名称号包括用于标识发送端身份的发送端识别ID、用于标识^t据 包所属批次的批次标识、以及用于标识数据包在所属批次中的顺序的标记 号;所述接收数组名称号包括数据包源端ID、数组名以及元素名; 所述发送端识别ID与所述数据包源端ID相同,所述批次标识匹配所述 数组名,所述标记号匹配所述元素名。
3、 如权利要求2所述的方法,其特征在于,所述发送端在待发送数据 包中设置标识该数据包的名称号包括发送端为待发送数据包设置批次标识,所述待发送数据包的标记号依次 递增;当标记号达到预先设置的最大标记号时,发送端重新设置与已设置的批 次标识不同的批次标识,并重新设置该批次标识对应凄t据包的标记号; 发送端将待发送数据包緩存在第 一数据包緩存器中。
4、 如权利要求2或3所述的方法,其特征在于,所述按照数据包携带 的名称号将该数据包存储在与数据包名称号相匹配的接收数组中包括判断所述数据包携带的名称号与已设置的接收端的接收数组名称号是否匹配,如果匹配,将所述数据包存储至匹配的接收数组中;如果不匹配, 将当前接收数组中存储的数据包存储至存储模块,设置与当前接收的数据包 名称号相匹配的接收数组并接收所述数据包。
5、 如权利要求4所述的方法,其特征在于,所述将数据包存储至匹配 的接收数组中包括如果数据包携带的名称号与当前接收数组名称号相匹配,根据数据包的 标记号将该数据包存储至当前接收数组与标记号匹配的元素名中;如果数据 包携带的名称号与存储模块中的接收数组名称号相匹配,根据数据包发送端 ID、批次标识以及标记号将数据包存储至存储模块中与之匹配的接收数組的 元素名中。
6、 如权利要求3所述的方法,其特征在于,所述发送端将消息中要求 重传的数据包进行緩存包括发送端从第 一数据包緩存器中提取消息中要求 重传的数据包,緩存至第二数据包緩存器。
7、 如权利要求6所述的方法,其特征在于,所述方法进一步包括 如果发送端处于忙状态,通知第二数据包緩存器停止发送緩存的要求重传的数据包。
8、 如权利要求7所述的方法,其特征在于,所述发送端检测通信状态 包括检测发送端第 一数据包緩存器的緩存状态,如果第 一数据包緩存器为 空,则确定发送端处于空闲状态;如果第一数据包緩存器不为空,则确定发 送端处于忙状态。
9、 一种重传数据包的发送端装置,其特征在于,该发送端装置包括 采集模块、数据包处理模块、存储模块、射频模块以及检测模块,其中,采集模块,用于按照预先设定的周期及采样率对采样点进行顺序采样, 将采集到的数据按照通信协议约定的数据包大小进行打包形成数据包,在数 据包帧格式中加入发送端ID、批次标识以及标记号并发送至数据包处理模块;数据包处理模块,用于按照通信协议规则对采集模块发送的数据包进行 编码、纠错后输出至存储模块;接收射频模块携带要求重传的数据包消息, 通知存储模块;存储模块,用于緩存数据包处理模块发送的数据包并输出至射频模块, 接收数据包处理模块的通知消息,根据通知消息中包含的重传数据包信息, 从緩存的数据包中将该重传数据包再次进行缓存;接收检测模块发送的射频 模块空闲消息,将緩存的重传数据包依次输出至射频模块;射频模块,用于将存储模块输出的数据包进行发送;接收来自接收端射 频模块发送携带要求重传的数据包消息,发送至数据包处理模块;检测模块,用于检测发送端状态,如果确定发送端状态空闲,向存储模 块发送射频模块空闲消息。
10、 如权利要求9所述的发送端装置,其特征在于,所述存储模块包括 第一数据包緩存器以及第二数据包緩存器,其中,第 一数据包緩存器,用于緩存数据包处理模块发送的数据包; 第二数据包緩存器,用于根据数据包处理模块发送的通知消息中包含的 重传数据包信息,从第一数据包緩存器中将该重传数据包读入;接收检测模 块发送的射频模块空闲消息,将緩存的数据包依次输出至射频模块。
11、 如权利要求IO所述的发送端装置,其特征在于,所述检测模块,根据预先设定的周期检测第 一数据包緩存器的緩存状 态,如果第一数据包緩存器为空,则向第二数据包緩存器发送射频模块空闲 消息;如果第一数据包緩存器不为空,则向第二数据包緩存器发送射频模块 忙消息,第二数据包緩存器停止输出緩存的重传数据包。
12、 一种重传数据包的接收端装置,其特征在于,该接收端装置包括 射频模块、主处理模块、以及存储模块,其中,射频模块,用于接收发送端射频模块发送的数据包,输出至主处理模块, 接收主处理模块输出的携带要求重传的数据包消息,发送至接收端;主处理模块,用于接收射频模块输出的数据包,如果接收的所述数据包正确,判断所述数据包携带的名称号与已设置的 接收端的接收数组名称号是否匹配,如果是,将所述数据包存储至匹配的接收数组中;如果不,将当前接收数组中存储的数据包存储至存储模块,设置 与当前接收的数据包名称号相匹配的接收数组并接收所述数据包;如果确定接收的数据包不正确,向射频模块发送携带要求重传的数据包 消息。
13、 如权利要求12所述的接收端装置,其特征在于,所述主处理模块 将所述数据包存储至匹配的接收数组中为主处理模块判断当数据包携带的名称号与当前设置的接收数组名称号 相匹配时,根据数据包的标记号将该数据包存储至当前接收数组与标记号匹 配的元素名中;当数据包携带的名称号与存储模块中的接收数组名称号相匹 配时,根据数据包发送端ID、批次标识以及标记号将数据包存储至存储模 块中与之匹配的接收数组的元素名中;当数据包携带的名称号与当前设置的 接收数组名称号、以及存储模块中的接收数组名称号不相匹配时,将当前接 收数组中存储的数据包存储至存储模块,设置与当前接收的数据包名称号相 匹配的接收数组并接收所述数据包。
14、 一种重传数据包的系统,其特征在于,该系统包括发送端和接收 端,其中,发送端,用于在待发送数据包中设置唯一标识该数据包的名称号,将该 设置名称号的数据包进行发送;接收来自接收端的携带要求重传的数据包消 息,将该要求重传的数据包进行緩存,并在该发送端处于空闲状态时,发送 该緩存的要求重传的数据包;接收端,用于接收数据包,如果确定接收的数据包正确,按照数据包携 带的名称号将该数据包存储在与数据包名称号相匹配的接收数组中;如果确 定接收的数据包不正确,向发送端发送携带要求重传的数据包消息。
全文摘要
本发明公开了一种重传数据包的方法。发送端在待发送数据包中设置标识该数据包的名称号并发送数据包;接收端接收所述数据包,判断接收的所述数据包是否正确如果接收的所述数据包正确,按照数据包携带的名称号将该数据包存储在与数据包名称号相匹配的接收数组中;如果接收的所述数据包不正确,向发送端发送携带要求重传的数据包消息,发送端将消息中要求重传的数据包进行缓存;发送端检测通信状态,如果处于空闲状态,发送缓存的要求重传的数据包。本发明还公开了一种重传数据包的装置及系统。应用本发明,不需对接收数据包进行重新排序,并可以使重传的数据包在通信空闲的间隙进行,可以节约系统资源开销并提高无线通信的可靠性。
文档编号H04L1/18GK101621368SQ20091009123
公开日2010年1月6日 申请日期2009年8月13日 优先权日2009年8月13日
发明者唐智斌, 张俊辉, 罗银生 申请人:北京必创科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1