首页> 中国专利> 以信息为中心的网络中的基于名称的邻居发现和多跳服务发现

以信息为中心的网络中的基于名称的邻居发现和多跳服务发现

摘要

内容路由器包括多个到以信息为中心的网络中的其它节点的物理链路;耦合到所述多个物理链路的接收器,用于接收消息;耦合到所述多个物理链路的发射器,用于发送消息,以及含有耦合到所述接收器和所述发射器的处理器和存储设备的服务发布和发现(SPD)模块,其中所述SPD用于存储所述物理链路的状态更新,所述SPD用于基于接收消息的基于名称的服务发现协议名称中的前缀确定下一跳和转发接收消息的跳数。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-07-21

    授权

    授权

  • 2015-01-14

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20130422

    实质审查的生效

  • 2014-12-24

    公开

    公开

说明书

相关申请案交叉申请

本发明要求2012年10月23日由Xinwen Zhang等人提交的发明名称为 “以信息为中心的网络中的基于名称的邻居发现和多跳服务发现 (Name-Based Neighbor Discovery and Multi-Hop Service Discovery in  Information-Centric Network)”的第13/658299号美国非临时专利申请案的 在先申请优先权,该申请案要求2012年4月20日递交的发明名称为“用于 内容导向网络架构中的基于内容的邻居发现和多跳服务发现的方法(A  Method for Name-Based Neighbor Discovery and Multi-Hop Service Discovery  in Content-Oriented Network Architecture)”的第61/636430号美国临时申请 案的在先申请优先权,这两个在先申请的内容均以引入的方式并入本文本中, 如全文再现一般。

关于联邦赞助的研究或开发的声明

不适用。

参考缩微胶片附录

不适用。

背景技术

在以内容为中心的网络(CCN)或命名数据网络(NDN)等以信息为中 心的网络(Information-Centric Network,ICN)中,(本文中统称为ICN), 内容路由器负责将用户请求和内容路由给合适的接收者。在ICN中,作为内 容分发框架的一部分的每个实体都分配有域范围内唯一的名称。这些实体可 以包括视频片段或网页等数据内容和/或路由器、交换机或服务器等基础设施 元件。内容路由器会使用名称前缀在内容网络中对内容报文进行路由,这些 名称前缀可以是完整的内容名称或合适的内容名称前缀,而不是网络地址。 在ICN中,包括发布、请求、管理(例如,修改、删除等)的内容分发可能 基于内容名称,而非内容位置。ICN不同于传统互联网协议(IP)网络的一 个方面在于,ICN能够将多个地理点互连,并暂时缓存内容或更为持久地存 储内容。这可以实现从网络而非原始服务器提供内容,因此可以显著提升用 户体验。缓存/存储可以用于由用户提取的实时数据,或用于属于用户或第三 方供应商等内容供应商的持久数据。

考虑一下ICN中服务发现的问题。最好具有基于名称的服务发现方案, 而不是零配置网络(Zeroconf)中所描述的建于IP之上的基于地址的服务发 现。可在www.zeroconf.org查看Zeroconf的副本,其以引入的方式并入本文 本中,如全文再现一般。出于此目的,提出了排阻过滤器(EF)机制,该机 制在CCNx中实施;在CCNx中,发现的服务名称包含在带有相同名称前缀 的重复发现兴趣消息的排阻过滤器中,并且该过滤器中带有该服务名称的返 回的数据消息将被排除在外,所以如果存在新服务名称,每轮最多只能发现 一个新服务名称。(可在 conferences.sigcomm.org/sigcomm/2011/papers/icn/p68.pdf查看关于EF机制的 更多信息,该文档以引入的方式并入本文本中,如全文再现一般。)然而, 该EF机制可能效率不高,因为单个发现会话需要交换多轮兴趣数据消息, 这取决于待排除的服务名称的数目,并且对于终端用户而言可能很难决定何 时应当结束发现协议,因为待发现的服务名称的数目未知。

发明内容

在一项实施例中,本发明包括一种内容路由器,所述内容路由器包括多 条到以信息为中心的网络中的其它节点的物理链路;耦合到所述多条物理链 路的接收器,用于接收消息;耦合到所述多条物理链路的发射器,用于发送 消息,以及含有耦合到所述接收器和所述发射器的处理器和存储设备的服务 发布和发现(SPD)模块,其中所述SPD用于存储所述物理链路的状态更新, 所述SPD用于基于接收消息的基于名称的服务发现协议名称中的前缀确定 下一跳和转发接收消息的跳数。

在另一项实施例中,本发明包括一种网络节点,所述网络节点包括多个 接口,用于接收来自以信息为中心的网络中的多个远程节点的兴趣消息和数 据消息并将兴趣消息和数据消息发送到以信息为中心的网络中的多个远程节 点;包含耦合到所述接口的处理器的链路管理器(LM),其中所述LM用于 监控所述接口;以及含有处理器并耦合到所述接口和所述LM的本地服务发 布和发现(SPD)模块,其中所述本地SPD模块用于聚合本地节点上的服务 发布的服务简档和从所述远程节点中的远程SPD收集的服务简档;本地服务 仅向所述本地SPD进行发布;所述本地SPD用于发现距离所述本地节点的 特定跳内的所述远程节点中的一个可达远程节点上的可用服务;所述SPD模 块用于基于所述服务简档的基于名称的服务发现协议名称中的前缀配置所述 远程节点并将所述远程节点注册到对应接口;所述LM用于当在其中一个接 口处检测到到其中一个所述远程节点的新链路时通知所述本地SPD。

在第三方面,本发明包括一种在以信息为中心的网络中发现服务的方法, 所述方法包括接收本地服务的服务简档;使用处理器制定发往远程节点的兴 趣消息,其中所述兴趣消息包括服务简档请求和跳数,所述跳数指示转发所 述兴趣消息的跳数;接收来自所述远程节点的数据消息,其中所述数据消息 包括所述远程节点提供的服务和来自其它远程节点的服务的聚合服务简档, 所述其它远程节点耦合到所述本地节点的所述跳数内的所述远程节点;以及 使用处理器聚合所述本地服务的所述服务简档和从所述远程节点接收到的所 述聚合服务简档。

结合附图和权利要求书,可从以下的详细描述中更清楚地理解这些和其 它特征。

附图说明

为了更完整地理解本发明,现在参考以下结合附图和详细描述进行的简 要描述,其中相同参考标号表示相同部分。

图1是根据实施例的图示用于发现的增强CCN节点架构的方框图。

图2是根据实施例的图示SPD模块的综合功能的方框图。

图3至9是根据所公开的实施例的用于建立邻居关系的示例性方法的方 框图。

图10至13是根据所公开的实施例的用于邻居节点加入一组节点的示例 性方法的方框图。

图14和15是根据所公开的实施例的用于邻居节点离开一组节点的示例 性方法的方框图。

图16至19是根据所公开的实施例的用于0跳服务发现的示例性方法的 方框图。

图20至25是根据所公开的实施例的图示用于发现距离一组节点内的某 个节点一跳上的服务的示例性方法的方框图。

图26至33是图示根据所公开的实施例的用于2跳服务发现的示例性方 法的方框图。

图34是发射器/接收器单元的实施例的示意图。

图35是通用计算机系统的实施例的示意图。

具体实施方式

最初应理解,尽管下文提供一个或多个实施例的说明性实施方案,但可 使用任意数目的当前已知或现有的技术来实施所公开的系统和/或方法。本发 明决不应限于下文所说明的所述说明性实施方案、图式和技术,包含本文所 说明并描述的示范性设计和实施方案,而是可以在所附权利要求书的范围以 及其均等物的完整范围内修改。

