一种分包发送数据同步头设定方法及排序方法与流程

文档序号:11253687阅读:800来源:国知局
一种分包发送数据同步头设定方法及排序方法与流程

本发明涉及数据通信领域,特别涉及一种分包发送数据同步头设定方法及排序方法。



背景技术:

数据通信领域,通常数据需要分包发送,而分包发送的数据自发送端经过不同传输通道到达接收端时,其顺序会不可避免的发生乱序,此时需要在接收端根据每个数据包同步头中的同步信息解码出各个包的原始位置;图1中给出典型数据分包发送时的典型示意图;在典型发送方式中,采用如下方法对添加同步头信息,发送第一个数据包时,为其添加的同步头为0(忽略同步头信息的加密方式),之后为每个依次发送的数据包添加同步头时,其同步头大小为前一次发送的数据包同步头值+前一次发送的数据包的数据段长度;即,这种情况下,每个数据包的同步头中的数据不仅表征着数据包的发送顺序,还表征着相应数据包之前发送的数据的总长度;但是随着数据持续不断的发送,包含发送数据总长度信息的同步头数据不断增长,而同步头所占比特位数则是固定的。这种情况下,假设位数固定的同步头所能表示最大数据长度为n,那么当累加发送的数据的长度m>n时,同步头由于位数限制(发生溢出),就不能完整表示,而只能表示为m-kn,同时,我们知道0<m-kn<n;但是,在这种情况下,对于接收端来说,如何从这样的同步头当中得到正确的发送顺序变的十分困难。



技术实现要素:

本发明的目的在于克服现有技术中由于发送数据过长,而同步头位数有限,导致数据溢出,不能全部表示的问题,提供一种新的同步头设定方法。

为了实现上述发明目的,本发明提供了以下技术方案:

一种分包发送数据同步头设定方法,根据数据发送速率clk、系统预设允许时延t以及分包发送数据包长度大小g来设定同步头位数l,具体为,l>1+log2(t×clk+1);

同时,将所发送数据每2l长的数据设定为一虚拟数据包段,每个所述虚拟数据包段包含n个数据包个数据包;在每个虚拟数据包段内,从0开始依次为顺序发送的数据包同步头赋值,该值为同一虚拟数据包段内已发送数据的长度;则,在同一虚拟数据包段内,最后一个数据包的同步头的数值也不会超过2l,从而不会发生溢出现象。同样的,由于虚拟数据包段的长度是根据允许时延t和发送速率clk来同时确定的,因此,在允许时延t、发送速率clk下发送的数据,只要其在接收端满足允许时延的要求(在允许时延范围内收到),则不可能同时出现两个同步头值相同,但是却分别属于不同虚拟数据包段的数据包(因为,如果出现两个同步头值相同,却分别属于不同虚拟数据包段的数据包,则属于靠前一个虚拟数据包段的该数据包一定超过了允许时延,会被视为超时无效包丢弃)。

进一步的,在虚拟数据包段长度范围(0,2l-1)中设立至少两个阈值r、s,r、s为g的整数倍;应注意的是,每个虚拟数据包的范围是[0,2l-1],其长度刚好是2l,考虑到两个阈值不应该取虚拟数据包两个端点的端值,因此,两个阈值的取值范围是(0,2l-1);且同时,2l-2≤r≤2l-1-1,2l-1≤s≤2l-2+2l-1-1。那么此时|s-r|≥2l-1,此时允许时延的容忍范围是即,系统设置的t在此范围时,可以实现相应功能。

而在一些实施例中,同步头位数l的取值为l>2+log2(t×clk)。

进一步的,在虚拟数据包段长度范围(0,2l-1)中设立至少两个阈值r、s,r、s为g的整数倍;且同时,此时,|s-r|<2l-1,此时允许时延的容忍范围是即,系统设置的t在此范围时,可以实现相应功能。

优选情况下,阈值r与离自己较近的虚拟数据包段边沿的距离为第一距离;阈值s与离自己较近的虚拟数据包段边沿的距离为第二距离;第一距离与第二距离相等。

优选的,采用加密算法对同步头数据进行加密。

本发明同时提供一种对应用如上所述的同步头设定方法发送的数据进行排序的方法,

在虚拟数据包段长度范围(0,2l-1)中设立至少两个阈值r、s,r<s,且r、s为g的整数倍;

判断相邻接收到的第一数据、第二数据接收时间是否超过允许时延t;如果任一个数据超出了允许时延,则其为超时无效包,系统会自动丢弃;顺序递补下一未超过允许时延的数据进行对比排序。

如第一数据、第二数据均未超过允许时延t,则判断该两个数据的相对顺序,具体包含如下步骤:

