一种基于生成域的数据包错误检测方法及错误检测装置与流程

文档序号:15650607发布日期:2018-10-12 23:06阅读:178来源:国知局

本发明涉及无线传感器网络数据传输错误的检测技术领域,更具体地,涉及一种基于生成域的数据包错误检测方法及错误检测装置。



背景技术:

无线传感器网络在军事应用、环境检测、健康医疗、智慧城市等各领域都有应用。但是网络的性能容易受到传输环境影响,导致数据包传输失败。造成这种现象的原因主要分为两类:物理层的非冲突错误和媒体访问控制层的冲突错误。非冲突错误在非冲突场景下产生,包括路径损耗、多径衰落、阴影衰落和ieee802.11干扰,这些场景下的错误包是偶发的、非持续的。冲突错误在冲突场景下产生,主要来源于隐藏终端,这种场景下的冲突错误一旦产生,极易引起持续冲突,对网络性能造成极大影响。

目前市面上无线传感器节点的底层均基于ieee802.15.4标准搭建,该标准采用随机竞争访问方式载波侦听多路访问/冲突避免(csma/ca)机制。但是csma/ca机制允许的最大重传次数仅为3次,超过这个次数后数据包将被丢弃。由于没有解决造成数据包错误的根本原因,即隐藏终端问题,后续数据包仍会大量冲突。现有检测机制均使用统计方法,采集多组数据后判断冲突,节点耗能较大,且有延时。



技术实现要素:

针对现有技术的以上缺陷或改进需求,本发明提供了一种基于生成域的数据包错误检测方法及错误检测装置。其目的在于解决现有的数据包错误检测方法无法确定错误类型的技术问题。

为实现上述目的,本发明提供一种基于生成域的数据包错误检测方法,包括如下步骤:

s110传输前在数据包的前后区域均插入生成域块,且位于前区域的生成域块插入位置同位于后区域的生成域块插入位置对称,形成前生成域块和后生成域块;其中,生成域块为在数据包中位置已知、内容已知的代码;

s120接收数据包,提取插入的生成域块,并检测前生成域块的平均误码率和后生成域的平均误码率;

s130根据前生成域的平均误码率、后生成域的平均误码率及前后生成域的平均误码率比特差值比确定数据包错误类型。

优选地,步骤s130包括如下步骤:

s131判断前生成域块的平均误码率bal是否为0,若是,进入步骤s133,否则,进入步骤s132;

s132判断后生成域块的平均误码率bar是否小于在非冲突场景下后生成域块的平均误码率的最大值bar-max的大小,若是,则进入步骤s135若否,进入步骤s133;

s133根据前生成域块的平均误码率和后生成域的平均误码率获得比特差值比bdr;

s134将比特差值比bdr与在非冲突场景下比特差值比的最大值bdrn-max和冲突场景下比特差值比的最小值bdrc-min比较;

若比特差值比bdr小于在非冲突场景下比特差值比的最大值bdrn-max,则进入步骤s135;

若比特差值比bdr大于冲突场景下比特差值比的最小值bdrc-min,则进入步骤s136;

若比特差值比bdr处于在非冲突场景下比特差值比的最大值bdrn-max和冲突场景下比特差值比的最小值bdrc-min之间,则进入步骤s137;

s135判断错误为非冲突错误;

s136判断错误为冲突错误;

s137错误类型无法判断。

优选地,步骤s133中:

根据公式获得比特差值比bdr;

其中,bal为前生成域块的平均误码率,bar为后生成域块的平均误码率。

优选地,步骤s120中:

根据公式前生成域块的平均误码率bal,根据公式获得后生成域块的平均误码率bar;

其中,bel为前生成域块的错误比特数,ber为后生成域块的错误比特数,bea为全部生成域块的比特数。

优选地,插入生成域数量根据生成域数据长度、允许传输数据量及错误判断正确率确定。

作为本发明的另一方面,本发明提供一种基于生成域的数据包错误检测装置,包括:

数据接收模块,用于接收在数据前区域和后区域插入有生成域块的数据包;

数据后处理模块,用于检测插入有对称分布的生成域块的数据包中前生成域块的平均误码率和后生成域的平均误码率;

错误判断模块,用于根据前生成域的平均误码率、后生成域的平均误码率及前后生成域的平均误码率比特差值比确定数据包错误类型。

