会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 电脑编程 / 别名 / 用于在包括多个路由器的命名数据网络中对数据对象别名化的方法和计算机实现的系统

用于在包括多个路由器的命名数据网络中对数据对象别名化的方法和计算机实现的系统

阅读:1235发布:2020-06-15

IPRDB可以提供用于在包括多个路由器的命名数据网络中对数据对象别名化的方法和计算机实现的系统专利检索,专利查询,专利分析的服务。并且本发明提供了用于(在命名数据网络中)对命名数据对象别名化和用于命名数据网络的实体(例如,命名数据网络的命名图)的系统、方法和计算机程序产品。在各种例子中,命名数据对象的别名化可以采用系统、方法和/或算法的形式在一个或多个命名数据网络中实现。在其它例子中,命名图可以采用系统、方法和/或算法的形式在一个或多个命名数据网络中实现。,下面是用于在包括多个路由器的命名数据网络中对数据对象别名化的方法和计算机实现的系统专利的具体信息内容。

1.一种在计算机系统中实现的方法,用于在包括多个路由器的命名数据网络中对数据对象别名化,其中,所述数据对象中的至少第一数据对象与至少第一别名相关联,所述方法包括:由第一路由器检测对所述第一数据对象的至少一个命名数据对象请求的内容和对所述命名数据对象请求的至少一个响应的内容;以及由所述第一路由器至少部分地基于该请求和该响应中的至少一个的所检测的内容隐式地学习所述第一别名。

2.如权利要求1所述的方法,还包括:将所述第一数据对象与所述第一别名相关联。

3.如权利要求2所述的方法,其中,所述相关联包括:向名称管理服务器注册所述第一别名。

4.如权利要求2所述的方法,还包括:将所述第一别名向至少第二路由器传播。

5.如权利要求1所述的方法,其中,所述请求和所述响应通过所述第一路由器来路由。

6.如权利要求1所述的方法,其中,所述隐式地学习基于以下中的至少一个:(a)确定与所检测的内容相关联的数据对象签名;以及

(b)与所检测的内容相关联的查询标准化。

7.一种在计算机系统网络中实现的方法,用于在包括多个路由器的命名数据网络中根据命名数据对象请求进行数据对象路由,所述方法包括:在第一路由器处接收所述命名数据对象请求;

由所述第一路由器确定由所述命名数据对象请求命名的数据对象是否在所述第一路由器的缓存器中;

如果由所述命名数据对象请求命名的数据对象在所述第一路由器的缓存器中,则由所述第一路由器用所述数据对象进行响应;

如果由所述命名数据对象请求命名的数据对象不在所述第一路由器的缓存器中,则由所述第一路由器确定由与命名数据对象相关联的别名来命名的数据对象的别名副本是否在所述第一路由器的缓存器中;

如果由所述命名数据对象请求命名的数据对象不在所述第一路由器的缓存器中,并且由与命名数据对象相关联的别名来命名的数据对象的别名副本在所述第一路由器的缓存器中,则由所述第一路由器用所述别名副本进行响应;

如果由所述命名数据对象请求命名的数据对象不在所述第一路由器的缓存器中,并且由与命名数据对象相关联的别名来命名的数据对象的别名副本不在所述第一路由器的缓存器中,则由所述第一路由器确定所述数据对象的别名副本在第二路由器处的位置是否是已知的;以及如果由所述命名数据对象请求命名的数据对象不在所述第一路由器的缓存器中,并且由与命名数据对象相关联的别名来命名的数据对象的别名副本不在所述第一路由器的缓存器中,并且所述数据对象的别名副本在所述第二路由器处的位置是已知的,则由第一路由器将所述命名数据对象请求向所述第二路由器的位置路由。

8.如权利要求7所述的方法,还包括:

如果由所述命名数据对象请求命名的数据对象不在所述第一路由器的缓存器中,则由所述第一路由器确定由所述命名数据对象请求命名的数据对象在第三路由器处的位置是否是已知的;

其中,如果由所述命名数据对象请求命名的数据对象在所述第三路由器处的位置是已知的,并且所述第三路由器的位置比所述第二路由器的位置更接近所述第一路由器,则:由所述第一路由器将所述命名数据对象请求向所述第三路由器的位置路由,而不是所述第二路由器的位置。

9.一种在计算机系统中实现的方法,用于在包括多个路由器的命名数据网络中访问数据对象,所述方法包括:在第一路由器处接收标识第一数据对象的命名数据对象请求;

在所述第一路由器处接收命名图的至少一部分,其中,所述命名图标识相关数据对象,所述相关数据对象包括所述第一数据对象,所述命名图规定与所标识的相关数据对象的每一个对应的节点,每个节点表示在一个路由器处的位置;

由所述第一路由器获取所述第一数据对象;以及

当所述第一数据对象被获取时,由所述第一路由器至少部分地基于所接收的命名图来获取至少一个另外的所标识的相关数据对象。

10.如权利要求9所述的方法,其中,所述第一路由器接收整个命名图。

11.如权利要求9所述的方法,还包括:由所述第一路由器至少部分地基于所接收的命名图来作出至少一个路由决策。

12.一种计算机实现的系统,用于在包括多个路由器的命名数据网络中对数据对象别名化,所述系统包括:被配置为由第一路由器检测对第一数据对象的至少一个命名数据对象请求的内容和对所述命名数据对象请求的至少一个响应的内容的模块;以及被配置为由所述第一路由器至少部分地基于该请求和该响应中的至少一个的所检测的内容隐式地学习第一别名的模块。

13.如权利要求12所述的系统,还包括:被配置为将所述第一数据对象与所述第一别名相关联的模块。

14.如权利要求13所述的系统,其中,被配置为将所述第一数据对象与所述第一别名相关联的模块包括:被配置为向名称管理服务器注册所述第一别名的模块。

15.如权利要求13所述的系统,还包括:被配置为向至少第二路由器传播所述第一别名的模块。

16.如权利要求12所述的系统,其中,所述请求和所述响应通过所述第一路由器来路由。

17.如权利要求12所述的系统,其中,隐式地学习基于以下的至少一个:(a)确定与所检测的内容相关联的数据对象签名;

(b)与所检测的内容相关联的查询标准化。

18.一种计算机实现的系统,用于在包括多个路由器的命名数据网络中对数据对象别名化,所述系统包括:被配置为在第一路由器接收命名数据对象请求的模块;

被配置为由所述第一路由器确定由所述命名数据对象请求命名的数据对象是否在所述第一路由器的缓存器中的模块;

被配置为如果由所述命名数据对象请求命名的数据对象在所述第一路由器的缓存器中,则由所述第一路由器用所述数据对象进行响应的模块;

被配置为如果由所述命名数据对象请求命名的数据对象不在所述第一路由器的缓存器中,则由所述第一路由器确定由与命名数据对象相关联的别名命名的数据对象的别名副本是否在所述第一路由器的缓存器中的模块;

