使用基于子码元的代码来保护数据不被删除的制作方法

文档序号:7526178阅读:159来源:国知局
专利名称:使用基于子码元的代码来保护数据不被删除的制作方法
使用基于子码元的代码来保护数据不被删除本申请是国际申请日为2004年12月1日,申请号为PCT/US2004/040271,发明名称为"使用基于子码元的代码来保护数据不被删除"的申请的分案申请。相关申请的交叉引用本申请要求以下共同待批的美国临时专利申请的优先权于2003年12月1 日提交的名为"Protection of Data From Erasures Using Interleaved Transformations and Codes From Algebraic Geometry (使用来自代数几何的交叉变换和代码来保护 数据不被删除)"的美国临时专利申请60/526,218号(代理案巻号19186-005400US); 以及于2003年12月2日提交的名为"Protection of Data From Erasures Using Interleaved Transformations and Codes From Algebraic Geometry (使用来自代数几何 的交叉变换和代码来保护数据不被删除)"的美国临时专利申请60/526,452号,为 所有目的,这些申请通过引用包含在此,如同在本文中全文描述。本申请也引用以下共同所有的专利和申请,包括授予Luby的名为于通信系统的信息加成码生成器和解码器)"的美国专利6,307,487号(后文中称 为"Luby I")以及授予Shokrollahi等人的名为"Multi-Stage Code Generator and Decoder for Communication Systems (用于通信系统的多级码生成器和解码器)" 的美国专利(于2001年12月21日提交的美国专利申请10/032,156号)(后文中 称为"Shokrollahi I"),为所有目的,这些专利及申请中的每一个都通过引用包 含在此,如同在本文档中全文描述。发明背景通过受损(impaired)网络传输数据成为了众多研究的主题。在众多计算机网 络,诸如因特网或任何其它基于分组的网络上,通过首先将数据细分成分组,然后 经由网络独立地将分组路由至目的地来发送数据。在这样的网络中,通常预期到分 组的丢失。由于传输物理层上的错误、由于路由器或其它网点的溢出引起设备丢弃4分组等可能会丢失分组。为确保完整地接收数据,通常使用各种机制来保护数据免 于这种丢失。 一般而言,丢失的单位是分组,因为分组或者被正确接收,或者就被 认为丢失,并采取步骤来处理整个分组的丢失。因此,如果接收到分组的多个比特, 但没有正确完整地接收该分组,该整个分组也被认为丢失。丢失可以采用遗失整个 分组的形式,或可以采用确定分组中存在错误而产生不可靠的比特的形式,即删除 和出错。近年来,提出了两种类型的代码用于当预期在传输期间将丢失数据时保护数 据链式反应码和多级链式反应码。对具有A个码元的给定内容,这些代码产生实 际无限的输出码元流,使得能够从累积次数大约等于&的不同输出码元的任何集合 的接收中恢复原始的A个码元。除非另外指出,否则应该理解,如此处所使用的对 "一个链式反应码"或"多个链式反应码"的引用可应用于链式反应码,诸如在Lubyl和/或其它地方描述的那些,且也可用于多级链式反应码,诸如Shokrollahi I中描述的那些。使用链式反应码,对给定的A个输入码元的输入集合的可能的输出码元个数 被称为是"实际无限的",因为几乎在所有情况中,相对于实际生成的输出码元, 可能的输出码元个数要多得多,或者用于输入码元恢复的输出码元个数远小于可能 码元的个数。例如,如果有10,000比特的输入码元码,且一般预期的传输是大小 高达10吉比特的文件或流,则编码器应被设计成处理^:=1,000,000个码元的输入。 这样的解码器可被配置成能够生成多达232 (40亿)个没有重复的输出码元。如果 这还不够,则解码器可被配置成能够生成更多的没有重复的输出码元。当然,由于 所有的物理可实现系统都是有限的,因此解码器最终将到达一种状态,在该状态中 它重复,但总是可如此设计该状态,使得对任何预期的传输和出错率,没有重复的 输出码元的个数是实际无限的。此处,分组可携带一个或多个码元。尽管不是必需的,但输入码元中所编码 的比特数和输出码元中所编码的比特数可以是相同的。在某些实施例中,这些代码通过在输入码元上执行XOR来对数据编码,且它们通过在所接收的码元上执行XOR来解码,但也可使用或改为使用其它运算。XOR是有用的运算,因为它快速且可逆。其它运算也可提供这些优点。这些代码解决了将在其中发送方或接收方未知丢失率的受损网络上数据从一个或多个发送方分发到一个或多个接收方的问题。原因之一在于,当可能的输出码 元数相对于输入码元数较大时,接收方可以在即使接收方之间没有协调的情况下也5以该压倒性的多余(overwhelmingodds)而不重复由另一接收方发送的分组。该特 性被称为接收方是"信息加成(informationadditive)"的。在某些情况中,不必或不期望从给定内容中产生实际无限数量的输出码元。 例如,当接收方时间受限时,可能无法享受等待附加码元在给定时间间隔之后到达 的奢侈。例如,当将实况电影发送给一个或多个接收方时,情况就是这样。由于实 况传输的本质,不可能总是等待足够的编码数据到达接收方,因为接收方的反馈必 须与发送方的发送同步而不能被长时间地中断。在这样的情况中,预期到丢失,发 送方可对内容添加固定数量的附加的冗余码元,并将内容与冗余码元一起发送。如 果在内容传输期间发生的丢失的数量不大于冗余码元的个数,则预期将在接收方恢 复所丢失的数据。也可使用链式反应码来解决这个问题。在这样的情况中,编码器仅生成固定 数量的已编码数据,而不是实际无限的数据流。然而,在某些情况中,可能更适宜 使用不同的解决方案。例如,由于链式反应码的解码过程的概率性本质,这些过程 可能导致对非常小的内容大小的某些额外的开销。Reed-Solomon码("RS码")是用于处理受到编码器输出与解码器输入之间 的删除的数据的传输或存储的一类码。在本公开全文中,应理解,编码不限于传输, 而是在时间、空间等分离的编码器处表示经由当已编码数据流经信道时可能展现出 删除和/或错误的信道而来自解码器的原始数据。众多研究者曾对众多条件、数据 和信道广泛地研究了 RS码,且RS码已知具有某些性质。一种这样的条件被描述为"最优性条件"。RS码不在二元域而在更大的伽罗 瓦域上运算。RS码的基本性质之一是它们满足最优性条件,使得当使用RS码对A: 个码元编码时,产生用于存储或传输的《<A个码元,可从所编码的《个码元的A 个不同的接收码元的任何可能的组合中肯定地恢复原始的A:个码元。由于原始的A: 个码元不能从少于A个不同的接收码元中恢复,因此该接收码元数被认为是"最优 的"。该最优性是有代价的,因为编码所需的运算次数较多,且随着代码的变长(即, 使用伽罗瓦域),次数变多。使用RS码,提前确定最大块长度m其中块长度是 从原始的&个输入码元中生成的输出码元的个数。注意到,如果丢失了多于w-A个 输出码元,则不能恢复原始的A个输入码元。块长度w不能被任意加长来处理任何 预期的条件,因为对较大的块长度计算变得更难,且对非常大的块长度是不切实际 的。可以显示,对在以块长度"和维数A:的伽罗瓦域GF(2A)上定义的Reed-Solomon 码,产生输出码元的码元的XOR的次数平均等于"(h-A:"^/f28^)。使用这样的 Reed-Solomon码,使用A:个输入码元来产生总共w个输出码元,其中一般&个输 入码元包含在"个输出码元中,且"大于A:。与之对比,当使用链式反应码时,产 生输出码元的码元的XOR的平均次数等于独立于A:的常数或所产生的输出码元的 个数。对解码器也成立类似的结果。Reed-Solomon码的长度"不能超过2A+1 。这后一条件与通常将A选为2的幂的事实一起有时可能相当大地减慢了编码和解码过程。例如,假设原始内容大小为 32KB (其中1KB^024字节),每一分组可对1KB的输入数据进行编码,并总共 将要发送48个分组。在该示例中,内容可分为32个1KB的组块(每一组块分配 给将要发送的一个分组),然后每一组块可进一步细分成X个输入码元。然后可 以并行地应用Reed-Solomon编码过程X次,每次对来自每一组块的一个输入码元 进行运算(诸如对每一组块的所有第一输入码元进行运算,然后对每一组块的第二 输入码元进行运算等),这意味着每一运算考虑32个输入码元。假设这为Z个位 置中的每一个产生16个附加的输出码元,且将每一组Z个输出码元放在一起来产 生要发送的16个附加的分组,每一个长1KB。在该示例中,作为2的幂的最小可 接受的A是A二8,因为对A=4则将得到2A+1 = 17,这小于48。在该操作中, Reed-Solomon码在域GF(256)中运算,因此每一码元为1字节长,且%=1024。如 该示例所示,尽管这些码可满足最优性条件,但它们要求相当多的计算且对可能的 码长度有限制。引出对编码论的一些概念的介绍。传输粒度指的是作为单位发送和接收的对 象的大小。例如,分组网络以分组发送和接收数据。即使仅删除或破坏了分组的某 些比特,但整个分组被丢弃,并激活机制(前向纠错、请求再次发送等)来整体恢 复分组。因此,这样的对象以其整体或者被无错地接收或者被删除。在某些应用中, 对象大小可以是传输分组的大小或者更小。当预期到传输分组之间的丢失的相关性 时,则传输粒度的大于分组大小。在其它应用中,传输粒度可小于分组大小。计算粒度指的是在编码器和/或解码器中对其运算的对象的大小。因此,如果 编码器的基本运算为XOR 128字节单位,则这就是计算粒度。包含细分成128-字 节子码元的1024个字节的码元(例如,可以为分组)可以是分成8个子码元的码 元(如果所有子码元具有相同大小,这不是必需的,但较为简单)且在这些子码元 进行XOR。计算粒度因此为128字节。Reed-Solomon码的最优性的原因之一在于其传输粒度与其计算粒度之间的关 系。 一个示例将示出这一点。考虑域GF(256)上的Reed-Solomon码,它用于对给定文件编码,并经由信道 以各自大小为1024字节的分组发送所编码的信息。在该示例中,计算粒度可等于 128字节(1024字节除以8),而传输粒度等于1024字节。在该示例中,诸如比 特序列的XOR等基本运算在作为整体的128字节单位上进行。通常,编码和解码的效率随计算粒度而变化。可按照多种方式测量效率,而 测量的一种方法是按照编码或解码数据单位的运算的平均次数。通常,编码和解码 对较细的计算粒度效率较低,而对较粗的计算粒度效率较高。然而,较细计算粒度 的代码可提供较好的接收开销,即确保对表示向编码器提供的码元数上的正确解码 所需接收的额外码元数可保持非常小。作为结果,对给定码在编码效率与传输开销 之间存在折衷。Reed-Solomon码处于该编码折衷的一端,因为计算粒度足够小,使得在接收 了与编码一样多的数据之后,可保证对面临删除的数据的最优恢复。在另一端,在 二元字母表上定义的码(诸如用于在分组网络上传输的那些)具有与传输粒度一样 大的计算粒度,但可能在确保完整解码所需的接收开销上效率低下。如上所述,Reed-Solomon码需要预先确定最大出错率,即如果将A:个码元编 码成n个RS-码元,则大于fn-^A的出错率将使得解码器不能恢复所发送的数据。 因此,在由所发送数据的不成功恢复的最终概率测量的传输系统中,Reed-Solomon 码尽管其最优性但还是显示出正的失败概率。这是因为,存在由接收方接收的数据 量实际上小于所发送的数据的正概率。作为结果,最终,编码系统可能具有较低效 率的编码,而仍旧具有需要降低的失败概率。因此,需要的是这样一种用于编码和解码经由信道发送的数据的编码系统和 方法,它可如特定应用、可用的处理能力和数据集所需地折衷计算工作量和开销效 率。发明概述在根据本发明的通信系统的一个实施例中,编码器使用输出码元的子码元来 实现或控制计算工作量和开销效率的折衷,用于例如,以少量的开销效率为代价极 大地减少计算工作量。编码器读取构成输入文件或输入流的有序的多个输入码元, 并产生输出子码元。该有序的多个输入码元各自是从输入字母表中选择的,且所生成的输出子码元构成输出子码元字母表中的选择。输出子码元是使用应用于输入码 元的子码元的函数求值器生成的。在某些实施例中,可调用编码器一次或多次,每 一次产生一个输出子码元。然后可将输出子码元组装成输出码元,并将其发送至其 目的地。在根据本发明的各方面的一个编码过程中,用于从输入子码元生成输出子码元的函数是对输入子码元中某一些的XOR。在根据本发明的各个方面的另一编码 过程中,这些函数是通过使用GF(2)上的扩域的正则表达式将该码的生成矩阵或奇 偶校验矩阵中的每一条目变换成适当的二元矩阵,从在GF(2)的扩域上定义的线性码获得的。在根据本发明的各方面的解码器中,由接收方接收的输出子码元是从由基于 输入序列(文件、流等)的编码生成这些输出码元的一个发送方发送的输出码元中 获得的。因为在传输中输出码元可能丢失,即使解码器仅接收到所发送的输出码元 的任意一部分,它也正常操作。本发明提供诸如能够控制计算工作量与传输消息的折衷的优点。例如,放松 最优性要求,对可能的传输工作量的小小增加将可极大地减少计算工作量。使用某 些代码,可容易地得到附加的输出,使得可仅在接收超过最优性条件下解码所需的 码元数的相对少量的附加码元的情况下任意地减少解码失败率。在实现中,通过计 算单位(作为单独的编码或解码运算的一部分的数据之间的界限)和丢失单位(数 据之间的界限,其中如果单位界限内的任何数据不可用则,该单位界限内的所有数 据被认为丢失)可减少计算工作量。在具体实现中,丢失单位为码元或分组,计算 单位为子码元。可通过参考说明书的其余部分和附图来实现对此处所公开的本发明的本质和 优点的进一步理解。附图描述