本文所公开的是ICN的基于名称的邻居和服务发现方案,包括两种基本 协议,例如基于名称的邻居发现协议和基于名称的服务发现协议。将这些基 于名称的邻居发现协议和基于名称的服务发现协议应用于以内容为中心的网 络(CCN)等以信息为中心的网络(ICN)上不需要对运输模型进行任何更 改。所公开的是并入服务发布和发现(SPD)模块的ICN节点架构。在实施 例中,提供基于名称的邻居发现协议以解决邻居关系的建立和维持。当ICN 节点启动且可在SPD上保持独立运行时,该协议可被初始化。在实施例中, 提供基于名称的服务发现协议以发现单个服务发现会话中距离源节点多跳内 的可达节点已知的所有可用服务(简档)。基于名称的服务发现协议可在基 于名称的邻居发现协议为服务发现兴趣消息建立一些必要的转发信息库

(FIB)条目之后一直运行。该基于名称的邻居发现协议能够通过跟踪中间 节点的接口(本文中也称为面)找到从源节点到远程节点上的任意可用服务 的第一可用路径,可从中间节点开始传送收集到的聚合服务简档。在实施例 中,应用可基于其服务简档决定请求服务。本文中所公开的方法、系统、装 置和附图主要参考CCN。然而,本领域的普通技术人员将认识到相同或类似 的方法、系统和装置都可应用于任意ICN结构。

图1是根据实施例的图示用于发现的增强CCN节点架构100的方框图。 CCN节点架构100可包括服务发布和发现(SPD)部件112、链路管理器(LM) 114、CCN应用和服务部件102、CCN守护进程(ccnd)104以及物理链路 116。物理链路可包括基于传输控制协议/互联网协议(TCP/IP)的链路、以 太网链路、扩展数字用户线(XDSL)链路、WiFi链路、3G和4G无线链路 以及蓝牙链路。ccnd104可包括内容存储器(CS)106、待定兴趣表(PIT) 108以及转发信息库(FIB)110。CS106可存储内容并且当接收到兴趣报文 时,可检查CS106以确定所请求的内容是否存储在CS106中。如果所请求的 内容存储在CS106中,那么可从CS106中检索该内容并将该内容提供给请求 方。从网络内的其它位置检索到的内容也可存储在CS106中。PIT108可存储 待决内容请求以及请求关联内容的接口的指示。当接收到数据报文时,可检 查PIT108是否存在待决请求。如果发现待决请求,那么数据报文可存储在 CS106中并可转发给PIT中列出的接口。如果未发现PIT条目,那么可丢弃 数据报文。FIB110可包括将内容名称的前缀关联到一个或多个下一跳路由器 的表或其它数据结构。ccnd104可作为网络栈运行,其中路由、转发和缓存 功能一切照常。SPD模块112可在应用级本地运行。SPD模块112可包括处 理器和/或存储器(或存储)部件。SPD模块112可包括关于邻居内容路由 器的信息和邻居内容路由器处可用的服务。LM114可包括处理器。在实施例 中,SPD模块112和LM114可共享一个处理器。LM114可监控所有物理链 路116的连通性并将所有物理链路116的状态更新告知给SPD模块112。

在所公开的基于名称的邻居发现协议中,邻居由到目标节点的直接连通 性定义并限制在1跳范围内。在实施例中,可假设可用LM114将监控所有物 理链路116的连通性并将所有物理链路116的状态更新告知给SPD模块112。 邻居关系的建立和维持是一些可由所公开的基于名称的邻居发现协议基于图 1中的节点架构100可解决的问题。基于名称的邻居发现协议可在节点100 启动且可在SPD112上保持独立运行时被初始化。一旦任意链路状态被更新, 所公开的基于名称的邻居发现协议能够由LM114触发。

图2是根据实施例的图示SPD模块204的功能的系统200的方框图。SPD 模块204可作为图1所示的SPD模块112实施。本地节点202上可用的LM (未示出)可监控所有物理链路的连通性并将图1所示的物理链路116等所 有物理链路的状态更新告知给SPD模块204。在传统方案中,每个服务可直 接将其服务简档发布给网络。与传统方案相比,在所公开的服务发布机制中, 每个服务简档206和208可将其服务发布给本地SPD模块204。SPD模块204 可管理本地节点202上发布的服务,聚合本地节点202上发布的服务简档206 和208和从远程节点(未示出)收集到的服务简档,以及使用数据消息对服 务发现兴趣消息作出响应。该数据消息可包括收集到的聚合服务简档。

所公开的基于名称的服务发现方案可能不要求对CCN运输模型进行任 何更改,并且终端用户可能在发现会话中只需要使用单个发现兴趣消息。所 公开的基于名称的服务发现方案可包括两种基本协议,例如基于名称的邻居 发现协议和基于名称的服务发现协议。

表1示出了可在本文中使用的用于描述各种部件、服务、消息和协议的 一些符号。

表1:符号

ccndx 节点x上的CCN守护进程 CS 内容存储器 Dx 来自节点x的数据消息 dp 数据消息的数据净荷字段 FACE CCN守护进程的面列表 FIB 转发信息库 fxa 节点x上的应用的面 fxs 节点x上的SPD的面 fxy 节点x上索引为y的连接链路的面

h 服务发现兴趣消息的跳数字段 Ix 发往节点x的兴趣消息 N/A 不可用 nm 兴趣/数据消息的名称前缀字段 nx 节点x的名称前缀 PIT 待决兴趣表 rxy 与面fxy绑定的随机序列 SPDx 节点x上的服务发布和发现模块 snk 索引为k的会话nonce spx 节点x上所有可用服务的服务简档 sv* SPD已知的任意可用服务的服务名称前缀 /ndis 邻居发现兴趣和数据消息的名称前缀的第一项 /sdis 服务发现兴趣和数据消息的名称前缀的第一项

图3至9是根据所公开的实施例的用于建立邻居关系的示例性方法的方 框图。在图3所示的步骤1中,对于节点“2”302,当节点301至303均启 动时,节点“2”302的SPD2 312可使用特定面“f2s”首先与节点“2”302 的“ccnd2”耦合并可预建立两个特定FIB条目,例如用于邻居发现的“/ndis: f2s”和用于服务发现的“/sdis:f2s”。如果不存在精确前缀匹配,可基于与 两个预定义的FIB条目的最长前缀匹配将任意包含预定义项“/ndis”的邻居 发现兴趣消息和任意包含预定义项“/sdis”的服务发现兴趣消息通过面“f2s” 转发给节点“2”302的SPD2 312。当节点“1”301和“3”303启动时,节 点“1”301和节点“3”303可像节点“2”302一样以类似方式进行操作。

在图4所示的步骤2中,当一些节点301至303开始相互连接并建立新 物理链路时,节点301至303上的LM(未示出)监控所有物理链路的连通 性并将所有物理链路的状态更新告知给SPD模块311至313。对于节点“2” 302,当为连接到节点“1”301和“3”303的新链路接收到来自节点“2”302 LM的链路更新通知时,SPD2 312可首先为两个连接的物理链路 “f21n2--f11n1”和“f22n2--f31n3”在节点“2”302上的“ccnd2” 上配置并注册两个新面“f21”和“f22”。SPD2 312还可生成与面“f21”绑 定的随机序列“r21”以及与面“f22”绑定的随机序列“r22”。SPD2 312随 后可建立用于运行中的邻居发现的两个新的唯一FIB条目“/ndis/r21:f21” 和“/ndis/r22:f22”。

随机序列“r21”可用于创建邻居发现兴趣消息的唯一名称前缀“/ndis/r21” 并防止与现有名称前缀冲突,现有名称前缀包括同一节点“2”上的 “/ndis/r22”、其邻居节点“1”上的“/ndis/r11”及其邻居节点“3”上的 “/ndis/r31”。将名称前缀包含在内规定可基于与现有唯一FIB条目“/ndis/r21: f21”的精确前缀匹配将任意带有唯一名称前缀“/ndis/r21”的邻居发现兴趣 消息通过面“f21”从源节点“2”302发送到邻居节点“1”301。

当节点“1”301和“3”303为新链路接收到来自LM的链路更新通知后, 节点“1”301和“3”303可像节点“2”302一样以类似方式进行操作。

