一种在数据传输过程中抵抗丢包的方法、收发装置及系统的制作方法

文档序号:7661540阅读:177来源:国知局
专利名称:一种在数据传输过程中抵抗丢包的方法、收发装置及系统的制作方法
技术领域
本发明涉及数据分组传输技术,特别涉及一种能够抵抗数据包在传输过程 中丢失的数据分组传输方法、收发装置及系统。
背景技术
数字信号在传输过程中,往往由于传输信道存在各种各样的干扰,使得传 输的数据出现误码。为了能够及时发现和纠正错误,在数字信号发送前都需要 进行信道编码,信道编码通过添加适当的冗余开销和进行适当算法变换,使得 接收端能够发现数据在传输过程中产生的错误。对于一些复杂的信道编码算法, 不仅能发现错误的位置,还能在一定程度上纠正所产生的错误。例如,在基于 移动通信网络的多媒体应用中,多媒体数据需要通过无线信道传送到用户终端, 由于无线传输环境中各种干扰的存在,如空间的电磁干扰、多径干扰、各种噪 声等,在传送的数据流中经常会产生误码或数据丟失,导致接收端的图像产生 跳跃、不连续、出现马赛克等现象。在基于分组交换的IP网络中,数据链路层位于物理层和网络层之间,负责 建立相邻节点之间的数据链路并在该链路上传送数据帧。数据链路层的基本功能之一就是进行差错控制,差错控制的设计有两种编码策略 一种是纠错码方 案,需要让每个传输分组携带足够多的冗余信息,以便在接收端能发现并自动 纠正传输差错,如海明码、里德-所罗门码、卷积码、交织码等等;另一种是检 错码方案,需要让分组携带一定的冗余信息,根据这些冗佘信息,接收端可以 发现出现了差错,但不能确定是哪一个或哪一些位是错误的,并且自己不能纠 正传输差错,如奇偶检验码、循环冗余编码等。通过以上编码策略,在接收端进行解码后,若发现帧数据损坏,如果能够
进行纠错则进行纠错,如果不能则需要通知发送端进行重传。发送端对在预定 时间内没有发回响应的帧,会重新发送这一帧。可以看出,数据链路层的差错 控制并不能在接收端通过编码策略对丢失的数据帧进行恢复,只能对接收到的 数据帧进行差错判断和纠错,即在数据链路层并不能抵抗数据帧的丢失。在基于分组交换的IP网络中,网络层的上一层是传输层,传输层主要负责 确保数据可靠、顺序、无差错地从发送节点传输到目的节点。传输层按照网络 能处理的最大尺寸将较长的数据包进行强制分割,例如,以太网无法接收大于 1500字节的数据包,此种情况下,发送节点的传输层需要将本节点高层来的数据分割成小于1500字节的数据片,同时为每个数据片设置一个序列号,以便数据到达接收节点的传输层时,能以正确的顺序重组,该过程即被称为排序。由于网络环境的复杂,尤其广域网,在发送端和接收端之间有可能跨越很 大的地理空间和多种传输网络,加上网络拥塞等情况的发生,很容易导致数据包的丢失。对于可靠的、面向连接传输层协议,如TCP/IP ( Transmission Control Protocol)协议,解决办法是在排序后发现有丟失的数据包后,通知发送端再次 发送;对于不可靠、非面向连接的传输层协议如UDP(UserDatag ram Protocol)协议,则没有重传机制来保证接收端能接收到所有的数据包。举例来说,视频捕捉设备捕捉到的图像帧经图像编码、压缩后形成二进制 原始数据流,将该二进制原始数据流通过IP网络传送到接收端,由于网络最大 传输单元(MTU, Maximum Transmission Unit)的限制,很可能该二进制原始 数据流的尺寸会远远大于MTU,此时,就得将二进制原始数据流进行分割形成 原始数据包。如果直接将分割后的原始数据包通过网络传送到接收端,由于网 络环境的复杂性和不稳定性,在传输过程中,很可能会丢失某个或某几个原始 数据包,若有原始数据包丢失,就会导致在接收端无法还原出完整的图像帧数 据,此时,接收端要么要求发送端重传,要么就使用错误的数据进行图像帧的 还原。但是,若重传该图像帧的所有原始数据包,则会增加网络传输的开销; 若直接使用错误的数据进行强制还原,就会出现还原后的图像跳跃、不连续、 出现马赛克的现象。
综上所述,现有技术中虽然可以通过纠错码技术恢复数据,但对数据包的 丟失无抵抗能力。虽然可以通过重传机制重新获得被丢失的数据包,但接收端 无法直接进行丢包的恢复。

