对等消息格式数据结构的制作方法

文档序号:7641627阅读:176来源:国知局
专利名称:对等消息格式数据结构的制作方法
技术领域
本文中的描述一般地涉及对等基础结构中的通信协议,尤其涉及允许在对 等云中进行结构化通信的消息格式数据结构。
些旦
NT眾
在过去,使用提供基于基础结构解决方案的专用服务器场已经实现了大范 围的内容分布。在此类方法中,每个请求内容的客户机形成与服务器场中一服 务器的专用高带宽连接并在需要时下载内容。这类解决方案对必须提供并维持
服务器场的内容提供商而言是昂贵的。图1示出了具有服务器1和客户机2的 这类解决方案,每个客户机都有直接连接至一服务器的连接。这类解决方案不 仅对内容提供商是昂贵的,而且它还不够健壮,因为服务器的故障会导致无法 向多个客户机提供内容。此外,该解决方案的升级困难,因为每个服务器支持 的客户机数量有限。
当前的用于内容分布的新范例是基于使用在其中各节点共享其资源(存 储、CPU、带宽)的协作网络的分布式体系结构出现的。
协作内容分布解决方案固有地可自升级,因为系统的带宽容量随着更多节
点的到来而增加每个新节点请求来自其他节点的服务同时也向其他节点提供 服务。因为每个新节点都贡献资源,所以系统容量随着需求增加而增长,这就 使得系统升级能力无限。通过协作,文件源即服务器不再需要增加其资源来适
应更大的用户群;这也就提供了对"快闪(flashcrowds)"(大量且突然的通 信量高峰,通常会导致受影响的服务器崩溃)的顺应力。因此,终端-系统协 作解决方案可用于快速有效地将软件更新、关键补丁、视频和其他的大型文件
传递给大量用户同时维持原服务器的低成本。
BitTorrent (BT下载)是由Bram Cohen编写的现有对等文件共享协议并 且在开源许可下可公开使用。使用BitTorrent算法将要分布的文件分割成块或碎片。
这些块以随机次序分布给云中的节点并且在请求节点上被重新装配。每个 节点从其连接的其他节点下载缺失的块,同时也提供对其已经有的块的上传连 接。
不考虑其巨大潜力和流行度,诸如BitTorrent的现有终端-系统协作方案在 某些情况下会遭受降低其整体性能的低效率。这些低效率在大型异类的用户群 中,在快闪期间,在高纷扰的环境中,或者在存在有协作刺激机制的情况下尤 为明显。本发明考虑在接线协议(wire protocol)级实现连接管理以及其它方 法以减少或缓和部分或全部这些问题。相比于其他的通信类型,对等通信依赖 于在所选实体或节点之间建立并维持有效连接的能力。本发明考虑接线协议和 消息格式,从而以一种简单、有效、健壮、可靠且可升级的方式来实现上述目 的。
处理上述问题之外,网络通信的量很容易压垮内容分布云中的对等体。消 息大小和结构是影响对等体快速处理消息以降低延迟以及分组丢失危险的能 力的重要因素。
概述
提供本概述以便以简化形式介绍将在以下的详细描述中进一步描述的一 些概念。本概述并不旨在标识要求保护的主题的关键特征或本质特征,也不旨 在用于限制要求保护的主题的范围。
实现一种用于对等内容分布算法的接线协议。该接线协议使用分组,各分 组具有包含两个或多个消息元素的消息。这些分组用于在内容分布云中的两节 点之间发送。每个消息元素被存储在分组中相应的净荷内并且至少一个消息元 素是消息首部。该消息首部将消息类型标识为以下各项之一ACK (确认)、 NAK (否定确认)、Notification (通知)、ConnectionRequest (连接请求)、 Inactivity (不活动)、PeerRegister (对等体登记)、PeerDeRegister (对等体撤 销登记)、PeerListR叫uest (对等体列表请求)、FileRequest (文件请求)、 FileResponse (文件响应)、ContentRequest (内容请求)、ContentResponse (内 容响应)、BlockRequest (块请求)以及BlockData (块数据)消息。这些消 息类型将在本申请中详细描述。通过使用这些消息类型,我们就能够以简单有 效的方式来实现对等内容分布算法。
在一个示例中,消息元素之一包括标志字段,被安排用于指示节点之一被 安排用于在指定事件发生时将后续通知发送给其他节点。这提供了一个优势, 即对等云中相邻节点之间的连接可被置于"通知"状态。例如,在连接空闲且 有用内容在将来可经该连接变得可用的情况下。通过以此方式标识处于"通知" 状态的空闲连接,就能够剔除空闲连接而不会剔除那些很快将产生有用内容的 连接。以这种有目标的方式来剔除连接就能够形成给出更好性能并增加通过云 的内容分布的新连接。
例如,两个节点之一是跟踪者节点而两个节点之二是对等体节点。跟踪者 节点,也被称为登记者节点,具有关于云成员的信息。跟踪者节点帮助云成员 找出具有所请求内容的其他云成员。设置标志字段以在跟踪者处有新对等体信 息可用时发起从跟踪者到对等体的通知。
在另一示例中,两个节点都是对等体节点, 一个对等体是客户机而另一个 对等体是服务器。在本文中,术语'客户机'和'服务器'作为纯服务器和客 户机的附加或者替换,可以指示事务中的角色。设置标志字段以在服务器处有 新内容可用时发起从服务器到客户机的通知。
标志字段可被安排用以指示一特定块部分存在于客户机上。这提供了一个 优势,即通过使用这一有关仅部分存在的特定块的信息,下载可在块内级继续。 例如作为上述的帮助,至少一个消息元素还包括现有的部分块的内容描述。
我们还描述了一种在对等内容分布云中的节点上形成分组的方法。分组可 用于发送至云中的另一节点,并且该方法包括
从一组指定的消息元素中选择多个消息元素;以及 在分组的相应净荷内存储每个消息元素。
这些消息元素的至少一个是消息首部,它将消息类型标识为以下各项之
一ACK、 NAK、 Notification、 ConnectionRequest、 Inactivity 、 PeerRegister、 PeerDeRegister、 PeerListRequest、 FileRequest、 FileResponse、 ContentRequest、 ContentResponse、 BloekRequest以及BlockData消息。这提供了一个优势,即 对等内容分布云中的节点能够以简单有效的方式形成用于实现内容分布算法
的分组。
在一个示例中,指定的一组消息元素包括以下的一项或多项消息元素确 认、消息元素否定确认、连接请求、对等体的当前状态、有关内容请求的详细 信息、端点结构列表、内容文件的标识、要下载文件的详细信息、端点结构、 对等体供应内容的详细信息、在前供应的内容块的详细信息、在前请求的块的
碎片、有关通知事件的详细信息。
执行的各方法使用一种包括计算机程序代码装置的计算机程序,当所述程 序在计算机上运行时适于执行上述任何方法的所有步骤。该计算机程序可以在 计算机可读介质上具体化。这些方法可由存储介质上具备机器可读形式的软件 执行。软件能够适于在并行处理器或串行处理器上执行,使得本方法的各步骤 可以按任何合适的次序或同时执行。
这里承认软件能够是有价值的、可以单独交易的商品。它旨在包含运行于 或者控制"哑(dumb)"或者标准的硬件以实现期望的功能的软件,(因此, 软件本质上定义了寄存器的功能,并且可以被叫做寄存器,即使是在它与其标 准硬件结合之前)。出于类似的理由,还旨在包含"描述"或者定义硬件配置的软件,例如HDL (硬件描述语言)软件,用于设计硅芯片,或者用于配置
通用可编程芯片以实现期望的功能。
许多伴随特征将随着参考下面的详细描述并结合附图进行理解而得到更 好的认识。


