使用网络编码的内容分发的制作方法

文档序号:7623079阅读:86来源:国知局
专利名称:使用网络编码的内容分发的制作方法
相关申请的交叉引用本申请要求2004年2月7日申请的美国临时申请号为60/585212的权益。
背景技术
在今天网络化的计算机环境中,向网络中的节点传输大规模的内容经常是必要的或希望的。用于大规模内容传输的一种机制是一种使用网络编码的内容分布系统。通常,内容分布系统是一个互相连接共同合作的多个节点组成的网络,这些节点使用网络编码将任何类型的数字内容从一个源分发到一个或多个互相连接共同合作的节点。典型的内容分布系统首先必须构建一个有效的拓扑覆盖,然后通过该拓扑安排信息传送规程,以使所有节点均匀的共享该分发的内容。
许多因素可以影响典型的内容分布系统的效率。首先,随着在该拓扑覆盖中的节点数目的增长,该典型的内容分布系统的效率会降低。其次,由于网络种类更加不同,特别是每个独立节点的带宽容量不同,该典型的内容分布系统的效率会降低。第三,由于执行了避免或减少“寄生”节点这一作用的设计机制,该典型的内容分布系统的效率会降低。寄生节点在网络上不进行协作,并且被修改为在网络上仅执行接收,因而对于其它使用节省了上载容量。

发明内容
这篇概要仅以简单的形式进行了一般性的介绍,读者可在以下描述的详细说明中选择一种或多种方式。这篇概要的目的不是确定所要求的主题的关键点和/或要求的特征,其目的也不是用于确定所要求主题的范围。
在此揭示了多种用于在内容分布网络中提供快速的和可升级的内容分布的技术。
依照在此描述的一些技术,数字内容(例如文件)可被首先分为N块内容,其可以编码也可以不编码。然后该N块中的一块或多块可在网络上互相协作的多个节点中进行分发。
该内容分布网络的任何协作节点上的被分发的内容块可被编码为编码数据包。该内容分布网络的协作节点上的编码数据包可包括关于在那个特定的协作节点上接收到的被分发的内容块的信息。进一步,在那个特定的协作节点上的编码数据包也可以包括关于其它编码数据包的信息。因而,当在下游的接收节点上重新构造该数据内容时,一个编码数据包可用来代替任何分发的N块内容。
换句话说,客户寻求下载该被分为N块内容的数字内容的至少一个拷贝,可从内容分布系统的多个协作节点中的任意一个上下载该N个块的N个编码代表,而不需要从该源节点或该网络的节点的任意的组合中来定位并下载原始的N块内容。


