CN101552661A - 一种差错控制方法 - Google Patents
一种差错控制方法 Download PDFInfo
- Publication number
- CN101552661A CN101552661A CN 200910029876 CN200910029876A CN101552661A CN 101552661 A CN101552661 A CN 101552661A CN 200910029876 CN200910029876 CN 200910029876 CN 200910029876 A CN200910029876 A CN 200910029876A CN 101552661 A CN101552661 A CN 101552661A
- Authority
- CN
- China
- Prior art keywords
- information source
- source packets
- matrix
- redundancy packet
- transmitting end
- 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.)
- Granted
Links
Images
Abstract
本发明公开了一种差错控制方法,适用于通信领域,使用本发明的方法可有效地提高网络数据传输的可靠性。本发明的方法核心是改变了传统UDP应用在差错重传时仅能重传信源包而导致在高丢包率的网络环境下重传次数明显上升的弊端,利用本发明的方法,UDP应用在差错重传时除了重传信源包之外还夹带着能有效地恢复出信源包的冗余包,从而在高丢包率网络环境下可明显地减少重传的次数。在高时延的网络环境或多播环境,利用本发明的方法也可取得良好的效果。
Description
技术领域
本发明涉及一种差错控制方法,适用于通信领域。
背景技术
随着固网宽带及移动数据网络的发展,视音频流媒体应用被广泛使用,例如可视通信、IPTV、VOD等。在这些网络中数据传递以IP数据包为单元,由于多种原因,例如路由器瞬间的缓存溢出、信道干扰导致IP包的校验和出错,数据包可能会在传递过程中被丢弃,因而大部分应用都会有差错重传机制。TCP虽然带有差错重传机制,但由于它要保证可靠传输,所以有时会带来诸如延时长等副作用,因而视音频流媒体应用大多采用UDP协议来承载,并按需要在UDP之上实现差错控制。传统的UDP应用在差错重传时仅重传信源包,导致在高丢包率网络环境下重传次数明显上升的弊端,例如发信端第1次发出的第k个信源包如果被丢失,收信端会请求重传第k个信源包,如果发信端第2次发出的第k个信源包又被丢失,收信端会再请求重传第k个信源包,如果发信端第3次发出的第k个信源包又被丢失……如此反复将导致重传的次数明显上升,一些对时延要求比较严格的应用例如可视通话,多次重传将导致时延积累而大幅度降低可视通话的质量。
为了解决UDP多次重传而引起时延积累的问题,技术人员进行了大量的研究。专利申请号为200510094410.8的中国专利,放弃了传统的差错重传机制:发信端对信源包进行编码,生成比信源包数量更多的数据包,然后按一定的速率将这些数据包发往收信端,直到收到收信端的停发请求后才停止发送,有效地减少了重传次数,但该专利采用的方法有两个缺陷:其一是经过编码后的数据包不是系统化的,即编码后的数据包不包含信源包,因而会增加编解码时延和计算量;其二是该专利采用的编码方法的编码效率不理想,即收到与信源包个数等同的数据包,不一定能恢复出所有信源包。
为了减少差错重传次数,本发明巧妙地构想出在重传信源包的同时夹带冗余包,此外,为保证编码效率及有效利用信道带宽,对生成冗余包的编码算法有如下需求:(1)从信源包和冗余包的集合中任意取出个数等同于信源包的数据包,都能恢复出完整的信源;(2)现有中低端嵌入式CPU都能胜任其计算量。
本申请人提出的第200810234515.2号中国发明专利申请,其冗余包的生成矩阵来自于对范得蒙矩阵(Vandermonde Matrix)进行变换,满足上述生成冗余包的编码算法,直接利用柯西矩阵(CauchyMatrix)或其变换矩阵作为冗余包的生成矩阵,也满足这一需求。
国内外有些专利和论文,直接利用范得蒙矩阵生成冗余包,并认为从信源包和此冗余包的集合中任意取出个数等同于信源包的数据包都能恢复出完整的信源,这是错误的。由于美国加州大学伯克利分校在编码理论上有较大影响,因而它对柯西编解码运算量片面的评估结果(当数据量为16MB时,Luby教授通过计算得到柯西编码运算的时间为基于稀疏矩阵的Tornado码的7114倍,柯西解码运算的时间为Tornado码的7582倍),误导了科研人员认为柯西编解码的运算量过大而不实用。原加州大学伯克利分校科学家提出的Raptor编解码(参见美国6307487号专利)最终被3GPP MBMS(Multimedia Broadcast/Multicast Service)及IETF RMT(ReliableMulticast Transport)所采纳,然而Raptor编解码在小分组的情况下编码效率并不理想,而加大分组又会导致解码时延增长。本发明直接使用高斯消元法进行柯西解码,通过查表法快速实现扩展伽罗瓦域(Extended Galois Field)GF(2q)域内的乘、除运算,并去除掉不必要的重复计算,将柯西解码的运算量大幅度降低到中低端嵌入式CPU就能胜任的范围,为本发明的差错重传机制奠定了计算基础。
发明内容
发明目的:本发明的目的是提供一种差错控制方法,有效地减少差错重传的次数,同时保证带宽利用率。
技术方案:一种差错控制方法,包括以下步骤:
(1)发信端发送信源包给收信端的同时或之后,生成相应的冗余包:假设信源包向量为X,编码矩阵为A,则冗余包向量Y=A*X,其中X为n行列向量,Y为m行列向量,A为m行n列矩阵。
生成A的方法为如下三种之一:
方法一:任取m行n列柯西矩阵为A。任取m个不同的值Ki(1≤i≤m)、n个不同的值Lj(1≤j≤n),并且满足(Ki+Lj)≠0,得m行n列柯西矩阵A如下:
方法二:对范得蒙矩阵进行变换,将范得蒙矩阵乘以任意可逆矩阵得到矩阵 其中K为n阶方阵,L为m行n列矩阵。由于矩阵K为范得蒙矩阵与可逆阵相乘的结果,所以矩阵K存在逆矩阵K-1,将矩阵L乘以矩阵K-1,得m行n列矩阵A=L*K-1。
方法三:对柯西矩阵进行变换,将柯西矩阵乘以任意可逆矩阵得到矩阵 其中K为n阶方阵,L为m行n列矩阵。由于矩阵K为柯西矩阵与可逆阵相乘的结果,所以矩阵K存在逆矩阵K-1,将矩阵L乘以矩阵K-1,得m行n列矩阵A=L*K-1。
(2)按预先设定的规则,发信端发送完信源包之后再发送冗余包给收信端,或当发信端收到收信端的重传请求之后,再发送出相应的信源包及冗余包。对于无反馈应用如多播,发信端在发出信源包之后,接着继续发送部分或全部冗余包给收信端。对于有反馈应用,如果发信端收到重传某些指定编号的信源包的请求,发信端重传这些指定编号的信源包之后再发送部分或全部冗余包给收信端;如果发信端收到的重传请求只包含缺少数据包的数量,则发信端发送部分或全部冗余包给收信端。
(3)按预先设定的规则,收信端不反馈信息给发信端,或将未收到信源包的编号或缺少数据包的数量反馈给发信端,要求发信端重传。对于无反馈应用如多播,因为发信端除了发出信源包之外还发出了冗余包,所以部分数据被丢失后,收信端仍然可能恢复出完整的信源。对于有反馈应用,收信端的重传请求中如果包含未收到信源包的编号,则发信端先发送这些编号的信源包,之后再发送冗余包,这样有助于减少收信端的解码运算量,如果收信端的重传请求只包含缺少数据包的数量,发信端就发送冗余包给收信端。
(4)收信端保存与发信端同样的编码矩阵A,如果收信端没有收全信源包,则再尝试利用冗余包恢复出信源包。
上等式中,I为n阶单位阵,A为m行n列编码矩阵。上等式左边取任意n行记为列向量G,取等式右边单位阵I及矩阵A对应的n行记为矩阵H,则下等式仍然成立:
G=H*X
当A为柯西矩阵时,根据柯西矩阵的性质可知:H为可逆矩阵;当A为步骤(1)对范得蒙矩阵或柯西矩阵进行变换而得到的矩阵时,利用本申请人提出的第200810234515.2号中国发明专利申请类似的方法,可证明H仍为可逆矩阵。因而可以解出X如下:
X=H-1*G
因而,从n个信源包和m个冗余包中,收信端只要收到其中任意n个数据包,都可以恢复出n个信源包。
为减少上述差错控制方法的计算量并提高信道的利用率,采用如下方法:
(1)生成冗余包及以冗余包恢复信源包相关的运算采用GF(2q)域内的运算。在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:Xj1、Xj2、Xj3......Xjs,信源包Xj切片后得到如下信源包矩阵X:
m个冗余包Yi构成冗余包向量Y,每个冗余包Yi由s个ByteYi1、Yi2、Yi3......Yis构成如下:
作为一个例子,取n=10,m=4,s=5,取GF(28)域内的不可约多项式Z(x)=1+x+x3+x4+x8,K1=1、K2=2、K3=3、K3=4,L1=5、L2=6、L3=7、L4=8、L5=9、L6=10、L7=11、L8=12、L9=13、L10=14。利用GF(28)域内的运算,求得4行10列的柯西矩阵即编码矩阵A如下:
假设信源包X1、X2、X3......X10构成的信源列向量X如下:
将每个信源包切成5片,每片1个Byte并转换成数值,信源列向量X变为如下:
上述数据代入冗余包生成等式Y=A*X后,10个信源包共50个切片生成4个冗余包共20个切片如下:
假设发信端将10个信源包和4个冗余包发出之后,收信端仅接收到信源包X1、X2、X3、X5、X6、X7、X8、X9,信源包X4及X10在传输过程中被丢失,同时收信端还收到冗余包Y2、Y3,冗余包Y1、Y4在传输过程中被丢失,则取Y=A*X的第2行及第3行,得到如下线性方程组:
Y2=209X1+203X2+82X3+41X4+192X5+232X6+79X7+229X8+199X9+176X10
Y3=123X1+82X2+203X3+192X4+41X5+79X6+232X7+199X8+229X9+225X10
收到的信源包切片X11、X21、X31、X51、X61、X71、X81、X91及冗余包切片Y21、Y31作为已知项,未收到的信源包切片X41、X101作为变量,将上等式的已知项合并,生成包含变量X41、X101的2元一次线性方程组如下:
41X41+176X101=Value_1
192X41+225X101=Value_2
使用高斯消元法可以得到计算X41及X101的线性关系式如下:
X41=156*Value_1+129*Value_2
X101=228*Value_1+254*Value_2
以此求得(X41、X101)。利用同样的方法,可以求得(X42、X102)、(X43、X103)、(X44、X104)、(X45、X105),最后组成2个未收到的信源包X4=pqrst,X10=UVXWY。由上述高斯消元法可知,当n较大时,解方程的主要运算量集中在合并已知项生成Value_1、Value_2的过程,高斯消元法虽然运算量与变量个数的3次方成正比,但与合并已知项的运算量相比仍只是很小一部分。
上面举例说明了生成冗余包及利用冗余包恢复信源包的方法,接下来举例说明差错重传的方法。
例如,发信端发出X1、X2、X3......X18、X19、X20总共20个信源包给收信端,通过一个丢包率高达50%的网络环境后,收信端仅接收到X1、X3、X5......X15、X17、X19共10个信源包,收信端发出重传请求给发信端:要求重传X2、X4、X6......X16、X18、X20共10个信源包,发信端收到这个重传请求之后,重发X2、X4、X6......X16、X18、X20之后再发出10个冗余包Y1、Y2、Y3......Y8、Y9、Y10,这20个数据包通过丢包率为50%的网络环境后,收信端只收到X2、X4、X6、X8、X10、X12及冗余包Y1、Y2、Y3、Y4,即收信端2次总计收到的信源包和冗余包的数量为20,则收信端可利用这20个数据包恢复出4个未收到的信源包X14、X16、X18、X20,从而收信端最终得到完整的20个信源包。
借鉴于TCP的滑动窗口技术,发信端在接收到针对某组信源包的重传请求之前,可以继续发送一组或多组信源包,以提高信道利用率。
Claims (4)
1、一种差错控制方法,其特征是该方法包括以下步骤:
(1)发信端发送信源包给收信端的同时或之后,生成相应的冗余包向量Y=A*X,其中X为信源包向量,A为编码矩阵;生成A的方法为:取任意柯西矩阵为A;
或对范得蒙矩阵进行变换,将范得蒙矩阵乘以任意可逆矩阵得到矩阵 ,其中K为方阵,取A=L*K-1;
或对柯西矩阵进行变换,将柯西矩阵乘以任意可逆矩阵得到矩阵 其中K为方阵,取A=L*K-1;
(2)按预先设定的规则,发信端发送完信源包之后再发送冗余包给收信端,或当发信端收到收信端的重传请求之后,再发送出相应的信源包及冗余包;
(3)按预先设定的规则,收信端不反馈信息给发信端,或将未收到信源包的编号或缺少数据包的数量反馈给发信端,要求发信端重传;
(4)收信端保存与发信端同样的编码矩阵A,如果收信端没有收全信源包,则再尝试利用冗余包恢复出信源包。
2、根据权利要求1所述的差错控制方法,其特征是:生成冗余包以及以冗余包恢复信源包相关的运算采用GF(2q)域内的运算。
3、根据权利要求2所述的差错控制方法,其特征是:通过查表法实现GF(2q)域内的乘、除运算。
4、根据权利要求1所述的差错控制方法,其特征是:以冗余包恢复信源包时,将未收到的信源包当成变量,以高斯消元法求解。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910029876 CN101552661B (zh) | 2009-03-26 | 2009-03-26 | 一种差错控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910029876 CN101552661B (zh) | 2009-03-26 | 2009-03-26 | 一种差错控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101552661A true CN101552661A (zh) | 2009-10-07 |
CN101552661B CN101552661B (zh) | 2013-01-30 |
Family
ID=41156671
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910029876 Expired - Fee Related CN101552661B (zh) | 2009-03-26 | 2009-03-26 | 一种差错控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101552661B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102761403A (zh) * | 2012-06-28 | 2012-10-31 | 深信服网络科技(深圳)有限公司 | 探测tcp丢包的方法、装置及tcp协议栈 |
CN102790666A (zh) * | 2011-05-17 | 2012-11-21 | 华为终端有限公司 | 差错控制的方法、接收端、发送端和系统 |
CN107342874A (zh) * | 2016-04-29 | 2017-11-10 | 阿姆有限公司 | 用于多播协议的反馈机制 |
CN109104262A (zh) * | 2018-07-03 | 2018-12-28 | 深圳市智慧海洋科技有限公司 | 一种水声无线可靠通信方法 |
CN110503935A (zh) * | 2019-07-16 | 2019-11-26 | 北京达佳互联信息技术有限公司 | 音频数据处理方法、装置、电子设备及存储介质 |
WO2022228381A1 (zh) * | 2021-04-29 | 2022-11-03 | 华为技术有限公司 | 一种编码方法、一种解码方法、发送端设备以及接收端设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10082967D2 (de) * | 1999-09-25 | 2002-07-11 | Manfred Rieck | Verfahren und Vorrichtungen zum Erzeugen eines die Korrektur von Übertragungsfehlern ermöglichenden digitalen Codes und zum fehlerkorrigierenden Decodieren eines solchen Codes |
CN101009663A (zh) * | 2007-01-19 | 2007-08-01 | 深圳市深信服电子科技有限公司 | 通过冗余提高数据传输速度的方法 |
CN100571217C (zh) * | 2007-09-19 | 2009-12-16 | 腾讯科技(深圳)有限公司 | 一种在数据传输过程中抵抗丢包的方法、收发装置及系统 |
-
2009
- 2009-03-26 CN CN 200910029876 patent/CN101552661B/zh not_active Expired - Fee Related
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102790666A (zh) * | 2011-05-17 | 2012-11-21 | 华为终端有限公司 | 差错控制的方法、接收端、发送端和系统 |
CN102790666B (zh) * | 2011-05-17 | 2015-04-08 | 华为终端有限公司 | 差错控制的方法、接收端、发送端和系统 |
CN102761403A (zh) * | 2012-06-28 | 2012-10-31 | 深信服网络科技(深圳)有限公司 | 探测tcp丢包的方法、装置及tcp协议栈 |
CN102761403B (zh) * | 2012-06-28 | 2014-12-17 | 深信服网络科技(深圳)有限公司 | 探测tcp丢包的方法、装置及tcp协议栈的探测端 |
CN107342874A (zh) * | 2016-04-29 | 2017-11-10 | 阿姆有限公司 | 用于多播协议的反馈机制 |
CN107342874B (zh) * | 2016-04-29 | 2021-05-28 | 阿姆有限公司 | 用于多播协议的反馈机制 |
CN109104262A (zh) * | 2018-07-03 | 2018-12-28 | 深圳市智慧海洋科技有限公司 | 一种水声无线可靠通信方法 |
CN110503935A (zh) * | 2019-07-16 | 2019-11-26 | 北京达佳互联信息技术有限公司 | 音频数据处理方法、装置、电子设备及存储介质 |
WO2022228381A1 (zh) * | 2021-04-29 | 2022-11-03 | 华为技术有限公司 | 一种编码方法、一种解码方法、发送端设备以及接收端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN101552661B (zh) | 2013-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101714915B (zh) | 一种数据重传方法及系统 | |
CN102638331B (zh) | 基于随机线性网络编码的无线可靠广播方法 | |
CN101552661B (zh) | 一种差错控制方法 | |
US8370700B2 (en) | Coding method, coding device, decoding method and decoding device for low density generator matrix code | |
CN102783074A (zh) | 用于wigig的应用层fec架构 | |
CN108966259B (zh) | 一种基于网络编码的抗干扰传输方法 | |
CN103716134B (zh) | 一次反馈条件下度渐增的喷泉码的编码方法 | |
CN101286819B (zh) | 一种数据接收方法及装置 | |
CN102957511B (zh) | 一种数据传输的自适应降速方法 | |
CN103067137A (zh) | 基于网络编码的多播重传方法 | |
CN101867441A (zh) | 星座图映射方法 | |
CN103152652B (zh) | 一种基于柯西rs编码的视频帧数据网络传输方法 | |
CN102239658B (zh) | 按需差错控制 | |
CN103634083A (zh) | 一种适用于传感器网络的动态网络编码丢包重传方法 | |
CN101459490B (zh) | 一种数据传输方法及装置 | |
CN102752184A (zh) | 用于实时多播业务的数据通信系统及其方法 | |
Choi | Temporally enhanced erasure codes for reliable communication protocols | |
CN101494517B (zh) | 一种数据传输方法及装置 | |
CN107005349B (zh) | 一种数据处理方法、基站以及终端设备 | |
CN102025473A (zh) | 分组网中基于代间网络编码的重传方法 | |
CN102065289B (zh) | 基于网络编码的可靠性视频传输方法及装置 | |
Xi et al. | A reliable broadcast transmission approach based on random linear network coding | |
CN101505201B (zh) | 一种差错控制方法 | |
CN104683070A (zh) | 基于随机线性网络编码的传输控制方法 | |
CN103067130B (zh) | 基于联合行列校验码和rs码的丢包恢复技术的无线通信方法 |
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: 20130130 Termination date: 20200326 |