使用利用确切名称的集合同步的服务发现转让专利

申请号 : CN201510124613.0

文献号 : CN104980487B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : M·E·莫斯科

申请人 : 思科技术公司

摘要 :

一个实施例提供一种基于通过使用基于确切匹配名称的同步协议而使清单在内容中心网络中的装置之间同步来促进服务发现的系统。在操作期间,本地接收对应于远程装置的远程清单的播发。清单表示服务记录的集合,且所述播发包含对应于所述远程装置的服务记录。所述本地装置通过将所述所播发的服务记录插入到所述本地清单中来更新其本地清单,以响应确定所述本地清单及所述远程清单对应于相同名称空间。

权利要求 :

1.一种用以检测异常的计算机系统,其包括:处理器;

存储装置,其耦合到所述处理器且存储在由计算机执行时致使所述计算机执行方法的指令,所述方法包括:通过本地装置接收对应于远程装置的远程清单的第一播发,其中所述第一播发包含对应于所述远程装置的服务记录;以及响应于确定所述本地清单及所述远程清单对应于相同名称空间而通过将所述第一播发的所述服务记录插入到所述本地清单中来更新所述本地装置的本地清单,所述名称空间至少包括可路由前缀和散列值。

2.根据权利要求1所述的计算机系统,其中所述方法进一步包括:发射对于对应于远程装置的远程清单的第一播发的查询。

3.根据权利要求1所述的计算机系统,其中所述方法进一步包括:发射对应于所述本地装置的所述本地清单的第二播发,其中所述第二播发包含对应于所述本地装置的服务记录。

4.根据权利要求1所述的计算机系统,其中由所述本地装置发送或接收的数据包指示以下各者中的一或多者:识别所述清单的可路由前缀;

用以确定所述数据包对应于数据传送的识别符;

用以确定所述数据包对应于数据播发的识别符;

所述清单的根散列值;

所述清单中的服务记录的名称;以及

服务记录。

5.根据权利要求1所述的计算机系统,其中更新所述本地清单进一步包括:响应于确定所述第一播发的所述服务记录的序列号大于所述本地清单中与所述第一播发的所述服务记录具有相同名称的服务记录的序列号,用所述第一播发的所述服务记录的值更新所述本地清单中的所述服务记录的值。

6.根据权利要求1所述的计算机系统,其中所述方法进一步包括:初始化到网络上,其中所述本地装置不含清单;

创建对应于所述本地装置的服务记录;以及创建用于所述本地装置的包括所述服务记录的清单。

7.根据权利要求1所述的计算机系统,其进一步包括响应于所述本地清单中的服务记录的存留时间(TTL)的出现:通过从所述本地清单删除所述服务记录而更新所述本地清单;以及发射对应于经更新的本地清单的第二播发。

说明书 :

使用利用确切名称的集合同步的服务发现

技术领域

[0001] 本发明大体上涉及数据同步。更具体来说,本发明涉及通过使用确切匹配名称在网络上的对等机之间执行集合同步的服务发现。

背景技术

[0002] 在许多计算应用中,网络上的对等机使其相应数据集合同步常常是重要的。数字内容的激增产生了大量需要调和的集合。内容中心网络(CCN)架构已经设计以促进存取及处理此类数字内容。CCN包含实体或节点,例如网络客户端、转发器(例如,路由器)及内容产生器,其通过发送对于各种内容项目的“兴趣”包及接收返回的“内容对象”包而彼此通信。基于唯一名称识别CCN兴趣及内容对象,所述唯一名称通常为阶层结构可变长度识别符(HSVLI),且包括从最一般层级到最特定层级排序的连续名称组成部分。
[0003] 当前CCN同步协议使用最长前缀匹配方法,其中对“/parc/events/”的兴趣将匹配“/parc/events/calendar.txt”及“/parc/events/conference.txt”两者。此当前同步协议是基于扩展兴趣的名称的响应。此同步协议描述于以下申请案中:
[0004] 标题为“使用数据库同步的动态路由协议(DYNAMIC ROUTING PROTOCOLS USING DATABASE SYNCHRONIZATION)”的第13/720,736号美国专利申请案(代理人档案号码PARC-20111397-US-NP),发明人为Van L.Jacobson及Marc E.Mosko,于2012年12月19日申请(下文中称为“第13/720,736号美国专利申请案”);以及
[0005] 标题为“通过按名称的内容同步进行数据输送(DATA TRANSPORT BY NAMED CONTENT SYNCHRONIZATION)”的第13/681,306号美国专利申请案(代理人档案号码PARC-20111317-US-NP),发明人为Van L.Jacobson及Marc E.Mosko,于2012年11月19日申请(下文中称为“第13/681,306号美国专利申请案”)。
[0006] 随着CCN架构演变,存在对于基于同步协议发现装置及由那些装置提供的服务的需要,所述同步协议允许使用确切名称匹配而非当前的最长前缀匹配。在此类新架构中,当前CCN同步协议将不起作用。

发明内容

[0007] 一个实施例提供一种基于通过使用基于确切匹配名称的同步协议而使清单在内容中心网络中的装置之间同步来促进服务发现的系统。在操作期间,本地装置接收对应于远程装置的远程清单的播发。清单表示服务记录的集合,且播发包含对应于所述远程装置的服务记录。所述本地装置响应于确定本地清单及远程清单对应于相同名称空间而通过将所播发的服务记录插入到本地清单中来更新其本地清单。
[0008] 在一些实施例中,所述本地装置发射对于对应于远程装置的远程清单的播发的查询。
[0009] 在一些实施例中,本地装置发射对应于本地装置的本地清单的播发,且所述播发包含对应于所述本地装置的服务记录。
[0010] 在一些实施例中,所述本地装置从远程装置接收对于对应于本地清单的播发的查询,且所述播发包含对应于所述本地装置的服务记录。
[0011] 在一些实施例中,由本地装置发送或接收的数据包指示以下各者中的一或多者:识别清单的可路由前缀;用以确定数据包对应于数据传送的识别符;用以确定数据包对应于数据播发的识别符;清单的根散列值;清单中的服务记录的名称;以及服务记录。
[0012] 在一些实施例中,响应于确定播发的服务记录的序列号大于本地清单中与播发的服务记录具有相同名称的服务记录的序列号,本地装置用播发的服务记录的值更新本地清单中的服务记录的值。
[0013] 在一些实施例中,本地装置在没有清单的情况下初始化到网络上。本地装置创建对应于本地装置的服务记录,且创建用于本地装置的包括服务记录的清单。
[0014] 在一些实施例中,本地装置响应于确定本地清单的根散列值不同于所播发的远程清单的根散列值而发送对于远程清单的请求,其中根散列值识别清单的服务记录。基于所接收的远程清单,本地装置确定远程清单中表示的哪些服务记录不同于本地清单中表示的服务记录。本地装置发射对于不同的服务记录的一组兴趣。
[0015] 在一些实施例中,响应于本地清单中的服务记录的存留时间(TTL)的出现,本地装置通过从本地清单删除到期的服务记录而更新本地清单。本地装置发射对应于经更新本地清单的播发。

附图说明

