发明内容
针对上述问题,本发明的目的在于提供一种聚合MPDU的生成、解析方法、装置及存储介质,其通过将无效填充替换成冗余信息,有效利用传输时间,从而减少传输时间资源的浪费。
第一方面,本发明实施例提供了一种聚合MPDU的生成方法,包括:
获取多个待聚合的MPDU,并对每个待聚合的MPDU构建相应的MPDU子帧;
在当前MPDU的开始间隔满足预设填充条件时,根据当前MPDU的开始间隔与预设的最小MPDU开始间隔,基于预先选定的冗余格式在当前MPDU子帧和下一个MPDU子帧之间构建冗余信息子帧;其中,所述预设填充条件为开始间隔当前MPDU的开始间隔小于所述最小MPDU开始间隔;
根据所述MPDU子帧和所述冗余信息子帧,获得聚合MPDU。
作为上述方案的改进,所述根据当前MPDU的开始间隔与预设的最小MPDU开始间隔,基于预先选定的冗余格式在当前MPDU子帧和下一个MPDU子帧之间构建冗余信息子帧,包括:
根据当前MPDU的开始间隔与所述最小MPDU开始间隔,计算冗余信息长度;
基于预先选定的冗余格式,根据所述冗余信息长度计算冗余信息;
对所述冗余信息添加分隔符和填充字节以构建所述冗余信息子帧;
将所述冗余信息子帧填充在当前MPDU子帧和下一个MPDU子帧之间。
作为上述方案的改进,所述基于预先选定的冗余格式,根据所述冗余信息长度计算冗余信息,包括:
当所述冗余格式的取值为第一设定值时,根据所述冗余信息长度复制当前MPDU以得到一份MPDU副本,并根据所述MPDU副本构造所述冗余信息;
当所述冗余格式的取值为第二设定值时,根据所述冗余信息长度计算当前MPDU的前向纠错编码,并根据所述前向纠错编码构造所述冗余信息。
作为上述方案的改进,所述根据所述冗余信息长度复制当前MPDU以得到一份MPDU副本,包括:
将所述冗余信息长度与当前MPDU的MPDU长度进行比较;
当所述冗余信息长度小于等于所述MPDU长度时,按照所述冗余信息长度对当前MPDU中位于前列的一段MPDU数据进行复制,获得所述MPDU副本;
当所述冗余信息长度大于所述MPDU长度时,对当前MPDU进行多次复制直至填满所述冗余信息长度以获得所述MPDU副本。
作为上述方案的改进,所述根据所述冗余信息长度计算当前MPDU的前向纠错编码,并根据所述前向纠错编码构造所述冗余信息,包括:
计算当前MPDU的前向纠错编码总长,并将所述冗余信息长度与所述前向纠错编码总长进行比较;
当所述冗余信息长度小于等于所述前向纠错编码总长时,计算当前MPDU中位于前列的一段MPDU数据的前向纠错编码;其中,所述前向纠错编码的长度等于所述冗余信息长度;
当所述冗余信息长度大于所述前向纠错编码总长时,重复计算当前MPDU的前向纠错编码直至计算出的前向纠错编码填满所述冗余信息长度;
根据计算出的前向纠错编码构造冗余信息。
作为上述方案的改进,所述对所述冗余信息添加分隔符和填充字节以构建所述冗余信息子帧,包括:
将所述冗余信息长度与所述冗余信息的最大长度进行比较;其中,所述冗余信息
的最大长度为2
14-N 1,N为所述冗余格式的比特数;
当所述冗余信息长度大于所述最大长度时,将所述冗余信息拆分为多个冗余信息块;
对各个所述冗余信息块添加分隔符和填充字节以构建多个冗余信息子帧;
当所述冗余信息长度小于等于所述最大长度时,对所述冗余信息添加分隔符和填充字节以构建一个冗余信息子帧。
相对于现有技术,本发明实施例的有益效果在于:
通过获取多个待聚合的MPDU,并对每个待聚合的MPDU构建相应的MPDU子帧;在当前MPDU的开始间隔满足预设填充条件时,根据当前MPDU的开始间隔与预设的最小MPDU开始间隔,基于预先选定的冗余格式在当前MPDU子帧和下一个MPDU子帧之间构建所述冗余信息子帧;其中,所述预设填充条件为开始间隔当前MPDU的开始间隔小于所述最小MPDU开始间隔;根据所述MPDU子帧和所述冗余信息子帧,获得聚合MPDU;通过在相邻的MPDU子帧之间填充冗余信息子帧,从而将无效填充替换成冗余信息,有效利用传输时间,从而减少传输时间资源的浪费。
第二方面,本发明实施例提供了一种聚合MPDU的解析方法,包括:
对接收到的聚合MPDU查找分隔符,并提取当前查找到的分隔符所在子帧的标志位信息;
根据所述标志位信息确认所述分隔符所在子帧的类型;
当所述分隔符所在子帧的类型为MPDU子帧时,提取所述MPDU子帧的MPDU,并对所述MPDU进行FCS校验;
在FCS校验通过时,判定所述MPDU正确接收;
在FCS校验不通过时,查找所述MPDU子帧和下一个MPDU子帧之间的冗余信息子帧;
在查找到冗余信息子帧时,提取所述冗余信息子帧的冗余信息,并采用所述冗余信息对所述MPDU进行纠错;
对纠错后的MPDU进行FCS校验;在FCS校验通过时,判定所述MPDU正确接收;在FCS校验不通过时,丢弃所述MPDU,并查找下一个分隔符;
当所述分隔符所在子帧的类型为冗余信息子帧时,查找下一个分隔符。
作为上述方案的改进,所述在查找到冗余信息子帧时,提取所述冗余信息子帧的冗余信息,并采用所述冗余信息对所述MPDU进行纠错,包括:
在查找到冗余信息子帧时,提取查找到的冗余信息子帧的冗余信息和冗余格式对应的值;
对提取出的冗余信息进行拼接;
根据所述冗余信息子帧的冗余格式对应的值,确定拼接后的冗余信息的格式;
当拼接后的冗余信息的格式为MPDU副本时,采用所述MPDU副本对所述MPDU进行纠错;
当拼接后的冗余信息的格式为前向纠错编码时,采用所述前向纠错编码对所述MPDU进行纠错。
作为上述方案的改进,所述采用所述MPDU副本对所述MPDU进行纠错,包括:
将所述MPDU副本的长度与所述MPDU的MPDU长度进行比较;
当所述MPDU副本的长度小于等于所述MPDU长度时,将所述MPDU副本更新到所述MPDU中;
对更新后的MPDU进行FCS校验,并在更新后MPDU通过FCS校验时,确认所述MPDU纠错成功;
当所述MPDU副本的长度大于所述MPDU长度时,根据所述MPDU长度,提取所述MPDU副本中位于前列的一段MPDU数据;
对所述MPDU数据进行FCS校验,并在FCS校验通过时,将所述MPDU数据更新到所述MPDU中;在FCS校验不通过时,从所述MPDU副本中提取对应所述MPDU副本的长度的下一段MPDU数据并返回FCS校验步骤。
作为上述方案的改进,所述采用所述前向纠错编码对所述MPDU进行纠错,包括:
计算所述MPDU的前向纠错编码总长,并将所述前向纠错编码的长度与所述前向纠错编码总长进行比较;
当所述前向纠错编码的长度小于等于所述前向纠错编码总长时,根据所述前向纠错编码的长度,提取所述MPDU中位于前列的一段MPDU数据;
将所述前向纠错编码合并到所述MPDU数据;
通过预设的校验矩阵对合并后的MPDU数据进行纠错;
根据纠错后的MPDU数据,更新所述MPDU;
对更新后的MPDU进行FCS校验,并在更新后MPDU通过FCS校验时,确认所述MPDU纠错成功;
当所述前向纠错编码的长度大于所述前向纠错编码总长时,根据所述前向纠错编码总长,提取所述前向纠错编码位于前列的一段编码数据;
将所述编码数据合并到所述MPDU;
通过所述校验矩阵对合并后的MPDU进行纠错;
对纠错后的MPDU进行FCS校验,并在FCS校验通过时,根据纠错后的MPDU,更新所述MPDU;在FCS校验不通过时,从所述前向纠错编码中提取下一段编码数据并返回编码数据合并步骤。
第三方面,本发明实施例提供了一种聚合MPDU的生成装置,包括:
MPDU子帧构建模块,用于获取多个待聚合的MPDU,并对每个待聚合的MPDU构建相应的MPDU子帧;
冗余信息子帧构建模块,用于在当前MPDU的开始间隔满足预设填充条件时,根据当前MPDU的开始间隔与预设的最小MPDU开始间隔,基于预先选定的冗余格式在当前MPDU子帧和下一个MPDU子帧之间构建冗余信息子帧;其中,所述预设填充条件为当前MPDU的开始间隔小于所述最小MPDU开始间隔;
MPDU聚合模块,用于根据所述MPDU子帧和所述冗余信息子帧,获得聚合MPDU。
第四方面,本发明实施例提供了一种聚合MPDU的解析装置,包括:
第一分隔符查找模块,用于对接收到的聚合MPDU查找分隔符,并提取当前查找到的分隔符所在子帧的标志位信息;
子帧类型确定模块,用于根据所述标志位信息确认所述分隔符所在子帧的类型;
第一FCS校验模块,用于当所述分隔符所在子帧的类型为MPDU子帧时,提取所述MPDU子帧的MPDU,并对所述MPDU进行FCS校验;
第一判断模块,用于在FCS校验通过时,判定所述MPDU正确接收;
冗余信息子帧查找模块,用于在FCS校验不通过时,查找所述MPDU子帧和下一个MPDU子帧之间的冗余信息子帧;
纠错模块,用于在查找到冗余信息子帧时,提取所述冗余信息子帧的冗余信息,并采用所述冗余信息对所述MPDU进行纠错;
第二FCS校验模块,用于对纠错后的MPDU进行FCS校验;在FCS校验通过时,判定所述MPDU正确接收;在FCS校验不通过时,丢弃所述MPDU,并查找下一个分隔符;
第二分隔符查找模块,用于当所述分隔符所在子帧的类型为冗余信息子帧时,查找下一个分隔符。
第五方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如第一方面中任意一项所述的聚合MPDU的生成方法。
第六方面,本发明实施例提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如第二方面中任意一项所述的聚合MPDU的解析方法。
相对于现有技术,本发明实施例的有益效果在于:基于第一方面任一项所述的聚合MPDU实施的聚合MPDU解析方法包括:对接收到的聚合MPDU查找分隔符,并提取当前查找到的分隔符所在子帧的标志位信息;根据所述标志位信息确认所述分隔符所在子帧的类型;当所述分隔符所在子帧的类型为MPDU子帧时,提取所述MPDU子帧的MPDU,并对所述MPDU进行FCS校验;在FCS校验通过时,判定所述MPDU正确接收;在FCS校验不通过时,查找所述MPDU子帧和下一个MPDU子帧之间的冗余信息子帧;在查找到冗余信息子帧时,提取所述冗余信息子帧的冗余信息,并采用所述冗余信息对所述MPDU进行纠错;对纠错后的MPDU进行FCS校验;在FCS校验通过时,判定所述MPDU正确接收;在FCS校验不通过时,丢弃所述MPDU,并查找下一个分隔符;当所述分隔符所在子帧的类型为冗余信息子帧时,查找下一个分隔符。由于聚合MPDU中相邻的MPDU子帧之间填充有冗余信息子帧,能有效利用传输时间,从而减少传输时间资源的浪费;而接收端在接收到聚合MPDU时,若某一个MPDU的FCS校验不通过,可通过其后的冗余信息子帧恢复数据,而不需要进行重传,有效降低传输错误可能性,降低重传概率。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,其是本发明第一实施例提供的聚合MPDU的生成方法的流程图,所述聚合MPDU的生成方法,包括以下步骤:
S1:获取多个待聚合的MPDU,并对每个待聚合的MPDU构建相应的MPDU子帧;
S2:在当前MPDU的开始间隔满足预设填充条件时,根据当前MPDU的开始间隔与预设的最小MPDU开始间隔,基于预先选定的冗余格式在当前MPDU子帧和下一个MPDU子帧之间构建冗余信息子帧;其中,所述预设填充条件为当前MPDU的开始间隔小于所述最小MPDU开始间隔;
S3:根据所述MPDU子帧和所述冗余信息子帧,获得聚合MPDU。
具体地,将所述MPDU子帧和冗余信息子帧按顺序排列,VHT以上格式加上尾部填充,获得有效填充的聚合MPDU。
如图2所示,一个聚合MPDU由多个MPDU子帧组成,每个MPDU子帧包括三个部分:MPDU的分隔符、MPDU、填充字节。其中,分隔符包括4个字节,其中含有MPDU长度信息。MPDU包括MPDU头、有效载荷和帧校验序列(Frame Check Sequence,FCS),当接收到的MPDU的帧校验序列与预期不符,则认为发生了错误,错误的MPDU将被丢弃并要求重传。填充字节为0-3个无效字节,用于将字节数填充为4的整数倍。
在本发明实施例中,在当前MPDU的开始间隔小于所述最小MPDU开始间隔,即MPDU的开始间隔不足以填满最小时间间隔而需填充冗余信息时,在相邻的MPDU子帧之间填充至少一个冗余信息子帧,从而将无效填充替换成冗余信息,有效利用传输时间,从而减少传输时间资源的浪费。
此外,由于冗余信息子帧中长度域有最大长度限制(≤ 214-N-1),因此可能出现单个冗余信息子帧无法填满最小开始间隔的情况,此时,可使用连续多个冗余信息子帧,共同保护上一个MPDU,连续的冗余信息子帧可携带不同的冗余信息。另外,也可能出现MPDU的开始间隔足够长而无需填充冗余信息的情况,此时,按只有MPDU子帧的方式进行聚合。
在一种可选的实施例中,所述根据当前MPDU的开始间隔与预设的最小MPDU开始间隔,基于预先选定的冗余格式在当前MPDU子帧和下一个MPDU子帧之间构建冗余信息子帧,包括:
根据当前MPDU的开始间隔与所述最小MPDU开始间隔,计算冗余信息长度;
基于预先选定的冗余格式,根据所述冗余信息长度计算冗余信息;
对所述冗余信息添加分隔符和填充字节以构建所述冗余信息子帧;
将所述冗余信息子帧填充在当前MPDU子帧和下一个MPDU子帧之间。
其中,在步骤S1中,对每个待聚合的MPDU添加分隔符和填充字节以构建相应的MPDU子帧。
如图3所示,MDPU和冗余信息的分隔符使用图3的格式填写。有效MPDU的分隔符中,标志位B1置0代表携带有效的MPDU信息,冗余格式B2的比特数N置0,并设置EOF、长度域、CRC和识别标志,从而得到MPDU子帧。冗余信息的分隔符中,标志位B1置1代表携带冗余信息,冗余格式B2的比特数N依据冗余信息的格式(例如MPDU副本、汉明码)不同取值不同,可根据预先协定每种格式的取值和计算方式,之后填充EOF、长度域、CRC和识别标志,从而得到冗余信息子帧。本发明实例的冗余信息子帧可以兼容MPDU副本和各种前向纠错编码(ForwardError Correction,FEC),例如(7,4)汉明码、RS码,并使用分隔符(Delimiter)中的一些比特,携带填充的冗余信息。
在一种可选的实施例中,所述基于预先选定的冗余格式,根据所述冗余信息长度计算冗余信息,包括:
当所述冗余格式的取值为第一设定值时,根据所述冗余信息长度复制当前MPDU以得到一份MPDU副本,并根据所述MPDU副本构造所述冗余信息;
当所述冗余格式的取值为第二设定值时,根据所述冗余信息长度计算当前MPDU的前向纠错编码,并根据所述前向纠错编码构造所述冗余信息。
在本发明实施例中,第一设定值为0,第二设定值为1。所述前向纠错编码为(7,4)汉明码,参见图3,假设冗余格式B2的比特数N =1,冗余格式B2的取值为0代表填充MPDU副本,冗余格式B2的取值为1代表填充(7,4)汉明码;由于在MPDU的开始间隔内传输的冗余信息也需要以聚合MPDU子帧的格式发送,即包括分隔符、冗余信息、填充字节三部分。为了区分某子帧携带的是有效MPDU还是冗余信息,在本发明实施例中在分隔符里添加标志位B1。例如:B1=0代表该子帧携带有效MPDU,B1=1则代表携带冗余信息。还可以在MPDU长度域中取前N个比特,代表2N种格式的冗余信息,用于支持多种冗余信息格式,例如:取1个比特B2,B2=0代表使用MPDU的一段副本,B2=1代表使用(7,4)汉明码校验,多个比特情况可依此类推。通过上述做法可以减小冗余信息的最大长度,可适当选择N的大小。
在一种可选的实施例中,所述根据所述冗余信息长度复制当前MPDU以得到一份MPDU副本,包括:
将所述冗余信息长度与当前MPDU的MPDU长度进行比较;
当所述冗余信息长度小于等于所述MPDU长度时,按照所述冗余信息长度对当前MPDU中位于前列的一段MPDU数据进行复制,获得所述MPDU副本;
当所述冗余信息长度大于所述MPDU长度时,对当前MPDU进行多次复制直至填满所述冗余信息长度以获得所述MPDU副本。
在一种可选的实施例中,所述根据所述冗余信息长度计算当前MPDU的前向纠错编码,并根据所述前向纠错编码构造所述冗余信息,包括:
计算当前MPDU的前向纠错编码总长,并将所述冗余信息长度与所述前向纠错编码总长进行比较;
当所述冗余信息长度小于等于所述前向纠错编码总长时,计算当前MPDU中位于前列的一段MPDU数据的前向纠错编码;其中,所述前向纠错编码的长度等于所述冗余信息长度;
当所述冗余信息长度大于所述前向纠错编码总长时,重复计算当前MPDU的前向纠错编码直至计算出的前向纠错编码填满所述冗余信息长度;
根据计算出的前向纠错编码构造冗余信息。
具体地,以(7,4)汉明码的校验字节为所述前向纠错编码为例,则可根据计算出的汉明码的校验字节构成冗余信息,所述前向纠错编码的长度等于所述汉明码的校验字节的长度。进一步地,根据预设的生成矩阵按照设定比特数分组对所述MPDU进行编码,得到所述MPDU的汉明码;其中,所述生成矩阵对所述MPDU中每4个有效比特为一组进行编码,得到7个编码位,其中前4位为有效位,后3位为校验位。
在一种可选的实施例中,所述对所述冗余信息添加分隔符和填充字节以构建所述冗余信息子帧,包括:
将所述冗余信息长度与所述冗余信息的最大长度进行比较;其中,所述冗余信息
的最大长度为2
14-N 1,N为所述冗余格式的比特数;
当所述冗余信息长度大于所述最大长度时,将所述冗余信息拆分为多个冗余信息块;
对各个所述冗余信息块添加分隔符和填充字节以构建多个冗余信息子帧;
当所述冗余信息长度小于等于所述最大长度时,对所述冗余信息添加分隔符和填充字节以构建一个冗余信息子帧。
为了方便理解,下面针对冗余信息为MPDU副本和(7,4)汉明码的两种情况进行详细说明:
冗余信息为MPDU副本,此时,冗余格式B2的比特数N =1,冗余格式B2的取值为0,则一个子帧内冗余信息最大长度为213 – 1。冗余信息的生成过程如下:
1、生成冗余信息:根据所需填充的冗余信息长度复制一份MPDU副本。当所需填充的冗余信息长度小于MPDU长度时,则对所述MPDU超过所述冗余信息长度的部分不进行复制;当所需填充的冗余信息长度大于等于MPDU长度时,则再复制一份对应所述MPDU的MPDU副本,直至满足所需填充的冗余信息长度。
2、拆分冗余信息:当MPDU副本总长(即所述冗余信息长度)超过一个子帧内冗余信息的最大长度,则将上述步骤复制到的MPDU副本拆成多个部分(即所述冗余信息块)。
3、构造冗余信息子帧:对上述各部分MPDU副本(即所述冗余信息块)分别构造分隔符,并加上填充字节,获得一个或数个冗余信息子帧,填入对应MPDU子帧间隔内。
冗余信息为(7,4)汉明码,此时,冗余格式B2的比特数N =1,冗余格式B2的取值为1,则一个子帧内冗余信息最大长度为213 – 1。冗余信息的生成过程如下:
1、生成冗余信息:根据所需填充的冗余信息长度计算MPDU一段MPDU数据的(7,4)汉明码。(7,4)汉明码是为每4个有效比特生成3位校验比特,因为MPDU以字节为单位,因此可为每4个有效字节生成3个校验字节。生成矩阵如式(1-1)所示,每4个有效位乘上生成矩阵,可得7个编码位,其中前4位为有效位,后3位为校验位。如果完整的所述MPDU的校验字节无法填满所需长度,则重复对所述MPDU编码直至长度满足要求。
2、当上述编码得到的汉明码的校验字节总长(即所述冗余信息长度)超过一个子帧内冗余信息的最大长度,则将校验字节拆成多个部分(即所述冗余信息块)。
3、对上述各部分校验字节(即所述冗余信息块)分别构造分隔符,并加上填充字节,获得一个或数个冗余信息子帧,填入对应MPDU子帧间隔内。
相对于现有技术,本发明实施例的有益效果在于:
1、通过在相邻的MPDU子帧之间填充冗余信息子帧,从而将无效填充替换成冗余信息,有效利用传输时间,从而减少传输时间资源的浪费,同时可以降低重传概率。
2、聚合MPDU的冗余信息子帧可支持MPDU副本和各种FEC方法,例如汉明码、RS码等。
3、除了占用了分隔符中的预留位以外,与现有的聚合MPDU方案相比,不消耗任何其他资源。
请参阅图4,其是本发明第二实施例提供了一种聚合MPDU的解析方法的流程图,所述聚合MPDU的解析方法包括:
S11:对接收到的聚合MPDU查找分隔符,并提取当前查找到的分隔符所在子帧的标志位信息;
S12:根据所述标志位信息确认所述分隔符所在子帧的类型;
S13:当所述分隔符所在子帧的类型为MPDU子帧时,提取所述MPDU子帧的MPDU,并对所述MPDU进行FCS校验;
S14:在FCS校验通过时,判定所述MPDU正确接收;
S15:在FCS校验不通过时,查找所述MPDU子帧和下一个MPDU子帧之间的冗余信息子帧;
S16:在查找到冗余信息子帧时,提取所述冗余信息子帧的冗余信息,并采用所述冗余信息对所述MPDU进行纠错;
S17:对纠错后的MPDU进行FCS校验;在FCS校验通过时,判定所述MPDU正确接收;在FCS校验不通过时,丢弃所述MPDU,并查找下一个分隔符;
S18:当所述分隔符所在子帧的类型为冗余信息子帧时,查找下一个分隔符。
参见图5,通过对聚合MPDU的每一个子帧逐一进行分隔符查找,在找到第一个分隔符时,判断该分隔符所在子帧是MPDU子帧还是冗余信息子帧;若为MPDU子帧,则进行FCS校验,并在FCS校验通过时,判定所述MPDU正确接收,在FCS校验不通过时,判定所述MPDU正发生错误,此时需要执行数据恢复步骤,即对该MPDU子帧的MPDU进行纠错后再次进行FCS校验,若仍然校验不通过,则判断该分隔符所在子帧发生错误,若校验通过,则判断MPDU正确接收,将所述MPDU送入上层处理,并判断聚合MPDU是否结束;若未结束,则查找下一个分隔符,并重复上述步骤直至查找聚合MPDU结束;若为冗余信息子帧,则直接查找下一个分隔符,重复上述步骤直至查找聚合MPDU结束。
在发明实例中,一方面由于聚合MPDU中相邻的MPDU子帧之间填充有冗余信息子帧,能有效利用传输时间,从而减少传输时间资源的浪费;另一方面接收端在接收到聚合MPDU时,若某一个MPDU的FCS校验不通过,可通过其后的冗余信息子帧恢复数据,若恢复后的数据能通过FCS校验,则认为该MPDU正确传输,而不需要进行重传,有效降低传输错误可能性,降低重传概率,同时提高传输效率。其中,所述冗余信息可以是MPDU副本或FEC(Forward Error Correction,前向纠错编码),例如(7,4)汉明码。
在一种可选的实施例中,所述在查找到冗余信息子帧时,提取所述冗余信息子帧的冗余信息,并采用所述冗余信息对所述MPDU进行纠错,包括:
在查找到冗余信息子帧时,提取查找到的冗余信息子帧的冗余信息和冗余格式对应的值;
对提取出的冗余信息进行拼接;
根据所述冗余信息子帧的冗余格式对应的值,确定拼接后的冗余信息的格式;
当拼接后的冗余信息的格式为MPDU副本时,采用所述MPDU副本对所述MPDU进行纠错;
当拼接后的冗余信息的格式为前向纠错编码时,采用所述前向纠错编码对所述MPDU进行纠错。
在一种可选的实施例中,所述采用所述MPDU副本对所述MPDU进行纠错,包括:
将所述MPDU副本的长度与所述MPDU的MPDU长度进行比较;
当所述MPDU副本的长度小于等于所述MPDU长度时,将所述MPDU副本更新到所述MPDU中;
对更新后的MPDU进行FCS校验,并在更新后MPDU通过FCS校验时,确认所述MPDU纠错成功;
当所述MPDU副本的长度大于所述MPDU长度时,根据所述MPDU长度,提取所述MPDU副本中位于前列的一段MPDU数据;
对所述MPDU数据进行FCS校验,并在FCS校验通过时,将所述MPDU数据更新到所述MPDU中;在FCS校验不通过时,从所述MPDU副本中提取对应所述MPDU副本的长度的下一段MPDU数据并返回FCS校验步骤。
在一种可选的实施例中,所述采用所述前向纠错编码对所述MPDU进行纠错,包括:
计算所述MPDU的前向纠错编码总长,并将所述前向纠错编码的长度与所述前向纠错编码总长进行比较;
当所述前向纠错编码的长度小于等于所述前向纠错编码总长时,根据所述前向纠错编码的长度,提取所述MPDU中位于前列的一段MPDU数据;
将所述前向纠错编码合并到所述MPDU数据;
通过预设的校验矩阵对合并后的MPDU数据进行纠错;
根据纠错后的MPDU数据,更新所述MPDU;
对更新后的MPDU进行FCS校验,并在更新后MPDU通过FCS校验时,确认所述MPDU纠错成功;
当所述前向纠错编码的长度大于所述前向纠错编码总长时,根据所述前向纠错编码总长,提取所述前向纠错编码位于前列的一段编码数据;
将所述编码数据合并到所述MPDU;
通过所述校验矩阵对合并后的MPDU进行纠错;
对纠错后的MPDU进行FCS校验,并在FCS校验通过时,根据纠错后的MPDU,更新所述MPDU;在FCS校验不通过时,从所述前向纠错编码中提取下一段编码数据并返回编码数据合并步骤。
其中,以(7,4)汉明码的校验字节为所述前向纠错编码为例,则所述冗余信息由计算出MPDU的汉明码的校验字节构成;所述前向纠错编码的长度等于所述汉明码的校验字节的长度。
在本发明实施例中,以(7,4)汉明码为所述前向纠错编码,为了方面理解,下面分别对冗余信息为MPDU副本和汉明码这两种情况进行纠错过程说明:
冗余信息为MPDU副本:
1、当MPDU子帧发生错误,则查找其后是否有冗余信息子帧。将连续的冗余信息子帧中的冗余信息提取出来,并拼接成完整的冗余信息,即MPDU副本。
2、若MPDU副本的长度小于等于MPDU长度,则将MPDU前面的部分替换成MPDU副本,再次进行FCS校验,校验通过则表示纠错成功。
3、若MPDU副本的长度大于MPDU长度,表示MPDU副本中含有至少1个完整的所述MPDU。从MPDU副本中取出一个包含完整的所述MPDU的一段MPDU数据进行FCS校验,校验通过则将所述MPDU用该段MPDU数据替代,校验不通过则取下一段MPDU数据,以此类推。若所有的包含完整的所述MPDU的MPDU数据都发生错误,取最后一段不完整MPDU数据,进行FCS校验。
冗余信息为(7,4)汉明码:
1、若MPDU子帧发生错误,则查找其后是否有冗余信息子帧。
2、将连续的冗余信息子帧中的冗余信息提取出来,拼接成完整的冗余信息,即MPDU的(7, 4)汉明码的校验字节。
3、若校验字节的长度小于完整MPDU对应的前向纠错编码总长(此处为MPDU长度的3/4),则将MPDU前面的部分取出,与校验字节一起,通过校验矩阵(2-1)进行纠错。纠错完成后再次进行FCS校验,校验通过则表示纠错成功。校验矩阵如式(2-1)所示,纠错过程为将4位有效位和3位校验位合并成7位编码位,然后乘以校验矩阵的转置,得到3位错误图样,错误图样为全0则表示无错,其余7种分别对应7位比特哪一位发生错误,即可纠正该位码元。
4、若校验字节的长度大于完整MPDU对应的前向纠错编码总长(此处为MPDU长度的3/4),表示冗余信息中含有至少1个完整的MPDU的校验字节。取出一个完整的MPDU的校验字节,与所述MPDU一起,使用校验矩阵进行纠错,并进行FCS校验,校验通过则表示纠错成功,校验不通过则取下一个完整的MPDU的校验字节,以此类推。若所有完整MPDU的校验字节都无法正确纠错,则取最后一段不完整的校验字节,进行FCS校验。
相对于现有技术,本发明实施例的有益效果在于:基于第一方面任一项所述的聚合MPDU实施的聚合MPDU解析方法包括:对接收到的聚合MPDU查找分隔符,并提取当前查找到的分隔符所在子帧的标志位信息;根据所述标志位信息确认所述分隔符所在子帧的类型;当所述分隔符所在子帧的类型为MPDU子帧时,提取所述MPDU子帧的MPDU,并对所述MPDU进行FCS校验;在FCS校验通过时,判定所述MPDU正确接收;在FCS校验不通过时,查找所述MPDU子帧和下一个MPDU子帧之间的冗余信息子帧;在查找到冗余信息子帧时,提取所述冗余信息子帧的冗余信息,并采用所述冗余信息对所述MPDU进行纠错;对纠错后的MPDU进行FCS校验;在FCS校验通过时,判定所述MPDU正确接收;在FCS校验不通过时,丢弃所述MPDU,并查找下一个分隔符;当所述分隔符所在子帧的类型为冗余信息子帧时,查找下一个分隔符。由于聚合MPDU中相邻的MPDU子帧之间填充有冗余信息子帧,能有效利用传输时间,从而减少传输时间资源的浪费;而接收端在接收到聚合MPDU时,若某一个MPDU的FCS校验不通过,可通过其后的冗余信息子帧恢复数据,而不需要进行重传,有效降低传输错误可能性,降低重传概率,同时提高传输效率。
请参阅图6,本发明第三实施例提供了一种聚合MPDU的生成装置,包括:
MPDU子帧构建模块11,用于获取多个待聚合的MPDU,并对每个待聚合的MPDU构建相应的MPDU子帧;
冗余信息子帧构建模块12,用于在当前MPDU的开始间隔满足预设填充条件时,根据当前MPDU的开始间隔与预设的最小MPDU开始间隔,基于预先选定的冗余格式在当前MPDU子帧和下一个MPDU子帧之间构建冗余信息子帧;其中,所述预设填充条件为当前MPDU的开始间隔小于所述最小MPDU开始间隔;
MPDU聚合模块13,用于根据所述MPDU子帧和所述冗余信息子帧,获得聚合MPDU。
在一种可选的实施例中,所述冗余信息子帧构建模块包括:
冗余信息长度计算单元,用于根据当前MPDU的开始间隔与所述最小MPDU开始间隔,计算冗余信息长度;
冗余信息计算单元,用于基于预先选定的冗余格式,根据所述冗余信息长度计算冗余信息;
冗余子帧构建单元,用于对所述冗余信息添加分隔符和填充字节以构建所述冗余信息子帧;
冗余子帧填充单元,用于将所述冗余信息子帧填充在当前MPDU子帧和下一个MPDU子帧之间。
在一种可选的实施例中,所述冗余信息计算单元包括:
副本复制单元,用于当所述冗余格式的取值为第一设定值时,根据所述冗余信息长度复制当前MPDU以得到一份MPDU副本,并根据所述MPDU副本构造所述冗余信息;
前向纠错编码计算单元,用于当所述冗余格式的取值为第二设定值时,根据所述冗余信息长度计算当前MPDU的前向纠错编码,并根据所述前向纠错编码构造所述冗余信息。
在一种可选的实施例中,所述副本复制单元包括:
第一长度比较单元,用于将所述冗余信息长度与当前MPDU的MPDU长度进行比较;
第一复制单元,用于当所述冗余信息长度小于等于所述MPDU长度时,按照所述冗余信息长度对当前MPDU中位于前列的一段MPDU数据进行复制,获得所述MPDU副本;
第二复制单元,用于当所述冗余信息长度大于所述MPDU长度时,对当前MPDU进行多次复制直至填满所述冗余信息长度以获得所述MPDU副本。
在一种可选的实施例中,所述前向纠错编码计算单元包括:
第二长度比较单元,用于计算当前MPDU的前向纠错编码总长,并将所述冗余信息长度与所述前向纠错编码总长进行比较;
第一编码计算单元,用于当所述冗余信息长度小于等于所述前向纠错编码总长时,计算当前MPDU中位于前列的一段MPDU数据的前向纠错编码;其中,所述前向纠错编码的长度等于所述冗余信息长度;
第二编码计算单元,用于当所述冗余信息长度大于所述前向纠错编码总长时,重复计算当前MPDU的前向纠错编码直至计算出的前向纠错编码填满所述冗余信息长度;
冗余信息构造单元,用于根据计算出的前向纠错编码构造冗余信息。
在一种可选的实施例中,所述冗余子帧构建单元包括:
第三长度比较单元,用于将所述冗余信息长度与所述冗余信息的最大长度进行比
较;其中,所述冗余信息的最大长度为2
14-N 1,N为所述冗余格式的比特数;
拆分单元,用于当所述冗余信息长度大于所述最大长度时,将所述冗余信息拆分为多个冗余信息块;
第一子帧构建单元,用于对各个所述冗余信息块添加分隔符和填充字节以构建多个冗余信息子帧;
第二子帧构建单元,用于当所述冗余信息长度小于等于所述最大长度时,对所述冗余信息添加分隔符和填充字节以构建一个冗余信息子帧。
请参阅图7,本发明第四实施例提供了一种聚合MPDU的解析装置,包括:
第一分隔符查找模块21,用于对接收到的聚合MPDU查找分隔符,并提取当前查找到的分隔符所在子帧的标志位信息;
子帧类型确定模块22,用于根据所述标志位信息确认所述分隔符所在子帧的类型;
第一FCS校验模块23,用于当所述分隔符所在子帧的类型为MPDU子帧时,提取所述MPDU子帧的MPDU,并对所述MPDU进行FCS校验;
第一判断模块24,用于在FCS校验通过时,判定所述MPDU正确接收;
冗余信息子帧查找模块25,用于在FCS校验不通过时,查找所述MPDU子帧和下一个MPDU子帧之间的冗余信息子帧;
纠错模块26,用于在查找到冗余信息子帧时,提取所述冗余信息子帧的冗余信息,并采用所述冗余信息对所述MPDU进行纠错;
第二FCS校验模块27,用于对纠错后的MPDU进行FCS校验;在FCS校验通过时,判定所述MPDU正确接收;在FCS校验不通过时,丢弃所述MPDU,并查找下一个分隔符;
第二分隔符查找模块28,用于当所述分隔符所在子帧的类型为冗余信息子帧时,查找下一个分隔符。
在一种可选的实施例中,所述纠错模块包括:
信息提取单元,用于在查找到冗余信息子帧时,提取查找到的冗余信息子帧的冗余信息和冗余格式对应的值;
拼接单元,用于对提取出的冗余信息进行拼接;
格式确定单元,用于根据所述冗余信息子帧的冗余格式对应的值,确定拼接后的冗余信息的格式;
第一纠错单元,用于当拼接后的冗余信息的格式为MPDU副本时,采用所述MPDU副本对所述MPDU进行纠错;
第二纠错单元,用于当拼接后的冗余信息的格式为前向纠错编码时,采用所述前向纠错编码对所述MPDU进行纠错。
在一种可选的实施例中,所述第一纠错单元包括:
第一长度比较单元,用于将所述MPDU副本的长度与所述MPDU的MPDU长度进行比较;
第一更新单元,用于当所述MPDU副本的长度小于等于所述MPDU长度时,将所述MPDU副本更新到所述MPDU中;
第一校验单元,用于对更新后的MPDU进行FCS校验,并在更新后MPDU通过FCS校验时,确认所述MPDU纠错成功;
第一数据提取单元,用于当所述MPDU副本的长度大于所述MPDU长度时,根据所述MPDU长度,提取所述MPDU副本中位于前列的一段MPDU数据;
第二校验单元,用于对所述MPDU数据进行FCS校验,并在FCS校验通过时,将所述MPDU数据更新到所述MPDU中;在FCS校验不通过时,从所述MPDU副本中提取下一段MPDU数据并返回FCS校验步骤。
在一种可选的实施例中,所述第二纠错单元包括:
第二长度比较单元,用于计算所述MPDU的前向纠错编码总长,并将所述前向纠错编码的长度与所述前向纠错编码总长进行比较;
第二数据提取单元,用于当所述前向纠错编码的长度小于等于所述前向纠错编码总长时,根据所述前向纠错编码的长度,提取所述MPDU中位于前列的一段MPDU数据;
第一合并单元,用于将所述前向纠错编码合并到所述MPDU数据;
第一MPDU纠错单元,用于通过预设的校验矩阵对合并后的MPDU数据进行纠错;
第二更新单元,用于根据纠错后的MPDU数据,更新所述MPDU;
第三校验单元,用于对更新后的MPDU进行FCS校验,并在更新后MPDU通过FCS校验时,确认所述MPDU纠错成功;
第三数据提取单元,用于当所述前向纠错编码的长度大于所述前向纠错编码总长时,根据所述前向纠错编码总长,提取所述前向纠错编码位于前列的一段编码数据;
第二合并单元,用于将所述编码数据合并到所述MPDU;
第二MPDU纠错单元,用于通过所述校验矩阵对合并后的MPDU进行纠错;
第四校验单元,用于对纠错后的MPDU进行FCS校验,并在FCS校验通过时,根据纠错后的MPDU,更新所述MPDU;在FCS校验不通过时,从所述前向纠错编码中提取下一段编码数据并返回编码数据合并步骤。
本发明第五实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如第一实施中任意一项所述的聚合MPDU的生成方法。
示例性的,结合图8所示的聚合MPDU的生成设备对上述计算机可读存储介质进行说明,所述聚合MPDU的生成设备包括:至少一个处理器11,例如CPU,至少一个网络接口14或者其他用户接口13,存储器15,至少一个通信总线12,通信总线12用于实现这些组件之间的连接通信。其中,用户接口13可选的可以包括USB 接口以及其他标准接口、有线接口。网络接口14 可选的可以包括Wi-Fi 接口以及其他无线接口。存储器15 可能包含高速RAM 存储器,也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器15 可选的可以包含至少一个位于远离前述处理器11的存储装置。
在一些实施方式中,存储器15 存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:
操作系统151,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务;
程序 152。
具体地,处理器 11 用于调用存储器15 中存储的程序152,执行上述实施例所述的聚合MPDU的生成方法,例如图1所示的步骤S11。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述聚合MPDU的生成设备中的执行过程。
所述聚合MPDU的生成设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述聚合MPDU的生成设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述示意图仅仅是聚合MPDU的生成设备的示例,并不构成对聚合MPDU的生成设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
所称处理器11可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器11是所述聚合MPDU的生成设备的控制中心,利用各种接口和线路连接整个聚合MPDU的生成设备的各个部分。
所述存储器15可用于存储所述计算机程序和/或模块,所述处理器11通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述聚合MPDU的生成设备的各种功能。所述存储器15可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器15可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(SecureDigital, SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
其中,所述聚合MPDU的生成设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
本发明第六实施例提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如第二实施例中任意一项所述的聚合MPDU的解析方法。
本发明实施例所述计算机可读存储介质所在设备的实现原理与第五实施例中描述的设备的实现原理相同,在此不再详细说明。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。