在图5所示的步骤3中,在注重节点“2”302的情况下,SPD2 312可 独立创建两个新邻居发现兴趣消息“I1(nm=/ndis/r21)”和“I3(nm=/ndis/r22)”, 其中两个连接的物理链路“f21n2--f11n1”和“f22n2--f31n3”分别带 有唯一名称前缀,并且随后可将两个新邻居发现兴趣消息通过面“f2s”发送 给节点“2”302上的“ccnd2”。节点“2”302上的“ccnd2”可分别为两个 传出兴趣消息“I1(nm=/ndis/r21)”和“I3(nm=/ndis/r22)”创建两个新的唯一 PIT条目“/ndis/r21:f2s”和“/ndis/r22:f2s”。节点“2”302上的“ccnd2” 可基于与现有唯一FIB条目“/ndis/r21:f21”的精确前缀匹配将“I1”通过面 “f21”转发给节点“1”301上的邻居“ccnd1”。“ccnd2”可基于与现有唯 一FIB条目“/ndis/r22:f22”的精确前缀匹配将“I3”通过面“f22”转发给 节点“3”303上的邻居“ccnd3”。

当接收到传入兴趣消息“I1(nm=/ndis/r21)”时,节点“1”301上的“ccnd1” 可创建新的唯一PIT条目“/ndis/r21:f11”并可基于与预定义的FIB条目“/ndis: f1s”的最长前缀匹配将“I1”通过面“f1s”转发给SPD1 311。当接收到传 入兴趣消息“I3(nm=/ndis/r22)”时,节点“3”303上的“ccnd3”可创建新的 唯一PIT条目“/ndis/r22:f31”并可基于与预定义的FIB条目“ndis:f3s”的 最长前缀匹配将“I3”通过面“f3s”转发给SPD3 313。

在图6所示的步骤4中,当接收到兴趣消息“I1(nm=/ndis/r21)”时,SPD1 311可产生带有相同名称前缀“I1”的新邻居发现数据消息“D1(nm=/ndis/r21, dp=n1)”,其中该邻居发现数据消息在数据净荷中包含其自身的名称前缀“n1”, 并且随后可将“D1”通过面“f1s”发回到节点“1”301上的“ccnd1”。节 点“1”301上的“ccnd1”可基于现有唯一PIT条目“/ndis/r21:f11”将传出 数据消息“D1(nm=/ndis/r21,dp=n1)”通过面“f11”转发给节点“2”302上 的“ccnd2”,并且随后由于使用了该数据消息而将该PIT条目移除。节点“2” 302上的“ccnd2”可基于现有唯一PIT条目“/ndis/r21:f2s”将传入数据消 息“D1(nm=/ndis/r21,dp=n1)”通过面“f2s”转发给SPD2 312,并且随后由 于使用了该数据消息而将该PIT条目移除。

当接收到兴趣消息“I3(nm=/ndis/r22)”时,SPD3 313可产生带有相同名 称前缀“I3”的新邻居发现数据消息“D3(nm=/ndis/r22,dp=n3)”,其中该邻 居发现数据消息在数据净荷中包含其自身的名称前缀“n3”,并且随后可将 “D1”通过面“f3s”发回到节点“3”303上的“ccnd3”。节点“3”303上 的“ccnd3”可基于现有唯一PIT条目“/ndis/r22:f31”将传出数据消息 “D3(nm=/ndis/r22,dp=n3)”通过面“f31”转发给节点“2”302上的“ccnd2”, 并且随后由于使用了该数据消息而将该PIT条目移除。节点“2”302上的 “ccnd2”可基于现有唯一PIT条目“/ndis/r22:f2s”将传入数据消息 “D3(nm=/ndis/r22,dp=n3)”通过面“f2s”转发给SPD2 312,并且随后由于 使用了该数据消息而将该PIT条目移除。

在图7所示的步骤5中,在完成步骤4之后,SPD2 312可从 “D1(nm=/ndis/r21,dp=n1)”的数据净荷中独立检索邻居节点“1”301的名 称前缀“n1”并可通过将“D1”的唯一名称前缀“/ndis/r21”与现有唯一FIB 条目“/ndis/r21:f21”进行精确匹配来将名称前缀“n1”与面“f21”,例如 f21(n1)绑定。SPD2 312还可从“D3(nm=/ndis/r22,dp=n3)”的数据净荷中独 立检索邻居节点“3”303的名称前缀“n3”并可通过将“D3”的唯一名称前 缀“/ndis/r22”与现有唯一FIB条目“/ndis/r22:f22”进行精确匹配将名称前 缀“n3”与面“f22”,例如f22(n3)绑定。因此,SPD311至313可保存某个 邻居301至303的名称前缀和某个接口之间的映射列表。

此外,对于以下服务发现,SPD2 312可使用从接收到的数据消息“D1” 和“D3”中检索到的名称前缀“n1”和“n3”建立两个新的唯一FIB条目“/sdis/n1: f21”和“/sdis/n3:f22”。由于两个随机序列“r21”和“r22”的任务完成, SPD2 312随后可将两个现有唯一FIB条目“/ndis/r21:f21”和“/ndis/r22:f22” 移除。

在图8所示的步骤6中,SPD2 312可使用单轮兴趣数据消息交换来获取 邻居301和303的名称前缀“n1”和“n3”并且随后可将用于运行中的邻居 发现的现有唯一FIB条目“/ndis/r21:f21”和“/ndis/r22:f22”替换为用于下 述服务发现的新的唯一FIB条目“/sdis/n1:f21”和“/sdis/n3:f22”。

在图9所示的步骤7中,类似地,SPD1 311和SPD3 313可与SPD2 312 基本上在同一时间独立执行上述步骤1至6,,获取邻居的名称前缀“n2”并 且随后可将用于运行中的邻居发现的现有唯一FIB条目“/ndis/r11:f11”和 “/ndis/r31:f31”替换为用于下述服务发现的新的唯一FIB条目“/sdis/n2:f11” 和“/sdis/n2:f31”。最后,连接节点的稳定状态如图9所示。

图10至13是根据所公开的实施例的用于入节点加入一组已建立邻居关 系的连接节点的示例性方法的方框图。在图10所示的步骤1中,在邻居节点 加入前,连接节点的稳定状态如图9所示。当新到达的节点“4”304开始连 接到一组节点中的联合节点“2”302并建立一条新物理链路时,节点“1” 301、“2”302和“3”303上的链路管理器(LM)均检测该新物理链路的连 接并将链路状态更新告知给各个SPD模块311、312和313。

对于节点“2”302,当为连接到节点“4”304的新链路从节点“2”302 的LM接收到链路更新通知时,SPD2 312可首先为新的连接物理链路 “f23n2--f41n4”在节点“2”302的“ccnd2”上配置并注册新面“f23”, 可生成与面“f23”绑定的随机序列“r23”,并可随后建立用于运行中的邻 居发现的新的唯一FIB条目“/ndis/r23:f23”。

对于节点“4”304,当为连接到节点“2”302的新链路从节点“4”304 上的LM接收到链路更新通知时,SPD4 314可首先为新的连接物理链路 “f41n4--f23n2”在节点“4”304的“ccnd4”上配置并注册新面“f41”, 可生成与面“f41”绑定的随机序列“r41”,并可随后建立用于运行中的邻 居发现的新的唯一FIB条目“/ndis/r41:f41”。

在图11所示的步骤2中,在完成图10中的步骤1之后,现在重点在于 节点“2”302。联合节点“2”302的SPD2 312可通过单轮兴趣数据消息交 换(如上所述且在图3至9中示出)独立执行上述建立邻居关系的步骤。SPD2 302可首先发送邻居发现兴趣消息“I4(nm=/ndis/r23)”并且随后可接收邻居 发现数据消息“D4(nm=/ndis/r23,dp=n4)”。SPD2 312可获取新邻居的名称 前缀“n4”并且随后可将用于运行中的邻居发现的现有唯一FIB条目“/ndis/r23: f23”替换为用于对应服务发现的新的唯一FIB条目“/sdis/n4:f23”。