图1是根据本发明的一个实施例的通信系统的框图。 图2是更详细示出的图1中的编码器1的一部分的框图。 图3示出了生成矩阵;图3A示出了 GF(4)域上的基础矩阵而图3B示出了 GF(2)上的二元生成矩阵。发明的详细描述在此处所述的示例中,描述了称为"基于子码元的编码"的编码方案,首先 是对本说明书中使用的各种术语的意义和范围的解释。编码器是从文件、流或其它输入数据源接收输入数据并对该数据编码使得信 道可能对数据产生的影响可由信道的另一端处的解码器纠正,而使解码器能以所需 的任何准确度重新生成原始数据的软件过程、硬件装置、组合等。使用基于子码元的编码,由发送方按所需从输入文件中生成输出码元。每一 输出码元包含一个或多个子码元,其中至少一个输出码元包含至少两个子码元。输 出码元内的每一子码元是通过使用编码器或解码器软件和/或硬件,对构成输入文 件的码元的子码元执行计算运算来生成的。 一旦生成之后,输出码元然后可置于分 组之中,并发送至其目的地,每一分组包含一个或多个输出码元。如此处所使用的,术语"文件"指的是存储在一个或多个源处且要作为一个 单位传递到一个或多个目的地的任何数据。因此,来自文件服务器或计算机存储设 备的文档、图像和文件都是可传递的"文件"的示例。文件可具有已知大小(诸如 存储在硬盘上的l兆图像)或可具有未知大小(诸如从流源的输出取出的文件)。 在任一方法中,文件都是输入码元的序列,其中每一输入码元具有一个文件中的位 置和一个值。传输是经由信道将数据从一个或多个发送方发送到一个或多个接收方以便传 递文件的过程。如果一个发送方经由完美的信道连接至任何数量的接收方,则由于 所有的数据都将被正确接收,因此所接收的数据可以是输入文件的精确副本。此处, 假定信道不是完美的,这也是大多数现实信道的情况。在众多信道不完善性之中, 所感兴趣的两个不完善性是数据删除和数据不完整性(这可作为数据删除的特殊情 况处理)。当信道丢失或掉落数据时发生数据删除。当接收方在数据中的某些已经 通过之前没有开始接收数据、接收方在传输结束之前停止接收、或接收方间断地停 止并再次开始接收数据时,发生数据不完整性。作为数据不完整性的一个示例,移 动卫星发送方可能发送表示输入文件的数据并在接收方处于范围之中之前开始发 送。 一旦接收方位于范围之中,可接收数据直到卫星移动到范围之外,此处接收方 可重定向其卫星天线(在此期间它没有接收数据)来开始接收关于由已经移动到范 围之内的另一卫星发送的同一输入文件的数据。如通过阅读本说明书应该显而易见的,由于接收方可如同接收方在全部时间10内都在范围之内,但直到接收方开始接收数据的那一点之前信道丢失所有的数据一 样来对待数据不完整性(且接收方具有相同的问题),因此数据不完整性是数据删 除的特殊情况。同样,如在通信系统设计中公知的,可单单通过掉落含有可检测错 误的所有数据块或码元,可检测错误可等价于删除。一般而言,传输是通过连接发送方和接收方的信道将数据从发送方移动到接 收方的动作。信道可以是实时信道,其中当信道获得数据时信道将数据从发送方移 动到接收方,或者信道可以是在数据从发送方到接收方的传输中存储某些或所有数 据的存储信道。后者的一个示例是磁盘存储或其它存储设备。在该示例中,生成数 据的程序或设备可被看作是发送方,它将数据发送给存储设备。接收方是从存储设 备中读取数据的程序或设备。发送方用来将数据放到存储设备上的机制、存储设备 本身以及接收方用来从存储设备中获得数据的机制共同构成了信道。如果存在这些 机制或存储设备可能丢失数据的几率,则将被作为信道中的数据删除来对待。1.基本实现在一个典型实现中,使用基于子码元的编码来发送文件涉及,从输入文件中 生成、形成或提取输入码元,为每一输入码元生成子码元、将这些子码元编码成一 个或多个输出子码元、从输出子码元中创建输出码元以及通过信道将该输出码元发 送到一个或多个接收方。使用基于子码元的编码来接收(或重建)输入文件的副本涉及,从一个或多 个数据流接收输出码元的某一集合或子集、为每一所接收到的输出码元生成子码 元、从所接收的输出子码元的值中解码输入子码元、从所解码的输入子码元中创建 输入码元、以及从输入码元中重新组装输入文件。在某些实施例中,例如当输入文 件可从所解码的输入子码元中直接重新组装时,丢弃了最后一步。现在将参考附图来描述本发明的各方面。图1是使用基于子码元的编码的通信系统100的框图。在通信系统100中, 向子码元生成器110提供输入文件101或输入流105。子码元生成器110从输入文 件或流中生成一个或多个输入子码元的序列(IS(0,0),IS(0,1),IS(0,2),...),每一输入码元具有一个值和两个位置(图1中示为括号内的整数)。子码元生成器110 将值m用作为其输入之一,这是每一输入或输出码元内的子码元的个数。子码元 生成器的输出被分成每组m个的组,使用第二括号内的整数标识每一组的元素, 它是0与m-l之间的整数。11如上所述,每一输入子码元的大小是编码系统的计算粒度,而传输粒度可以是大于或等于m倍计算粒度的任何数字。在此处所提供的示例中,为说明简单起见,通常假定子码元的大小都是相等的,但应该理解,大小可以有变化,且对正确 的运行而言不必使用恒定的大小。输入子码元的可能值,即其字母表, 一般是2M个码元的字母表,使得每一输 入码元对输入文件的M个比特编码。M的值一般由通信系统100的用途来确定, 但通用系统可包括对输入子码元生成器110的子码元大小输入,使得M可随用途 而有所变化。将输入子码元生成器110的输出提供给编码器115。编码器115从由输入子码元生成器110提供的输入子码元生成输出子码元,其值为oso/)。每一输出子码元的值是基于对一个或多个输入子码元的某一函数生成的,这些输入子码元在此处称为输出子码元的"相关联输入码元"或简称为"关 联"。函数("值函数")和关联的选择是根据以下将更详细描述的过程完成的。 通常,但不总是,M对输入子码元和输出子码元是相同的,即它们均对同样个数 的比特编码。在某些实施例中,编码器使用输入子码元的个数K来选择关联。如果K事先 未知,诸如当输入是流文件时,则K可以仅仅是估计值。值K也可由编码器115用来为输入子码元分配存储。编码器115向输出码元生成器135提供输出子码元。也向输出码元生成器135 提供每一码元内的子码元个数m。输出码元生成器135将图l中示为OS(0),OS(1),..., 等的其输出提供给发送模块140。发送模块140通过信道145将输出码元发送给接 收模块150。假定信道145为删除信道,但这不是通信系统100的正确操作的要求。 模块140、 145和150可以是任何合适的硬件组件、软件组件、物理介质或其任何 组合,只要发送模块140适于将输出码元以及关于它们的键的任何所需数据发送到 信道145,且接收模块150适于从信道145接收码元和可能某些关于它们的键的数 据。值K如果用于确定关联,则可经由信道145发送它,或者它可由编码器115 和解码器155的协议预先设定。如上所述,信道145可以是实时信道,诸如穿过因特网的路径或从电视发射 机到电视接收器的广播链路或从一点到另一点的电话连接,或者信道145可以是存 储信道,诸如CD-ROM、磁盘驱动器、万维网站等。信道145甚至可能是实时信 道和存储信道的组合,诸如当一人通过电话线将输入文件从个人计算机发送到因特 网服务供应商(ISP)时形成的信道,输入文件存储在Web服务器上,并随后经由因特网发送给接收方。因为假定信道145是删除信道,因此通信系统100不假定离开接收模块150 的输出码元与进入发送模块140的输出码元之间的一一对应。事实上,当信道145 包括分组网络时,通信系统100甚至可能不能假定通过信道145的传输中保持的任 何两个或多个分组的相对顺序。接收模块150将所接收到的码元RS(0)、 RS(1)提供给子码元生成器160。也向 该生成器给出每一所接收的输出码元包含的子码元个数的值m。该信息可在传输之 前在发送方与接收方之间共享,它可以是传输的一部分,或者如果它对接收方未知 且接收方不必立刻解码,则它可在稍后提供。如前所述,对所有接收的输出码元, 值m不必相同。子码元生成器160生成示为RS(O,O),RS(O,l),...,等的输出,并将其给予解码器 155。当每一所接收的码元包含/n个子码元时,子码元生成器160的输出被分成各 自含有m个的组,其中每一组对应于每一所接收的码元内的子码元。第二括号内 的整数对应于子码元在所接收的码元内的位置,而第一个整数对应于输出的子码元 是其子码元的所接收的码元。在这种情况中,子码元生成器的输出为RS(O,O),...,RS(O, m-l),RS(l,O),...RS(l, m-l)等。解码器155使用由子码元生成器160提供的输出子码元来恢复输入子码元(再 一次为IS(0,0),IS(0,1),IS(0,2),...)。解码器155将所恢复的输入子码元提供给码元 生成器162,后者又产生输入码元IS(O),IS(O),...等。将这些输入码元提供给输入文 件重新组装器165,后者生成输入文件101或输入流105的副本170。在某些应用 中,可绕过码元生成器162,而将输出直接转发给输入文件重新组装器165。2.基本编码器图2是基本编码器的示例性框图。对每一生成的输出码元230,它包含由FO/') 表示的函数求值器。在图2的示例中,附=4且总共存在12个输入子码元,由 201,...,212表示。函数求值器220计算输入子码元的函数来生成输出子码元230。 例如,在图2所示的情况中,函数求值器使用函数F(W)来从输入 IS(0,0),IS(0,3),IS(1,1),IS(1,3)和IS(2,2)中生成其输出OS(/,力的值。在某些实施例中,每一生成的输出子码元具有不同的相关联的函数,这是确 定性或伪随机生成的。在其它实施例中,函数求值器220可以对所生成的输出码元 中的多个是相同的,且可仅在用于函数的输入值集合中有所不同。例如,如果使用简单的交叉方案,则对/的所有值,F(/力都可以是相同的,且仅在输入值集合中有所不同。特别地,在该情况中,函数F(/力仅使用子码元IS(0力,IS(l^,IS(2j')等作为输入。如图2中所示,函数求值器220可以是其输入的任何函数。在某些实施例中, 尤其在那些期望具有线性码的情况中,应选择是自变量的线性函数的函数,例如自 变量的XOR。现在将描述可由函数求值器220使用的一类这样的线性函数,称为 "交叉变换"。3.交叉变换此处描述的某些过程使用了 Bloemer、 Kalfane、 Karp、 Karpinski、 Luby和 Zuckerman的国际计算机科学协会(ICSI)技术报告TR-95-048 "An XOR based erasure resilient coding scheme (基于XOR的删除弹性编码方案)"中隐含叙述的方法。考虑将以s个码元组织的输入数据变换成以Z个码元组织的输出数据的变换过 程,其中(输入数据和输出数据的)每一码元包含相等大小的m个子码元,且其 中变换使用f行s列的基础矩阵,每一基础矩阵的条目是有限域GF(2,中的值。该变换过程由将基础矩阵的每一条目变换成m行m列的二元矩阵开始。该变 换使用有限域的正则表达式作为GF(2)的模,这是有限代数和编码理论领域中普通 技术人员所公知的概念,因此将不在这里详细描述。对原始的基础矩阵的所有条目 应用该变换,产生Z*m行s*m列的新的二元矩阵。该变换过程对输入数据的 个子码元应用该新的矩阵来得出"m个输出子码元,新二元矩阵每行一个。新二元 矩阵的每一行对应于一个子码元,其中该变换过程通过对行和列中有一个1的每一 输入子码元进行XOR来确定给定的输出子码元。以这种方式创建的最终的f*m个 子码元被分组成各自具有m个子码元的组来产生Z个码元。注意,该变换过程仅需要执行子码元的XOR。它执行XOR的次数取决于原 始矩阵,但该次数平均等于^^m/2。作为上述变换过程的一个示例,考虑图3A中所示的在域GF(4)二(0,l,a,c^上 的^ = 5而?二2的基础矩阵。对GF(4), m=2。使用GF(4)在对于基(l,a〉的GF(2) 上的正则表达式,图3A的基础矩阵变换成图3B中所示的新二元矩阵,它是一m =10行产m二4列的矩阵。使用该变换后的矩阵,包含5个码元、每一码元包含2个子码元的原始数据如下变换四个输出子码元中的第一个被计算为输入子码元3,6,7,9,10的XOR,因 为这些是图3B的矩阵的第一行中"1"的位置。注意,"1"是对二元值的一种状 态的任意指示,因此应将其视为使用输入码元的标志。第二个输出子码元被计算为输入子码元4,5,6,8,9的XOR。第三输出子码元被 计算为输入子码元1,5,8,10的XOR。最后,最后一个(第四个)输出子码元被计 算为输入子码元2,6,7,8,9,10的XOR。在该情形中,执行子码元的XOR的总次数 为20。如下给出该特定示例中的函数F(O〕<formula>formula see original document page 15</formula>其中符号"+"表示XOR。交叉变换可用作使用由GF(2)扩域上的其生成矩阵和奇偶校验矩阵定义的代 码的编码器和/或解码器的实施例的一部分。4. 基本输出码元生成器图4是输出码元生成器135的框图。该图例示了 m=4且3个输出码元的情况。 在该示例中,输出码元生成器135将四个输出码元的组,示为OS(/,0), OS(U), OS(/,2),...,OS(/,m-l)(该附图中标为401,...412)打包成输出码元OS(/)(在附图中 标为420、 430和440)。对所有输出码元选择相同的值m仅是为了简明起见。该 值对不同的输出码元可有所不同,只要输出码元生成器指示对要生成的输出码元值 m是什么。5. 基本子码元生成器图5是基本子码元生成器160的框图。该图例示了m二4,且3个所接收码元 RS(O)、 RS(l)、 RS(2)的情况。子码元生成器160的运算对应于图4中给出的输出 码元生成器135的运算的逆运算。在图5中给出的示例中,子码元生成器135为每一所接收到的码元创建4个 子码元(图中子码元标记为501,...,512)。子码元1^(/,0),...,1^(。)对应于所接收 到的码元RS(O (该附图中标记为520、 530和540)。对所有所接收的码元选择相同的值m仅是为了简明起见。该值对不同的所接收码元可有所不同,只要对每一 所接收的码元向子码元生成器提供对该码元的值m为何的指示。这样的指示可通 过来自发送器的带外信息或者通过由发送方和接收方共享的预先确定的算法来提 供给子码元生成器。
6.使用GF(2)扩域上的交叉变换和代码的基于子码元的编码
如上所述,基于子码元的编码可与此处所述的交叉变换一起使用来设计用于
在预期删除的分组网络上传输的代码,使得该代码显示出关于计算和删除粒度与工
作量的期望折衷。
在一个实施例中,编码器和解码器被配置成使用在扩域GF(2,上定义的代码。 该代码可由生成矩阵、奇偶校验矩阵或达到类似结果的某种抽象编码过程或规则集 来定义。为表达简明起见,此处示例使用生成矩阵来描述编码,但应理解,可对相 同、相似、不同的结果使用其它方法。
假设生成矩阵具有"行和A:列。假定该代码是系统的,可以理解,该代码也 可以改为非系统的。
使用系统码,包含前&列的子矩阵是单位矩阵。包含其余的r-"4列的子矩 阵此处称为C。该矩阵C具有r行和A列。假定要编码的数据是A个码元(或分组) 长。则编码过程是将以上的交叉变换过程应用于矩阵C和要编码的数据的过程。
与以往的编码方法相比,这种编码方法的优点之一在于,传输方案的开销性 质由有限域GF(2,上原始码的结构来支配,而计算是在域GF(2)上执行的。对代码 参数的明智选择,诸如此处所述的或根据此处所述的选择方法,可能获得提供上述 折衷的优异平衡的编码结构。
由于子码元的存在,解码过程更为复杂,且一般以如下所述的步骤进行。值 得注意的是,解码计算工作量仍旧可比用来获得相同的错误恢复结果的前述方法 少。
在一个示例解码过程中,假定所编码的数据分组各自具有相关联的位置,且 该位置可由1到n的整数表示。前々个位置被称为系统位置,在传输之前处于这些 位置中的所编码数据与要编码的数据完全相同。其余位置中的数据(或分组)称为 冗余分组。如前所述,假定给出一个生成矩阵,其中前A行形成单位矩阵,而其余 的r行形成矩阵C。
在解码过程的一个实施例中,步骤如下
161) 记录和存储已删除系统分组的位置^,化...,^,其中e是这样的已删除分组
的个数。如果没有这样的分组存在,声明成功解码并退出。
2) 置计数器/=0。
3) 当解码不成功(g卩,还没有恢复所有的原始分组),执行以下的子步骤(a) 到(e):
(a) 找出6+/个非己删除冗余分组。如果少于6+/个非已删除冗余分组 可用,则声明解码出错。否则,由户^2,...,^+/表示"/个非已删除 冗余分组的位置。
(b) 形成包含对应于位置/^,^...,;^的行和对应于位置^&…,&的列 的生成矩阵的子矩阵。将这个矩阵称为"。注意到该矩阵为C的子 矩阵。
(c) 找出D的可逆的eXe子矩阵,例如通过高斯消去法或显式确定或 其它方法。如果这样的子矩阵不存在,则对计数器/增加l并前进 至步骤3。
(d) 如果这样的可逆子矩阵存在,则记录其行"…,re,并在基域上计算 其逆,将该逆称为5。
(e) 对矩阵5和包含位置nre处的冗余分组的数据应用交叉变换来 获得位置^^...,&处的已删除系统分组。声明解码成功并停止。
以下是使用一个特定值集的这种解码过程的详细示例。假设&=16且"=24, 并假设在传输了 24个分组之后,接收到位置1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 20, 22处的分组。丢失了位置3和IO处的系统分组,而其它14个正确接收。 所以《产3而《2=10。将计数器/置为0,获得2+0=2个非已删除冗余分组。这可 以是位置18和20处的分组,所以/^-18而/72-20。设置具有生成矩阵的行18和 20以及列3和10的矩阵,即行2和4以及列3和10的C的子矩阵。假设该矩阵 的秩不为2,则步骤3 (c)不成功。增加计数器/为l,并返回至步骤3,该过程 继续。此时,例如设置内=18, / 2=20且p3=22,可形成包含生成矩阵的这几行 和列3和IO的C的子矩阵。如果该矩阵满秩,则步骤3 (c)将成功,且对应于非 已删除系统位置18和22的行1和3将形成可逆子矩阵。在步骤3 (d)计算该矩 阵的逆,称为5,并将交叉变换过程(步骤3 (e))应用于该矩阵和包含位置18 和22处冗余分组的数据,这将产生在位置3和10处的已删除分组的值。
在某些实施例中,在步骤2中,可对值/选择某个大于0的数字。这可在例如如果预期对所有的小值/,步骤3 (C)将不成功时发生。有可能有众多其它的变化, 本领域的普通技术人员可在阅读本公开之后推导出这些变化。
7.代数几何码
结合交叉变换的子码元解码过程产生尤其良好结果的一类代码为代数几何码 类,即"AG码"。AG码是Reed-Solomon码的扩展,它允许在同一域上构造远长 于Reed-Solomon码的代码。这些代码是使用有限域上的曲线的点以及曲线在规定 的极点上的函数构造的。对这些代码的构造对有限代数和编码论领域的普通技术人 员而言是公知的,从而不在此处详细描述。这些代码的各种文献之一是G叩pa,V.D 的"Geometry and Codes (几何与代码)"(Kluwer Academic Publisher 1988)。
AG码共享许多Reed-Solomon码的性质。它们通常可由显式的生成矩阵和奇 偶校验矩阵描述,且给定其维数A和块长度",其最小距离不能小于g,其 中g是作为底层曲线的参数的非负整数。该参数被称为曲线的亏格(genus)。亏 格0的曲线一般产生Reed-Solomon码,而较高亏格的曲线可产生就块长度而言有 实质改进(虽然以较小的最小距离为代价)的代码。
例如,如果底层域为GF(16),则最长的可能的Reed-Solomon码具有块长度 17。与之对比,可能显示出具有块长度24的亏格1的AG码。该代码的最小距离 比最优值小l。这样的代码可用于以下示例性情况中。该情况仅用于说明性的目的 描述,而不旨在限制应用的范围。
假设将经由网络传输16KB长的一段数据,其中分组具有1KB的有效负载。 而且,假设针对33%的丢失保护数据。然后,使用亏格1、块长度24且维数16 的AG码的生成矩阵,并使用上述交叉变换过程,可能产生24KB的经编码的内容。 由于每一子码元是分组有效负载(即,码元)的1/4,该变换涉及大小为256字节 的子码元的XOR。得到的代码具有以1的概率从接收的17个分组的任意集合中解 码原始的16个分组,并以大约96%的概率形成接收的16个分组的集合(即,16 个分组的可能组合的96%使得可从该组合中解码原始的16个分组)的能力。
可使AG码成为系统的。例如,在以上情况中,所编码数据的前16KB可等于 原始的16KB,附加的8KB表示冗余数据。为产生该冗余数据,对8行16列的矩 阵应用上述交叉变换过程。在这样的情况中,产生冗余数据的子码元XOR的次数 平均为8*16*4/2,即256。在该操作之后,所产生的经编码的数据包含96个子码 元,使得每个生成的子码元的子码元XOR次数为256/96,稍小于3。如果以上使用Reed-Solomon码,则其上定义Reed-Solomon码、作为2的幂
的最小可能的域扩张需要为GF(256)。在这种情况中,子码元将与前一情况中的一 半一样大,且它平均需要8*16*8/2 = 512次子码元的XOR来产生冗余数据,这又 转化成前一情况的编码速度的一半。
以下描述了可用于在分组有效负载大小为1 KB的基于分组的网络上传输多 达64 KB大小的内容的某种AG码。这些示例仅用于说明性的目的,而不应解释 为限制本发明的范围。这些示例由所编码内容的长度而不是原始内容的长度作为参 数。对后者的转换可通过期望的保护丢失率来进行。例如,当所编码内容的长度为 24KB,且预期25Q^的丢失时,则原始内容的长度可设为等于18KB。
对多达8KB的所编码内容大小而言,可能使用来自带有9个有理点的最大可 能个数的GF(4)上的椭圆曲线的AG码。这样的曲线的一个示例为Hermitian曲线。 对应于该曲线的代码保证可能从最多超过1个附加分组来恢复内容。对该任务的 Reed-Solomon码将必须在域GF(16)中操作,并大约折半此示例中构造的AG码的 编码和解码速度。对多达24KB的所编码内容大小而言,可能使用来自带有25个有理点的最大 可能个数的GF(16)上的椭圆曲线的AG码。这样的曲线对本领域的普通技术人员 而言是公知的,因此可容易地构造相应的代码。对这些代码,保证上述解码过程中 的索引/永远不会超过l。换言之,如果所接收的分组个数比原始分组个数大1, 则解码过程即成功。然而,如果所接收到的分组的个数等于原始分组的个数,则存 在与解码器相关联的失败的某种概率。在此情况中,该概率可在数学上计算,大约
等于1/25,即4%。
对多达32KB的所编码内容大小而言,可能使用来自带有33个点的GF (16) 上亏格2的最大超椭圆曲线的AG码。该曲线对本领域的普通技术人员而言也是公 知的,相关联代码的构造也是如此。在该情况中,以上过程中的索引/永不超过2。 对多达37KB的所编码内容大小而言,可能使用来自带有38个点的GF (16)上亏 格3的最大曲线的AG码。在该情况中,以上过程中的索引/永不超过3。对多达 44KB的所编码内容大小而言,可能使用来自带有38个点的GF (16)上亏格4的 最大曲线的AG码。在该情况中,以上过程中的索引/永不超过4。对多达64KB 的所编码内容大小而言,可能使用带有65个有理点的GF (16)上的Hermitian曲 线。在该情况中,索引/永不超过值6。
在以上情况的每一个中,从任何&个所接收到的分组中都能以某一良好的概率恢复包含A个分组的原始内容,且该概率随这所接收到的分组的个数超过A而快 速增加,如果超过的量等于所使用的曲线的亏格则到达概率1。
8.随机码
与交叉变换结合的基于子码元的编码过程对块码决不特别。 一般而言,本发 明的教导可受益于有限域GF(2m)上的任何码,或者更一般地,任何有限域GF⑧ 上的任何码。例如,该过程可与随机码结合来获得有益的效果。
随机码可用作块码,或类似于链式反应码,对其而言,可生成的输出码元的 个数预先是不固定的,而约为大于输入码元个数的数量级。具体地,可能的输出码 元的个数可以比任何预期的丢失模式大,使得发送器(或一组发送器,可能未协调 的)不必为期望成功传输而在一段时间上重复输出码元。尽管没有物理过程可以真 正是无限的且可重复的,但可容易地使用如Luby I或他处所述的链式反应码,使 得给定输入序列的输出码元的个数是实际无限的。因为输出码元的不相关序列不太 可能重叠(由于给定输入序列的输出码元的较大空间),这些码有时被称为"信息 加成码"。
对随机块码,生成矩阵是通过随机或伪随机地选择GF(力中的元素获得的。应 理解,如此处所用,"随机"也可包含"伪随机",但为改进本公开的可读性起见, 没有在所有地方都明确地指出。域大小g负责矩阵的秩性质。 一般而言,《越大,
则给定维数的矩阵具有满秩的可能性越高。上述解码过程中步骤3 (c)的成功与 否是由矩阵的秩性质确定的。
对GF(《)上的随机链式反应码,每一输出码元是使用如Luby I和Shokrollahi I 中所述的键来生成的。对每一键,选择输入码元的子集,并随之对输入码元元素中 的每一个选择域GF(q)中的随机或伪随机元素。概念上,形成包含GF(《)中所选值 以及对对应于未选择的输入码元的那些位置的0的向量,且将结合交叉变换的基于 子码元的编码过程应用于该矩阵。创建矩阵的中间步骤纯粹是概念性的,可在应用 中整体省略。
作为示例,再次考虑GF(16)上的代码的情况。A行A列的随机矩阵在有大约等 于93X的概率的GF(16)上可逆。(应理解,除非以其它方式指出,否则对此处描 述为"随机"的任何事物,也可使用"伪随机"。)这意味着,在应用上述解码过 程中,在93%的情况中,计数器/保持为0,因此不需要接收超过原始数据大小的 数据。&行^+/列的随机矩阵有大约等于99.5%的概率具有秩&。这意味着,仅在0.5%的情况中,计数器/才会达到2。类似地,/永不超过2的概率大约为99.7%, /永不超过3的概率大约为99.998%, /永不超过4的概率大约为99.99998。%,诸 如此类,且它超过6的概率大约为4 x l(T9。表1示出了解码器对所接收的超额分 组的个数的各个其它值的出错概率。表1中的数据示出了可能构造具有非常良好的 开销的随机码,因为它们是在较小的域上构建的,因此它们具有比Reed-Solomon 码更有效编码和解码算法。
表1
所接收到的超额分组
0
1
2
4
6
7
8
9
10
解码出错概率
6.6 x 10—2 4.2 x IO-3 2.7x 10-4
1.7 x l(T5
1.2 x 10 6.4 x 10-
-6
4.0 x 10
.9
2.5 x 10
1.6 x 10 9.8 x 10 6.1 x 10
-10
■13
■14
域GF(4)上发生类似的结果。表2示出了 GF(4)上作为所接收的超额分组的个 数的函数的解码器的出错概率。注意,相比GF(16)上的代码,GF(4)增加了一倍的
编码和解码速度。
表2
所接收到的超额分组
0
1
2
解码出错概率
3.1 x 10"
8.2 x 10-2
2.1 x 10-2
5.2 x 10-3
4
1.3 x 10
.3
215 3.3 x l(T
6 8.2 x l(T:
7 2.1 x
8 5.1x10-'
9 1.3x10—
10 3.2x10—
以上的数字示出,即使在非常小的开销的情况下,基于信息加成码的GF(4) 或GF(16)上的随机码也运行得非常优异。
尽管示出了与交叉变换一起使用的非Reed-Solomon编码的若干示例,但其它 非Reed-Solomon基础矩阵也可起作用。
变化
在某些变化中,并行操作编码器来更快速地生成输出码元。为了获得子码元 操作的某些便利,并行编码器模块应该是相互依赖而不是完全独立操作的。例如, 并行编码器可协调在多个输入码元中对子码元集合的选择用于值函数的应用,使得 子码元在多个输入码元中混合且来自输入码元内的不同子码元位置。
结论
基于子码元的编码可使用少于Reed-Solomon码的算术运算来操作。注意到, 如果要求了最优性条件,则这样的代码不存在,但是通过放松该要求,则可能有所 感兴趣的代码。尽管可示出,对这样的码不得不丧失就必须接收以便能够解码原始 内容的输出码元的个数而言的最优性条件,但是某类代码显示出示出它们在大多数 情况中类似于Reed-Solomon码执行,且仅在少量情况中需要额外的码元来恢复原 始内容的合理的统计特性。
观察到不总是要求绝对的最优性,且这并不总是导向对数据的完全恢复,通 常可以相当少的计算工作量来得到足够好的接近最优传输效率。例如,使用具有较 小字母表的代码极大地减少了计算工作量,同时仅引起对绝对最优性的稍微放松。
在某些较佳实施例中,向经由可能有损的通信介质通信的两个或多个多用途 计算机提供执行上述通信过程的指令集(或软件)。机器的个数可从一个发送方和 一个接收方变化到任何数量的发送和/或接收的机器。连接机器的通信介质可以是 有线、光学、无线等。上述通信系统具有多种用途,通过阅读本说明书这是显而易见的。
以上描述是说明性而非限制性的。在审阅本公开之后,对本领域的技术人员 而言,本发明的各种变化是显而易见的。从而,本发明的范围不是参考以上描述确 定的,而是参考所附权利要求书以及其等效实施方式的全部范围来确定的。
权利要求
1.一种用于在目的地经由通信信道从源接收数据的方法,其中所要接收的数据被排列成输入码元的有序集合,所述方法包括经由所述通信信道接收多个输出码元,其中所述多个输出码元使得对与输入码元的有序集合相等大小的所接收的输出码元的至少一个可能的集合,需要附加接收输出码元来从所述多个输出码元中完全地重新生成所述输入码元的有序集合;从所述多个输出码元中生成多个输出子码元,其中输出子码元使用值函数和一组关联对应于一个或多个输入子码元,其中输入子码元是输入码元的一部分或全部,且至少一个输入码元被分成两个或多个输入子码元,且每一输入子码元可使用其输入码元内唯一的索引来标识,其中所述一组关联标识应用所述值函数的所述输入子码元,其中至少一个输出子码元是各自含有其输入码元内的不同索引的多个输入子码元的函数;从所述多个输出子码元中生成多个输入子码元;以及从所述多个输入子码元中重新生成所述输入码元的有序集合。
2. 如权利要求l所述的方法,其特征在于,所述给定输入码元的集合的可能 的输出码元的个数相对于重新生成所述输入码元的集合所需的输出码元的个数实 际上是无限的。
3. 如权利要求l所述的方法,其特征在于,至少一个输出子码元对应于一个 以上输入子码元、且少于所述输入子码元集合中的所有输入子码元、且少于至少一 个输入码元中的所有子码元。
4. 如权利要求1所述的方法,其特征在于,所述输入码元的每一个被分成公 共个数的子码元,且所述公共个数大于l。
5. 如权利要求1所述的方法,其特征在于,所述值函数对所有的输出子码元 相同。
6. 如权利要求1所述的方法,其特征在于,所述值函数对至少两个输出子码元不同。
7. 如权利要求1所述的方法,其特征在于,所述一组关联是使用链式反应编 码过程来确定的。
8. 如权利要求1所述的方法,其特征在于,所述值函数是所述一组关联的线性函数。
9. 如权利要求8所述的方法,其特征在于,所述线性函数是使用交叉变换过 程导出的。
10. 如权利要求l所述的方法,其特征在于,所述值函数随输出子码元变化,所述值函数是使用交叉变换过程导出的所述一组关联的线性函数,其中多个值函数是使用应用于在至少高于其素域2次的有限域上定义的代码的生成矩阵的交叉变 换过程得到的。
11. 如权利要求10所述的方法,其特征在于,所述代码是在亏格大于O的曲 线上定义的代数几何码。
12. 如权利要求IO所述的方法,其特征在于,所述代码是随机码。
13. 如权利要求IO所述的方法,其特征在于,所述代码是在作为高于其素域 至少2次的扩张的有限域上的链式反应码。
14. 如权利要求13所述的方法,其特征在于,所述链式反应码是随机码。
15. —种恢复经编码的数据的方法,其中所述数据被分成s个码元,s是大于 l的整数,其中A个码元足以恢复所述数据,A小于l其中s个码元用于构成?个 子码元,/是大于1的整数,其中s个码元中的至少一个用于构成Z个子码元中的 一个以上,其中子码元用于恢复其它子码元,所述方法包括-获得n个子码元,其中所述w个子码元不包括所述f个子码元中的至少一个; 从所述《个子码元中恢复不包括在所述w个子码元中的所述f个子码元中的一 个或多个;从所述"个子码元和恢复?个子码元中的一个或多个中恢复至少A个码元;以及从所述至少A个码元中恢复所述数据。
全文摘要
本发明涉及一种使用基于子码元的代码来保护数据不被删除的方法。编码器(115)读取构成输入文件(101)或输入流(105)的有序的多个输入码元(110),并产生输出子码元。该有序的多个输入码元各自是从输入字母表中选择的,且所生成的输出子码元包含输出子码元字母表中的选择。输出子码元是使用应用于输入码元的子码元的函数求值器来生成的。用于生成输出子码元的函数可以是对输入子码元中的某一些的XOR,且这些函数是从在扩域GF(2)上定义的线性码中获得的。在解码器(155)中,由接收方接收的输出子码元是从由基于输入序列的编码生成输出码元的一个发送方发送的这些输出子码元中获得的。
文档编号H03M7/00GK101582698SQ20091014160
公开日2009年11月18日 申请日期2004年12月1日 优先权日2003年12月1日
发明者M·A·肖克罗拉西 申请人:数字方敦股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1