一种差错控制方法

文档序号:7945936阅读:753来源:国知局

专利名称::一种差错控制方法
技术领域
:本发明涉及一种差错控制方法,适用于通信领域。
背景技术
:随着固网宽带及移动数据网络的发展,视音频流媒体应用被广泛使用,例如可视通信、IPTV、VOD等。在这些网络中数据传递以IP数据包为单元,由于多种原因,例如路由器瞬间的缓存溢出、信道干扰导致IP包的校验和出错,数据包可能会在传递过程中被丢弃,因而大部分应用都会有差错重传机制。TCP虽然带有差错重传机制,但由于它要保证可靠传输,所以有时会带来诸如延时长等副作用,因而视音频流媒体应用大多采用UDP协议来承载,并按需要在UDP之上实现差错控制。传统的UDP应用在差错重传时仅重传信源包,导致在高丢包率网络环境下重传次数明显上升的弊端,例如发信端第1次发出的第k个信源包如果被丢失,收信端会请求重传第k个信源包,如果发信端第2次发出的第k个信源包又被丢失,收信端会再请求重传第k个信源包,如果发信端第3次发出的第k个信源包又被丢失……如此反复将导致重传的次数明显上升,一些对时延要求比较严格的应用例如可视通话,多次重传将导致时延积累而大幅度降低可视通话的质量。为了解决UDP多次重传而引起时延积累的问题,技术人员进行了大量的研究。专利申请号为200510094410.8的中国专利,放弃了传统的差错重传机制发信端对信源包进行编码,生成比信源包数量更多的数据包,然后按一定的速率将这些数据包发往收信端,直到收到收信端的停发请求后才停止发送,有效地减少了重传次数,但该专利采用的方法有两个缺陷其一是经过编码后的数据包不是系统化的,即编码后的数据包不包含信源包,因而会增加编解码时延和计算量;其二是该专利采用的编码方法的编码效率不理想,即收到与信源包个数等同的数据包,不一定能恢复出所有信源包。为了减少差错重传次数,本发明巧妙地构想出在重传信源包的同时夹带冗余包,此外,为保证编码效率及有效利用信道带宽,对生成冗余包的编码算法有如下需求(1)从信源包和冗余包的集合中任意取出个数等同于信源包的数据包,都能恢复出完整的信源;(2)现有中低端嵌入式CPU都能胜任其计算量。本申请人提出的第200810234515.2号中国发明专利申请,其冗余包的生成矩阵来自于对范得蒙矩阵(VandermondeMatrix)进行变换,满足上述生成冗余包的编码算法,直接利用柯西矩阵(CauchyMatrix)或其变换矩阵作为冗余包的生成矩阵,也满足这一需求。国内外有些专利和论文,直接利用范得蒙矩阵生成冗余包,并认为从信源包和此冗余包的集合中任意取出个数等同于信源包的数据包都能恢复出完整的信源,这是错误的。由于美国加州大学伯克利分校在编码理论上有较大影响,因而它对柯西编解码运算量片面的评估结果(当数据量为16MB时,Luby教授通过计算得到柯西编码运算的时间为基于稀疏矩阵的Tornado码的7114倍,柯西解码运算的时间为Tornado码的7582倍),误导了科研人员认为柯西编解码的运算量过大而不实用。原加州大学伯克利分校科学家提出的Raptor编解码(参见美国6307487号专利)最终被3GPPMBMS(MultimediaBroadcast/MulticastService)及IETFRMT(ReliableMulticastTransport)所采纳,然而Raptor编解码在小分组的情况下编码效率并不理想,而加大分组又会导致解码时延增长。本发明直接使用高斯消元法进行柯西解码,通过查表法快速实现扩展伽罗瓦域(ExtendedGaloisField)GF(2q)域内的乘、除运算,并去除掉不必要的重复计算,将柯西解码的运算量大幅度降低到中低端嵌入式CPU就能胜任的范围,为本发明的差错重传机制奠定了计算基础。
发明内容发明目的本发明的目的是提供一种差错控制方法,有效地减少差错重传的次数,同时保证带宽利用率。技术方案一种差错控制方法,包括以下步骤(1)发信端发送信源包给收信端的同时或之后,生成相应的冗余包假设信源包向量为X,编码矩阵为A,则冗余包向量¥=八*X,其中X为n行列向量,Y为m行列向量,A为m行n列矩阵。生成A的方法为如下三种之一方法一任取m行n列柯西矩阵为A。任取m个不同的值Ki(l^i^m)、n个不同的值Lj(l司^n),并且满足(K,+Lj)#0,得m行n列柯西矩阵A如下A<formula>formulaseeoriginaldocumentpage5</formula>方法二对范得蒙矩阵进行变换,将范得蒙矩阵乘以任意可逆矩阵得到矩阵K其中K为n阶方阵,L为m行n列矩阵。由于矩阵K为范得蒙矩阵与可逆阵相乘的结果,所以矩阵K存在逆矩阵K",将矩阵L乘以矩阵K'1,得111行11列矩阵八=^*^1。方法三对柯西矩阵进行变换,将柯西矩阵乘以任意可逆矩阵得到其中K为n阶方阵,L为m行n列矩阵。由于矩矩阵K阵K为柯西矩阵与可逆阵相乘的结果,所以矩阵K存在逆矩阵K-1,将矩阵L乘以矩阵K'1,得m行n列矩阵A-I^K一1。(2)按预先设定的规则,发信端发送完信源包之后再发送冗余包给收信端,或当发信端收到收信端的重传请求之后,再发送出相应的信源包及冗余包。对于无反馈应用如多播,发信端在发出信源包之后,接着继续发送部分或全部冗余包给收信端。对于有反馈应用,如果发信端收到重传某些指定编号的信源包的请求,发信端重传这些指定编号的信源包之后再发送部分或全部冗余包给收信端;如果发信端收到的重传请求只包含缺少数据包的数量,则发信端发送部分或全部冗余包给收信端。(3)按预先设定的规则,收信端不反馈信息给发信端,或将未收到信源包的编号或缺少数据包的数量反馈给发信端,要求发信端重传。对于无反馈应用如多播,因为发信端除了发出信源包之外还发出了冗余包,所以部分数据被丢失后,收信端仍然可能恢复出完整的信源。对于有反馈应用,收信端的重传请求中如果包含未收到信源包的编号,则发信端先发送这些编号的信源包,之后再发送冗余包,这样有助于减少收信端的解码运算量,如果收信端的重传请求只包含缺少数据包的数量,发信端就发送冗余包给收信端。(4)收信端保存与发信端同样的编码矩阵A,如果收信端没有收全信源包,则再尝试利用冗余包恢复出信源包。XIY上等式中,I为n阶单位阵,A为m行n列编码矩阵。上等式左边取任意n行记为列向量G,取等式右边单位阵I及矩阵A对应的n行记为矩阵H,则下等式仍然成立G=H*X当A为柯西矩阵时,根据柯西矩阵的性质可知H为可逆矩阵;当A为步骤(l)对范得蒙矩阵或柯西矩阵进行变换而得到的矩阵时,利用本申请人提出的第200810234515.2号中国发明专利申请类似的方法,可证明H仍为可逆矩阵。因而可以解出X如下X=H-1*G因而,从n个信源包和m个冗余包中,收信端只要收到其中任意n个数据包,都可以恢复出n个信源包。为减少上述差错控制方法的计算量并提高信道的利用率,采用如下方法(1)生成冗余包及以冗余包恢复信源包相关的运算采用GF(2q)6域内的运算。在GF(2q)域内的运算结果,既不会发生进位而不利于有效地利用信道容量,又不会增大运算结果的存储空间,例如GF(28)域内的运算结果总是为一个Byte。(2)通过査表法实现GF(2q)域内的乘、除运算。本申请人提出的第200810234515.2号中国发明专利申请对GF(2q)域内的加、减、乘、除运算有描述。由于GF(2q)域内的乘、除运算的运算量较大,为了加快运算速度采用査表法来完成,即事先将所有可能的乘、除运算及结果存于收发信端。(3)以冗余包恢复信源包时,将未收到的信源包当成变量,以高斯消元法求解。上面已经证明,收信端收到(n-t)个信源包加t个冗余包,就可以恢复出所有n个信源包,信源包X与冗余包Y的数学关系式为Y=A*X,取Y中收到的t个冗余包,取A相应的t行,则该等式成为一组t元一次线性方程组,变量为未收到的t个信源包。以高斯消元法解开这组t元一次线性方程组,即能得到未收到的t个信源包。解方程时采用的运算,仍然采用GF(2q)域内的运算。有益效果本发明与现有技术相比,其显著特点是在重传信源包的同时夹带冗余包,因而可有效地降低差错重传的次数,并且因为选用范得蒙矩阵的变换矩阵或柯西矩阵及其变换矩阵作为编码矩阵,有效地保证了带宽利用率。在多播应用或高丢包率或高时延的应用场合,本发明提供的方法,效果显著。附图是本发明差错控制方法的示意图。发信端发出编号为1、2、3......N的信源包,由于部分数据在传输途中被丢失,收信端请求重传编号为P、Q......T的信源包,发信端在发出编号为P、Q......T的信源包之后,再发出R个冗余包。具体实施例方式下面先举例说明生成冗余包的方法及利用冗余包恢复信源包的方法。由于GF(28)域内的值及运算结果都可用1个Byte来表示,因而GF(28)域内的运算在常用CPU系统中的开销较小,具体实施本发明描述的方法时,一般选用GF(28)域内的运算。为减少运算量、减少时延、保证带宽利用率,可将信源包进行重组,让每个信源包都为等长。每组信源由n个信源包构成,对应于前述信源包向量X;生成m个冗余包,对应于前述冗余包向量Y。此外,为了便于使用GF(28)域内运算,还需将信源包向量X中的每个信源包Xj都切成s个Byte:&、Xj2、Xj3......Xjs,信源包Xj切片后得到如下信源包矩阵X-m个冗余包Yj构成冗余包向量Y,每个冗余包Yi由s个ByteYu、Yi2、Yi3......Yjs构成如下Y12Y13……YlsY=A*X=……Y&Ym2Yms作为一个例子,取n-lO,m=4,s=5,取GF(28)域内的不可约多项式Z(x)=l+x+x3+x4+x8,K产l、K2=2、K3=3、K3=4,L产5、L2=6、L3=7、L4=8、L5=9、L6=10、L7=ll、L8=12、L9=13、L10=14。利用GF(28)域内的运算,求得4行10列的柯西矩阵即编码矩阵A如下2032091237923219241225176199A=20920382411922327922919917612382203192417923219922922511412461762252291992327941XXXX222XXX2XXI-假设信源包X!、X2、X3......Xu)构成的信源列向量X如下:Xabcdex2鹏x3klmnox4pqrstx5uvwxyx6=ABCDEx7FGHIJx8KLMNO&PQRSTXioUVWXY将每个信源包切成5片,每片1个Byte并转换成数值,信源列向量X变为如下555555賜1VJw丄0597989910010110210310410510610710810911011111211311411511611711811912012165666768697071727374757677787980818283848586878889上述数据代入冗余包生成等式Y:A+X后,10个信源包共50个切片生成4个冗余包共20个切片如下Y=36164951142084205231621113139207115313619176249222假设发信端将10个信源包和4个冗余包发出之后,收信端仅接收到信源包X2、X3、X5、X6、X7、X8、X9,信源包X4及X10在传输过程中被丢失,同时收信端还收到冗余包Y2、Y3,冗余包123456700-<571;xxxxxxxx;^x44444444wmxxxxxxxx^x,33333JSGSWJSS12345678-力_-"XXXXXXXX&xr22222。cJ:aSJAx>^xxxXXX&X11111111Is123456700xxxxxxxxxx9Y。Y4在传输过程中被丢失,则取Y=A*X的第2行及第3行,得到如下线性方程组Y2=209Xj+203X2+82X3+41X4+192X5+232X6+79X7+229X8+199+176X,Y3=123+82X2+203X3+192X4+41X5+79X6+232X7+199X8+229X9+225X收到的信源包切片Xu、X21、X31、X51、X^、X71、X81、Xw及冗余包切片Y21、Yw作为已知项,未收到的信源包切片X101作为变量,将上等式的已知项合并,生成包含变量X^、Xhh的2元一次线性方程组如下41X41+176X101=Value—1192X41+225X101=Value—2使用高斯消元法可以得到计算X4i及XuH的线性关系式如下X41=156*Value_l+129*Value—2X101=228*Value—1+254*Value—2以此求得(X4,、X1Q1)。利用同样的方法,可以求得(X42、X102)、(X43、X103)、(X44、X104)、(X45、X105),最后组成2个未收到的信源包X4,qrst,X1Q=UVXWY。由上述高斯消元法可知,当n较大时,解方程的主要运算量集中在合并已知项生成Value一l、Value一2的过程,高斯消元法虽然运算量与变量个数的3次方成正比,但与合并已知项的运算量相比仍只是很小一部分。上面举例说明了生成冗余包及利用冗余包恢复信源包的方法,接下来举例说明差错重传的方法。例如,发信端发出Xi、X2、X3......X18、X19、X加总共20个信源包给收信端,通过一个丢包率高达50%的网络环境后,收信端仅接收到&、X3、X5......X15、X17、Xw共lO个信源包,收信端发出重传请求给发信端要求重传X2、X4、&......X16、X18、X加共10个信源包,发信端收到这个重传请求之后,重发X2、X4、X6......X16、X18、X加之后再发出IO个冗余包Y"Y2、Y3......Y8、Y9、Y1(),这20个数据包通过丢包率为50%的网络环境后,收信端只收到X2、X4、X6、X8、X1()、X^及冗余包Y,、Y2、Y3、Y4,即收信端2次总计收到的信源包和冗余包的数量为20,则收信端可利用这20个数据包恢复出4个未收到的信源包Xw、X16、X18、X2(),从而收信端最终得到完整的20个信源包。借鉴于TCP的滑动窗口技术,发信端在接收到针对某组信源包的重传请求之前,可以继续发送一组或多组信源包,以提高信道利用率。权利要求1、一种差错控制方法,其特征是该方法包括以下步骤(1)发信端发送信源包给收信端的同时或之后,生成相应的冗余包向量Y=A*X,其中X为信源包向量,A为编码矩阵;生成A的方法为取任意柯西矩阵为A;或对范得蒙矩阵进行变换,将范得蒙矩阵乘以任意可逆矩阵得到矩阵<mathsid="math0001"num="0001"><math><![CDATA[<mfencedopen='['close=']'><mtable><mtr><mtd><mi>K</mi></mtd></mtr><mtr><mtd><mi>L</mi></mtd></mtr></mtable></mfenced>]]></math>id="icf0001"file="A2009100298760002C1.tif"wi="13"he="16"top="67"left="31"img-content="drawing"img-format="tif"orientation="portrait"inline="yes"/></maths>,其中K为方阵,取A=L*K-1;或对柯西矩阵进行变换,将柯西矩阵乘以任意可逆矩阵得到矩阵<mathsid="math0002"num="0002"><math><![CDATA[<mfencedopen='['close=']'><mtable><mtr><mtd><mi>K</mi></mtd></mtr><mtr><mtd><mi>L</mi></mtd></mtr></mtable></mfenced>]]></math>id="icf0002"file="A2009100298760002C2.tif"wi="13"he="16"top="92"left="31"img-content="drawing"img-format="tif"orientation="portrait"inline="yes"/></maths>,其中K为方阵,取A=L*K-1;(2)按预先设定的规则,发信端发送完信源包之后再发送冗余包给收信端,或当发信端收到收信端的重传请求之后,再发送出相应的信源包及冗余包;(3)按预先设定的规则,收信端不反馈信息给发信端,或将未收到信源包的编号或缺少数据包的数量反馈给发信端,要求发信端重传;(4)收信端保存与发信端同样的编码矩阵A,如果收信端没有收全信源包,则再尝试利用冗余包恢复出信源包。2、根据权利要求1所述的差错控制方法,其特征是生成冗余包以及以冗余包恢复信源包相关的运算采用GF(2q)域内的运算。3、根据权利要求2所述的差错控制方法,其特征是通过査表法实现GF(2q)域内的乘、除运算。4、根据权利要求1所述的差错控制方法,其特征是以冗余包恢复信源包时,将未收到的信源包当成变量,以高斯消元法求解。全文摘要本发明公开了一种差错控制方法,适用于通信领域,使用本发明的方法可有效地提高网络数据传输的可靠性。本发明的方法核心是改变了传统UDP应用在差错重传时仅能重传信源包而导致在高丢包率的网络环境下重传次数明显上升的弊端,利用本发明的方法,UDP应用在差错重传时除了重传信源包之外还夹带着能有效地恢复出信源包的冗余包,从而在高丢包率网络环境下可明显地减少重传的次数。在高时延的网络环境或多播环境,利用本发明的方法也可取得良好的效果。文档编号H04L1/18GK101552661SQ20091002987公开日2009年10月7日申请日期2009年3月26日优先权日2009年3月26日发明者刘怡梅,吕晓雯,玲杜申请人:吕晓雯;刘怡梅;杜玲
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1