在图12所示的步骤3中,在完成图10中的步骤1之后,现在重点在于 节点“4”304。新到达的节点“4”304的SPD4 314可通过单轮兴趣数据消 息交换(如上所述且在图3至9中示出)独立执行上述建立邻居关系的步骤。 SPD4 314可首先发送邻居发现兴趣消息“I2(nm=/ndis/r41)”并且随后可接收 邻居发现数据消息“D2(nm=/ndis/r41,dp=n2)”。SPD4 314可获取新邻居的 名称前缀“n2”并且随后可将用于运行中的邻居发现的现有唯一FIB条目 “/ndis/r41:f41”替换为用于对应服务发现的新的唯一FIB条目“/sdis/n2: f41”。

在图13所示的步骤4中,示出了连接节点301至304的稳定状态。应注 意,实施例中的所公开的邻居节点加入机制可能只能由建立新物理链路过程 中所涉及的刚连接的节点执行,而其它节点可能无需进行执行操作。所以, 刚连接的节点304的FACE和FIB条目可能被更新,而其它节点301至303 上的FACE和FIB条目可能不会改变。

图14和15是根据所公开的实施例的用于出邻居节点离开一组节点的示 例性方法的方框图。一旦出节点退出一组连接节点,出节点不再是一组连接 节点的邻居节点。在邻居节点离开之前,连接节点的稳定状态在图13中示出。 在图14所示的步骤1中,当邻居节点“3”303开始与一组节点中的联合节 点“2”302断连并丢弃现有物理链路时,节点302和303上的链路管理器(LM) 均可检测现有物理链路的断连并可将链路状态更新告知给节点302和303上 的SPD模块312和313。

对于节点“2”302,当为与节点“3”303断连的现有链路从节点“2” 302的LM接收到链路更新通知时,SPD2 312可首先为新的丢弃物理链路 “f22n2--f31n3”在节点“2”302的“ccnd2”上配置并取消注册丢弃的 面“f22”,并可移除用于以下服务发现的现有唯一FIB条目“/sdis/n3:f22”。

对于节点“3”303,当为与节点“2”302断连的现有链路从节点“3”303 的LM接收到链路更新通知时,SPD3 313可首先为新的丢弃物理链路 “f31n3--f22n2”在“ccnd3”上配置并取消注册丢弃的面“f31”,并可 移除用于以下服务发现的现有唯一FIB条目“/sdis/n2:f31”。

断连节点的稳定状态如图15所示。在图15中的步骤2中,应注意,一 项实施例中的该邻居节点离开机制可能只能由丢弃现有物理链路过程中所涉 及的刚断连的节点303执行,而其它节点301、302和304可能无需进行执行 这些操作。所以,刚断连的节点303的FACE和FIB条目可能被更新,而其 它节点301、302和304上的FACE和FIB条目可能不会改变。

现转向服务发现协议,引入了跳数(h)作为兴趣消息的新属性以定义服 务发现会话中所需的跳数。SPD,例如图3至15中所描述的SPD311至314 中的任一者可用于处理到达当前跳的兴趣消息并为下一跳创建新兴趣消息, 其中新跳数为当前跳处接收到的兴趣消息的跳数减1。如果接收到的兴趣消 息的跳数等于0,那么SPD不为下一跳创建新兴趣消息并且可使用包含聚合 缓存服务简档的数据消息对兴趣消息做出回复。

会话nonce(sn)可为应用生成的随机序列,引入sn作为兴趣消息的新 属性以区分某个服务发现会话中的某个源节点发送的某组兴趣消息和不同会 话中的不同源节点发送的其它兴趣消息。在相同的服务发现会话中,会话 nonce可用于避免处理多余且重复的兴趣消息并防止使用无用且重复的数据 消息对这些兴趣消息做出回复。会话nonce规定如果SPD接收到带有相同会 话nonce的多个兴趣消息,那么该SPD可仅使用包含聚合服务简档的数据消 息对第一接收的兴趣消息做出响应并可丢弃下一到达的兴趣消息。不使用数 据消息做出响应的兴趣消息和PIT条目在到达不同跳节点的本地超时时会消 失或删除。

公开了名称前缀约定以避免创建无用的后向兴趣消息,例如从当前跳节 点发送到先前跳节点的兴趣消息,这是由于所有传入兴趣消息由中间的本地 ccnd转发,所以当前跳节点上的SPD无法知晓先前跳节点。所公开的是 “/sdis/nx2/nx1”等使用三项的名称前缀约定的规则,其中第一项“/sdis”可 为服务发现兴趣和数据消息预定义,第二项“np”可表示下一跳节点(目的 地)的名称前缀,第三项“nx”可表示当前跳(源)的名称前缀。因此,当 接收到带有名称前缀“/sdis/nx2/nx1”的兴趣消息时,当前跳节点“nx2”上 的SPD可确定带有名称前缀“/sdis/nx2/nx1”的接收到的兴趣消息来自先前 跳节点“nx1”。当前跳节点上的SPD可仅创建发往不可达下一跳节点的带 有除“nx1”之外的名称前缀的新兴趣消息,并可防止带有名称前缀 “/sdis/nx2/nx1”的后向兴趣消息从当前跳节点“nx2”发送到先前跳节点 “nx1”。

图16至19是根据所公开的实施例的用于0跳服务发现的示例性方法的 方框图。在图16所示的步骤1中,在进行服务发现之前,节点“1”301的 应用APP1 321已使用特定面“f1a”与节点“1”301的“ccnd1”耦合或使用 某些可用SPD应用编程接口(API)与SPD1 311耦合。如上述邻居发现协议 中所提及的那样,两个特定FIB条目“/ndis:f1s”和“/sdis:f1s”可能已由 SPD1 311建立。SPD1 311还可为节点“1”301的SPD1 311上发布的所有可 用本地服务建立一组FIB条目“/n1/sv*:f1s”并可保存邻居发现所更新的唯 一FIB条目的列表用于邻居关系(0跳服务发现中没有必要)。

对于节点“1”301,可基于与两个FIB条目的最长前缀匹配将包含名称 前缀“/sdis”或“/n1/sv*:f1s”的任意服务发现兴趣消息通过面“f1s”转发 给SPD1 311。

对于0跳服务发现,可假设一些服务简档已由本地SPD收集并聚合并且 应用可能想要在无需向其它节点发送服务发现兴趣消息的情况下快速获取本 地SPD已缓存的聚合服务简档。

在图17所示的步骤2中,在完成图16的步骤1之后,节点“1”301的 应用APP1 321可具有两种选项来使用0跳服务发现快速获取本地SPD311 已缓存的聚合服务简档。一种选项为应用APP1 321可利用SPD API来请求 服务发现并可向SPD311提供0跳服务发现所需的跳数“h=0”和服务发现 会话nonce“sn0”。

第二种选项可为应用APP1 321可使用单轮兴趣数据消息交换通过节点 “1”301上的本地ccnd请求服务发现。在这种情况下,应用APP1 321可使 用预定义的名称前缀“/sdis”和会话nonce“sn0”创建新的0跳服务发现兴 趣消息,例如“I1(nm=/sdis,sn0,h=0)”,并且随后可将“I1”通过面“f1a” 发送给节点“1”301上的本地“ccnd1”。节点“1”301上的“ccnd1”可为 接收到的兴趣消息“I1”创建新PIT条目“/sdis(sn0,h=0):f1a”并且可基于 与预定义的FIB条目“/sdis:f1s”的精确前缀匹配将接收到的兴趣消息“I1” 通过面“f1s”转发给本地SPD1 311。

这两种选项均可能够从本地SDP311获取聚合缓存服务简档。

在图18所示的步骤3中,在完成图17所示的步骤2之后,节点“1”301 的SPD1 311可首先检查接收到的消息“I1(nm=/sdis,sn0,h=0)”的跳数“h” 是否等于0。在该步骤中“h=0”,所以SPD1 311可能不为下一跳创建新兴 趣消息并且可在没有进一步延迟的情况下对该兴趣消息“I1”作出回复。

