数据重传方法及装置
技术领域
本发明涉及通信领域,具体而言,涉及一种数据重传方法及装置。
背景技术
多播广播业务(Multicast Broadcast Service,简称MBS)是一种从一个数据源向多个目标传送数据的技术,能实现网络资源的共享,提高网络资源(尤其是空中接口资源)的利用率。随着互联网的普及和多媒体技术的发展,多媒体共享业务的应用越来越广,同时数据量也越来越大,高效地进行多播和广播业务传输对于下一代移动通信系统也变得非常重要。
在MBS中,数据源向多个目标传送数据的过程中由于信道噪声或干扰的因素,会出现数据在传输过程中丢失,或者接收的数据在检测时发现不能使用而被丢弃的情况。而对于某些MBS,接收端对数据接收的准确性和数量有较高的要求,因此数据源需要向目标重新传送一些数据来还原被丢弃的数据。MBS重传方法根据重传数据的产生方法不同,可以分为混合自动重传请求(Hybrid AutomaticRepeat Request,简称HARQ)和网络编码(Network Coding,简称为NC)等。
网络编码的概念是相对于传统的信息传输和路由机制来说的。在传统网络中传输的信息是不能叠加的,而网络中的路由器也主要是将传输的信息进行转发。网络编码是一种在网络节点对传输的信息进行编码处理(例如,异或运算等)的过程,其可以使传输的信息得到叠加,从而在单位时间内,可以增加传输信息量。
在通信系统中,MBS使用重传数据包可以还原传输中丢失、出错的原始数据包。MBS重传可以使用网络编码技术,该技术利用原始数据包产生首次传输数据包和重传数据包(或称为冗余包),并在接收端通过解出接收到的首次传输数据包和冗余包来得到原始数据包。相比对MBS重传每一个原始数据包,MBS重传使用网络编码技术可以减少重传数据包的数量,从而提高系统吞吐量。
在MBS重传中使用的网络编码技术的常用的方法是:对需要进行网络编码的多个数据包中的所有比特进行对齐后,逐位做异或运算。比如,数据包1包含的数据比特为011001,数据包2包含的数据比特为100101,把数据包1和数据包2用异或运算做网络编码,则得到的结果为111100。
在现有应用于MBS重传方法中的网络编码过程为了使接收端可以解出更多的原始数据包,并减少重传数据包的数量,接收端解出数据包的复杂度通常比较高,并且纠错性能的提升空间有限。
发明内容
针对相关技术中数据重传方法存在的在接收端解出数据包的复杂度高、纠错性能提升空间有限的问题而提出本发明,为此,本发明的主要目的在于提供一种数据重传方法及装置,以解决上述问题至少之一。
为了实现上述目的,根据本发明的一个方面,提供了一种数据重传方法。
根据本发明的数据重传方法包括:发送端进行网络编码得到编码后的数据,其中,编码后的数据包括K个首传数据包,根据K个按照发送的先后顺序排列的原始数据包P1,P2,...,PK生成K个首传数据包Q1,Q2,...,QK,当i小于等于预先设定的编码包数量N时, 当i大于编码包数量时, K为正整数,N为正整数且N<K,1=<i<=K;发送端将编码后的数据发送给接收端,以便接收端根据编码后的数据实现多媒体广播业务。
优选地,发送端进行网络编码得到编码后的数据之前,上述方法还包括:预先设定编码包数量。
优选地,编码包数量为2或3。
优选地,编码后的数据还包括M个冗余数据包,其中,通过对K个原始数据包进行线性运算生成M个冗余数据包QK+1,...,QK+M,M为正整数, 权值a1,a2,…,aK的值为0或1,1=<j<=M。
优选地,当j=1时,a1,a3,...,a2*func(K/2)-1的值为1,a1,a2,…,aK中除了a1,a3,...,a2*func(K/2)-1的值为0;当j≠1时,a2*(j-1),a2*(j-1)+2*(M-1),...,a2*(j-1)+2*(T-1)*(M-1)的值为1,a1,a2,…,aK中除了a2*(j-1),a2*(j-1)+2*(M-1),...,a2*(j-1)+2*(T-1)*(M-1)的值为0,其中,1=<M<=func2(K/2)+1,func(x)表示对x向上取整数、向下取整数或舍入取整数,func2(x)表示对x向下取整数,T为正整数,且满足(2*(j-1)+2*(T-1)*(M-1))≤K和(2*(j-1)+2*T*(M-1))>K。
优选地,通过对K个原始数据包进行线性运算生成M个冗余数据包QK+1,...,QK+M包括:确定生成冗余数据包QK+j的原始数据包的数量Sj;对Sj进行修正;根据Sj确定a1,a2,…,aK的值,并根据a1,a2,…,aK的值对K个原始数据包进行线性运算生成冗余数据包QK+j。
优选地,确定生成冗余数据包QK+j的原始数据包的数量Sj包括:当j=1时,确定Sj=func(K/2),当j≠1时,确定Sj=func1((K-func(K/2))/(M-1)),其中,1=<M<=func2(K/2)+1,func(x)表示对x向上取整数、向下取整数或舍入取整数,func1(x)表示对x向上取整数、向下取整数或舍入取整数,func2(x)表示对x向下取整数;对Sj进行修正包括:在(K-func(K/2))-func1((K-func(K/2))/(M-1))*(M-1)>0的情况下,将S2,...,SK+1+(K-func(K/2))-func1((K-func(K/2))/(M-1))*(M-1)的值加1;根据Sj确定a1,a2,…,aK的值包括:根据Sj和预定规则确定a1,a2,…,aK的值,其中,预定规则包括:当j=1时,确定从a1开始的Sj个奇数索引的权值a1,a3,...,a2*func(K/2)-1的值为1,a1,a2,…,aK中除了a1,a3,...,a2*func(K/2)-1的值为0,当j≠1时,确定a2*(i-1)的值为1,并将与a2*(i-1)的索引的间隔为2*(M-1)的整数倍的权值确定为1,直到确定了Sj个值为1的权值。
为了实现上述目的,根据本发明的另一方面,提供了一种数据重传装置。
根据本发明的数据重传装置包括:网络编码模块,用于进行网络编码得到编码后的数据,其中,编码后的数据包括K个首传数据包,根据K个按照发送的先后顺序排列的原始数据包P1,P2,...,PK生成K个首传数据包Q1,Q2,...,QK,当i小于等于预先设定的编码包数量N时, 当i大于编码包数量时, K为正整数,N为正整数且N<K,1=<i<=K;发送模块,用于将编码后的数据发送给接收端,以便接收端根据编码后的数据实现多媒体广播业务。
优选地,上述装置还包括:设置模块,用于预先设定编码包数量。
优选地,网络编码模块得到的编码后的数据还包括M个冗余数据包,其中,通过对K个原始数据包进行线性运算生成M个冗余数据包QK+1,...,QK+M,M为正整数, 权值a1,a2,…,aK的值为0或1,1=<j<=M。
通过本发明,采用当i小于等于预先设定的编码包数量N时, 否则, 的首传数据包生成方案,以及对原始数据包进行线性运算生成冗余数据包的方案,解决了现有技术中数据重传方法存在的在接收端解出数据包的复杂度高、纠错性能提升空间有限的问题,提升了纠错性能和系统的吞吐量,同时降低了接收端解出数据包的复杂度。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的数据重传方法的详细流程图;
图2是根据本发明实施例的数据重传方法的流程图;
图3是根据本发明实例1和实例4的通过数据重传方法产生首传包和冗余包的示意图;
图4是根据本发明实例2的通过数据重传方法产生首传包和冗余包的示意图;
图5是根据本发明实例3的通过数据重传方法产生首传包和冗余包的示意图;
图6是根据本发明实例5的通过数据重传方法产生首传包和冗余包的示意图;
图7是根据本发明实例6的通过数据重传方法产生首传包和冗余包的示意图;
图8是根据本发明实例7的通过数据重传方法产生首传包和冗余包的示意图;
图9是根据本发明实例8的通过数据重传方法产生首传包和冗余包的示意图;
图10是根据本发明实施例的数据重传装置的结构框图;
图11是根据本发明实施例的数据重传装置的详细结构框图。
具体实施方式
功能概述
考虑到现有技术中存在的问题,本发明实施例提供了一种数据重传方案,该方案的处理原则为:发送端进行网络编码得到编码后的数据,其中,编码后的数据包括K个首传数据包,根据K个按照发送的先后顺序排列的原始数据包P1,P2,...,PK生成K个首传数据包Q1,Q2,...,QK,当i小于等于预先设定的编码包数量N时, 当i大于编码包数量时, K为正整数,N为正整数且N<K,1=<i<=K;发送端将编码后的数据发送给接收端,以便接收端根据编码后的数据实现多媒体广播业务。上述方案提升了纠错性能和系统的吞吐量,同时降低了接收端解出数据包的复杂度。
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
方法实施例
根据本发明的实施例,提供了一种数据重传方法,该方法包括:发送端进行网络编码得到编码后的数据,其中,编码后的数据包括K个首传数据包,根据K个按照发送的先后顺序排列的原始数据包P1,P2,...,PK生成K个首传数据包Q1,Q2,...,QK,当i小于等于预先设定的编码包数量N时, 当i大于编码包数量时, K为正整数,N为正整数且N<K,1=<i<=K;发送端将编码后的数据发送给接收端,以便接收端根据编码后的数据实现多媒体广播业务。
图1是根据本发明实施例的数据重传方法的详细流程图,如图1所示,该方法包括如下的步骤S102至步骤S106:
步骤S102,预先设定编码包数量,优选地,编码包数量可以为2或3。
步骤S104,发送端进行网络编码得到编码后的数据,其中,编码后的数据包括K个首传数据包,根据K个按照发送的先后顺序排列的原始数据包P1,P2,...,PK生成K个首传数据包Q1,Q2,...,QK,当i小于等于预先设定的编码包数量N时, 当i大于编码包数量时, K为正整数,N为正整数且N<K,1=<i<=K。优选地,编码后的数据还包括M个冗余数据包,其中,通过对K个原始数据包进行线性运算生成M个冗余数据包QK+1,...,QK+M,M为正整数, 权值a1,a2,…,aK的值为0或1,1=<j<=M。
步骤S106,发送端将编码后的数据发送给接收端,以便接收端根据编码后的数据实现多媒体广播业务。
步骤S104中冗余数据包生成的具体实现过程一包括:当j=1时,a1,a3,...,a2*func(K/2)-1的值为1,a1,a2,…,aK中除了a1,a3,...,a2*func(K/2)-1的值为0;当j≠1时,a2*(j-1),a2*(j-1)+2*(M-1),...,a2*(j-1)+2*(T-1)*(M-1)的值为1,a1,a2,…,aK中除了a2*(j-1),a2*(j-1)+2*(M-1),...,a2*(j-1)+2*(T-1)*(M-1)的值为0,其中,1=<M<=func2(K/2)+1,func(x)表示对x向上取整数、向下取整数或舍入取整数,func2(x)表示对x向下取整数,T为正整数,且满足(2*(j-1)+2*(T-1)*(M-1))≤K和(2*(j-1)+2*T*(M-1))>K。
步骤S104中冗余数据包生成的具体实现过程二包括:确定生成冗余数据包QK+j的原始数据包的数量Sj;对Sj进行修正;根据Sj确定a1,a2,…,aK的值,并根据a1,a2,…,aK的值对K个原始数据包进行线性运算生成冗余数据包QK+j。具体地,确定生成冗余数据包QK+j的原始数据包的数量Sj包括:当j=1时,确定Sj=func(K/2),当j≠1时,确定Sj=func1((K-func(K/2))/(M-1)),其中,1=<M<=func2(K/2)+1,func(x)表示对x向上取整数、向下取整数或舍入取整数,func1(x)表示对x向上取整数、向下取整数或舍入取整数,func2(x)表示对x向下取整数;对Sj进行修正包括:在(K-func(K/2))-func1((K-func(K/2))/(M-1))*(M-1)>0的情况下,将S2,...,SK+1+(K-func(K/2)-func1((K-func(K/2))/(M-1))*(M-1)的值加1;根据Sj确定a1,a2,…,aK的值包括:根据Sj和预定规则确定a1,a2,…,aK的值,其中,预定规则包括:当j=1时,确定从a1开始的Sj个奇数索引的权值a1,a3,...,a2*func(K/2)-1的值为1,a1,a2,…,aK中除了a1,a3,...,a2*func(K/2)-1的值为0,当j≠1时,确定a2*(i-1)的值为1,并将与a2*(i-1)的索引的间隔为2*(M-1)的整数倍的权值确定为1,直到确定了Sj个值为1的权值。在该过程中,func(x)和func1(x)所表示的运算可以不同,在上述具体实现过程二中的不同的算式中的func(x)所表示的运算需要一致(即,具体实现过程二中不同算式中的func(x)表示的运算相同),在具体实现过程二中的不同的算式中的func1(x)所表示的运算也需要一致。
下面将结合实例对本发明实施例的实现过程进行详细描述。
实施例一
假设有K个原始数据包(K是大于1的正整数)等待传输,并且用M个重传包(或称冗余包、冗余数据包)还原在传输过程中丢失的原始数据包,其中M是正整数,并且1≤M≤func2(K/2)+1,func2(x)表示对x向下取整数。
设K个原始数据包(简称原始包),按照先后顺序记为P1,P2,...,PK,其中,K是大于1的正整数;并且设通过方法实施例提供的方法得到的K个首传包为Q1,Q2,...,QK,而得到的M个冗余包为QK+1,QK+2,...,QK+M。这K个首传包和M个冗余包会在一个时间段(该时间段包含一个或多个调度周期)内被发送出去,接收端根据相关信令消息接收这些首传包和冗余包。
图2是根据本发明实施例的数据重传方法的流程图,如图2所示,根据本发明实施例一的数据重传方法包括:
1,对K个原始包进行异或运算,产生K个首传包。
一方面,产生首传包的步骤可以包括如下处理,该过程对应于编码包数量为2的情况:
(1)第1个首传包Q1就是原始包P1;
(2)第i个首传包Qi(1<i≤K)是用原始包Pi-1和原始包Pi做异或运算产生,即,按照该公式运算: i=2,…,K,其中,表示异或运算,即对两个包内的比特逐位做模2加运算。
另一方面,产生首传包的步骤可以包括如下处理,该过程对应于编码包数量为3的情况:
(1)第1个首传包Q1就是原始包P1;
(2)第2个首传包Q2是用原始包P1和原始包P2做异或运算产生,即,按照该公式运算:
(3)第i个首传包Qi(2<i≤K)是用原始包Pi-2、原始包Pi-1和原始包Pi做异或运算产生,即,按照该公式运算: i=3,…,K,其中,表示异或运算,即对两个包内的比特逐位做模2加运算。
2,对K个原始包进行线性运算,产生M个冗余包。该过程包括以下步骤:
首先,对于第1个冗余包QK+1,顺序取func(K/2)个编号为奇数的原始包P1,P3,...,P2*func(K/2)-1,做异或运算,以此产生第1个冗余包QK+1,其中func(x)表示对x向上取整数,或向下取整数,或舍入取整数;
其次,对于第2个冗余包QK+2至第M个冗余包QK+M之间的任意一个冗余包QK+i,其中1<i≤M,先指定其对应的第一个原始包为P2*(i-1),然后按索引编号从小到大,每间隔2*(M-1)个原始包,就指定一个原始包为冗余包QK+i对应的下一个原始包,即,冗余包QK+i对应的第j个原始包为P2*(i-1)+2*(j-2)*(M-1),其中j≥1,并且冗余包QK+i对应的第j个原始包P2*(i-1)+2*(j-1)*(M-1)的索引编号不能大于K,即(2*(i-1)+2*(j-1)*(M-1))≤K。因此对于冗余包QK+i,其对应的原始包依次为P2*(i-1),P2*(i-1)+2*(M-1),...,P2*(i-1)+2*(T-1)*(M-1),其中T为正整数,并且T要满足(2*(i-1)+2*(T-1)*(M-1))≤K和(2*(i-1)+2*T*(M-1))>K两个条件。
上述冗余数据包生成过程对应于步骤S104中冗余数据包生成的具体实现过程一。
通过该实施例提出的数据重传方法可以产生简单的首传包和冗余包,能够降低接收端解出数据包的复杂度和解出更多的丢失数据包。
下面将结合实例对本发明实施例一的实现过程进行详细描述。
实例1
以下利用该实例结合图3详细说明通过上述数据重传方法产生首传包和冗余包的过程。
设8个原始数据包(简称原始包),按照先后顺序记为P1,P2,...,P8;并且设通过实施例一的数据重传方法得到的8个首传包为Q1,Q2,...,Q8,得到的4个冗余包为Q9,Q10,Q11,Q12。这8个首传包和4个冗余包会在一个时间段(该时间段包含一个或多个调度周期)内被发送出去,接收端根据相关信令消息接收这些首传包和冗余包。
通过实施例一提供的数据重传方法产生首传包和冗余包的过程如下:
1,对8个原始包进行异或运算,产生8个首传包。产生首传包的步骤如下:
(1)第1个首传包Q1就是原始包P1;
(2)第i个首传包Qi(1<i≤8)是用原始包Pi-1和原始包Pi做异或运算产生,因此得到,
2,对8个原始包进行线性运算,产生4个冗余包。产生冗余包的步骤如下:
首先,对于第1个冗余包Q9,顺序取4个编号为奇数的原始包P1,P3,P5,P7,做异或运算,以此产生第1个冗余包Q9,即
其次,对于第2个冗余包Q10至第4个冗余包Q12之间的任意一个冗余包Q8+i,其中1<i≤4,先指定其对应的第一个原始包为P2*(i-1),然后按索引编号从小到大,每间隔6个原始包,就指定一个原始包为冗余包Q8+i对应的下一个原始包,即冗余包Q8+i对应的第j个原始包为P2*(i-1)+6*(j-1),其中j≥1,并且P2*(i-1)+6*(j-1)的索引编号不能大于8,即(2*(i-1)+6*(j-1))≤8。因此得到, Q11=P4,Q12=P6。
这样就产生了8个首传包Q1,Q2,...,Q8和4个冗余包Q9,Q10,Q11,Q12。
实例2
以下利用该实例结合图4详细说明通过上述数据重传方法产生首传包和冗余包的过程。
设13个原始数据包(简称原始包),按照先后顺序记为P1,P2,...,P13;并且设,通过实施例一的数据重传方法得到的13个首传包为Q1,Q2,...,Q13,而得到的5个冗余包为Q14,Q15,Q16,Q17,Q18。这13个首传包和5个冗余包会在一个时间段(该时间段包含一个或多个调度周期)内被发送出去,接收端根据相关信令消息接收这些首传包和冗余包。
通过实施例一提供的数据重传方法产生首传包和冗余包的过程如下:
1,对13个原始包进行异或运算,产生13个首传包。产生首传包的步骤如下:
(1)第1个首传包Q1就是原始包P1;
(2)第i个首传包Qi(1<i≤13)是用原始包Pi-1和原始包Pi做异或运算产生,因此得到,
2,对13个原始包进行线性运算,产生5个冗余包。产生冗余包的步骤如下:
首先,对于第1个冗余包Q14,顺序取7个编号为奇数的原始包P1,P3,P5,P7,P9,P11,P13做异或运算,以此产生第1个冗余包Q14,即
其次,对于第2个冗余包Q15至第5个冗余包Q18之间的任意一个冗余包Q13+i,其中1<i≤5,先指定其对应的第一个原始包为P2*(i-1),然后根据上面计算得到的每个冗余包对应的进行异或运算的原始包的数量(假设为T),按索引编号从小到大,每间隔8个原始包,就指定一个原始包为冗余包Q13+i对应的下一个原始包,即冗余包Q13+i对应的第j个原始包为P2*(i-1)+8*(j-1),其中j≥1,并且P2*(i-1)+8*(j-1)的索引编号不能大于13,即(2*(i-1)+8*(j-1))≤13。因此得到, Q17=P6,Q18=P8。
这样就产生了13个首传包Q1,Q2,...,Q13和5个冗余包Q14,Q15,Q16,Q17,Q18。
实例3
以下利用该实例结合图5详细说明通过上述数据重传方法产生首传包和冗余包的过程。
设13个原始数据包(简称原始包),按照先后顺序记为P1,P2,...,P13;并且设,通过实施例一的数据重传方法得到的13个首传包为Q1,Q2,...,Q13,而得到的5个冗余包为Q14,Q15,Q16,Q17,Q18。这13个首传包和5个冗余包会在一个时间段(该时间段包含一个或多个调度周期)内被发送出去,接收端根据相关信令消息接收这些首传包和冗余包。
通过实施例一提供的数据重传方法产生首传包和冗余包的过程如下:
1,对13个原始包进行异或运算,产生13个首传包。产生首传包的步骤如下:
(1)第1个首传包Q1就是原始包P1;
(2)第2个首传包Q2是用原始包P1和原始包P2做异或运算产生,即按照下面公式运算:
(3)第i个首传包Qi(2<i≤13)是用原始包Pi-2、原始包Pi-1和原始包Pi做异或运算产生,即按照下面公式运算:
i=3,…,13
因此得到,
2,对13个原始包进行线性运算,产生5个冗余包。产生冗余包的步骤如下:
首先,对于第1个冗余包Q14,顺序取7个编号为奇数的原始包P1,P3,P5,P7,P9,P11,P13做异或运算,以此产生第1个冗余包Q14,即
其次,对于第2个冗余包Q15至第5个冗余包Q18之间的任意一个冗余包Q13+i,其中1<i≤5,先指定其对应的第一个原始包为P2*(i-1),然后根据上面计算得到的每个冗余包对应的进行异或运算的原始包的数量(假设为T),按索引编号从小到大,每间隔8个原始包,就指定一个原始包为冗余包Q13+i对应的下一个原始包,即冗余包Q13+i对应的第j个原始包为P2*(i-1)+8*(j-1),其中j≥1,并且P2*(i-1)+8*(j-1)的索引编号不能大于13,即(2*(i-1)+8*(j-1))≤13。因此得到, Q17=P6,Q18=P8。
这样就产生了13个首传包Q1,Q2,...,Q13和5个冗余包Q14,Q15,Q16,Q17,Q18。
实施例二
假设有K个原始数据包(K是大于1的正整数)等待传输,并且用M个重传包(或称冗余包、冗余数据包)还原在传输过程中丢失的原始数据包,其中M是正整数,并且1≤M≤func2(K/2)+1,func2(x)表示向下取整数。
设K个原始数据包(简称原始包),按照先后顺序记为P1,P2,...,PK,其中,K是大于1的正整数;并且设通过方法实施例提供的方法得到的K个首传包为Q1,Q2,...,QK,而得到的M个冗余包为QK+1,QK+2,...,QK+M。这K个首传包和M个冗余包会在一个时间段(该时间段包含一个或多个调度周期)内被发送出去,接收端根据相关信令消息接收这些首传包和冗余包。
图2是根据本发明实施例的数据重传方法的流程图,如图2所示,根据本发明实施例二的数据重传方法包括:
1,对K个原始包进行异或运算,产生K个首传包。
一方面,产生首传包的步骤可以包括如下处理,该过程对应于编码包数量为2的情况:
(1)第1个首传包Q1就是原始包P1;
(2)第i个首传包Qi(1<i≤K)是用原始包Pi-1和原始包Pi做异或运算产生,即,按照下面公式运算: i=2,…,K,其中,表示异或运算,即对两个包内的比特逐位做模2加运算。
另一方面,产生首传包的步骤可以包括如下处理,该过程对应于编码包数量为3的情况:
(1)第1个首传包Q1就是原始包P1;
(2)第2个首传包Q2是用原始包P1和原始包P2做异或运算产生,即,按照下面公式运算:
(3)第i个首传包Qi(2<i≤K)是用原始包Pi-2、原始包Pi-1和原始包Pi做异或运算产生,即,按照下面公式运算: i=3,…,K,其中,表示异或运算,即对两个包内的比特逐位做模2加运算。
2,对K个原始包进行线性运算,产生M个冗余包。该过程包括以下步骤:
(1)确定每个冗余包对应的进行异或运算的原始包的数量:
首先,对于第1个冗余包QK+1,其对应的原始包的数量为func(K/2),其中func(x)表示对x向上取整数,或向下取整数,或舍入取整数;
其次,对于第2个冗余包QK+2至第M个冗余包QK+M,先指定这其中的每一个冗余包分别对应func1((K-func(K/2))/(M-1))个原始包,其中func1(x)表示对x向上取整数,或向下取整数,或舍入取整数,然后对于剩余的没有冗余包对应的(K-func(K/2))-func1((K-func(K/2))/(M-1))*(M-1)个原始包,依次为第2个冗余包QK+2至第1+(K-func(K/2))-func1((K-func(K/2))/(M-1))*(M-1)个冗余包QK+1+(K-func(K/2))-func1((K-func(K/2))/(M-1))*(M-1)各增加1个对应的原始包。即,第2个冗余包QK+2至第1+(K-func(K/2))-func1((K-func(K/2))/(M-1))*(M-1)个冗余包QK+1+(K-func(K/2))-func1((K-func(K/2))/(M-1))*(M-1)各对应的原始包的数量为func1((K-func(K/2))/(M-1))+1,而第2+(K-func(K/2))-func1((K-func(K/2))/(M-1))*(M-1)个冗余包QK+2+(K-func(K/2))-func1((K-func(K/2))/(M-1))*(M-1)至第M个冗余包QK+M各对应的原始包的数量为func1((K-func(K/2))/(M-1))。在这里,func(x)和func1(x)的对x的取整数方向可以相同,也可以不同。即,两者可同时对x向上取整数,或向下取整数,或舍入取整数;或者其中一个对x向上取整数,而另外一个对x向下取整数,或舍入取整数;或者其中一个对x向下取整数,而另外一个对x向上取整数,或舍入取整数;或者其中一个对x舍入取整数,而另外一个对x向上取整数,或向下取整数。
(2)根据每个冗余包对应的原始包的数量,按照以下规则,指定某些原始包做异或运算产生各个冗余包。规则如下:
首先,对于第1个冗余包QK+1,由于其对应func(K/2)个原始包,因此顺序取func(K/2)个编号为奇数的原始包P1,P3,...,P2*func(K/2)-1,做异或运算,以此产生第1个冗余包QK+1;
其次,对于第2个冗余包QK+2至第M个冗余包QK+M之间的任意一个冗余包QK+i,其中1<i≤M,先指定其对应的第一个原始包为P2*(i-1),然后根据上面计算得到的每个冗余包对应的原始包的数量(假设为T),按索引编号从小到大,每间隔2*(M-1)个原始包,就指定一个原始包为冗余包QK+i对应的下一个原始包,其对应的原始包依次为P2*(i-1),P2*(i-1)+2*(M-1),...,P2*(i-1)+2*(T-1)*(M-1)。
上述冗余数据包生成过程对应于步骤S104中冗余数据包生成的具体实现过程二。
通过该实施例提出的数据重传方法可以产生简单的首传包和冗余包,能够降低接收端解出数据包的复杂度和解出更多的丢失数据包。
下面将结合实例对本发明实施例二的实现过程进行详细描述。
实例4
以下利用该实例结合图3详细说明通过上述数据重传方法产生首传包和冗余包的过程。
设8个原始数据包(简称原始包),按照先后顺序记为P1,P2,...,P8;并且设通过实施例二的数据重传方法得到的8个首传包为Q1,Q2,...,Q8,而得到的4个冗余包为Q9,Q10,Q11,Q12。这8个首传包和4个冗余包会在一个时间段(该时间段包含一个或多个调度周期)内被发送出去,接收端根据相关信令消息接收这些首传包和冗余包。
通过实施例二提供的数据重传方法产生首传包和冗余包的过程如下:
1,对8个原始包进行异或运算,产生8个首传包。产生首传包的步骤如下:
(1)第1个首传包Q1就是原始包P1;
(2)第i个首传包Qi(1<i≤8)是用原始包Pi-1和原始包Pi做异或运算产生,因此得到,
2,对8个原始包进行线性运算,产生4个冗余包。产生冗余包的步骤如下:
(1)确定每个冗余包对应的进行异或运算的原始包的数量:
首先,对于第1个冗余包Q9,其中对应的原始包的数量为4;
其次,对于第2个冗余包Q10至第4个冗余包Q12,先指定这其中的每一个冗余包分别对应1个原始包,然后对于剩余没有冗余包对应的1个原始包,为第2个冗余包Q10增加一个1个对应的原始包。即,第2个冗余包Q10对应的原始包的数量为2,而第3个冗余包Q11至第4个冗余包Q12各对应的原始包的数量为1。
(2)根据每个冗余包对应的原始包的数量,按照以下规则,指定对某些原始包做异或运算产生各个冗余包。规则如下:
首先,对于第1个冗余包Q9,由于其对应4个原始包,因此顺序取4个编号为奇数的原始包P1,P3,P5,P7,做异或运算,以此产生第1个冗余包Q9,即
其次,对于第2个冗余包Q10至第4个冗余包Q12之间的任意一个冗余包Q8+i,其中1<i≤4,先指定其对应的第一个原始包为P2*(i-1),然后根据上面计算得到的每个冗余包对应的原始包的数量(假设为T),按索引编号从小到大,每间隔6个原始包,就指定一个原始包为冗余包Q8+i对应的下一个原始包,因此对于冗余包Q8+i,其对应的原始包依次为P2*(i-1),...,P2*(i-1)+6*(T-1)。则得到, Q11=P4,Q12=P6。
这样就产生了8个首传包Q1,Q2,...,Q8和4个冗余包Q9,Q10,Q11,Q12。
实施例三
假设有K个原始数据包(K是大于1的正整数)等待传输,并且用M个重传包(或称冗余包、冗余数据包)还原在传输过程中丢失的原始数据包,其中M是正整数。
设K个原始数据包(简称原始包),按照先后顺序记为P1,P2,...,PK,其中,K是大于1的正整数;并且设通过方法实施例提供的方法得到的K个首传包为Q1,Q2,...,QK,而得到的M个冗余包为QK+1,QK+2,...,QK+M。这K个首传包和M个冗余包会在一个时间段(该时间段包含一个或多个调度周期)内被发送出去,接收端根据相关信令消息接收这些首传包和冗余包。
图2是根据本发明实施例的数据重传方法的流程图,如图2所示,根据本发明实施例三的数据重传方法包括:
1,对K个原始包进行异或运算,产生K个首传包。
一方面,产生首传包的步骤可以包括如下处理,该过程对应于编码包数量为2的情况:
(1)第1个首传包Q1就是原始包P1;
(2)第i个首传包Qi(1<i≤K)是用原始包Pi-1和原始包Pi做异或运算产生,即,按照下面公式运算: i=2,…,K,其中,表示异或运算,即对两个包内的比特逐位做模2加运算。
另一方面,产生首传包的步骤可以包括如下处理,该过程对应于编码包数量为3的情况:
(1)第1个首传包Q1就是原始包P1;
(2)第2个首传包Q2是用原始包P1和原始包P2做异或运算产生,即,按照下面公式运算:
(3)第i个首传包Qi(2<i≤K)是用原始包Pi-2、原始包Pi-1和原始包Pi做异或运算产生,即,按照下面公式运算: i=3,…,K,其中,表示异或运算,即对两个包内的比特逐位做模2加运算。
2,对K个原始包进行线性运算,产生M个冗余包(M为正整数)。该过程包括以下步骤:
首先,对于第1个冗余包QK+1至第M个冗余包QK+M之间的任意一个冗余包QK+i,其中1≤i≤M,先找出一个正整数a,使得a*(a-1)/2小于i,并且(a+1)*a/2大于等于i,即,用数学公式表示如下:
a*(a-1)/2<i,并且(a+1)*a/2≥i
其次,对于上面所述的冗余包QK+i,其中1≤i≤M,再指定其对应的第一个原始包为Pi-a*(a-1)/2,然后按索引编号从小到大,每间隔a+1个原始包,就指定一个原始包为冗余包QK+i对应的下一个原始包,即冗余包QK+i对应的第j个原始包为Pi-a*(a-1)/2+(j-1)*(a+1),其中j≥1,并且冗余包QK+i对应的第j个原始包Pi-a*(a-1)/2+(j-1)*(a+1)的索引编号不能大于K,即(i-a*(a-1)/2+(j-1)*(a+1))≤K。因此对于冗余包QK+i,其对应的原始包依次为Pi-a*(a-1)/2,Pi-a*(a-1)/2+(a+1),...,Pi-a*(a-1)/2+(T-1)*(a+1),其中T为正整数,并且T要使(i-a*(a-1)/2+(T-1)*(a+1))≤K,和(i-a*(a-1)/2+T*(a+1))>K。
通过该实施例提出的数据重传方法可以产生简单的首传包和冗余包,能够降低接收端解出数据包的复杂度和解出更多的丢失数据包。
下面将结合实例对本发明实施例三的实现过程进行详细描述。
实例5
以下利用该实例结合图6详细说明通过上述数据重传方法产生首传包和冗余包的过程。
设15个原始数据包(简称原始包),按照先后顺序记为P1,P2,...,P15;并且设通过实施例三的数据重传方法得到的15个首传包为Q1,Q2,...,Q15,而得到的10个冗余包为Q16,Q17,...,Q25。这15个首传包和10个冗余包会在一个时间段(该时间段包含一个或多个调度周期)内被发送出去,接收端根据相关信令消息接收这些首传包和冗余包。
通过实施例三提供的数据重传方法产生首传包和冗余包的过程如下:
1,对15个原始包进行异或运算,产生15个首传包。产生首传包的步骤如下:
(1)第1个首传包Q1就是原始包P1;
(2)第i个首传包Qi(1<i ≤15)是用原始包Pi-1和原始包Pi做异或运算产生,因此得到,
2,对15个原始包进行线性运算,产生10个冗余包。产生冗余包的步骤如下:
首先,对于第1个冗余包Q16至第10个冗余包Q25之间的任意一个冗余包Q15+i,其中1≤i≤10,先找出一个正整数a,使得a*(a-1)/2小于i,并且(a+1)*a/2大于等于i,即,用数学公式表示如下:
a*(a-1)/2<i,并且(a+1)*a/2≥i
其次,对于上面所述的冗余包QK+i,其中1≤i≤10,再指定其对应的第一个原始包为Pi-a*(a-1)/2,然后按索引编号从小到大,每间隔a+1个原始包,就指定一个原始包为冗余包QK+i对应的下一个原始包,即冗余包QK+i对应的第j个原始包为Pi-a*(a-1)/2+(j-1)*(a+1),其中j≥1,并且冗余包QK+i对应的第j个原始包Pi-a*(a-1)/2+(j-1)*(a+1)的索引编号不能大于15,即(i-a*(a-1)/2+(j-1)*(a+1))≤15。因此对于冗余包Q15+i,其对应的原始包依次为Pi-a*(a-1)/2,Pi-a*(a-1)/2+(a+1),...,Pi-a*(a-1)/2+(T-1)*(a+1),其中T为正整数,并且T要使(i-a*(a-1)/2+(T-1)*(a+1))≤15,和(i-a*(a-1)/2+T*(a+1))>15。于是,得到的10个冗余包为
这样就产生了15个首传包Q1,Q2,...,Q15和10个冗余包Q16,Q17,...,Q25。
实例6
以下利用该实例结合图7详细说明通过上述数据重传方法产生首传包和冗余包的过程。
设15个原始数据包(简称原始包),按照先后顺序记为P1,P2,...,P15;并且设通过实施例三的数据重传方法得到的15个首传包为Q1,Q2,...,Q15,而得到的10个冗余包为Q16,Q17,...,Q25。这15个首传包和10个冗余包会在一个时间段(该时间段包含一个或多个调度周期)内被发送出去,接收端根据相关信令消息接收这些首传包和冗余包。
通过实施例三提供的数据重传方法产生首传包和冗余包的过程如下:
1,对15个原始包进行异或运算,产生15个首传包。产生首传包的步骤如下:
(1)第1个首传包Q1就是原始包P1;
(2)第2个首传包Q2是用原始包P1和原始包P2做异或运算产生,即,按照下面公式运算:
(3)第i个首传包Qi(2<i≤15)是用原始包Pi-2、原始包Pi-1和原始包Pi做异或运算产生,即,按照下面公式运算: i=3,…,15,因此得到, 其中,表示异或运算,即对两个包内的比特逐位做模2加运算。
2,对15个原始包进行线性运算,产生10个冗余包。产生冗余包的步骤如下:
首先,对于第1个冗余包Q16至第10个冗余包Q25之间的任意一个冗余包Q15+i,其中1≤i≤10,先找出一个正整数a,使得a*(a-1)/2小于i,并且(a+1)*a/2大于等于i,即,用数学公式表示如下:
a*(a-1)/2<i,并且(a+1)*a/2≥i
其次,对于上面所述的冗余包QK+i,其中1≤i≤10,再指定其对应的第一个原始包为Pi-a*(a-1)/2,然后按索引编号从小到大,每间隔a+1个原始包,就指定一个原始包为冗余包QK+i对应的下一个原始包,即冗余包QK+i对应的第j个原始包为Pi-a*(a-1)/2+(j-1)*(a+1),其中j≥1,并且冗余包QK+i对应的第j个原始包Pi-a*(a-1)/2+(j-1)*(a+1)的索引编号不能大于15,即(i-a*(a-1)/2+(j-1)*(a+1))≤15。因此对于冗余包Q15+i,其对应的原始包依次为Pi-a*(a-1)/2,Pi-a*(a-1)/2+(a+1),...,Pi-a*(a-1)/2+(T-1)*(a+1),其中T为正整数,并且T要使(i-a*(a-1)/2+(T-1)*(a+1))≤15,和(i-a*(a-1)/2+T*(a+1))>15。于是,得到的10个冗余包为
这样就产生了15个首传包Q1,Q2,...,Q15和10个冗余包Q16,Q17,...,Q25。
实施例四
假设有K个原始数据包(K是大于1的正整数)等待传输,并且用M个重传包(或者冗余包)还原在传输过程中丢失的原始数据包,其中,M是正整数。
设K个原始数据包(简称原始包),按照先后顺序记为P1,P2,...,PK,其中,K是大于1的正整数;并且设通过方法实施例提供的方法得到的K个首传包为Q1,Q2,...,QK,而得到的M个冗余包为QK+1,QK+2,...,QK+M。这K个首传包和M个冗余包会在一个时间段(该时间段包含一个或多个调度周期)内被发送出去,接收端根据相关信令消息接收这些首传包和冗余包。
图2是根据本发明实施例的数据重传方法的流程图,如图2所示,根据本发明实施例二的数据重传方法包括:
1,对K个原始包进行异或运算,产生K个首传包。
一方面,产生首传包的步骤可以包括如下处理,该过程对应于编码包数量为2的情况:
(1)第1个首传包Q1就是原始包P1;
(2)第i个首传包Qi(1<i≤K)是用原始包Pi-1和原始包Pi做异或运算产生,即,按照下面公式运算: i=2,…,K,其中,表示异或运算,即对两个包内的比特逐位做模2加运算。
另一方面,产生首传包的步骤可以包括如下处理,该过程对应于编码包数量为3的情况:
(1)第1个首传包Q1就是原始包P1;
(2)第2个首传包Q2是用原始包P1和原始包P2做异或运算产生,即,按照下面公式运算:
(3)第i个首传包Qi(2<i≤K)是用原始包Pi-2、原始包Pi-1和原始包Pi做异或运算产生,即,按照下面公式运算: i=3,…,K,其中,表示异或运算,即对两个包内的比特逐位做模2加运算。
2,对K个原始包进行线性运算,产生M个冗余包(M为正整数)。该过程包括以下步骤:
首先,产生第1个冗余包QK+1至第U个冗余包QK+U(如果K大于50,U等于5;否则,U等于4):
(1)把K个原始包P1,P2,...,PK按顺序从小到大,依次放入到 这2U个组里。并且设组Ωn里包含的原始包的数量为ln,记作Ln=|Ωn|,其中n=0,1,...,2U-1,|x|表示组x中包含的数据包的数量。
(2)第1个冗余包QK+1至第U个冗余包QK+U用下面公式产生:
其中, 表示对属于组Y中的所有Xj做异或运算,nbin(m)表示整数n的二进制形式的数的第m位的数值,n=0,1,...,2U-1。则上面的公式可以描述为:对于所有整数n(n=0,1,...,2U-1)的二进制形式的数的第m位的数值是1的组Ωn,把这些组Ωn中的所有原始包Pj做异或运算,从而产生第m个冗余包QK+m,m=1,...,U。
对于上面步骤(1)中的ln,可以通过l′n用如下公式得到,n=0,1,...,2U-1:
其中l′n=|Ω′n|, 并且{Ω′n}是包括原始包和冗余包的组,定义如下,n=0,1,...,2U-1:
l′n,可以通过以下两种方式获得,n=0,1,...,2U-1:
1)如果K=25,50,75,或100,则l′n和Ω′n可以通过表1获得:
表1用以产生前U个冗余包的码表
K |
T |
U |
{l′n:l′n=|Ω′n|,n=0,1,...,2U-1} |
100 |
37 |
5 |
{3 3 6 6 3 6 3 3 1 5 3 3 1 3 1 1 1 5 3 32 3 1 1 0 3 1 1 0 2 0 0 1} |
75 |
37 |
5 |
{5 6 6 3 6 3 3 1 6 3 3 1 3 1 1 1 5 3 3 23 2 1 0 3 1 2 0 2 0 0 1} |
50 |
37 |
4 |
{0 6 6 4 6 4 3 2 6 3 3 2 4 2 2 1}; |
25 |
37 |
4 |
{0 3 3 2 3 2 2 1 3 2 2 1 2 1 1 1} |
其中T为常数,T=37。
2)如果K为不等于25,50,75,或100的其他不大于100的正整数,则l′n和Ω′n可以通过下面步骤得到:
A.在25,50,75,100四个数中,找到大于K的、最小的一个数,记作K*;
B.用K*在上表1中找出对应的{l′n:l′n=|Ω′n|,n=0,1,...,2U-1}(简记为{l′n}),然后在{l′n}中找出最大的l′n,并使l′n=l′n-1;如果在{l′n}中有几个l′n同样都是最大的值,则根据这几个整数n的二进制形式的数中包含的1的个数依次递增的顺序,使l′n=l′n-1;如果这几个整数n中有若干个整数的二进制形式的数中包含的1的个数相同,则按照这若干个整数的大小,使对应的l′n=l′n-1。再对其他的整数n(n∈{0,1,...,2U-1})二进制形式的数中包含的1的个数依次递增的顺序,使对应的l′n=l′n-1,重复这样的做法直到
其次,对于第i个冗余包QK+i,i>U,用如下产生方式可以得到:
假设整数a和整数b满足,a≥2,0≤b≤a-2,并使得 则冗余包QK+i是用所有的满足mod(j,a)=b的Pj做异或运算产生,其中j∈{1,2,...,K},mod(x,y)表示整数x对y做取模运算。
通过该实施例提出的数据重传方法可以产生简单的首传包和冗余包,能够降低接收端解出数据包的复杂度和解出更多的丢失数据包。
下面将结合实例对本发明实施例四的实现过程进行详细描述。
实例7
以下利用该实例结合图8详细说明通过上述数据重传方法产生首传包和冗余包的过程。
设15个原始数据包(简称原始包),按照先后顺序记为P1,P2,...,P15;并且设通过实施例四的数据重传方法得到的15个首传包为Q1,Q2,...,Q15,而得到的10个冗余包为Q16,Q17,...,Q25。这15个首传包和10个冗余包会在一个时间段(该时间段包含一个或多个调度周期)内被发送出去,接收端根据相关信令消息接收这些首传包和冗余包。
通过实施例四提供的数据重传方法产生首传包和冗余包的过程如下:
1,对15个原始包进行异或运算,产生15个首传包。产生首传包的步骤如下:
(1)第1个首传包Q1就是原始包P1;
(2)第i个首传包Qi(1<i≤15)是用原始包Pi-1和原始包Pi做异或运算产生,因此得到,
2,对15个原始包进行线性运算,产生10个冗余包。产生冗余包的步骤如下:
首先,对于第1个冗余包Q16至第4个冗余包Q19用如下方式产生:
(1)把K个原始包P1,P2,...,P15按顺序从小到大,依次放入到Ω0,Ω1,...,Ω15这16个组里。并且设组Ωn里包含的原始包的数量为ln,记作ln=|Ωn|,其中n=0,1,...,2U-1,|x|表示组x中包含的数据包的数量。
(2)第1个冗余包Q16至第4个冗余包Q19用下面公式产生如下:
其中, 表示属于组Y中的所有Xj做异或运算,nbin(m)表示整数n的二进制形式的数的第m位的数值,n=0,1,...,15。则上面的公式可以用文字描述为:对于所有整数n(n=0,1,...,15)的二进制形式的数的第m位的数值是1的组Ωn,把这些组Ωn中的所有原始包Pj做异或运算,从而产生第m个冗余包Q15+m,m=1,...,4。
对于上面步骤(1)中的ln,可以通过l′n用如下公式得到,n=0,1,...,15:
其中l′n=|Ω′n|, 并且{Ω′n}是包括原始包和冗余包的组,定义如下,n=0,1,...,15:
由于K=15,因此l′n和Ω′n,n=0,1,...,15,可以通过下面步骤得到:
A.在25,50,75,100四个数中,找到大于15的、最小的一个数为25;
B.用25在上表1中找出对应的{l′n}为{0 3 3 2 3 2 2 1 3 2 2 1 2 11 1},n=0,1,...,15,然后在{l′n}中发现l′1,l′2,l′4,l′8这四个数是最大的值3,则因为这4个整数的二进制形式的数中包含的1的个数都是1,因此l′h=l′h-1,h=1,2,4,8,即l′1=l′2=l′4=l′8=2。由于现在 而 因此再对其他的整数n(n∈{0,1,...,15})二进制形式的数中包含的1的个数依次递增的顺序,使对应的l′n=l′n-1,发现l′3,l′5,l′6,l′9,l′10,l′12这6个整数的二进制形式的数中包含的1的个数都是2,因此l′h=l′h-1,h=3,5,6,9,10,12,即l′3=l′5=l′6=l′9=l′10=l′12=1。由于现在 因此{l′n}为{0 2 2 1 2 1 1 1 2 1 1 1 1 1 1 1},n=0,1,...,15。
从而由上所述,可得{ln}为{0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1},n=0,1,...,15。于是
其次,对于第i个冗余包QK+i,i>4,用如下产生方式可以得到:
假设整数a和整数b满足,a≥2,0≤b≤a-2,并使得 则冗余包Q15+i是用所有的满足mod(j,a)=b的Pj做异或运算产生,其中j∈{1,2,...,15},mod(x,y)表示整数x对y做取模运算。则
这样就产生了15个首传包Q1,Q2,...,Q15和10个冗余包Q16,Q17,...,Q25。
实例8
以下利用该实例结合图9详细说明通过上述数据重传方法产生首传包和冗余包的过程。
设15个原始数据包(简称原始包),按照先后顺序记为P1,P2,...,P15;并且设通过实施例四的数据重传方法得到的15个首传包为Q1,Q2,...,Q15,而得到的10个冗余包为Q16,Q17,...,Q25。
通过实施例四提供的数据重传方法产生首传包和冗余包的过程如下:
1,对15个原始包进行异或运算,产生15个首传包。产生首传包的步骤如下:
(1)第1个首传包Q1就是原始包P1;
(2)第2个首传包Q2是用原始包P1和原始包P2做异或运算产生,即按照下面公式运算:
(3)第i个首传包Qi(2<i≤15)是用原始包Pi-2、原始包Pi-1和原始包Pi做异或运算产生,即,按照下面公式运算: i=3,…,15,因此得到,
其中,表示异或运算,即对两个包内的比特逐位做模2加运算。
2,对15个原始包进行线性运算,产生10个冗余包。产生冗余包的步骤如下:
首先,对于第1个冗余包Q16至第4个冗余包Q19用如下方式产生:
(1)把K个原始包P1,P2,...,P15按顺序从小到大,依次放入到Ω0,Ω1,...,Ω15这16个组里。并且设组Ωn里包含的原始包的数量为ln,记作ln=|Ωn|,其中n=0,1,...,2U-1,|x|表示组x中包含的数据包的数量。
(2)第1个冗余包Q16至第4个冗余包Q19用下面公式产生:
其中,表示属于组Y中的所有Xj做异或运算,nbin(m)表示整数n的二进制形式的数的第m位的数值,n=0,1,...,15。则上面的公式可以用文字描述为:对于所有整数n(n=0,1,...,15)的二进制形式的数的第m位的数值是1的组Ωn,把这些组Ωn中的所有原始包Pj做异或运算,从而产生第m个冗余包Q15+m,m=1,...,4。
对于上面步骤(1)中的ln,可以通过l′n用如下公式得到,n=0,1,...,15:
其中l′n=|Ω′n|, 并且{Ω′n}是包括原始包和冗余包的组,定义如下,n=0,1,...,15:
由于K=15,因此l′n和Ω′n,n=0,1,...,15,可以通过下面步骤得到:
A.在25,50,75,100四个数中,找到大于15的、最小的一个数为25;
B.用25在上表1中找出对应的{l′n}为{0 3 3 2 3 2 2 1 3 2 2 1 2 11 1},n=0,1,...,15,然后在{l′n}中发现l′1,l′2,l′4,l′8这四个数是最大的值3,则因为这4个整数的二进制形式的数中包含的1的个数都是1,因此l′h=l′h-1,h=1,2,4,8,即l′1=l′2=l′4=l′8=2。由于现在 而 因此再对其他的整数n(n∈{0,1,...,15})二进制形式的数中包含的1的个数依次递增的顺序,使对应的l′n=l′n-1,发现l′3,l′5,l′6,l′9,l′10,l′12这6个整数的二进制形式的数中包含的1的个数都是2,因此l′h=l′h-1,h=3,5,6,9,10,12,即l′3=l′5=l′6=l′9=l′10=l′12=1。由于现在 因此{l′n}为{0 2 2 1 2 1 1 1 2 1 1 1 1 1 1 1},n=0,1,...,15。
从而由上所述,可得{ln}为{0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1},n=0,1,...,15。于是
其次,对于第i个冗余包QK+i,i>4,用如下产生方式可以得到:
假设整数a和整数b满足,a≥2,0≤b≤a-2,并使得 则冗余包Q15+i是用所有的满足mod(j,a)=b的Pj做异或运算产生,其中j∈{1,2,...,15},mod(x,y)表示整数x对y做取模运算。则
这样就产生了15个首传包Q1,Q2,...,Q15和10个冗余包Q16,Q17,...,Q25。
装置实施例
根据本发明的实施例,提供了一种数据重传装置,可以应用于多媒体广播多播业务中,图10是根据本发明实施例的数据重传装置的结构框图,如图10所示,该装置包括:网络编码模块108,用于进行网络编码得到编码后的数据,其中,编码后的数据包括K个首传数据包,根据K个按照发送的先后顺序排列的原始数据包P1,P2,...,PK生成K个首传数据包Q1,Q2,...,QK,当i小于等于预先设定的编码包数量N时, 当i大于编码包数量时, K为正整数,N为正整数且N<K,1=<i<=K;发送模块109,连接于网络编码模块108,用于将编码后的数据发送给接收端,以便接收端根据编码后的数据实现多媒体广播业务。优选地,网络编码模块108得到的编码后的数据还包括M个冗余数据包,其中,通过对K个原始数据包进行线性运算生成M个冗余数据包QK+1,...,QK+M,M为正整数, 权值a1,a2,…,aK的值为0或1,1=<j<=M。
图11是根据本发明实施例的数据重传装置的详细结构框图,如图11所示,在图10的基础上,该装置还包括:设置模块112,连接于网络编码模块108,用于预先设定编码包数量。
综上所述,本发明实施例提供的数据重传方案提升了纠错性能和系统的吞吐量,同时降低了接收端解出数据包的复杂度。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。