被配置为如果由所述命名数据对象请求命名的数据对象不在所述第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本在所述第一路由器的缓存器中,则由所述第一路由器用所述别名副本进行响应的模块;

被配置为如果由所述命名数据对象请求命名的数据对象不在所述第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本不在所述第一路由器的缓存器中,则由所述第一路由器确定所述数据对象的别名副本在第二路由器处的位置是否已知的模块;和被配置为如果由所述命名数据对象请求命名的数据对象不在所述第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本不在所述第一路由器的缓存器中,并且所述数据对象的别名副本在所述第二路由器处的位置是已知的,则由所述第一路由器将所述命名数据对象请求向所述第二路由器的位置路由的模块。

19.如权利要求18所述的系统,还包括:

被配置为如果由所述命名数据对象请求命名的数据对象不在所述第一路由器的缓存器中,则由所述第一路由器确定由所述命名数据对象请求命名的数据对象在第三路由器处的位置是否已知的模块;

其中,如果由所述命名数据对象请求命名的数据对象在所述第三路由器处的位置是已知的,并且所述第三路由器的所述位置比所述第二路由器的所述位置更接近于所述第一路由器,则:由所述第一路由器将所述命名数据对象请求向所述第三路由器的位置路由,而不是所述第二路由器的位置。

20.一种计算机实现的系统,用于在包括多个路由器的命名数据网络中对数据对象别名化,所述系统包括:被配置为在第一路由器处接收命名数据对象请求的模块,其中,所述命名数据对象请求标识第一数据对象;

被配置为在所述第一路由器处接收命名图的至少一部分的模块,其中,所述命名图标识相关数据对象,所述相关数据对象包括所述第一数据对象,所述命名图规定与所标识的相关数据对象的每一个对应的节点,每个节点表示在一个路由器处的位置;

被配置为由所述第一路由器获取所述第一数据对象的模块;以及

被配置为当所述第一数据对象被获取时,由所述第一路由器至少部分地基于所接收的命名图来获取至少一个另外的所标识的相关数据对象的模块。

21.如权利要求20所述的系统,其中,所述第一路由器接收整个命名图。

22.如权利要求20所述的系统,还包括:由所述第一路由器至少部分地基于所接收的命名图作出至少一个路由决策。

23.一种计算机实现的系统,用于在包括多个路由器的命名数据网络中对数据对象别名化,所述系统包括:第一路由器,其中:

所述第一路由器被配置为检测对第一数据对象的至少一个命名数据对象请求的内容和对所述命名数据对象请求的至少一个响应的内容;

所述第一路由器被配置为至少部分地基于所述请求和所述响应中的至少一个的所检测的内容隐式地学习第一别名。

24.一种计算机实现的系统,用于在包括多个路由器的命名数据网络中根据命名数据对象请求进行数据对象路由,所述系统包括:第一路由器,其中:

所述第一路由器被配置为接收所述命名数据对象请求;

所述第一路由器被配置为确定由所述命名数据对象请求命名的数据对象是否在所述第一路由器的缓存器中;

所述第一路由器被配置为如果由所述命名数据对象请求命名的数据对象在所述第一路由器的缓存器中,则用由所述命名数据对象请求命名的数据对象进行响应;

所述第一路由器被配置为如果由所述命名数据对象请求命名的数据对象不在所述第一路由器的缓存器中,则确定由与命名数据对象相关联的别名命名的数据对象的别名副本是否在所述第一路由器的缓存器中;

所述第一路由器被配置为如果由所述命名数据对象请求命名的数据对象不在所述第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本在所述第一路由器的缓存器中,则用所述别名副本进行响应;

所述第一路由器被配置为如果由所述命名数据对象请求命名的数据对象不在所述第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本不在所述第一路由器的缓存器中,则确定所述数据对象的别名副本在第二路由器处的位置是否已知;

所述第一路由器被配置为如果由所述命名数据对象请求命名的数据对象不在所述第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本不在所述第一路由器的缓存器中,并且所述数据对象的别名副本在所述第二路由器处的位置是已知的,则将所述命名数据对象请求向所述第二路由器的位置路由。

25.一种计算机实现的系统,用于在包括多个路由器的命名数据网络中访问数据对象,所述系统包括:第一路由器,其中:

所述第一路由器被配置为接收命名数据对象请求,其标识第一数据对象;

所述第一路由器被配置为接收命名图的至少一部分,其中,所述命名图标识相关数据对象,所述相关数据对象包括第一数据对象,所述命名图规定与所标识的相关数据对象的每一个对应的节点,每个节点表示在一个路由器处的位置;

所述第一路由器被配置为获取所述第一数据对象;

所述第一路由器被配置为当所述第一数据对象被获取时,至少部分地基于所接收的命名图,获取至少一个另外的所标识的相关数据对象。

说明书全文

用于在包括多个路由器的命名数据网络中对数据对象别名

化的方法和计算机实现的系统

技术领域

[0001] 本发明通常涉及(命名数据网络中)数据对象的别名化的领域。
[0002] 本发明通常还涉及用于命名数据网络的实体(例如,用于命名数据网络的命名图)的领域。
[0003] 在各种例子中,命名数据对象的别名化可以采用系统、方法和/或算法的形式在一个或多个命名数据网络中实现。
[0004] 在其它实例中,命名图可以采用系统、方法和/或算法的形式在一个或多个命名数据网络中实现。

背景技术

[0005] 在某些编程语言中提供别名化。这种别名化通常描述存储器中的数据位置可通过程序中的不同符号名称来访问的情形。因此,通过一个名称来修改数据隐式地修改了与所有别名化了的名称相关的值,这可能不是程序员所期望的。
[0006] 在某些关系型数据库中也提供别名化(例如,用于关系型数据库的替换名称、通过通信协议、主机名称和数据库实例的标识、用于远程系统上的单个关系型数据库的多个实体)。
[0007] 命名数据网络(在此有时也称为“NDN”)是请求(例如来自用户或代理)使用诸如例如字母数字字符的名称(相对于传统IP网络中的机器地址)被路由到数据实体(或数据对象)的范例。在NDN范例中,用户(或使用者)向数据生产者请求命名数据(这种请求有时称为“interest”)。根据请求中数据的名称,用户的请求通过一个或多个路由器(可能通过一个或多个NDN代理)向数据生产者转发。接着,数据生产者用所请求的数据进行响应。
[0008] 图1示出传统的命名数据网络体系结构100的例子。如该例子所示,用户101A、101B和101C通过代理105A、105B、105C、105D、105E、105F、105G和/或105H与生产者103A、
103B和103C进行交互。
[0009] 仍参照图1,在各种实体之间的通信(例如,请求、响应、数据对象)(用实体间的实线表示)可以是双向的。另外,通信可以通过因特网、内部网、局域网、广域网和/或任意其它所期望的通信信道执行。
[0010] 应当注意,尽管图1示出各种实体进行通信,但应当理解,图1实际上是指由每个实体所拥有、租用、操作、使用、持有和/或控制的计算机系统等进行的通信。
[0011] 然而,在这种NDN体系结构100中,单个对象可用多种方式指代。在这一点,请求者(例如,用户、使用者、代理)可能并不明确地知道指定数据对象的名称。因此,数据对象路由可能使用不理想的路由来执行(例如,没有利用某些缓存器)。