提取第一数据同步头a和第二数据同步头b;判断a和b在虚拟数据包段中的位置;如果a处于[0,r]之间,b处于(s,2l-1]之间,则判定第一数据晚于第二数据;如果b处于[0,r]之间,a处于(s,2l-1]之间,则判定第一数据早于第二数据。

这是由于,在按照如上所述的方法对数据包同步头进行赋值时,在允许时延t内,不可能出现位于同一虚拟数据包段分别位于[0,r]、(s,2l-1]内的两个数据同时满足时延要求的情况,即,只要两个相邻数据同时满足允许时延的要求,而该两个数据的同步头又分别处于[0,r]、(s,2l-1]内时,则两个数据必然是分别属于相邻的两个虚拟数据包段内,且其中的同步头在[0,r]内的数据属于靠后的虚拟数据包段,同步头在(s,2l-1]内的数据属于靠前的虚拟数据包段。

进一步的,如果a、b同时处于[0,r]、(r,s]和(s,2l-1]三个范围中的任意一个时,在两个数据都满足允许时延要求的前提下,则两个数据必然属于同一虚拟数据包段内,因此,如果a<b,则判断第一数据早于第二数据,否则第一数据晚于第二数据。

进一步的,如果a处于[0,r]内,b处于(r,s]内时,或,b处于[0,r]内,a处于(r,s]内;在两个数据都满足允许时延要求的前提下,则两个数据必然属于同一虚拟数据包段内,因此,如果a处于[0,r]内,b处于(r,s]内时,认为第一数据早于第二数据;如果b处于[0,r]内,a处于(r,s]内时,则认为第一数据晚于第二数据。

进一步的,如果a处于(r,s]内,b处于(s,2l-1]内或,b处于(s,2l-1]内,a处于(r,s]内时,在两个数据都满足允许时延要求的前提下,则两个数据必然属于同一虚拟数据包段内,如果a处于(r,s]内,b处于(s,2l-1]内时,则认为第一数据早于第二数据;如果b处于(s,2l-1]内,a处于(r,s]内时,则认为第一数据晚于第二数据。

同样的,如果a=b,同时,两个数据同时满足允许时延要求,则这两个数据不可能属于不同的虚拟数据包段(假如两个数据分别属于不同的虚拟数据包段,则其中一个必然超出允许时延,会被视为无效包丢弃),因此这两个数据是相同数据,其中一个被认定为重复包,从而丢弃。

与现有技术相比,本发明的有益效果:本文介绍了一种针对不同传输渠道引起的数据包乱序的帧同步方法。本发明通过根据允许时延和系统发送速率值设置一个虚拟数据包段,并在该虚拟数据包段内的指定位置设置两个阈值,当相邻数据包均在允许时延内到达时,通过一种简单的判别方式判断该相邻数据包的发送顺序。

附图说明:

图1为分包数据发送接收示意图。

图2为本发明中虚拟数据包段以及阈值分布示意图。

图3为实施例1中两个阈值位置设置示意图。

图4为实施例2中两个阈值位置设置示意图。

图5a至图5e为实际应用时判断示例。

图6a、图6b为实际应用时不可能出现场景举例。

具体实施方式

下面结合附图及具体实施例对本发明作进一步的详细描述。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。

实施例1:如图2所示,本实施例提供一种分包发送数据同步头设定方法,根据数据发送速率clk、系统预设允许时延t以及分包发送数据包长度大小g来设定同步头位数l,具体为,l>1+log2(t×clk+1);

同时,将所发送数据每2l长的数据设定为一虚拟数据包段,每个所述虚拟数据包段包含n个数据包个数据包;在每个虚拟数据包段内,从0开始依次为顺序发送的数据包同步头赋值,该值为同一虚拟数据包段内已发送数据的长度;则,在同一虚拟数据包段内,最后一个数据包的同步头的数值也不会超过2l,从而不会发生溢出现象。同样的,由于虚拟数据包段的长度是根据允许时延t和发送速率clk来同时确定的,因此,在允许时延t、发送速率clk下发送的数据,只要其在接收端满足允许时延的要求(在允许时延范围内收到),则不可能同时出现两个同步头值相同,但是却分别属于不同虚拟数据包段的数据包(因为,如果出现两个同步头值相同,却分别属于不同虚拟数据包段的数据包,则属于靠前一个虚拟数据包段的该数据包一定超过了允许时延,会被视为超时无效包丢弃),即不可能出现如图6a、图6b所示的情况出现,或者说,当出现相邻数据为图6a或者图6b的情形时,靠前的数据包必然是超时包。

