生成和传达源标识信息以实现可靠的通信.pdf

上传人:r7 文档编号:1071123 上传时间:2018-03-29 格式:PDF 页数:52 大小:3.52MB
返回 下载 相关 举报
摘要
申请专利号:

CN200880107205.2

申请日:

2008.09.12

公开号:

CN101802797A

公开日:

2010.08.11

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 13/14申请日:20080912|||公开

IPC分类号:

G06F13/14

主分类号:

G06F13/14

申请人:

数字方敦股份有限公司

发明人:

S·陈; M·G·卢比; M·普拉萨德; W·锡德; T·斯托克汉姆

地址:

美国加利福尼亚州

优先权:

2007.09.12 US 60/971,884; 2008.08.29 US 61/093,277

专利代理机构:

上海专利商标事务所有限公司 31100

代理人:

陈炜;袁逸

PDF下载: PDF下载
内容摘要

提供了从源分组流生成源标识信息并通过通信信道可靠地将此源标识信息从源传送到目的地的方法。该方法作用于源分组集,其中要被传送的每一个源分组的源标识信息是随关联的源块中的所有或大多数其他源分组的源标识信息一起推导和交付的。该方法包括使交付源标识信息所需的网络带宽最小化的技术、以及克服网络受损的技术。当与FEC技术、重传技术、或FEC技术和重传技术的组合相结合时,这里所描述的方法允许接收机恢复丢失的源分组,而同时确保原始源分组不会被修改并藉此确保对旧式接收机的后向兼容。

权利要求书

1: 一种用于生成和传输源数据的源标识数据的方法,其中所述源数据已经被分为K个源数据单元,其中K大于1,其中所述源标识数据能被用来标识源数据单元相对于其他源数据单元的位置、以及标识丢失的或损坏的源数据单元,所述方法包括: 从所述K个源数据单元生成源标识数据; 将第一数据流传输给接收机,其中,所述第一数据流包括一组所述源数据单元;以及 将第二数据流传输给所述接收机,其中,所述第二数据流包括所述源标识数据; 其中,所述第二数据流不同于所述第一数据流,其中,所述源标识数据不同于在所述第一数据流上传送的所述源数据单元的集合,并且其中,所述源标识数据可用于标识在所述第一数据流上传送的源数据单元的所述集合中的源数据单元。
2: 如权利要求1所述的方法,其特征在于,所述源标识数据使所述第一和第二数据流的接收方能确定所述K个源数据单元的用于生成所述源标识数据的标识标签。
3: 如权利要求1所述的方法,其特征在于,所述源标识数据使所述第一和第二数据流的接收方能确定任何源数据单元的标识标签。
4: 如权利要求1所述的方法,其特征在于,所述源标识数据使所述第一和第二数据流的接收方能确定给定源数据单元相对于所有所述源数据单元的排序的位置。
5: 如权利要求1所述的方法,其特征在于,所述源标识数据使所述第一和第二数据流的接收方能确定给定源数据单元相对于所有所述源数据单元的由源决定的次序序列的位置。
6: 如权利要求1所述的方法,其特征在于,所述第二数据流进一步包括所述源数据单元的修复数据。
7: 如权利要求1所述的方法,其特征在于,所述第二数据流进一步包括所述源标识数据的修复数据。
8: 如权利要求1所述的方法,其特征在于,所述第一数据流是经由DVB‑T传输的,并且其中所述第二数据流是经由DVB‑H传输的。
9: 如权利要求1所述的方法,其特征在于,进一步包括: 从所述接收机接收对附加的数据的请求;以及 将第三数据流传输给所述接收机。
10: 如权利要求9所述的方法,其特征在于,所述第三数据流包括第二组源数据单元。
11: 如权利要求9所述的方法,其特征在于,所述第三数据流包括所述源数据单元的修复数据。
12: 如权利要求1所述的方法,其特征在于,从所述K个源数据单元生成源标识数据包括: 从所述K个源数据单元中的每一个创建有序集合S; i)将散列函数Hi应用于S的每个成员,其中Hi将S的成员映射到可能的L个散列输出中的一个,并且其中Hi将S的至少X个成员映射到唯一性的散列输出; ii)创建对应于所述L个散列输出的矢量,其中所述矢量指示所述L个散列输出中的哪个遇到冲突以及所述L个散列输出中的哪个唯一性地映射到S的成员; iii)创建集合Si,其包括S的不映射到唯一性散列输出的成员; iv)迭代步骤i‑iii,直到要么Si是空集,要么已经执行了最大次数的迭代,其中对于步骤i‑iii的每一次迭代,Si被用作S,其中对于每一次迭代,Hi是不同于在步骤i‑iii的先前迭代期间所使用的散列函数的散列函数,其中对于每次迭代,L和X的值能够改变;以及 从在步骤i‑iii的每次迭代期间创建的矢量生成源标识数据。
13: 权利要求12所述的方法,其特征在于,所述矢量进一步指示S的每个唯一性地映射的成员在S中的位置,所述方法进一步包括: 从S中的由在步骤i‑iii的每次迭代期间创建的矢量所指示的唯一性地映射的成员的位置生成位置到序列映射。
14: 一种用于生成和传输源数据的源标识数据的设备,其中所述源数据已经被分为K个源数据单元,其中K大于1,其中所述源标识数据能被用来标识源数据单元相对于其他源数据单元的位置、以及标识丢失的或损坏的源数据单元,所述设备包括: 用于从所述K个源数据单元生成源标识数据的装置; 用于将第一数据流传输给接收机的装置,其中,所述第一数据流包括一组所述源数据单元;以及 用于将第二数据流传输给所述接收机的装置,其中,所述第二数据流包括所述源标识数据; 其中,所述第二数据流不同于所述第一数据流,其中,所述源标识数据不同于在所述第一数据流上传送的所述源数据单元的集合,并且其中,所述源标识数据可用于标识在所述第一数据流上传送的源数据单元的所述集合中的源数据单元。
15: 一种用于接收源标识数据并将所述源标识数据与源数据关联的方法,其中所述源数据已经被分为K个源数据单元,其中K大于1,其中所述源标识数据能被用来标识源数据单元相对于其他源数据单元的位置以及标识丢失的或损坏的源数据单元,所述方法包括: 从第一数据流接收多个源数据单元; 从第二数据流接收源标识数据,其中,所述第二数据流不同于所述第一数据流;以及 将从所述第二数据流中的分组集合获取的所述源标识数据与从所述第一数据流中的分组集合获取的所述多个源数据单元关联,其中,所述源标识数据可用于标识所述多个源数据单元中的源数据单元。
16: 如权利要求15所述的方法,其特征在于,进一步包括: 确定所接收到的多个源数据单元的标识标签。
17: 如权利要求15所述的方法,其特征在于,进一步包括: 确定不是所接收到的多个源数据单元的成员的任何源数据单元的标识标签。
18: 如权利要求15所述的方法,进一步包括: 确定所述多个源数据单元中的源数据单元相对于所有所述源数据单元的排序的位置。
19: 如权利要求15所述的方法,其特征在于,进一步包括: 确定所述多个源数据单元中的源数据单元相对于所有所述源数据单元的由源确定的次序序列的位置。
20: 如权利要求15所述的方法,其特征在于,进一步包括: 从所述第二数据流接收所述多个源数据单元的修复数据。
21: 如权利要求15所述的方法,其特征在于,进一步包括: 从所述第二数据流接收所述源标识数据的修复数据。
22: 如权利要求15所述的方法,其特征在于,所述第一数据流是经由DVB‑T接收的,并且其中所述第二数据流是经由DVB‑H接收的。
23: 如权利要求15所述的方法,其特征在于,进一步包括: 分析所述源标识数据和所述多个源数据单元,以确定所述K个源数据单元中是否有任何源数据单元没有被接收到;以及 如果所述K个源数据单元中有任何源数据单元没有被接收到,则请求附加的数据。
24: 如权利要求23所述的方法,其特征在于,进一步包括: 从第三数据流接收所述附加的数据。
25: 如权利要求15所述的方法,其特征在于,将所述源标识数据与所述多个源数据单元关联包括: 从所述多个源数据单元中的每个创建集合S; i)将散列函数Hi应用于S的每个成员以获得与S的每个成员关联的散列输出,其中Hi将S的每个成员映射到可能的L个散列输出中的一个; ii)确定所述散列输出中的哪个唯一性地标识与所述散列输出关联的所述源数据单元; iii)如果确定散列输出的确唯一性地标识源数据单元,则从S中移除所述被唯一性地标识的源数据单元,并将来自所述源标识数据的标识数据的真子集与所述被唯一性地标识的源数据单元关联;以及 iv)如果确定所述散列输出中的一个散列输出不是唯一性的,则迭代步骤i‑iii,直到S是空集,或者直到已经执行了最大次数的迭代,其中对于每一次迭代,Hi是不同于在步骤i‑iii的先前迭代期间所使用的散列函数的散列函数,其中L的值潜在地不同。
26: 如权利要求25所述的方法,其特征在于,为步骤i‑iv的每一次迭代应用的Hi是根据所述源标识数据来确定的。
27: 如权利要求25所述的方法,其特征在于,确定所述散列输出中的哪个唯一性地标识与所述散列输出关联的源数据单元包括: 将每个散列输出与来自所述源标识数据的矢量进行比较,其中所述矢量对应于所述可能的L个散列输出,并且其中所述矢量指示所述L个散列输出中的哪个遇到冲突以及所述L个散列输出中的哪个唯一性地映射到S的成员。
28: 如权利要求27所述的方法,其特征在于,所述源标识数据包括位置到序列映射,并且其中将来自所述源标识数据的标识数据的真子集与所述被唯一性地标识的源数据单元关联包括将来自所述位置到序列映射的位置信息与所述被唯一性地标识的源数据单元关联。
29: 如权利要求25所述的方法,其特征在于,进一步包括: 如果源数据单元与来自所述源标识数据的标识数据的真子集关联,则将所述源数据单元传递给解码器。
30: 如权利要求25所述的方法,其特征在于,进一步包括: 如果源数据单元不与来自所述源标识数据的标识数据的真子集关联,则丢弃所述源数据单元。
31: 一种用于接收源标识数据并将所述源标识数据与源数据关联的设备,其中所述源数据已经被分为K个源数据单元,其中K大于1,其中所述源标识数据能被用来标识源数据单元相对于其他源数据单元的位置以及标识丢失的或损坏的源数据单元,所述设备包括: 用于从第一数据流接收多个源数据单元的装置; 用于从第二数据流接收源标识数据的装置,其中,所述第二数据流不同于所述第一数据流;以及 用于将从所述第二数据流中的分组集合获取的所述源标识数据与从所述第一数据流中的分组集合获取的所述多个源数据单元关联的装置,其中,所述源标识数据可用于标识所述多个源数据单元中的源数据单元。

说明书