从结合附图的下列详细描述将更好地理解本描述,在附图中-
图1是使用服务器场的内容分布系统的示意图; 图2是对等文件共享云的示意图3是由消息元素形成消息的示意图,其中示出了这些消息元素是如何存 储在分组的;
图4是一种使用信息元素实现'通知'状态的方法的流程图; 图5是示出了内容请求/响应循环的消息时序图; 相同的标号用于指示附图中相同的部分。详细描述
下面结合附图提供的详细说明旨在作为本发明的例子的描述,但是并不旨 在表示可以构造或者使用本例子的仅有的形式。该描述阐述本示例的功能以及 用于构造和操作本示例的步骤序列。然而,相同或等价的功能与序列可由不同 的示例来完成。
本文中使用的术语"云"指的是在通信网络中可以访问对等文件分布协议 并使用该协议来尝试获取诸如被分布文件的内容的特定片段的副本的多个节
点。云在某些文献中还被称为图表(graph)。云中的节点使用上述协议各自与 其他节点形成一个或多个当前连接。于是在节点丢弃或形成与已位于云中节点 的连接时,该节点就加入或离开云。连接无需总是积极用于文件分布,虽然连 接需要适用于使用特定协议进行文件分布,而这可能会使用也可能不会使用网 络编码。连接可以是单向或双向连接。在本文描述的特定示例中,所有的连接 都是单向的,这就使得云是不对称的,虽然本发明可适用于并包括在其中连接 是双向的且单个连接同时支持上传和下载方向通信量的对称云。同样地,给定 的节点同时可以是一个以上云的成员。例如,第一片云中的节点正尝试获取被 分布的视频的副本而第二片云中的节点正尝试获取静止数字图像文件夹的副 本。云可以相互独立,也可以部分或完全重叠。
图2是对等文件分布云IO的示意图,云IO包括经由互联网11或任何其 他适合的通信网络连接的多个节点。云本身可以包括多得多的节点,但为了清 楚仅示出了少于十个的节点。同样地,虽然并非是对等文件分布参与者也不是 云的成员,但其他节点当前也可以连接在云成员之间或直接与其相连接,且上 述节点未示出。
在云10中提供了一个或多个种子节点12。种子节点是内容(也可称之为 文件)起源于其中的节点。例如,假设一个公司有一个想公开分布给云成员的 产品演示视频。可以将该文件放在种子节点上。该种子节点通常"总是在工作", 这就使得内容文件在相当长的时段(不包括例如维护时段等)内可以从其上传。 通常情况下,种子节点积极上传内容,但不下载内容。云中仅有有限且相对较 小数量的节点能够同时从该种子节点中下载内容。种子节点可以使用也可以不
使用对等文件共享协议来将内容上传至云中的其他成员。然而,上述其他成员 接着使用对等文件分布协议与云成员共享内容或内容的各部分。于是,其他云 成员在它们允许从其自己上传内容的时段内可以有效地充当种子节点,但在此 期间并不积极地下载内容。在某些情况下, 一旦内容从种子节点12传送至云
10中,种子12就可以下线而云IO将仍然起作用。
在云10中提供了一个或多个跟踪者节点14。跟踪者节点14具有关于云 成员的信息(诸如一对等体是否正参与该云)以及任何要共享的信息。这一跟 踪者节点帮助云成员找出具有其所需内容的其他云成员。
在云中还存在多个对等体节点16、 19,它们也被称为客户机。对等体节 点是需要在云中分布的内容并且可以或者也可以不共享其已经获取的内容各 部分的节点。对等体节点如上所述可以充当临时种子。在图l所示的示例中, 对等体节点16位于诸如互联网的公网中,而对等体节点19则位于防火墙和/ 或网络地址翻译器(NAT) 18后的专用企业网或家庭网中。
本文中使用的术语"吸血鬼(leech)"指的是只下载但不上传内容的对等 体;吸血鬼是从系统中获取但给予很少或者根本不给予回报的寄生虫。例如, 吸血鬼可以是频繁下载内容但只给其他对等体节点提供很少或者根本不提供 上传容量的节点。
术语"孤独者(loner)"用于指代寻求加入对等内容分布云但尚未找到对 云中对等体的最小连接数量的单独节点。
我们将我们的对等文件分布技术的全部目的指定为能让所有(或者大多 数)的云成员在最短的可能时间内获取分布文件的完整副本。在某些情况下, 我们还力图减少种子节点或始发服务器需要为待分布内容提供的上传次数。
考虑到这些目标,我们创建了一种拓扑管理过程,其中涉及在某些情况下 移除或"拆除(tear down)"各节点之间的连接以尝试用更为优化的节点来代 替这些连接。为此目的,我们创建了要在对等体节点上实现的多个条件和规则。 这在我们与本申请共同提交的题为"在对等内容分布云中的连接管理 (Connection management in peer-to-peer content distribution clouds)"的待决欧 洲专利申请中有所描述。例如,在一指定时段之后拆除空闲连接。为了避免拆 除目前空闲但很快将生成有用内容的连接,我们设计了用于云中连接的'通知'状态。
通知状态在对等体请求经连接下载但远程对等体没有可用内容提供的情 况下出现。它也会在对等体请求来自跟踪者的信息但是跟踪者没有新对等体信 息可提供的情况下出现。我们开发了一种用于在对等消息收发协议中实现这一
通知状态的方法,该方法将参考图4在如下更详细地描述。
我们还开发了一种用于适合在对等内容分布协议中使用的消息的可扩展 数据结构。我们的对等内容分布协议被设计为经任何合适的基于分组的且能够
保证有序传递的通信协议(诸如TCP)来进行操作。于是就能经保证数据的完 整、正确排序传递的传送来发送各通信分组。这样就无需保证碎片和拼接的详 细资料。
数据的每个分组在开始处都具有长度字段,以便允许从包括分组部分或多 个分组的数据流中轻易地分离各分组。
每个分组还包括多个净荷。这些净荷是允许协议扩展的分组的逻辑分部。 净荷顺序存储在无填充的分组中。每个净荷包括长度和类型,连同支持该类型 的数据。可能会出现没有针对一特定净荷类型的实际数据的情况。
每条消息都由多个消息元素构成,而消息元素是净荷形式的。图3示出了 消息是如何以此方式来构成的。消息本身30包括两个或多个消息元素32,每 个消息元素各自存储在分组31的净荷内,该分组的部分在图3中示出。消息 元素的唯一标识符存储在PayloadType(净荷类型)字段内。消息元素可以包含标 志字段33,虽然不是必须的。
现在给出我们已经开发并选择用于我们的对等内容分布协议的消息元素 的示例
ELEMENT_HEADER (元素—首部)-这是存在于所有消息上的第一消
息元素。在某些情况下它可以是仅有的元素。
ELEMENT一ACK (元素_确认)-被肯定确认的消息的详细信息。 ELEMENT_NAK (元素_否定确认)-被否定确认的消息的详细信息。
例如,这些详细信息包括被拒绝的消息类型以及指示为什么会拒绝该消息的原
因的代码。
ELEMENT_CONNECTIONREQUEST (元素—连接请求)-作出的连接
请求的详细信息。这包括例如,有关要使用的协议版本的信息、是否可用的协 议任选项、客户机应用程序的详细信息以及有关连接类型的信息。例如,连接 是与跟踪者还是与对等体,是上传还是下载连接,以及被分布内容的标识详细
"(曰息。
ELEMENT_DATASTATUS (元素_数据状态)-有关对等体当前状态的 详细信息。它包含了有关内容接收的状态以及连接会话性能的信息。例如,保 持、发送和接收到的块数量以及块接收或发送的速率。在某些情况下,还可利 用有关对等体是否具有足够的块来解码原始内容文件以及对等体是否已完全 解码该原始内容文件的信息。
ELEMENT—CONTENTREQUEST (元素_内容请求)-有关内容请求的 详细信息。
这一消息元素包括标志字段,该字段是带有一些位的位屏蔽,例如这些位 具有下列含义
NOTIFYJDN—NO—CONTENT (无内容通知) 一 如果没有内容 变得可用,则将置位该位以使得在有新内容可用时将后续通知发 送至发送节点。
DESIRED—CONTENT—PRESENT (期望的内容存在) 一 己经提 供服务器希望的内容描述。这是中断块恢复系统的一部分。如果 该位被置位,则将以下项附至该元素。这与 CURRENTCONTENTPRESENT互斥。
CURRENT—CONTENT_PRESENT (当前内容存在)一己被提 供的当前位于服务器内的内容列表。这与
DESIRED—CONTENT—PRESENT互斥。 ELEMENT一ENDPOINTLIST (元素_端点列表)-端点结构列表。 ELEMENT一FILEIDENTIFICATION (元素_文件标识)-内容文件的标识。
ELEMENT_FILEINFORMATION (元素_文件信息)-要下载文件的详 细信息。
ELEMENT_ENDPOINT (元素—端点)-端点结构。ELEMENT一CONTENTOFFER (元素—内容供应)-对等体供应内容的详 细信息。
ELEMENT—BLOCKREQUEST(元素—块请求)-服务器希望接收的在前 提供的内容块的详细信息。注意块可以根据使用的编码方法而被不同地指定。 块的传输可以从块内的给定偏移量开始并继续到块的末尾。 ELEMENT—BLOCKDATA (元素—块数据)-在前请求的块的碎片。 ELEMENT—NOTIFICATION (元素一通知)-有关通知事件的详细信息。 例如,这包括指示以下各通知类型的代码
CLOSING—AS—DOWNLOADj:OMPLETE(因下载完成关闭)一 该连接正被关闭,因为下载已完成并且该对等体不再需要能够请 求块。
CLOSING—AS_TOO—SLOW(因太慢关闭)一该连接正被关闭, 因为认为继续使用速度太慢。
CLOSING_AS—DEAD (因停用关闭) 一该连接正被关闭,因 为看上去己停用。
CLOSING_AS—CONTENT—DIFFERENT (因内容不同关闭)一 该连接正被关闭,因为提供的内容与在前下载的内容不同。
CLOSING—AS_BEHAVIOUR—SUSPICIOUS (因行为可疑关闭) _该连接正被关闭,因为对等体近来行为可疑。
NEW—CONTENT (新内容)一服务器上现有新内容。
NEW—PEER (新对等体)一新对等体已到达跟踪者处。
CLOSING_AS—BARRED (因禁止关闭)一该连接正被关闭, 因为节点现被禁止。
ELEMENT—PEERGUID (元素—对等体GUID)-描述单个对等体的简单 guid。 GUID是标识特定组件(在此是对等体)的全局唯一标识符。
ELEMENT—PEERLISTREQUEST (元素一对等体列表请求)-对等体列 表请求的详细信息。这一消息元素包括标志,该标志是带有一些位的位屏蔽, 这些位具有下列含义
NOTIFY_ON_NO—PEERS (无对等体通知)一如果没有新对等体 可用,则将置位该位以使得在有新对等体信息可用时将后续通知发 送至发送节点。
FILEHASH(文件散列)结构-已经作为文件内容散列结果创建的HASH (散列)结构。
IDENTHASH (标识散列)结构-已经作为文件内容散列结果创建连同 其文件名和创建日期/时间的HASH结构。
HASH结构-包括给定数据片段的散列值。
ENDPOINT (端点)结构-网络上节点的网络名和属性。
URILIST (URI列表)结构-URI列表。
URI结构-指定文本形式的唯一网络资源位置。
GUID结构-表示由Windows操作系统提供的guid的字节序列。
HOMOMORPHICHASH (同态散列)结构-同态散列值,它带有一系列
分别针对内容中各块的种子值的系数值。
ENCODEDCONTENTOFFER (编码的内容供应)结构—描述内容供应。
它包含正被描述的块数量的计数,以及针对每个块的编码系数。
CONTENTBLOCKID (内容块ID)结构-取决于编码方法的块的规格。 DATAENCODINGTYPE(数据编码类型)-使用的原始编码机制的枚举。
存储为一字节。
DISTRIBUTIONENCODING TYPE (分布编码类型)-在分布中使用的 编码类型的枚举。存储为一BYTE (字节)。它描述了在内容在云中分布时该 内容在哪里被编码。
如上所述,我们开发了一种现将参考图4描述的用于在对等消息收发协议 中实现通知状态的方法。描述了一种形成分组用以在对等内容分布云中的各节 点之间发送的方法。从一组指定的消息元素中选择多个消息元素(见图4的框 40)。每个消息元素存储在分组中相应的净荷内(见图4的框41)。在至少一 个消息元素中设置标志字段(见图4的框42)以指示发送分组的该节点被安排 用于在指定事件发生时将后续通知发送至目的地节点。
在一个示例中, 一个节点是跟踪者而另一个是对等体。设置标志字段以指 示在跟踪者处有新对等体信息可用时发起从跟踪者到对等体的通知。
在另一示例中,两个节点都是对等体节点, 一个是客户机另一个是服务器。 设置标志字段以在服务器处有新内容可用时发起从服务器到客户机的通知。
如上参考图3所述,消息由一系列消息元素组成并被存储在净荷结构中。 现给出我们已经选择并开发以供我们的协议使用的消息示例
MESSAGE一ACK (消息—确认)-消息接收的肯定确认。该消息由接收 客户机作为消息已经被成功接收并接受的证实而发送给发送客户机。 不存在对该消息的响应。
MESSAGE—NAK (消息—否定确认)-消息接收的否定确认。该消息由 接收客户机作为消息已被成功接收的通知来发送;但其接受有问题。
不存在对该消息的响应,虽然连接可以作为消息拒绝的结果而被关闭。
MESSAGE—NOTIFICATION (消息—通知)-由连接任一端发送的专门 通知消息。
不存在对该消息的响应。
MESSAGE—CONNECTIONREQUEST (消息—内容请求)-两客户机之 间连接的初始消息。该消息由始发节点发送以建立与接收节点的连接。 该消息的接收器可以发送如下响应
ACK(MESSAGE—CONNECTIONREQUEST)(确认(消息—连接请 求))-接受连接。
NAK(CONNECTIONREQUEST)(否定确认(连接请求))-连接 拒绝,带原因代码TOO—MANY—CONNECTIONS (太多连接)、 UNSUPPORTED—PROTOCOL (不受支持的协议)、 NOT—INITIALISED (未被初始化)、BUSY (忙碌)、 DUPLICATE—ENDPOINT (重复端点) 、 CONTENTID—NOT_PROVIDED (未提供内容 ID )、
CONTENTID—DIFFERENT (内容ID不同)。 MESSAGE_INACTIVITY (消息_不活动)-由节点在其已经检测到连接 上一段时间的不活动时发送。它用于检查连接的另一端是否仍然连通且活动。 接收节点应该立即返回确认。这条消息可以在连接已建立之后的任何时刻发 送。如果服务器在指定时间内未接收到确认,则可认为该连接已经停用(或者 由于连接或者由于接收节点),并且该连接被关闭。
该消息的接收器必须发送如下响应
ACK(MESSAGEJNACTIVITY)(确认(消息—不活动))-不活 动已被证实。
MESSAGE一PEERREGISTER (消息一对等体登记)-这条消息被发送给 跟踪者以标识服务器希望被认为是对等体。
发送给跟踪者节点以更新跟踪者关于传输如何进行的描述。有规律地发送 该条消息,以便提醒跟踪者该节点仍然活动,并且还允许关于节点进行的信息 更新到至今。该信息可由跟踪者用来宣称节点应该使用哪些对等体。
该消息的接收器可以发送如下响应
NAK(MESSAGE_PEERREGISTER)(否定确认(消息—对等体登 记))—拒绝,带原因代码BUSY、 DUPLICATE_ENDPOINT。
ACK(MESSAGE—PEERREGISTER)(确认(消息—对等体登记))-接受登记。
MESSAGE_PEERDEREGISTER (消息—对等体撤销登记)-这条消息被 发送给跟踪者节点以标识服务器不再希望被认为是对等体。这在对等体关机时 使用以降低跟踪者负载。
该消息的接收器可以发送如下响应
NAK(MESSAGE_PEERDEREGISTER)(否定确认(消息—对等体 撤销登记))-拒绝,带有原因代码BUSY 、 UNKNOWN—ENDPOINT (未知_端点)。
ACK(MESSAGE—PEERDEREGISTER)(确认(消息—对等体登记)) -接受撤销登记。
MESSAGE—PEERLISTREQUEST(消息—对等体列表请求)-这条消息被 发送给跟踪者节点以请求提供内容的对等体列表。PeerListRequest.Count (对等 体列表请求.计数)包含要提供的对等体的数量。可以指定必须大于0的对等体 最大数量。提供一标志以允许在万一没有对等体返回时触发一通知。如果该标 志被设置并且没有内容要返回,就用原因代码NOTIFICATION—PENDING (未 决通知)拒绝该消息。当新内容到达时,则发送一通知以重新开始该请求循环。 如果该标志未设置并且没有合适的对等体,就用原因代码NO PEER (无对等
体)拒绝该消息。
跟踪者将返回尽可能多的对等体直至请求的最大数量,但是返回的数量可 能会更少。
该消息的接收器可以发送如下响应
NAK(MESSAGE—PEERLISTREQUEST)(否定确认(消息_对等体 列表请求))-拒绝,带原因代码BUSY、 NO_PEER、 NOTIFICATION—PENDING 。
MESSAGE一PEERLISTRESPONSE(消息一对等体列表响应) - 要
使用的对等体列表。
MESSAGE_PEERLISTRESPONSE (消息—对等体列表响应)-这条消息 由跟踪者发送给已经请求为其提供内容的对等体列表的对等体。返回的对等体 数量有可能少于请求的数量。
跟踪者在某些情况下可能返回一个对等体都未列出的响应。
不存在对该消息的响应。
MESSAGE_FILEREQUEST (消息_文件请求)-这条消息被发送给跟踪 者以请求有关跟踪者正提供支持的内容的详细信息。 该消息的接收器可以发送如下响应
NAK(MESSAGE—FILEREQUEST)(否定确认(消息—文件请求))-拒绝,带原因代码 BUSY 、 NO_CONTENT(无内容)、 NO_CONTENT—PLEASE—SUPPLY(无内容请提供)。
MESSAGE—FILERESPONSE (消息_文件响应)-正提供内容的 详细信息。
MESSAGE_FILERESPONSE - 这条消息由跟踪者响应于 MESSAGE_FILEREQUEST发送。它包含有关跟踪者正提供支持的文件的详细
"(曰息。
不存在对该消息的响应。
MESSAGE—CONTENTREQUEST (消息一内容请求)-这条消息由节点 发送给对等体以请求内容供应。
提供一标志以允许在万一没有合适内容返回时触发一通知。如果该标志被
设置并且没有内容要返回,则该消息是带原因代码NOTIFICATION—PENDING 的NAK'd。当新内容到达时,则发送一通知以重新开始该请求循环。如果该标 志未设置并且没有合适内容,则该消息是带原因代码NO—CONTENT (无内容) 的NAK'd。
该消息的接收器可以发送如下响应
NAK(MESSAGE—CONTENTREQUEST)(否定确认(消息一内容请 求))-拒绝,带有原因代码BUSY、 NO_CONTENT、 NOTIFICATION—PENDING 。
MESSAGE—CONTENTRESPONSE (消息—内容响应)-正供应 内容的详细信息。
MESSAGE_CONTENTRESPONSE -这条消息由对等体响应于 MESSAGE—CONTENTREQUEST消息发送。它包含对等体准备传送的内容供 应的详细信息。
不存在对该消息的显式响应。在响应中给出的数据有可能出于各种原因与 请求的对等体不兼容。在此情况下,调用对等体应该终止该连接并将这个对等 体列入黑名单。
MESSAGE—BLOCKREQUEST (消息—块请求)-这条消息被发送给在前 请求供应内容的对等体。
该消息的接收器可以发送如下响应
NAK(MESSAGE—BLOCKREQUEST)(否定确认(消息_块请求)) -拒绝,带原因代码BUSY、 INVALID—BLOCKID (无效块ID)、 MISMATCHED—ENCODING (编码不匹配)。
MESSAGE_BLOCKDATA (消息—块数据)-被请求块的实际 数据。
MESSAGE—BLOCKDATA -这条消息被发送给在前请求块数据的对等体。
不存在对该消息的响应。
在一个优选实施例中,"通知"状态与内容请求/响应循环一起使用。内 容请求和响应允许对等体估计相邻对等体处可用的内容。内容响应包括由相邻
对等体供应的内容。如果请求节点估计供应的内容不是新颖的,就可以作出新
的内容请求,而这次的内容请求是在所收到供应的基础上修改的。然而,这不 是必须的。内容请求没有必要包含指示请求者不喜欢有关最近的内容供应的具 体内容的任何新数据。重复这种循环类型直到请求的内容被供应或者直到相邻 节点不再能找出潜在内容。
图5是用于内容请求/响应循环的消息时序图。请求内容的对等体节点(在 此示例中称为客户机50)被表示为垂直线。相邻节点(在此示例中称为服务器 51)也由垂直线表示。垂直线之间的箭头表示在节点50和51之间发送的消息, 而箭头的方向指示消息的方向。时间由页面上的高度表示,其中离页面底部最 近的箭头在时间上是最新的。
客户机50首先发送内容请求消息52给服务器。服务器51生成潜在内容 列表并在内容响应消息53中将供应内容的详细信息发送回客户机50。这一内 容响应信息不包括全部的供应内容本身,而仅包括应该有关该内容的信息。
如果客户机50估计该内容不是新的,也就是说它不请求该内容因为它已 经有了该内容,则客户机就将新内容请求消息54发送给服务器51。该内容请 求消息54是在收到的内容响应53的基础上修改的。例如,第二内容请求消息 54包括沿着线的"我不想要你之前供应的内容,你还有任何不同的内容吗?" 的信息。服务器51生成新的潜在内容列表并在给客户机的第二内容响应消息 55中发送其详细信息。这次客户机50想要供应的内容。它发送详细说明所请 求的供应块的块请求信息56给服务器。见消息57,请求的块随后被发送给客 户机50。
应该注意到图5中的方法步骤54和55不是必须的。在我们的文件分布协 议的一些版本中,几乎确保内容响应消息53在服务器具有新内容供应的情况 下提供新内容供应。
向编码的内容响应提供唯一的标识符诸如guid或其他标识符,从而可以 在块请求消息中引用该唯一标识符来减小消息大小。跟踪提供对等体处的内容 供应以减少重复的供应。
假若客户机请求并接收内容供应,则所有供应的新块都被请求并下载。作 出检査以在与多个对等体谈话时移除重复块请求。
在内容请求/响应循环期间,服务器有可能无法找出潜在内容。在此情况
下,内容请求消息是NAK'd。
在此情况下,标志位存在于内容请求中以确定服务器的行为。假若
NOTIFY_ON_NO_CONTENT标志没被置位,则内容请求消息是带原因 NO—CONTENT的NAK'd。客户机可以在一段时间之后重新尝试请求以查看现 在内容是否可用。假若标志位没被置位,则内容请求消息是带原因 NOTIFICATION—PENDING的NAK'd。当新内容由服务器接收时,它将带通知 类型NEW一CONTENT(新内容)的通知消息发送给客户机,以便在无需通信开 销的情况下允许客户机重新开始内容请求/响应循环。
本领域的技术人员将认识到用于存储程序指令的存储设备可分布在网络 上。例如,远程计算机可存储描述为软件的该过程的示例。本地或终端计算机 可访问远程计算机并下载该软件的一部分或全部以运行该程序。可替换地,本 地计算机可按需下载软件的片断,或者可以在本地终端上执行一些软件指令而 在远程计算机(或计算机网络)上执行一些软件指令。本领域的技术人员将认 识到,通过使用本领域技术人员已知的常规技术,软件指令的全部或部分可由 专用电路如DSP、可编程逻辑阵列等来执行。
如对于本领域的技术人员而言,显然此处给出的任何范围或者设备值可以 被扩展或者改变而不失去所寻求的效果。
文本中描述的各方法步骤可以在需要时按任何合适的次序或同时执行。
可以理解,上面对于较佳实施例的描述仅仅是作为例子给出的,而本领域 的技术人员可以做出多种改变。
权利要求
1.一种其上存储有用于在对等内容分布云中的两节点之间发送的数据结构的计算机可读介质,所述数据结构包括分组(31),所述分组(31)具有包含多个消息元素(32)的消息(30),每个消息元素被存储在所述分组中相应的净荷内并且所述消息元素的至少一个是消息首部,其中所述消息首部将所述消息类型标识为以下各项之一ACK、NAK、Notification、ConnectionRequest、Inactivity、PeerRegister、PeerDeRegister、PeerListRequest、FileRequest、FileResponse、ContentRequest、ContentResponse、BlockRequest以及BlockData消息。
2. 如权利要求1所述的计算机可读介质,其特征在于,所述消息元素中 的至少一个包括标志字段(33),它被安排用于指示一个所述节点被安排用于 在指定事件发生时将后续通知发送给另一所述节点。
3. 如权利要求2所述的计算机可读介质,其特征在于,所述两个节点之 一是跟踪者节点(14)而所述两个节点之二是对等体节点(16, 19),并且其 中所述标志字段被设置以在跟踪者处有新对等体信息可用时发起从所述跟踪 者到所述对等体的通知。
4. 如权利要求2所述的计算机可读介质,其特征在于,所述两个节点是 对等体节点, 一个对等体是客户机而另一个对等体是服务器,并且其中所述标 志字段被设置以在所述服务器处有新内容可用时发起从所述服务器到所述客 户机的通知。
5. 如权利要求4所述的计算机可读介质,其特征在于,所述标志字段还 被安排用以指示一特定块现部分存在于所述客户机上。
6. 如权利要求5所述的计算机可读介质,其特征在于,所述至少一个消 息元素还包括现有的部分块的内容描述。
7. —种在对等内容分布云(10)中的一节点上形成分组(31)的方法, 所述分组可用于发送至所述云中的另一节点,并且所述分组包括消息,所述方 法包括(i)从与所述消息相关联的一组指定消息元素中选择多个消息元素(32);以及(ii)在所述分组的相应净荷内存储每个消息元素,其中所述消息元素的至少一个是消息首部,用以将所述消息类型标识为以下各项中之一ACK、NAK、 Notification 、 ConnectionRequest 、 Inactivity 、 PeerRegister 、 PeerDeRegister 、 PeerListRequest、 FileRequest、 FileResponse、 ContentRequest、 ContentResponse、 BlockRequest以及BlockData消息。
8. 如权利要求7所述的方法,其特征在于,还包括在所述消息元素中的 至少一个中设置标志字段(33)以指示所述节点被安排用于在指定事件发生时 将后续通知发送给所述另一节点。
9. 如权利要求7或权利要求8所述的形成分组的方法,其特征在于,所 述指定事件是从任何到达对等体节点处的新内容以及跟踪者节点处的新对等 体信息中选择的。
10. 如权利要求8所述的形成分组的方法,其特征在于,还包括添加信息 至所述标志字段以指示一特定块现部分存在于所述节点上。
11. 如权利要求10所述的形成分组的方法,其特征在于,还包括将现有 的部分块的内容描述添加至所述至少一个消息元素。
12. 如权利要求7至11中任一所述的形成分组的方法,其特征在于,所 述一组指定的消息元素包括以下的任意项消息元素确认、消息元素否定确认、 连接请求、对等体的当前状态、有关对等体请求的详细信息、端点结构列表、 内容文件的标识、要下载文件的详细信息、端点结构、对等体供应内容的详细 信息、在前供应的内容块的详细信息、在前请求的块的碎片、有关通知事件的 详细信息。
13. 如权利要求7至12中任一所述的方法,其特征在于,还包括估计在 所述对等内容分布云(10)中的相邻节点处可用的内容,所述方法在所述对等 体节点处包括步骤如下(i) 发送消息给所述相邻节点以请求有关所述相邻节点处可用内容的信息;(ii) 接收来自所述相邻节点的消息元素,它包括被安排用以指示所述相邻 节点被安排用于在指定事件发生时将后续通知发送给所述对等体的标志字段(33)。
14. 如权利要求13所述的方法,其特征在于,所述事件包括有新内容到 达所述相邻节点处。
15. 如权利要求13或权利要求14所述的方法,其特征在于,还包括 发送另一消息给所述相邻节点以请求有关所述相邻节点处可用内容的信息。
16. 如权利要求15所述的方法,其特征在于,还包括从所述相邻节点接 收包括供应内容详细信息的可用内容的供应。
17. 如权利要求16所述的方法,其特征在于,还包括将请求有关所述相 邻节点处可用内容的信息的第二消息发送给所述相邻节点,所述第二消息是在 所述接收的供应的基础上修改的。
18. —种包括计算机程序代码装置的计算机程序,当所述程序在计算机上 运行时适于执行权利要求7至17中任一项的所有步骤。
19. 如权利要求18所述的计算机程序在计算机可读介质上具体化。
全文摘要
描述了一种实现连接管理和其他方法以给出增强的对等内容分布的接线协议。当节点之间的连接空闲但很快将生成有用内容时,连接被置于“通知”状态。这一通知状态还与内容请求/响应循环一起使用以允许对等体估计相邻对等体上可用的内容。如果没有合适内容可用就进入通知状态。当随后在相邻对等体上接收到新内容时,就能够通知请求节点以允许其重新开始内容请求/响应循环。
文档编号H04L29/06GK101356769SQ200680048130
公开日2009年1月28日 申请日期2006年12月2日 优先权日2005年12月22日
发明者C·康特西迪斯, J·米勒, M·科斯塔, P·R·罗德里格斯, S·瑞森 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1