本实施例中,在虚拟数据包段长度范围(0,2l-1)中设立至少两个阈值r、s,r、s为g的整数倍;且同时如图3所示,2l-2≤r≤2l-1-1,2l-1≤s≤2l-2+2l-1-1。那么此时|s-r|≥2l-1,此时允许时延的容忍范围是即,系统设置的t在此范围时,可以采用实施例3所提供方法判断相邻数据包的前后顺序,当允许时延超过这一范围时,不能按照实施例3提供方法对数据包前后顺序进行判断,因为允许时延超过这一范围时,有可能出现图6a或者图6b所示的情况出现,且由于允许时延过长,在前的数据包不被视为超时包而保留,从而对判断造成混淆。

阈值r与离自己较近的虚拟数据包段边沿的距离为第一距离;阈值s与离自己较近的虚拟数据包段边沿的距离为第二距离;优选情况下,第一距离与第二距离相等。

实施例2:本实施例中,同步头位数l的取值为l>2+log2(t×clk)。在虚拟数据包段长度范围[0,2l-1]中设立至少两个阈值r、s,r、s为g的整数倍;且同时,如图4所示,此时,|s-r|<2l-1,此时允许时延的容忍范围是即,系统设置的t在此范围时,可以实现相应功能;符号为向下取整;符号为向上取整。

阈值r与离自己较近的虚拟数据包段边沿的距离为第一距离;阈值s与离自己较近的虚拟数据包段边沿的距离为第二距离;优选情况下,第一距离与第二距离相等。

优选的,采用加密算法对同步头数据进行加密。

实施例3:本发明同时提供一种对应用如实施例1或实施例2所提供的同步头设定方法发送的数据进行排序的方法,

在虚拟数据包段长度范围(0,2l-1)中设立至少两个阈值r、s,r<s,且r、s为g的整数倍;判断相邻接收到的第一数据、第二数据接收时间是否超过允许时延t;如果任一个数据超出了允许时延,则其为超时无效包,系统会自动丢弃;顺序递补下一未超过允许时延的数据进行对比排序。

如第一数据、第二数据均未超过允许时延t,则判断该两个数据的相对顺序,具体包含如下步骤:

提取第一数据同步头a和第二数据同步头b;判断a和b在虚拟数据包段中的位置;如图5e所示,如果a处于[0,r]之间,b处于(s,2l-1]之间,则判定第一数据晚于第二数据;如果b处于[0,r]之间,a处于(s,2l-1]之间,则判定第一数据早于第二数据。

这是由于,在按照如上所述的方法对数据包同步头进行赋值时,在允许时延t内,不可能出现位于同一虚拟数据包段分别位于[0,r]、(s,2l-1]内的两个数据同时满足时延要求的情况,即,只要两个相邻数据同时满足允许时延的要求,而该两个数据的同步头又分别处于[0,r]、(s,2l-1]内时,则两个数据必然是分别属于相邻的两个虚拟数据包段内,且其中的同步头在[0,r]内的数据属于靠后的虚拟数据包段,同步头在(s,2l-1]内的数据属于靠前的虚拟数据包段。

进一步的,如图5a、图5b所示,如果a、b同时处于[0,r]、(r,s]和(s,2l-1]三个范围中的任意一个时,在两个数据都满足允许时延要求的前提下,则两个数据必然属于同一虚拟数据包段内,因此,如果a<b,则判断第一数据早于第二数据,否则第一数据晚于第二数据。进一步的,如图5c所示,如果a处于[0,r]内,b处于(r,s]内时,或,b处于[0,r]内,a处于(r,s]内;在两个数据都满足允许时延要求的前提下,则两个数据必然属于同一虚拟数据包段内,因此,如果a处于[0,r]内,b处于(r,s]内时,认为第一数据早于第二数据;如果b处于[0,r]内,a处于(r,s]内时,则认为第一数据晚于第二数据。

进一步的,如图5d所示,如果a处于(r,s]内,b处于(s,2l-1]内或,b处于(s,2l-1]内,a处于(r,s]内时,在两个数据都满足允许时延要求的前提下,则两个数据必然属于同一虚拟数据包段内,如果a处于(r,s]内,b处于(s,2l-1]内时,则认为第一数据早于第二数据;如果b处于(s,2l-1]内,a处于(r,s]内时,则认为第一数据晚于第二数据。

同样的,如果a=b,同时,两个数据同时满足允许时延要求,则这两个数据不可能属于不同的虚拟数据包段(假如两个数据分别属于不同的虚拟数据包段,则其中一个必然超出允许时延,会被视为无效包丢弃),因此这两个数据是相同数据,其中一个被认定为重复包,从而丢弃。

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