[0016] 图1说明根据本发明的实施例的促进使清单在内容中心网络中的节点之间同步的示范性计算机系统。
[0017] 图2说明根据本发明的实施例的在本地节点与远程节点之间的示范性通信。
[0018] 图3呈现根据本发明的实施例的说明用于使与远程清单及本地清单相关联的内容同步的方法的流程图。
[0019] 图4呈现根据本发明的实施例的说明用于基于修改时间使与远程清单及本地清单相关联的内容同步的方法的流程图。
[0020] 图5呈现根据本发明的实施例的说明用于发射对应于清单的播发的方法的流程图。
[0021] 图6A呈现根据本发明的实施例的描绘集合中所表示的清单及内容对象的格式的表。
[0022] 图6B呈现根据本发明的实施例的描绘在同步期间的两个清单的格式的表,其中本地清单缺少来自远程清单的内容对象。
[0023] 图6C呈现根据本发明的实施例的描绘在同步期间的两个清单的格式的表,其中本地清单中的相同名称的内容对象的摘要不同于远程清单中的摘要,且其中远程节点播发其清单。
[0024] 图6D呈现根据本发明的实施例的描绘在同步期间的两个清单的格式的表,其中本地清单中的相同名称的内容对象的摘要不同于远程清单中的摘要,且其中本地节点播发其清单。
[0025] 图6E呈现根据本发明的实施例的描绘在同步期间的两个清单的格式的表,此时本地清单中的相同名称的内容对象的摘要及修改时间不同于远程清单中的摘要。
[0026] 图7说明根据本发明的实施例的基于清单在内容中心网络中的装置之间的同步而促进服务发现的示范性计算机系统。
[0027] 图8说明根据本发明的实施例的在两个装置之间的示范性通信。
[0028] 图9A及9B呈现根据本发明的实施例的说明用于基于网络中的两个装置的清单的同步而促进服务发现的方法的流程图。
[0029] 图10A呈现根据本发明的实施例的描绘集合中所表示的清单及服务记录的格式的表。
[0030] 图10B呈现根据本发明的实施例的描绘在使用同步协议的服务发现期间的两个清单的格式的表,其中本地装置不需要检索远程清单。
[0031] 图10C呈现根据本发明的实施例的描绘在使用同步协议的服务发现期间的两个清单的格式的表,其中本地装置从远程装置接收经更新服务记录。
[0032] 图10D呈现根据本发明的实施例的描绘在使用同步协议的服务发现期间的两个清单的格式的表,其中本地装置初始化、执行服务发现且检索远程清单。
[0033] 图11说明根据本发明的实施例的基于清单在内容中心网络中的装置之间的同步而促进服务发现的示范性计算机及通信系统。
[0034] 在诸图式中,相同参考数字指代相同图式元件。

具体实施方式