发明内容

[0012] 本发明通常涉及用于(在命名数据网络中)对命名数据对象别名化的系统、方法和计算机程序产品。
[0013] 本发明通常还涉及命名图(用于命名数据网络)的领域。
[0014] 在一个实施例中,提供一种在计算机系统网络中实现的方法,用于在包括多个路由器的命名数据网络中对数据对象别名化,其中,至少第一数据对象与至少第一别名相关联,该方法包括:由第一路由器检测对第一数据对象的至少一个命名数据对象请求的内容和对该命名数据对象请求的至少一个响应的内容;以及由第一路由器至少部分地根据该请求和该响应中的至少一个的所检测的内容隐式地学习第一别名。
[0015] 在另一个实施例中,提供一种在计算机系统网络中实现的方法,用于在包括多个路由器的命名数据网络中基于命名数据对象请求进行数据对象路由,该方法包括:在第一路由器处接收命名数据对象请求;由第一路由器确定由命名数据对象请求命名的数据对象是否在第一路由器的缓存器中;如果由命名数据对象请求命名的数据对象在第一路由器的缓存器中,则由第一路由器用该数据对象进行响应;如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,则由第一路由器确定由与命名数据对象相关联的别名命名的数据对象的别名副本是否在第一路由器的缓存器中;如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本在第一路由器的缓存器中,则由第一路由器用别名副本进行响应;如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本不在第一路由器的缓存器中,则由第一路由器确定数据对象的别名副本第二路由器处的位置是否已知;如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本不在第一路由器的缓存器中,并且数据对象的别名副本在第二路由器处的位置是已知的,则由第一路由器将命名数据对象请求向第二路由器的位置路由。
[0016] 在另一个实施例中,提供一种在计算机系统中实现的方法,用于在包括多个路由器的命名数据网络中访问数据对象,该方法包括:在第一路由器处接收命名数据对象请求,其标识第一数据对象;在第一路由器处接收命名图的至少一部分,其中,命名图标识相关数据对象,相关数据对象包括第一数据对象,命名图规定与所标识的相关数据对象的每一个对应的节点,每个节点表示在一个路由器处的位置;由第一路由器获取第一数据对象;当第一数据对象被获取时,由第一路由器至少部分地根据所接收的命名图获取至少一个另外的所标识的相关数据对象。
[0017] 在另一个实施例中,提供一种计算机可读存储介质,其有形地体现可由计算机执行的用于在包括多个路由器的命名数据网络中对数据对象别名化的程序指令,其中,至少第一数据对象与至少第一别名相关联,程序指令在执行时实现以下步骤:由第一路由器检测对第一数据对象的至少一个命名数据对象请求的内容和对该命名数据对象请求的至少一个响应的内容;以及由第一路由器至少部分地根据该请求和该响应中的至少一个的所检测的内容隐式地学习第一别名。
[0018] 在另一个实施例中,提供一种计算机可读存储介质,其有形地体现可由计算机执行的用于在包括多个路由器的命名数据网络中基于命名数据对象请求进行数据对象路由的程序指令,程序指令在执行时实现下列步骤:在第一路由器处接收命名数据对象请求;由第一路由器确定由命名数据对象请求命名的数据对象是否在第一路由器的缓存器中;如果由命名数据对象请求命名的数据对象在第一路由器的缓存器中,则由第一路由器用该数据对象进行响应;如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,则由第一路由器确定由与命名数据对象相关联的别名命名的数据对象的别名副本是否在第一路由器的缓存器中;如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本在第一路由器的缓存器中,则由第一路由器用别名副本进行响应;如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本不在第一路由器的缓存器中,则由第一路由器确定数据对象的别名副本第二路由器处的位置是否已知;如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本不在第一路由器的缓存器中,并且数据对象的别名副本在第二路由器处的位置是已知的,则由第一路由器将命名数据对象请求向第二路由器的位置路由。
[0019] 在另一个实施例中,提供一种计算机可读存储介质,其有形地体现可由计算机执行的用于在包括多个路由器的命名数据网络中访问数据对象的程序指令,程序指令在执行时实现下列步骤:在第一路由器处接收命名数据对象请求,其标识第一数据对象;在第一路由器处接收命名图的至少一部分,其中,命名图标识相关数据对象,相关数据对象包括第一数据对象,命名图规定与所标识的相关数据对象的每一个对应的节点,每个节点表示在一个路由器处的位置;由第一路由器获取第一数据对象;当第一数据对象被获取时,由第一路由器至少部分地根据所接收的命名图获取至少一个另外的所标识的相关数据对象。
[0020] 在另一个实施例中,提供一种计算机实现的系统,用于在包括多个路由器的命名数据网络中对数据对象别名化,该系统包括:第一路由器,其中,第一路由器被配置为检测对第一数据对象的至少一个命名数据对象请求的内容和对该命名数据对象请求的至少一个响应的内容;第一路由器被配置为至少部分地根据该请求和该响应中的至少一个的所检测的内容隐式地学习第一别名。
[0021] 在另一个实施例中,提供一种计算机实现的系统,用于在包括多个路由器的命名数据网络中基于命名数据对象请求进行数据对象路由,该系统包括:第一路由器,其中,第一路由器被配置为接收命名数据对象请求;第一路由器被配置为确定由命名数据对象请求命名的命名数据对象是否在第一路由器的缓存器中;第一路由器被配置为如果由命名数据对象请求命名的数据对象在第一路由器的缓存器中,则用由命名数据对象请求命名的数据对象进行响应;第一路由器被配置为如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,则确定由与命名数据对象相关联的别名命名的数据对象的别名副本是否在第一路由器的缓存器中;第一路由器被配置为如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本在第一路由器的缓存器中,则用别名副本进行响应;第一路由器被配置为如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本不在第一路由器的缓存器中,则由第一路由器确定数据对象的别名副本第二路由器处的位置是否已知;第一路由器被配置为如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本不在第一路由器的缓存器中,并且数据对象的别名副本在第二路由器处的位置是已知的,则将命名数据对象请求向第二路由器的位置路由。
[0022] 在另一个实施例中,提供一种计算机实现的系统,用于在包括多个路由器的命名数据网络中访问数据对象,该系统包括:第一路由器,其中,第一路由器被配置为接收命名数据对象请求,其标识第一数据对象;第一路由器被配置为接收命名图的至少一部分,其中,命名图标识相关数据对象,相关数据对象包括第一数据对象,命名图规定与所标识的相关数据对象的每一个对应的节点,每个节点表示在一个路由器处的位置;第一路由器被配置为获取第一数据对象;第一路由器被配置为当第一数据对象被获取时,至少部分地根据所接收的命名图获取至少一个另外的所标识的相关数据对象。