节点“1”301的SPD1 311可具有两种选项来返回聚合缓存服务简档。 一种选项可为SPD1 311可利用SPD API来将节点“1”301上的聚合缓存服 务简档“sp1”返回至应用APP1 321。

第二种选项可为SPD1 311可产生带有相同名称前缀“I1”的新服务发现 数据消息“D1(nm=/sdis,dp=sp1)”,该服务发现数据消息在数据净荷中包含 节点“1”上的聚合缓存服务简档“sp1”,并且随后可将“D1”通过面“f1s” 发回到节点“1”301的“ccnd1”。节点“1”301的“ccnd1”可基于现有 PIT条目“/sdis(sn0,h=0):f1a”将“D1(nm=/sdis,dp=sp1)”通过面“f1a”转 发给应用APP1 321并可由于使用了该数据消息而将该PIT条目移除。

最后,在图19所示的步骤4中,应用APP1 321可发现单个服务发现会 话中节点“1”301已知的所有可用服务(简档)并可通过跟踪中间节点的面 找到从节点“1”301到节点“1”301上的任意可用服务的第一可用路径,例 如/n1/sv*:f1sn1。

图20至25是根据所公开的实施例的用于发现距离一组节点内的某个节 点一跳的服务的示例性方法。在图20所示的步骤1中,在进行服务发现之前, 节点“1”301的应用APP1 321已使用特定面“f1a”与节点“1”301的“ccnd1” 耦合或使用某些可用SPD API与SPD1 311耦合。如邻居发现协议中所提及 的那样,两个特定FIB条目“/ndis:f1s”和“/sdis:f1s”可能已由SPD1 311 建立。SPD1 311还可为节点“1”301的SPD1 311上发布的所有可用本地服 务建立一组FIB条目“/n1/sv*:f1s”并可保存邻居发现所更新的唯一FIB条 目的列表用于邻居关系,例如“/sdis/n2:f11”。类似地,节点“2”302也可 满足这些要求。

对于节点“1”301,可基于与两个FIB条目的最长前缀匹配将包含名称 前缀“/sdis”或“/n1/sv*:f1s”的任意服务发现兴趣消息通过面“f1s”转发 给SPD1 311,以及可基于与现有FIB条目“/sdis/n2:f11”的最长前缀匹配将 包含唯一名称前缀“/sdis/n2”的任意服务发现兴趣消息通过面“f11”转发给 节点“2”302上的“ccnd2”。节点“2”302可以与节点“1”301类似的方 式进行操作。

在完成图20中的步骤1之后,在图21所示的步骤2中,节点“1”301 的应用APP1 321可具有两种选项来开始新的1跳服务发现会话。一种选项 可为应用APP1 321可利用SPD API来请求服务发现并可向SPD311提供1 跳服务发现所需的跳数“h=1”和服务发现会话nonce“sn1”。

第二种选项可为应用APP1 321可使用单轮兴趣数据消息交换通过节点 “1”301上的本地“ccnd”请求服务发现。在这种情况下,应用APP1 321 可使用预定义的名称前缀“/sdis”和会话nonce“sn1”创建新的1跳服务发 现兴趣消息,例如“I1(nm=/sdis,sn1,h=1)”,并且随后可将“I1”通过面“f1a” 发送给节点“1”301上的本地“ccnd1”。节点“1”301上的“ccnd1”可为 接收到的兴趣消息“I1”创建新PIT条目“/sdis(sn1,h=1):f1a”并且可基于 与预定义的FIB条目“/sdis:f1s”的精确前缀匹配将接收到的兴趣消息“I1” 通过面“f1s”转发给本地SPD1 311。

这两种选项均能够通知本地SDP311开始新的1跳服务发现会话并从本 地SDP311获取新的收集到的聚合服务简档。

在完成图21的步骤2之后,在图22所示的步骤3中,节点“1”301上 的SPD1 311可首先检查接收到的兴趣消息“I1(nm=/sdis,sn1,h=1)”的跳数 “h”是否等于0。在该步骤中“h=1”,SPD1 311可通过将在当前跳接收到 的兴趣消息的跳数减1,例如“h=1–1=0”来计算下一跳的新兴趣消息的新跳 数。

基于由邻居发现更新的唯一FIB条目的数目,(本段中,对于“/sdis/n2: f11”,节点“1”301的数目为1),SPD1 311可使用唯一名称前缀“/sdis/n2/n1”、 相同的会话nonce“sn1”和更新后的下一跳数“h=0”创建新服务发现兴趣 消息,例如“I2(nm=/sdis/n2/n1,sn1,h=0)”,并且随后可将“I2”通过面“f1s” 发送到本地“ccnd1”。节点“1”301上的“ccnd1”可为传出兴趣消息“I2” 创建新PIT条目“/sdis/n2/n1(sn1,h=0):f1s”并且可基于与预定义的FIB条目 “/sdis/n2:f11”的精确前缀匹配将传出兴趣消息“I2”通过面“f11”转发给 节点“2”302上的“ccnd2”。

当接收到服务发现兴趣消息“I2(nm=/sdis/n2/n1,sn1,h=0)”时,节点“2” 302上的“ccnd2”可为传入兴趣消息“I2”创建新的唯一PIT条目“/sdis/n2/n1 (sn1,h=0):f21”并可基于与预定义的FIB条目“/sdis:f2s”的最长前缀匹配 将传入兴趣消息“I2”通过面“f2s”转发给本地SPD2312。

在完成图22的步骤3之后,在图23所示的步骤4中,节点“2”302的 SPD2 312可首先检查接收到的兴趣消息“I2(nm=/sdis/n2/n1,sn1,h=0)”的跳 数“h”是否等于0。在该示例中“h=0”,所以SPD2 312可能不为下一跳创 建新兴趣消息并且可对该兴趣消息“I2”作出回复。

SPD1 311可产生带有相同名称前缀“I2”的新服务发现数据消息 “D2(nm=/sdis/n2/n1,dp=sp2)”,该服务发现数据消息在数据净荷中包含节 点“2”302上的聚合缓存服务简档“sp2”,并且随后可将“D2”通过面“f2s” 发回到节点“2”302上的“ccnd2”。节点“2”302上的“ccnd2”可基于现 有唯一PIT条目“/sdis/n2/n1(sn1,h=0):f21”通过面“f21”将传出数据消息 “D2(nm=/sdis/n2/n1,dp=sp2)”转发给节点“1”301上的“ccnd1”,并且随 后由于使用了该数据消息而将该PIT条目移除。

当接收到服务发现数据消息“D2(nm=/sdis/n2/n1,dp=sp2)”时,节点“1” 301上的“ccnd1”可基于现有唯一PIT条目“/sdis/n2/n1(sn1,h=0):f1s”将 传入数据消息“D2”通过面“f1s”转发给SPD1 311,并可由于使用了该数 据消息而将该PIT条目移除。

在完成图23中的步骤4之后,在图24所示的步骤5中,SPD1 311可从 “D2(nm=/sdis/n2/n1,dp=sp′2)”的数据净荷中检索节点“2”302上更新后的 服务简档“sp′2”,可将“sp′2”与节点“1”301上的缓存服务简档“sp′1” 聚合(sp′1=sp′2+sp1),并且随后可将收集到的聚合服务简档“sp′1”存储在 缓存中。SPD1 311还可通过将“D2”的唯一名称前缀“/sdis/n2/n1”与现有 唯一FIB条目“/sdis/n2:f11”进行最长匹配来跟踪节点“1”301上接收传入 数据消息“D2(nm=/sdis/n2/n1,dp=sp′2)”的本地“ccnd”的面,并可通过为 节点“2”302的SPD2 312上发布的所有可用服务使用跟踪的面“f11”在节 点“1”301上建立一组新的FIB条目“/n2/sv*:f11”。

SPD1 311可具有两种选项来返回新的收集到的聚合服务简档。一种选项 可为SPD1 311可利用SPD API来将节点“1”301上的新的收集到的聚合服 务简档“sp′1”返回至应用“APP1”321。

