CN101356769B - 一种在对等内容分布云中的一节点上形成分组的方法 - Google Patents

一种在对等内容分布云中的一节点上形成分组的方法 Download PDF

Info

Publication number
CN101356769B
CN101356769B CN2006800481306A CN200680048130A CN101356769B CN 101356769 B CN101356769 B CN 101356769B CN 2006800481306 A CN2006800481306 A CN 2006800481306A CN 200680048130 A CN200680048130 A CN 200680048130A CN 101356769 B CN101356769 B CN 101356769B
Authority
CN
China
Prior art keywords
message
peer
content
node
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2006800481306A
Other languages
English (en)
Other versions
CN101356769A (zh
Inventor
C·康特西迪斯
J·米勒
M·科斯塔
P·R·罗德里格斯
S·瑞森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN101356769A publication Critical patent/CN101356769A/zh
Application granted granted Critical
Publication of CN101356769B publication Critical patent/CN101356769B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms
    • H04L67/108Resource delivery mechanisms characterised by resources being split in blocks or fragments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/535Tracking the activity of the user
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/54Presence management, e.g. monitoring or registration for receipt of user log-on information, or the connection status of the users
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

描述了一种实现连接管理和其他方法以给出增强的对等内容分布的接线协议。当节点之间的连接空闲但很快将生成有用内容时,连接被置于“通知”状态。这一通知状态还与内容请求/响应循环一起使用以允许对等体估计相邻对等体上可用的内容。如果没有合适内容可用就进入通知状态。当随后在相邻对等体上接收到新内容时,就能够通知请求节点以允许其重新开始内容请求/响应循环。

Description

一种在对等内容分布云中的一节点上形成分组的方法
技术领域
本文中的描述一般地涉及对等基础结构中的通信协议,尤其涉及允许在对等云中进行结构化通信的消息格式数据结构。 
背景 
在过去,使用提供基于基础结构解决方案的专用服务器场已经实现了大范围的内容分布。在此类方法中,每个请求内容的客户机形成与服务器场中一服务器的专用高带宽连接并在需要时下载内容。这类解决方案对必须提供并维持服务器场的内容提供商而言是昂贵的。图1示出了具有服务器1和客户机2的这类解决方案,每个客户机都有直接连接至一服务器的连接。这类解决方案不仅对内容提供商是昂贵的,而且它还不够健壮,因为服务器的故障会导致无法向多个客户机提供内容。此外,该解决方案的升级困难,因为每个服务器支持的客户机数量有限。 
当前的用于内容分布的新范例是基于使用在其中各节点共享其资源(存储、CPU、带宽)的协作网络的分布式体系结构出现的。 
协作内容分布解决方案固有地可自升级,因为系统的带宽容量随着更多节点的到来而增加:每个新节点请求来自其他节点的服务同时也向其他节点提供服务。因为每个新节点都贡献资源,所以系统容量随着需求增加而增长,这就使得系统升级能力无限。通过协作,文件源即服务器不再需要增加其资源来适应更大的用户群;这也就提供了对“快闪(flash crowds)”(大量且突然的通信量高峰,通常会导致受影响的服务器崩溃)的顺应力。因此,终端-系统协作解决方案可用于快速有效地将软件更新、关键补丁、视频和其他的大型文件传递给大量用户同时维持原服务器的低成本。 
BitTorrent(BT下载)是由Bram Cohen编写的现有对等文件共享协议并且在开源许可下可公开使用。使用BitTorrent算法将要分布的文件分割成块或 碎片。 
这些块以随机次序分布给云中的节点并且在请求节点上被重新装配。每个节点从其连接的其他节点下载缺失的块,同时也提供对其已经有的块的上传连接。 
不考虑其巨大潜力和流行度,诸如BitTorrent的现有终端-系统协作方案在某些情况下会遭受降低其整体性能的低效率。这些低效率在大型异类的用户群中,在快闪期间,在高纷扰的环境中,或者在存在有协作刺激机制的情况下尤为明显。本发明考虑在接线协议(wire protocol)级实现连接管理以及其它方法以减少或缓和部分或全部这些问题。相比于其他的通信类型,对等通信依赖于在所选实体或节点之间建立并维持有效连接的能力。本发明考虑接线协议和消息格式,从而以一种简单、有效、健壮、可靠且可升级的方式来实现上述目的。 
处理上述问题之外,网络通信的量很容易压垮内容分布云中的对等体。消息大小和结构是影响对等体快速处理消息以降低延迟以及分组丢失危险的能力的重要因素。 
概述 
提供本概述以便以简化形式介绍将在以下的详细描述中进一步描述的一些概念。本概述并不旨在标识要求保护的主题的关键特征或本质特征,也不旨在用于限制要求保护的主题的范围。 
实现一种用于对等内容分布算法的接线协议。该接线协议使用分组,各分组具有包含两个或多个消息元素的消息。这些分组用于在内容分布云中的两节点之间发送。每个消息元素被存储在分组中相应的净荷内并且至少一个消息元素是消息首部。该消息首部将消息类型标识为以下各项之一:ACK(确认)、NAK(否定确认)、Notification(通知)、ConnectionRequest(连接请求)、Inactivity(不活动)、PeerRegister(对等体登记)、PeerDeRegister(对等体撤销登记)、PeerListRequest(对等体列表请求)、FileRequest(文件请求)、FileResponse(文件响应)、ContentRequest(内容请求)、ContentResponse(内容响应)、BlockRequest(块请求)以及BlockData(块数据)消息。这些消 息类型将在本申请中详细描述。通过使用这些消息类型,我们就能够以简单有效的方式来实现对等内容分布算法。 
在一个示例中,消息元素之一包括标志字段,被安排用于指示节点之一被安排用于在指定事件发生时将后续通知发送给其他节点。这提供了一个优势,即对等云中相邻节点之间的连接可被置于“通知”状态。例如,在连接空闲且有用内容在将来可经该连接变得可用的情况下。通过以此方式标识处于“通知”状态的空闲连接,就能够剔除空闲连接而不会剔除那些很快将产生有用内容的连接。以这种有目标的方式来剔除连接就能够形成给出更好性能并增加通过云的内容分布的新连接。 
例如,两个节点之一是跟踪者节点而两个节点之二是对等体节点。跟踪者节点,也被称为登记者节点,具有关于云成员的信息。跟踪者节点帮助云成员找出具有所请求内容的其他云成员。设置标志字段以在跟踪者处有新对等体信息可用时发起从跟踪者到对等体的通知。 
在另一示例中,两个节点都是对等体节点,一个对等体是客户机而另一个对等体是服务器。在本文中,术语‘客户机’和‘服务器’作为纯服务器和客户机的附加或者替换,可以指示事务中的角色。设置标志字段以在服务器处有新内容可用时发起从服务器到客户机的通知。 
标志字段可被安排用以指示一特定块部分存在于客户机上。这提供了一个优势,即通过使用这一有关仅部分存在的特定块的信息,下载可在块内级继续。例如作为上述的帮助,至少一个消息元素还包括现有的部分块的内容描述。 
我们还描述了一种在对等内容分布云中的节点上形成分组的方法。分组可用于发送至云中的另一节点,并且该方法包括: 
·从一组指定的消息元素中选择多个消息元素;以及 
·在分组的相应净荷内存储每个消息元素。 
这些消息元素的至少一个是消息首部,它将消息类型标识为以下各项之一:ACK、NAK、Notification、ConnectionRequest、Inactivity、PeerRegister、PeerDeRegister、PeerListRequest、FileRequest、FileResponse、ContentRequest、ContentResponse、BlockRequest以及BlockData消息。这提供了一个优势,即对等内容分布云中的节点能够以简单有效的方式形成用于实现内容分布算法 的分组。 
在一个示例中,指定的一组消息元素包括以下的一项或多项:消息元素确认、消息元素否定确认、连接请求、对等体的当前状态、有关内容请求的详细信息、端点结构列表、内容文件的标识、要下载文件的详细信息、端点结构、对等体供应内容的详细信息、在前供应的内容块的详细信息、在前请求的块的碎片、有关通知事件的详细信息。 
执行的各方法使用一种包括计算机程序代码装置的计算机程序,当所述程序在计算机上运行时适于执行上述任何方法的所有步骤。该计算机程序可以在计算机可读介质上具体化。这些方法可由存储介质上具备机器可读形式的软件执行。软件能够适于在并行处理器或串行处理器上执行,使得本方法的各步骤可以按任何合适的次序或同时执行。 
这里承认软件能够是有价值的、可以单独交易的商品。它旨在包含运行于或者控制“哑(dumb)”或者标准的硬件以实现期望的功能的软件,(因此,软件本质上定义了寄存器的功能,并且可以被叫做寄存器,即使是在它与其标准硬件结合之前)。出于类似的理由,还旨在包含“描述”或者定义硬件配置的软件,例如HDL(硬件描述语言)软件,用于设计硅芯片,或者用于配置通用可编程芯片以实现期望的功能。 
许多伴随特征将随着参考下面的详细描述并结合附图进行理解而得到更好的认识。 
附图说明
从结合附图的下列详细描述将更好地理解本描述,在附图中: 
图1是使用服务器场的内容分布系统的示意图; 
图2是对等文件共享云的示意图; 
图3是由消息元素形成消息的示意图,其中示出了这些消息元素是如何存储在分组的; 
图4是一种使用信息元素实现‘通知’状态的方法的流程图; 
图5是示出了内容请求/响应循环的消息时序图; 
相同的标号用于指示附图中相同的部分。 
详细描述 
下面结合附图提供的详细说明旨在作为本发明的例子的描述,但是并不旨在表示可以构造或者使用本例子的仅有的形式。该描述阐述本示例的功能以及用于构造和操作本示例的步骤序列。然而,相同或等价的功能与序列可由不同的示例来完成。 
本文中使用的术语“云”指的是在通信网络中可以访问对等文件分布协议并使用该协议来尝试获取诸如被分布文件的内容的特定片段的副本的多个节点。云在某些文献中还被称为图表(graph)。云中的节点使用上述协议各自与其他节点形成一个或多个当前连接。于是在节点丢弃或形成与已位于云中节点的连接时,该节点就加入或离开云。连接无需总是积极用于文件分布,虽然连接需要适用于使用特定协议进行文件分布,而这可能会使用也可能不会使用网络编码。连接可以是单向或双向连接。在本文描述的特定示例中,所有的连接都是单向的,这就使得云是不对称的,虽然本发明可适用于并包括在其中连接是双向的且单个连接同时支持上传和下载方向通信量的对称云。同样地,给定的节点同时可以是一个以上云的成员。例如,第一片云中的节点正尝试获取被分布的视频的副本而第二片云中的节点正尝试获取静止数字图像文件夹的副本。云可以相互独立,也可以部分或完全重叠。 
图2是对等文件分布云10的示意图,云10包括经由互联网11或任何其他适合的通信网络连接的多个节点。云本身可以包括多得多的节点,但为了清楚仅示出了少于十个的节点。同样地,虽然并非是对等文件分布参与者也不是云的成员,但其他节点当前也可以连接在云成员之间或直接与其相连接,且上述节点未示出。 
在云10中提供了一个或多个种子节点12。种子节点是内容(也可称之为文件)起源于其中的节点。例如,假设一个公司有一个想公开分布给云成员的产品演示视频。可以将该文件放在种子节点上。该种子节点通常“总是在工作”,这就使得内容文件在相当长的时段(不包括例如维护时段等)内可以从其上传。通常情况下,种子节点积极上传内容,但不下载内容。云中仅有有限且相对较小数量的节点能够同时从该种子节点中下载内容。种子节点可以使用也可以不 使用对等文件共享协议来将内容上传至云中的其他成员。然而,上述其他成员接着使用对等文件分布协议与云成员共享内容或内容的各部分。于是,其他云成员在它们允许从其自己上传内容的时段内可以有效地充当种子节点,但在此期间并不积极地下载内容。在某些情况下,一旦内容从种子节点12传送至云10中,种子12就可以下线而云10将仍然起作用。 
在云10中提供了一个或多个跟踪者节点14。跟踪者节点14具有关于云成员的信息(诸如一对等体是否正参与该云)以及任何要共享的信息。这一跟踪者节点帮助云成员找出具有其所需内容的其他云成员。 
在云中还存在多个对等体节点16、19,它们也被称为客户机。对等体节点是需要在云中分布的内容并且可以或者也可以不共享其已经获取的内容各部分的节点。对等体节点如上所述可以充当临时种子。在图1所示的示例中,对等体节点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(元素_内容请求)-有关内容请求的详细信息。 
这一消息元素包括标志字段,该字段是带有一些位的位屏蔽,例如这些位具有下列含义: 
·NOTIFY_ON_NO_CONTENT(无内容通知)-如果没有内容变得可用,则将置位该位以使得在有新内容可用时将后续通知发送至发送节点。 
·DESIRED_CONTENT_PRESENT(期望的内容存在)-已经提供服务器希望的内容描述。这是中断块恢复系统的一部分。如果该位被置位,则将以下项附至该元素。这与CURRENT_CONTENT_PRESENT互斥。 
·CURRENT_CONTENT_PRESENT(当前内容存在)-已被提供的当前位于服务器内的内容列表。这与DESIRED_CONTENT_PRESENT互斥。 
ELEMENT_ENDPOINTLIST(元素_端点列表)-端点结构列表。 
ELEMENT_FILEIDENTIFICATION(元素_文件标识)-内容文件的标识。 
ELEMENT_FILEINFORMATION(元素_文件信息)-要下载文件的详细信息。 
ELEMENT_ENDPOINT(元素_端点)-端点结构。 
ELEMENT_CONTENTOFFER(元素_内容供应)-对等体供应内容的详细信息。 
ELEMENT_BLOCKREQUEST(元素_块请求)-服务器希望接收的在前提供的内容块的详细信息。注意块可以根据使用的编码方法而被不同地指定。 
块的传输可以从块内的给定偏移量开始并继续到块的末尾。 
ELEMENT_BLOCKDATA(元素_块数据)-在前请求的块的碎片。 
ELEMENT_NOTIFICATION(元素_通知)-有关通知事件的详细信息。例如,这包括指示以下各通知类型的代码: 
·CLOSING_AS_DOWNLOAD_COMPLETE(因下载完成关闭)-该连接正被关闭,因为下载已完成并且该对等体不再需要能够请求块。 
·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(MESSAGE_INACTIVITY)(确认(消息_不活动))-不活动已被证实。 
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、可编程逻辑阵列等来执行。 
如对于本领域的技术人员而言,显然此处给出的任何范围或者设备值可以被扩展或者改变而不失去所寻求的效果。 
文本中描述的各方法步骤可以在需要时按任何合适的次序或同时执行。 
可以理解,上面对于较佳实施例的描述仅仅是作为例子给出的,而本领域的技术人员可以做出多种改变。 

Claims (8)

1.一种在对等内容分布云(10)中的一节点上形成分组(31)的方法,所述分组可用于发送至所述云中的另一节点,并且所述分组包括消息,所述方法包括:
从与所述消息相关联的一组指定消息元素中选择多个消息元素(32);
在所述分组的相应净荷内存储所述多个消息元素中的每个消息元素,其中所述消息元素的至少一个是消息首部,用以将所述消息类型标识为以下各项中之一:确认ACK、否定确认NAK、通知Notification、连接请求ConnectionRequest、不活动Inactivity、对等体登记PeerRegister、对等体撤销登记PeerDeRegister、对等体列表请求PeerListRequest、文件请求FileRequest、文件响应FileResponse、内容请求ContentRequest、内容响应ContentResponse、块请求BlockRequest以及块数据BlockData消息;以及
在所述消息元素中的至少一个中设置标志字段(33)以指示所述节点被安排用于在指定事件发生时将后续通知发送给所述另一节点,
其中所述方法还包括添加信息至所述标志字段以指示一特定块现部分存在于所述节点上。
2.如权利要求1所述的形成分组的方法,其特征在于,还包括将现有的部分块的内容描述添加至所述至少一个消息元素。
3.如权利要求1所述的形成分组的方法,其特征在于,所述一组指定的消息元素包括以下的任意项:消息元素确认、消息元素否定确认、连接请求、对等体的当前状态、有关对等体请求的详细信息、端点结构列表、内容文件的标识、要下载文件的详细信息、端点结构、对等体供应内容的详细信息、在前供应的内容块的详细信息、在前请求的块的碎片、有关通知事件的详细信息。
4.如权利要求1所述的方法,其特征在于,还包括估计在所述对等内容分布云(10)中的相邻节点处可用的内容,所述方法在对等体节点处包括步骤如下:
发送消息给所述相邻节点以请求有关所述相邻节点处可用内容的信息;
接收来自所述相邻节点的消息元素,它包括被安排用以指示所述相邻节点被安排用于在指定事件发生时将后续通知发送给所述对等体的标志字段(33)。
5.如权利要求4所述的方法,其特征在于,所述事件包括有新内容到达所述相邻节点处。
6.如权利要求4或权利要求5所述的方法,其特征在于,还包括:
发送另一消息给所述相邻节点以请求有关所述相邻节点处可用内容的信息。
7.如权利要求6所述的方法,其特征在于,还包括从所述相邻节点接收包括供应内容详细信息的可用内容的供应。
8.如权利要求7所述的方法,其特征在于,还包括将请求有关所述相邻节点处可用内容的信息的第二消息发送给所述相邻节点,所述第二消息是在所述接收的供应的基础上修改的。
CN2006800481306A 2005-12-22 2006-12-02 一种在对等内容分布云中的一节点上形成分组的方法 Expired - Fee Related CN101356769B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP05270100A EP1802072B1 (en) 2005-12-22 2005-12-22 Peer-to-peer message format
EP05270100.0 2005-12-22
PCT/US2006/046204 WO2007075262A1 (en) 2005-12-22 2006-12-02 Peer-to-peer message format data structure

Publications (2)

Publication Number Publication Date
CN101356769A CN101356769A (zh) 2009-01-28
CN101356769B true CN101356769B (zh) 2011-01-26

Family

ID=36578810

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800481306A Expired - Fee Related CN101356769B (zh) 2005-12-22 2006-12-02 一种在对等内容分布云中的一节点上形成分组的方法

Country Status (7)

Country Link
US (1) US7912948B2 (zh)
EP (1) EP1802072B1 (zh)
KR (1) KR101292920B1 (zh)
CN (1) CN101356769B (zh)
AT (1) ATE467299T1 (zh)
DE (1) DE602005021134D1 (zh)
WO (1) WO2007075262A1 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE602005020331D1 (de) * 2005-12-22 2010-05-12 Microsoft Corp Verbindungsverwaltung in peer-to-peer-Datenverteilungsnetzen
US20090016317A1 (en) * 2007-07-10 2009-01-15 Qualcomm Incorporated Methods and apparatus for supporting group communications utilizing device identifiers
US8694662B2 (en) * 2007-07-10 2014-04-08 Qualcomm Incorporated Method and apparatus for communicating transmission requests to members of a group and/or making group related transmission decisions
US7961698B2 (en) 2007-07-10 2011-06-14 Qualcomm Incorporated Methods and apparatus for controlling interference to broadcast signaling in a peer to peer network
US8495232B2 (en) 2007-07-10 2013-07-23 Qualcomm Incorporated Methods and apparatus for supporting broadcast communications in a peer to peer network
US8861418B2 (en) 2007-07-10 2014-10-14 Qualcomm Incorporated Methods and apparatus for supporting group communications with data re-transmission support
US8365202B2 (en) 2008-02-04 2013-01-29 Microsoft Corporation Framework for computing device with auxiliary display
US20100185769A1 (en) * 2009-01-16 2010-07-22 Amlogic Co., Ltd. Methods for Downloading a File to Consumer Electronic Devices via a Peer-to-peer Network
KR20100102026A (ko) * 2009-03-10 2010-09-20 주식회사 케이티 사용자 단말 인증 방법과 그 인증 서버 및 사용자 단말
US8341263B2 (en) * 2010-04-20 2012-12-25 International Business Machines Corporation Peer to peer monitoring framework for transaction tracking
KR101379105B1 (ko) * 2010-07-02 2014-04-01 한국전자통신연구원 클라우드 컴퓨팅 서비스 제공 시스템 및 방법
US9230019B2 (en) 2010-12-23 2016-01-05 Virtuanet Llc Semantic information processing
US8626854B2 (en) * 2011-01-17 2014-01-07 Alcatel Lucent Traffic localization in peer-to-peer networks
US20130073671A1 (en) * 2011-09-15 2013-03-21 Vinayak Nagpal Offloading traffic to device-to-device communications
US8965958B2 (en) * 2011-10-27 2015-02-24 Microsoft Corporation File fetch from a remote client device
RU2483463C1 (ru) * 2012-04-11 2013-05-27 Открытое акционерное общество "СУПЕРТЕЛ" Способ и устройство для формирования протокола единой передачи разнородных типов данных
US20130346274A1 (en) * 2012-06-25 2013-12-26 Liquid Holdings Group, Inc. Electronic financial trading platform with real-time data analysis and reporting
US9465648B2 (en) * 2012-07-31 2016-10-11 Hewlett Packard Enterprise Development Lp Distributed transaction processing through commit messages sent to a downstream neighbor
US9143568B2 (en) 2012-12-18 2015-09-22 Microsoft Technology Licensing, Llc. Peer-to-peer sharing of cloud-based content
EP3932003A4 (en) * 2019-03-01 2022-11-30 SingularDTV GmbH DISTRIBUTED DIGITAL CONTENT DISTRIBUTION SYSTEM AND PROCEDURES USING BLOCKCHAINS AND ENCRYPTED PEER-TO-PEER NETWORK
US10911533B2 (en) 2019-03-21 2021-02-02 Cisco Technology, Inc. Leveraging goaway messages to dynamically inform connection peers of IoT events

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1574840A (zh) * 2003-06-13 2005-02-02 微软公司 对等名称解析电信协议及在此使用的消息格式数据结构
CN1578311A (zh) * 2003-07-03 2005-02-09 微软公司 Rtp有效负荷格式

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020116205A1 (en) * 2000-05-19 2002-08-22 Ankireddipally Lakshmi Narasimha Distributed transaction processing system
JP4098556B2 (ja) 2001-07-31 2008-06-11 ローム株式会社 端子板、この端子板を備えた回路基板、およびこの端子板の接続方法
US7251689B2 (en) * 2002-03-27 2007-07-31 International Business Machines Corporation Managing storage resources in decentralized networks
US6987987B1 (en) * 2002-07-03 2006-01-17 Sprint Spectrum L.P. Method and system for providing advanced notice of cost to access web content
US8204992B2 (en) 2002-09-26 2012-06-19 Oracle America, Inc. Presence detection using distributed indexes in peer-to-peer networks
US8161094B2 (en) 2003-06-04 2012-04-17 Sony Computer Entertainment Inc. System and method for notification within decentralized network
JP4490743B2 (ja) * 2004-06-24 2010-06-30 株式会社日立製作所 ファイル共有システム、ファイル共有用管理サーバおよびクライアント装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1574840A (zh) * 2003-06-13 2005-02-02 微软公司 对等名称解析电信协议及在此使用的消息格式数据结构
CN1578311A (zh) * 2003-07-03 2005-02-09 微软公司 Rtp有效负荷格式

Also Published As

Publication number Publication date
US20080301246A1 (en) 2008-12-04
ATE467299T1 (de) 2010-05-15
KR20080085852A (ko) 2008-09-24
DE602005021134D1 (de) 2010-06-17
WO2007075262A1 (en) 2007-07-05
CN101356769A (zh) 2009-01-28
US7912948B2 (en) 2011-03-22
KR101292920B1 (ko) 2013-08-02
EP1802072A1 (en) 2007-06-27
EP1802072B1 (en) 2010-05-05

Similar Documents

Publication Publication Date Title
CN101356769B (zh) 一种在对等内容分布云中的一节点上形成分组的方法
KR101366364B1 (ko) 콘텐츠 블록 교환 협상 방법, 컴퓨터 프로그램, 및 피어 노드
CN1833423B (zh) 对等网络中的应用运行
CN101341688B (zh) 在对等内容分布云中的连接管理
Æg et al. BestPeer: Self-onfigurable Peer-to-Peer System
CN101385280B (zh) 对等内容分布云中的拓扑管理
RU2433461C2 (ru) Взаимодействие между соседствами в рамках объединения по механизму рандеву
CN101689164B (zh) 服务器辅助的对等同步
WO2008025297A1 (fr) Procédé de téléchargement de fichiers selon la technique p2p (pair à pair) et système de téléchargement p2p
Nordström et al. Haggle: Opportunistic mobile content sharing using search
CN101309282A (zh) 一种局域网内传输文件的方法、服务器和系统
GB2420257A (en) Peer to peer (P2P) network wherein the quantity of super-peers is controlled in dependence upon their capacity to store service advertisements
CN112637351B (zh) 一种文件下载方法及装置
Meiklejohn et al. Loquat: A framework for large-scale actor communication on edge networks
CN114884880A (zh) 数据传输方法以及系统
CN114205233A (zh) 一种面向数据管控的智能合约自适应配置与执行框架
CN106330953A (zh) 一种智能路由器设备、服务器设备及其数据处理方法
CN114500660B (zh) 请求处理方法、装置、设备及计算机可读存储介质
Nordström et al. Haggle: Relevance-aware content sharing for mobile devices using search
Banerjea et al. Publish/subscribe-based p2p-cloud of underutilized computing resources for providing computation-as-a-service
Cohen et al. An open and modular approach for a context distribution system
US7788347B2 (en) Method and apparatus for configuring a network node using multiple peer-to-peer layers
CN101179594B (zh) 无线自组织网络环境中基于服务距离的服务发现方法
Ndlovu et al. A review of service discovery schemes in wireless mesh networks
Koutsoloukas et al. Asynchronous event-based communication across Service Brokers

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150505

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150505

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110126

Termination date: 20141202

EXPY Termination of patent right or utility model