生成和传达源标识信息以实现可靠的通信

     优先权

    本申请根据35U.S.C.119(e)要求于2007年9月12日提交的非临时美国申请S/N.60/971,884和于2008年8月29日提交的美国申请S/N.61/093,277的权益。所有这些申请通过援引纳入于此用于一切目的。

    交叉引用

    下面的参考文献被包括于此并通过援引纳入以用于一切目的:

    授予Luby的标题为“Information Additive Code Generator and Decoder forCommunication Systems(用于通信系统的信息加性码生成器和解码器)”的美国专利No.6,307,487(下面简称为“Luby I”);

    授予Luby等人的标题为“File Download and Streaming System(文件下载和流式播送系统)”的美国专利No.7,418,651(下面简称为“Luby II”);

    授予Shokrollahi等人的标题为“Multi‑Stage Code Generator and Decoderfor Communication Systems(用于通信系统的多级码生成器和解码器)”的美国专利No.7,068,729(下面简称为“Shokrollahi I”);

    2006年2月16日公布的Luby等人的标题为“Method and Apparatus forFast Encoding of Data Symbols According to Half‑Weight Codes(根据半权重码的快速编码数据码元的方法和装置)”的美国已公布专利申请No.2006/0036930(下面简称为“Luby III”);以及

    授予Shokrollahi等人的标题为“Systems and Processes for Decoding ChainReaction Codes Through Inactivation(通过灭活来解码链式反应码的系统和过程)”的美国专利No.6,856,263(下面简称为“Shokrollahi II”)。

    2007年12月27日公布的Watson等人的标题为“Code Generator andDecoder for Communications Systems Operating Using Hybrid Codes to Allow forMultiple Efficient Users ofthe Communications Systems(用于通信系统的使用混合码来操作以允许通信系统有多个高效率用户的码生成器和解码器)”的美国已公布专利申请No.2007/0300127(下面简称为“Watson”)。

    2007年7月24日公布的Jens Rasmussen等人的标题为“System andMethod for Reliably Communicating the Content of a Live Data Stream(用于可靠地传达实况数据流的内容的系统和方法)”的美国专利No.7,249,291(下面简称为“Rasmussen”)。

    【发明领域】

    本发明涉及在通信系统中编码和解码数据,更具体来说,涉及编码和解码数据以解决通信中的差错和间隙的通信系统。

     发明背景

    通过通信信道在发送方和接收方之间传输文件和流一直是许多文献的主题。优选情况下,接收方希望以一定程度的确定性接收由发送方通过信道传送的数据的确切的副本。在信道没有理想的保真度的场合——这也刻画了大多数物理可实现的系统的特征,一个顾虑是如何应对在传输中丢失或损坏的数据。丢失的数据(擦除)往往比损坏的数据(差错)更加容易应对,因为接收方并不总能认识到传送的数据已经被损坏。

    已开发出许多纠错码,以纠正擦除和/或差错。通常,基于某些有关正藉以传输数据的信道的失真的信息、以及正被传输的数据的特性来选取所使用的特定的码。例如,在已知信道具有长失真期的场合,突发差错码可能最适合该应用。在预期只有短的、不频繁的差错的场合,简单的奇偶校验码可能是最好的。

    用于提供可靠的数据投递的另一种常用的技术是使用数据重传。例如,著名的TCP/IP协议使用丢失或缺失分组的分组重传来确保数据的可靠投递。另一个示例是HTTP协议,该协议构建在TCP/IP之上,并使用TCP/IP协议的可靠性来提供可靠的数据投递。也已有人提出了诸如RTP协议之类的其他协议的使用重传的增强版,作为应对在接收机处丢失或缺失分组的途径。

    已有人提出的用于改进流式播送应用的另一种技术是在一个信道中向接收机发送流的初始数据,然后,转移到在第二信道中向接收机发送主数据流。例如,Rasmussen提出了这样的方法。作为另一个示例,初始数据可以经由单播连接发送到接收机,以确保该接收机具有足够数据以便迅速地开始播出视频或多媒体流,然后,接收机可以切换到多播连接以接收该流的更多的数据。

    “通信”,如这里所使用的,是指通过空间和/或时间进行的数据传输,诸如数据从一个位置传输到另一个位置,或者数据在一个时间被存储并在另一个时间被使用。信道是分隔发送方和接收方的事物。信道在空间上可以是发送方与接收方之间的线路、网络、光纤、无线介质等等。信道在时间上可以是数据存储设备。在可实现的信道中,由发送方发送或存储的数据在被接收方接收或读取时变得不同的可能性往往并不是零,并且那些差别可能是由于在信道中引入的差错。

    当发射机和接收机具有通信所需的所有计算能力和电功率,并且发射机与接收机之间的信道足够可靠以允许进行相对无差错的通信时,数据传输是简单直接的。当信道处于不利环境中,或者发射机和/或接收机具有有限的能力时,数据传输变得更加困难。在某些应用中,需要在长时期上进行不中断的无差错通信。例如,在数字电视系统中,期望将一次性无差错地接收传输长达许多个小时。在这些情形中,数据传输的问题是困难的,甚至在相对较低的差错程度的条件下亦是如此。

    数据通信很困难的另一种情景是,单个传输被定向到可能体验到迥然不同的数据丢失状况的多个接收方。此外,一个给定的接收方所体验到的状况可能会迥然不同,或者也可能是在时间上相对恒定的。

    应对数据丢失(差错和/或擦除)的一种解决方案是使用前向纠错(FEC)技术,其中在发射机处以这样的方式对数据进行编码,以使得接收机能够纠正传输擦除和差错。在可行的场合,从接收机到发射机的反向信道使接收机能将有关这些差错的信息中继给发射机,后者随即能相应地调整其传送过程。然而,反向信道常常不可用或不可行,或者只有有限的容量可用。例如,在发射机正在向大量的接收机进行传送的情形中,发射机或许不能维持来自所有接收机的反向信道。在另一个示例中,通信信道可以是存储介质。

    例如,数据可能是按时间顺序前向地通过时间来传输的,并且因果关系排除了能够在错误发生之前修复错误的反向信道。结果,常常需要设计没有反向信道或只有有限容量的反向信道的通信协议,如此,发射机可能不得不在对迥然不同的信道状况不具备先验知识的情况下来应对那些信道状况。一个示例是广播或多播信道,其中不提供反向通信,或者如果提供也只是非常有限的或昂贵的。这样的境况有关的另一个示例是存储应用,其中数据以使用FEC编码的状态被存储,然后在稍后的某个时间点该数据被恢复,此恢复有可能使用FEC解码。

    另一个解决方案是基于重传,重传基于接收方了解哪些分组没有被接收到然后向发送方发送重传那些缺失分组的请求。识别哪些分组缺失往往基于分组内携带的序列号。这样的协议的示例包括TCP/IP、NORM、带重传的RTP等等。

    另一个解决方案是基于FEC与重传的组合。在此情形中,可以前摄地发送FEC,然后例如只有在接收机丢失的数据超过FEC解码器所能够恢复的情况下,接收机才请求重传分组或者传输额外的FEC分组,以便向FEC解码器提供足够的分组供恢复原始的源分组。作为另一个示例,最初可以不发送FEC,而只有在有分组丢失的情况下,接收机才会请求能用来恢复原始的源分组的额外的分组,这些额外的分组可以是FEC分组。例如,在经由多播发送原始的源流、然后被请求的分组要么也在相同的流中要么在不同的多播流中发送的情形中,这可能是令人感兴趣的解决方案。例如,不同的接收方可能丢失不同数目的分组,然后发送被请求的分组的发送方可能例如发送所有接收方请求的最大数目的FEC分组,此最大数目的FEC分组将允许所有接收方与它们个体的分组丢失模式无关地恢复原始源。

    在用于通过会丢失分组的信道进行数据传输的分组协议的情形中,要通过分组网络传送的文件、流或其他数据块被划分为源码元(其可以全都是等大小的,或者可以取决于块大小或其他因素而在大小上有所不同)。使用FEC码,从源码元生成编码码元,并将编码码元放在分组中并在分组中发送。码元的“大小”可以按比特来衡量,不管该码元是否实际上被断为比特流,其中当码元是从2M个码元的字母表中选择时,码元的大小为M比特。在这样的基于分组的通信系统中,面向分组的擦除FEC编码方案也可能是适宜的。

    文件传输若使预期的接收方能恢复原始文件的确切副本而不管通过网络传输的数据发生的擦除和/或其他损坏,则这种文件传输称为是可靠的。流传输若使预期的接收方能以及时的方式恢复流的每个部分的确切副本而不管在网络内发生的擦除和/或损坏,则这种流传输称为是可靠的。然而,文件传输和流传输两者都可能不是完全可靠的,而是在某种程度上可靠,即文件或流的某些部分不可恢复,或者对于流式播送而言,流的某些部分可能是可恢复的,但不能以及时的方式恢复。目标往往是取决于某些约束条件提供尽可能高的可靠性,其中约束的示例对于流式播送应用而言可以是及时投递,或者是解决方案预期藉以工作的网络条件的类型。

    常常会发生分组丢失,因为零星的拥塞会导致路由器中的缓冲机制到达其容限,从而迫使它丢掉传入的分组。发生分组丢失的其他原因包括弱信号、间歇信号,以及噪声干扰,其中,损坏的分组被丢弃。对抗传输过程中发生的擦除的保护机制一直以来是许多研究的主题。

    在单个传输被定向到一个以上的接收机并且不同的接收机验到迥然不同的状况的系统中,往往针对发射机与任何接收机之间的某个状况集合来配置传输,并且处于较差条件下的任何接收机都可能无法可靠地接收传输。

    已知有在这样的情景中能够提供对丢失分组极好的恢复的擦除码。例如,里德‑索罗蒙(Reed‑Solomon)码是众所周知的并且能被适配成用于此目的。然而,里德‑索罗蒙码的已知缺点是它们的相对较高的计算复杂性。链式反应码,包括LTTM链式反应码和RaptorTM多级链式反应(“MSCR”)码,提供对丢失分组的极好恢复,并且高度可适应于变化的信道状况。参见,例如,描述了链式反应码的一些方面的Luby I,以及描述了多级链式反应码的一些方面的Shokrollahi I。这里,术语“链式反应码”应该被理解为包括链式反应码或多级链式反应码,除非另有指示。

    重传协议也已知是用于恢复丢失分组的良好途径。基于TCP/IP、NORM、UDP和RTP的重传协议全都是这样的重传协议的示例。此外,使用擦除码协议与重传协议的组合对于恢复丢失分组而言能够十分有用。重传协议包括接收方请求特定分组或特定数目的分组被发送到接收方、并且作为响应发送方可以向该接收方或接收方群组发送特定分组或特定数目的分组的任何协议。

    某些通信系统使用诸如RTP之类的传输协议,这些协议包括能用来标识源分组相对于同一个流中的其他源分组的位置或序列的信息。通过为每个分组提供序列信息,接收机就可以检测并纠正接收到的网络次序颠倒的分组。接收机还能检测分组已丢失的情况,并且当与应用程序层FEC技术,诸如DVB‑IPI的那些技术(参见,例如,Watson中的描述)相结合时,接收机将能够恢复丢失的分组,并有效地掩盖网络可靠性瑕疵。通过参考DVB‑IPI标准:“DVB BlueBook A086r4(03/07)/ETSI Technical Specification 102034v 1.3.1(DVB蓝皮书A086r4(03/07)/ETSI技术规范102034第1.3.1版)”,就可以了解DVB的详情,该标准可在以下URL获得:http://www.dvb.org/technology/standards/a086r4.dTS 102034.V1.3.1.pdf。

    许多已部署的通信系统使用不包括任何形式的时基或序列信息的传输级协议。例如,在IPTV网络中通常的做法是通过“原始UDP”投递MPEG2传输流分组。对接收机可用的唯一的序列信息被嵌入在音频和视频基本流中,其可能难以访问,或不可靠,并且在传输级一般不可用。因此,对于原始UDP流而言在传输级没有允许接收机识别接收到网络次序颠倒的分组或表识缺失的分组的固有机制。尽管可以使用诸如应用程序层FEC(“AL‑FEC”)之类的公知的机制来高效率地恢复丢失的分组,但是,在源流分组上缺乏传输级序列信息限制了这样的恢复技术的直接适用性。这些同样的问题也适用于重传解决方案和重传与AL‑FEC解决方案的组合。由此,这是某些现有办法的一般化问题。

    某些通信系统的另一个问题是,部件是相互关联的。在某些情形中,可能需要或希望在部署之后提高通信系统的可靠性。然而,尽管可能需要提高网络可靠性,但是,要立即或全然替换或升级网络中的所有接收设备通常是不可行的。例如,结果可能是,由于网络可靠性的降格、话务负荷增大,网络的扩展和/或改变等等,实际网络分组丢失高于最初所计划的,或者可能需要提高服务质量要求以与竞争的服务相匹敌,但是,要立即将新的接收机散布到通信系统的所有节点上、或要随着时间的推移分布这些新的接收机并让某些接收站退役直到新的接收机到达可能是不切实际的。

    为了确保旧式设备不受已升级的或新的接收机所使用的协议增强诸如AL‑FEC或重传或AL‑FEC与重传的组合之类所影响,需要继续使用相同的传输级协议来投递源分组。此外,为确保投递给旧式设备的源分组不会变得更易受突发丢失影响,就需要维持相同的源分组时基分布或分组间时基。在某些通信系统中,源块内的源分组可以用较小的分组间间隙进行传输,以允许修复分组能在关联的源分组之后被立即投递;这样的技术将增加源流曝露于突发丢失的机会,并因此使旧式设备的传输效率降格。

    为了以最低成本提供尽可能好的服务,通信系统必须同时平衡相互冲突的资源约束。网络带宽是关键资源约束。传输和接收设备需要使网络带宽能被高效率地使用以支持可靠的服务。接收设备上可用的CPU处理通常是严重的限制,这意味着任何传输可靠性增强方法都必须只要求适量的计算工作。此外,往往需要限制与可靠的传输方法关联的增量等待时间以便最终用户不会感觉到系统响应性降低,对于流式播送媒体而言尤甚。

    【发明内容】

    根据本发明的一个实施例,描述了从源流生成称为源标识数据或信息的源标识信息或数据的方法。该方法能作用于原始源流,并生成相对紧凑的源标识信息或数据,这些信息或数据可以被接收设备用来标识源分组相对于其他源分组的位置,以及标识丢失的或损坏的源分组。源标识信息或数据生成方法能够得到源分组标识的紧凑表示,这使得能够使用相对少量的网络带宽来投递源分组块的源标识信息。推导源标识信息的计算负荷是很小的。

    源标识数据可以与前向纠错(“FEC”)技术相结合,以便能恢复丢失或损坏的源分组。源标识数据还可以与重传技术相结合、以及与FEC技术和重传技术的组合相结合,以便能恢复丢失的或损坏的源分组。源标识数据还可以与在接收机中标识源分组序列从发送方向该接收方发送的次序的技术一起使用,甚至在某些发送的分组被丢失、损坏或重排时亦是如此。

    在本发明的另一个实施例中,可以提供这样的方法和设备,其使得能够可靠地投递源标识数据,以便在接收设备处能够确定源分组的身份或相对位置,并且通过扩展,还能够推导不存在收到源分组。为提供源标识的可靠投递,携带源标识的分组能这样的方式进行传输,以便使曝露于突发丢失或周期性丢失模式的机会最小化。由于源标识数据是从源分组内容推导的,因此,两个或更多个源分组可以共享相同的源标识数据,并且这些方法的变体能够进行对抗接收机处发生这样的源标识冲突的保护。

    根据本发明的另一个实施例,提供了通过通信信道传输数据的方法,该方法包括下列步骤:传输原始的未修改的源流,并且作为附加流传输FEC修复数据和源标识数据,这些数据能被用来高效率地恢复原始的未修改的源流中丢失的或损坏的分组。

    根据本发明的另一个实施例,提供了通过通信信道传输数据的方法,该方法包括下列步骤:传输原始的未修改的源流,并且作为附加流传输源标识数据,这些数据能被用来标识哪些数据从收到的数据中丢失或损坏,并请求重传。在此实施例的进一步的增强方案中,还使用源标识信息来标识重传的数据。在此实施例的进一步的增强方案中,使用源标识信息来标识并重排次序颠倒的数据接收。在进一步的增强方案中,源标识信息既被用来通过使用FEC恢复原始的未修改的源流中丢失的或损坏的数据,又被用来标识哪些数据从原始源流中丢失或损坏,并请求重传丢失的或损坏的数据,或传输能用来恢复未修改的源流中的数据的附加的修复数据。在此实施例的进一步的增强方案中,第一修复流随原始未修改的源流一起传输。在此实施例的进一步的增强方案中,响应于任何重传请求,传输第二修复流。在此实施例的进一步的增强方案中,上述各种流中的一个或更多个流被高速缓存。

    根据本发明的另一个实施例,源标识信息标识了源分组与未修改的源数据流内的哪个数据块关联。在此情形中,也许不能生成每个未修改的源分组的唯一性标识符,即,可以使用源标识信息来标识源分组所关联的数据块,但是,也许不能将块内的源分组彼此区别开来。

    根据本发明的另一个实施例,提供了接收通过通信信道传输的数据的方法,该方法包括下列步骤:(1)对于未启用FEC的接收机或对于零个或更多个启用FEC的接收机,接收原始未修改的源流;(2)对于一个或更多个启用FEC的接收机,接收原始未修改的源流、以及某些或全部附加的FEC修复数据和源标识数据流,并用它们来高效率地恢复从原始源流丢失的分组。

    根据本发明的另一个实施例,提供了接收通过通信信道传输的数据的方法,该方法包括下列步骤:(1)对于未启用重传的接收机或对于零个或更多个启用重传的接收机,接收原始未修改的源流;(2)对于一个或更多个启用重传的接收机,接收原始未修改的源流、以及某些或全部附加的重传修复数据和源标识数据流,并用它们来高效率地恢复从原始源流丢失的分组。

    根据本发明的另一个实施例,提供了接收通过通信信道传输的数据的方法,该方法包括下列步骤:(1)对于未启用FEC和未启用重传的接收机或对于零个或更多个启用FEC和重传的接收机,接收原始未修改的源流;(2)对于一个或更多个启用FEC和重传的接收机,接收原始未修改的源流、以及某些或全部附加的FEC和重传修复数据和源标识数据流,并用它们来高效率地恢复从原始源流丢失的分组。

    根据本发明的另一个实施例,提供了接收通过通信信道传输的数据的方法,该方法包括下列步骤:(1)对于启用FEC或启用重传的接收机,确定正在接收的特定流是否具有关联的FEC修复数据或重传数据可用;(2)如果有FEC修复数据或重传数据可用,则根据需要接收某些或全部附加的FEC和重传修复数据流并接收源标识数据,并用它们来高效率地恢复从原始源流丢失的分组。

    根据本发明的另一个实施例,提供了通过通信信道传输数据的方法,该方法包括下列步骤:传输原始的未修改的源流,传输附加的相关数据流,这些附加的相关数据流能够用来高效率地恢复原始的未修改的源流中的丢失的分组。

    一旦阅读了本公开本领域技术人员就将清楚,这里所描述的方法能够自然而然地扩展到上述方案的许多变体,包括发送多层FEC修复数据,向一个IP地址发送源流并向其他IP地址发送附加流,个别地向接收机发送重传数据,经由广播或多播向多个接收机发送相同的重传数据,向接收机发送FEC修复数据和重传数据的组合,向一组接收机发送FEC修复数据并向第二组接收机发送重传,向同一个IP地址发送所有流,但是通过在分组内使用不同的端口号来加以区别,只向某部分接收机发送某些流,而不向其他接收机发送等等。

    通过参考说明书的其余部分,可以实现对这里所公开的实施例的特征和优点更好的理解。

    附图简要说明

    图1是能够生成并使用这里所描述的与FEC修复技术联用的一个或更多个源标识技术的通信系统的框图。

    图2是支持旧式机顶盒和启用FEC的机顶盒两者的通信系统的框图。

    图3是启用FEC的接收机确定对特定流是否有修复可用于的状态图。

    图4是可能的启用FEC的接收机的流程图。

    图5A是显示了其中一个源标识数据方法的示例的流程图。

    图5B是显示了其中一个源标识数据方法的示例的框图。

    图6A是显示了某些源标识数据的构成的示例的框图。

    图6B是显示了接收机如何可使用源标识数据来演算接收到的未修改的源分组的标识信息的流程图。

    图7是显示了某些源标识数据的构成的示例的框图。

    图8A是显示了源标识数据的构成的某些进一步的详情的示例的框图。

    图8B是显示了可能的源标识数据格式的示例的框图。

    图9是源标识数据的构成中的源块边界以及与邻源块的交叠的示例的框图。

    图10是显示了另一个可能的源标识数据格式的示例的框图。

    图11A是显示了散列成相同值的两个相同的分组的示例的框图。

    图11B是显示了能够处置相同的分组的序列‑位置映射的框图。

    图12是显示了散列成相同值的非相同分组的示例的框图。

    图13是显示了如何对源标识数据进行FEC保护的框图。

    图14是显示了如何从未修改的源分组生成FEC修复码元的框图。

    图15是显示了包括FEC修复数据和源标识数据两者的分组的可能格式的框图。

    图16是从分组中携带的源标识数据进行源标识信息的可能的部分重构的框图。

    图17是显示了接收机如何可使用源标识信息来处理接收到的源数据的示例的流程图。

    图18是显示了在接收机处的接收超时期间横跨两个源块的丢失分组的框图。

    图19是显示了在接收机处的接收超时期间在源块中早期发生的丢失分组的框图。

    图20是显示了在接收机处接收期间源块内的延迟分组的框图。

    图21是显示了在接收机处接收期间源块之间的延迟分组的框图。

    图22是显示了在接收机处接收期间跨出扩展块外的延迟分组的框图。

    图23是显示了在接收机处扩展块内的重复分组接收的框图,图23A和图23B中给出了示例。

    图24是显示了在接收机处超出扩展块外的重复分组接收的框图。

    图25是显示了用FEC修复数据和源标识数据来保护流的某些示例结果的表。

    图26是显示了用FEC修复数据和源标识数据和重传修复数据来保护流的示例的框图。

    通过参考说明书的其余部分和附图,可以实现对这里所公开的本发明的特征和优点的进一步理解。

     具体实施例的详细描述

    应该理解,这里所描述的各种功能块可以由硬件和/或软件的组合来实现,并且在特定的实现中,某些块的某些或全部功能性可以结合起来。类似地,还应该理解,这里所描述的各种方法可以由硬件和/或软件的组合来实现。由此,在执行计算步骤(可以描述为“然后我们进行步骤X”)的场合,应该理解,这样的描述包括执行那些步骤的电子硬件和/或软件或诸如此类,其通常作为通信过程的一部分,而不涉及人员或手动的交互。

    在这里所描述的某些实施例中,要编码的数据被分段为“源块”,每个块都包括数个称为“源分组”的数据分组,块中的源分组的数目在块之间可能是不同的。对于每个源块,由编码器生成数个“FEC修复”分组,其数目在块之间也可能有所不同。“源分组”和“FEC修复”(或“修复”)分组具有这样的特征:接收在数目上大于或等于源分组数目的源与修复分组组合的接收机具有恢复所有源分组的某个非零概率。源标识数据类型和用途

    在这里的某些实施例中,源标识数据可以是指这样的数据:在接收设备处能够从这些数据标识出源码元(能够以分组或其他传输单元(下面更一般化地称为“源数据单元”)来发送,)相对于其他源码元的位置、以及丢失的源码元的位置。如这里所使用的,源码元映射或源系统映射(两者都能称为“SSM”)是源标识数据或信息的一种形式。对于本公开,源码元映射和源系统映射与源标识数据可互换地使用。在这里的某些实施例中,源标识数据可以是指这样的数据:在接收设备处能够从这些数据标识出发送的分组在分组流中相对于其他分组的位置,既包括收到分组的位置也包括丢失分组的位置。在这里的某些实施例中,源标识数据可以是指在发送方处用于标识分组或码元或从接收方请求重传的其他数据单元的数据。源标识数据可以在接收机处用于从源和修复码元或分组的组合恢复丢失的码元或分组或其他数据单元。源标识数据能够用来标识哪些码元或分组或其他数据单元丢失,以便请求重传它们。源标识数据也能在接收机处用来确定分组或码元相对于其他分组或码元的原始发送次序。源标识数据可以被视为单个部分,可以划分为子部分,或者也可以视为流,而源标识数据的单个部分、诸子部分或流可以用来标识全部源数据单元或其中的某些部分,例如,可以使用源标识数据的一部分来标识源块内的那些源数据单元。如本领域技术人员将认识到的,源标识数据有许多这里没有列举的,但可以使用这里所公开的方法和过程来轻松地推测的其他可能的用途。源标识数据的可能的不同类型和用途包括但不仅限于下面的内容:

    (1)确定已知源数据单元的标识标签的方法‑从源标识数据确定每个已知源数据单元的短标识标签的能力。一个示例用途是,接收方能向发送方发送接收到的源数据单元的标签,以便可以从发送方向接收方传输与没有接收到的标签关联的源数据单元。此方法的变体允许为受限的可能源数据单元集合确定标识标签,受限的可能源数据单元集合例如有属于特定源块的那些源数据单元,或在指定的时间段内发送的那些源数据单元。

    (2)确定所有的源数据单元的标识标签的方法‑从源标识数据确定所有源数据单元的短标识标签的能力,无论源数据单元是已知的还是未知的。一个示例用途是,接收方能向发送方发送缺失的源数据单元的标签,以便能够从发送方向接收方传输与接收到的标签关联的源数据单元。此方法的变体允许为受限的可能源数据单元集合确定标识标签,受限的可能源数据单元集合例如有,属于特定源块的那些源数据单元,或在指定的时间段内发送的那些源数据单元。

    (3)确定定位的方法‑对于已知的和未知的源数据单元两者,确定每个源数据单元相对于全部源数据单元的排序的位置的能力,其中,排序是由源标识数据确定的,但是可以不同于这些数据单元的发送次序,或不同于源数据单元在流或文件内的次序。一个示例用途是,发送方和接收方能使用此信息来确定要将源数据单元放在源块内的什么地方,以便进行FEC编码和FEC解码。此方法的变体允许为受限的可能的源数据单元集合确定位置,受限的可能的源数据单元集合例如有,属于特定源块的那些源数据单元,或在指定的时间段内发送的那些源数据单元。

    (4)确定贯序的方法‑对于已知的和未知的源数据单元,从源标识数据确定每个源数据单元相对于所有源数据单元的发送次序序列或其他由源决定的次序序列(诸如源数据单元在文件中的次序,或数据在音频‑视频流中的次序)的位置。一个示例用途是,接收方能使用此排序来确定以什么次序向应用程序投递数据单元,例如,以什么次序来向文件写数据单元,或以什么次序向媒体播放器发送媒体流的数据单元。此方法的变体允许为受限的可能的源数据单元集合确定位置,受限的可能的源数据单元集合例如有,属于特定源块的那些源数据单元,或在指定的时间段内发送的那些源数据单元。

    当确定定位的方法与FEC方法联用时,源块内的源码元就可以根据来自确定定位的方法的位置来排序,并且在此情形中,源标识方法可以与FEC编码和解码方法的操作方式进行交互。另一方面,当确定贯序的方法与FEC方法联用时,源块内的源码元可以根据贯序来排序,而且由于贯序一般不是由确定贯序的方法确定的,因此,在此情形中,源标识方法可以很大程度上与FEC编码和解码方法的操作方式无关。在某些情形中,可以使用确定定位的方法与确定贯序的方法组合的源标识方法,例如,可能有用来确定源码元在源块内的位置的某个初始源标识数据,然后执行FEC解码,以根据源码元的位置来恢复源码元,然后可能有作为源块的一部分的某个附加的源标识数据,其被用来确定向应用投递恢复出的源码元的贯序。

    当确定定位的方法与重传方法联用时,接收机请求重传的源分组能够由其位置来标识,例如,接收方能向发送方发送请求重传的源分组的位置。在这些情形中,由于贯序次序可能不同于位置次序,发送方可以将重传分组根据它们的序列次序来发送,而接收方可以基于没有丢失的源分组的原始接收次序和重传的源分组的接收次序来确定贯序。当确定贯序的方法与重传方法联用时,接收机请求重传的源分组可以由其贯序来标识,例如,接收方能向发送方发送请求重传的源分组的序列号。在某些情形中,可以使用确定定位的方法与确定贯序的方法组合的源标识方法,例如,可能有在源分组的原始传输期间发送的某个初始源标识数据,其用来确定在源块内的位置的,然后可能有在重传期间发送的某个附加的源标识数据,例如重传的源分组的序列号,其用于确定向应用投递源分组的贯序。

    如本领域技术人员将认识到的,上面的方案有许多变体。例如,源标识方法能够与FEC方法和重传方法的组合联用,在这种情形中,重传请求可以针对特定源分组,针对特定修复分组,或针对指定数目的的修复分组而不是针对特定修复分组。

    将源标识方法与FEC方法联用的示例

    图1是能够生成并使用这里所描述的与FEC修复方法联用的源标识技术的通信系统的框图。

    在通信系统100中,向源标识生成器120提供输入流或文件110。源标识生成器120生成源标识数据,其包含有关源分组或码元在分组或码元流内的相对位置的信息。所有源码元或分组可以具有相同的大小,该大小通常是通过使用通信系统100确定的,或者,码元大小或分组大小可以在使用场合之间有所不同,或者也可以在流内变化。源标识数据的生成可以与源码元大小或分组大小无关。

    输入流或文件110可以被提供给FEC编码器130。在某些实施例中,FEC编码器130执行系统化FEC编码,其基于一个或更多个输入源码元和它们的位置来生成FEC修复码元,并常常将这些FEC修复码元放在修复分组中以供传输。

    值得注意的是,可以有从输入流或文件110构造的用于通过通信信道传输的源分组,这些源分组的构造可以与源码元大小无关。在源分组和源码元之间可以有,也可以没有一对一的映射。源分组可以具有可变的长度,也可以不具有可变的长度。

    来自输入流或文件110的源分组、来自源标识生成器120的源标识数据、以及来自FEC编码器130的FEC修复码元被提供给传输模块140。传输模块140可以在分组中向信道145发送源标识数据和FEC修复码元;在此过程期间,源标识数据和FEC修复码元可以在分组中组合起来,也可以不组合。这些分组随源分组一起通过信道145进行传输。

    信道145可以是擦除信道,但这不是通信系统100正常工作的必要条件。通常,原始的源分组是作为在逻辑上与其他分组分离的数据流来发送的。在逻辑上分离的数据流的示例包括,但不仅限于,在不同的多播群上发送的流,或向不同的端口发送的流。向信道145发送的数据流可以由接收模块150和155接收。接收模块150旨在与FEC解码器一起工作,而接收模块155是可能不包括FEC解码的旧式设备。应该注意,通信系统100可以如此设计,以便旧式接收模块155只接收源分组,或接收分组的组合但过滤掉不是源分组的其他分组。

    旧式接收模块155可以被赋予识别和处置来自信道145的源分组的能力。如果有任何修复分组或源标识数据到达,则它们可以位于在逻辑上分离的流上,并能被旧式接收模块155忽略(缄默地丢掉)。从旧式接收模块155产生收到的流185。

    接收模块150能够在逻辑上将源标识数据、修复码元与源分组区别开来。源分组和源标识数据被提供给源标识解释器160,从该解释器160能够标识出源码元ID,这些源码元ID标识了在源分组中携带的源码元。提供收到的源码元值与它们的位置之间的关系的源标识数据被发送到FEC解码器170。

    此外,FEC解码器170也以FEC修复码元和源分组作为输入,两者都是从接收模块150提供的。FEC解码器170试图恢复缺失的源分组——如果有的话。在必要时,接收到的源分组随来自FEC解码器170的任何恢复出的缺失源分组一起被重新组装,以产生恢复出的流或文件180。作为恢复出的输入流或文件180发送的源分组可以确切地或大致地按照其从输入流110发送的原始次序来发送。

    通信系统100有许多变体。例如,可以不使用FEC编码器130,或者,可以将FEC编码器130用重传器发送方模块来替代,该模块接收丢失或缺失分组的重传请求,并基于源标识数据来重传那些分组。作为另一个示例,可以不使用FEC解码器170,或者,可以将FEC解码器170重传器接收方模块来替代,该模块基于源标识数据来确定哪些分组或码元丢失或缺失,并发送索取那些缺失的分组或码元的请求,并且一旦接收到重新发送的分组或码元,就将它们按适当的次序摆放,并将其作为恢复出的流180来传递。作为另一个示例,可以不使用FEC编码器130和FEC解码器170,并且可以使用分组重排器来代替FEC解码器170,用于基于源标识信息对接收到的排序混乱的源分组进行重排。作为另一个示例,可以增强FEC编码器130和FEC解码器170以包括处置FEC修复和重传两者的逻辑和方法。作为另一个示例,可以直接向接收机发送源标识数据的某些部分,而可以作为FEC恢复过程的一部分来恢复源标识数据的其他部分。

    通信系统100能够用于投递流、文件或其他数据类型。

     无缝升级路径

    通信系统的完全升级可能要花很长时间有各种原因。例如,可能由于计算资源或存储器的限制导致较旧的设备可能没有支持升级的系统的能力。作为另一个示例,某些设备被设计成具有不能升级的特性,由此,只有在将该设备用已经安装了升级的新设备来替换的情况下才能进行升级。在其他情形中,即使在理论上升级可行的情况下,在实践中要升级大量的设备也可能是太昂贵的或风险太高的,因为在数百万设备上远程安装升级软件并确保升级正确地工作、以及要在安装期间对问题进行故障诊断等等的成本很高。此外,如果安装了大量的设备并且在系统再次运转之前它们全都需要升级,那么,在升级期间关掉系统在实践上几乎是不可能的,具有数千、数万或者甚至数百万接收机的IPTV服务的大规模操作部署的情形正是如此,其可能要花费数天或数月才能完全升级。

    在这样的情形中,非常需要无缝升级路径,但是往往难以实现。

    对于在先前不使用FEC的系统内部署对流式播送数据的FEC保护的情况而言,有一种公知的潜在的无缝升级路径。做到这一点的途径是,以这样的方式设计FEC的应用:发送原始源流,然后,在逻辑上分离的流中发送能够被已经升级的接收机用来支持质量高得多的流播出的附加的FEC修复数据,而同时尚未升级的较旧的接收机只需忽略FEC修复数据并且仍如以前那样使用原始源数据流来操作。这一无缝升级路径的可能性是流式播送应用优选系统化FEC码的主要原因之一。系统化FEC码具有包括原始源数据并将其作为FEC编码数据的一部分发送的属性,在此语境中,生成并发送的附加FEC数据叫做“FEC修复数据”。

    这种无缝升级路径的障碍是,FEC修复数据与用来生成FEC修复数据的原始源数据流之间的关联需要在接收机处确定。具体来说,对于许多FEC方案,包括原始源数据流的源码元或分组能由源码元标识符或分组标识符来标识和/或贯序,而源码元标识符或分组标识符能被FEC解码器用来从接收到的FEC修复数据恢复缺失或丢失的源数据。然而,在许多流式播送系统中,这样的源码元或分组标识符并没有被包括,只被部分地包括,不完全可靠,或在原始源流中难以访问。尽管有诸如RTP之类的在每一个源分组中本机地包括能用作源分组标识符和/或贯序符的序列信息的传输协议,但是许多部署的通信系统不利用这些协议,结果,在原始源分组中没有包括时基或顺序信息,或者这些信息在传输层处不可访问。作为示例,IPTV部署常常使用携带MPEG2TS单元的UDP分组,而在这些部署中,标识符在传输级往往不能现成地访问或可用。此外,由于种种原因,向原始源流中的码元或分组添加标识数据也是不可能的。这些原因有,如果以任何方式修改原始源流,则现有的部署的设备将不工作,或者,由于各种其他原因,现有的通信协议不希望或不可能更改。在这些情况下,上文所描述的简单的无缝升级路径是不可能的,并且需要其他方法和过程。

    为保持与这些系统中的旧式设备的兼容性,并允许使用并不本机地包括分组或码元或数据贯序或标识信息的通信系统,这里所介绍的方法公开了在逻辑上分离的流中发送源分组序列或标识符信息以便有能力的接收机能将此信息随FEC修复数据一起搜集,并恢复擦除的或丢失的或缺失的或损坏的源分组或码元的方法。如在一个实施例中所概述的,源标识数据能够捕捉和表示此信息。在某些实施例中,此标识符或序列信息在用来发送FEC修复数据的其中一个信道中发送,虽然这不是绝对必需的。

    图2显示了使用支持和不支持FEC方法的设备的混合的通信系统200的无缝升级路径的示例。头端设备210生成包括原始源数据的原始节目以及包括FEC修复数据和源标识数据的节目修复,并将其发送到核心网络220。核心网络220将原始节目发送到接入网络230(1)、230(2),不将修复节目发送到其中有不支持FEC的旧式机顶盒(STB)240(1)、240(2)的接入网络230(1),而将修复节目发送到其中有支持FEC方法的STB 250(1)、250(2)的接入网络230(2)。通信系统200有许多变体,包括旧式STB 240(1)接收修复节目但是只使用原始节目的变体,包括在核心网络与接入网络之间没有区别的变体,包括原始节目和修复节目作为一个逻辑流发送的变体,包括支持重传方法作为FEC方法的替代或与FEC方法结合的变体,包括机顶盒是其他类型接收设备的变体,包括某些接收设备不支持源标识数据方法、某些接收设备支持源标识数据方法与FEC方法联用,其他接收设备支持源标识方法与重传方法联用,其他接收设备支持源标识方法与重传方法和FEC方法两者联用,而其他接收设备支持源标识方法与数据重排方法联用的变体,包括有多个发送设备的变体,包括节目修复的发送和/或生成设备要么在逻辑上要么在物理上不同于原始节目的发送和/或生成设备的变体,包括发送设备至少有时是接收设备或者接收设备至少有时是发送设备的变体,包括由于FEC方法或重传方法之外的其他原因例如为支持数据重排方法而支持源标识数据方法的变体。

    希望支持源标识方法和关联的恢复方法(诸如FEC方法和重传方法)的通信系统与不支持这样的方法的通信系统相比,就信令和数据投递而言具有尽可能少的差别。例如,希望不需要特殊的预信令来指示特定流是否支持源标识方法和关联的方法,其中,预信令可以包括例如电子节目指南或其等效物。例如,由于种种原因,某些数据流可能支持源标识方法以及关联的恢复方法,而其他流可能不支持,无论是在相同时间还是在不同的时间点。例如,可能最初,没有流支持源标识方法,然后随着时间的推移,越来越多的流支持源标识方法,并且最终所有的流可能都支持源标识方法。非常希望的是,不必信令指示流是支持还是不支持源标识方法,例如,不必在电子节目指南中包括指南中列出的每一个流是否支持源标识方法的信息。

    图3显示了可以被用作支持源标识方法和FEC方法的接收设备中的逻辑的可能的状态图300的示例,其中,不需要预信令来指示特定流是否使用源标识方法和FEC方法。在状态图300中,接收机在首次加入流时以旧式状态310启动,即,接收机最初假定正在发送的流不使用源标识方法和FEC方法。尽管如此,在旧式状态310下,接收机不断监视当前流的分组的接收,并且如果接收到了源标识数据(或FEC修复数据)则接收机移到状态图中的SI非同步状态320。对于使用源标识方法和FEC方法的流,第一源标识数据(或FEC修复数据)到达接收机之前可能会有一些时间,例如,100ms,这会在移入SI非同步状态320时引入一些等待时间。一旦接收机处于SI非同步状态320,接收机就不断地接收FEC修复数据(若其可用)以及源标识数据,接收机尝试使用后者来对身份进行解释和/或确定收到的和缺失的源分组或码元的相对排序。如果接收机能够解释当前源标识数据,那么接收机移到SI同步状态330。在SI同步状态330下时,接收机可以使用对源标识数据的解释来标识和/或确定收到的和缺失的源分组或码元的相对排序,并进而使用此相对排序并使用接收到的FEC修复数据来恢复原始源数据流的部分。如果接收机处于SI同步状态310,并且不再能解释当前源标识数据,则接收机移到SI非同步状态320,直到当前源标识数据又能被解释。在SI波能同步状态310与SI非同步状态320之间移动的等待时间量可以在保护期的数量级上,保护期即从流接收源数据块所花费的时间长度——如果源数据被组织成源块并且如果源标识数据是逐源块地组织的。

    状态图300有许多变体。例如,可以使用重传方法作为FEC方法的替代或与FEC方法联用。作为另一个示例,可以使用重排方法代替FEC方法。作为另一个示例,除源标识数据之外,还可以携带其他数据,例如,用于指示对于该流而言FEC修复或重传方法是否正在使用中、或什么类型的FEC代码正在使用、或什么类型的重传方法正在使用。

    图4提供了可以在支持源标识方法和FEC方法的接收设备内使用的处理流程图的示例。在步骤420中,过程监视分组的接收,并且当接收到分组时,过程移到步骤430。在步骤430中,过程进行检查以查看SI同步状态是否是当前状态(对应于在图3中处于SI同步330)。如果在步骤430中SI同步是当前状态,那么,过程移到步骤440。在步骤440中,过程基于源标识数据,将接收到的分组与适当的源块关联,并且过程前进到步骤450。在步骤450中,过程进行检查以查看是否是到了对当前源块进行FEC解码的时间,并且如果不是,则过程移回到步骤420以接收更多的分组,但是如果为是,那么过程移到步骤460并使用接收到的源和修复分组以及将修复分组与源分组相关的关联的源标识数据,来对当前源块进行FEC解码,然后在步骤470中输出当前源块(例如,向接收设备上的媒体播放器),下一个源块变为当前源块,并且处理继续前行到步骤420。如果在步骤430中SI同步不是当前状态,那么过程移到步骤480。在步骤480中,如果收到分组是源分组,则(例如,向媒体播放器设备)输出该分组,否则将它丢弃,并且处理返回到步骤420。

    许多细节没有在图4中显示。例如,图4没有显示用于确定源和修复分组之间的关联以及分组的次序、以及用于在步骤430中确定SI同步状态的地位的源标识数据的接收。图4中所显示的过程有许多变体。例如,在步骤420中,在前进至步骤430之前,可以接收到多个分组。

     分组与码元之间的关系

    前向擦除纠正码常常作用于从固定字母表中选取的码元。例如,可以从大小为2M的字母表中选取码元,在这种情形中,在码元与M个二进制数位串之间有明显的映射。这样的码元下文称为具有M比特的大小。数据常常是以分组的形式通过通信信道发送的。在某些情形中,在码元与分组之间有一对一的映射。在其他情形中,包括例如在Luby II中所描述的那些情形中,分组可以大于码元,其中分组包括若干个码元。另外,码元和分组可以包括相同数据,但是,比特次序和放置可以不同,或者可以将不显式包含在分组内的补充信息,例如分组长度的二进制表示放入FEC码元中。同样,不出现在FEC码元中的数据可以出现在分组中,例如,不需要由FEC码进行保护的数据,因为它包括未使用的字段或在每个分组中具有相同值的字段,或者因为它可以用其他方式恢复。

    重传方法还可以基于码元,其中码元可以是字节或某个大的数据单元。例如,接收机可以请求来自文件或来自数据流的某个字节范围被重新发送。

     源块和码元之间的关系

    许多前向纠错码作用于称为源块的离散的源码元集合。例如,源块可以包括文件的所有源码元,或者在流式播送服务的情况下可包括特定片段的所有源码元。

    每一个源码元被给予在其所属的源块内唯一性的标识。此标识往往不是源分组数据的一部分,但其往往是用于FEC解码过程的信息片。

    重传方法也可以基于源块,而重排方法也可以基于源块。例如,源块可以是能方便地嵌入接收机存储器中的大小,并且例如可以方便地标识出被拿到存储器中的或从存储器写到盘中的数据块。作为另一个示例,源块可以是对应于在特定时间段内发送的数据量的大小,并且例如可以方便地基于数据属于哪个源块来对在一个时间段内发送的数据与在另一个时间段内发送的数据加以区别。

    在这里所描述的方法的许多实施例中使用了源块。对于本领域技术人员来说,源块不是方法必需的成份,并且方法有不使用源块的变体。

     接收机

    为了使接收机能利用FEC修复数据,接收机往往需要能够获取源标识数据,该数据可以是向与FEC修复数据相同的信道投递的也可以不是。通常,发送方和接收方需要在表示源标识数据时使用相同的协议。在特定实施例中给出了这样的协议的示例。接收机使用源标识数据来标识接收到的源分组在它们的源块内的位置,以及缺失的分组的位置。然后,如果可能的话,使用FEC修复数据来恢复这些缺失的分组。

    在升级过程期间,旧式接收机可以忽略源标识信息和FEC修复数据两者——如果接收到这些数据的话。它如在升级以前一样接收源分组,并且它将继续在升级前的水平执行直到被升级。

     源标识方法

    有许多方式表示和运输源标识数据。一般而言,在带宽开销、CPU负荷、以及服务质量(QoS)间有折衷。

    源标识方法的用途包括在要发送的所有源码元或源分组或其他源数据单元间,例如在为文件或流发送的所有源数据间进行区别、标识或排序的能力。还有能够应用源标识方法以便紧靠着其他源数据单元(例如,按发送次序,或在很小的时间窗内发送的)的源数据单元能被区分、标识,或排序的其他情形,例如,对于其中重排、区分或标识的量只需要高于在发送方和接收方之间传输中的最大源数据量的数据流而言便是如此。在这些情形中,将源数据单元划分为多个源块的源标识方法或其等效方法可能是合适的,用于实现此目的的方法在本公开内稍后描述。源标识方法所使用的源块结构与FEC或重传方法(如果使用的话)所使用的源块结构可以一致也可以不一致。

    下面所描述的许多源标识方法在它们的描述中使用散列函数。散列函数的功能之一是以这样的方式将长串映射到短得多的串,以使得相异的长串被映射到相异的较短串。等效地,散列函数可以将值映射到值。有许多可能的散列函数可以为这里所描述的方法使用,例如,可以使用Mike Luby和AviWigderson所著的标题为“Pairwise Independence and Derandomization(成对独立性和解随机化)”的出版物(Foundations and Trends in Theoretical ComputerScience,Volume 1,Issue 4,2005,Print ISSN 1551‑305X,Online ISSN 1551‑3068)中所描述的散列函数(下面简称为“散列函数”)。有许多途径来表示散列函数的列表,在“散列函数”一文中描述了其中的一些,例如,通过表示确定如何对特定输入计算散列函数的比特序列,或通过从散列函数族中选择小的散列函数列表并由此列表的索引来标识散列函数。可以由正整数(a,b)来描述可能的散列函数族的一个示例,其中,a和b的值范围介于0和正整数值P之间,其中,由(a,b)对确定的散列函数将输入X映射到(a*X+b)模P。在此示例中,如果P是固定的或由(a,b)决定,则可以使用值对(a,b)来指示选择由(a,b)决定的散列函数,或者替换地,如果P不由(a,b)决定,则指示选择由三元组(a,b,P)决定的散列函数。散列函数的范围中的值的数目不局限于质数,有允许值的数目是任何正数的用于进行类似于这里所描述的散列的公知的方法。指示从此相同的散列函数族(或任何散列函数族)中选择的散列函数的另一种途径是相对于预先确定的三元值组列表(a1,b1,P1),(a2,b2,P2),…,(ai,bi,Pi),其中,可以使用索引j来指示选择由(aj,bj,Pj)决定的散列函数。

    下面是第一源标识方法的描述。假设有K个包括要发送的源数据的不同的源数据单元(例如,源分组或码元)。假设所有K个源数据单元具有相异的值。令H是将K个源数据单元映射到K个L比特矢量v(0),v(1),…,v(k‑1)的散列函数。如果H是随机散列函数,那么,这K个L比特矢量中的两个映射到相同值的概率大致是K^2/(2^(L+1)),其中,″^″是取幂函数。如此,为确保K个L比特矢量以至少1‑ε的概率相异,L的值应该大致为2*log(K)+log(1/ε),其中,log是以2为底的对数运算符。作为第一个示例,如果K=1000=1e3,而ε=1e‑6,那么,L应该大致为40比特或即5字节,其中,“1e3”是10^3=1000的科学指数表示。作为第二示例,如果K=1e6,ε=1e‑12,那么,L应该大致为80比特或即10字节。假定发送方和接收方能够计算相同的散列函数H,则源标识数据可以只是按照源数据单元的次序级联的K个L比特矢量的级联。发送方能够通过将散列函数H应用于每一个源数据单元以生成K个L比特矢量的方式,来从K个源数据单元计算源标识数据。一旦接收到源数据单元,接收方就能将H应用于该源数据单元以计算相应的L比特矢量值,然后根据源标识数据,接收方就能区别、标识K个源数据单元中的接收到的源数据单元,并对它们进行排序,即,这是确定贯序的方法的示例。在上面的第一示例中,源标识数据大小是5,000字节,而在上文的第二示例中,源标识数据大小是10,000,000字节。对于某些应用,这两者的大小均可能令人不敢问津。对于源标识数据的某些用途,例如某些重传方法,在接收机处,短得多的源标识数据就足够标识和请求源数据单元。例如,在基于NACK的重传方法中,向接收机传达的源标识数据可以是散列函数H的描述,而接收方可以对每一个接收到的源数据单元计算散列函数H,并向发送方发送接收到的源数据单元所映射到的L比特矢量。在此情形中,发送方可以基于接收到了哪些L比特矢量来确定哪些源数据单元没有被接收方接收到,即,这是确定已知源数据单元的标识标签的方法的示例。如此,假定发送方和接收方预先确立了要使用哪个散列函数H,则显式地向接收方传达的源标识数据的量甚至可以是零。然而,在此情形中,可以从接收方向发送方传达源数据单元标签形式的显著量的数据,以便请求重传缺失的源数据单元。

    上面的源标识方法的变体是发送方从散列函数族中反复地选取新的散列函数H,并将H应用于K个源数据单元,直到散列函数H将K个源数据单元映射到相异的矢量。注意,L=2*log(K)足以使H以至少1/2的概率将K个源数据单元映射到相异的矢量。如此,从有log(1/ε)个随机散列函数的列表中,至少有一个以至少1‑ε的概率将K个源数据单元映射到相异矢量的散列函数。在此情形中,源标识数据可以是发送方选择的散列函数H的索引、K值和K个L比特矢量的级联。接收方能够使用源标识数据来确定要使用的散列函数H的索引和K的值,然后一旦接收到源数据单元,就能将H应用于该源数据单元以确定区别、识别或排序这K个源数据单元之中的源数据单元的L比特矢量,即,这是确定贯序的方法的示例。如果K=1,000,那么,源标识数据是20比特,以标识散列函数、K值、以及1,000个20比特矢量,或即大致2500字节,而如果K=1,000,000,那么,源标识数据是40比特,以标识散列函数、K值、以及1,000,000个40比特矢量,或即大致5,000,000字节。

    下面是源标识数据方法的第三变体。发送方能够如下计算源标识数据。选取第一散列函数H以将K个源数据单元映射成K个相异的L比特矢量u(1),u(2),…,u(K),例如使用上文所描述的第一或第二源标识数据方法来进行此映射。令集合S1={0,1,…,K‑1}。注意,在不同的变体中,S1的大小可以大于或小于K,但是在某些实施例中,K可以是S1的大小的不错的选择。选取将L比特矢量映射到S1的散列函数H1。使用H1将u(1),u(2),…,u(K)映射到S1。如果没有j使得对于H1而言u(j)和u(i)映射到相同值,则说矢量u(i)关于H1唯一性地映射,否则说u(i)关于H1遇到冲突。如果小于阈值数目的u(1),u(2),…,u(K)关于H1唯一性地映射,那么选取新的散列函数H1并重复上面的过程,直到关于H1唯一性地映射的u(1),u(2),…,u(K)的数目至少是阈值数目。注意,对于任何i,u(i)关于均匀随机选取的散列函数H1唯一性地映射的概率大致是1/e,其中,e=2.718281828459045,如此,K/e是阈值数目的合理选择,虽然取决于K的值,其他阈值数目也可能是适当的,例如,随着K趋近于零,阈值数目可能趋近于或到达K。一旦确定了适当的H1,就将K比特矢量V1初始化为K个零比特。对于每个存在i使得u(i)关于H1唯一性地映射到位置j的位置j,将V1的第j比特设置为1。

    令u1(1),…,u1(K1)是K个矢量中关于H1遇到冲突的K1个矢量。令集合S2={0,…,K1‑1},并选取将L比特矢量映射到S2的散列函数H2。使用H2将u1(1),…,u1(K1)映射到S2。如果小于阈值数目的u1(1),…,u1(K1)关于H2唯一性地映射,那么选取新的散列函数H2并重复上面的过程,直到关于H2唯一性地映射的u1(1),…,u1(K1)的数目至少是阈值数目,其中阈值可以取决于K1。将K比特矢量V2初始化为K个零比特。对于每个存在i使得u(i)关于H2唯一性地映射到位置j的位置j,将V2的第j比特设置为1。

    可以用更多的散列函数H3,…,Hh重复上面的过程,直到u(1),u(2),…,u(K)关于散列函数全都唯一性地映射。具体来说,Hh唯一性地映射uh‑1(1),uh‑1(2),…,uh‑1(Kh),其中uh‑1(1),uh‑1(2),…,uh‑1(Kh)是K个矢量中关于H1,…,Hh‑1遇到冲突的Kh个矢量。

    图5A中概述了源标识数据方法的第三变体的步骤。选取(502)将K个源分组(501)映射到相异矢量u(1),u(2),…,u(K)的散列函数H。接下来,选取(503)散列函数以作用于这K个矢量中的还没有由先前的散列函数唯一性地映射的的子集(对于第一散列函数而言,子集是K个矢量的全集)。然后使用所选择的散列函数来散列K个矢量的子集(504)。在此散列期间,记录注释所操作的分组的索引、散列函数和结果所得的值、以及潜在冲突的信息(506)。在一个实施例中,在比特矢量中记录此数据。接下来,可以分析散列函数的输出以确定是否发生了任何冲突(505)。如果有冲突,则以不同的散列函数重复该过程。如果没有冲突,那么就能使用所记录的信息(506)来形成源码元映射(507)。

    源标识数据或等效地,源码元映射可以是散列函数H的索引、K值、外加的散列函数的数目h、散列函数H1,…,Hh的索引、K1,…,Kh‑1的值、以及比特矢量V1,…,Vh的级联。可以如下确定源数据单元的位置。将散列函数H应用到源数据单元以生成L比特标签u。将H1,…,Hh相继地应用到u,直到有第一个i使得u关于Hi被唯一性地映射,并令j是Hi将u映射到的位置。源数据单元的位置是V1,…,Vi‑1中被设置为1的比特的总数加上Vi中开头j比特内被设置为1的比特的数目。此用于确定源数据单元的排序以及它们的位置的的方法是实现确定定位的方法的源标识方法的示例,即,基于源标识数据来确定源数据单元的位置,但是这些位置不一定是源数据单元的发送位置。如果K=1000并使用阈值数目K/e,那么,源标识数据是标识散列函数所需的比特和K,K1,K2,…,Kh‑1的值继以2700比特,或即大致350字节。如果K=1,000,000,那么源标识数据大致是340,000字节。如那些精通相关技术的人将认识到的,此变体可以有许多替换和优化,例如,可以以不同的方式选取值序列K1,…,Kh‑1,可以以不同的方式选取阈值数目,比特矢量V1,…,Vh可以是每条目多个比特或每条目可变数目个比特,如果最后一个矢量Vh的所有比特总是都被设置为1,则该矢量Vh能被省略,等等。

    图5B是刚才描述的源标识数据方法的第三变体的解说。在图5B的示例中,有八个要为其生成源标识数据的数据单元(510(1),…,510(8))。选取将这八个数据单元(510)的内容散列为有八个L比特散列值的集合(520)的第一散列函数H,其中如此选择H,以使得如果这八个数据单元内容(510)相异,那么这八个L比特散列值(520)也相异,其中在此示例中,这八个L比特散列值(520)分别记为A,B,C,D,E,F,G和H。注意,在选取将所有源数据单元映射到唯一性散列值的合适的散列函数H之前可以选取一个以上的候选散列函数。还要注意,在某些实施例中,可以跳过此初始散列函数的应用,并且下面概述的过程可以通过直接对源数据单元(510)进行操作而不是对散列值(520)进行操作来进行。

    请参看图5B,选取将这些L比特散列值(520)中的每一个映射到范围介于0和7之间的散列值的第二散列函数H1,其中由H1定义的映射由从散列值(520)到散列值(530)的箭头来指示。注意,在选取合适的散列函数H1之前可以选取一个以上的候选散列函数,以便有足够的散列值(520)映射到唯一性的散列值(530),其中在此示例中,阈值数目可以是使散列值(520)中至少有四个映射到唯一性的散列值(530)。在比特矢量V1(540)中,比特j的值1指示有映射到散列值j(530)的唯一性散列值(520),而比特j的值0指示要么有零个要么有两个或更多个散列值(520)映射到散列值j(530)。在此示例中,V1的第一比特被设置为0,因为在H1下,没有散列值(520)映射到值0(530),V1的第二比特被设置为0,因为在H1下,散列值B和C(520)两者都映射到值1(530),V1的第三比特被设置为0,因为在H1下,没有散列值(520)映射到值2(530),V1的第四比特被设置为1,因为在H1下,散列值A(520)唯一性地映射到值3(530),V1的第五比特被设置为1,因为在H1下,散列值G(520)唯一性地映射到值4(530),V1的第六比特被设置为1,因为在H1下,散列值D(520)唯一性地映射到值5(530),V1的第七比特被设置为0,因为在H1下,散列值E和H两者(520)都映射到值6(530),而V1的第八比特被设置为1,因为在H1下,散列值F(520)唯一性地映射到值7(530)。在此示例中,散列值B、C、E和H(520)不映射到唯一性的值,如此,这四个散列值(520)要以另一个散列函数H2来映射到四个值0到3(550),从而导致冲突比特矢量V2(560)。在此示例中,散列值E和H(520)由H2唯一性地映射,而散列值B和C(520)在H2映射下冲突,如此,这两个散列值B和C(520)要由另一个散列函数H3映射到两个值0到1(570),从而导致冲突比特矢量V3(580),并且在此示例中,所有其余的值都由H3唯一性地映射,如此,H3是完成源标识数据所需的最后一个散列函数。此示例中的源标识数据包括值h=3,值K=8,K1=4,K2=2,散列函数H,H1,H2,H3的表示,以及比特矢量V1,V2,V3

    在图5B中所显示的示例中,冲突比特矢量V1,V2,和V3左边的索引指示由此源标识数据决定的源数据单元的位置,即,位置0对应于序列号为0的分组,位置1对应于序列号为6的分组,位置2对应于序列号为3的分组,位置3对应于序列号为5的分组,位置4对应于序列号为7的分组,位置5对应于序列号为4的分组,位置6对应于序列号为2的分组,而位置7对应于序列号为1的分组。从此源标识数据,客户端可以轻松地计算出这八个源分组中的任何收到或缺失分组的位置。如此,例如,可以使用这些位置来对源块内的源分组进行排序,以用于FEC编码和解码目的,如此,源标识数据足以满足源数据单元的FEC编码和解码。作为另一个示例,接收方可以计算所有接收到的源数据单元的位置,并据此确定缺失的源数据单元的位置。接收方可以发送要求缺失的源数据单元的请求,经由源数据单元的位置来标识哪些源数据单元正在被请求,而发送方可以基于被请求的位置来确定作为响应要发送哪些源数据单元。此第三变体是实现确定定位的方法的源标识方法的示例。

    作为第四变体,可以增广第三变体的源标识数据以包括K个源数据单元的贯序(其中,例如,它们的贯序对应于原始源数据次序,或作为另一个示例,对应于源数据发送次序)与上文为第三变体描述的它们的相应的位置之间的映射。例如,附加的贯序数据可以包括K个序列号的有序列表SEQ=<seq0,seq1,…,seqK‑1>,其中seqj是具有位置j的数据单元的序列号。如此,此附加的贯序数据可以包括位置到序列的映射。

    图6A中显示了此第四变体的源标识数据的示例,这是图5B所显示的示例的增广。对于图5B的示例,K=8,h=3。如图6A所示,h值是3(610)、K值是K=8,K1=4,K2=2(620),四个散列函数是H,H1,H2,H3(630),在(640)显示了大小各自为8、4和2的比特矢量V1,V2,V3被级联,在(650)显示了包括K=8个序列号的附加的贯序数据。在此情形中,根据散列函数映射到位置0的源数据单元是序列号为0的源数据单元,映射到位置1的源数据单元序列号为6,映射到位置2的源数据单元序列号为3,映射到位置3的源数据单元序列号为5,映射到位置4的源数据单元序列号为7,映射到位置5的源数据单元序列号为4,映射到位置6的源数据单元序列号为2,而映射到位置7的源数据单元序列号为1。

    对于此第四个变体,源标识数据足以区别、标识和确定K个源数据单元的次序,即,这是实现确定贯序的方法的源标识方法的示例。此第四变体的源标识数据的额外的大小超出第三变体中的源标识数据的大小为K*log(K)。例如,如果K=1,000,那么,超出第三变体大小的额外的源标识数据大小是1250字节,而如果K=1,000,000,那么,额外的大小是2,500,000字节。在此第四变体的某些实现方式中,源标识数据中对应于第三变体的部分可以被发送到允许确定源数据单元的位置的接收机,这可以用来对源块进行FEC解码(其中,源块内的源数据单元是根据它们的位置来排序的),并且源标识数据的允许确定源数据单元的贯序的补充部分被包括在能使用FEC解码方法来恢复的源块内。例如,请参看图6A和图6B,源标识数据可以包括h值(610)、K值(620)、散列函数描述(630)和比特矢量(640),该源标识数据被传达给接收机,以便确定源数据单元在源块中的位置。此源标识数据可以是源码元映射(601)的形式。可以解析源码元映射中包含的信息(602)以提取图6A中概述的数据,除了位置到序列映射(650)并不包含在内。(这也在603解说。)然后在确定定位的方法中可以使用源码元映射,其中涉及对接收到的源数据单元的数个散列演算和冲突解决(605)。在一个实施例中,接收到的源数据单元可以是源分组的形式(604)。在馈送到FEC解码器(607)之前,可以验证接收到的码元,并使它们与定位信息关联(606)。位置到序列映射数据(650)可以包括源块中所包括的、在FEC解码之后可用的并用于确定恢复的源数据单元的贯序的源标识数据(608)。图7显示了包括数个源数据单元(510(1‑8))的源块中所包括的位置到序列映射数据(650)的示例。在图7中,位置到序列映射数据(650)被追加到源块中所包括的源数据单元(510(1‑8))的末尾,其中源块中的源数据单元的次序是由位置信息决定的。

    作为另一种变体,可以进一步增广源标识数据以包括每一个源数据单元的大小。如果所有源数据单元的大小都相同或大致相同,则一般不使用此变体。此变体允许能更准确地确定可变大小的源数据单元的位置。

    图8A是类似于图5B中的示例的源标识数据的另一个实施例的示例。图5B所显示的示例和图8A所显示的示例之间的一个区别是,图8A中的比特矢量包括两比特信息而不是只是一比特信息。此额外的数据可以用来以给定水平传达关于散列操作的任何冲突或无冲突的更多详情。例如,在图8A中,使用“11”来指示没有散列值被映射到比特矢量中的特定位置;使用“00”来指示比特矢量中的特定位置映射到唯一性的源分组,而使用“10”来指示有一个以上的源分组映射到特定位置。本领域技术人员将认识到,也能使用其他类似的方案来传达诸如这样的信息。

    图8B解说了以数据结构(810)来格式化的源标识信息的示例。然后,可以用各种方式使用该数据结构。本领域技术人员将认识到,对于源标识信息有许多可能的格式。用于组织源标识信息的任何数据结构都能被插入到每一个分组中,或跨多个分组展开,这些分组可被可任选地进行FEC保护,然后传输到接收机。

    在图8B中所解说的数据结构(810)实施例中,以字节为单元在字段的下面列出了每一个所解说的字段的大致大小。对于数据结构的不同实施例,字段的大小也可能不同。在图8B中,G表示每分组的码元数目。如果G等于0,这指示有可变长度的分组。H表示用于创建源标识信息的模散列尝试的数目。F是初始散列函数索引。Check是源块的校验和。B是散列位置映射比特分配。L是散列的每一次迭代的散列冲突矢量长度。在图8B中,对于开头2个级别,L各自为2字节,其后各自为1字节。V存储实际散列冲突矢量。M存储散列位置映射。在图8B中,每一个值取B比特。B1是只对于G=0适用的可任选字段。B1存储了对可变的分组码元数目的比特分配。M1是只对于G=0适用的另一个可任选字段。M1存储了分组中的码元的数目。

    图8B还解说了使用来自图8A的数据的此通用格式的示例(820)。

     接收机如何使用源标识数据

    协议在发送方与接收方之间传达该数个散列的分组{K,K1,…,Kn}、冲突矢量{V,V1,…,Vn}、以及散列函数{H,H1,…,Hn},其中Hn导致无冲突,即,Vn是全0的。此外,还传达所有K个源分组的位置与其在矢量{V,V1,…,Vn}内相应的散列位置之间的映射、以及每一个源分组中的码元的数目。

    作为接收机如何能确定接收到的源数据的序列号的示例,假设根据图5B所显示的示例接收机接收到第五源数据单元(510(5))。接收机将H应用到此源数据单元从而获得散列值E(520)。接收机将H1应用到E(520)从而获得6(530)。由于V1在位置6等于0(540),因此接收机确定E(520)关于H1相对于其他某个散列值(520)有冲突,由此将H2应用到E(520),从而获得3(550)。由于V2在位置3等于1(560),因此接收机确定E(520)关于H2唯一性地映射。接收机能通过对V1中的1的数目进行计数,并将它与V2中直到V2的位置3中的1为止但不包括该位置3中的1的1的数目相加的方式,来确定由散列函数决定的此源数据单元的位置,其中相加的结果等于5,由此第五源数据单元的位置是5。请参看图6A,接收机能够通过查看位置到序列映射(650)的位置5来确定第五源数据单元的序列号,该位置5等于4,由此第五数据单元的序列号是4。通过对于每一个接收到的源数据单元使用类似的过程,接收机就能确定每一个接收到的源数据单元的序列号,并且由于序列号从0开始连贯前行直到K‑1,这就允许接收机确定所有缺失的源数据单元的序列号。

    一个潜在的困难是在源标识数据被用来标识一部分源数据而不是整个源数据时对特定源块的标识,因为源分组本身可能不包含该信息,并且可能没有现有的同步协议用于确定和传达源块边界。一个可能的解决方案是,在比感兴趣的源块更宽的源分组的范围上使用上述的源标识通信协议,即,所生成的源标识数据可以与在前和在后的源块交叠。图9中解说了此解决方案的示例。源块边界可以相对于其在所涉及的源分组的整个范围内的相对位置来信令指示和传达。交叠的范围越宽,此协议就变得越健壮,但其代价是额外的带宽开销以及CPU负荷。

    图10解说了一个实施例的示例,其类似于图8B所显示的示例,但是源标识数据的结构已被修改为包括新字段“O”,其表示从基准的偏移量。从基准的偏移量如图9所解说的,能够确定在源块之间所生成的源标识数据中的交叠的量。这种偏移可以用来分别确定在源块的开始和结束处与其他毗连源块的源数据单元的交叠。对于确定被此源标识数据覆盖的源块内的源数据单元的贯序和定位而言,在此偏移范围内接收到的任何分组(在毗连源块之下)能被丢弃。(覆盖这些被丢弃的分组所属的毗连源块的其他源标识数据能够处置关于这些分组在这些其他毗连源块内如何贯序或定位的确定。)

    另一个潜在的问题是,单个源块内的两个或更多个源分组可能相同。这些相同的分组将总是具有散列冲突,而不管应用于分组的散列函数如何。在散列位置映射中,两个分组序列都将映射到相同的散列位置。图11A解说了这种情况。

    可以发明指示哪些源分组是相同的并将此信息片传达给接收设备的方法。如此,此方法使接收机的问题精简到只要处置彼此全都不同的源分组的问题,在这种情形中,就能应用如前所述的协议。假定有两个分组相同并且它们在散列函数中不与任何其他不同的分组冲突,则为了通信,在冲突比特矢量中不标记出由于相同的分组所产生的冲突。相同的输出值意味着存在相同的源分组。下面是这样的方法的示例。不是使用例如(650)如图6A中所示的位置到序列映射,而是代之以使用序列到位置映射。然后,每个相同的分组与其序列号无关地映射到相同位置,而对于每个相同的分组,序列到位置映射能在其序列号处列出它映射到的相同位置。例如,假设有如11B中所示的九个源数据单元(1110),其中显示了(1120)来自H的相应的散列值,这些散列值是与图5B所显示的相同的散列值(520)。假设由这些散列值(1120)决定的定位与图5B所显示的位置相同。然后,序列到定位映射(1130)表明,序列号为4和8的相同的源数据单元两者都被映射到位置5处的源数据单元。当使用此方法时,指出序列中的源数据单元的数目和唯一性源数据单元的数目作为源标识数据的一部分可能是有用的,例如,在图11B的示例中这些数目分别是9和8。

    另一个潜在的问题是可能有如下的罕见的情形:在每个可用的散列函数已被应用于分组之后,不同的分组仍会冲突。这种情况可能由于散列函数选择池有限,或由于分配用于解决冲突的时间量不足而发生。在这些情形中,最后一个冲突比特矢量将具有一个或更多个标记为“最终冲突”的比特。接收机只需丢弃其散列冲突不能被解决的分组。图12中解说了这种潜在的解决方案。

    使用源系统映射来标识源数据提供了许多优点。例如,源系统映射大小的效率是合理的,因为对于为范围高达几百的某些K值描述的某些实施例而言,对于每个源分组,它们只需要大约额外的4到12比特数据。此外,多个散列函数还有助于降低CPU负荷。首先操作低复杂性的散列函数;然后,较高复杂性的散列函数对少得多的分组进行操作。另一个优点是,不需要额外的方法来解决散列冲突。此外,源系统映射对于散列函数设计或替换是灵活的。

     源标识数据的可靠的传输

    取决于网络配置,源标识数据可以要么在单个信道中与FEC修复数据相结合,要么独立地进行传输。由于此信息片在分组恢复和/或重排过程中可能至关重要,因此,优选对源标识数据应用前向擦除纠正技术。注意,对源标识数据应用的FEC不必与原始源流上的FEC代码有任何关系。它可以是也可以不是相同的FEC代码,它可以是也可以不是系统性的。此外,将这些源标识数据分组(以及它们的FEC修复部分)的传输展开也可能是有益的,因为那样的话传输对于突发擦除会有更大的回弹性。另一种技术是将源标识数据的全部或部分与从原始源流生成的FEC修复数据组合起来(如果可能的话),以便进一步降低带宽开销。在源标识数据不与原始数据的FEC修复数据一起使用的情形中,对源标识数据进行FEC保护仍是优选的。

    在一个实施例中,源码元映射能随FEC数据(诸如使用链式反应码生成的数据)一起传输。结果是接收机能接收到两个流——一个流带有未修改的源数据,而第二个流带有原始流的FEC数据(链式反应修复数据)和源码元映射数据。源码元映射数据能进而具有其自己的FEC数据。

    图13显示了从源码元映射生成FEC修复数据的方法的一个示例。在图13中,首先,将源码元映射断成许多片段(1310),然后,使用这些片段作为适当的FEC保护方案(1320)的输入。FEC保护方案生成修复数据集合(1330),然后,这些修复数据(1330)能随原始源码元映射一起传输。在一个实施例中,将序列号应用于源码元映射的片段(1310)和修复数据(1330),从而如果有J个源码元映射片段,那么,给源码元映射片段指派范围从0到J‑1的序列号,并将修复数据指派到从J开始的并从J往前的序列号。

    图14是从源分组生成修复码元的解说。在一个实施例中,使用链式反应码来生成修复码元。如在图14中所引用的,源分组可以包含多个源码元,并且源分组各自包含不同数目的码元。

    图15解说了一个实施例中的修复分组信息的结构,其中,修复分组包含FEC数据和源标识数据两者。在图15所显示的实施例中,源标识数据呈源码元映射的形式。在图15中,R表示分组中的FEC修复码元的数目。在罕见的情形中,如果分组中没有修复码元,则R可以是0。SBN表示受此分组保护的源块编号。在图15所显示的实施例中,SBN的范围可以从0到4095。PP是由FEC方案提供的保护期。在图15中所解说的实施例中,PP的单位是10ms。SBN和PP两者都可以用来增强流的同步。ESI是分组中的第一FEC修复码元的编码码元ID。K是源块中的源码元的数目。J是SSM片段序列号。X是原始SSM片段的数目。同一个分组内的连贯的FEC修复码元具有连贯的编码码元ID。SSM片段可以要么包括原始源标识数据要么包括原始源标识数据片段的FEC修复数据。

    图16解说了显示如何能使用来自图15中所解说的数据结构的字段来重构源系统映射的一个实施例。在图16中,字段J、X、以及来自修复分组的SSM片段(1610)被扩展以显示在一个实施例中在保护原始源数据的FEC修复分组中可以携带什么SSM数据。

    图17是解说接收机如何能使用源系统映射来应用于接收机所接收到的源码元的流程图。将SSM信息应用(1720)于接收到的源分组(1710)。如果接收机不能标识源分组的唯一性位置或者如果由于任何原因,例如由于源分组不在此源块的位置或序列号的有效范围内而导致过程输出无效结果(1730),则可以从此源块丢弃(1740)该源分组。如果映射成功,则能从源码元映射中提取源码元位置和/或贯序(1750),并将它们与源码元关联。然后,可以将源码元传递给诸如链式反应解码器之类的FEC解码器(1760),以便进行进一步处理,诸如恢复源块。

     传输错误处置

    在许多实施例中,从编码器向解码器传输的数据流是在一系列分组中通过网络传输的。在许多这样的网络中,有许多可能在分组的传输中发生的潜在差错。分组可能会丢失,分组投递可能会延迟,并且在传输期间分组可能被复制,解码器可能在不同的时间接收到相同的分组。在某些实施例中,解码器受到时间约束,并且可能在一段时间以后使给定源块的解码超时。然而,网络的特质可能导致在有关系的源块已经超时之后分组才被投递到接收机。下面是接收机如何能处理各种分组差错的某些示例。下面没有一个示例意在给出接收机如何能处置各种差错的穷尽性清单。

    图18解说了分组接收超时,其中丢失的分组横跨两个块。如果源分组可能与错误的块关联,则可以将这两个块冲刷到应用程序。如这里所使用的,冲刷可以意味着,不尝试对那些块进行解码;按原样返回源分组。替换地,冲刷可以意味着简单地丢弃源分组。对块N+2的操作将返回到正常接收和解码。有时候,超时可以与横跨两个以上的块的丢失分组关联。在这样的情形中,其间的源分组可以存储在临时块中,然后最终能给冲刷到应用程序。

    图19解说了源块中的早期的突发丢失。属于块N的分组被冲刷到应用程序。可以用普通的接收和解码对块N+1进行操作。

    图20和21解说了要么在同一个块内要么在扩展块内接收到的延迟分组。在这两种情况下,都能在块N内正确地标识出延迟的分组而不需要特殊处理。对于源块N和对于N之后的源块,接收和解码操作如常地进行。

    图22解说了跨出扩展块外的延迟分组。将如常对块N进行解码。对于块N+1,有三种可能的情况可能发生在延迟分组上。第一种可能性是,延迟的分组被认为无效。例如,该分组可能不会被正确地散列到SSM中包含的任何分组ID。在此情形中,丢弃该分组,并且如常对块N+1进行解码。第二种可能性是,根据块N+1上的SSM,此延迟分组被指派了分组ID,但是,此指派的分组ID与为块N+1接收到的另一个分组的ID重合。在此情形中,不尝试对块N+1进行解码,而将块N+1冲刷到应用程序。第三种可能性是,根据块N+1上的SSM,此延迟分组被指派了分组ID,并且块N+1中没有其他分组采用此分组ID。在此情景中,尝试对块N+1进行解码,并且依赖于恢复出的块的校验和来使此解码尝试无效。此无效导致只将接收到的块N+1的源分组返回给应用程序。

    图23A/23B解说了扩展块内接收到的重复的分组。在这两种情况下,都能在块N内正确地标识出重复的分组。接收和解码操作可以轻松地如常进行。

    图24解说了超出扩展块外接收到的重复分组。将如常对块N进行解码。对于块N+1,有三种可能的情景可能发生在重复分组上。第一种可能性是,重复分组被认为无效。例如,分组可能不能正确地散列到SSM中包含的任何分组ID。在此情形中,丢弃该分组,并且如常地对块N+1进行解码。第二种可能性是,根据块N+1上的SSM,此重复分组被指派了分组ID,但是,此指派的分组ID与为块N+1接收到的另一个分组的ID重合。在此情景中,不尝试对块N+1进行解码,而将块N+1冲刷到应用程序。第三种可能性是,根据块N+1上的SSM,此重复分组被指派了分组ID,并且块N+1中没有其他分组采用此分组ID。在此情景中,尝试对块N+1进行解码,并且依赖于恢复出的块的校验和来使此解码尝试无效。此无效导致只将接收到的块N+1的源分组返回给应用程序。

     案例研究

    下面是数个案件研究,显示了所描述的方法在各种不同的系统上的特征。这些是流式播送应用的案件研究,其中使用FEC码来添加FEC修复分组,以保护原始流,并且其中每个SSM都覆盖整个数据流中的小部分。在所有这些案件研究中,

    ·每个源数据分组携带7个MPEG‑2TS单元,其中,每个MPEG‑2TS单元是188字节。

    ·码元大小被选取为1320字节,以便使每个源分组是一个码元。

    每个修复分组携带一个FEC修复码元以及诸如SSM的全部或部分之类的其他数据。

    ·SSM要么被完全地携带在每个FEC修复分组中,要么被部分地携带在FEC修复分组内。

    ·每个SSM覆盖将向其应用FEC保护的一个源数据块,并且每个SSM携带某些有关毗连源块的交叠信息,以便滤除来自那些源块的分组。

    ·在每一种情形中,希望有1500字节的最大分组大小,以便避免当通过网络发送分组时发生分组分割。

    在每一种情形中,推导两个值:PSSM和PFEC。PSSM是没有足够的分组到达以便源块恢复SSM数据的概率,而PFEC是在假定理想的FEC码的情况下没有足够的分组到达以便源块恢复源块的概率。这些概率是在为每一个案例声明的丢失状况下假定随机和独立分组丢失的情况下来演算的。

    案例研究1

    >源数据流速率是4Mbps。

    >SSM覆盖期(=保护期):125ms

    >丢失状况:0.1%

    >推导的参数:

    ·源块中的分组数目=48

    ·修复分组的数目=3

    >SSM考虑:

    ·用于SSM的分组数目(每端有5个分组交叠)=58

    ·散列函数的数目=5

    ·散列冲突矢量分配≈20字节

    ·散列位置映射分配≤58字节

    ·SSM长度小于100字节,如此,整个SSM能被携带在每个FEC修复分组中。

    >故障率:

    ·PSSM=(0.1%)3=10‑9

    ·PFEC=2.4*10‑7

    案例研究2

    >源数据流速率是4Mbps。

    >SSM覆盖期(=保护期):250ms

    >丢失状况:0.7%

    >推导的参数:

    ·源块中的分组数目=95

    ·修复分组的数目=9

    >SSM考虑:

    ·用于SSM的分组数目(每端有10个分组交叠)=115

    ·散列函数的数目=5

    ·散列冲突矢量分配≈40字节

    ·散列位置映射分配≈114字节

    ·整个SSM长度≈168字节

    ·SSM被分成2个片段

    ·使用FEC保护来生成另外9‑2=7个修复SSM片段

    ·每个FEC修复分组携带一个SSM片段

    >故障率:

    ·PSSM=5.156*10‑17

    ·PFEC=4.052*10‑9

    案例研究3

    >源数据流速率是6Mbps。

    >SSM覆盖期(=保护期):500ms

    >丢失状况:0.7%

    >推导的参数:

    ·源块中的分组数目=285

    ·修复分组的数目=25

    >SSM考虑:

    ·用于SSM的分组数目(每端有30个分组交叠)=345

    ·散列函数的数目=7

    ·散列冲突矢量分配≈120字节

    ·散列位置映射分配≈400字节

    ·整个SSM长度≈538字节

    ·SSM被分成5个片段

    ·使用FEC保护来生成另外25‑5=20个修复SSM片段

    ·每个FEC修复分组携带一个SSM片段

    >故障率:

    ·PSSM=6.879*10‑42

    ·PFEC=1.887*10‑15

    图25是对于0.7%的丢失状况下变化的保护期和保护量而言,4Mbps流的故障率图表。可以从此数据得出的结论是,由于不完整的SSM导致解码失败的概率远比由于FEC接收到的码元的数目不足导致解码失败的概率小。

     多个流/重传实施例

    图26显示了正在使用流的混合向机顶盒发送数据的通信系统2600的示例。头端设备2610向网络2620发送包括源流中的原始源数据的原始节目、以及该节目的两个分离的修复流,其可以包括FEC修复数据和/或源标识数据。网络2620向中间服务器2630发送原始节目。中间服务器2630向网络2650发送源流和其中一个修复流。网络2650可以是与网络2620相同的网络,但是它也可以是相异的网络。在任何情况下,网络2650随即向一个或更多个STB 2640发送源流和这一个修复流。在由任何STB接收到的数据都不足以创建源数据的情况下,STB可以请求重传流。此请求被发送到中间服务器2630,该中间服务器2630可以通过发送异于第一修复流的第二修复流来响应于要求重传的请求。在某些实施例中,来自第二修复流的分组被高速缓存在中间服务器上。在某些实施例中,中间服务器2630高速缓存尚未发送给STB的修复数据。在某些实施例中,中间服务器2630基于源流的保护期来高速缓存修复数据。在某些实施例中,源或修复流的高速缓存可以在系统/网络中的其他位置进行。在某些实施例中,STB可以在其重传请求中请求特定量的修复数据,诸如特定数目的修复分组。在某些实施例中,STB可以基于STB已接收到的源标识数据来请求修复数据(源数据或FEC修复数据)。在某些实施例中,最初接收到源数据和/或修复数据的STB首先在单播流中接收被高速缓存在中间服务器处的数据,然后,中间服务器将发送到STB的流转移到多播流。通信系统2600有许多变体,包括源流和修复流作为一个逻辑流发送的变体,包括机顶盒是其他类型的接收设备的变体,包括某些接收设备不支持源标识数据方法、某些接收设备支持源标识数据方法与FEC方法联用、其他接收设备支持源标识方法与重传方法联用、其他接收设备支持源标识方法与重传方法和FEC方法两者联用,而其他接收设备支持源标识方法与数据重排方法联用的变体,包括有多个发送设备的变体,包括节目的修复的发送和/或生成设备要么在逻辑上要么在物理上不同于原始节目的发送和/或生成设备的变体,包括发送设备至少有时是接收设备或者接收设备至少有时是发送设备的变体,包括由于FEC方法或重传方法之外的其他原因例如为支持数据重排方法而支持源标识数据方法的变体。

     DVB‑T/DVB‑H实施例

    在与包含源数据的数据流分开的数据流中传输的源标识数据可以应用于各种系统。例如,附录A公开了这样的系统:其中FEC保护和源标识数据可以在诸如DVB‑T广播网之类的网络上承载的第一数据流上传输,而原始源数据可以在相同网络上传输的第二数据流上传输。附录A被纳入本公开中用于一切目的。在其他实施例中,FEC保护和源标识数据可以在诸如DVB‑H广播网之类的网络上承载的第一数据流上传输,而原始源数据可以在跨诸如DVB‑T网络之类的另一种网络传输的第二数据流上传输。

    注意,DVB‑T网络和设置已被设计为向固定位置的接收机传输,而将DVB‑T网络的用途扩展到其他类型的接收机例如移动接收机或处在较差位置的固定位置接收机等是有很大的好处的。对于这些类型的新的接收机,在现有的DVB‑T网络上存在的出错状况对于支持诸如高质量流式播送视频之类的有关系的应用而言太有挑战性。通过使用本公开中所描述的方法,这些网络的用途可以扩展到这些新的接收机以支持太有挑战性从而难以用其他手段来支持的应用。不需要进行网络升级即可应用这些方法,也不需要升级现有的接收机以支持这些新的接收机。通过使用本公开中所描述的方法,新的接收机将能够接收原始未修改的数据流,此外,还接收与这些原始数据流关联的源标识数据和FEC修复数据,以便以与现有的接收机相同的质量来恢复和播出视频流,尽管对于这些新的接收机而言,网络条件要比对于现有接收机而言差得多。

    在阅读了本公开之后本领域技术人员将显而易见的是,这里所描述的方法可以自然而然地扩展以支持不同的FEC码,以维持这一特性:在接收机处,来自一个以上的传输的码的数据能用如此方式组合起来,以使得与根据与各自相应的码关联的规程独立地处理数据的情况相比提供更大的纠错。

    前面的描述只是为了解说和描述而给出的。它并不旨在穷举或将本发明限于所公开的精确形式,显然,在上文的教导的启示下,许多改动和变形也是可以的。选取所描述的实施例是为了最好地解释本发明的原理以及其实际应用,从而使本领域技术人员能在各种实施例中并用最适合于所构想的特定用途的各种改动来最佳地利用本发明。本发明的范围旨在由所附的权利要求来定义。

    

生成和传达源标识信息以实现可靠的通信.pdf_第1页
第1页 / 共52页
生成和传达源标识信息以实现可靠的通信.pdf_第2页
第2页 / 共52页
生成和传达源标识信息以实现可靠的通信.pdf_第3页
第3页 / 共52页
点击查看更多>>
资源描述

《生成和传达源标识信息以实现可靠的通信.pdf》由会员分享,可在线阅读,更多相关《生成和传达源标识信息以实现可靠的通信.pdf(52页珍藏版)》请在专利查询网上搜索。

提供了从源分组流生成源标识信息并通过通信信道可靠地将此源标识信息从源传送到目的地的方法。该方法作用于源分组集,其中要被传送的每一个源分组的源标识信息是随关联的源块中的所有或大多数其他源分组的源标识信息一起推导和交付的。该方法包括使交付源标识信息所需的网络带宽最小化的技术、以及克服网络受损的技术。当与FEC技术、重传技术、或FEC技术和重传技术的组合相结合时,这里所描述的方法允许接收机恢复丢失的源分。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1