具体实施方式
在本发明以下说明书中要参照附图,这些附图形开销说明书的一部分,且其中作为说明示出了本发明可实践的特定示例。要理解可利用其它实施例,且可作出结构变化而不背离本发明的范围。
I.绪论
尽管当前对等(P2P)计算机网络中的一对多发布技术比直接从源节点向各对等节点发送内容更有效,这些技术未能在网络中获得最有效的内容发布。这归因于众多因素。一个因素是这些当前技术中没有一种充分地考虑并适应对等节点之间带宽的差异。另一个因素是这些技术在发布内容时未能充分利用网络上所有对等节点的带宽能力。
在此揭示的内容发布方法和***是一种用于一对多内容发布(特别是在对等(P2P)网络中)的新的传送机制类型。与先前的一对多内容发布方法相比,在此揭示的该内容发布方法和***将要发布的内容划分成许多小块。这使得具有较大容量(诸如上载带宽)的节点重新发布较多块,而具有较小容量的节点重新发布较少块。每个内容块被分配给单个节点用于发布,且负责的节点可以是内容请求对等节点、非内容请求对等节点、甚至源节点。
发布信息通量由源和对等节点之间的重新发布队列控制。该内容发布方法和***充分利用了所有对等节点的上载带宽,从而使传送信息量最大。此外,该内容发布方法和***是简单并灵活的。它可应用于P2P网络中的文件/软件下载、媒体流动、以及擦除编码的文件发布。
II.一般纵览
图5是示出在此揭示的内容发布***和方法的示例性实现的框图。应注意,图5仅是该内容发布***和方法可实现和使用的若干方式之一。
参照图5,在此示例性实现中示出了对等(P2P)网络500。网络500包括一个源节点S和四个对等节点t1、t2、t3和t4。在对等节点中,节点t1、t2和t3从源节点s请求内容的一个副本,并被称为内容请求对等节点。节点t4不请求该内容的副本。应注意,根据在此揭示的内容发布***和方法,即使节点t4不请求内容,它仍然拿出其上载带宽以帮助向其它对等节点发布内容。
要发布的内容包含在源节点S中并被划分或分割成许多小块。内容可包括文件或媒体流。然后每个块被分配给节点之一用于重新传送。每个块仅被分配给一个节点。当一个块(诸如图5中的块1、2、3和4)被分配给内容接收对等节点t1、t2和t3用于重新发布时,该块首先由源节点S发送给被分配的对等节点(或负责重新传送的对等节点)。然后被分配的对等节点向另两个对等节点转发该块。作为示例,如果如图5所示的块1被分配给对等节点t1,则块1由源节点S发送给对等节点t1而该对等节点t1随后将块1转发给对等节点t2和t3。
当一个块(诸如图5中的块5、6和7)被分配给内容接收对等节点t4用于重新发布时,该块首先由源节点S发送给对等节点t4。然后非内容接收对等节点t4向网络500上其它三个对等节点t1、t2和t3转发该块。例如,如果如图5所示的块5被分配给非内容接收对等节点t4,则块5由源节点S发送给对等节点t4,而该对等节点t4将块5转发给对等节点t1、t2和t3。
源节点S还可选择直接发布一个块。作为示例,如图5所示,块8由源节点S发布到内容请求对等节点t1、t2和t3。在此情形中,块8从源节点S直接发送到内容请求对等节点t1、t2和t3。
在此揭示的内容发布***和方法在网络500中节点的每一对之间建立重新发布队列。如下详细所述,这些重新发布队列使该内容发布***和方法能处理网络500条件中的动态变化,诸如带宽变化、信息包丢失和信息包波动。重新发布队列在图5中用实线和虚线示出。节点之间的实线表示转发链接,而节点之间的虚线表示传送链接。转发链接是携带要重新发送的块的连接。传送链接是携带不要重新发送的块的连接。
III.操作纵览
现在讨论如图5所示的内容发布***和方法的操作。图6是示出如图5所示的内容发布***和方法的一般操作的一般流程图。该内容发布方法通过输入要发布的内容开始(框600)。如上所述,该内容可包括文件或媒体流。然后,内容被划分或分割成多个小块(框610)。将内容划分成小块使包容节点能重新发布不同数量的块。因而,由某节点重新发布的块的数量可与节点的容量(诸如上载带宽)成比例。例如,有较大上载带宽的节点可重新分发较多数量的块,而具有较小上载带宽的节点可重新分发较少数量的块。
然后每个内容块被分配给单个节点用于重新传送(框620)。如上所述,负责重新传送的节点可以是内容请求对等节点、非内容请求对等节点、甚至源节点本身。然后节点之间的重新发布队列被用来处理网络中的动态变化(框630)。通过采用节点之间的这些重新发布队列,内容发布方法可有效地处理网络条件中的动态变化。作为示例,网络条件变化,诸如上载带宽变化、网络中每个节点的信息包丢失和信息包波动在进行中处理从而如果节点经历了容量的下降,则分配给该节点用于重新传送的内容块数量也成比例地减少。
IV.操作细节和工作示例
现在讨论如图6所示的内容发布方法的操作细节。该内容发布方法的基本发布框架如下。要发布的内容被划分成块Bj,j=1,2,…,M。对于每个块Bj,都分配一个唯一的节点来将内容块发布给剩下的对等节点。该唯一节点是负责重新发布该块的节点。负责重新发布块Bj的节点常常是对等节点ti。在此情形中,源节点向对等节点ti发送块Bj的一个副本,而ti通过将该块副本发送给剩下的对等节点来重新发布块Bj。然而,当源节点具有丰富的带宽资源时,负责发布块Bj的节点可以是源节点本身。在此情形中,源节点将直接把块Bj的副本传送给每个对等节点ti。
内容划分
如上参照图6所述,开始时内容发布方法将要发布的内容划分成许多小块。由一节点重新发布的块的数量可与该节点的容量(或资源)成比例。在一优选实现中,容量根据节点的上载带宽估算或定义。可给予具有较大上载带宽的节点较多数量的内容块用于重新发布。类似地,可给予具有较小上载带宽的节点较少数量的内容块用于重新发布。
该内容发布方法将内容划分成大量小块用于发布。内容块尺寸是发布粒度和标识该块所需开销之间的协调产物。在一测试实现中,内容块的优选尺寸比网络的最大传输单元(MTU)略小。这使内容块能作为网络上的单个信息包发送。在一测试实现中,内容块尺寸被设置为1KB。
发布路径
在内容发布期间,每个内容块被分配给某一节点用于重新发布。分配给对等节点的内容块数量与其容量成比例,容量在一测试实现中根据其上载带宽估算。使用上载带宽是因为根据对等节点对网络的作用,相关的正是对等节点的上载带宽。因而,为了在P2P网络中有效地发布内容,内容发布方法应尽可能地利用对等节点的上载带宽。
此外,应注意,对于内容块发布,操纵发布速度的主要参数是网络链接的输入输出量。如果客户机可选择从中接收文件的多个服务器,它应选择提供最快网络输入输出量的服务器。其它网络参数,诸如往返常数时间(RTT)、信息包丢失率、网络波动,都不如网络链接的输入输出量那么相关。在由终端用户节点组成的网络中,网络可通过分配每个节点上的上载带宽限制、每个节点上的下载带宽限制、以及任意两个节点或任意两组节点之间的链接带宽限制来表征。然而,瓶颈通常是节点的上载带宽。
在此所述的内容发布方法中,对等节点向多个目标发送内容。对等节点的输出因而在多个接收者之间划分。结果,两个对等节点之间所需的链接带宽仅是发送节点上载带宽(通常不是瓶颈)的一部分。节点接收内容所需的下载带宽总是比网络中所有节点总的可用上载带宽除以接收节点总量少。在递增的普通网络中,终端用户节点的总上载带宽比总下载带宽小得多。特别是在电缆调制解调器和ADSL网络上的终端用户节点,其中平衡不对称地偏向较大的下载带宽。即使对于校园网络或公司网络上的用户节点,下载带宽也比可用的上载带宽大得多,因为用户可设上载带宽的上限以限制参与P2P网络活动。在以下讨论中,假设接收节点具有足够的下载和链接带宽以接收来自内容发布方法的内容。
再参看图5,假设对等节点t
1和t
2的上载带宽为B;对等节点t
3的上载带宽为2B;对等节点t
4的上载带宽为3B;而源节点的为4B,其中B是带宽单元。充分利用源节点和对等节点的上载带宽的最优策略如表1所示。
接收节点 |
发送节点以及链接带宽 |
下载带宽 |
s |
t1 |
t2 |
t3 |
t4 |
t1 |
0.83B |
- |
0.5B |
B |
B |
3.33B |
t2 |
0.83B |
0.5B |
- |
B |
B |
3.33B |
t3 |
1.33B |
0.5B |
0.5B |
- |
B |
3.33B |
t4 |
B |
- |
- |
- |
- |
B |
上载带宽 |
4B |
B |
B |
2B |
3B | |
表格1
如果网络包括源节点、N1个内容请求对等节点(N1>1,否则问题较小)以及N2个非内容请求(但愿意参与)对等节点,使用内容发布方法的网络将通过N1个中间度为N1-1的高度-2树(带有作为内容请求节点之一的中间节点)、N2个中间度为N1的高度-2树(带有作为非内容请求节点之一的中间节点)、以及一个度为N1的高度-1树,这些树都以源节点为根。
应注意本内容发布方法和***所采用的网络拓扑具有使其与上述快速复制技术不同的众多特征。首先,本内容发布方法和***不把发布和收集步骤分开。相反,内容块由源和对等节点连续发布。其次,在内容发布方法中,由特定对等节点重新发布的内容量并不固定,而根据对等节点的能力(诸如上载带宽)变化。最后,本内容发布方法和***可涉及内容重新发布中的源节点和非内容请求对等节点。
本内容发布方法通过三种路径发布内容:(1)通过内容请求对等节点,(2)通过非内容请求对等节点,以及(3)直接从源节点。每种发布方法要求来自参与节点的不同量网络资源。再一次,主要相关的网络资源是所消耗的上载带宽。为了使用内容发布方法在N1个内容请求对等节点的网络中发布具有带宽B的内容的一部分,第一发布路径要求来自源节点的上载带宽B,以及来自每个内容请求对等节点的上载带宽(N1-1)B。第二发布路径要求来自源节点的上载带宽B,以及来自每个非内容请求对等节点的上载带宽N1·B。第三发布路径要求来自源节点的上载带宽N1·B。因而,内容发布方法使用对等节点的上载带宽(包括内容请求对等节点和非内容请求对等节点)以减轻源节点上的上载带宽负担。这具有加快最大内容发布速率的效果。
应注意,对于同一路径,所消耗的网络资源量与每个对等节点单独的上载带宽无关。因而带宽分配问题可相对每个路径类别考虑而不用考虑每个单独节点。
带宽分配
在使用本内容发布方法和***的网络中,最宝贵的资源是内容所源自的源节点的上载带宽。如果用完了源节点的上载带宽,内容发布就不能再加快,即使还有带有可用上载带宽的对等节点。显然,如果源节点以速率B通过传送链接向所有N1个内容请求对等节点发送内容块,它将消耗源节点上载带宽N1·B。另一方面,如果源节点以速率B向对等节点ti发送内容块,而ti向剩下的内容请求对等节点发布块,则所需的源节点上载带宽量仅为B。显然,只要有一个以上的内容请求对等节点,源节点就应向对等节点转发尽可能多的内容块用于重新传送。在内容请求和非内容请求对等节点之间,内容请求对等节点在效率上略有优势,因为在转发链接中发往节点的内容块未遭浪费。结果,在以上勾划出的三种发布路径中,最佳路径为路径1(通过内容请求对等节点),然后是路径2(通过非内容请求对等节点)。仅当源节点仍有上载带宽剩余时,才可选择路径3来直接向对等节点发布内容。
假设使用本内容发布方法和***的网络包括上载带宽为Bs的源节点,N1(N1>1)个带有平均带宽为B1的内容请求对等节点,N2带有平均带宽为B2的非内容请求对等节点。应用上述的发布路径选择策略,本内容发布方法和***的被定义为每秒向内容请求对等节点多播的内容量的发布信息通量为:
其中
以及
等式(1)示出在所有对等节点的上载带宽耗尽之前,发布信息通量仅受源节点的上载带宽限制。所有N1个内容请求对等节点以源节点的上载带宽速率接收内容。在所有对等节点的上载带宽耗尽之后,发布信息通量变成网络上载带宽总量N1B1+N2B2+Bs的1/N1减去在通过非内容请求对等节点的发布中浪费的一小部分N2B2/N1。
通过重新发布队列的发布路径选择
有了如上所述实现的发布路径优先权,假设源和所有对等节点的可用上载带宽为已知从而可明确计算在任意两个对等节点之间分配的带宽。这提供了方向使内容块得以相应地发布。然而,有更简单的以分布方式工作的方法。可使用队列来估算任意连接链接上的带宽,并基于队列的状态管理内容块发布路径的选择。这在网络带宽未知时获取隐式带宽分配。
内容发布方法的带宽控制策略包括建立一队列以缓存从一节点发送到另一节点的内容。该队列被用以控制任意两个节点之间的发布速度。在内容发布方法的一测试实现中,节点之间的链接通过TCP连接建立。因而重新发布队列是TCP发送和接收缓冲区。使用TCP的另一个优点是流控制、可靠数据传送和节点离开事件都由TCP自动处理。
携带要重新发布的块的TCP连接称为转发链接,而携带不要重新发布的块的TCP连接称为传送链接。从每个对等节点到其它每一个内容请求对等节点都建立一个TCP连接(传送链接)。此外,从源节点到每一个非内容请求对等节点都建立一个TCP连接(转发链接),且从源节点到每一个内容请求对等节点都建立两个TCP连接(正向和传送链接)。然后发布路径的选择变成在TCP连接中找到可用的槽。
现在将按照源节点和对等节点来详细描述重新传送的过程。每个内容请求对等节点包括至少两个线程。一个线程(“传送链接”线程)接收来自传送链接的内容块,而第二个线程(“转发链接”线程)接收来自转发链接的内容块并通过其传送链接向剩下的内容请求对等节点重新发布这些内容块。对于非内容请求对等节点,仅操作转发链接线程。
图7是示出对等节点(内容请求和非内容请求)转发链接线程的操作的详细流程图。在转发链接线程的每个迭代循环中,判断进入转发链接队列是否为空(框700)。如果是,则过程等待(框710)。否则,对等节点移除来自进入转发链接队列的一个内容块(框720)。然后,节点把该内容块复制到向外到所有其它内容请求对等节点的传送链接队列中(框730)。然后判断该内容块是否已被成功置入所有对等节点的队列(框740)。如果不是,则过程等待(框750)并再尝试失败的内容请求节点。否则,迭代再次开始。
应注意,转发链接在它已成功地将最后的内容块复制到所有外出传送链接队列之前不会从进入转发链接队列中移除另一个内容块。这样,如果外出传送链接阻塞可能导致达到对等节点上载带宽上的限制,对等节点将终止从进入转发链接队列中移除内容块。这有效地将转发链接的接收速率调整为对等节点上载带宽的1/M,其中M是要向其重新发布内容块的节点数量,其中N1-1个为内容请求对等节点而N1为非内容请求对等节点。
图8是示出内容接收对等节点的传送链接线程的操作的详细流程图。开始,判断到达内容块是否来自源节点(框800)。对于来自不是源节点的节点在传送链接上到达的内容块,操作是一旦内容块到达就从进入传送链接队列中移除该内容块。首先,判断进入传送链接队列是否为空(框810)。如果不是,则从进入传送链接队列中移除该内容块(框820)。否则,检查来自下一节点的内容(框830)。
对于来自源节点在传送链接上到达的内容块,检查转发链接的接收缓冲区(框840)。另一限制是仅当来自同一源节点的转发链接的接收缓冲区长度在某阈值之上从传送链接队列移除该内容块(框850)。因而,如果缓冲区长度不在该阈值之上,则不移除来自源节点在传送链接上到达的内容块。相反,检查下一节点的传送链接(框830)。否则,判断传送链接是否为空(框810)。如果不是,则从传送链接中移除该内容块(框820)。
基本原理为传送链接和转发链接是共享从源到对等节点的同一网络路径的两个独立的TCP连接。通过正向连接发送的内容块具有较高优先级,因为它们还要被重新发送到其它内容接收对等实体。在激活从源节点到对等节点之间的传送路径之前,接收缓冲区长度策略确保正向连接带宽将至少是上载带宽的1/M。
图9是根据在此揭示的内容发布方法的源节点操作的详细流程图。一般而言,对于每个内容块,源节点基于重新发布队列的状态来选择发布路径之一。路径选择基于以下优先级顺序。通过内容请求对等节点的重新发布具有最高优先级。通过非内容请求对等节点的重新发布具有第二最高优先级。直接从源节点到所有内容请求对等节点的发布具有最低优先级。
特别地,如图9所示,过程在下一内容块(框900)和下一内容请求对等节点(框905)上开始。然后检查对等节点的正向连接(框910)。源节点检查在从源节点到内容请求对等节点的转发链接的任意TCP连接中对内容块是否有可用空间(框915)。如果TCP连接之一的发送缓冲区未满且可持有整个内容块,则内容块被置入该TCP缓冲区以发送给相应内容请求对等节点,而该节点又通过相应的传送链接将内容块重新发送给其它内容请求对等节点(框920)。如果在到内容请求对等节点的转发链接上未找到空间,则源节点判断是否已检查所有的内容请求对等节点(框925),然后检查非内容请求对等节点(框930)及其转发链接(框935)。
如果在链接上发现了可用的空间(框940),内容块被置入相应链接的TCP缓冲区中(框945)。如果已检查了所有节点,且甚至在到非内容请求对等节点的链接上都没有可用空间,则源节点寻求最后的发布路径。该最后发布路径检查到所有内容请求对等节点的发送链接(框955),并判断在所有的内容请求对等节点中是否有一个块的空间(框960)。结合图8所示的接收缓冲区长度策略,这确保转发链接的带宽不被转发链接的通信量所充塞。如果找到了空间,复制该内容块并将其置入到每个内容请求对等节点的传送链接(框965)。如果在任一发布路径上都没有空间,则源节点在再次尝试寻找内容块的可用路径之前将等待一小段时间(框970)。
重新发布队列的角色
使用对等节点和源节点的重新发布队列和以上操作策略,内容发布方法通过调整节点的上载带宽来处理诸如信息包丢失和网络拥堵的异常,以通过充分利用源节点和对等节点的上载带宽资源获取最大的内容发布信息通量。现在将详细解释内容发布方法和***的最优性。
任意两个节点之间的内容块通过重新发布队列发布,在测试实现中该队列是带有某尺寸的发送和接收缓冲区的TCP连接。如在以上“通过重新发布队列的发布路径选择”章节中所指出的,内容发布方法和***的源节点和对等节点将尽可能多的内容块推入TCP连接中,直到TCP发送缓冲区变满。在TCP连接的发送缓冲区内等待的内容块确保甚至考虑了诸如信息包丢失和网络拥堵的网络异常都能充分利用任意两个对等节点之间的网络路径。如果没有信息包丢失,新的内容块将通过TCP连接被发送到目标对等节点。如果有信息包丢失或其它网络异常,TCP将尝试通过重新传输从网络错误中恢复,且等待在TCP发送缓冲区中的内容块将不被送出。在转发链接的TCP接收缓冲区中等待的内容块确保充分利用相应对等节点的上载带宽。在对等节点将最后一个内容块推入传送链接的TCP发送缓冲区后,它可检索等待在TCP接收缓冲区中的内容块。因而,可继续将块推入发送链接的动作从而不浪费上载带宽。
此外,如图7-9所示,内容发布方法确保充分利用源节点和对等节点的上载带宽。这由确保先选择通过内容请求对等节点发布、然后选择通过非内容请求对等节点发布、以及最后选择从源节点直接发布来选择内容发布路径而获得。
如果在使用内容发布方法向N1个内容请求对等节点发布内容时源节点的上载带宽较低且从源到对等节点的传送链接未激活,则内容发布方法的内容发布信息通量将是源节点的上载带宽BS。在此情形中,内容以速度BS从源节点发出,其中对等节点具有足够的上载带宽以向所有的内容请求对等节点发送内容。每个内容请求对等节点以速率BS接收内容,就像源节点仅向它发送内容一样。如果源节点的上载带宽较高且从源到对等节点的传送链接已激活,则内容发布方法的内容发布信息通量将是源节点和对等节点的上载带宽之和,减去将内容块发送到非内容请求对等节点用于重新传送所浪费的一小部分带宽,再除以内容请求节点的数量N1。因此,无论网络资源或网络的容量(诸如上载带宽)配置如何,内容发布方法都能获取等式(1)计算的最大内容发布信息通量。内容发布方法还通过TCP链接的重新发布队列轻松地适应网络带宽的变化。如果某一对等节点变慢,其传送链接中的内容块将缓慢移动,提醒对等节点从其转发链接中检索更少的内容块。而这又使源节点向这个现在变慢的对等节点发送更少的内容块,并将内容块重新指向其它较快的对等节点。或者,如果某一对等节点变快(例如,如果上载带宽增加),内容发布方法可通过向该对等节点发送更多的内容块作类似调整。
工作示例
为了更全面地理解在此揭示的内容发布方法和***,给出了示例性工作示例的操作细节。应注意,该工作示例仅是可实现内容发布方法和***的一种方式。
在此实现中,内容发布方法和***包括由源节点运行的发送器模块以及由每个对等节点运行的接收器模块。为了校验内容发布方法和***的性能,构建了具有一个源节点和四个内容接收对等节点的内容传送P2P网络。然后从源节点向所有的对等节点发布约有1MB大小的媒体文件。通过将发布文件大小除以内容发布方法和***发布该文件所花的时间来测量真实的输入输出量。然后它将使用内容发布方法的理论网络广播容量与在源和对等节点的各种上载带宽配置下的真实输入输出量作比较。结果如表格2所示,同时理论广播容量列举如下。
使用如图7-9所示内容发布方法和***的发送器和接收器组件的实现,使用内容接收方法和***的网络的真实输入输出量与对等网络的分析广播容量相当接近。
序号 |
上载带宽(kbps) |
输入输出量(kbps) |
s |
t1 |
t2 |
t3 |
t4 |
分析 |
本发明 |
1 |
500 |
1000 |
1000 |
750 |
500 |
500 |
500.08 |
2 |
1000 |
1000 |
1000 |
750 |
500 |
1000 |
999.43 |
3 |
500 |
250 |
1000 |
750 |
500 |
500 |
499.95 |
4 |
1000 |
750 |
1000 |
750 |
500 |
1000 |
1001.2 |
V.示例性操作环境
本内容发布方法和***被设计成在计算环境中和在计算装置上操作。将讨论本内容发布方法和***在其中操作的计算环境。以下讨论旨在提供对本内容发布方法和***可在其中实现的适当计算环境的简要一般描述。
图10示出了可在其中实现如图5所示的内容发布方法和***的示例性计算***环境。该计算***环境1000仅是适当计算环境的一个示例,并非旨在提出对本发明使用或功能性范围作任何限制。计算环境1000也不应被解释为对示例性操作环境1000中所示的任一组件或其组合有任何依赖性或任何需求。
本内容发布方法和***也可在很多其它通用或专用计算***环境或配置中操作。适于本内容发布方法和***使用的众所周知的计算***、环境、和/或配置的示例包括,但不限于,个人计算机、服务器计算机、手持式、膝上型或移动计算机或诸如手机和PDA的通信装置、多处理器***、基于微处理器的***、置顶盒、可编程消费电器、网络PC、小型计算机、大型机、包括任一种以上***或装置的分布式计算环境等等。
本内容发布方法和***可在计算机可执行指令的一般环境中进行说明,诸如由计算机执行的程序模块。一般而言,程序模块包括执行具体任务或实现具体抽象数据类型的例程、程序、对象、组件、数据结构等等。本内容发布方法和***还可在任务由经通信网络连接的远程处理装置执行的分布式计算环境中实践。在分布式计算环境中,程序模块可置于包括存储器存储设备的本地和远程计算机存储介质中。参照图10,实现本发明的示例性***包括以计算机1010形式的通用计算装置。
计算机1010的组件可包括,但不限于,处理单元1020、***存储器1030以及把包括***存储器在内的各种***组件耦合到处理单元1020的***总线1021。***总线1021可能是若干总线结构类型中的任何一种,包括存储器总线或存储器控制器、***总线、以及使用多种总线体系结构的任一种的本地总线。作为示例,而非限制,这些体系结构包括工业标准体系结构(ISA)总线、微信道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和也称为Mezzanine总线的***部件互连(PCI)总线。
计算机1010通常包括各种计算机可读介质。计算机可读介质可以是能被计算机1010访问的任何可用介质,并包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现、用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性介质、可移动和不可移动介质。
计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字化多功能光盘(DVD)或其它光学存储技术、磁带盒、磁带、磁盘存储器或其它磁性存储设备、或任何其它可用于存储所需信息并可由计算机1010访问的介质。通信介质通常在诸如载波或其它传输机制的已调制数据信号中体现计算机可读指令、数据结构、程序模块、或其它数据,且包括任何信息输送介质。
注意术语“已调制数据信号”意指在信号中用对信息编码方式设置或改变其一个或多个特征的信号。作为示例,而非限制,通信介质包括诸如有线网络或直线连接的有线介质,和诸如声学、射频(RF)、红外线和其它无线介质的无线介质。以上任何介质的组合也应包括在计算机可读介质的范围中。
***存储器1030包括诸如只读存储器(ROM)1031和随机存取存储器(RAM)1032的易失性和/或非易失性存储器形式的计算机存储介质。包含有助于计算机1010如起动时在元件间传送信息的基本例程的基本输入/输出***(BIOS)1033通常存储在ROM 1031中。RAM 1032通常包含可被处理单元1020立即访问和/或当时正***作的数据和/或程序模块。作为示例,而非限制,图10示出了操作***1034、应用程序1035、其它程序模块1036、和程序数据1037。
计算机1010还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图10图示了读取和写入不可移动、非易失性磁性介质的硬盘驱动器1041,读取和写入可移动、非易失性磁盘1052的磁盘驱动器1051,读取和写入可移动、非易失性光盘1056,诸如CD-ROM或其它光学介质的光盘驱动器1055。
其它也用在示例性计算环境中的可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,如磁带、闪存卡、数字化多功能光盘、数字化视频带、固态RAM、固态ROM等等。硬盘驱动器1041通常通过诸如接口1040的不可移动存储器接口与***总线1021连接,而磁盘驱动器1051和光盘驱动器1055通常通过诸如接口1050的可移动存储器接口与***总线1021连接。
如上所述并如图10所示的驱动器及其相关联的计算机存储介质为计算机1010提供计算机可读指令、数据结构、程序模块、和其它数据的存储。在图10中,例如,硬盘驱动器1041被示为存储操作***1044、应用程序1045、其它程序模块1046、和程序数据1047。注意这些组件可以与操作***1034、应用程序1035、其它程序模块1036、和程序数据1037相同或不同。在此给予操作***1044、应用程序1045、其它程序模块1046、和程序数据1047的数字不同至少说明他们是不同的副本。用户可通过诸如键盘1062和定位装置1061的输入装置向计算机1010输入命令和信息。
其它输入装置(未示出)可包括话筒、操纵杆、游戏垫、圆盘式***、扫描仪、无线接收器、或电视或广播视频接收器等等。这些和其它输入设备常常通过与***总线1021耦合的用户输入接口1060与处理单元1020相连,但也可通过例如并行端口、游戏端口或通用串行总线(USB)的其它接口连接。监视器1091或其它类型的显示设备也可通过诸如视频接口1090的接口与***总线1021相连。除显示器以外,计算机还可包括诸如扬声器1097和打印机1096的其它输出设备,它们通过输出***接口1095相连。
计算机1010可以在使用与一台或多台远程计算机,诸如远程计算机1080的逻辑连接的网络化环境中运行。远程计算机1080可以是个人计算机、服务器、路由器、网络PC、对等装置或其它公共网络节点,而且通常包括上述与个人计算机1010相关的许多或全部组件,尽管在图10中仅图示了存储器存储设备1081。图10中所描绘的逻辑连接包括局域网(LAN)1071和广域网(WAN)1073,但也可包括其它网络。这样的网络化环境在办公室、企业范围计算机网络、内联网和因特网上是常见的。
当用于LAN网络化环境中时,计算机1010通过网络接口或适配器1070与LAN 1071连接。当用于WAN网络化环境中时,计算机1010通常包括调制解调器1072或其它用于在广域网1073,诸如因特网中建立通信的装置。可以是内置式或外置式的调制解调器1072与***总线1021通过用户输入接口1060或其它适当机制连接。在网络化环境中,与计算机1010相关的程序模块或其一部分可存储在远程存储器存储装置中。作为示例,而非限制,图10示出了驻留于存储器装置1081中的远程应用程序1085。应当理解,所示网络连接是示例性的,且其它用于在计算机间建立通信连接的装置也可以使用。
最大化内容发布信息通量的理论分析
在本节中,我们证明本内容发布方法和***对具有有限上载带宽的对等网络是最优的。本内容发布方法和***获取这种网络的最大可能输入输出量;下面证明没有其它***可以更好。
设示图(V,E)表示网络,V为节点集而E为链接(有向边)集。设V中的s表示源节点而T表示内容请求节点的E中的子集。设剩下的节点都是非内容请求节点。考虑两种类型的容量。设c(E)为E中每条边的容量,并设cout(v)表示V中每个节点v的上载带宽(输出容量)从而对每个节点v,离开v的边的容量和最大为cout(v)。
V中两个节点v1、v2之间的分割是将V划分成两个集V1、V2从而vi在Vi中,i=1,2。分割的值是从V1到V2的边e上容量c(e)之和。
众所周知,s和T中任何汇点(Sink)t之间的最大流获得s和t之间所有分割的最小值。设Ct为s和t之间最大流(maxflow)的值。注意Ct=Ct(c)取决于边的容量函数c:E→[0,∞]。
定义:s和T之间的广播容量是s和T中任何t之间的最小maxflow,即C=mintCt。注意像Ct一样,C=C(c)取决于边的容量函数c。
显然,广播容量C是可从s广播到T中所有节点的普通信息的最大速率的上限。不幸地是,在一般使用多播路由中不能获得C。图11是示出使用多播路由1100不能获取广播容量C的框图。尽管总是使用网络编码来获得C,这需要中间节点来编码(不仅仅是路由)其输入信息包以产生输出信息包。如果仅使用路由,经多个多播树从s到T的最大输入输出量C0可以是比C小的logN因子。此外,确定多播树的最优集合(来获取C0)是有NP难度的,而在多项式时间中可获取的C0和输入输出量C00≤C0之间的间隙上已知的最严密限制相对较松。另一方面,如果在网络中没有Steiner节点(Steiner节点是Cv<C的节点v),则广播容量C可简单地通过过分地包装多个多播树来获取,如以下的Edmond定理所示。
作为特定结构的多个多播树的集合,本内容发布方法和***获取了对某些边的容量函数c(e)的广播容量C=C(c)。此外,它获取了最大的广播容量,如以下定理所示。
定理:本内容发布方法和***输入输出量θ获取符合节点输出容量限制的最大可能广播容量。即,在所有边容量函数c:E→[0,∞)上θ=maxcC(c),从而对所有的节点v,所有离开v的边e上c(e)之和最大为cout(v)。
证明:以下分别是Bs≤Bs1+Bs2和Bs≥Bs1+Bs2的网络的独立证明。前者证明将s与V-s分开的分割,而后者证明将V-t与t分开的分割。
首先,假设Bs≤Bs1+Bs2。对于任意边容量函数c,广播容量C(c)最大可等于将s与V-s分开的分割值。由于这最大为Bs≡cout(s),因而给出C(c)≤Bs。当然,输入输出量θ必须满足θ≤maxc C(c)。另一方面,根据等式(1),内容发布方法和***获取输入输出量θ=Bs。因此θ=maxcC(c)=Bs。
现在假设Bs≥Bs1+Bs2。对于任一边容量函数c,进入T中节点的所有边上c(e)之和必须至少是N1乘以广播容量C(c)。因而,将U=V-T-s表示为非内容接收节点集,产生以下结果:
另一方面,等式(1)给出(表示Bv=cout(v)):
因此
当然,θ≤maxcC(c),因此N1θ≤N1maxcC(c)=N1C(c*),其中c*是最优化容量函数。因此,
如果可示出不等式支持等式,则证明完成。当然如果U为空则为真。为了显示这个,当U不为空时要证明对于U中的每个u,
否则,任何从u到N1个内容接收节点的流将不足以用完上载带宽Bu。通过将某些容量从s和T之间的边重新分配到从s到U之间的边,则可获取更高的输入输出量。
推论:在一文件下载情形中,本内容发布方法和***最小化了任意内容接收对等节点所经历的最大下载时间。在一流媒体情形中,本内容发布方法和***最大化了任意内容接收对等节点所经历的最低质量。因此,本内容发布方法和***在一个朋友的发布组合想要体验同时下载或流动相同质量的内容时是理想的。
下载带宽或链接带宽限制下的输入输出量
以上推论假设本内容发布方法和***中的仅有瓶颈是对等节点的上载带宽。在本节中,给出在链接带宽或下载带宽限制下内容发布方法和***的输入输出量的简要讨论。
考虑具有上载带宽Bu i的对等节点i。设其到内容接收对等节点j的链接带宽为Bl ij,j=0,…,M-1,其中M是除了它自己的内容接收对等节点数量。节点i和j之间的链接带宽只要符合以下条件就不会是瓶颈:
Bl ij≥Bu i/M
如果不满足以上不等式,则在本内容发布方法中不能充分利用节点i的上载带宽。节点i的有效上载带宽变成:
该有效上载带宽可用于等式(1)以获取本内容发布方法和***的新输入输出量。
当内容接收对等节点具有比等式(1)中给出的输入输出量(仅基于上载带宽)少的下载带宽时,这样的节点将也是内容发布方法和***的瓶颈。在这种情形中,整体的输入输出量将是所有内容接收对等节点的最小下载带宽。这是因为所有的节点在恢复传送之前不得不等待最慢的节点完成。
对本内容发布方法和***的实现的可选策略是使较慢的对等节点略去某些内容块,从而它们不会使剩下节点的接收操作变慢。这使对等节点仍然能进行全速处理。在一文件下载情形中,较慢的对等节点在所有剩下的节点已完成下载以后能接收被略去的内容。在一流媒体情形中,如果使用了分层媒体编码较慢对等节点可以能够接收其较低质量的内容。与该可选方法相比,本内容发布方法和***的测试实现使到所有内容接收对等节点的普通信息量最大。它在一流媒体情形中最大化了任意内容接收对等节点所经历的最低质量,或在一文件下载情形中最小化了任意内容接收对等节点所经历的最大下载时间(例如,如果一个朋友的发布组合想要体验同时下载或流动相同质量的内容)。如果不是这样而是允许快速节点比较慢节点具有更高的输入输出量,则需要比测试实现更适合的可选实现。
前面对本发明的描述是为了说明和描述而给出的。它并非旨在穷尽本发明或将其限制在所揭示的精确形式中。根据以上教义,许多更改和变化都是可能的。本发明的范围旨在不受本发明的详细说明书而受所附权利要求书限制。