附图说明

[0023] 根据以下结合附图的详细说明,本发明的各种目的、特征和优点对于本领域的普通技术人员变得显而易见,其中:
[0024] 图1描述传统的命名数据体系结构的框图;
[0025] 图2描述根据本发明的实施例的路由和转发的流程图;
[0026] 图3描述根据本发明的实施例的与命名图有关的框图;
[0027] 图4描述根据本发明的实施例的与命名图有关的框图;
[0028] 图5描述根据本发明的实施例的方法的流程图;
[0029] 图6A和6B描述根据本发明的实施例的方法的流程图;
[0030] 图7描述根据本发明的实施例的方法的流程图;
[0031] 图8描述根据本发明的实施例的系统的框图;
[0032] 图9描述根据本发明的实施例的系统的框图;
[0033] 图10描述根据本发明的实施例的系统的框图。

具体实施方式

[0034] 为了说明的目的,术语“数据对象”意在指代指定长度的字节序列。这种数据对象例如可以是用户可请求的单个可寻址内容。在另一个例子中,数据对象可以是文件的一部分、或者文件、或者文件集合、或者动态生成的字节序列。在另一个例子中,数据对象可以是音频文件、视频文件或者网页。在另一个实例中,数据对象可以是大文件的一部分(例如,电影文件可被分成多个部分,其中每个部分可单独被寻址和下载)。
[0035] 为了说明的目的,术语“命名图”意在指代具有数据实体和/或结构的图,其包括多个命名数据对象和这些命名数据对象之间的关系。
[0036] 如在此所描述的,提供了在NDN中创建、维护和解决命名数据对象之间的关系的机制。这些关系可以是静态的(在这种情况下,关系可以被预先配置)和/或动态的(在这种情况下,关系例如可由网络来学习)。这种命名对象之间的关系的一个例子是别名,即,同一个数据对象可通过多种方式寻址。例如,用户可请求下载与名字为Alice的人有关的所有记录。另一用户可能想要下载同样的数据,即,Alice的记录,但可能将Alice称为Bob的经理。各种实施例提供了由NDN创建、维护和解决这种命名对象关系(别名是一个例子)以进行有效获取。
[0037] 如在此所描述的,各种实施例能够实现动态的别名感知的路由,其中,NDN代理以动态的方式推断数据对象别名,如果所请求的数据对象(或数据对象别名)不在该代理的缓存器中,则代理转发请求。
[0038] 如在此所描述的,各种实施例提供了使用别名信息以在命名数据网络中执行路由/转送(这使得网络能够观察并推断数据对象别名)。在各种例子中,这种实施例不是端点驱动的,而是在NDN代理处执行。
[0039] 如在此所描述的,在各种实施例中,NDN代理观察并推断名称的句法/语义关系,即“别名”。“Alice”的一个示例性静态别名是“Charlie的女儿”。“Alice”的一个示例性动态别名是“Bob的经理”。在一个例子中,“纽约霍桑(Hawthorne)的天气”的语义别名是“邮编10532的天气”。
[0040] 如在此所描述的,在各种实施例中,数据对象被缓存在代理实体处的别名表结构中。在一个例子中,如果请求对命名别名感到满意,则未来的请求不被转发。另外,路由可以不仅基于所请求的数据对象名称来执行,而且可以基于路由器的数据对象别名的知识来执行。
[0041] 现在说明建立别名表(例如,在存储器和/或缓存器中)的各种例子。在这一点,NDN代理/路由器可以采用几种方式之一建立别名表:(a)静态的-发布者向一个或多个名称管理服务器注册数据对象别名(然后,数据对象别名可以例如被传播以形成表);(b)数据签名-代理观察数据对象请求/响应,并对具有相同签名的数据对象建立别名;(c)标准化-代理使用查询标准化以标识所期望的数据的别名,例如使用布尔表达式简化。
[0042] 现在说明路由和转发的一个通用例子。在该例子中,当数据对象请求到达时:(a)如果代理在其相关联的缓存器中具有数据对象或其别名,则数据对象被转发到请求者—否则,(b)如果代理具有别名的知识,则代理根据别名将请求路由到最近的数据对象位置(代理还添加别名信息以将别名信息传播给其它代理)--否则,(c)如果代理在缓存器中没有数据对象或者别名信息,则代理将请求转发到路径的下一跳。
[0043] 在一个例子中,交换机制可确定路径上的下一跳。在该例子中,交换机被配置为根据分组上的目标地址将分组转发到下一跳交换机。端到端路径通过在数据中心网络(“DCN”)中使用的路由协议确定。现有机制的概况在下面的文件中提供:http://www.cs.cmu.edu/~xzhang1/doc/datacenter-routing.pdf
[0044] 现在参照图2,说明在用户、代理和/或生产者之间路由和转发请求、响应和/或数据对象的更具体的例子。如该例子所示,(针对数据对象的)命名数据请求由用户进行并在代理处接收(见标记号201)。根据所请求的数据对象(在图中简称为“数据”)是否在代理/路由器处存在来(例如,由代理/路由器)做出决定(见标记号203)。如果答案是“是”,则代理/路由器用数据进行响应(见标记号205)。如果答案是“否”,则判断(例如,由代理/路由器)别名数据是否在代理/路由器处存在(见标记号207)。如果在标记号207处的答案是“是”,则代理/路由器用别名数据进行响应(见标记号209)。
[0045] 现在返回到标记号207,如果答案是“否”,则判断(例如,由代理/路由器)命名数据的位置是否是已知的(见标记号211)。如果在标记号211处的答案是“否”,则判断(例如,由代理/路由器)别名数据的位置是否是已知的(见标记号213)。如果在标记号213处的答案是“否”,则向所有输出接口广播(例如,由代理/路由器)命名数据请求(见标记号215)。
[0046] 现在返回到标记号211,如果答案是“是”,则判断(例如,由代理/路由器)别名数据的位置是否是已知的(见标记号217)。如果在标记号217处的答案是“否”,则命名数据请求被转发(例如,被代理/路由器)到朝着数据的下一跳(见标记号219)。如果在标记号217处的答案是“是”,则判断(例如,由代理/路由器)别名数据是否比原始数据更近(见标记号221)。在该上下文中,“更近”是指路由距离。例如,如果跳数是用于路由的量度,则距离为k跳的别名比距离是k+1跳的对象更近。如果在标记号211处的答案是“否”,则命名数据请求被转发(例如,被代理/路由器)到朝着数据的下一跳(见标记号219)。如果在标记号221处的答案是“是”,则命名数据请求被转发(例如,被代理/路由器)到朝着别名数据的下一跳(见标记号223)。
[0047] 如在此所描述的,提供了创建命名图的机制(下面更详细地描述)。在一个实施例中,客户端应用请求一个命名数据对象,网络不仅获取所请求的数据对象,而且获取命名图(部分或完整)。作为例子,当浏览器请求网页时,具有若干内嵌URL的网页可被下载,随后,浏览器发布对这些数据对象的每一个的请求。在一个实施例中,网络自动地获取命名图(无需浏览器应用的辅助),因此,能够实现更快的响应时间以及数据对象和关系在一个或多个中间路由器中的缓存。
[0048] 如在此所描述的,新的实体被引入到NDN范例中,即,命名图。命名图包括命名数据对象以及在命名数据对象之间存在的关系。有几种技术来创建命名图,它们将在下面更详细地讨论。命名图可以在NDN中以静态的方式创建和/或以动态的方式创建并更新。
[0049] 命名图的一个特定例子是从命名对象与其别名之间的一一对应关系中得到的图。根据句法和语义上下文,命名对象可具有一个或多个别名。数据发布者会公布规范对象名称以及别名列表,其然后由在NDN体系结构中存在的命名服务器(例如,参见图10的控制器
1050)解析。如前面关于Alice和Bob的例子,数据发布者会公布Alice的记录以及别名列表,诸如Bob的经理和Charlie的雇员。当用户请求Bob的经理的记录时,名称解析服务器(例如,图10的控制器1050)会解析该对Alice的记录的请求。转发请求和响应的中间NDN路由器学习这些别名,以使得这些路由器缓存器可以满足未来的请求。
[0050] 命名图还(或者可替换地)可以根据在命名数据对象之间存在的依赖性和/或关系来构建。依赖性和/或关系可以是显式或隐式的。在一个特定例子中,具有内嵌URL的网页可以形成(静态的)命名图。在另一个特定例子中,作为多个部分可用的大数据对象(例如,电影视频)可形成命名图。命名图的另一个特定例子是属于分层命名方案中的树的数据对象。除了这些显式的关系外,在数据对象之间也可以有隐式(并且可能短期的)关系,其可以(例如由路由器)根据对命名数据对象的请求观察到(命名图可根据这种关系以动态的方式创建和/或更新)。例如,路由器可以观察命名对象请求和响应,并收集它们之间在发生时间的接近性上的关系,以创建命名对象之间的关系图,其表示在不同命名对象之间同时发生的可能性。
[0051] 当客户端请求数据对象时,该请求被路由到生产者,并根据配置在网络中的路由协议,数据对象从在缓存器中具有该数据对象的中间路由器中获取。使用在此描述的命名图机制,路由器不仅用所请求的数据对象进行响应,而且用命名图(部分或完整的)进行响应。
[0052] 现在说明图3和图4。在图3所示的例子中,有路由器R1、R2、R3和R4(见标记号301、303、305和307)。路由器R1、R2、R3和R4通过NDA网络或体系结构(见标记号309)进行通信。另外,各种数据对象位于每个路由器的缓存器中。具体地,在该例子中,在路由器R2、R3和R4的每一个上有数据对象0(见标记号320A、320B和320C)。另外,在路由器R2、R3和R4的每一个上有数据对象1(见标记号322A、322B和322C)。此外,在路由器R2处有数据对象2(见标记号324A)。此外,在路由器R3和R4的每一个上有数据对象3(见标记号326A和326B)。此外,在路由器R4处有数据对象4(见标记号328A)。
[0053] 仍参照图3,在该例子中可以看出,路由器R1具有对在路由器R1的本地缓存器中不存在的对象0的请求(在一个例子中,该请求可能已经向所有路由器广播)。R1的路由协议返回一个或多个可获取数据对象0的路径。当R1在所选路径上发布对数据对象0的请求时,每个可达路由器返回在其缓存器中存在的用于数据对象0的命名图。如果路由器不能路由命名图的整个内容,则该路由器创建命名图的子图,并路由该子图的组成。在所选路径上的请求结束时,R1具有与服务其数据的路由器相同的命名图(例如,来自R2的0、1、2),但由于另外的请求针对相关的数据对象(例如,1、3、4),因此,R1以动态的方式建立用于数据对象0的命名图,如图4所示(其描述动态创建的命名图400的例子)。
[0054] 另外,路由决策可被命名图影响。例如(返回到图3),当对数据对象0的请求由R1进行时,R1可选择从R2、R3或R4获取对象0。由于R1可获取“强相关数据对象”,因此,简单的决策可由R1作出,诸如从R2获取数据对象0。另一个决策策略例如是从R2和R3两者获取数据对象0,以得到更相关的组件并达到负载平衡。
[0055] 在在此讨论的上下文中,“强相关数据对象”的含义如下。假定有两个对象0和1。在对象0被获取的情况下,如果对象1稍后也将获取的概率高,例如,电影的后续数据,则这两个对象是“强相关的”。例如,0.8的概率阈值可用于从那些不是强相关的数据对象中去掉强相关数据对象对。这种信息可以例如通过专用预测分析和/或历史信息来获得。
[0056] 现在参照图5,示出了在计算机系统(或网络)中实现的方法,用于在命名数据网络中对数据对象别名化。如图5所示,计算机系统可包括多个路由器,至少第一数据对象可与至少第一别名相关联。另外,如图5所示,该方法包括:步骤501-由第一路由器检测对第一数据对象的至少一个命名数据对象请求的内容和对该命名数据对象请求的至少一个响应的内容;步骤503-由第一路由器至少部分地根据由第一路由器至少部分地根据该请求和该响应中的至少一个的所检测的内容隐式地学习第一别名。
[0057] 在一个特定例子中,由第一路由器学习第一别名可至少部分地基于请求和响应两者的所检测的内容。
[0058] 在一个例子中,任何步骤可以按所述的顺序执行或按另一种顺序执行。
[0059] 现在参照图6A和6B,示出了在计算机系统(或网络)中实现的方法,用于在包括多个路由器的命名数据网络中基于命名数据对象请求的数据对象路由。如图6A和6B所示,该方法包括:步骤601-在第一路由器处接收命名数据对象请求;步骤603-由第一路由器确定由命名数据对象请求命名的数据对象是否在第一路由器的缓存器中;步骤605-如果由命名数据对象请求命名的数据对象在第一路由器的缓存器中,则由第一路由器用该数据对象进行响应;步骤607-如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,则由第一路由器确定由与命名数据对象相关联的别名命名的数据对象的别名副本是否在第一路由器的缓存器中;步骤609-如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本在第一路由器的缓存器中,则由第一路由器用别名副本进行响应;步骤611-如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本不在第一路由器的缓存器中,则由第一路由器确定数据对象的别名副本在第二路由器处的位置是否已知;步骤613-如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本不在第一路由器的缓存器中,并且数据对象的别名副本在第二个路由器处的位置已知,则由第一路由器将命名数据对象请求向第二路由器的位置路由。
[0060] 在一个例子中,任何步骤可以按所述的顺序执行或按另一种顺序执行。
[0061] 现在参照图7,示出在计算机系统(或网络)中实现的方法,用于在包括多个路由器的命名数据网络中访问数据对象。如图7所示,该方法包括:步骤701-在第一路由器接收命名数据对象请求,其标识第一数据对象;步骤703-在第一路由器接收命名图的至少一部分,其中,命名图标识相关数据对象,相关数据对象包括第一数据对象,命名图规定与每个所标识的相关数据对象对应的节点,每个节点表示在一个路由器处的位置;步骤705-由第一路由器获取第一数据对象;步骤707-当第一数据对象被获取时,由第一路由器至少部分地根据所接收的命名图来获取至少一个另外的所标识的相关数据对象。在一个实施例中,由第一路由器获取至少一个另外的所标识的相关数据对象不需要与第一数据对象被获取的时间准确地相同。
[0062] 在一个例子中,任何步骤可以按所述的顺序执行或按另一种顺序执行。
[0063] 参照图8,示出计算机实现的系统,用于在包括多个路由器的命名数据网络中对数据对象别名化。如图8所示,该系统包括第一路由器801。第一路由器可被配置为检测对第一数据对象的至少一个命名数据对象请求的内容和对该命名数据对象请求的至少一个响应的内容;第一路由器可被配置为至少部分地根据所检测的内容隐式地学习第一别名。
[0064] 再次参照图8,可以看出,该系统还可(或可选择地)提供在包括多个路由器的命名数据网络中根据命名数据对象请求来进行数据对象路由。即,第一路由器801可:被配置为接收命名数据对象请求;被配置为确定由命名数据对象请求命名的数据对象是否在第一路由器的缓存器中;被配置为如果由命名数据对象请求命名的数据对象在第一路由器的缓存器中,则用由命名数据对象请求命名的数据对象进行响应;被配置为如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,则确定由与命名数据对象相关联的别名命名的数据对象的别名副本是否在第一路由器的缓存器中;被配置为如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本在第一路由器的缓存器中,则用别名副本进行响应;被配置为如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本不在第一路由器的缓存器中,确定数据对象的别名副本在第二路由器处的位置是否已知;被配置为如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本不在第一路由器的缓存器中,并且数据对象的别名副本在第二路由器处的位置已知,则将命名数据对象请求向第二路由器的位置路由。
[0065] 再次参照图8,可以看出,该系统还可(或可选择地)提供在包括多个路由器的命名数据网络中访问数据对象,其中,第一路由器801可:被配置为接收命名数据对象请求,其标识第一数据对象;被配置为接收命名图的至少一部分,其中,命名图标识相关数据对象,相关数据对象包括第一数据对象,命名图规定与每个所标识的相关数据对象对应的节点,每个节点表示在一个路由器处的位置;被配置为获取第一数据对象;被配置为当第一数据对象被获取时,至少部分地根据所接收的命名图来获取至少一个另外的所标识的相关数据对象。
[0066] 仍参照图8,任何通信可通过网络803执行。网络803可包括因特网、内部网、局域网、广域网和/或任何其它期望的通信信道。
[0067] 现在参照图9,该图示出了根据本发明的实施例的计算机系统900的硬件配置。如图所示,该硬件配置具有至少一个处理器或中央处理单元(CPU)911。CPU911可通过系统总线912互连到随机存取存储器(RAM)914、只读存储器(ROM)916、输入/输出(I/O)适配器918(用于将诸如磁盘单元921和磁带驱动器940的外围设备连接到总线912)、用户接口适配器922(用于将键盘924、鼠标926、扬声器928、麦克风932和/或其它用户接口设备连接到总线912)、用于将系统900连接到数据处理网络、因特网、内部网、局域网(LAN)等的通信适配器934和用于将总线912连接到显示设备938和/或打印机939(例如,数码打印机等)的显示适配器936。
[0068] 现在参照图10,示出根据实施例的示例性命名数据网络体系结构1000。如该例子所示,用户1001A、1001B和1001C通过交换机(或路由器)1005A、1005B、1005C、1005D、1005E、1005F、1005G和/或1005H与生产者1003A、1003B和1003C进行交互。
[0069] 另外,控制器1050可包括用于提供路由、名称管理、策略和/或安全的机制。
[0070] 仍参照图10,各种实体之间的通信(例如,请求、响应、数据对象)(由实体间的实线表示)可以是双向的。另外,各种实体与控制器1050之间的通信可以是双向的(需要指出,控制器1050可与任何期望数量的用户、交换机、路由器和/或生产者进行通信)。另外,通信可通过因特网、内部网、局域网、广域网和/或任何其它期望的通信信道执行。
[0071] 应当注意,尽管图10示出了各种实体进行通信,但应当理解,图10实际上是指由每个实体所拥有、租用、操作、使用、持有和/或控制的计算机系统等进行的通信。
[0072] 在一个实施例中,提供了一种在计算机系统中实现的方法,用于在包括多个路由器的命名数据网络中对数据对象别名化,其中,至少第一数据对象与至少第一别名相关联,该方法包括:由第一路由器检测对第一数据对象的至少一个命名数据对象请求的内容和对该命名数据对象请求的至少一个响应的内容;以及由第一路由器至少部分地根据该请求和该响应中的至少一个的所检测的内容隐式地学习第一别名。
[0073] 在一个例子中,该方法包括将第一数据对象与第一别名相关联。
[0074] 在另一个例子中,相关联包括向名称管理服务器注册第一别名。
[0075] 在另一个例子中,该方法还包括将第一别名向至少第二路由器传播。
[0076] 在另一个例子中,请求和响应通过第一路由器来路由。
[0077] 在另一个例子中,隐式地学习基于以下的至少一个:(a)确定与所检测的内容相关联的数据对象签名;(b)与所检测的内容相关联的查询标准化。
[0078] 在另一个实施例中,提供了一种在计算机系统网络中实现的方法,用于在包括多个路由器的命名数据网络中根据命名数据对象请求进行数据对象路由,该方法包括:在第一路由器处接收命名数据对象请求;由第一路由器确定由命名数据对象请求命名的数据对象是否在第一路由器的缓存器中;如果由命名数据对象请求命名的数据对象在第一路由器的缓存器中,则由第一路由器用该数据对象进行响应;如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,则由第一路由器确定由与命名数据对象相关联的别名命名的数据对象的别名副本是否在第一路由器的缓存器中;如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本在第一路由器的缓存器中,则由第一路由器用别名副本进行响应;如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本不在第一路由器的缓存器中,则由第一路由器确定数据对象的别名副本在第二路由器处的位置是否已知;如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本不在第一路由器的缓存器中,并且数据对象的别名副本在第二路由器处的位置已知,则由第一路由器将命名数据对象请求向第二路由器的位置路由。
[0079] 在一个例子中,该方法还包括:如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,则由第一路由器确定由命名数据对象请求命名的数据对象在第三路由器处的位置是否已知;其中,如果由命名数据对象请求命名的数据对象在第三路由器处的位置已知,并且第三路由器的位置比第二路由器的位置更接近第一路由器,则由第一路由器将命名数据对象请求向第三路由器的位置路由,而不是第二路由器的位置。
[0080] 在另一个实施例中,提供一种在计算机系统中实现的方法,用于在包括多个路由器的命名数据网络中访问数据对象,该方法包括:在第一路由器处接收命名数据对象请求,其标识第一数据对象;在第一路由器处接收命名图的至少一部分,其中,命名图标识相关数据对象,相关数据对象包括第一数据对象,命名图规定与每个所标识的相关数据对象对应的节点,每个节点表示在一个路由器处的位置;由第一路由器获取第一数据对象;当第一数据对象被获取时,由第一路由器至少部分地根据所接收的命名图来获取至少一个另外的所标识的相关数据对象。
[0081] 在一个例子中,第一路由器接收整个命名图。
[0082] 在另一个例子中,该方法还包括由第一路由器至少部分地根据所接收的命名图作出至少一个路由决策。
[0083] 在另一个实施例中,提供了一种计算机可读存储介质,其有形地体现可由计算机执行的用于在包括多个路由器的命名数据网络中对数据对象别名化的程序指令,其中,至少第一数据对象与至少第一别名相关联,程序指令在执行时实现以下步骤:由第一路由器检测对第一数据对象的至少一个命名数据对象请求的内容和对该命名数据对象请求的至少一个响应的内容;以及由第一路由器至少部分地根据该请求和该响应中的至少一个的所检测的内容隐式地学习第一别名。
[0084] 在一个例子中,程序指令在执行时还实现将第一数据对象与第一别名相关联的步骤。
[0085] 在另一个例子中,相关联包括向名称管理服务器注册第一别名。
[0086] 在另一个例子中,程序指令在执行时还实现将第一别名向至少第二路由器传播的步骤。
[0087] 在另一个例子中,请求和响应通过第一路由器路由。
[0088] 在另一个例子中,隐式地学习基于以下的至少一个:(a)确定与所检测的内容相关联的数据对象签名;(b)与所检测的内容相关联的查询标准化。
[0089] 在另一个实施例中,提供了一种计算机可读存储介质,其有形地体现可由计算机执行的用于在包括多个路由器的命名数据网络中基于命名数据对象请求进行数据对象路由的程序指令,程序指令在执行时实现下列步骤:在第一路由器处接收命名数据对象请求;由第一路由器确定由命名数据对象请求命名的数据对象是否在第一路由器的缓存器中;如果由命名数据对象请求命名的数据对象在第一路由器的缓存器中,则由第一路由器用该数据对象进行响应;如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,则由第一路由器确定由与命名数据对象相关联的别名命名的数据对象的别名副本是否在第一路由器的缓存器中;如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本在第一路由器的缓存器中,则由第一路由器用别名副本进行响应;如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本不在第一路由器的缓存器中,则由第一路由器确定数据对象的别名副本第二路由器处的位置是否已知;如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本不在第一路由器的缓存器中,并且数据对象的别名副本在第二路由器处的位置是已知的,则由第一路由器将命名数据对象请求向第二路由器的位置路由。
[0090] 在一个例子中,程序指令在执行时还实现以下步骤:如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,则由第一路由器确定由命名数据对象请求命名的数据对象在第三路由器处的位置是否已知;其中,如果由命名数据对象请求命名的数据对象在第三路由器处的位置已知,并且第三路由器的位置比第二路由器的位置更接近第一路由器,则由第一路由器将命名数据对象请求向第三路由器的位置路由,而不是第二路由器的位置。
[0091] 在另一个实施例中,提供一种计算机可读存储介质,其有形地体现可由计算机执行的用于在包括多个路由器的命名数据网络中访问数据对象的程序指令,程序指令在执行时实现下列步骤:在第一路由器处接收命名数据对象请求,其标识第一数据对象;在第一路由器处接收命名图的至少一部分,其中,命名图标识相关数据对象,相关数据对象包括第一数据对象,命名图规定与所标识的相关数据对象的每一个对应的节点,每个节点表示在一个路由器处的位置;由第一路由器获取第一数据对象;当第一数据对象被获取时,由第一路由器至少部分地根据所接收的命名图获取至少一个另外的所标识的相关数据对象。
[0092] 在另一个例子中,程序指令在执行时还实现由第一路由器至少部分地基于所接收的命名图来作出至少一个路由决策的步骤。
[0093] 在一个例子中,第一路由器接收整个命名图。
[0094] 在另一个实施例中,提供一种计算机实现的系统,用于在包括多个路由器的命名数据网络中对数据对象别名化,该系统包括:第一路由器,其中,第一路由器被配置为检测对第一数据对象的至少一个命名数据对象请求的内容和对该命名数据对象请求的至少一个响应的内容;第一路由器被配置为至少部分地根据该请求和该响应中的至少一个的所检测的内容隐式地学习第一别名。
[0095] 在另一个实施例中,提供一种计算机实现的系统,用于在包括多个路由器的命名数据网络中基于命名数据对象请求进行数据对象路由,该系统包括:第一路由器,其中,第一路由器被配置为接收命名数据对象请求;第一路由器被配置为确定由命名数据对象请求命名的命名数据对象是否在第一路由器的缓存器中;第一路由器被配置为如果由命名数据对象请求命名的数据对象在第一路由器的缓存器中,则用由命名数据对象请求命名的数据对象进行响应;第一路由器被配置为如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,则确定由与命名数据对象相关联的别名命名的数据对象的别名副本是否在第一路由器的缓存器中;第一路由器被配置为如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本在第一路由器的缓存器中,则用别名副本进行响应;第一路由器被配置为如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本不在第一路由器的缓存器中,则由第一路由器确定数据对象的别名副本第二路由器处的位置是否已知;第一路由器被配置为如果由命名数据对象请求命名的数据对象不在第一路由器的缓存器中,并且由与命名数据对象相关联的别名命名的数据对象的别名副本不在第一路由器的缓存器中,并且数据对象的别名副本在第二路由器处的位置是已知的,则将命名数据对象请求向第二路由器的位置路由。
[0096] 在另一个实施例中,提供一种计算机实现的系统,用于在包括多个路由器的命名数据网络中访问数据对象,该系统包括:第一路由器,其中,第一路由器被配置为接收命名数据对象请求,其标识第一数据对象;第一路由器被配置为接收命名图的至少一部分,其中,命名图标识相关数据对象,相关数据对象包括第一数据对象,命名图规定与所标识的相关数据对象的每一个对应的节点,每个节点表示在一个路由器处的位置;第一路由器被配置为获取第一数据对象;第一路由器被配置为当第一数据对象被获取时,至少部分地根据所接收的命名图获取至少一个另外的所标识的相关数据对象。
[0097] 在其它例子中,可以在以下的环境中实现:(a)云计算;(b)平台即服务(PaaS);和/或(c)资源使能(例如,提供、配置、灵活性和工作负载管理)。
[0098] 如在此所描述的,别名可以从各种源学习,诸如发布者公布的内容、路由器观察的请求-响应和查询路由。此外,请求可以根据别名和/或别名位置来路由。
[0099] 如在此所描述的,NDN中静态和/或动态图中的命名数据对象之间的所解析的关系可用于制定路由决策。另外,名称别名可以被传输到NDN路由器。
[0100] 如在此所描述的,数据对象的关系可用于更好的网络利用,诸如延迟和缓存效率。例如,通过学习多个数据对象之间的关系,网络可以能够在接收到对单个数据对象的请求时预先获取其它相关数据对象,因此,网络响应时间可显著提高。
[0101] 如在此所描述的,提供了用于在命名数据网络上下文中推断和使用数据的别名的机制。
[0102] 如在此所描述的,在各种实施例中,提供了用于在命名数据网络中对命名数据对象别名化的方法。在一个特定例子中,可以提供命名数据对象的动态别名化。
[0103] 如在此所描述的,在各种实施例中,可以提供采用命名图的形式的命名数据对象之间的关系(例如,动态关系)(例如,网络可以在未来请求之前获取)。在一个特定例子中,这种命名图可以动态地形成,实体之间的互连可以动态地修改以表示新的命名数据服务。
[0104] 如在此所描述的,在各种实施例中,可以提供用于在NDN代理处执行路由和/或转发(例如,在NDN代理处制定路由和/或转发决策)的方法。
[0105] 如在此所描述的,在各种实施例中,可以提供用于在命名数据网络系统内对数据对象别名化的方法,其包括以下步骤:将数据对象与它们的句法和语义别名相关联;公布别名并向NDN路由器传播别名;以及通过观察数据对象请求和响应来隐式地学习别名。
[0106] 如在此所描述的,在各种实施例中,可以提供用于改进在命名数据网络系统内对数据对象的访问的方法,其包括以下步骤:识别与数据对象相关联的其它命名数据对象;创建相关数据对象的命名图;当一个命名节点被访问时,在命名图(或其子图)中获取一个或多个相邻节点;以及根据命名图(或其子图)(而不是单独根据命名对象)制定路由决策。
[0107] 如在此所描述的,在各种实施例中,可提供用于对命名数据对象别名化的方法和用于命名数据网络的实体。在一个例子中:生产者公布名称和别名;请求者可以请求原始名称或别名;代理通过路由传播和/或观察请求和响应来学习别名;当进行数据对象请求时,如果数据对象名称或别名在缓存器中,则代理进行响应;如果不在缓存器中,则进行路由请求(例如,向中央或分布式路由器),该路由请求被路由到最近的数据对象(别名)位置。
[0108] 如在此所描述的,在各种实施例中,可提供用于在命名数据网络系统内对命名数据对象别名化的方法,其包括以下步骤:将数据对象与其别名相关联(静态地,使用所计算的数据对象签名和/或使用查询路由);公布别名并向NDN路由器传播别名;通过观察数据对象请求和响应来隐式地学习别名。
[0109] 如在此所描述的,在各种实施例中,可提供用于根据所请求的名称和所推断的对象别名来进行数据对象路由的方法。例如:如果别名副本在缓存器中,则用别名副本进行响应;如果所请求的数据对象的位置未知但别名副本是已知的,则将请求路由到该位置;如果别名副本在附近位置,则将请求路由到该位置。
[0110] 在其它例子中,在此所描述的由路由器执行的任何步骤、功能等还可以(或替代地)由一个或多个服务器、交换机或类似设备执行。
[0111] 如在此所描述的,路由器(例如,中间路由器)可通过观察请求-响应序列来推断和隐式地学习别名。例如,考虑关于对象O1的用户请求,其通过路由器R向源转发。源(和/或途中的另一个中间路由器)知道O2是O1的别名,并用O2响应该请求。R观察该序列,并用新学习的O1的别名更新其本地信息。
[0112] 在另一个例子中,“查询标准化”的过程可以提供查询名称映射服务,并可以将不同类型的查询标准化为标准数据名称(例如,如网络的命名结构所规定的)。例如,命名结构可以是数据(例如天气)的属性,其中属性包含有关诸如位置、时间、长度和组织等的数据的信息。在一个实施例中,各种类型的查询可到达网络,并实质上请求相同的数据。例如,当“曼哈顿下午5点-6点左右下雨了吗”的查询到达网络时,代理可将该查询映射成/位置/时间/条件,并在网络中发送本地命名数据请求。这样,可以利用通过为先前的查询“纽约昨天是晴天吗”提供服务而具有数据的本地缓存副本的中间节点,网络响应时间和服务器业务负载都可以降低。
[0113] 如在此所描述的,网络交换机可具有多个接口,其中每一个具有不同的网络地址。“输出接口”是进入分组将在其上被转发的交换机接口。同样,“输入接口”是分组在其上接收的交换机接口。
[0114] 在其它例子中,实施例可以被应用于在数据中心内的路由和/或在一般任意网络(例如,企业网、因特网)内的路由。
[0115] 在其它例子中,在此描述的任何步骤可以按任何适当的所期望的顺序执行。
[0116] 所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0117] 可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0118] 计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0119] 计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0120] 可以以任意程序设计语言或者一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,或者一种过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0121] 在此可以将参照根据本发明实施例的方法、系统和/或计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0122] 也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
[0123] 计算机程序指令还可装载在计算机、其它可编程数据处理装置、或其它使得一系列操作步骤在计算机上执行的设备、产生计算机实现的过程的其它可编程装置或其它设备上,以使得在计算机或其它可编程装置或其它设备上执行的指令提供用于实现在流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
[0124] 附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0125] 应当指出的是前面已经概括了本发明的某些目标和实施例。本发明可以被用于许多应用。从而,尽管说明书是针对特定安排和方法,但本发明的目的和概念适合于和可应用于其他安排和应用。本领域熟练技术人员应当清楚,在不脱离本发明精神和保护范围的情况下,可以对所公开的实施例进行修改。所描述的实施例应当被解释为仅表示本发明的某些特征和应用。通过以泵领域熟知的不同的方式应用所公开的发明或修改本发明,其它有益效果也可以被实现。另外,这里所公开的所有例子意在表示,而非限制。
高效检索全球专利

IPRDB是专利检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,专利查询、专利分析

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用