发明内容
有鉴于此,本发明的目的之一是提供一种在数据传输过程中抵抗丟包的方 法,能解决在接收端不能对连续丢包进行恢复的技术问题。 为达到上述目的,本发明的技术方案是这样实现的一种在数据传输过程中抵抗丢包的方法,包括以下步骤A、 发送端将原始数据块分割为原始数据包序列,对原始数据包序列进行 分组,并生成各分组的冗余包;B、 将所述分组及其冗余包发送到接收端;C、 接收端对原始数据包进行整理,若有原始数据包丢失,则利用所述原 始数据包所在分组中未丟失的原始数据包及该分组的冗余包恢复所述丢失的原 始数据包;D、 对所述原始数据包进行还原。基于上述技术方案,步骤A中,所述冗余包由其所在分组中所有原始数据 包按位异或后产生。基于上述技术方案,步骤A中,釆用如下步骤对所述原始数据包序列进行 分组Al、设定需要添加的冗余包个数N;A2、依次使用原始数据包的序列编号对所述冗余包个数N取余,将所得余 数相同的原始数据包分为一组。基于上述技术方案,步骤B中,首先发送所述分组,然后再发送所述冗余包。基于上述技术方案,步骤C中,所述整理是指对所述分组中的原始数据包 按其编号进行重新排序。基于上述技术方案,步骤C中,利用所述丢失的原始数据包所在分组中剩 余未丢失的原始数据包与该分组的冗余包恢复所述丟失的原始数据包。基于上述技术方案,步骤C中,通过将所述丟失的原始数据包所在分组中 剩余未丢失的原始数据包与该分组的冗余包按位异或的方式,恢复所述丢失的 原始数据包。基于上述技术方案,步骤C中,当无法对所述分组中丢失的原始数据包进 行恢复时,接收端向发送端发送信号要求发送端重新发送所所述丢失的原始数 据包或所述分组。本发明的另一目的是提供一种在数据传输过程中抵抗丢包的发送装置。为 达到上述目的,本发明的技术方案是这样实现的一种在数据传输过程中抵抗丢包的发送装置,包括 数据包形成模块,用于将待发送的原始数据块分割成原始数据包序列; 冗余包产生模块,用于对原始数据包序列进行分组,并生成各分组的冗余包。基于上述技术方案,所述冗余包产生模块包括用于对原始数据包序列进 行分组的分组模块;用于生成各分组的冗余包的冗余生成模块。基于上述技术方案,所述分组模块是指对原始数据包序列进行取余分组的 分组模块。基于上述技术方案,所述冗余生成模块是指能够对所述分组中的原始数据包进行按位异或,生成所述冗余包的冗余生成模块。本发明的另一目的是提供一种在数据传输过程中抵抗丢包的接收装置。为达到上述目的,本发明的技术方案是这样实现的一种在数据传输过程中抵抗丢包的接收装置,包括 数据包整理模块,用于对接收到的分组中的原始数据包进行重新排序; 恢复还原模块,用于利用冗余包恢复所述分组中丢失的原始数据包以及将所述原始数据包还原成原始数据块。基于上述技术方案,所述恢复还原模块进一步包括 丢包判断模块,用于根据数据包整理模块的输出结果判断所述分组中是否 有原始数据包丢失;恢复判断模块,用于判断是否能够恢复所丢失的原始数据包以及在不能恢复的情况下触发重传机制;恢复模块,用于恢复所丢失的原始数据包;还原模块,用于将所述原始数据包恢复成原始数据块。本发明的另一目的是提供一种在数据传输过程中抵抗丢包的系统。为达到 上述目的,本发明的技术方案是这样实现的一种在数据传输过程中抵抗丟包的系统,包括发送端和接收端,发送端包括数据包形成模块,用于将待发送的原始数据块分割成原始数据包序列; 冗余包产生模块,用于对原始数据包序列进行分组,并生成各分组的冗余包;接收端包括数据包整理模块,用于对接收到的分组中的原始数据包进行重新排序;恢复还原模块,用于利用冗余包恢复所述分组中丢失的原始数据包以及将 所述原始数据包还原成原始数据块。基于上述技术方案,所述冗余包产生模块包括用于对原始数据包序列进 行分组的分组模块;用于生成各分组的冗余包的的冗佘生成模块。基于上述技术方案,所述恢复还原模块进一步包括丢包判断模块,用于根据数据包整理模块的输出结果判断所述分组中是否 有原始数据包丟失;恢复判断模块,用于判断是否能够恢复所丟失的原始数据包以及在不能恢 复的情况下触发重传机制;恢复模块,用于恢复所丢失的原始数据包;还原模块,用于将所述原始数据包恢复成原始数据块。基于上述技术方案,所述分组模块是指对原始数据包序列进行取余分组的分组模块,所述冗余生成模块是指能够对所述分组中的原始数据包进行按位异或,生成所述冗余包的冗余生成模块。本发明所提供的抵抗丢包的方法、装置及系统,具有以下的优点和特点 1 )本发明通过对原始数据包进行交错分组,使得相邻数据包在空间上进行分离,在网络状况突发变坏的情况下,对连续丢包具有很好的抵抗作用;2) 本发明在网络的高层,如链路层对原始数据包进行分组,不涉及底层编码模块及硬件设计,实现成本低;3) 本发明对高层大的数据块进行分组,能够对原始数据进行细颗粒度的恢复,减少了在网络状况不好的情况下,由于重传数据所占用的带宽。


