CN101404563B - 一种差错控制方法和系统 - Google Patents
一种差错控制方法和系统 Download PDFInfo
- Publication number
- CN101404563B CN101404563B CN2008102345152A CN200810234515A CN101404563B CN 101404563 B CN101404563 B CN 101404563B CN 2008102345152 A CN2008102345152 A CN 2008102345152A CN 200810234515 A CN200810234515 A CN 200810234515A CN 101404563 B CN101404563 B CN 101404563B
- Authority
- CN
- China
- Prior art keywords
- centerdot
- matrix
- information source
- redundancy packet
- number field
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种差错控制方法和系统,适用于通信、存储等领域,在这些领域中使本发明的方法或系统,可有效地将丢失的数据恢复,提高数据的完整性。本发明的方法包括生成编码系数和冗余包、生成解码系数和恢复信源等步骤,发信端以n个信源生成m个冗余包,将信源及冗余包都发送往收信端,收信端收到的信源个数与冗余包个数之和只要大于n,就能恢复出所有n个信源。本发明利用范德蒙矩阵及扩展伽罗瓦2q域内的运算,巧妙地实现了信息量最大化及运算量最小化。在多播及广播通信中使用本发明的差错控制方法或系统,可取得优良的效果。
Description
技术领域
本发明涉及一种差错控制方法和系统,适用于通信、存储等领域。
背景技术
随着宽带网络及视频业务的发展,组播得到了广阔的应用,例如IPTV。组播应用中有大量的用户接收共同的数据源,标准的组播协议是不带反馈的,这就带来新的问题:如果网络上出现丢包,由于每个用户丢失的数据都可能不一样,为此需要一种有效的恢复机制,无论用户丢失哪些数据包,都能将丢失的数据恢复。同样,在存储领域也存在如何将丢失的数据进行恢复的问题。
发明内容
发明目的:本发明的目的是提供一种差错控制方法和实现该方法的系统,有效地将丢失的数据恢复,提高数据完整性。
技术方案:一种差错控制方法,包括生成冗余包的方法和信源恢复的方法,其中生成冗余包的方法包括以下步骤:
(1)构造编码系数矩阵A:
假设有n个信源X1、X2、X3......Xn,m为需要生成的冗余包的数量,选一个数域P,保证每个信源Xj都在数域P内,在数域P中任取(n+m)个不同的值K1、K2、K3......Kn、L1、L2......Lm,取矩阵K和L如下:
由于矩阵K是范德蒙矩阵(Vandermonde Matrix),所以矩阵K一定存在逆矩阵K-1。将矩阵L乘以矩阵K-1,得到编码系数矩阵A如下:
步骤(1)每步数学运算都采用数域P内的运算。
(2)计算冗余包:
取信源矩阵X如下:
将编码系数矩阵A乘以信源矩阵X,得到冗余包矩阵Y如下:
Y1、Y2、Y3......Ym即为m个冗余包。步骤(2)每步数学运算都采用与步骤(1)相同的数域P内的运算。
将矩阵K的所有行及矩阵L的所有行,组成矩阵F如下:
则如下等式成立,等式右边由n个信源及m个冗余包构成。
等式右边取任意n行,等式左边矩阵F也取相应的n行,上述等式仍然成立。等式右边的任意n行,实质上是信源个数加冗余包个数等于n的任意n个信息,将它记为矩阵G,等式左边矩阵F取相应的n行后得到矩阵H,则得到如下等式:
H*K-11*X=G
由于H也是范德蒙矩阵,所以矩阵H一定存在逆矩阵H-1,将上等式两边都左乘矩阵H-11得到如下等式:
K-11*X=H-1*G
再将上等式两边都左乘矩阵K得到如下等式:
X=K*H-11*G
因而理论上,从n个信源及m个冗余包中任取n个信息都可以恢复出n个信源,这是本发明的数学原理。
发信端将n个信源及m个冗余包发送往收信端,当收信端收到的信源个数r小于n时,信源恢复的方法包括以下步骤:
(3)构造解码系数矩阵B:
假设收到Xf、Xg......Xh共r个信源,其中f<g<……<h,收到t个冗余包,当t大于(n—r)时任取(n—r)个冗余包,当t小于或等于(n—r)时取所有的冗余包,这些冗余包记为Yu、Yv......Yw,其中u<v<……<w,取矩阵B第1行的第f列为1、其他(n—1)列为0;矩阵B第2行的第g列为1、其他(n—1)列为0......矩阵B第r行的第h列为1、其他(n—1)列为0;矩阵B第(r+1)行为步骤(1)系数矩阵A的第u行;矩阵B第(r+2)行为步骤(1)系数矩阵A的第v行......矩阵B最后1行为步骤(1)系数矩阵A的第w行,构成解码系数矩阵B如下:
(4)恢复出信源X:
当t大于(n—r)时任取(n—r)个冗余包,当t小于或等于(n—r)时取所有的冗余包,得到如下等式:
当t大于或等于(n—r)时,前面已经证明解码系数矩阵B是一个范德蒙矩阵H与另一个范德蒙矩阵K的逆的乘积并且上述等式必定有解,可采用解(n—r)元1次方程组的解法解出(n—r)个未收到的信源Xj。当t小于(n—r)时,由于等式个数小于变元数,因而只能部分解出(n—r)个信源。步骤(4)每步数学运算都采用与步骤(1)相同的数域P内的运算。
上面描述了生成冗余包Y及将信源X恢复的差错控制方法,下面描述如何实现该差错控制方法的系统,包括以下内容:
(a)上述步骤(1)、(2)、(4)中的数域P采用扩展伽罗瓦2q域(Extended Galois Field2q)。
(b)事先按上述步骤(1)算好编码系数矩阵A,并将它存储在发信端和收信端的存储器上。
(c)发信端将信源Xj按固定的规则切成s个片段Xj1、Xj2、Xj3......Xjs,保证每个片段的值都在上述扩展伽罗瓦2q域内,信源Xj切片后得到如下信源矩阵X:
发信端利用CPU或ASIC按如下等式生成冗余包,冗余包Yi由Yi1、Yi2、Yi3......Yis构成。将n个信源Xj及m个冗余包Yi发送往收信端。
(d)当收信端收到的信源数r小于n时,取r个的信源及(n—r)个冗余包,并将信源Xj及冗余包Yi按与(c)同样的规则切成s个片段。利用CPU或ASIC按上述步骤(3)和(4)的方法恢复出信源。信源Xj及冗余Yi包切片后,步骤(4)恢复信源的等式如下:
有益效果:本发明与现有技术相比,其显著优点是:从n个信源及m个冗余包中任取n个数据包,都一定能恢复出n个信源,保证了冗余包信息量的最大化。采用扩展伽罗瓦2q域内的运算,在减少运算量的同时还能保证信道容量得到最有效的利用。本发明的方法是信息论香农定律在实践应用中的最优化方法之一,具有很高的可用性。
在组播应用如IPTV中使用本发明的方法和系统,能有效地将丢失的组播数据恢复,完美地解决组播应用中当数据被丢失一部分之后出现的故障例如IPTV的噪音及图像停顿或马赛克。
附图说明
图1是冗余包生成单元的简要逻辑图。
图2是信源恢复单元的简要逻辑图。
具体实施方式
上述技术方案中的数域P,可采用任何无限数域或有限数域,无限数域如实数域、有理数域,有限数域如基本伽罗瓦域,在这些数域中的运算如在实数域内的运算,5050是个巨大的数,需要增大存储空间,也不利于有效地利用信道容量。采用有限域中的扩展伽罗瓦pq域,对于p取2,则任何运算的结果都不会要求更多的存储空间。具体实施本发明描述的方法时,一般选用扩展伽罗瓦2q域。由于2q域内运算略难理解,虽然它在一些数学和计算机书籍中有详细描述,但这里还是举例说明28域内的运算以便于理解。域2内有两个值0、1,域2内的加法运算0+0=0,0+1=1,1+0=1,1+1=0,乘法运算0*0=0,0*1=0,1*0=0,1*1=1。28域内有256个值0、1、2、3......255。x8域内的任一值都可用包含x0、x1、x2、x3、x4、x5、x6、x7的多项式构成,例如x=2时在x8域内,249=x0+x3+x4+x5+x6+x7,30=x1+x2+x3+x4,对249和30进行加法运算过程如下:
即在28域内249+30=231,从运算过程可知,28域内的加法运算,实质就是将两个数进行2进制的异或运算。当x=2时在x8域内选取一个包含x8的质多项式,例如取质多项式Z(x)=1+x+x3+x4+x8,它无法被拆成任何其他两个多项式的乘积。28域内两个数相乘的结果是将其对应的两个多项式相乘后除以质多项式而得到的余数多项式所代表的值,例如28域内249*30的计算方法是先将249对应的多项式[x0+x3+x4+x5+x6+x7]与30对应的多项[x1+x2+x3+x4]相乘,得到积多项式[x1+x2+x3+x6+x9+x11],乘法运算如下:
将积多项式除以Z(x)得到商多项式[x3+x]及余数多项式[x7+x5],余数多项式[x7+x5]对应的值为160,计算过程如下:
因而在28域取上述质多项Z(x)时,249*30=160,乘法运算有256*256种可能。由于28域的乘法运算量较大,在实际使用时可将28域内的所有可能的乘法运算事先计算好并存成一张256*256的乘法表,从而将乘运算过程转化为查表过程。考虑到乘法交换律,28域内的乘法共有257*128种可能,为了减少存储量也可仅存一张257*128的乘法表。28域内的值都可用1个Byte来表示,因而28域内运算在常用CPU系统中的开销较小。
技术方案的实施例中,取扩展伽罗瓦28域,n=64,m=7,K1=0、K2=1、K3=2......K64=63,对应地信源为X1、X2、X3......X64;L1=64、L2=65......L7=70,对应地冗余包为Y1、Y2、Y3......Y7。
如何求范德蒙矩阵K的逆矩阵K-1,在许多数学书籍中都有描述,这里不再叙述,28域内的加法运算采用2进制异或运算,28域内的乘法运算前面也已经描述过,利用28域内的加法和乘法,最后求得7行64列的编码系数矩阵A=L*K-1如下:
矩阵A第1行的64列分别为118,48,2,204,197,55,235,181,54,91,92,15,232,137,25,200,63,164,162,165,60,13,29,226,212,202,56,73,74,187,249,41,173,183,122,245,158,178,134,193,111,231,176,159,36,163,175,104,45,174,133,14,152,189,64,217,42,229,98,53,3,22,40,191。
矩阵A第2行的64列分别为48,118,204,2,55,197,181,235,91,54,15,92,137,232,200,25,164,63,165,162,13,60,226,29,202,212,73,56,187,74,41,249,183,173,245,122,178,158,193,134,231,111,159,176,163,36,104,175,174,45,14,133,189,152,217,64,229,42,53,98,22,3,191,40。
矩阵A第3行的64列分别为2,204,118,48,235,181,197,55,92,15,54,91,25,200,232,137,162,165,63,164,29,226,60,13,56,73,212,202,249,41,74,187,122,245,173,183,134,193,158,178,176,159,111,231,175,104,36,163,133,14,45,174,64,217,152,189,98,53,42,229,40,191,3,22。
矩阵A第4行的64列分别为204,2,48,118,181,235,55,197,15,92,91,54,200,25,137,232,165,162,164,63,226,29,13,60,73,56,202,212,41,249,187,74,245,122,183,173,193,134,178,158,159,176,231,111,104,175,163,36,14,133,174,45,217,64,189,152,53,98,229,42,191,40,22,3。
矩阵A第5行的64列分别为197,55,235,181,118,48,2,204,232,137,25,200,54,91,92,15,60,13,29,226,63,164,162,165,74,187,249,41,212,202,56,73,158,178,134,193,173,183,122,245,36,163,175,104,111,231,176,159,152,189,64,217,45,174,133,14,3,22,40,191,42,229,98,53。
矩阵A第6行的64列分别为55,197,181,235,48,118,204,2,137,232,200,25,91,54,15,92,13,60,226,29,164,63,165,162,187,74,41,249,202,212,73,56,178,158,193,134,183,173,245,122,163,36,104,175,231,111,159,176,189,152,217,64,174,45,14,133,22,3,191,40,229,42,53,98。
矩阵A第7行的64列分别为235,181,197,55,2,204,118,48,25,200,232,137,92,15,54,91,29,226,60,13,162,165,63,164,249,41,74,187,56,73,212,202,134,193,158,178,122,245,173,183,175,104,36,163,176,159,111,231,64,217,152,189,133,14,45,174,40,191,3,22,98,53,42,229。
计算出编码系数矩阵A之后,可求得冗余包矩阵如下:
Y=A*X
假设收信端仅接收到信源X3、X4、X5......X62、X63,信源X1、X2及X64在传输过程中被丢失,同时收信端还收到冗余包Y2、Y5、Y6、Y7,冗余包Y1、Y3、Y4在传输过程中被丢失,则可构造解码系数矩阵B如下:
对于信源及冗余包切片举例如下,假设每个信源及冗余包都由5个字符构成,则可将每个信源及冗余包都切成5片,例如信源X3为字符串abcde,冗余包Y2为字符串rstuv,X3切片后得到X31=a,X32=b,X33=c,X34=d,X35=e,Y2切片后得到Y21=r,Y22=s,Y23=t,Y24=u,Y25=v。收信端需要恢复出的信源X1、X2及X64相当于如下等式的未知数,由于X3、X4、X5......X63及Y2、Y5、Y6都已知,如下等式即成为5组3元1次方程组,解开这些方程组即得到信源X1、X2及X64,解方程过程中的数学运算仍采用上述28域内的运算。
图1是冗余包生成单元的简要逻辑图,由CPU或ASIC及存储器等单元构成,在不易失存储器中存储编码系数矩阵A及28域内的乘法表,由CPU或ASIC按技术方案的步骤(2)生成冗余包。
图2是信源恢复单元的简要逻辑图,由CPU或ASIC及存储器等单元构成,在不易失存储器中存储编码系数矩阵A及28域内的乘法表,由CPU或ASIC按技术方案的步骤(3)和(4)解出所有信源。
目前有些商用的组播应用例如IPTV仅使用1个UDP端口组播,为了与原有的系统兼容,使用本发明描述的新方法时可采用2个UDP端口,例如现有某套IPTV节目使用组播地址IP_M、端口Port_M,使用新方法时,这套IPTV节目的信源X也使用组播地址IP_M、端口Port_M,其冗余包Y使用同样的组播地址IP_M,但使用另一个端口Port_N,原有IPTV终端仅接收端口Port_M上的数据,使用本发明描述方法的新终端同时接收端口Port_M及Port_N上的数据,从而能保证新老终端都能正常工作。此外,为进一步增强组播的可靠性,组播接收端还可将信源恢复失败的次数反馈到中央服务器以进行通信质量评估,中央服务器可随信源恢复失败率的增减动态指挥组播发信端增减冗余包的个数。
Claims (1)
1.一种差错控制方法,其特征是:该方法包括生成冗余包的方法和信源恢复的方法,其中生成冗余包的方法包括以下步骤:
(1)构造编码系数矩阵A:
假设有n个信源X1、X2、X3......Xn,m为需要生成的冗余包的数量,选一个数域P,保证每个信源Xj都在数域P内,在数域P中任取(n+m)个不同的值K1、K2、K3.....Kn、L1、L2......Lm,取矩阵K和L如下:
取K的逆矩阵K-1,将矩阵L乘以矩阵K-1,得到编码系数矩阵A如下:
步骤(1)每步数学运算都采用数域P内的运算;
(2)计算冗余包:
取信源矩阵X如下:
将编码系数矩阵A乘以信源矩阵X,得到冗余包矩阵Y如下:
Y1、Y2、Y3......Ym即为m个冗余包;步骤(2)每步数学运算都采用与步骤(1)相同的数域P内的运算;
发信端将n个信源及m个冗余包发送往收信端,当收信端收到的信源个数r小于n时,信源恢复的方法包括以下步骤:
(3)构造解码系数矩阵B:
假设收到Xf、Xg......Xh共r个信源,其中f<g<……<h,收到t个冗余包,当t大于(n-r)时任取(n-r)个冗余包,当t小于或等于(n-r)时取所有的冗余包,这些冗余包记为Yu、Yv......Yw,其中u<v<……<w,取矩阵B第1行的第f列为1、其他(n-1)列为0;矩阵B第2行的第g列为1、其他(n-1)列为0......矩阵B第r行的第h列为1、其他(n-1)列为0;矩阵B第(r+1)行为步骤(1)编码系数矩阵A的第u行;矩阵B第(r+2)行为步骤(1)编码系数矩阵A的第v行......矩阵B最后1行为步骤(1)编码系数矩阵A的第w行,构成解码系数矩阵B如下:
(4)恢复出信源X:
当t大于(n-r)时任取(n-r)个冗余包,当t小于或等于(n-r)时取所有的冗余包,得到如下等式:
当t大于或等于(n-r)时,利用上等式解出(n-r)个未收到的信源Xj;当t小于(n-r)时,利用上等式部分解出(n-r)个未收到的信源Xj;步骤(4)每步数学运算都采用与步骤(1)相同的数域P内的运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102345152A CN101404563B (zh) | 2008-11-20 | 2008-11-20 | 一种差错控制方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102345152A CN101404563B (zh) | 2008-11-20 | 2008-11-20 | 一种差错控制方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101404563A CN101404563A (zh) | 2009-04-08 |
CN101404563B true CN101404563B (zh) | 2011-12-21 |
Family
ID=40538442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102345152A Expired - Fee Related CN101404563B (zh) | 2008-11-20 | 2008-11-20 | 一种差错控制方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101404563B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103135946B (zh) * | 2013-03-25 | 2014-11-26 | 中国人民解放军国防科学技术大学 | 基于ssd的大规模存储系统中的文件布局方法 |
CN103761171B (zh) * | 2014-02-11 | 2017-04-05 | 中国科学院成都生物研究所 | 一种针对二进制编码冗余存储系统的低带宽数据重构方法 |
CN109542837B (zh) * | 2018-11-30 | 2023-03-24 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN112114997A (zh) * | 2020-09-11 | 2020-12-22 | 北京易安睿龙科技有限公司 | 一种辅助实现纠删码程序的工作方法 |
CN112165403B (zh) * | 2020-09-29 | 2021-04-27 | 北京视界云天科技有限公司 | Udp数据包恢复方法、装置、计算机设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5719884A (en) * | 1995-07-27 | 1998-02-17 | Hewlett-Packard Company | Error correction method and apparatus based on two-dimensional code array with reduced redundancy |
CN1187718A (zh) * | 1996-12-10 | 1998-07-15 | 菲利浦电子有限公司 | 包括结合正交调幅的穿孔乘积码的数字传输系统与方法 |
-
2008
- 2008-11-20 CN CN2008102345152A patent/CN101404563B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5719884A (en) * | 1995-07-27 | 1998-02-17 | Hewlett-Packard Company | Error correction method and apparatus based on two-dimensional code array with reduced redundancy |
CN1187718A (zh) * | 1996-12-10 | 1998-07-15 | 菲利浦电子有限公司 | 包括结合正交调幅的穿孔乘积码的数字传输系统与方法 |
Non-Patent Citations (1)
Title |
---|
李长乐等.一种实用的无线信道纠错方法.《电讯技术》.2002,(第4期), * |
Also Published As
Publication number | Publication date |
---|---|
CN101404563A (zh) | 2009-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103688515B (zh) | 一种最小带宽再生码的编码和存储节点修复方法 | |
CN1620760B (zh) | 用于通信系统的多级码发生器和解码器 | |
CN100539439C (zh) | 连锁反应码的系统编码和解码系统和方法 | |
Nonnenmacher et al. | Parity-based loss recovery for reliable multicast transmission | |
CN103124182B (zh) | 文件下载和流系统 | |
KR101421286B1 (ko) | 인코딩 및 디코딩 프로세스들을 위해 심볼들의 영속적 비활성화에 의한 fec 코드들을 활용하는 방법 및 장치 | |
CN101404563B (zh) | 一种差错控制方法和系统 | |
CN100362782C (zh) | 对丢失数据单元进行恢复的方法 | |
CN101842990A (zh) | 可扩展信息信号、可扩展信息内容的编码方法和装置、可扩展信息信号的纠错方法及装置 | |
US8928503B2 (en) | Data encoding methods, data decoding methods, data reconstruction methods, data encoding devices, data decoding devices, and data reconstruction devices | |
US20100235677A1 (en) | Generating A Parallel Recovery Plan For A Data Storage System | |
Cadambe et al. | Optimal repair of MDS codes in distributed storage via subspace interference alignment | |
CN103250463A (zh) | 用于通信系统的子集编码 | |
JPH05508750A (ja) | 順方向誤り訂正コード方式 | |
Cullina et al. | Searching for minimum storage regenerating codes | |
Halloush et al. | Network coding with multi-generation mixing: A generalized framework for practical network coding | |
CN113190377B (zh) | 一种基于分布式存储系统的可靠冗余方法及设备 | |
CN104782101A (zh) | 用于分布式网络存储的自修复码的编码、重构和恢复方法 | |
WO2014005279A1 (zh) | 一种可精确再生的分布式存储码的构建方法及装置 | |
CN108199720B (zh) | 一种减小存储开销和提高修复效率的节点修复方法及系统 | |
CN101272223B (zh) | 一种低密度生成矩阵码的译码方法及装置 | |
CN101505201B (zh) | 一种差错控制方法 | |
Manasse et al. | A reed-solomon code for disk storage, and efficient recovery computations for erasure-coded disk storage | |
CN103532666B (zh) | 提高分布式传输中数据传输效率和lt码性能的方法 | |
JP2012033169A (ja) | バックアップシステムにおける符号化を使用して、ライブチェックポインティング、同期、及び/又は復旧をサポートするための方法及び装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20111221 Termination date: 20191120 |