第二种选项可为SPD1 311可产生带有相同名称前缀“I1”的新服务发现 数据消息“D1(nm=/sdis,dp=sp′1)”,该服务发现数据消息在数据净荷中包含 节点“1”301上的新的收集到的聚合服务简档“sp′1”,并且随后可将“D1” 通过面“f1s”发回到节点“1”301上的“ccnd1”。节点“1”301上的“ccnd1” 可基于现有PIT条目“/sdis(sn1,h=1):f1a”将“D1(nm=/sdis,dp=sp′1)”通过 面“f1a”转发给应用APP1 321并可由于使用了该数据消息而将该PIT条目 移除

最后,在图25所示的步骤6中,应用APP1 321可发现单个服务发现会 话中距离节点“1”301一跳范围内的节点“1”301和节点“2”302已知的 所有可用服务(简档)并可通过跟踪中间节点的面找到从节点“1”301到节 点“1”301和节点“2”302上的任意可用服务的第一可用路径,即“/n1/sv*: f1sn1”和“/n2/sv*:f11n1--f2sn2”。

图26至33是图示根据所公开的实施例的用于2跳服务发现的示例性方 法的方框图。如本文中所使用的那样,2跳意味着中间节点将目的节点与源 节点隔开。所公开的2跳服务发现方法中的步骤1在图26中示出。在进行服 务发现之前,节点“1”301的应用APP1 321已使用特定面“f1a”与节点“1” 301的“ccnd1”耦合或使用某些可用SPD API与SPD1 311耦合。如邻居发 现协议中所提及的那样,两个特定FIB条目“/ndis:f1s”和“/sdis:f1s”可能 已由SPD1 311建立。SPD1 311还可为节点“1”301的SPD1 311上发布的 所有可用本地服务建立一组FIB条目“/n1/sv*:f1s”并可保存邻居发现所更 新的唯一FIB条目的列表用于邻居关系,例如“/sdis/n2:f11”。类似地,节 点“2”302、节点“3”303和节点“4”304也可满足这些条件。

对于节点“1”301,可基于与两个FIB条目的最长前缀匹配将包含名称 前缀“/sdis”或“/n1/sv*:f1s”的任意服务发现兴趣消息通过面“f1s”转发 给SPD1 311,以及可基于与现有FIB条目“/sdis/n2:f11”的最长前缀匹配将 包含唯一名称前缀“/sdis/n2”的任意服务发现兴趣消息通过面“f11”转发给 节点“2”302上的“ccnd2”。对于节点“2”302、节点“3”303和节点“4” 304,服务发现兴趣消息也可以类似方式对待。

在完成图26所示的步骤1之后,在图27所示的步骤2中,节点“1”301 的应用APP1 321可具有两种选项来开始新的2跳服务发现会话。一种选项 可为应用APP1 321可利用SPD API来请求服务发现并可向SPD1 311提供2 跳服务发现所需的跳数“h=2”和服务发现会话nonce“sn2”。

第二种选项可为应用APP1 321可使用单轮兴趣数据消息交换通过本地 ccnd请求服务发现。在这种情况下,应用APP1 321可使用预定义的名称前 缀“/sdis”和会话nonce“sn1”创建新的2跳服务发现兴趣消息,例如 “I1(nm=/sdis,sn2,h=2)”,并且随后可将“I1”通过面“f1a”发送给节点“1” 301上的本地“ccnd1”。节点“1”301上的“ccnd1”可为接收到的兴趣消息 “I1”创建新PIT条目“/sdis(sn2,h=2):f1a”并且可基于与预定义的FIB条 目“/sdis:f1s”的精确前缀匹配将接收到的兴趣消息“I1”通过面“f1s”转 发给本地SPD1 311。

这两种选项均能够通知本地SDP开始新的2跳服务发现会话并且随后从 本地SDP获取新的收集到的聚合服务简档。

在完成图27的步骤2之后,在图38所示的步骤3中,节点“1”301上 的SPD1 311可首先检查接收到的兴趣消息“I1(nm=/sdis,sn2,h=2)”的跳数 “h”是否等于0。在该步骤中“h=2”,SPD1 311可通过将在当前跳接收到 的兴趣消息的跳数减1,例如“h=2–1=1”来计算下一跳的新兴趣消息的新跳 数。

基于由邻居发现更新的唯一FIB条目的数目,(本段中,对于“/sdis/n2: f11”,节点“1”的数目为1),SPD1 311可使用唯一名称前缀“/sdis/n2/n1”、 相同的会话nonce“sn1”和更新后的下一跳数“h=1”创建新服务发现兴趣 消息,例如“I2(nm=/sdis/n2/n1,sn2,h=1)”,并且随后可将“I2”通过面“f1s” 发送到节点“1”301上的本地“ccnd1”。节点“1”301上的“ccnd1”可为 传出兴趣消息“I2”创建新PIT条目“/sdis/n2/n1(sn2,h=1):f1s”并且可基于 与现有唯一FIB条目“/sdis/n2:f11”的最长前缀匹配将传出兴趣消息“I2” 通过面“f11”转发给节点“2”302上的“ccnd2”。

当接收到服务发现兴趣消息“I2(nm=/sdis/n2/n1,sn2,h=1)”时,节点“2” 302上的“ccnd2”可为传入兴趣消息“I2”创建新的唯一PIT条目“/sdis/n2/n1 (sn2,h=1):f21”并可基于与预定义的FIB条目“/sdis:f2s”的最长前缀匹配 将传入兴趣消息“I2”通过面“f2s”转发给本地SPD2 312。

在完成图28所示步骤3之后,在图29所示的步骤4中,节点“2”302 上的SPD2 312可首先检查接收到的兴趣消息的跳数“h”是否等于0。在该 步骤中“h=1”,SPD2 312可通过将在当前跳接收到的兴趣消息的跳数减1, 例如“h=1–1=0”来计算下一跳的新兴趣消息的新跳数。由于所公开的名称 前缀约定,SPD2 312可能知晓带有名称前缀“/sdis/n2/n1”的接收到的兴趣 消息来自于先前跳节点“n1”并且可防止带有名称前缀“/sdis/n1/n2”的后向 兴趣消息从当前跳节点“n2”发送到先前跳节点“n1”。

基于由邻居发现更新的唯一FIB条目的数目,(本段中,对于除名称前 缀“/sdis/n1/n2”之外的“/sdis/n1:f21”、“/sdis/n3:f22”和“/sdis/n4:f23”, 节点“2”的数目为3),SPD2 312可分别使用两个唯一名称前缀“/sdis/n3/n2” 和“/sdis/n4/n2”、相同的会话nonce“sn2”和更新后的下一跳数“h=0”仅 创建两个新服务发现兴趣消息,例如“I3(nm=/sdis/n3/n2,sn2,h=0)”和 “I4(nm=/sdis/n4/n2,sn2,h=0)”,并且随后可将“I3”和“I4”通过面“f2s” 发送到节点“2”302上的本地“ccnd2”。节点“2”302上的“ccnd2”可分 别为两个传出兴趣消息创建两个新PIT条目“/sdis/n3/n2(sn2,h=0):f2s”和 “/sdis/n4/n2(sn2,h=0):f2s”。SPD2 312可基于与现有唯一FIB条目“/sdis/n3: f22”的最长前缀匹配通过面“f22”将“I3”转发给节点“3”303上的“ccnd3” 并可基于与现有唯一FIB条目“/sdis/n4:f23”的最长前缀匹配通过面“f23” 将“I4”转发给节点“4”304上的“ccnd4”。