图la为本发明的系统框架图;图lb为本发明发送端冗余包产生模块组成图;图lc为本发明接收端恢复还原模块组成图;图2为本发明的处理流程图。
具体实施方式
本发明的核心思想是对原始数据包进行取余交错分组,并在每个分组中 添加冗余包,当接收端发现丢包时,可通过相应分组中接收到的所有数据包以 及冗余包来恢复丢失的数据包。如此,可在很大程度上抵抗原始数据包的丢包。具体来说就是,将上层应用传来的大的原始数据块,如整幅图像数据,分 成小的顺序编号的原始数据包,原始数据包的大小依据MTU进行设置。分包 后对原始数据包序列进行交错分组,并添加冗余包。在接收端,对所接收到的 原始数据包分组中的原始数据包进行重新排序,若发现有原始数据包丢失,则利用冗余包以及未丟失的原始数据包对丢失的原始数据包进行恢复;若没有原始数据包丟失,则丟弃冗余包,还原出原始数据送上层应用。 以下结合附图对本发明进行详细的描述。 图la示例了本发明的系统框架,该系统包括发送端和接收端两部分,发送 端进一步包括数据包形成模块和冗余包产生模块,其中,数据包形成模块用于 将上层应用传来的待发送的应用数据块分解为顺序编号的原始数据包序列。冗 余包产生模块用于对原始数据包序列进行分组,并生成各分组的冗余包。。接收端进一步包括数据包整理模块和恢复还原模块,其中,数据包整理模 块用于接收分组数据,并对所接收到的所有分组内的原始数据包进行重新排序。 恢复还原模块用于利用冗余包恢复所述分组中丢失的原始数据包以及将所述原 始数据包还原成原始数据块,然后发送给上层应用。如图lb所示,冗余包产生模块由分组模块和冗余生成模块组成,分组模块 用于对顺序编号的原始数据包进行交错分组,本发明一最佳实施例中釆用取余 方式分组;冗余生成模块用于生成各分组的冗余包,本发明一最佳实施例中釆 用异或方式产生各分组的冗余包。如图1C所示,恢复还原模块由丢包判断模块、恢复判断模块、恢复模块、 还原模块组成,丢包判断模块用于判断经过重新排序整理后的分组中是否有原 始数据包丟失,若有原始数据包丢失,将分组中剩余原始数据包及冗余包发送给恢复判断模块;若没有原始数据包丢失,则将分组中剩余原始数据包直接发送给还原模块。恢复判断模块用于判断是否能够恢复所丢失的原始数据包,若 能恢复则将分组中剩余原始数据包及冗余包发送给恢复模块,若不能恢复则直 接向发送端反馈,要求发送端重新发送所丟失得原始数据包或该原始数据包对 应的整个分组。恢复模块,用于通过丢失的原始数据包所在分组的冗余包及该 分组内的其它原始数据包对丢失的原始数据包进行恢复。还原模块,用于对原 始数据包进行重新组合还原成原始数据块,然后发送给上层应用。以下结合图2对本发明提出的在数据传输过程中抵抗丢包的方法进行详细 地描述,该方法包括以下步骤步骤1:当发送端有原始数据需要发送时,首先将原始数据块分割成连续 的多个原始数据包,并将分割后的原始数据包顺序编号。这里,原始数据块的大小由上层应用决定,如视频图像一帧即构成一个原
始数据块,对于上层应用连续输出数据流的情况,也可根据需要自行设定。原 始数据包的大小根据网络中MTU及网络的传输质量进行设定。步骤2:发送端对原始数据包序列进行交错分组,并生成各分组的冗余包;交错分组的方式可以有很多种,如取余分组法,随机抽取法等。本发明一 最佳实施例中,釆用取余分组方式,取余的基数根据网络传输过程中的丢包率 进行设置,若网络传输环境较差,丢包率比较严重,则可以将其设置大一点。假设希望增加N个冗余包,则利用原始数据包的序号对原始数据包进行对N取 余分组,分为N个组。每个分组都对应一个冗余包,冗余包的生成方式可以有 很多种,本发明一最佳实施例中釆用按位异或的方式获得冗余包,即每一分组 的冗余包由该分组内所有原始数据包依次异或而得到。例如 一个原始数据块总共可分为12个连续的原始数据包,分别是P,、 P2、 P3、 P4、 P5、 P6、 P7、 P8、 P9、 P1()、 Pu、 P12,根据传输信道干扰状况,希望 将抗误码强度设为3,即希望增加3个冗余包,则将每个包的序号对3取余, 得到三个原始数据包的分组,分别是余数为1的原始数据包分组Z, (Pp P4、 P7、 Ph)),余数为2的原始数据包分组22= (P2、 P5、 P8、 P ),及余数为O的 原始数据包分组23= (P3、 P6、 P9、 P12),那么,增加的三个冗余包Xp X2、X3分别对应三个原始数据包分组ZpZ2、Z3,Xi = P^P^P/T^XfP^P^P^Pu,X3 = P3AP6AP9AP12,其中,A符号表示按位异或。所述原始数据包括各种类型的数据,不限制于多媒体数据,由于本发明有 很好的抵抗连续丢包的能力,因此本发明所揭示的技术方案应用于任何数据类 型都能够获得很好的效果。步骤3:发送端通过传输信道将原始数据分组及冗余包发送到接收端。本发明不限制数据的发送方式, 一最佳实施例为以分组顺序发送,如先 发送Zp再发送Z2、再发送Z3,最后发送冗余包,这样,可以在时间和空间上 将原始数据进行交错,减少数据的前后关联性,从而获得更好的抗丢包的效果。步骤4:接收端对接收到的所有原始数据包分组中所包含的原始数据包进 行重新排序。
步骤5:接收端判断是否有原始数据包丢失,若有丢包发生,则执行步骤6; 如果没有丢包发生,则执行步骤9。在一最佳实施例中,每一个原始数据包都包含有一个包头,包头中包含有 分组标识、原始数据包序号、分组总包数等信息。由于在发送端对原始数据进 行了顺序编号,若在接收端对接收到的原始数据包进行重新排序后发现中间有 不连续的情况,或者发现发送端发送的原始数据包的总个数与接收端接收到的 原始数据包的总个数不一致,则表明有数据包在传输过程中丢失。步骤6:接收端判断能否恢复丢失的原始数据包,若可以恢复,则执行步 骤8;若不可以恢复,则执行步骤7。此步骤中,不可恢复的情况是指 一个原始数据包分组中同时丢失了两个 或两个以上的包的情况。或者说, 一个原始数据包分组同时丢失了两个或两个 以上的原始数据包,或一个原始数据包分组中丢失了一个或一个以上的原始数 据包的同时还丢失了该分组的冗余包。步骤7:触发其它处理机制,如,向发送端反馈信息进行重传等。重传的机制可以针对单个丢失的数据包设计,这样在一个分组出现丢包的 情况下只需要重传所丢失的原始数据包即可,大大的减少了网络数据流量。也 可以针对整个分组,这样可以简化程序设计。步骤8:接收端利用冗余包进行原始数据包的恢复,恢复后执行步骤9。恢复的方法是将原始数据包分组Zj中未丢失的所有原始数据包与属于该 冗余数据分组的冗余包Xi进行异或操作。举例说明,若&= (Pp P4、 P7、 P10) 中的P4丢失,则恢复的方式是P4 = P,P,P矿X,。步骤9:去除冗余包,将原始数据包重新组合还原成原始数据块后送往上 层应用,结東当前处理流程。本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下, 本领域技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改 变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1、一种在数据传输过程中抵抗丢包的方法,其特征在于,包括以下步骤A、发送端将原始数据块分割为原始数据包序列,对原始数据包序列进行分组,并生成各分组的冗余包;B、将所述分组及其冗余包发送到接收端;C、接收端对原始数据包进行整理,若有原始数据包丢失,则利用所述原始数据包所在分组中未丢失的原始数据包及该分组的冗余包恢复所述丢失的原始数据包;D、对所述原始数据包进行还原。
2、 根据权利要求1所述的方法,其特征在于,步骤A中,所述冗余包由其所在分组中所有原始数据包按位异或后产生。
3、 根据权利要求1所述的方法,其特征在于,步骤A中,釆用如下步骤对所述原始数据包序列进行分组Al、设定需要添加的冗余包个数N;A2、依次使用原始数据包的序列编号对所述冗余包个数N取余,将所得余数相同的原始数据包分为一组。
4、 根据权利要求1所述的方法,其特征在于,步骤B中,首先发送所述 分组,然后再发送所述冗余包。
5、 根据权利要求1所述的方法,其特征在于,步骤C中,所述整理是指对所述分组中的原始数据包按其编号进行重新排序。
6、 根据权利要求1至5中任意一项权利要求所述的方法,其特征在于,步 骤C中,利用所述丢失的原始数据包所在分组中剩余未丢失的原始数据包与该 分组的冗余包恢复所述丟失的原始数据包。
7、 根据权利要求6所述的方法,其特征在于,步骤C中,通过将所述丢失的原始数据包所在分组中剩余未丢失的原始数据包与该分组的冗余包按位异 或的方式,恢复所述丢失的原始数据包。
8、 根据权利要求1所述的方法,其特征在于,步骤C中,当无法对所述 分组中丢失的原始数据包进行恢复时,接收端向发送端发送信号要求发送端重 新发送所所述丢失的原始数据包或所述分组。
9、 一种在数据传输过程中抵抗丢包的发送装置,其特征在于,包括数据包形成模块,用于将待发送的原始数据块分割成原始数据包序列;冗余包产生模块,用于对原始数据包序列进行分组,并生成各分组的冗余包。
10、 根据权利要求9所述的发送装置,其特征在于,所述冗余包产生模块 包括用于对原始数据包序列进行分组的分组模块;用于生成各分组的冗余包 的冗余生成模块。
11、 根据权利要求10所述的发送装置,其特征在于,所述分组模块是指对 原始数据包序列进行取余分组的分组模块。
12、 根据权利要求10所述的发送装置,其特征在于,所述冗余生成模块是 指能够对所述分组中的原始数据包进行按位异或,生成所述冗余包的冗余生成 模块。
13、 一种在数据传输过程中抵抗丢包的接收装置,其特征在于,包括 数据包整理模块,用于对接收到的分组中的原始数据包进行重新排序; 恢复还原模块,用于利用冗余包恢复所述分组中丢失的原始数据包以及将所述原始数据包还原成原始数据块。
14、 根据权利要求13所述的接收装置,其特征在于,所述恢复还原模块进 一步包括丢包判断模块,用于根据数据包整理模块的输出结果判断所述分组中是否有原始数据包丢失;恢复判断模块,用于判断是否能够恢复所丢失的原始数据包以及在不能恢复的情况下触发重传机制;恢复模块,用于恢复所丢失的原始数据包; 还原模块,用于将所述原始数据包恢复成原始数据块。
15、 一种在数据传输过程中抵抗丢包的系统,包括发送端和接收端,其特 征在于,发送端包括数据包形成模块,用于将待发送的原始数据块分割成原始数据包序列; 冗余包产生模块,用于对原始数据包序列进行分组,并生成各分组的冗余包;接收端包括数据包整理模块,用于对接收到的分组中的原始数据包进行重新排序;恢复还原模块,用于利用冗余包恢复所述分组中丟失的原始数据包以及将 所述原始数据包还原成原始数据块。
16、 根据权利要求15所述的系统,其特征在于,所述冗余包产生模块包括:用于对原始数据包序列进行分组的分组模块;用于生成各分组的冗余包的的冗余生成模块。
17、 根据权利要求15或16所述的系统,其特征在于,所述恢复还原模块 进一步包括丢包判断模块,用于根据数据包整理模块的输出结果判断所述分组中是否 有原始数据包丟失;恢复判断模块,用于判断是否能够恢复所丢失的原始数据包以及在不能恢复的情况下触发重传机制;恢复模块,用于恢复所丢失的原始数据包; 还原模块,用于将所述原始数据包恢复成原始数据块。
18、 根据权利要求16所述的系统,其特征在于,所述分组模块是指对原始数据包序列进行取余分组的分组模块,所述冗余生成模块是指能够对所述分组 中的原始数据包进行按位异或,生成所述冗余包的冗余生成模块。
全文摘要
本发明涉及数据分组传输技术,特别涉及一种能够抵抗数据包在传输过程中丢失的数据分组传输方法及发送和接收装置。通过本发明解决在接收端不能对连续丢包进行恢复的技术问题。实现方法是发送端对原始数据包序列进行交错分组,并生成各分组的冗余包;接收端对原始数据包进行重新排序,若有原始包丢失则使用属于该丢失的原始数据包所在分组的冗余包对其进行恢复。本发明实现方法简单,对连续丢包有很好的抵抗效果,提升了用户体验。
文档编号H04L1/00GK101119319SQ200710152218
公开日2008年2月6日 申请日期2007年9月19日 优先权日2007年9月19日
发明者健 何, 静 吕, 陈敬昌 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1