通过依照下面描述的附图的详细说明,本发明将会被更好的理解。
图1显示了一个内容分布网络环境,其中可执行使用网络编码的内容分布的例子。
图2显示了一个内容分布网络环境,其中也可执行使用编码的内容分布的例子。
图3显示了从一个接收机的角度观察,使用网络编码的内容分布的一个处理流程的例子。
图4显示了从一个发送机的角度观察,使用网络编码的内容分布的一个处理流程的例子。
图5显示了一个系统的例子,其中使用网络编码进行内容分发。
具体实施例方式
在此揭示了多种用于促进在计算机网络中的数据内容的传输的技术。
依照在此描述的各种实施例,源节点存储的一个文件或数字内容块被多个接收节点共享,该源节点可与在该网络上的管理业务进行通信以宣告该文件或数字内容块是可用的。在开始下载或分发该文件或数字内容块以前,该文件(或者通常是数字内容块)的源节点可将该文件(或数字内容块)分为预定大小的预定数目的块,并向网络上的任意一个管理业务、该网络上的一个不同业务、可下载该内容的网络上的接收节点、或者另外能够发现该内容有用的网络上的任何其它节点提供该信息。
一旦该源节点已经宣告了该文件或数字内容块对于下载或分发是可用的,网络上的接收节点可与管理业务通信并且选择用于下载的文件或数字内容块。在至少一个使用网络编码的内容分发的实施中,当接收节点已经选择了要下载的文件或数字内容块时,该接收节点可与网络上的管理业务通信以了解将从该源节点接收该分发的文件或数字内容块的至少一部分的其它接收节点。
当该源节点已经完成了将该文件或原始的数字内容块分为预定数目的块时,该源节点然后可以通过选择依照已被选择来编码这些块的一个数学系统的一组数学修改来对这些块进行编码。这个选择出的数学系统可将该块、文件或数字内容块视为一个等式中的变量,并且进一步将该编码过的块视为该等式的解。未经过编码的块也可以以同样的方式被使用,并且同样也可以包括在该具有编码块的数学系统中。例如,未编码的块可被认为是一个原始块和没有别的块的线性组合。进一步,该源节点可以选择仅编码该文件的个别区域,对其它区域不编码。
因而,一旦接收节点已经接收到了足够的编码或未编码的块以及它们的相应的数学修改,该接收节点就可以求解该等式系统以得出该变量(即块)的值。任何具有在此揭示的性质的数学系统都可被使用,因此在此描述的执行方法不是限制性的。
当该源节点已经对该原始数字内容的至少一个块进行了编码时,该源节点可以开始向接收节点分发一个或多个块。在至少一个可选择的使用网络编码的内容分发的实施方式中,接收节点可以不发送对于个别块的请求,而该接收节点可发送一个请求以接收一组数学修改。进一步,一旦该接收节点接收到了所请求的数学修改,该接收节点然后就可以依照该数学系统执行计算以确定该数学修改是否提供了对于求解该数学系统有帮助的附加信息。最后,在确定了该数学修改包括有在求解该数学系统中有帮助的附加信息之后,该接收节点可向源节点发送一个请求以发送与该组数学修改相关的编码块。
此外,在使用网络编码的内容分发的至少一个其它的实施方式中,一旦接收节点(称为R)接收到了任意数目的块,该接收节点(R)然后作为与在该内容分布系统中的源节点功能类似的发送节点进行操作。例如,在从其它接收节点(G)接收到请求后,该接收节点(R)可作为一个源节点服务,通过在接收节点(R)上以与那些最初编码这些块的源节点所使用的相似方式重新编码这些块。
在接收到最小数目的块和数学修改后,接收节点可以开始求解该数学系统以对接收到的块进行解码。求解该数学系统可以使用编码和未编码的块的任意混合开始,并且可以在收到了全部组的块之前开始。一旦该块已经被解码并重新产生了原始块,接收节点可组合该解码后的块以产生一个原始文件或数字内容块的拷贝。
图1显示了计算机网络100的例子,包括多个互相连接的网络节点,其中可以实现使用网络编码的内容分发的一个或多个例子。
如在此使用的,术语“节点”可代表在网络100中任意的计算机系统、装置或者可唯一寻址或可唯一标识的处理,其可操作来与网络100上的其它节点通信。例如,非限制性的,节点可以是一个个人计算机、一个服务器计算机、一个手柄或者便携式电脑装置、一个写字板装置、一个多处理器系统、一个基于微处理器的系统、一个机顶盒、一个用户电子装置,一个网络PC,一个小型计算机、一个大型计算机、一个包括以上任何系统或装置的分布式计算机环境等等。
如果网络100上的节点包括一个计算机系统或者一些形式的处理装置,该节点可典型的包括一个处理器、一种或多种形式的计算机可读媒体、和一个或多个通信连接,这些通信连接允许该节点有效的连接到网络100。在此使用的计算机可读媒体可以是能够存储或执行能够被编码为可由计算机访问和理解的信息的任何媒体。典型形式的计算机可读媒体非限制性的包括易失性的或非易失性的的存储器、包括可移动和/或不可移动的媒体的存储装置、和通信媒体。
通信媒体可将计算机可读信息实现为调制数据信号,例如载波或其它传输机制,并且可以包括任意的信息传输媒体。术语“调制数据信号”可代表具有一个或多个可按照在信号中的编码信息的方式进行设置或改变其特征的信号。通过该非限制性的例子的方式,通信媒体包括诸如有线网络或直接连线链接媒体,也包括诸如声音、RF、红外线和其它无线媒体的无线媒体。
在此描述的关于网络100上的个别节点的功能可由该节点本身执行,或者由该节点与一个或多个可包括在内或者与该节点相关的其它模块合作执行,或者通过多个子模块执行。例如,在使用网络编码的内容分发的至少一个实施方式中,由网络100上的一个节点或模块执行的操作可由实现为一个或多个计算机可读媒体的计算机可执行的结构操作。在这些操作中,该节点或模块的操作可由在该节点中的一个或多个处理器执行,该模块包括在该节点中或与该节点相关。在其它操作中,节点的操作可以以硬件、固件、或某种硬件、固件和软件的结合的方式执行,其可以是该节点的一部分,也可以是与节点在某些形式上相关,该模块包括在该节点中或与之相关。此外,在此描述的关于个别节点的功能可以通过或分布到多个节点执行。
参考图1,通过考虑源110将分发内容A 180到网络100的成员节点这一实施例,使用网络编码的内容分发可进一步得到解释。尽管内容A 180可以是任意类型或大小的文件,为了举例,假设内容A 180仅由两个数字比特组成,其中包括一个二进制位0和一个二进制位1。
根据至少一个实施例,源110可将内容A 180分为包括一个二进制位0的块B 190和包括一个二进制位1的块C 200。进一步,源110可将块B 190发送到节点1 120,并且也可以将块C 200发送到节点2 130。节点1 120可将块B 190发送到节点3 140和节点5 160。节点2 130可将块C 200发送到节点3 140和节点6 170。
接收到块B 190和块C 200后,节点3 140然后可以衡量向节点4 150发送块B 190和块C 200的效率。这个效率的确定可以考虑节点3 140可能不知道节点4 150可被连接到的任何其它节点或者不知道节点4 150被连接到的节点的任何数据,这些数据可被要求来重新构造内容A 180。
由前述的效率确定导出的一个假想的例子可以设想为节点3 140将块B 190发送到了节点4 150。节点4 150然后可将有用的信息仅发送到节点6 170,并且节点5 160必须等待接收块B 190以重构内容A 180。另一个想象的例子可以设想为节点3 140将块C 200发送到了节点4 150。节点4 150然后将有用的信息仅发送到了节点5 160,并且节点6 170必须等待接收块B 190以重构内容A 180。
尽管如此,使用网络编码的内容分发的至少一个实施方式包括节点3 140编码块B 190和块C 200以形成块D 210,其然后被发送到节点4 150。例如,节点3 140可在节点3 140上对与块B 190和块C 200相应的信息执行异或操作以产生块D 210。结果,块D 210可包括二进制位1,其是二进制位0(相应于块B 190)和二进制位1(相应于块C 200)的异或。
节点4 150然后可将块D 210发送到节点5 160和节点6 170。进一步,通过在块D 210上执行一个解码功能,与块B 190和块C 200相应的信息被恢复,块D 210对于节点5 160和节点6 170重构内容A 180是同时有用的。
换句话说,节点5 160已经从节点1 120接收到了块B 190。然后,从节点4 150接收到了块D 210并且得知了用于产生块D 210的编码方案,节点5 160可以对块D 210执行一个解码功能以在没有实际接收到块C 200的情况下计算出与块C 200相应的信息。从而,节点5 160可以利用与块B 190和块C 200相应的信息依照使用网络编码的内容分发的至少一个执行方式重构出内容A 180。
同样的,节点6 170已经从节点2 130接收到了块C 200。然后,从节点4 150接收到了块D 210并且得知了用于产生块D 210的编码方案,节点6 170可以对块D 210执行一个解码功能以在没有实际接收到块C 200的情况下计算出与块B190相应的信息。从而,节点6 170可以利用与块B 190和块C 200相应的信息重构出内容A 180。
使用网络编码的内容分发的一个或多个实施方式可进一步提供一个终端系统内容分布解决方案,其有效的利用网络资源以向客户节点提供来自多个网络路径的信息块。该资源的有效利用可包括向网络100上的一个或多个节点提供网络100上其它节点的安排和定位的预先的了解,和网络100上的这些节点将分发原始块和节点将分发编码块的预先了解。因而,使用网络编码的内容分发可随着网络大小的增长和网络上在线和离线之间转换的节点的增多而相应的平均。
例如,当源节点向接收节点发送一个块时,该源节点可产生并发送一个在该源节点上可用数据的线性组合。该线性组合可包括一个异或操作。因而,当接收节点接收到多个块的足够的线性非相关组合时,该接收节点之后就可以通过求解线性等式系统来解码该接收到的线性组合,从而重构出原始的数字内容。
进一步,为了减小传输的浪费,网络100上的节点可尽力仅发送那些对网络100上的其它节点具有新信息的块,尽管对于依照在此描述的实施例有效的执行内容分布来说并不需要绝对的适应这个要求。这个有效的传输可由网络100上的节点完成,这些节点周期性的交换有关本地存储在网络100上的各个节点上的块的信息。该周期性的信息交换可发生在网络100上的节点中的一个独立节点确定了本地存储的信息对于另一个节点重构出原始数字内容的至少一部分是有用的之时。
上述的周期性的信息交换可通过在网络100上的一个或多个中央服务器上存储该信息的方式执行。各个节点然后可以访问一个中央服务器以确定网络100上的其它节点中的哪一个存储有包含新信息的块。可选的,分散结构可被用来直接与网络100上的其它节点通信以交换关于存储在各个独立节点上的块的信息。进一步可选的,可以执行以上所讨论的方法的全部或部分的组合。
因而,当网络100上的一个独立节点得知了存储在网络100上的其它节点上的块所包含的信息时,该独立节点可要求其它节点仅传输该独立节点现在缺少的信息(即新信息)。可选的,网络100上的一个独立节点可随机的产生新块并将这些新块推入到网络100上的其它节点,而不管其它节点是否已经确定了该独立节点本地存储有新信息。适应性的,独立的接收节点可以丢弃任何被确定为对于该独立接收节点不包含新信息的包。
图2显示了计算机网络200的实施例,其中可执行使用网络编码的内容分布的一个或多个实施例。计算机网络200可包括与图1相似的方式互相连接的多个节点。
使用网络编码的内容分发的一个进一步的实施例可通过考虑一个假想的例子来解释,其中源210将通过网络200分发,原始的内容文件包含六个字节(即字节1-6)。进一步,该假想的例子可假设该样值字节1=70,字节2=91,字节3=5,字节4=35,字节5=22,字节6=15。
通过这个例子,源210可从原始内容文件产生多个块,每个块可包括来自原始内容文件的两个连续的字节。例如,源210可产生包括字节1和字节2的块1;包括字节3和字节4的块2;和包括字节5和字节6的块3。
源210然后可使用一组系数向量来对块1、块2和块3进行线性组合以将块1、块2和块3编码为一个单独的编码块。该系数向量可由源210任意选择,根据一个设定方案选择,从该网络上的一个该信息的中心库选择,或者通过任何能够产生一组可用的系数向量的方法选择,以对块1、块2和块3进行线性编码。
为了描述该实施例,源210可从1到256之间的一组数字中任意的选择系数向量。从中选择系数向量的该组数目的设定可以是任意的数目设定,例如,设定一组可产生在该内容分布系统中的线性非相关的系数向量的最大数的数目。例如,在准备该编码块中,源210可将第一个系数向量选择为6,90和52。为了产生该编码块,源210可将该块中的单个的字节视为一个向量。尽管如此,源210可对在每一个块1、块2和块3中的信息按照产生一个包含信息的新块一致的任意方式进行线性编码,新块包含的信息是存储在原始块中信息的线性组合。在这个实施例中,第一个编码块称为e1,其通过由该向量中的每一个值乘以该系数向量产生。
例如,使用第一个系数向量[6,90和52]和字节值字节1=70,字节2=91,字节3=5,字节4=35,字节5=22,字节6=15,源210可产生e1=67091+90535+522215.]]>执行乘法的结果为e1=420546+4503150+1144780.]]>执行加法的结果为e1=20144476.]]>源210然后可将新的编码块e1和该系数向量[6,90和52]发送到节点1 220。
源210然后可以使用一个新的系数向量通过重复用于产生e1的操作来产生一个新的编码块e2。例如,使用另一个系数向量[18,2和128]和字节值字节1=70,字节2=91,字节3=5,字节4=35,字节5=22,字节6=15,源210可使用与上面相同的方法产生编码块e2。在这个例子中,e1=40863628.]]>源210然后可将该新的编码块e2和系数向量[18,2和128]发送到节点2 230。
节点1 220然后可以获悉拥有网络200上其它节点的线性编码块的线性非相关,从而进一步确定该块是否包含有节点1 220可用于解码该编码块和恢复出原始内容文件的新信息。从而,节点1 220然后可以向节点2 230发送一个询问以请求节点2 230发送信息,节点1 220可使用该信息确定在节点2 230当前正处理的块中的编码信息的线性非相关。
节点2 230可使用任何方式来产生可使节点1 220确定在该编码块中的信息的线性非相关的信息。例如,节点2 230可在节点2 230上产生当前的各个系数向量的一个线性组合以产生一个主系数向量。在这个例子中,具有系数向量[18,2和128]的编码块e2当前在节点2 230上,因此节点2 230可不需要执行上述的线性组合。因此,节点2 230可将系数向量[18,2和128]发送到节点1 220。
节点1 220可从节点2 230接收系数向量[18,2和128],搜寻以确定该接收到的系数向量关于节点1 220当前正在处理的块的系数向量的线性非相关。任何结果能使节点1 220确定从节点2 230接收到的系数向量的线性非相关的数学操作都可以被使用。
例如,节点1 220可将从节点2 230接收到的系数向量[18,2和128]设置成一个矩阵,并产生该矩阵的行化简形式。节点1 220然后可以分析在该矩阵的行化简形式中非零行的数目以发现该矩阵的阶。各个矩阵的阶表示各个矩阵中线性非相关行的数目。在当前的例子中,通过将接收到的系数向量添加到该矩阵并计算该矩阵的阶,节点1 220就确定了节点1 220当前正在处理的线性等式系统的解的数目。
例如,节点1 220可计算该矩阵的阶,该矩阵是使用节点1 220已经处理的编码块的该组系数向量形成的。节点1 220可通过在该矩阵上执行行化简来计算阶1。用于计算一个矩阵的阶的行化简是公知的数学运算。因而,在节点1 220上计算矩阵的阶不限于任何特殊的方法。
从而,矩阵(6 90 52)的行化简形式是(1 15 8.6),在该行化简矩阵中非零行的数目是1,因此,该矩阵的阶是1。
进一步,现在节点1 220可使用节点1 220已经处理的块的系数向量和从节点2 230接收到的系数向量形成一个新的矩阵,在该实施例中应为 一旦节点1 220形成了该新矩阵,节点1 220可计算该新矩阵的阶。
从而,该矩阵的行化简形式是 进一步,该矩阵中非零行的数目是2,因此该矩阵的阶是2。节点1 220例如可将第二个矩阵的阶(即2)和第一个矩阵的阶(即1)进行比较,确定出第二个矩阵的阶更大,因此节点2230处理的信息是线性非相关的。节点1 220可向节点2 230发送一个请求以发送该块,或发送使用该被发送的系数向量所产生的块,节点1 220使用它们执行上述计算。
在这个例子中,当节点1 220执行上述计算时,节点2 230可以从源210进一步接收一个附加的编码块。例如,源210可选择另一个系数向量[213,91,159]来编码等于 的一个新块e3,然后将块e3和用于产生e3的系数向量发送到节点2 230。
节点1 220可向节点2 230发送一个新的请求来确定节点2 230是否处理了任何与节点1 220当前正在处理的信息线性非相关的信息。节点2 230可在此准备一个主系数向量,该主系数向量可由节点2 230处理的所有编码块的系数向量(即e2和e3)与系数向量[18,2和128]和[213,91,159]的线性组合产生。节点2 230可通过产生上述系数向量的线性组合来准备主系数向量,从而产生一个新的系数向量[231,93,287],节点2 230然后将其发送到节点1 220。
节点1 220可接收新的系数向量[231,93,287]并确定该新的系数向量是否与节点1 220当前处理的系数向量线性非相关。节点1 220已经存储了使用块e2和块e3的系数向量形成的矩阵的阶(即2)的最后的计算结果。节点1 220例如可使用该块e2和块e3的系数向量与从节点2 230接收到的新系数向量组合来产生一个新的矩阵,矩阵的结果为 从而,该矩阵的行化简形式为 由于该矩阵中非零行的数目是3,因此该矩阵的阶是3。节点1 220可将该新矩阵的阶(即3)与先前矩阵的阶(即2)进行比较,确定出该新矩阵的阶大于先前矩阵的阶。因此,节点1 220可确定节点2 230处理的信息与节点1 220处理的信息是线性非相关的。节点1 220然后可向节点2 230发送一个请求,以使用传送到节点1 220的系数向量对节点2 230产生的编码块进行重新编码。
节点2 230可使用任何方法来产生一个新的编码块,该编码块与从源210接收到的原始编码块有关的所发送的线性非相关信息一致。例如,节点2 230可产生e2和e3的和来产生一个新的编码块e4,e4可等于 节点2 230现在可将块e4发送到节点1 220,并且不需要进一步发送用于产生块e4的系数向量,因为该系数向量被发送到了节点1 220执行计算。
例如,节点1 220可已经从节点2 230接收到了块e4,并且节点1 220可确定已经接收到了足够的编码块来开始对该编码块解码。节点1 220然后可求解由节点1 220处理的编码块表示的线性等式系统,以确定在源210处理的原始的未编码块中的向量值。节点1 220可使用任何适当的方法来求解该线性等式系统以确定存储在该原始的未编码块中的向量值,并且不限于节点1 220可执行计算的这种方式。
例如,e1等于具有系数向量[6,90,52]的 e2等于具有系数向量[18,2,128]的 e4等于具有系数向量[231,93,287]的 为了求解该线性等式系统以得出在原始块中的向量值,节点1 220可设置变量来代表每一个未编码的块。例如,节点1 220可设置变量x来代表第一个未编码的块,可设置变量y代表第二个未编码的块,可设置变量z代表第三个未编码的块。因此,节点1 220可将该线性等式系统中的第一个等式确定为6x+90y+52z=20144476,]]> 代表编码块e1,第二个等式为18x+2y+128z=40863628,]]> 代表编码块e2,第三个等式为231x+93y+287z=2294928581,]]> 代表编码块e4。
节点1 220然后可使用任何方法来求解该线性等式系统,通过求解该等式确定x(即未编码的块1)等于 确定y(即未编码的块2)等于 并进一步确定z(即未编码的块3)等于 节点1220可解释这些变量并重新产生原始文件的字节结构。节点1 220可使用任何方法依照当前实施例的这个形式解释这些变量来重新产生原始文件。
尽管图2中使用的例子利用了某种简化,很显然可以使用不同的选择来替代执行。例如,交换有关用于编码包的系数的替代实施例可设想为发送重新编码的块,而不必预先确定该重新编码的块是否包含有新信息,或者根本不必交换信息。同样,尽管所有接收到的信息都用于产生新的编码块,也可以使用其中的一个子集。其它的替换或者选择也可以被使用,诸如依赖于特殊应用的特殊编码方案。
进一步,尽管图2中使用的实施例为了说明的目的使用了一个实际数目的系统执行,该实施例也可以使用任何数学数目的系统执行,例如,有限域或伽罗瓦域。
图3显示了示例性的在内容分布网络中作为接收机的一个节点是如何操作的处理流程300。
操作310可代表节点获得关于存在于网络上的一个独立节点的信息。回过头来参考有关图2例举的实施例,块信息可表现为一组用于重新编码该块的系数的形式。尽管如此,块信息也可以表现为能够给出该块内容的指示的任何形式或结构,并且块信息也可以以与该网络的容量、该网络上的节点等一致的任何方式被获得。例如,块信息可从网络上的另一个节点直接获得,该块信息可从该网络上的这些信息的一个中央库获得,或者该节点已经接收到了该块并且已经检查了该块以确定该信息。
选择320可代表该节点确定该块信息是否指示该块包含有在重构原始内容的至少一部分中有帮助的新信息。对于该节点的新信息例如是该节点当前没有处理的一整块或一块的一部分。这个确定例如可表现为使用该块信息执行一个计算的形式。可选的,使用该可返回该块中的信息是否是新的这一指示的块信息的任何操作都可被使用。例如,在关于图2的实施例中,可确定通过计算矩阵的阶来实现。
操作330在选择320的肯定支之后,涉及该块被转换为中间块存储器,其可包括物理存储器、硬盘驱动器、非易失性闪存等。一旦操作330完成,程序流程继续到选择块340。
选择340在选择320的否定支和操作330之后,可代表确定对于重新装配原始文件内容必要的最小数目的块是否已经被接收。该对于重新装配原始文件内容必要的块的最小数目可以为N,其是该原始文件内容被分成的块的数目。响应于否定确定,处理流程300可返回到操作310以进一步对块进行处理。响应于肯定选择340,处理流程300可进行到操作350。
操作350可涉及一个操作,其中多个存储在中间块存储器中的编码块被解码以产生组成该文件的原始块的全集或子集。块的解码可表现为,其中解码操作的结果是由在该内容分布网络中的该文件的源产生的原始块组。处理流程300然后可进行到操作360。
操作360可代表通过操作350中的解码操作产生的原始块组被合并以重新装配出原始内容文件。原始块可被重构以形成原始内容的方法都可被使用。
图3中涉及的操作的顺序和时序仅作为一个例子提供。在可替代的实施中,该操作的顺序和时序都可被改变。例如,如果足够的编码块已经被接收,操作350可置于操作310之后以开始解码至少一个编码块。
图4显示了示例性的在内容分布网络中作为发送机的一个节点是如何操作的流程400的例子。
操作410可涉及,发送机持有多个块,该多个块包含有对于解码在该内容分布网络中的另一个节点上的另一个块或另一组块有帮助的新信息。该确定可在该发送机本地上,在网络上的另一个节点上,在负责该操作的一个中央节点上,或者在任何其它合适的位置上发生。确定该块是否包含有新信息可引起该新信息和其它信息的一个线性组合,该其它信息在发送节点上被分发到该内容分布网络上。
操作420可涉及该发送器重新编码一个或多个本地块以产生一个新的编码块。该重新编码可包括一个操作,该操作为在该发送器上组合本地存储的任何数目的块以产生一个可被该内容分布网络上的另一个节点使用的新块。
操作430可涉及发送在操作420上产生的该新的编码块。该新的编码块可依照当前实施例的方式进行发送,但其发送不限于这种方式。
操作440是可选的,其涉及如果用于重新编码该块的信息没有被编码到新的编码块中,发送器选择来在一个单独的步骤进一步发送用于重新编码该块的信息。该块编码信息可依照当前实施例的形式发送,但其发送并不限于这种方式。
图4中涉及的操作的顺序和时序仅作为一个例子提供。在可替代的实施中,该操作的顺序和时序都可被改变。例如,块420可采取重新编码新块,这些新块对于接收节点和所有与该接收节点相连的节点是有用的。在这种方式中,该接收节点可以产生对那些除了与该节点直接通信的节点之外的节点有用的块。
图5显示了在内容分布网络中节点500的例子。
网络管理器510可使节点500与该内容分布网络中的其它节点、服务器、装置等进行通信。网络管理器510可发送和接收包或信息块,发送或接收请求以执行任何类型的操作,或者发送和接收节点500使用的其它信息以加入该内容分布网络。
在与内容分布网络上的其它节点的通信中,网络管理器510可以校正发送期间的错误,延缓和恢复向该内容分布网络上的其它节点、服务器、装置等的信息发送,并可进一步验证节点500是否被允许加入该内容分布网络。再进一步,网络管理器510可验证该编码块的合法性或真实性。
网络管理器510可通过例如一个应用程序接口(API)、一个通过网络的远程程序呼叫与内容管理器520通信。根据当前实施例的方式,网络管理器510可发送块、有关存储在网络的其它地方上的块的信息、或者内容管理器520可请求来用于使节点500加入该内容分布系统的信息。
内容管理器520可从网络管理器510接收由发生源将原始文件内容所分割成的那些块的数目和大小。内容管理器520可进一步从网络管理器510接收使用网络管理器510所发送的块,将接收到的块提交给编码块存储器540,对那些未被完整接收的块或那些已被确定包含有错误或破坏的块中止存储,并且将那些存储在编码块存储器540中的块转移到网络管理器510和文件管理器530。
内容管理器520也可以执行至少一个计算已确定该内容分布网络中的一个节点是否包含有新信息,这个新信息对于该节点在将原始块解码成由该内容分布网络上的一个原始节点所分割的原始文件内容中是有用的。如果内容管理器520确定了该内容分布网络中的一个节点包含有新信息,内容管理器520可与网络管理器510通信并发出一个请求已接收该块,对于该包含有新信息的节点发送一个请求以重新编码该信息并发送该信息,或者对于内容管理器520发送另一个请求以使该节点加入该内容分布网络。
进一步,内容管理器520也可以执行至少一个代表该内容分布网络上的另一个节点的计算,以确定该节点是否包含有对于该内容分布网络上的另一个节点是新的信息。
内容管理器520可进一步使用一种方法对存储在编码块存储器540中的块重新编码,以使该节点产生对于该内容分布网络中的其它节点有用的编码块或使该节点按照当前实施例的方式加入该内容分布网络。
在编码块存储器540中的块的删除,在编码块存储器540中的存储器管理,以及任何可导致编码块存储器540的最佳操作的操作都可通过内容管理器520执行。
内容管理器520也可以确定何时编码块的数目对于解码这些块并恢复已被接收并存储在编码块存储器540中的原始文件是必要的。在作出该确定之后,内容管理器520可对该编码块进行解码并将每一个解码出的块转移到文件管理器530。
文件管理器530和内容管理器520可例如使用一个应用程序接口(API)或一个通过网络的远程程序呼叫进行通信。文件管理器530可从内容管理器520接收多个未编码的块并组合多个未编码的块以产生一个由该内容分布网络中的一个原始节点发送的原始文件内容的拷贝。
一旦内容管理器530组合了该未编码的块并产生了原始文件内容的拷贝,文件管理器530可与文件系统550通信以将原始文件的拷贝提交到文件系统550的存储容量中。文件系统550可表现为一个硬盘驱动器,一个网络共享,非易失性可移动存储器,或者任何能够按照当前实施例的方式存储该原始文件拷贝的物理存储介质。文件管理器530可进一步与一个操作系统、一个组件、一个应用程序接口(API)、或者任何存储代表该文件管理器530的原始文件的拷贝的其它装置通信。
尽管在附图中已经例举并在之前的详细说明中描述了系统和方法的一些特殊执行方式,可以理解该所显示和描述过的系统和方法并不限于该描述过的特殊的执行方式,而能够在不偏离下述权利要求所阐述和定义的精神的情况下有多种调整、修改和置换。
权利要求
1.一个或多个计算机可读媒体,其包含有一个或多个可执行指令,当对这些指令进行读取时,可引起一个或多个处理器进行向节点请求以对一个或多个块重新编码,从而产生一个或多个编码块;以及接收所述一个或多个编码块。
2.如权利要求1的计算机可读媒体,其中所述一个或多个块是被预先编码过的。
3.如权利要求2的计算机可读媒体,其中所述一个或多个块被线性编码。
4.如权利要求1的计算机可读媒体,其中该节点在文件中发送这些块的大小和块的数目。
5.如权利要求1的计算机可读媒体,进一步包括一个或多个指令,当对这些指令进行读取时,可引起所述一个或多个处理器在请求该节点编码所述一个或多个块之前,接收用于对所述一个或多个块进行编码的信息。
6.如权利要求5的计算机可读媒体,进一步包括一个或多个指令,使得所述一个或多个处理器进一步利用一种计算的结果来确定是否应该向该节点发布请求来对所述一个或多个块重新编码,其中,所述计算使用了所述用于编码所述一个或多个块的信息。
7.如权利要求6的计算机可读媒体,进一步包括一个或多个指令,当对这些指令进行读取时,可引起所述一个或多个处理器进一步基于该计算的结果选择丢弃所述一个或多个编码块。
8.如权利要求1的计算机可读媒体,进一步包括解码所述一个或多个编码块。
9.一种方法,包括从节点接收系数;从一个或多个现有的系数矢量确定该系数矢量是否是线性无关的;以及请求该节点重新编码一个或多个编码块以产生新的编码块。
10.如权利要求9的方法,进一步包括请求该节点转发该新的编码块。
11.如权利要求9的方法,其中该确定步骤进一步包括使用所述一个或多个现有的系数矢量产生第一矩阵。
12.如权利要求9的方法,其中该确定步骤进一步包括使用所述一个或多个现有的系数矢量产生第一矩阵;以及使用所述系数矢量和所述一个或多个现有的系数矢量产生第二矩阵。
13.如权利要求12的方法,其中该确定步骤进一步包括计算该第一矩阵的阶,以及计算该第二矩阵的阶。
14.如权利要求12的方法,其中该确定步骤进一步包括计算该第一矩阵的阶,以及计算该第二矩阵的阶,其中该请求步骤进一步包括如果该第二矩阵的阶大于该第一矩阵的阶,则请求该节点重新编码所述一个或多个编码块。
15.如权利要求9的方法,进一步包括解码所述一个或多个编码块,并从所述一个或多个编码块中的每一个产生一个或多个解码块。
16.如权利要求15的方法,进一步包括组合所述一个或多个解码块以产生文件。
17.如权利要求15的方法,其中该解码包括求解一组线性等式,所述线性等式是使用与所述一个或多个编码块相关的数据形成的,并且当所述一个或多个编码块已被接收时开始所述求解。
18.一种系统包括用于接收请求的装置;用于产生主系数的装置,该主系数包括用于对文件的一个或多个划分块进行编码的每个系数向量的线性组合;用于从所述一个或多个块产生新的编码块的装置;和用于发送该新的编码块的装置。
19.如权利要求18的系统,进一步包括用于发送该主系数向量的装置。
20.如权利要求18的系统,其中该用于产生新的编码块的装置进一步包括用于对所述一个或多个块进行线性组合的装置。
全文摘要
公开了一种内容分布机制,其依赖于台式PC的配合来分布内容。该机制通过一种强有力的方式分布内容,该方式允许至少一个中间网络节点(即在源和客户之间)产生并发送包,这些包包含有该节点上可用内容的一部分的线性组合。该线性组合可由该源和客户使用至少该原始内容文件的一部分以编码或未编码的形式产生。在该客户收到了足够的包的线性非相关的组合之后,可重新构造出该原始内容。
文档编号H04L12/24GK1735020SQ20051009809
公开日2006年2月15日 申请日期2005年6月30日 优先权日2004年7月2日
发明者C·甘特斯蒂斯, P·R·罗德里格兹 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1