当接收到服务发现兴趣消息“I3(nm=/sdis/n3/n2,sn2,h=0)”时,节点“3” 303上的“ccnd3”可为传入兴趣消息“I3”创建新的唯一PIT条目“/sdis/n3/n2 (sn2,h=0):f31”并可基于与预定义的FIB条目“/sdis:f3s”的最长前缀匹配 将传入兴趣消息“I3”通过面“f3s”转发给SPD3 313。当接收到服务发现兴 趣消息“I4(nm=/sdis/n4/n2,sn2,h=0)”时,节点“4”304上的“ccnd4”可为 传入兴趣消息“I4”创建新的唯一PIT条目“/sdis/n4/n2(sn2,h=0):f41”并 可基于与预定义的FIB条目“/sdis:f4s”的最长前缀匹配将传入兴趣消息“I4” 通过面“f4s”转发给SPD4 314。

在图30所示的步骤5中,SPD3 313和SPD4 314可首先检查接收到的消 息“I3(nm=/sdis/n3/n2,sn2,h=0)”和“I4(nm=/sdis/n4/n2,sn2,h=0)”的跳数 “h”是否等于0。在该步骤中“h=0”,所以SPD3 313和SPD4 314可能不 为下一跳创建新兴趣消息并且可对兴趣消息“I3”和“I4”作出回复。

另一方面,SPD3 313可产生带有相同名称前缀“I3”的新服务发现数据 消息“D3(nm=/sdis/n3/n2,dp=sp3)”,该服务发现数据消息在数据净荷中包 含节点“3”303上的聚合缓存服务简档“sp3”,并且随后可将“D3”通过 面“f3s”发回到节点“3”303上的“ccnd3”。节点“3”303上的“ccnd3” 可基于现有唯一PIT条目“/sdis/n3/n2(sn2,h=0):f31”通过面“f31”将传出 数据消息“D3(nm=/sdis/n3/n2,dp=sp3)”转发给节点“2”302上的“ccnd2”, 并且随后由于使用了该数据消息而将该PIT条目移除。

当接收到服务发现数据消息“D3(nm=/sdis/n3/n3,dp=sp2)”时,节点“2” 302上的“ccnd2”可基于现有唯一PIT条目“/sdis/n3/n2(sn2,h=0):f2s”将 传入数据消息“D3”通过面“f2s”转发给SPD2 312,并可由于使用了该数 据消息而将该PIT条目移除。

另一方面,SPD4 314可产生带有相同名称前缀“I4”的新服务发现数据 消息“D4(nm=/sdis/n4/n2,dp=sp4)”,该服务发现数据消息在数据净荷中包 含节点“4”304上的聚合缓存服务简档“sp4”,并且随后可将“D4”通过 面“f4s”发回到节点“4”304上的“ccnd4”。节点“4”304上的“ccnd4” 可基于现有唯一PIT条目“/sdis/n4/n2(sn2,h=0):f41”将传出数据消息 “D4(nm=/sdis/n4/n2,dp=sp4)”通过面“f41”转发给节点“2”302上的“ccnd2”, 并且随后由于使用了该数据消息而将该PIT条目移除。

当接收到服务发现数据消息“D4(nm=/sdis/n4/n2,dp=sp4)”时,节点“2” 302上的“ccnd2”可基于现有唯一PIT条目“/sdis/n4/n2(sn2,h=0):f2s”将 传入数据消息“D4”通过面“f2s”转发给“SPD2”,并可由于使用了该数 据消息而将该PIT条目移除。

在图31所示的步骤6中,节点“2”302的SPD2 312可接收两个新数据 消息,这两个新数据消息包含节点“3”303和节点“4”304上的聚合服务简 档,可聚合节点“3”303和节点“4”304上接收到的服务简档和节点“2” 302上的缓存服务简档,可在节点“2”302上生成新的收集到的聚合服务简 档,并且随后可将新的收集到的聚合服务简档存储在缓存中。

SPD2 312可从“D3(nm=/sdis/n3/n2,dp=sp3)”的数据净荷中检索节点“3” 303上的缓存服务简档“sp3”并从“D4(nm=/sdis/n4/n2,dp=sp4)”的数据净 荷中检索节点“4”304上的缓存服务简档“sp4”,可将“sp3”和“sp4”与 节点“2”302上的缓存服务简档“sp2”聚合(sp′2=sp4+sp3+sp2),并且随 后可将收集到的聚合服务简档“sp′2”存储在缓存中。SPD2312还可通过将 “D3”的唯一名称前缀“/sdis/n3/n2”和“D4”的“/sdis/n4/n2”与现有唯一 FIB条目“/sdis/n3:f22”和“/sdis/n4:f23”进行最长匹配来跟踪接收传入数 据消息“D3(nm=/sdis/n3/n2,dp=sp3)”和“D4(nm=/sdis/n4/n2,dp=sp4)”的本 地“ccnd”的面,并可通过为节点“3”的“SPD3”和节点“4”的“SPD4” 上发布的所有可用服务使用跟踪的面“f22”和“f23”在节点“2”上建立一 组新的FIB条目“/n3/sv*:f22”和“/n4/sv*:f23”。

SPD2 312可产生带有相同名称前缀“I2”的新服务发现数据消息 “D2(nm=/sdis/n2/n1,dp=sp′2)”,该服务发现数据消息在数据净荷中包含节 点“2”302上的新的收集到的聚合服务简档“sp′2”,并且随后可将“D2” 通过面“f2s”发回到节点“2”302上的“ccnd2”。节点“2”302上的“ccnd2” 可基于现有唯一PIT条目“/sdis/n2/n1(sn2,h=1):f21”将传出数据消息 “D2(nm=/sdis/n2/n1,dp=sp2)”通过面“f21”转发给节点“1”301上的“ccnd1”, 并且随后由于使用了该数据消息而将该PIT条目移除。

当接收到服务发现数据消息“D2(nm=/sdis/n2/n1,dp=sp′2)”时,节点“1” 301上的“ccnd1”可基于现有唯一PIT条目“/sdis/n2/n1(sn2,h=1):f2s”将 传入数据消息“D2”通过面“f1s”转发给SPD1 311,并可由于使用了该数 据消息而将该PIT条目移除。

在图32所示的步骤7中,SPD1 311可从“D2(nm=/sdis/n2/n1,dp=sp′2)” 的数据净荷中检索节点“2”302上更新后的服务简档“sp′2”,可将“sp′2” 与节点“1”301上的缓存服务简档“sp1”聚合 (sp′1=sp′2+sp1=sp4+sp3+sp2+sp1),并且随后可将收集到的聚合服务简档 “sp′1”存储在缓存中。SPD1 311还可通过将“D2”的唯一名称前缀 “/sdis/n2/n1”与现有唯一FIB条目“/sdis/n2:f11”进行最长匹配来跟踪接 收传入数据消息“D2(nm=/sdis/n2/n1,dp=sp′2)”的本地“ccnd”的面,并可 为节点“2”302的SPD2 312、节点“3”303的SPD3 313和节点“4”304 的SPD4 314上发布的所有可用服务使用跟踪的面“f11”在节点“1”301上 建立一组新的FIB条目“/n2/sv*:f11”。

SPD1 311可具有两种选项来返回新的收集到的聚合服务简档。一种选项 可为SPD1 311可利用SPD API来将节点“1”301上的新的收集到的聚合服 务简档“sp′1”返回至应用APP1 321。

第二种选项可为SPD1 311可产生带有相同名称前缀“I1”的新服务发现 数据消息“D1(nm=/sdis,dp=sp′1)”,该服务发现数据消息在数据净荷中包含 节点“1”上的新的收集到的聚合服务简档“sp′1”,并且随后可将“D1”通 过面“f1s”发回到节点“1”301上的“ccnd1”。节点“1”301上的“ccnd1” 可基于现有PIT条目“/sdis(sn2,h=2):f1a”将“D1(nm=/sdis,dp=sp′1)”通过 面“f1a”转发给应用APP1 321并可由于使用了该数据消息而将该PIT条目 移除。

最后,在图33所示的步骤8中,应用APP1 321可发现单个服务发现会 话中距离节点“1”301二跳范围内的节点“1”301、节点“2”302、节点“3” 303和节点“4”304已知的所有可用服务(简档)并可通过跟踪中间节点的 面找到从节点“1”301到节点“1”301、节点“2”302、节点“3”303和节 点“4”304上的任意可用服务的第一可用路径,即“/n1/sv*:f1sn1”、“/n2/sv*: f11n1--f2sn2”、“/n3/sv*:f11n1--f22n2--f3sn3”和“/n4/sv*: f11n1--f23n2--f4sn4”。