优选地,数据包错误检测装置还包括数据前处理模块和数据发送模块;数据前处理模块用于在未传输的数据包的前后区域均插入对称分布的生成域块,数据发送模块用于发送插入有生成域块的数据包。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:

1、本发明主要用来检测无线传感器网络在数据传输中,发生的数据包错误是否由冲突场景引起。若判断出是冲突场景引起的错误,则说明在该处可能存在隐藏终端,隐藏终端会对数据包的接收造成极大影响。因此,生成域检测可以判断出错包原因,以提示传感器节点改变收发机制,从而提高网络传输性能。

2、本发明提供的数据包错误检测方法,通过在待传输的数据前后部分分别插入对称分布的生成域块,经过传输,检测插入有生成域数据中前生成域块的平均误码率和后生成域块的平均误码率,当出现冲突错误后,冲突场景下错误比特的位置集中在数据包后半部,而非冲突场景下错误比特呈均匀分布,使得冲突场景下误码率比非冲突场景下高出一个数量级。因此,可以直接由bal和bar判断出部分非冲突错误,且插入对称分布的生成域块,可以提高判断精度。

3、本发明提供的数据包错误检测方法,先用后生成域块的平均误码率同非冲突场景下后生成域块的平均误码率的最大值比较,可以判断出部分非冲突错误,然后通过前后生成域块中平均误码率的比特差值比同在非冲突情况下比特差值比的最大值和冲突情况下比特差值比的最小值比较,可判断剩余错包的错误原因,提高该方法的判断效率。

4、本发明提供的数据包错误检测装置,数据接收模块接收插入生成域块的数据,生成域块为位置已经和内容已知代码,数据后处理模块通过比对接收后数据中生成域块代码和生成域块原始代码,获得域块中平均误码率和前后生成域块中平均误码率的比特差值比,错误判断模块根据这两个量确定数据传输过程中错误类型,实现错误类型的判断。

附图说明

图1为生成域块插入方法示意图;

图2为本发明提供的基于生成域的数据包错误检测方法的流程图;

图3为本发明提供的基于生成域的数据包错误检测方法中bdr数值分布示意图;

图4为本发明实施例提供的基于生成域的数据包错误检测装置;

图5为本发明另一实施例提供的基于生成域的数据包错误检测装置。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

本发明提出一种基于生成域的数据包错误检测方法,本发明主要通过检测错误数据包是否由冲突场景引起,从而避免网络中的隐藏终端问题,提高网络传输性能。通过对单个错误包的检测就可以判断出错包原因,错误检测实时性强且开销小。

在节点正常收到一个完整数据包后,会进行循环冗余校验(crc),利用事先约定的crc生成多项式,验证数据包的正确性。我们为了检验未知内容数据包的错包原因,在原始发送的数据包内插入了一些内容已知的比特序列,每一小段序列是一个生成域块,所有生成域块组成生成域。生成域检测在crc校验出数据包错误之后运行,是一种新的专门检测错误包是否由冲突场景引起的算法。

图1为生成域块插入方法示意图。在源节点收集数据形成数据包的过程中,已经在数据包内根据网络要求的编码率插入对应数目的生成域块。图中可见生成域块被分为前后两部分,分别插入到数据帧前部和尾部。生成域块1到n构成前生成域块,生成域块n+1到2n构成后生成域块,位于前区域的生成域块插入位置同位于后区域的生成域块插入位置关于数据帧中部对称。

图2为本发明步骤流程图,本发明提供的一种基于生成域的数据包错误检测方法,包括如下步骤:

s110传输前在数据包的前后区域均插入生成域块,且位于前区域的生成域块插入位置同位于后区域的生成域块插入位置对称,形成前生成域块和后生成域块;其中,生成域块为在数据包中位置已知、内容已知的代码;

s120接收端收到数据包并由crc校验判断错误后,提取插入的生成域块,开始生成域检测,并检测前生成域块的平均误码率和后生成域的平均误码率;

具体地,计算前生成域块的平均误码率bal和后生成域块的平均误码率bar根据如下公式:

其中,bel为前生成域块的错误比特数,bea为全部生成域块的比特数;

其中,ber为后生成域块的错误比特数。

s130根据前生成域的平均误码率、后生成域的平均误码率及前后生成域的平均误码率比特差值比确定数据包错误类型。

其中,步骤s130包括如下步骤:

s131判断前生成域块的平均误码率bal是否为0,若是,进入步骤s133,否则,进入步骤s132;

s132判断后生成域块的平均误码率bar是否小于在非冲突场景下后生成域块的平均误码率的最大值bar-max的大小,若是,则进入步骤s135,若否,则进入步骤s133;

s133根据前生成域块的平均误码率和后生成域的平均误码率获得比特差值比bdr;具体地,根据如下公式计算前后生成域块平均误码率的比特差值比bdr:

s134将比特差值比bdr与在非冲突场景下比特差值比的最大值bdrn-max和冲突场景下比特差值比的最小值bdrc-min比较;

若比特差值比bdr小于在非冲突场景下比特差值比的最大值bdrn-max,则进入步骤s135;

若比特差值比bdr大于冲突场景下比特差值比的最小值bdrc-min,则进入步骤s136;

若比特差值比bdr处于在非冲突场景下比特差值比的最大值bdrn-max和冲突场景下比特差值比的最小值bdrc-min之间,则进入步骤s137;

s135判断错误为非冲突错误;

s136判断错误为冲突错误;

s137错误类型无法判断。

上述步骤中在非冲突场景下后生成域块平均误码率的最大值bar-max、在非冲突场景下比特差值比的最大值bdrn-max和冲突场景下比特差值比的最小值bdrc-min均通过多次在冲突以及非冲突场景实验下对不同误码率进行统计分析获得。

本发明提供的方法是基于数据包在冲突场景下和非冲突场景下错误比特位置分布比例有明显的不同,冲突场景下错误比特的位置集中在数据包后半部,而非冲突场景下错误比特呈均匀分布,使得冲突场景下误码率比非冲突场景下高出一个数量级。因此,可以直接由bal和bar判断出部分非冲突错误。由于不同场景下数据包的错误比特位置分布比例有明显不同,因此冲突与非冲突场景下的bdr也分布在不同的区域。所以最后由bdr与bdrn-max和bdrc-min比较,可判断剩余错包的错误原因。

图3的bdr数值分布示意图可见:冲突场景下-1≤bdr<bdrc-max;非冲突场景下bdrn-min<bder≤1;而bdrc-max≤bdr≤bdrn-min则属于错包类型无法判断情况。

如图4所示,一种基于生成域的数据包错误检测装置,包括:依次连接数据接收模块100、数据后处理模块200及错误判断模块300,其中,数据接收模块100用于接收插入有生成域块的数据包;数据后处理模块200用于检测插入有生成域块的数据包中前生成域块的平均误码率和后生成域的平均误码率;错误判断模块300用于根据后生成域的平均误码率及前后生成域的平均误码率差值确定数据包错误类型。

本发明提供的数据包错误检测装置,数据接收模块接收在数据前部分和后部分插入有生成域块的数据,生成域块为位置已经和内容已知代码,数据后处理模块通过比对接收后数据中生成域块代码和生成域块原始代码,获得前后生成域块平均误码率和前后生成域块中平均误码率的比特差值比,错误判断模块根据这两个量确定数据传输过程中错误类型,实现错误类型的判断。

如图5所示,一种基于生成域的数据包错误检测装置,除了包括依次连接数据接收模块100、数据后处理模块200及错误判断模块300,还包括依次连接的数据前处理模块400和数据发送模块500;数据前处理模块400用于在未传输的数据包的前后区域均插入生成域块,数据发送模块500用于发送插入有生成域块的数据包。

实验实例:

使用ti(texasinstruments)公司cc2530芯片作为无线传感器节点的核心芯片,模拟冲突和非冲突场景下的数据包传输。编码率0.95、0.9、0.85、0.8、0.75、0.7对应生成域块数为4、8、12、16、20、26,每一个生成域块的大小为1byte,插入生成域后的整个数据包大小为86bytes。

实验中设置bar-max为0.12,bdrn-max和bdrc-min分别为0.35和0.5,实例验证数据结果如表1所示。在非冲突情况下,编码率下降,生成域块数增加,由bdr得到的正确率提高,总的正确率能达到97.5%以上;在非冲突情况下,随着编码率下降,生成域块数增加,错误率下降。若将无法判断也归入非冲突错误,那么即使在编码率高达95%的情况下,生成域检测的正确率仍能达到92.8%。

表1实例验证数据结果

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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