[0035] 呈现以下描述以使所属领域的技术人员能够制备且使用实施例,且在特定应用以及其要求的背景下提供以下描述。所属领域的技术人员将易于了解对所揭示的实施例的各种修改,且在不脱离本发明的精神和范围的情况下,本文中所定义的一般原理可应用于其它实施例以及应用。因此,本发明不限于所示出的实施例,而是应被赋予与本文所揭示的原理以及特征一致的最宽范围。
[0036] 本发明的实施例提供一种基于通过使用基于确切匹配名称而使清单在网络中上的节点之间同步来促进发现装置及由内容中心网络(CCN)中的那些装置提供的服务的系统。在本发明的实施例的以下描述中,相关CCN实体为本地节点及远程节点,但角色可反转。在一些实施例中,相关CCN实体为本地节点处的装置(“本地装置”)及远程节点处的装置(“远程节点”)。本地及远程节点或装置中的每一者与清单相关联,所述清单表示节点处的内容对象的集合。清单通过特定前缀识别,使得具有相同前缀的两个清单对应于相同内容对象集合。
[0037] 在一些实施例中,清单为识别内容对象集合的有序列表。集合中的每一内容对象通过其名称及对应摘要识别,其中摘要为内容对象的散列值。在一些实施例中,每一内容对象还通过修改时间识别,所述修改时间指示修改内容的时间。出于此描述的目的,将清单描述为有序列表,但其它实施例包含结构化为同步树的清单,其含有内容对象以及嵌套的内容对象集合。系统产生用于清单的根散列值。根散列值为基于集合的个别内容对象的散列值的累加散列值。清单的根散列值为用于清单的唯一识别符。
[0038] 系统可使用确切匹配名称使本地清单中的集合与本地清单中的内容同步。远程节点播发其清单的散列。本地节点接收所述播发且确定所播发的远程清单对应于本地清单,其中远程清单及本地清单对应于相同内容对象集合。本地节点通过比较本地清单的根散列值与远程清单的根散列值而确定本地清单的内容是否与远程清单的内容同步。如果其并不匹配,则本地节点通过将对于远程清单的请求发送到远程节点来检索远程清单。在一些实施例中,本地节点基于组块协议发送一组兴趣,且每一兴趣对应于清单的经编号信息块。在一些实施例中,所述远程节点可播发对应于其清单的信息块的编号。拥有远程清单的本地节点确定远程清单中指示的哪些内容对象不同于本地清单中指示的内容对象。随后,本地节点发射对于不同的内容对象的一组兴趣,其中所述兴趣包含所请求内容对象的名称。在一些实施例中,所述兴趣还包含所请求内容对象的对应散列值。以此方式,所述系统使用确切名称匹配来请求及接收不同内容对象集合。
[0039] 在一些实施例中,使用结构化技术发射所述清单,例如按rsync协议的滚动散列技术,而非发送完整清单。
[0040] 在一些实施例中,进一步通过对应修改时间识别集合中的内容对象,修改时间指示修改内容对象的时间。用于确定为不同的每一内容对象,本地节点确定远程清单中的内容对象的修改时间比本地清单中的对应内容对象更为新近还是较不新近。如果远程内容对象对应于更为新近的版本,则本地节点用来自远程清单的内容对象的值更新本地清单中的内容对象的值。第13/681,306号美国专利申请案中含有如何从数据集合移除或“空出(white-out)”内容项目的描述。
[0041] 在一些实施例中,内容对象的名称为阶层结构可变长度识别符(HSLVI),且指示版本号或时间戳或隐式排序次序,其用于代替清单中的修改时间来确定内容对象的最近版本。
[0042] 在一些实施例中,如果远程内容对象对应于较不新近的版本,则系统可通过将来自远程清单的内容对象的值插入到本地清单中的对应内容对象的历史字段中来确定是否保留历史。系统相应地对于确定为不同的每一内容对象更新所述值。以此方式,系统使本地节点处的清单与远程节点处的清单同步。
[0043] 在一些实施例中,网络客户端、网络节点(例如,例如路由器等转发器)与发布者经由信息中心网络(ICN)进行通信。在ICN中,每一内容段个别地进行命名,且每一数据段绑定到唯一名称,所述唯一名称区别所述数据与任何其它数据段,例如相同数据或来自其它来源的数据的其它版本。此唯一名称允许网络装置通过散布指示所述唯一名称的请求或兴趣来请求数据,且可独立于数据的存储位置、网络位置、应用程序及运送手段而获得数据。命名数据网络(NDN)或内容中心网络(CCN)为ICN架构的实例;以下术语描述NDN或CCN架构的元件:
[0044] 内容对象:单个命名数据段,其绑定到唯一名称。内容对象为“持久性的”,这意味着内容对象可在计算装置内或跨越不同计算装置移动,但不改变。如果内容对象的任何组成部分改变,则造成所述改变的实体创建包含经更新内容的新内容对象,且将所述新内容对象绑定到新的唯一名称。
[0045] 唯一名称:ICN中的名称通常独立于位置且唯一地识别内容对象。数据转发装置可使用名称或名称前缀朝向产生或存储内容对象的网络节点转发数据包,而不顾及所述内容对象的网络地址或物理位置。在一些实施例中,名称可为阶层结构可变长度识别符(HSVLI)。HSVLI可划分成若干阶层组成部分,其可以各种方式结构化。举例来说,个别名称组成部分parc、home、ndn及test.txt可以左向前缀为主方式(left-oriented prefix-major fashion)结构化以形成名称“/parc/home/ndn/test.txt”。因此,名称“/parc/home/ndn”可为“/parc/home/ndn/test.txt”的“母体(parent)”或“前缀”。额外组成部分可用以区分内容项目的不同版本,例如协作文档。
[0046] 在一些实施例中,名称可包含非阶层式识别符,例如从内容对象的数据(例如,检查和值)及/或从内容对象的名称的元素导出的散列值。基于散列的名称的描述描述于第13/847,814号美国专利申请案(标题为“用于基于名称的数据包转发的有序元素命名(ORDERED-ELEMENT NAMING FOR NAME-BASED PACKET FORWARDING)”,发明人为Ignacio Solis,2013年3月20日申请)中。名称还可为平面标记(flat label)。下文中,“名称”用于指名称数据网络中的数据段的任何名称,例如阶层名称或名称前缀、平面名称、固定长度名称、任意长度名称或标记(例如,多协议标记交换(MPLS)标记)。
[0047] 兴趣:数据包,其指示对于数据段的请求,且包含所述数据段的名称(或名称前缀)。数据消费者可跨越信息中心网络散布请求或兴趣,CCN/NDN路由器可朝向可提供所请求数据以满足所述请求或兴趣的存储装置(例如,缓存服务器)或数据产生器传播所述请求或兴趣。
[0048] 在一些实施例中,ICN系统可包含内容中心联网(CCN)架构。然而,本文所揭示的方法也同样适用于其它ICN架构。CCN架构的描述描述于第12/338,175号美国专利申请案(标题为“控制内容中心网络中的兴趣及内容的扩散(CONTROLLING THE SPREAD OF INTERESTS AND CONTENT IN A CONTENT CENTRIC NETWORK)”,发明人为Van L.Jacobson和Diana K.Smetters,于2008年12月18日申请)中。
[0049] 图1说明根据本发明的实施例的促进使清单在内容中心网络(CCN)中的节点之间同步的示范性网络100。网络100可包含客户端装置116、内容产生装置118及在节点102、104、106、108、110、112及114处的路由器或其它转发器。节点102到114可各自含有一或多个清单。举例来说,节点112含有清单120。清单120包括集合名称124及由以下各者中的一或多者识别的内容对象的有序列表:内容对象名称130.1到130.n;摘要132.1到132.n,及修改时间134.1到134.n。摘要132.1到132.n包括分别由名称130.1到130.n识别的内容对象的散列值。摘要可为内容对象的SHA-256散列,其中散列冲突(其中两个不同内容对象的单向散列导致相同值)的可能性足够低,使得摘要为用于内容对象的唯一识别符。清单120还包含根散列122,其为基于集合的个别内容对象的散列值132.1到132.n的累加散列值。根散列122为用于清单120的唯一识别符,且表示集合中的内容对象。
[0050] 在一些实施例中,清单指示名称及对应摘要,但不指示修改时间。此类系统可包含例如文件服务器,其中文本文件的先前版本为重要的且因此由系统保留。在其它实施例中,清单指示名称、对应摘要及修改时间。系统可使用修改时间来确定应保留内容项目的哪些版本。举例来说,如果内容项目指示链接状态,则系统不需要与先前版本有关的信息。在此情况下,仅保留具有最近修改时间的内容对象。
[0051] 网络中的任何两个节点可含有表示相同数据集合的清单,其中可使用本文中所描述的方法使所述清单同步。术语“本地节点”及“远程节点”可应用于内容中心网络(CCN)中的任何节点,且用于本发明中以区分CCN中的两个节点。
[0052] 表示相同数据集合的清单在两个节点之间的同步是基于三部分名称。第一部分为识别所述集合的可路由前缀,例如“/a/b”。第二部分含有相关名称空间的识别,且为用于播发的“/adv”或用于数据传送的“/data”。第三部分为散列值或所播发或传送的内容。因此,CCN名称具有以下形式:
[0053] /collection_prefix/adv_or_data/protocol_data
[0054] 发送散列播发的兴趣的实例为:
[0055] /a/b/adv/
[0056] 接收到此播发且含有具有相同可路由前缀“/a/b”的本地清单的本地节点基于组块协议在信息块0、1...直到结束信息块m中检索所播发的清单。此类兴趣看起来像:
[0057] /a/b/data//
[0058] 基于所检索清单中的条目,系统确定所检索清单中识别的哪些内容对象不同于本地清单中识别的内容对象。系统基于不同内容对象的名称检索所述内容对象:
[0059] /a/b/data/
[0060] 在一些实施例中,系统基于所请求内容对象的散列值检索不同内容对象:
[0061] /a/b/data/
[0062] 在一些实施例中,系统基于清单中的名称检索不同内容对象。此技术允许系统检索对象的任何高速缓存的副本,而非使用在集合的名称空间下的内容的名称。举例来说,为从图6B中的清单140检索第一项目,系统将发送对于名称及摘要的兴趣:
[0063] /chef/events/calendar.txt,摘要={1}
[0064] 图2说明根据本发明的实施例的在节点202(远程节点)与节点206(本地节点)之间的示范性通信200。节点202及节点206各自含有具有相同路由前缀或集合名称“/a/b”的清单。远程节点202发射send_advertisement兴趣220,其为含有由集合名称“/a/b”识别的其清单的根散列值的散列播发。兴趣采用以下形式:“/a/b/adv/”。本地节点206接收所播发的兴趣,且执行check_advertised_collection程序222以基于相同集合前缀(“/a/b”)确定节点206是否含有与所播发清单指示相同集合的清单。接着,本地节点206确定其本地清单的根散列是否不同于远程清单的根散列。不同散列值指示集合需要与彼此同步。本地节点206接着通过发送对于清单的一组兴趣来执行retrieve_manifest程序224。所述组兴趣基于组块协议划分成信息块。所述兴趣在request_manifest_in_chunks消息226中发送且具有以下形式:“/a/b/data//C0”、“/a/b/data//C1”、“/a/b/data//C2”等,其中“C0”表示清单的第一信息块,以此类推。在一些实施例中,播发节点可包含需要传送其清单的信息块的编号。在send_manifest_in_chunks消息228中,远程节点202响应于所述组兴趣而发回所请求的清单。所请求的内容对象采用以下形式:“/a/b/data//C0+有效负载”,其中有效负载含有清单的所请求信息块。
[0065] 拥有远程清单的本地节点206执行determine_set_difference程序230。在一些实施例中,此程序的结果为通过名称识别的内容对象的列表。在其它实施例中,结果为通过其对应摘要识别的内容对象的列表。本地节点206接着对于确定为不同的每一内容对象发射request_set_difference兴趣234。所述兴趣采用以下形式:“/a/b/data/name 130.3”。本地节点206在远程节点202发射send_set_difference内容对象236时接收所请求的内容对象,其中所请求的内容对象采用以下形式:“/a/b/data/name 130.3+有效负载”。因此,本地节点206请求并接收确定为不同的所有内容对象,使得本地清单的内容与远程清单的内容得以同步。在一些实施例中,本地节点206执行下文相对于图4描述的sync_based_on_mod_time程序240。
[0066] 图3呈现根据本发明的实施例的说明用于使与远程清单及本地清单相关联的内容同步的方法的流程图300。在以下描述中,本地节点描绘为图2中的节点106,且远程节点描绘为图2中的节点102。本地节点接收对应于远程节点处的远程清单的播发(操作302)。清单表示节点处的内容对象的集合。本地节点确定远程清单与本地清单指示相同内容对象集合(操作304,对应于图2中的check_advertised_collection程序222)。在一些实施例中,本地节点通过比较清单的集合名称或来确定清单是否指示相同集合。本地节点接着确定其本地清单的根散列值是否不同于远程清单的根散列值(操作306)。清单的根散列值为用于所述清单的唯一识别符,且包括所述清单中表示的内容对象的摘要的累加散列值。如果本地清单的根散列值相同(决策308),则程序返回。
[0067] 如果本地清单的根散列值与远程清单的根散列值不相同(决策308),则此指示表示相同集合的本地清单与远程清单不同步且需要调和。本地节点通过发送对于远程清单的请求及响应于所述请求接收远程清单(操作310,对应于图2中的retrieve_manifest程序224)来下载或传送远程清单。
[0068] 本地节点确定远程清单中识别的哪些内容对象不同于本地清单中识别的内容对象(操作312,对应于图2中的determine_set_difference操作230)。在一些实施例中,本地节点通过比较本地清单中识别的内容对象的摘要与远程清单中识别的相同名称的内容对象的摘要来确定集合差异。本地节点发射对应于所确定的不同内容对象集合的一组兴趣(操作234),且接收返回的所请求内容对象(操作236)。这对应于图2中所示的resolve_set_difference操作232。因此,本地清单的内容与远程清单的内容得以同步。
[0069] 如果本地节点已改变,则本地节点播发新根散列值。其可紧接着进行此操作,或基于网络或其它时点考虑调度下一播发。举例来说,本地系统可至少每秒播发其根散列一次,但不大于每秒四次。因此,在调和期间,由于根散列归因于更新而改变,系统可播发每秒至多四个改变。否则,其可以稳定状态每秒播发一次。
[0070] 图4呈现根据本发明的实施例的说明用于基于修改时间使与远程清单及本地清单相关联的内容同步的方法的流程图400。注意,内容的同步还可基于与内容对象相关联的序号,其中较大序号指示内容对象的较为新近版本。内容的同步还可基于内容对象的名称的排序,其中隐式排序次序指示内容对象的较为新近版本。流程图400说明基于内容对象的修改时间的示例性方法,其描绘为图2中的sync_based_on_mod_time操作240。基于先前确定的集合差异,本地节点接收包含修改时间的所请求内容对象集合,所述修改时间指示修改对应内容对象的时间(操作402)。对于每一内容对象,本地节点确定远程清单中的内容对象的修改时间比本地清单中的对应内容对象更为新近还是较不新近(操作404)。如果来自远程清单的内容对象的修改时间更为新近(决策406),则系统用来自远程清单的内容对象的值更新本地清单中的内容对象的值(操作408)。在一些实施例中,本地节点可通过在更新本地清单中的内容对象的值之前将(较不新近)内容对象的对应值及修改时间插入到本地清单中的历史字段中来确定是否保持本地清单中的其(较不新近)内容对象的值。如果在集合中还存在需要检索的内容对象(决策410),则系统返回到操作404。如果不存在,则系统已完成检索必要的内容对象。
[0071] 如果来自远程清单的内容对象的修改时间不如本地清单中的对应内容对象新近(操作406),则系统通过将(较不新近)内容对象的对应值及修改时间插入到本地清单中的历史字段中(操作414)来确定是否保存来自远程清单的(较不新近)内容对象的值(决策412)。如果在需要检索的集合中还存在内容对象(决策410),则系统返回到操作404。如果没有,则系统已完成检索必要内容对象。因此,确定为不同的所有内容对象已经更新,且可能保留或保存在本地清单的历史字段中,使得本地清单的内容与远程清单的内容同步。
[0072] 图5呈现根据本发明的实施例的说明用于发射对应于清单的播发的方法的流程图500。图5中的节点描述为本地节点,因为其将数据包发射到远程节点。注意,图5中的本地节点对应于图2中的节点202,其在先前已称为远程节点202。须强调,例如内容中心网络(CCN)等网络中的任何节点可称为远程节点或本地节点。
[0073] 本地节点发射对应于清单的播发,其中清单表示节点处的内容对象的集合(操作502,对应于图2中的send_advertisement消息220)。此播发为类似于信标的兴趣,且基于所使用的“/adv”名称空间,不请求返回任何内容。在从远程节点接收到对于清单的请求之后,本地节点即刻将所述清单发射到远程节点(操作504,对应于接收图2中的request_manifest_in_chunks兴趣226及send_manifest_in_chunks消息228)。在从远程节点接收到对于本地清单中识别的内容对象的请求之后,本地节点即刻将所请求的内容对象发射到请求远程节点(操作506,对应于接收图2中的兴趣234及send_set_different消息236)。
[0074] 图6A呈现根据本发明的实施例的描绘集合中所表示的清单120及内容对象的格式的表。清单120包括通过集合名称124及以下各者中的一或多者识别的内容对象的有序列表:内容对象名称130.1到130.n;摘要132.1到132.n;以及一修改时间134.1到134.n。摘要132.1到132.n包括分别由名称130.1到130.n识别的内容对象的散列值。清单120还包含根散列122,其为基于集合的个别内容对象的散列值132.1到132.n的累加散列值。清单120的根散列122为用于清单120的唯一识别符。
[0075] 如关于图1所描述,清单120可指示用于集合中表示的每一内容对象的名称及对应摘要。在一些实施例中,清单120还可包含用于集合中表示的每一内容对象的修改时间。修改时间字段的使用取决于基础应用程序或所执行的服务。注意,清单120指示集合名称124。图6B到6E中所描绘的清单还包含集合名称,但因为示范性清单包括相同数据集合,因此集合名称未包含在图6B到6E中。
[0076] 图6B到6E描绘两个节点,节点102及节点106,其各自含有清单。在此实例中,节点102为远程节点,且节点106为本地节点。本地节点106含有清单160,且远程节点102含有清单140。清单140与160含有相同名称集合或路由前缀,且因此表示相同内容对象或数据的集合。时间由标记T1、T2等指示,且相对于这些时间标记描绘清单140及160的内容。
[0077] 须强调,清单由在图6A中说明为根散列122的根散列值进一步识别,其为基于集合的个别内容对象的摘要的累加散列值。在以下实例中,根散列值及摘要指示为括号中的数目,例如“{999}”,但数目可远大于此。此外,仅将随时间推移而改变的内容对象的摘要以及清单140和清单160的范例根散列值描绘为表示累加散列值的样本。
[0078] 图6B呈现根据本发明的实施例的描绘在同步期间的两个清单的格式的表,其中本地清单缺少来自远程清单的内容对象。在时间T1,本地节点106从远程节点102接收具有根散列值{999}的清单140的散列播发。本地节点106确定其清单160与远程清单140表示相同数据集合,且检索清单140。本地节点106确定具有根散列值{60}的本地清单160与具有根散列值{999}的远程清单140不同步。本地节点106接着确定其本地清单160与远程清单140之间的集合差异。在此实例中,清单160缺少由名称“/fruit/lychee/peel”识别的内容对象,因此本地节点106通过那一名称将对于内容对象的兴趣发送到远程节点102。远程节点102返回所请求的内容对象。在时间T2,本地节点106用缺少的内容对象更新其清单160。基于时间T2处的清单160的内容,系统产生用于清单160的新根散列值,其现在等于远程清单的根散列值。此由时间T2处的清单160的根散列值{60}→{999}描绘。因此,本地清单与远程清单已使其集合同步,且两者含有相同根散列值{999}。
[0079] 图6C呈现根据本发明的实施例的描绘在同步期间的两个清单的格式,其中本地清单中的相同名称内容对象的摘要不同于远程清单中的摘要,且其中远程节点发送播发且本地节点检索远程清单。在时间T3,本地节点106从远程节点102接收具有根散列值{999}的清单140的散列播发。本地节点106确定其清单160与远程清单140表示相同数据集合,且检索清单140。本地节点106确定具有根散列值{53}的本地清单160与具有根散列值{999}的远程清单140不同步。本地节点106接着确定其本地清单160与远程清单140之间的集合差异。在此实例中,清单160缺少由具有摘要{279}的名称“/fruit/lychee/peel”识别的内容对象,因此本地节点106基于那一名称及摘要将对于内容对象的兴趣发送到远程节点102。远程节点102返回所请求的内容对象。在时间T4.a,本地节点106用缺少的内容对象更新其清单160。基于时间T4.a处的清单160的内容,系统产生用于清单160的新根散列值。此由时间T4.a处的清单160的根散列值{53}→{772}描绘。然而,具有其初始根散列值{999}的清单
140现在与具有新根散列值{772}的清单160不同步。
[0080] 随后,远程节点102从本地节点106接收具有新根散列值{772}的清单160的散列播发。远程节点102确定其清单140与清单160表示相同数据集合,且检索清单160。远程节点102确定具有根散列值{999}的那一清单140与具有根散列值{772}的清单160不同步。远程节点102接着确定其清单140与清单160之间的集合差异。在此实例中,清单140缺少由具有摘要{41}的名称“/fruit/lychee/peel”识别的内容对象,因此,远程节点102基于那一名称及摘要将对于内容对象的兴趣发送到本地节点106。本地节点106返回所请求的内容对象。
在时间T5.a,远程节点102用缺少的内容对象更新其清单140。基于时间T5.a处的清单140的内容,系统产生用于清单140的新根散列值。此由时间T5.a处的清单140的根散列值{999}→{772}描绘。因此,在时间T5.a,节点102处的清单140与节点106处的清单160同步。节点102及106已使其集合同步,且两者含有相同根散列值{772}。
[0081] 图6D呈现根据本发明的实施例的描绘在同步期间的两个清单的格式,其中本地清单中的相同名称内容对象的摘要不同于远程清单中的摘要,且其中本地节点发送播发且远程节点检索本地清单。在时间T3,远程节点102从本地节点106接收具有根散列值{53}的清单160的散列播发。远程节点102确定其清单140与清单160表示相同数据集合,且检索清单160。远程节点102确定具有根散列值{999}的其清单140与具有根散列值{53}的清单160不同步。远程节点102接着确定其清单140与清单160之间的集合差异。在此实例中,清单140缺少由具有摘要{41}的名称“/fruit/lychee/peel”识别的内容对象,因此,远程节点102基于那一名称及摘要将对于内容对象的兴趣发送到本地节点106。本地节点106返回所请求的内容对象。在时间T4.b,远程节点102用缺少的内容对象更新其清单140。基于时间T4.b处的清单140的内容,系统产生用于清单140的新根散列值。此由时间T4.b处的清单140的根散列值{999}→{772}描绘。然而,具有其初始根散列值{53}的清单160现在与具有新根散列值{772}的清单140不同步。
[0082] 随后,本地节点106从远程节点102接收具有新根散列值{772}的清单140的散列播发。本地节点106确定其清单160与清单140表示相同数据集合,且检索清单140。本地节点106确定具有根散列值{53}的其清单160与具有根散列值{772}的清单140不同步。本地节点
106接着确定其本地清单160与远程清单140之间的集合差异。在此实例中,清单160缺少由具有摘要{41}的名称“/fruit/lychee/peel”识别的内容对象,因此,本地节点106基于那一名称及摘要将对于内容对象的兴趣发送到远程节点102。远程节点102返回所请求的内容对象。在时间T5.b,本地节点106用缺少的内容对象更新其清单160。基于时间T5.b处的清单
160的内容,系统产生用于清单160的新根散列值。此由时间T5.b处的清单160的根散列值{53}→{772}描绘。因此,在时间T5.b,节点102处的清单140与节点106处的清单160同步。节点102及106已使其集合同步,且两者含有相同根散列值{772}。
[0083] 图6C及6D说明任何节点可为远程或本地节点,且发送或接收与清单相关联的确定为不同的散列播发、清单及内容对象的次序可取决于给出时间的集合中的内容(例如,清单140及160在时间[T3,T4.a,T5.a]及时间[T3,T4.b,T5.b]的内容)而不同。即,使用本发明中所描述的方法,任何节点可发送或接收散列播发、传送清单且使节点处的清单的内容同步,由此导致两个节点处的数据集合的同步。
[0084] 图6E呈现根据本发明的实施例的描绘在同步期间的两个清单的格式的表,其中本地清单中的相同名称的内容对象的摘要及修改时间不同于远程清单中的摘要。
[0085] 在时间T6,本地节点106从远程节点102接收具有根散列值{999}的清单140的散列播发。本地节点106确定其清单160与远程清单140表示相同数据集合,且检索清单140。本地节点106确定具有根散列值{80}的本地清单160与具有根散列值{999}的远程清单140不同步。本地节点106接着确定其本地清单160与远程清单140之间的集合差异。在此实例中,清单140及清单160两者都指示对应于其集合中表示的每一内容对象的修改时间134。系统确定清单140及清单160中具有相同名称的内容对象具有不同摘要及不同修改时间。注意,修改时间可包含与修改对应内容对象的秒、分钟、小时、天、月及年有关的信息。为简单起见,图6E中的示范性清单仅含有天的时间。清单140含有由具有摘要{1}及修改时间8:05am的名称“/chef/events/calendar.txt”识别的内容对象。清单160含有由具有不同摘要{320}及不同修改时间7:30am的相同名称识别的内容对象。本地节点106接着基于不同内容对象的名称及摘要将对于内容对象的兴趣发送到远程节点102。远程节点102返回所请求的内容对象。
[0086] 本地节点确定来自远程清单140的具有修改时间8:05am的内容对象比来自其本地清单160的具有修改时间7:30am的内容对象更为新近。因此,在时间T7,本地节点106用不同且较为新近的内容对象更新其清单160。基于时间T7的清单160的内容,系统产生用于清单160的新根散列值。此由时间T7处的清单160的根散列值{80}→{999}描绘。因此,在时间T7,本地节点106处的清单160与远程节点106处的清单140同步。节点102及106已使其集合同步,且两者含有相同根散列值{999}。
[0087] 在一些实施例中,系统将已改变内容对象的先前版本(例如,由具有摘要{320}及修改时间7:30am的名称“/chef/events/calendar.txt”识别的内容对象)保留在清单160的历史字段中。在其它实施例中,当远程节点102从本地节点106接收到具有根散列{80}的清单160的散列播发且下载本地清单160时,远程节点102确定由具有摘要{320}及修改时间7:30am的名称“/chef/events/calendar.txt”识别的所接收内容对象的版本不如其自身的清单中的版本新近。在此情况下,远程节点102处的清单140保持与本地节点106处的清单160不同步。清单将在稍后时间在本地节点106从远程节点102接收到含有最近经更新内容对象的清单140的散列播发时经历同步,如上文所描述。
[0088] 在一些实施例中,系统促进由内容中心网络(CCN)中的装置提供的装置及服务的发现。CCN名称空间按服务类型划分,例如打印机、文件服务器,或音乐库。特定类型的装置在那些名称空间内执行本发明中描述的同步协议。举例来说,用于此类服务的集合前缀可呈以下形式:
[0089] /parc/services/printers/...
[0090] /parc/services/servers/...
[0091] /parc/services/music/...
[0092] 在此类服务发现系统中,节点处的装置(例如,名称为“/parc/marvin”的打印机)启动而具有空的清单。装置创建自身的服务记录,其为具有名称“parc/marvin/service”的内容对象。在一些实施例中,此服务记录具有JavaScript对象记法(JSON)格式,且可包括以下字段中的一或多者:服务记录的名称;服务的描述;指示服务记录的版本的序列号;以秒计的存留时间(TTL),使得如果未由播发服务的装置周期性地更新,则服务记录到期;以及用于服务记录的摘要,其为服务记录的散列值。因为服务记录的大小相对较小,因此在一些实施例中,服务记录可包含为兴趣中的有效负载。此外,具有较高序列号的服务记录指示更为新近的服务记录,且用较低序列号替换记录。较旧的服务记录不保留在清单中。
[0093] 装置创建含有装置的服务记录及服务记录的对应散列值的清单。系统产生根散列值,其为基于集合中的内容对象的摘要的累加散列值。装置的清单的根散列值最初是基于清单中指示的一个服务记录。装置接着发送具有形式“/parc/services/printers/adv/query”的查询播发以使得其可执行以下操作:检索相同服务名称空间(“parc/services/printers”)中的其它装置的清单;确定集合差异;以及解析集合差异。以此方式,此节点处的装置使其清单与其它节点处的其它装置的清单同步。
[0094] 在一些实施例中,服务记录基于服务记录的TTL字段中指示的时间而设定为到期。在此到期时间之前的某一时间,装置可创建序列号依次变大的新服务记录并替换先前服务记录。第13/681,306号美国专利申请案中含有如何从数据集合移除或“空出”内容项目的描述。系统基于新服务记录产生用于与装置相关联的清单的新根散列值。装置接着使用新产生的根散列值播发具有新服务记录的其经更新清单,且上述过程重复。此外,在服务记录到期之后,例如TTL已过去,所有装置即刻从其清单移除到期的服务记录,且产生没有到期的服务记录的新散列播发。
[0095] 在一些实施例中,当装置关闭时,其可创建具有设定为0的TTL及较大序列号的新服务记录。装置可基于此经更新服务记录播发其清单,且将自身设定为在发送播发之后即刻到期,使得接收播发的其它装置基于所述较高序列号而了解此清单包含最近服务记录。
[0096] 在一些实施例中,所播发兴趣可含有有效负载,其包括形式为“/parc/services/printers/adv//”的全部的服务记录。
[0097] 图7说明根据本发明的实施例的基于清单在内容中心网络中的装置之间的同步促进服务发现的示范性网络700。网络700可包含客户端装置716、内容产生装置718及在节点702、704、706、708、710、712及714处的路由器或其它装置(例如打印机)。节点702到714可各自含有一或多个清单。举例来说,节点712含有清单720。清单720包括前缀或名称空间724及由以下各者中的一或多者识别的服务记录的有序列表:服务记录名称730.1到730.n;序列号732.1到732.n;存留时间(TTL)734.1到734.n;以及摘要736.1到736.n。摘要736.1到
736.n包括分别由名称730.1到730.n识别的服务记录的散列值。摘要可为服务记录的SHA-
256散列,其中散列冲突(其中两个不同内容对象的单向散列导致相同值)的可能性足够低,使得摘要为用于服务记录的唯一识别符。清单720还包含根散列722,其为基于集合的个别服务记录的散列值736.1到736.n的累加散列值。根散列722为用于清单720的唯一识别符,且表示集合中的服务记录。
[0098] 装置可存在于网络上的任何节点处,其中每一装置携载表示服务记录的集合的清单。任何两个装置可携带表示相同数据集合(例如用于相同名称空间的服务记录)的清单,其中所述清单可使用本文中所描述的方法而同步。术语“本地节点”及“远程节点”可应用于内容中心网络(CCN)中的任何节点,且用于本发明中以区分CCN中的两个节点。类似地,术语“本地装置”及“远程装置”可应用于CCN中的任何节点处的装置,且出于示范性目的而用于本发明中。
[0099] 在一些实施例中,兴趣可含有包含其对应摘要的一个服务记录作为有效负载。任何节点或CCN中的节点处的装置(例如,装置716、装置718及节点702到714)可发送或接收兴趣,所述兴趣为含有发送装置的清单的根散列值及对应于发送装置的服务记录两者的播发。此外,任何节点或装置可发送或接收兴趣,所述兴趣为用于此类播发的查询或请求,例如含有发送装置的清单的根散列值及包含为有效负载的发送装置的服务记录两者的播发。
[0100] 图8说明根据本发明的实施例的在装置702(远程装置“Larry”)与装置706(本地装置“Nancy”)之间的示范性通信800。装置702及装置706各自含有具有相同路由前缀或名称空间“/p/prn/”的清单。假定远程装置702已经初始化到网络上且含有至少包括其自身的服务记录“L-SR”的清单(“L”)。本地装置706在initialize_device程序820中初始化。本地装置706创建自身的服务记录“N-SR”,且接着创建自身的包括其自身的服务记录的本地清单(“N”)。本地装置还产生用于其自身的清单的根散列值“”。本地装置706将具有形式“/p/prn/adv/query”的send_query_for_advertisement兴趣822发射到远程装置702。注意,网络上的任何装置可接收含有对播发的查询的此兴趣。本地装置706还通过发射send_advertisement兴趣824来播发其自身的清单及服务记录。此播发为含有其清单“N”的根散列值且含有本地装置的服务记录作为有效负载的散列播发“p/prn/adv//”。Send_advertisement 824(以虚线描绘)可由本地装置706重复发射,且因此仅在初始化之后才不出现。节点或装置可使用流言协议来避免因多次重复而使片段溢流。举例来说,节点可选取随机退让,其中第一节点播发其根散列,且具有相同根散列的第二节点也播发其根散列。具有相同根散列的第三或后续节点可抑制发送其根散列。
[0101] 本地装置706可接收receive_advertisement兴趣826,其在格式上类似于兴趣824,且含有远程装置的清单的根散列及作为有效负载的远程装置的服务记录“/p/prn/adv//”两者。本地装置执行update_manifest程序828。
本地装置706基于相同集合前缀或名称空间(“/p/prn/”)确定其清单是否与播发兴趣的清单指示相同名称空间。如果所包含的服务记录比本地装置702已经具有的服务记录更为新近,则本地装置706通过将包含在兴趣826中作为有效负载的所播发服务记录插入到其本地清单中来更新其本地清单。本地装置706接着产生用于其本地清单的新根散列值。如果新根散列值等于来自兴趣826的所播发兴趣的根散列值,则本地装置706与远程装置702的清单中的服务记录集合同步。因此,因为兴趣含有远程装置的服务记录作为有效负载,因此远程与本地清单得以同步,而不需要跨越网络传送清单。
[0102] 如果本地装置706的新根散列值不等于所播发兴趣826的根散列值,则本地装置706使用相对于图1到6所描述的方法执行集合调和。本地装置706通过发送request_remote_manifest兴趣842(具有形式“/p/prn/data/”)及接收receive_remote_manifest消息844(具有形式“/p/prn/data/”)而执行retrieve_manifest程序840。本地装置706执行determine_set_difference程序846以确定远程清单中表示的哪些服务记录不同于其本地清单中表示的服务记录。本地装置706通过发送request_set_difference兴趣850(具有形式“/p/prn/data/name730.3>”)及接收receive_set_difference消息852(具有形式“/p/prn/data/name 730.3+有效负载”)而执行resolve_set_difference程序848。
[0103] 图9A呈现根据本发明的实施例的说明用于基于使网络中的两个装置的清单同步而促进服务发现的方法的流程图900。本地装置初始化到网络上(操作902)。本地装置创建自身的服务记录,包括服务记录的名称、序列号、存留时间(TTL)及摘要(操作904)。本地装置创建包括本地装置的服务记录的本地清单(操作906),且基于所述清单中含有的服务记录的摘要产生用于本地清单的根散列值(操作908)。本地装置发送查询播发以检索相同名称空间中的其它装置的清单的根散列值(操作910)。本地装置发射对应于其本地清单的播发,其中所述播发含有所述本地清单的根散列值且携载本地业务记录作为有效负载(操作912)。本地装置接收对应于远程清单的播发,且播发含有远程清单的根散列值且携载远端服务记录作为有效负载(操作914)。
[0104] 本地装置确定其本地清单与远程清单对应于相同名称空间(操作916)。在一些实施例中,本地装置确定本地清单是否含有具有与所播发服务记录的名称相同的名称的服务记录(操作918)。如果本地清单不含有此类服务记录(决策920),则本地装置通过将来自有效负载的所播发服务记录插入到本地清单中来更新本地清单(操作926)。如果本地清单含有此类服务记录(决策920),则本地装置确定所播发服务记录的序列号是否大于本地清单中相同名称的服务记录的序列号(操作922)。如果其不大于(决策924),则方法返回,因为本地装置中含有的版本更为新近。
[0105] 如果所播发服务记录的序列号大于本地清单中相同名称的服务记录的序列号(决策924),则本地装置更新本地业务记录,以使得当前序列号大于网络当前已知的序列号(操作926)。在一些实施例中,如果装置重启且丢失其存储器,使得其序列号初始化为小于故障之前其最近播发的序列号,则此状况可存在。本地装置接着通过将经更新服务记录插入到本地清单中来更新本地清单(操作927)。第13/681,306号美国专利申请案中含有如何从数据集合移除或“空出”内容项目的描述。
[0106] 图9B提供说明图9A的流程图900中所描绘的方法的接续的流程图950。在更新其本地清单(操作926)之后,本地装置产生用于本地清单的新根散列值(操作928)。本地装置确定所述新根散列值是否不同于所播发兴趣中所包含的远程清单的根散列值(操作930)。如果散列值并无不同(决策932),则方法返回,因为远程清单与本地清单同步。如果散列值不同(决策932),则本地装置执行上文关于图1到6所描述的集合调和及清单传送。本地装置发送对于远程清单的请求且基于所播发兴趣的根散列值接收远程清单(操作934)。本地装置确定远程清单中表示的哪些服务记录不同于本地清单中表示的服务记录(操作936)。响应于确定差异,本地装置发射对于不同的服务记录的一组兴趣(操作938),且接收所请求服务记录集合(操作940)。
[0107] 图10A呈现根据本发明的实施例的描绘集合中表示的清单720及服务记录的格式的表。清单720包括前缀或名称空间724及通过以下各者中的一或多者识别的服务记录的有序列表:服务记录名称730.1到730.n;序列号732.1到732.n;存留时间(TTL)734.1到734.n;以及摘要736.1到736.n。摘要736.1到736.n包括分别由名称730.1到730.n识别的内容对象的散列值。摘要可为内容对象的SHA-256散列,其中散列冲突(其中两个不同内容对象的单向散列导致相同值)的可能性足够低,使得摘要为用于内容对象的唯一识别符。清单720还包含根散列722,其为基于集合的个别内容对象的散列值736.1到736.n的累加散列值。根散列722为用于清单720的唯一识别符,且表示集合中的服务记录。在以下实例中,根散列值及摘要指示为括号中的数目,例如“{222}”,但数目可远大于此。此外,仅将随时间推移而改变的服务记录的摘要以及图10B到10D中的清单740、760及780的范例根散列值描绘为累加散列值的样本表示。
[0108] 图10B呈现根据本发明的实施例的描绘在使用同步协议的服务发现期间的两个清单的格式的表,其中本地装置不需要检索远程清单。在时间T1,名称为“/parc/larry”(“Larry”)的打印机在节点702处操作,且名称为“/parc/”(“Marvin”)的打印机在节点704处操作。打印机Larry及Marvin两者都属于名称空间“/parc/services/printer”,且因此各自含有需要与相同名称空间中的所有其它清单同步的清单。与名称为Larry的打印机或装置相关联的清单740含有对应于装置Larry的一个服务记录。对应于Larry的服务记录由名称“L-SR”、序列号1及对应摘要{22}表示。清单170的根散列值为{222}。与名称为Marvin的打印机或装置相关联的清单780含有对应于装置Marvin的一个服务记录。对应于Marvin的服务记录由名称“M-SR”、序列号7及对应摘要{11}表示。清单780的根散列值为{111}。
[0109] 在操作期间,在时间T1,Larry发送具有形式“/parc/services/printer/adv//”的播发。Marvin接收此播发,且确定其清单780缺少包含为播发中的有效负载的服务记录“L-SR”。在时间T2,Marvin将服务记录“L-SR”插入到其清单780中,且基于在清单中指示的现有服务记录(“M-SR”及“L-SR”)的散列值而产生用于清单780的新根散列值。此由{111}→{33}描绘。
[0110] 在时间T2,具有新根散列{33}的清单780与具有根散列{222}的所播发清单740不同步。Marvin发送具有形式“/parc/services/printer/adv//”的播发。Larry接收此播发,且确定其清单740缺少包含为播发中的有效负载的服务记录“M-SR”。在时间T3,Larry将其服务记录“M-SR”插入到其清单740中,且接着基于在清单740中指示的现有服务记录(“L-SR”及“M-SR”)的散列值而产生用于清单740的新根散列值。此由{222}→{33}描绘。以此方式,节点702与704处的装置Larry与Marvin已使其相应清单740及780与彼此同步,而无需任一装置从另一装置下载完整清单。
[0111] 图10C呈现根据本发明的实施例的描绘在使用同步协议的服务发现期间的两个清单的格式的表,其中本地装置从远程装置接收经更新服务记录。在时间T4,清单740与780与彼此同步且两者都含有根散列{33}。在时间T5,Larry更新其自身的服务记录“L-SR”且指派序列号2及新摘要{72}。Larry基于清单740中指示的现有服务记录(“L-SR”(经更新)及“M-SR”)的散列值产生用于清单740的新根散列值。此由{33}→{105}描绘。Larry发送具有形式“/parc/services/printer/adv//”的播发。Marvin接收此播发及Larry的具有摘要{72}的经更新服务记录,且确定其清单780含有具有小于包含在播发中的服务记录的序列号(“2”)的序列号(“1”)的“L-SR”版本。在时间T6,Marvin通过用具有序列号2及摘要{72}的清单740的所播发服务记录更新清单780中的具有名称“L-SR”及序列号1的服务记录来更新清单780。Marvin产生用于清单780的新根散列值,其由{33}→{105}描绘。因此,节点702与704处的装置Larry与Marvin已使其相应清单与彼此同步,而无需任一装置从另一装置下载完整清单。
[0112] 图10D呈现根据本发明的实施例的描绘在使用同步协议的服务发现期间的两个清单的格式的表,其中本地装置初始化、执行服务发现且检索远程清单。
[0113] 在图10C中所示的时间T6,名称为Larry及Marvin的装置在节点702及704处以相应清单740及780操作。清单740与780同步且各自含有:Larry的服务记录(“L-SR”),具有序列号2及摘要{72};以及Marvin的服务记录(“M-SR”),具有序列号7及摘要{11}。清单740及780的根散列为{105}。
[0114] 在图10D中所示的时间T7,装置Larry在节点702处以清单740操作,清单740含有两个服务记录:用于Larry的服务记录,具有名称“L-SR”、序列号2及摘要{72};以及用于Marvin的服务记录,具有名称“M-SR”、序列号7及摘要{11}。清单740的根散列值为{105}。注意,在时间T7,用于Marvin的清单(图10D中未展示)与Larry的清单740同步。在时间T7,具有名称“/parc/nancy”(“Nancy”)的打印机启动且在节点706处操作。装置Nancy与Larry及Marvin属于相同名称空间:“parc/services/printers”。Nancy创建自身的服务记录,其为具有名称“N-SR”、序列号1及对应摘要{65}的服务记录。Nancy创建含有新产生的服务记录的清单760,且产生用于所述清单的根散列值{165}。Nancy接着将播发查询以形式“/parc/services/printers/adv/query”发送到用于名称空间“parc/services/printers”的网络。Nancy从Larry接收形式为“/parc/printers/adv//”的播发。Nancy接收此播发,且确定其清单760缺少包含为所播发散列中的有效负载的服务记录“L-SR”。在时间T8,Nancy将服务记录“L-SR”插入到其清单760中,且基于清单中指示的现有服务记录(“N-SR”及“L-SR”)的散列值产生用于清单760的新根散列值。此由{165}→{200}描绘。Nancy确定其清单190的根散列{200}与所播发兴趣的根散列{105}不相同,因此Nancy使用本文中所描述的方法执行完整集合调和。
[0115] Nancy通过基于组块协议发送形式为“parc/services/printers/data//S0”、“parc/services/printers/data//S1”、“parc/services/printers/data//S2”等的一组兴趣而以根散列值{105}检索清单,且接着接收形式为“parc/services/printers/data//S0+有效负载”等的所请求内容对象。Nancy接着确定不同的服务记录,且发射对于确定为不同的服务记录的一组兴趣。在此实例中,Nancy确定缺少的服务记录为对应于Marvin的标题为“M-SR”的具有序列号7及对应摘要{11}的服务记录。Nancy发射形式为“/parc/services/printers/data/M-SR”的兴趣,且接收形式为“/parc/services/printers/data/”的所返回内容对象。在时间T9,Nancy将服务记录“M-SR”插入到其清单760中,且基于清单中指示的现有服务记录(“L-SR”、“M-SR”及“N-SR”)的散列值产生用于清单760的新根散列值。此由{200}→{420}描绘。然而,装置Nancy的具有根散列{420}的清单760与Larry的具有根散列{105}的清单740(及可能的其它清单,例如Marvin的清单780,描绘于图10C中时间T6处)不同步。Nancy接着发送形式为“/parc/services/printers/adv//”的播发,且Larry(以及Marvin和网络上的其它装置)接收此播发并用Nancy的包含为此播发中的有效负载的服务记录(“N-SR”)更新其相应清单。在时间T10,Larry将Nancy的具有摘要{65}的服务记录N-SR插入到清单740中,且产生相同的新根散列值{420}。此由{105}→{420}描绘。注意,Marvin还可将具有摘要{65}的N-SR插入到清单780中,且还可产生相同的新根散列值{420}。因此,节点706处的新装置Nancy与节点702及704处的现有装置Larry及Marvin已通过使用含有服务记录的播发(其避免了传送清单的需要)且还通过基于相对于图1到6描述的清单传送使用集合同步协议而使其清单与彼此同步。
[0116] 图11说明根据本发明的实施例的基于清单在内容中心网络中的装置之间的同步而促进服务发现的示范性计算机及通信系统。计算机及通信系统1102包含处理器1104、存储器1106,及存储装置1108。存储器1106可包含充当管理存储器的易失性存储器(例如,RAM),且可用以存储一或多个存储器池。此外,计算机及通信系统1102可耦合到显示装置1110、键盘1112,及指向装置1114。存储装置1108可存储操作系统1116、内容处理系统1118,及数据1132。
[0117] 内容处理系统1118可包含指令,所述指令在由计算机及通信系统1102执行时可致使计算机及通信系统1102执行本发明中描述的方法及/或过程。具体来说,内容处理系统1118可包含用于接收对应于远程节点的远程清单的播发的指令,其中所述播发包含对应于远程装置的服务记录(播发机构1122)。内容处理系统1118还可包含用于发射对应于本地装置的本地清单的播发的指令,其中所述播发包含对应于本地装置的服务记录(播发机构
1122)。内容处理系统1118还可包含用于发射对应于经更新本地清单的播发的指令,其中所述清单已基于在清单中的服务记录的存留时间(TTL)出现之后即刻删除的服务记录加以更新(播发机构1122)。
[0118] 内容处理系统1118还可包含用于响应于确定本地清单与远程清单对应于相同名称空间而通过将远程清单的所播发服务记录插入到本地清单中来更新本地装置的本地清单的指令(清单更新机构1124)。内容处理系统1118可包含用于响应于确定来自远程装置的所播发服务记录的序列号大于本地清单中的相同名称的服务记录的序列号而用来自远程装置的所播发服务记录的值更新本地清单中的服务记录的值(清单更新机构1124)。内容处理系统1118可包含用于通过响应于本地清单中的服务记录的存留时间(TTL)的出现而删除来自本地清单的服务记录来更新本地清单的指令(清单更新机构1124)。
[0119] 内容处理系统1118可进一步包含用于发射对于对应于远程装置的远程清单的播发的查询及用于从远程装置接收对于对应于本地清单的播发的查询的指令,其中所述播发包含对应于装置的服务记录(查询机构1126)。
[0120] 内容处理系统1118还可包含用于以下操作的指令(初始化机构1128):通过本地装置初始化到网络上;产生对应于本地装置的服务记录;以及产生用于本地装置的包括服务记录的清单。
[0121] 内容处理系统1118可包含用于发送对于远程清单的请求、接收远程清单、发送对于与远程清单相关联的内容对象或服务记录的请求及接收与远程清单相关联的所请求内容对象或服务记录的指令(通信机构1120)。内容处理系统718还可包含用于基于组块协议发送一组兴趣以检索远程清单,使得每一兴趣对应于清单的经编号信息块的指令(通信机构1120)。内容处理系统1118可包含用于发射对应于清单的播发、响应于接收到对于清单的请求而将所述清单发射到远程节点、将与所述清单相关联的所请求内容对象或服务记录发射到远程节点及基于组块协议接收一组兴趣使得每一兴趣对应于清单的经编号信息块的指令(通信机构1120)。
[0122] 内容处理系统1118可进一步包含用于基于所接收远程清单确定远程清单中表示的哪些服务记录不同于本地清单中表示的服务记录的指令(确定差异机构1130)。
[0123] 数据1132可包含需要作为输入或经产生而作为输出(通过本发明中描述的方法及/或过程)的任何数据。具体来说,数据1132可至少存储:清单,其表示服务记录的集合;服务记录;服务记录的名称;服务的描述;序列号;以秒为单位的存留时间(TTL);服务记录的对应摘要;清单的根散列值,其为基于由清单表示的服务记录的摘要的累加散列值;清单的名称空间或路由前缀,其识别所述清单;用以确定数据包对应于数据播发的识别符;用以确定数据包对应于数据传送的识别符;基于组块协议的对应于清单的经编号信息块的编号。
[0124] 此具体实施方式中所描述的数据结构及代码通常存储在计算机可读存储媒体上,所述计算机可读存储媒体可以是能存储由计算机系统使用的代码及/或数据的任何装置或媒体。计算机可读存储媒体包含但不限于易失性存储器、非易失性存储器、磁性以及光学存储装置,例如磁盘驱动器、磁带、CD(压缩光盘)、DVD(数字通用光盘或数字视频光盘)或能够存储目前已知或稍后开发的计算机可读媒体的其它媒体。
[0125] 在具体实施方式部分中所描述的方法和过程可以编码及/或数据形式实施,所述编码及/或数据可以存储于如上文所描述的计算机可读存储媒体中。当计算机系统读取并且执行存储于计算机可读存储媒体上的编码及/或数据时,计算机系统执行以数据结构以及编码形式实施且存储在计算机可读存储媒体内的方法及程序。
[0126] 此外,上文描述的方法及过程可以包含在硬件模块或设备中。所述硬件模块或设备可包含但不限于专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)、在特定时间执行特定软件模块或一段代码的专用处理器或共享处理器及现在已知或稍后开发的其它可编程逻辑装置。当激活硬件模块或设备时,这些硬件模块或设备执行其内部所包含的方法及过程。