由于上述提及的设计原理和所提出的方案使用兴趣数据消息交换,所以 所公开的基于名称的服务发现协议可能能够轻易扩展到多跳服务发现场景。

通过定义不同的跳数,SPD可控制网络中的发现范围。另外,SPD可指 定发现参数,使得各个节点仅返回符合参数的服务描述,这与Zeroconf中的 类似。这样通过按域、按类型或按其它参数实现发现。

本文所描述的多跳服务发现的一个用例,用于解释协议如何用于从ccn 节点的发起方建立路径。假设,例如,图16至33中的APP1 321想要探索 从自身到ccnd4 304等专用节点的可能路径。对于每个CCN节点,本地服务 发布带有其名称的服务简档,即name_profile={n4}。在发现协议期间,每 个节点可接收简档、将简档和其自身的name_profile聚合,并且可对发现兴 趣作出响应。例如,SPD3 313可使用D3={n3}作出响应,SPD4 314可使用 D4={n4}作出响应,以及SPD2 312可使用D2=D4+D3={n2,{n3,n4}}作出响 应。当SPD1 311接收到这些响应后,SPD1 311可将这些响应转发回APP1 321,随后APP1 321可以识别到达节点“4”304上的ccnd4的路径{n1,n4}。

一般而言,可能存在多个到达单个目的节点的可用路径。发起方可选择 1。另外,发起方可定期发送发现兴趣以更新路径。

应注意,路径发现可能对于拓扑动态网络而言是一种非常重要的功能, 拓扑动态网络包括传感器网络、临时网络、物联网等等。

图34示出了网络节点3400的一项实施例,该网络节点可以是经由网络 传输和处理数据的任意设备。例如,网络节点3400可为内容路由器或上述 NDN方案中的任意节点或路由器。网络节点3400可用于实施或支持上述基 于名称的邻居发现和多跳服务发现方法。网络节点3400可以包含一个或多个 入端口(也称为接口或面)3410,所述入端口3410耦合到接收器(Rx)3412, 用于从其它网络组件接收信号和帧/数据。网络节点3400可以包括内容识别 单元3420,用于确定将内容发送到哪些网络组件。内容识别单元3420可以 使用硬件、软件或两者结合来实施。网络单元3400还可以包括一个或多个出 端口(也称为接口或面)3430,所述出端口3430耦合到发射器(Tx)3432, 用于将信号和帧/数据传输到其它网络组件。接收器3412、内容识别单元3420 和发射器3432还可用于基于硬件、软件或者两者结合来实施至少一些所公 开的方法。网络节点3400的组件可按照图34所示进行布置。

内容识别单元3420也可以包括可编程内容转发平面块3428,以及可 以耦合到所述可编程内容转发平面块3422的一个或多个存储块3428。可编 程内容转发平面块3428可以用于实施内容转发和处理功能,例如在开放系统 互连(OSI)模型中的应用层或层3(L3),其中可以基于内容名称或前缀对 内容进行转发,并且可能基于将内容映射到网络业务的其它内容相关信息而 进行转发。此类映射信息可保存在内容识别单元3420或网络单元3400中的 内容表中。可编程内容转发平面块3428可翻译用户的内容请求,并相应地根 据元数据和/或内容名称等从网络或其它网络路由器提取内容,且能够以暂时 等方式将内容存储在存储块3422中。可编程内容转发平面块3428随后可将 缓存内容转发给用户。可编程内容转发平面块3428可以使用软件、硬件或两 者的结合来实施,并且可以在OSi模型中的IP层或层2(L2)中操作。存储 块3422可以包含缓存3424,用于临时存储内容,如订阅者所请求的内容。 另外,存储块3422可以包含长期存储器3426,用于相对长久地存储内容, 如发布者所提交的内容等。例如,缓存3424和长期存储器3426可包括动态 随机存取存储器(DRAM)、固态驱动器(SSD)、硬盘或其组合。

上述网络组件可以在任何通用网络组件上实施,例如计算机或网络部件, 其具有足够的处理能力、存储资源和网络吞吐能力以处理其上的必要工作量。 图35示出了典型的通用网络组件3500,其适用于实施本文本所公开的组件 的一项或多项实施例。网络组件3500包括处理器3502(可以称为中央处理 器或CPU),其与包括辅助存储器3504、只读存储器(ROM)3506、随机 存取存储器(RAM)3508、输入/输出(I/O)设备3510,以及网络连接设备 3512在内的存储设备通信。处理器3502可以作为一个或多个CPU芯片实施, 或者可以为一个或多个专用集成电路(ASIC)的一部分。

辅助存储器3504通常由一个或多个磁盘驱动器或磁带驱动器组成,用于 数据的非易失性存储,且如果RAM3508的大小不足以保存所有工作数据, 那么所述辅助存储器还用作溢流数据存储设备。辅助存储器3504可以用于存 储程序,当选择执行这些程序时,所述程序将加载到RAM3508中。ROM3506 用于存储在程序执行期间读取的指令以及可能读取的数据。ROM3506为非易 失性存储设备,其存储容量相对于辅助存储器3504的较大存储容量而言通常 较小。RAM3508用于存储易失性数据,并且可能用于存储指令。ROM3506 和RAM3508两者的存取速度通常比辅助存储器3504的存取速度快。

本发明公开至少一项实施例,且所属领域的普通技术人员对所述实施例 和/或所述实施例的特征作出的变化、组合和/或修改均在本发明公开的范围 内。因组合、合并和/或省略所述实施例的特征而得到的替代性实施例也在本 发明的范围内。应当理解的是,本发明已明确阐明了数值范围或限制,此类 明确的范围或限制应包括涵盖在上述范围或限制(如从大约1至大约10的范 围包括2、3、4等;大于0.10的范围包括0.11、0.12、0.13等)内的类似数 量级的迭代范围或限制。例如,每当公开具有下限Rl和上限Ru的数值范围 时,具体是公开落入所述范围内的任何数字。具体而言,特别公开所述范围 内的以下数字:R=R1+k*(Ru–R1),其中k为从1%到100%范围内以1%递增 的变量,即,k为1%、2%、3%、4%、7%……70%、71%、72%……97%、 96%、97%、98%、99%或100%。此外,还特此公开了,上文定义的两个R 值所定义的任何数值范围。除非另行说明,术语“大约”表示其后数值的±10% 的范围。相对于权利要求的某一要素,术语“可选择的”使用表示该要素可 以是需要的,或者也可以是不需要的,二者均在所述权利要求的范围内。使 用如“包括”、“包含”和“具有”等较广术语应被理解为提供对如“由…… 组成“、”基本上由……组成“以及”大体上由……组成“等较窄术语的支 持。因此,保护范围不受上文所述的限制,而是由所附权利要求书定义,所 述范围包含所附权利要求书的标的物的所有等效物。每项和每条权利要求作 为进一步公开的内容并入说明书中,且权利要求书是本发明的实施例。所述 揭示内容中的参考的论述并不是承认其为现有技术,尤其是具有在本申请案 的在先申请优先权日期之后的公开日期的任何参考。本发明中所引用的所有 专利、专利申请案和公开案的揭示内容特此以引用的方式并入本文本中,其 提供补充本发明的示例性、程序性或其它细节。

虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或 范围的情况下,本发明所公开的系统和方法可以以许多其它特定形式来体现。 本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文本所给 出的细节。例如,各种元件或部件可以在另一系统中组合或合并,或者某些 特征可以省略或不实施。

此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散 或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法进行 组合或合并。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电 方式、机械方式或其它方式通过某一接口、装置或中间部件间接地耦合或通信。 其它变化、替代和改变的示例可以由本领域的技术人员在不脱离本文精神和所 公开的范围的情况下确定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号