在发布-订购网络中通过有效载荷检测进行分组路由的系统、方法和装置转让专利

申请号 : CN03821206.4

文献号 : CN1701304B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : Y·黄A·W·P·冯D·S·罗森布卢姆S·亚尼克R·特奥多雷斯库T·-W·陈C·-M·林C·-Y·王P·-F·杨R·C·冷

申请人 : 普里凯许公司

摘要 :

在分布网络的核心中的路由器上通过有效载荷检查进行分组路由,用以提供告警服务、用于分布数字内容如视频、音乐和软件以及用于遵照服务质量保证。分组除包括路由信息之外还包括主体和属性。所述主体对应于关于订购的特定类型的内容,属性封装数据或内容。所述订购可与特定的服务质量保证或服务水平相关联。所述路由器存储对应于内容订购的过滤器。当接收到分组时,为检索属性并将它们应用于关于来自所述摄像机的所述内容订购所述过滤器,路由器检查包含属性的分组的所述有效载荷部分。如果属性满足过滤器,则所述分组被路由到下一链路。如果所述属性不满足所述过滤器,则所述路由器丢弃该分组。这些路由决策分布于所述网络核心中的路由器之间。所述路由器在所述网络核心中本地高速缓存所述数据。

权利要求 :

1.一种用于在网络中路由分组用以提供告警服务的方法,所述方法包括以下步骤:接收具有首部部分和有效载荷部分的分组,所述有效载荷部分包括涉及来自特定摄像机的视频剪辑的信息;

在网络核心中检查所述分组的所述有效载荷部分用以确定是否以及如何路由所述分组给订户来自所述特定摄像机的信息;和基于所述检查选择性地路由所述分组。

2.如权利要求1所述的方法,其特征在于,所述检查步骤包括确定所述有效载荷部分中的信息是否与将内容断定信息关联到对应网络目的地的结构中的所述内容断定信息相匹配。

3.如权利要求1所述的方法,其特征在于,所述检查步骤在所述网络核心中的路由器上执行。

4.如权利要求1所述的方法,其特征在于,所述检查步骤包括对所述有效载荷部分中的信息施加过滤器。

5.如权利要求4所述的方法,还包括将所述过滤器传播到所述网络中的路由器,用以执行所述检查。

6.如权利要求1所述的方法,还包括对所述网络中的路由器进行编程,用以执行所述接收、检查和路由步骤。

7.如权利要求1所述的方法,其特征在于,所述检查步骤包括检查属性,用以确定如何路由所述分组。

8.如权利要求1所述的方法,其特征在于,所述选择性地路由步骤包括选择性地将所述分组路由到数字视频监视系统。

9.如权利要求1所述的方法,其特征在于,所述检查步骤在局域网中执行。

10.如权利要求1所述的方法,其特征在于,所述检查步骤在因特网服务提供商位置处执行。

11.如权利要求1所述的方法,其特征在于,所述特定摄像机包括数字视频录像机和电荷耦合装置。

12.如权利要求11所述的方法,还包括生成具有所述首部部分和所述有效载荷部分的所述分组的数字视频录像机。

13.一种用于在网络中路由消息提供告警服务的方法,所述方法包括以下步骤:接收具有首部部分、至少一个主体和至少一个属性的消息,所述属性涉及来自特定摄像机的视频剪辑;

从所述消息检索所述主体和所述属性;

基于所述主体检索订购;以及

为了确定是否以及如何路由所述消息给订户来自所述特定摄像机的信息,在网络核心中将所述属性应用于所述订购。

14.如权利要求13所述的方法,其特征在于,所述检索所述订购的步骤包括检索对应于所述订购的过滤器。

15.如权利要求13所述的方法,还包括如果所述属性满足所述订购则路由所述消息。

16.如权利要求13所述的方法,还包括如果所述属性不满足所述订购则丢弃所述消息.

17.如权利要求13所述的方法,还包括以下步骤:检索对应于多个订购的多个过滤器;

从所述消息中检索多个属性;

将每一个所述属性应用到每一个所述过滤器上,以确定任何所述对应订购是否得到满足;以及基于任何所述订购是否得到满足来选择性地路由所述消息。

18.如权利要求13所述的方法,还包括在所述网络核心中的路由器上执行所述应用步骤。

19.如权利要求13所述的方法,其特征在于,所述特定摄像机包括数字视频录像机和电荷耦合装置。

20.如权利要求19所述的方法,还包括所述数字视频录像机,生成具有所述首部部分、所述至少一个主体、和所述至少一个属性的所述消息,所述属性涉及来自所述特定摄像机的视频剪辑。

21.一种用于在网络中路由分组用以提供告警服务的方法,所述方法包括以下步骤:接收具有首部部分和有效载荷部分的分组,所述有效载荷部分包括与特定告警服务的事件有关的信息;

在网络核心中检查所述分组的所述有效载荷部分,用以确定是否以及如何路由所述分组给订户所述告警服务的信息;以及基于所述检查选择性地路由所述分组。

22.一种用于在网络中路由分组用以提供告警服务的装置,所述装置包括:接收模块,用于接收具有首部部分和有效载荷部分的分组,所述有效载荷部分包括涉及来自特定摄像机的视频剪辑的信息;

检查模块,用于在网络核心中检查所述分组的所述有效载荷部分,用以确定是否以及如何路由所述分组给订户来自所述特定摄像机的信息;以及路由模块,用于基于所述检查选择性地路由所述分组。

23.如权利要求22所述的装置,其特征在于,所述检查模块包括用于确定所述有效载荷部分中的信息是否匹配一种结构中的内容断定信息的模块,其中所述结构将所述内容断定信息与对应网络目的地或指导路由器内处理的对应规则相关联。

24.如权利要求22所述的装置,还包括用于在所述网络核心中的路由器上执行所述检查步骤的模块。

25.如权利要求22所述的装置,其特征在于,所述检查模块包括用于将过滤器应用于所述有效载荷部分中的信息上的模块。

26.如权利要求25所述的装置,还包括用于将所述过滤器传播到所述网络中的路由器用以执行所述检查的模块。

27.如权利要求22所述的装置,还包括用于对所述网络中的路由器进行编程以便执行所述接收、检查和处理的模块。

28.如权利要求22所述的装置,其特征在于,所述检查模块包括用于检查属性用以确定如何路由所述分组的模块。

29.如权利要求22所述的装置,其特征在于,所述装置设于包括数字视频录像机的网络中。

30.如权利要求22所述的装置,其特征在于,所述特定摄像机包括数字视频录像机和电荷耦合装置。

31.一种用于在网络中路由消息提供告警服务的装置,所述装置包括:接收模块,它用于接收具有首部部分、至少一个主体和至少一个属性的消息,所述属性涉及来自特定摄像机的视频剪辑;

用于从所述消息检索所述主体和所述属性的模块;

基于所述主体检索订购的模块;

应用模块,用于为了确定是否以及如何路由所述消息给订户来自所述特定摄像机的信息,在网络核心中将所述属性应用于所述订购。

32.如权利要求31所述的装置,其特征在于,用于检索所述订购的所述模块包括用于检索对应于所述订购的过滤器的模块。

33.如权利要求31所述的装置,还包括用于在所述属性满足所述订购的情况下并基于服务质量保证选择性地路由所述消息的模块。

34.如权利要求31所述的装置,还包括在所述属性不满足所有订购的情况下用于丢弃所述消息的模块。

35.如权利要求31所述的装置,还包括:

用于检索对应于多个订购的多个过滤器的模块;

用于从所述消息中检索多个属性的模块;

用于将每一个所述属性应用到每一个所述过滤器上以确定任何所述对应订购是否得到满足的模块;以及基于任何所述订购是否得到满足来选择性地路由所述消息的模块。

36.如权利要求31所述的装置,还包括用于在所述网络核心中的路由器上执行所述应用的一个或多个模块。

37.如权利要求31所述的装置,其特征在于,所述装置设在包括数字视频录像机的网络中。

38.如权利要求31所述的装置,其特征在于,所述特定摄像机包括数字视频录像机和电荷耦合装置。

39.一种在网络中路由分组用以提供告警服务的系统,包括:多个数字视频摄像机,其中所述数字视频摄像机产生数字视频输出;

局域网(LAN),它连接所述数字视频摄像机;

发布方代理,它连接到所述LAN上,发布所述数字视频输出;

包括多个智能路由器的发布-订购网络,它连接到所述发布方代理;以及,数字视频监视系统(DVSS),它经由所述发布-订购网络接收所述发布的数字视频输出,其特征在于,所述智能路由器包括:接收模块,用于接收具有首部部分和有效载荷部分的分组,所述有效载荷部分包括涉及来自所述多个特定摄像机之一的视频内容的信息;

检查模块,用于在网络核心中检查所述分组的所述有效载荷部分,用以确定是否以及如何路由所述分组给订户来自所述数字视频摄像机的信息;以及路由模块,用于基于所述检查选择性地路由所述分组。

40.如权利要求39所述的系统,还包括连接到所述发布-订购网络的订户代理,它订购所述数字视频输出并将所述订购的数字视频输出推向所述DVSS。

41.一种用于将数字内容分布到订户的网络,所述网络包括:多个用户机;

定期分布数字内容的中央分布器;

多个高速缓存服务器,它接收和高速缓存所述分布的数字内容,其中所述高速缓存服务器定期地从用户机接收关于某种所述高速缓存的数字内容的用户请求,并将所述请求的数字内容转发给所述用户机;以及,路由盒,它从所述中央分布器接收所述分布数字内容作为文件并采用基于内容路由的发布-订购将所述数字内容文件传送到所述多个高速缓存服务器,其中,所述数字内容文件是公开物并且所述用户请求是订购,所述路由盒包括:接收模块,用于接收具有首部部分和有效载荷部分的分组,所述有效载荷部分包括涉及数字内容文件的信息;

检查模块,用于检查所述分组的所述有效载荷部分,用以确定是否以及如何路由所述分组;以及路由模块,用于基于所述检查选择性地路由所述分组。

42.如权利要求41所述的网络,其特征在于,所述路由盒是第一路由盒,所述网络还包括与所述多个高速缓存服务器共同定位的第二路由盒,其中所述第一路由盒将所述数字内容文件路由到与所述多个高速缓存服务器中的至少一个共同定位的所述第二路由盒。

43.如权利要求41所述的网络,其特征在于,所述多个高速缓存服务器设在网络服务提供商处。

44.如权利要求41所述的网络,其特征在于,所述多个高速缓存服务器是第一级高速缓存服务器,其存储由所述中央分布器分布的全部所述数字内容。

45.如权利要求44所述的网络,还包括第二级高速缓存服务器,其存储由所述中央分布器分布的一部分所述数字内容。

46.如权利要求45所述的网络,其特征在于,所述路由盒是第一路由盒,所述网络还包括与所述第二级高速缓存服务器共同定位的第二路由盒,其中,所述第一路由盒和所述第二路由盒采用基于内容路由的发布-订购将数字内容文件从所述第一级高速缓存服务器传送到所述第二级高速缓存服务器。

47.如权利要求46所述的网络,其特征在于,所述路由模块基于所述检查选择性地将所述分组从所述第一级高速缓存服务器路由到所述第二级高速缓存服务器。

48.如权利要求45所述的网络,其特征在于,由所述第二级高速缓存服务器存储的所述一部分所述数字内容是基于接收的用户请求的历史确定的。

49.如权利要求45所述的网络,其特征在于,所述第二级高速缓存服务器直接接收所述用户请求,并将关于不由所述第二级高速缓存服务器存储的数字内容的用户请求转发给所述第一级高速缓存服务器。

50.如权利要求41所述的网络,其特征在于,所述路由模块基于所述检查选择性地将所述分组从所述中央分布器路由到所述多个高速缓存服务器。

51.如权利要求41所述的网络,其特征在于,所述中央分布器包括一个或多个服务器。

52.如权利要求41所述的网络,其特征在于,所述数字内容包括视频、音乐和软件。

53.一种用于在网络中将数字内容分布到订户的方法,所述方法包括以下步骤:分布来自中央分布器的数字内容;

基于内容路由所述分布数字内容至多个高速缓存服务器;

在所述多个高速缓存服务器上高速缓存所述基于内容路由的数字内容;

接收关于所请求的高速缓存的数字内容的用户订购;以及,基于所述接收的用户订购将所请求的数字内容从所述多个高速缓存服务器传送到用户,其特征在于,所述基于内容路由的步骤包括以下步骤:接收具有首部部分和有效载荷部分的分组,所述有效载荷部分包括涉及数字内容文件的信息;

检查所述分组的所述有效载荷部分用以确定是否以及如何路由所述分组;以及基于所述检查选择性地将所述分组路由至所述多个高速缓存服务器。

54.如权利要求53所述的方法,其特征在于,所述检查步骤包括确定所述有效载荷部分中的信息是否与将内容断定信息与对应目的地相关联的结构中的所述内容断定信息匹配。

55.如权利要求53所述的方法,其特征在于,所述检查步骤包括将过滤器应用于所述有效载荷部分中的信息。

56.如权利要求55所述的方法,还包括将所述过滤器传播到所述网络中的路由盒,用以执行所述检查。

57.如权利要求53所述的方法,还包括对所述网络中的路由盒进行编程,以执行所述接收、检查和路由步骤。

58.如权利要求53所述的方法,其特征在于,所述检查步骤包括检查属性,用以确定如何路由所述分组。

59.如权利要求53所述的方法,还包括执行所述检查步骤路由盒。

60.如权利要求53所述的方法,其特征在于,所述多个高速缓存服务器是第一级高速缓存服务器,所述方法还包括利用基于内容路由将高速缓存的数字内容传送到第二级高速缓存服务器。

61.如权利要求60所述的方法,还包括确定所述请求的数字内容是否在所述第二级高速缓存服务器上。

62.如权利要求61所述的方法,还包括基于所述确定将所接收的用户订购传送到所述第一级高速缓存服务器。

63.如权利要求60所述的方法,其特征在于,所述传送步骤基于所接收的用户订购的历史利用基于内容路由将高速缓存的数字内容传送到所述第二级高速缓存服务器。

64.一种用于在网络中和服务质量保证一起路由分组的方法,所述方法包括以下步骤:接收具有首部部分和有效载荷部分的分组;

在网络核心中检查所述分组的所述有效载荷部分用以确定是否以及如何路由所述分组;

确定所述分组的服务质量保证;以及

基于所述检查和所述服务质量保证选择性地路由所述分组。

65.如权利要求64所述的方法,其特征在于,所述检查步骤包括确定所述有效载荷部分的信息是否与将内容断定信息与对应网络目的地相关联的结构中的所述内容断定信息相匹配。

66.如权利要求64所述的方法,还包括在所述网络核心中的路由器上执行所述检查步骤。

67.如权利要求64所述的方法,其特征在于,所述检查步骤包括将过滤器与所述有效载荷部分中的信息匹配。

68.如权利要求67所述的方法,还包括将所述过滤器传播到所述网络中的路由器上,用以执行所述检查。

69.如权利要求64所述的方法,还包括对所述网络中的路由器进行编程以执行所述接收、检查和路由步骤。

70.如权利要求64所述的方法,其特征在于,所述检查步骤包括检查属性用以确定如何路由所述分组或是否完全丢下所述分组。

71.一种在网络中路由消息的方法,所述方法包括:接收具有首部部分、至少一个主体和至少一个属性的消息;

从所述消息中检索所述主体和所述属性;

基于所述主体检索订购;

确定所述消息的服务质量保证;

为确定是否以及如何路由所述消息在网络核心将所述属性应用于所述订购;以及基于所述应用和所述服务质量保证选择性地路由所述消息。

72.如权利要求71所述的方法,其特征在于,所述检索所述订购的步骤包括检索对应于所述订购的过滤器。

73.如权利要求71所述的方法,还包括如果所述属性满足所述订购则路由所述消息。

74.如权利要求71所述的方法,还包括如果所述属性不满足所述订购则丢弃所述消息。

75.如权利要求71所述的方法,还包括以下步骤:检索对应于多个订购的多个过滤器;

从所述消息中检索多个属性;

将每一个所述属性与每一个所述过滤器进行匹配以确定任何所述对应订购是否得到满足;以及基于任何所述订购是否得到满足来选择性地路由所述消息。

76.如权利要求71所述的方法,还包括在所述网络核心中的路由器上执行所述检查步骤。

77.一种在网络中和服务质量保证一起路由分组的装置,所述装置包括:用于接收具有首部部分和有效载荷部分的分组的模块;

至少一个用于在网络核心中检查所述分组的所述有效载荷部分用以确定是否以及如何路由所述分组的模块;

用于确定所述分组的服务质量保证的模块;以及基于从以上所述步骤获得的检查结果和通过以上所述步骤确定的服务质量保证来选择性地路由所述分组的模块。

78.如权利要求77所述的装置,其特征在于,所述检查模块包括用于确定所述有效载荷部分中的信息是否与将内容断定信息与对应网络目的地或指导路由器内处理的对应规则相关联的结构中的所述内容断定信息相匹配的模块。

79.如权利要求77所述的装置,还包括用于在所述网络核心中的路由器上执行所述检查步骤的模块。

80.如权利要求77所述的装置,其特征在于,所述检查模块包括用于将过滤器与所述有效载荷部分中的信息匹配的模块。

81.如权利要求80所述的装置,还包括用于将所述过滤器传播到所述网络中的路由器用以执行所述检查的模块。

82.如权利要求77所述的装置,还包括用于对所述网络中的路由器进行编程以执行所述接收、检查和处理的模块。

83.如权利要求77所述的装置,其特征在于,所述装置是路由器。

84.一种用于在网络中路由消息的装置,所述装置包括:用于接收具有首部部分、至少一个主体和至少一个属性的消息的模块;

用于从所述消息中检索所述主体和所述属性的模块;

用于基于所述主体检索订购的模块;

用于为确定是否以及如何路由所述消息而在网络核心中将所述属性与所述订购进行匹配的模块;

用于确定所述分组的服务质量保证的模块;以及用于在所述属性满足所述订购的情况下基于所述服务质量保证选择性地路由所述消息的模块。

85.如权利要求84所述的装置,其特征在于,用于检索所述订购的所述模块包括用于检索对应于所述订购的过滤器的模块。

86.如权利要求84所述的装置,还包括用于在所述属性满足所述订购的情况下并基于所述服务质量保证选择性地路由所述消息的模块。

87.如权利要求84所述的装置,还包括用于在所述属性不满足所述路由器上存储的任何所述订购的情况下丢弃所述消息的模块。

88.如权利要求84所述的装置,还包括:

用于检索对应于多个订购的多个过滤器的模块;

用于从所述消息中检索多个属性的模块;

过滤模块,用于将每一个所述属性与每一个所述过滤器相匹配以确定任何所述对应订购是否得到满足;以及用于基于任何所述订购是否得到满足来选择性地路由所述消息的模块。

89.如权利要求84所述的装置,还包括一个或多个用于在所述网络核心中的路由器上执行所述过滤步骤的模块.

90.如权利要求84所述的装置,其特征在于,所述装置是路由器。

91.一种在组播网络中路由和高速缓存数据分组的方法,所述方法包括以下步骤:接收具有首部部分和有效载荷部分的分组;

在网络核心中检查所述分组的所述有效载荷部分用以确定是否以及如何将所述分组路由到订户;

基于所述检查选择性地路由所述分组;以及

在所述网络核心中本地高速缓存来自所述分组的数据。

92.如权利要求91所述的方法,还包括在路由器上执行所述检查步骤。

93.如权利要求91所述的方法,其特征在于,所述检查步骤包括将过滤器应用于所述有效载荷部分中的信息。

94.如权利要求93所述的方法,还包括将所述过滤器传播到所述网络中的路由器上用以执行所述检查。

95.如权利要求91所述的方法,还包括对在所述网络中的路由器进行编程以执行所述接收、检查和路由步骤。

96.如权利要求91所述的方法,其特征在于,所述检查步骤包括检查属性用以确定如何路由所述分组。

97.如权利要求91所述的方法,还包括时间标记高速缓存的数据。

98.如权利要求91所述的方法,还包括索引高速缓存的数据。

99.如权利要求91所述的方法,还包括以下步骤:接收对数据的请求;以及

确定高速缓存的数据是否满足所述请求。

100.如权利要求91所述的方法,还包括以下步骤:在边缘路由节点上本地高速缓存来自所述分组的数据。

101.如权利要求91所述的方法,还包括以下步骤:在时间帧T的期满之后移除高速缓存的数据。

102.一种用于路由和高速缓存数据分组的网络,所述网络包括:边缘路由节点,它接收并路由具有首部部分和有效载荷部分的分组,所述边缘路由节点包括:智能路由器,它路由接收的分组,所述智能路由器包括用于以下操作的指令:在网络核心中检查所述分组的所述有效载荷部分用以确定是否以及如何将所述分组路由到订户;以及基于所述检查选择性地路由所述分组;以及

高速缓存管理器,它可操作地连接到所述智能路由器,所述高速缓存管理器包括用于以下操作的指令:在本地高速缓存中本地高速缓存来自所述分组的数据;

以及

一个或多个接收并路由所述分组的核心路由节点。

103.如权利要求102所述的网络,还包括:可操作地连接到所述边缘路由节点的代理,它包括用于以下操作的指令:确定高速缓存的数据的位置;

从所述本地高速缓存中检索高速缓存的数据;以及处理所检索的高速缓存数据。

104.如权利要求102所述的网络,其特征在于,一个或多个核心路由节点中的一个核心路由节点位于所述边缘路由节点的径直上游,所述径直上游核心路由节点包括:路由接收的分组的智能路由器,所述智能路由器包括用于以下操作的指令:在网络核心中检查所述分组的所述有效载荷部分用以确定如何把所述分组路由到订户;以及基于所述检查选择性地路由所述分组;以及

高速缓存管理器,它可操作地连接到所述智能路由器,所述高速缓存管理器包括用于以下操作的指令:在本地高速缓存中本地高速缓存来自所述分组的数据。

105.如权利要求102所述的网络,还包括:提供多个信道的特性的多个信道管理器。

106.如权利要求102所述的网络,其特征在于,所述高速缓存管理器还包括用于时间标记高速缓存的数据的指令。

107.如权利要求102所述的网络,其特征在于,所述高速缓存管理器还包括用于索引高速缓存的数据的指令。

108.如权利要求102所述的网络,其特征在于,所述高速缓存管理器还包括用于以下操作的指令:接收对数据的请求;以及

确定高速缓存的数据是否满足所述请求。

109.一种在组播网络中路由和高速缓存数据分组的装置,所述装置包括多个处理器和用于以下操作的指令:接收具有首部部分和有效载荷部分的分组;

在网络核心中检查所述分组的所述有效载荷部分用以确定是否以及如何将所述分组路由到订户;

基于所述检查选择性地路由所述分组;以及

在所述网络核心中本地高速缓存来自所述分组的数据。

110.如权利要求109所述的装置,其特征在于,所述多个处理器包括第一处理器和第二处理器,其中所述第一处理器执行所述检查和选择性地路由指令,而所述第二处理器执行本地高速缓存指令。

说明书 :

技术领域

本发明涉及一种基于分组中的有效载荷的检测在网络核心中路由该分组用以提供告警服务的方法和装置。

背景技术

如今网络带宽正按指数规律急剧递增。然而网络的基础设施(包括路由器、服务器、守护程序和协议等)仍在使用相对较旧的技术。因此因特网应用软件和网络路由器发展速度跟不上带宽增加的速度。同时,越来越多的设备和应用软件变为网络使能的。这些设备和应用软件给网络节点施加的负载已大大增加。网络负载和应用软件数量的增加使得实现和维护网络应用软件变得更为复杂。因此,网络带宽的增加以及网络设备和应用软件的普遍使用使得越来越难在旧的网络基础设施中路由和传输数据,特别是在向订户发布内容时尤其如此。
一种用于使网络将信息从服务器推向客户机的模型是发布-订购形式。在这一模型中,服务器成为简单的信息发布方,而不考虑哪个客户机可能对信息感兴趣或客户机在网络中的位置。客户机成为信息的订户,当信息可得时便接收所交付的信息,而可以不考虑在网络中发布它的具体位置。网络则负责:高效地将所发布的信息路由给订户、将信息与有效订购匹配、并以对发布方和订户均透明的方式执行上述操作。
由于在发布-订购模型中服务器的复杂度大大降低,因此重要的服务器与不重要的客户机之间变得没有差别,或者可以将它们合并为或者是发布方或者是订户、或者是二者的对等物。对于在对等物之间进行发布-订购形式的交互,许多类型的应用软件具有自然亲和性。许多这些应用软件所基于的共同主题是所发布和订购的信息是以事件形式的。例如,投资者购买或出售股票,使得股票价格变化。高速公路上发生交通事故,使得高速公路上交通堵塞。软件系统中的安全突破口被发现,使得要为软件使用者开发补丁。一个玩家在网络游戏中开火射击,使得另一玩家操纵的虚拟人物死亡。所有这些具有代表性的现象都是大多数订户感兴趣的事件,并且可通过网络传播以通知那些订户发生了这些事件。因此,事件只不过是关于在网络上某地某时发生的可能引起兴趣的某事的独立简洁的信息。
为了命令网络在何处按发布-订购模型发送所发布的内容,一般由服务器或发布方执行网络路由决策。发布方存储关于它发布的内容的订购。当接收或产生新的内容时,发布方便将该内容与每个订购相比较以识别任何匹配之处。如果该内容(事件)满足订购,则发布方通过网络将内容推向相应的订户。这种常规的发布-订购模型给发布方造成巨大的负担,特别是在越来越多的设备成为网络使能以及在订购数量增加时,尤其如此。
随着因特网中无数应用愈加汇聚,利用事件通知的可能性将变得无穷止尽。然而,这些可能性需要一种更有效的方式来作出路由决策并确定何时事件满足订购,从而减轻发布方的负担。因此,普遍的持久事件通知服务可为因特网应用以及其他应用和实现提供极大的增值效益。

发明内容

一种方法和装置提供了在网络中进行路由分组用以提供告警服务。此方法和装置克服了现有技术的缺陷。该方法和装置的一个优点包括在处理和路由视频剪辑时显著减小了网络负担。另一个优点包括减小了路由视频剪辑的带宽需求。还有一个优点包括减少了数字视频录像机局域网上的业务量。
在实现这些和其他优点的实施例中,接收具有首部部分和有效载荷部分的分组,其包含有与来自特定摄像机的视频剪辑有关的信息。在网络核心中检测有效载荷部分,用于确定是否以及如何路由分组给订户来自特定摄像机的信息,并基于检测对此分组有选择地进行路由。这些和其它优点还可通过例如具有完成这些步骤的模块的装置来实现。
这些和其它优点还可利用例如在网络中路由消息来提供告警服务的方法来实现。此方法包括:接收具有首部部分、至少一个主体和至少一个属性的消息,属性涉及来自特定摄像机的视频剪辑;从消息中检索主体和属性;根据主体检索订购;以及为了确定是否以及如何路由消息给订户来自特定摄像机的信息,在网络核心中将属性应用于订购。这些和其它优点还可通过例如包括执行这些步骤的模块的装置来实现。
同样,这些和其它优点可利用例如在网络中路由分组来提供告警服务的方法来实现。此方法包括:接收具有首部部分和有效载荷的分组,其中有效载荷部分包涉及特定告警服务的事件的信息;在网络核心中检测分组的有效载荷部用以确定是否以及如何路由分组给订户告警服务信息;以及基于检测有选择地路由该分组。这些和其它优点还可通过例如包括执行这些步骤的模块的装置来实现。

附图说明

附图结合于并组成此说明的一部分,它与说明书一起用于阐述本发明的优点和原理。
图1是说明在网络核心中进行智能路由的图。
图2是说明发布方和订户的智能路由器的图。
图3是说明智能路由器和主干路由器的网络基础设施的图。
图4是智能路由器的硬件部件图。
图5是发布方和用户机的图。
图6是智能路由器的信道管理器的图。
图7是在用户机中用于将该机与智能路由器接口的软件部件图。
图8是智能路由器的软件部件图。
图9是消息的分组结构图。
图10是发布方方法的流程图。
图11是订户方法的流程图。
图12是信道和订户屏幕的图。
图13是基于内容的路由方法的流程图。
图14是高速缓存方法的流程图。
图15是说明高速缓存索引的图。
图16是输出消息的代理方法的流程图。
图17是输入消息的代理方法的流程图。
图18是说明一个消息编码例子的图。
图19是存储订购的数据库结构的图。
图20是通配符方法的流程图。
图21是数字视频监视系统的图。
图22是说明在两步方法中用于数字视频监视系统的代理的图。
图23是数字内容交付的体系结构图。
图24是说明数字内容交付阶段1的体系结构图。
图25是说明数字内容交付阶段2的体系结构图。
图26是说明服务质量管理的多个外部链接的图。
图27是说明服务质量管理的单个外部链接的图。
图28是说明在ISP外部过滤和动态缓存的图。
图29是网络中的高速缓存器图。
图30是上游路由器中的备用持久高速缓存器图。
图31是说明高速缓存与代理服务器和路由器之间交互的图。
图32说明创建关于订购的高速缓存的图。
图33是索引树的图。
图34是说明从多个高速缓存器中检索的图。
图35是说明高速缓存管理器与系统中其它模块交互的图。
图36是高速缓存器的文件目录结构图。

具体实施方式

概况
因特网级或其它分布式网络级的事件通知系统提供了强大而灵活的发布-订购网络实现的应用。在此系统中,应用程序利用事件通知应用程序接口(API)来发布通知和/或订购并接收关于网络内部发生的事件的通知。
系统中的通知有一主体,它是一字符串或其它区分该通知所封装的信息类型的结构。通知还用一组包含特定于通知的信息的属性来完成。例如,应用可利用主体quote.nyse和属性符号和价格发布关于在纽约证券交易所交易的通知。该应用可发布个别有特殊属性值的通知,例如符号为SNE(索尼公司的证券报价机符号),价格为85.25。在多数情况下,如果通知中不是所有的属性都被预定义,那么所有通知中的属性为同一主体类。但是,为了提供额外的特定于事件的信息,发布方可在每个通知或其它基础上增加任意的属性。因此,并不是所有的或甚至任何属性都需要预定义。
在这一系统中,订户并不限于仅对主体或整个信道订购。下面进一步解释和定义信道。它们可包括一个分级结构,此分级结构指定例如一个主体字段和一级或多级相关的子字段(子主体)。因此,订户通过在通知的属性上指定基于内容的过滤器,可提供更适合的兴趣表示。例如,订户可能会订购具有符号为SNE以及价格超过90.00的主体quote.nyse的所有通知(表明或许是订户所拥有股票的出售时机)。所有与订购相匹配的通知可通过回叫或订户在登记订购时或其它时候提供的其它类型功能而交付给订户。可将一个订购分解到许多过滤器中。
回叫可执行许多计算,包括给终端写消息或发送电子邮件这样简单的操作,更为复杂一点的比如发起股票的出售,还要复杂一点的比如发起新的发布-订购行为(例如,用在价格为75.00时买进的新的订购替代现有订购,或者发布订户的有价证券已被更改的新的通知)。
例如,在应用发布和订购行为中是由代理协助的。代理可能利用代理服务器或用它来实现。代理在被使用时用以提供网络连接,以便输出通知和订购以及向订户交付输入的匹配通知。一旦通知进入网络,该系统的网络的路由器则将通知传播给所有其订购匹配此通知的订户。一种实现此传播的方法是向网络中的所有点广播该通知,然后让应用代理决定该通知是否与订户有关。然而,这是不需要扩展的方法,网络通常很快地受到过量的消息业务量载荷,特别是当存在大量激活且冗长的发布方时,尤其如此。即便是有足够的带宽,订户也会因为需要处理很多通知而承受很重的负担。
本系统的示范性网络在路由通知方面更加有效。首先,可使用组播路由,以保证通知例如越过网络中的任何连接至多传播一次。其次,可对过滤器应用大量高级优化操作,以尽可能地减少通知的传播。
图1是在概念上说明网络核心中的这种智能路由器的图。用于发布-订购网络中,发布方14通过边缘路由器16将消息中的内容传送到网络核心10。发布-订购网络包括将数据或内容从发布方路由到订户的任何类型的网络。内容是通过一个或多个表示路由器或其它设备之间逻辑连接的信道18而传送的。由网络核心10中的智能路由器12确定是否路由或转发消息。具体而言,智能路由器12可确定消息是否包含订户24订购的内容。
每个订购封装了主体过滤器和属性过滤器。路由器可将主体过滤器扩大到匹配的主体集,基于每个主体合并属性过滤器。智能路由器对照通知的主体评估主体过滤器,对照通知中的属性值评估属性过滤器。用于主体过滤器的语法可使用通配符,用于属性过滤器的语法可使用布尔表达式,这两者将在下面详细说明。术语“过滤器”是用来描述订户感兴趣从发布方接收的一组事件。路由规则由过滤器产生,并由智能路由器用以作出路由决策。
因此,如果消息26不满足整个过滤器组,例如,智能路由器12引下(丢弃)消息26,意味着该消息不再被转发。例如,如果根据对主体和属性过滤器的评估,整组中的任一个过滤器均由消息20满足,则智能路由器12根据为匹配过滤器器规定的所有路由和/或动作的规则,通过边缘路由器22以及可能其它设备来将消息20路由(转发)给订户24,或利用消息20执行路由器12内部的其它功能。此搜索将一直持续到整个过滤器组耗尽或已获得关于所有规则的决定为止,无论哪个先发生。
网络核心中这些基于内容路由的智能路由提供了实时数据(例如告警和更新)的交付。对于告警的实时数据交付实例包括但不限于股票报价、业务、新闻、旅行、天气、欺诈检测、安全、信息通讯服务(telematics)、工厂自动控制、供应链管理和网络管理。对于更新的实时数据交付实例包括但不限于软件更新、防病毒更新、电影和音乐交付、工作流程、存储管理和高速缓存连贯性。许多其它的应用可用于交付订购信息。
表1说明了有主体的订购的存储并对过滤进行断定。它们可以按期望的或需要的任何类型的数据结构存储于网络中的任何位置上。如下所述,断定是订购的组成部分。订购可以任何方式表示,以下提供了其中的示例。

表2提供了关于报价服务器的发布和订购的示例。提供本示例只用于说明目的,订购可包括关于任意类型的数据或内容的任何数量和类型的参数。


断定提供订购的布尔表达式,而主体提供了订购信道的指示。可以许多不同的方式表达订购。采用布尔表达式便是这样的一种示例,并提供了易于将订购转换成主体过滤器和属性过滤器以供基于内容路由的能力。或者可不参考主体而表达订购;然而,采用主体或信道(以下将做进一步阐释)提供了用于解释和将过滤器应用于属性的环境。
路由决策可在网络核心中完成,并分布于整个网络,减轻了发布方和订户机上的处理负担,并显著提高了网络效率。仅为说明目的,图1显示了一个发布方、一个订户和一个智能路由器;实现可包括许多发布方、订户和智能路由器。术语智能路由器指能够通过在网络核心或其他位置检查分组或消息的有效载荷而作出路由决策的路由器或其他实体。
网络基础设施
图2是说明发布方和订户的智能路由器的网络图。例如,提供信道服务的路由实体30为在智能路由器之间路由消息在网络基础设施上实际是分层的,如下所述。发布方32概念上包括应用34和代理36,其中应用34例如用于接收所发布的内容的指示,如用以检索内容的指针,而代理36用以编码经由信道服务30的网络传输的内容。一组逻辑上互连的智能路由器38、40、42、44、46及48采用由订购的主体过滤器和属性过滤器产生的路由规则来路由来自发布方的内容。多个链路39、41、43和45提供了智能路由器38、40、42、44、46和48之间的逻辑连接。其他链路37和47分别提供了发布方32和智能路由器38之间以及订户54和智能路由器46之间的逻辑连接。订户54包括用以检测并接收订购的内容的代理50,以及显示出该内容的应用52。
信道可包括例如以分布方式实现的相关的一组逻辑组播连接。在本示范性实施例中的信道是用于为发布方和订户的联营机构交换内容的逻辑相关的网络资源集合。根据信道主体的名字空间来对内容进行分类,并经由信道管理器提供的信道服务来管理、控制以及供应这些资源。多个信道可共享相同的资源。信道可提供高扩展目录服务,如以下示例:发布方和订户信息、认证和授权信息、消息类型、管理信息以及记帐收费信息,但不限于此。信道还可提供例如高速缓存期间的持续、快速数据交付机制、安全以及用户和网络管理。信道也可用于任何其他目的。
由智能路由器进行的过滤可在网络核心中发生以分布路由决策.此外,智能路由器还可用作连接用户设备(如发布方或订户)与网络核心的边缘路由器.而且,连接到网络的相同设备即可用作发布方以在网络中通过路由决策将内容推向订户,也可用作订户以接收所推的内容.智能路由器和信道可按任何配置(如对于特定实现所需要或希望的那样)进行连接,并且提供图2所示的配置只为说明目的.
图3是智能路由器和传统主干路由器的示范性网络基础设施的图,它也说明了信道的逻辑连接。本示例中的智能路由器采用网络(如因特网或其他分布网络)中现有的主干路由器,并且该智能路由器在此在主干路由器上实际是分层的。在本示例中,因特网服务提供商(ISP)网络58、59和60各自包括几个用于消息或分组的传统路由的主干路由器。多个智能路由器61-70与ISP网络58、59和60中的一个或多个主干路由器相连。智能路由器61-70也通过多个链路73-85(链路的代表示例)进行互连接,并且也可通过这些链路连接终端用户设备。智能路由器61-70可由一个或多个管理机(如实体71)和一个或多个虚拟专用网(VPN)控制器(如实体72)控制。ISP网络58、59和60还会连接到发布方和订户机(图3中未示出)。ISP58、59和60中以及ISP58、59和60之间的主干路由器可以任何传统方式在现有网络基础设施内进行互连接。
如上说明的智能路由器61-70和链路73-85可采用现有网络基础设施来实现,它们在网络核心中提供基于内容路由。链路73-85表示智能路由器61-70之间的逻辑连接,并可采用例如现有网络基础设施或其他设备实现。例如,链路可采用称为隧道的逻辑连接来实现。隧道包括硬件,可能还有软件、用于实现链路的网络基础设施,而且一个隧道可作为多个信道的一个部件。信道通过提供针对特定类型的内容的逻辑配置并由此为信道上传输的属性提供环境从而促进智能路由器中基于内容路由。虽然智能路由器可在没有信道的条件下执行路由决策,但是信道提高由网络核心中的智能路由器进行基于内容路由的效率。
此示范性实施例包括信道和链路的使用。链路是两个路由器之间的连接,即便是智能路由器也如此。信道是包含路由器集合的网络实体(通常较大的),它们通过互连接的链路静态或动态配置以完成一对多或多对多的逻辑连接。具体而言,信道是描述信道基本特征的顶级逻辑实体。在一个信道下可能存在许多主体。各个主体将形成涉及互连接的路由器集合的子网(如组播树)。可按不同的方式对这些基于主体的子网进行分配、定向和配置。信道作为针对主体而在其中构成的所有子网的集合可类似于例如网状的网络。
图4是智能路由器92的示范性硬件部件图,智能路由器92可对应于任一个其他引用的智能路由器。网络节点90可包括与传统主干路由器95相连的智能路由器92。智能路由器92包括连接到存储器94和辅助存储装置97(可能是用例如独立的机器实现的)的处理器93,存储器94和辅助存储装置97二者任一个均可存储数据,也可高速缓存数据,并可存储由处理器93执行的应用。辅助存储装置97提供非易失数据存储。根据如下所阐释的软件控制,处理器93向主干路由器95提供指令,以便它可基于由针对订购的主体过滤器和属性过滤器产生的路由规则路由(转发)或不路由(丢弃)消息或分组。虽然显示为在独立的处理器控制设备中来实现,但可选的是可用专用集成电路(ASIC)在主干路由器95内实现智能路由器92,以便可在可能还带有嵌入软件的硬件中提供智能路由功能。或者,智能路由功能也可用一个或多个路由设备的软件和硬件的组合来实现。
图5是示范性发布方和订户机的图.发布方机100或118可包括以下部件:存储一个或多个发布方应用104和代理应用105的存储器102;提供非易失数据存储的辅助存储设备112;用于输入信息或命令的输入设备108;用于执行存储在存储器102中或从其他存储设备接收的应用的处理器114;用于输出信息的输出设备110;以及用于提供可视显示信息的显示设备116.
订户机122或140可包括以下部件:存储一个或多个应用126和代理应用128的存储器124;提供非易失数据存储装置的辅助存储设备130;用于输入信息或命令的输入设备132;用于执行存储在存储器124中或从其他存储设备接收的应用的处理器134;用于输出信息的输出设备136;以及用于提供可视显示信息的显示设备138。或者,发布方和订户机可包括更多或更少的部件,或者不同的部件,它们可以为任何配置。
发布方机100和118经由网络120(如上述网络)与订户机122和140相连。网络120包括用于在网络核心中通过分组或消息来提供数据或内容的分布路由的智能路由器。虽然只显示了两个发布方和订户机,但网络120可缩放以包括更多发布方和订户机。发布方和订户机可用任何处理器受控设备来实现,如包括但不限于以下示例:服务器;个人计算机;笔记本式计算机;个人数字助理;电话;蜂窝式电话;寻呼机;或其他设备。具有智能路由器的网络120可包括任何连接了硬接线设备、无线设备或二者的有线线路或无线分布网络。网络120还有可能利用现有或传统网络基础设施。
图6是说明智能路由器的信道管理器150的图。在本示例中,信道管理器150是用多个服务器152、154和156实现的。每个服务器包括其自身的本地存储装置158、160和162。智能路由器164、166和168联系信道管理器以便得到有关特定信道的信息。信道管理器也可提供数据持续、故障跳过功能或其他功能。因此该信道管理器提供包括该网络中任何地方的一个数据库或一组数据库的信道服务,这些数据库规定了例如与信道相关的信息、数据持续特性、发布方和订户的用户信息以及基础设施信息。基础设施信息可包括例如智能路由器的标识和连接它们的对应隧道、信道的主体以及信道的属性(每个属性的名称和类型)。分组或消息也可承载信道相关的信息,包括固定属性和可变属性的标识。
用户在在线时可下载信道信息。例如,用户可通过利用用户名和口令来登记。当认证用户的登录时,该用户可打开(激活)信道,并从信道管理器检索关于该信道的信息。发布方可在发布内容时利用该信息,并且订户可利用该信息进入并登记订购。
信道管理器152、154和156最好构成一组来执行持续可靠的信道目录服务。信道管理器之一将作为主信道管理器,而其他作为备用信道管理器。如果主信道管理器故障,则主信道管理器的相邻信道管理器将接管成为新的主信道管理器,以保持可靠的服务。每个智能路由器保留有这些信道管理器的地址。如果智能路由器不可到达一个信道管理器,则它将寻找另一个来检索信息。例如,网络中的设备可采用命令来检索信道信息,表3中提供了其中的一些示例。或者,智能路由器可只具有主信道管理器或超过两个信道管理器。
图7是用户机或设备中的栈180内的示范性软件部件的图,该软件部件用于将用户机或设备与具有智能路由器的网络相连。用户机可用作发布方、订户或二者,并且它可包括以上所标识的示范性设备。栈180可包括一个或多个用户应用182,用户应用182可提供用于从用户接收订购、从发布方接收信道信息或接收要发布的内容或数据。用户应用182还可包括由用户机或设备执行的任何其他类型的应用。
栈180也可包括如代理184、事件库186、高速缓存库188、信道库190、消息传送库192以及分配器库194.代理184提供建立网络连接或其他功能,表3提供了由代理184实现的命令示例,它可采用代理服务器命令或其他类型的命令.事件库186记录有关用户机的事件或其他事件或信息.高速缓存库188提供本地高速缓存数据.信道库190存储信道的标识及其信息.分配器库194提供与控制通路196、信道管理器198以及一个或多个智能路由器200的连接,并且它可包括表4中所标识的示范性功能.消息传送库192提供与数据通路204的连接.
表5-9提供了用C编程语言的消息传送API的示例。表5和6提供了用以发送和检索消息的API示例。表7和8提供了用以发送和检索通知的API示例。表9提供了用以发送和检索控制消息的API示例。本说明书中提供的这些API以及其他API、程序和数据结构仅作为用于实现特定功能或特征的示例,并且实现可包括用任何编程语言的任何类型的API或其他软件实体。



  表5   用以发送消息的API示例   PC_Status    PC_msg_init(ChannelHandle ch,PC_UINT chld,PC_UINT userid,                    PC_TypeInfo*MsgType,PC_UINT msgTypeSize,                    PC_msg_SessionHandle*sess);  PC_Status    PC_msg_cleanup(PC_msg_SessionHandle sess);  PC_Status    PC_msg_closeTransport(PC_msg_SessionHandle sess);  PC_Status    PC_msg_create(PC_msg_SessionHandle s,PC_msg_DataType dType,                    PC_msg_MsgHandle*msg);  PC_Status    PC_msg_delete(PC_msg_MsgHandle msg);  PC_Status    PC_msg_clone(PC_msg_MsgHandle org,PC_msg_MsgHandle*new);  PC_Status    PC_msg_setSubject(PC_msg_MsgHandle msg,PC_CHAR*subject);  PC_Status    PC_msg_setSubjectint(PC_msg_MsgHandle msg,                    PC_USHORT*subjectArray,PC_UINT arraySize);  PC_Status    PC_msg_setAttrByNameInt(PC_msg_MSGHandle msg,                    const PC_CHAR*name,PC_INT value);//for each type  PC_Status    PC_msg_setAttrByPosInt(PC_msg_MsgHandle msg,                    PC_UINT attributePos,PC_INT Value);//for each type  PC_Status    PC_msg_addAttrInt(PC_msg_MsgHandle msg,const PC_CHAR               *name,                          PC_INT value);//for each type  PC_Status    PC_msg_send(PC_msg_MsgHandle msg);   表6   用以检索消息的API示例
  表5   typedef struct_attribute{          PC_CHAR              *name;          PC_TypeCode          type;          void                 *value;          PC_UINT              arraySize;  }PC_msg_Attribute;  typedef struct_attributeArray{          PC_UINT                      size;          PC_msg_Attribute     **attrs;  }PC_msg_AttributeArray;  PC_Status PC_msg_init(ChannelHandle ch,PC_UINT chld,PC_UINT userid,            PC_TypeInfo*                  MsgType,PC_INT msgTypeSize,PC_msg_SessionHandle            *sess);  PC_Status PC_msg_cleanup(PC_msg_SessionHandle sess);  PC_Status PC_msg_recv(PC_msg_SessionHandle sh,PC_msg_MsgHandle*msg);  PC_Status PC_msg_ctrlRecv(PC_msg_SessionHandle sh,PC_msg_MsgHandle            *msg);  PC_Status PC_msg_getSequenceNum(PC_msg_MsgHandle msg,PC_UINT            *seqNo);
  表5   PC_Status  PC_msg_getPublisherInfo(PC_msg_MsgHandle msg,             PC_msg_PublicInfo*pub);  PC_Status  PC_msg_getSubject(PC_msg_MsgHandle msg,PC_CHAR**subject);  PC_Status  PC_msg_getSubjectInt(PC_msg_MsgHandle msg,                   PC_USHORT**subjectArray,PC_INT*size);  PC_Status  PC_msg_getDataType(PC_msg_MsgHandle hMsg,                   PC_msg_DataTyPe*dataType);  PC_Status  PC_msg_getAttrByPosInt(PC_msg_MsgHandle msg,             PC_UINT pos,PC_INT*val);//for each type  PC_Status  PC_msg_getAttrValueByNameInt(PC_msg_MsgHandle msg,                   const PC_CHAR*name,PC_INT*val);  PC_Status  PC_msg_getAttrTypes(PC_msg_MsgHandle msg,PC_TypeCode*Types,                   PC_INT*arraySize);  PC_Status  PC_msg_getAttributeByPos(PC_msg_MsgHandle msg,                   PC_UINT attributePos,PC_msg_Attribute**attr);  PC_Status  PC_msg_getAttributeByName(PC_msg_MsgHandle msg,                   const PC_CHAR*name,PC_msg_Attribute**attr);  PC_Status  PC_msg_getPredefinedAttributes(PC_msg_MsgHandle msg,                   PC_msg_AttributeArray**attrs);  PC_Status  PC_msg_getDiscretionaryAttributes(PC_msg_MsgHandle msg,                   PC_msg_AttributeArray**attrs);  Void       PC_msg_freeAttribute(PC_msgAttribute*attr);  Void       PC_msg_freeAttributeArray(PC_msg_AttributeArray*attrArray);   表7   用以发送通知的API示例
  表5   ChannelHandle ch;  PC_msg_MsgHandle msg;  PC_msg_SessionHandle sh;  PC_msg_TypeInfo   Types[2];  Types[0].type=PC_STRING_TYPE;  Types[0].name=“company”  Types[1].type=PC_INT_TYPE;  Types[1].name=“stockvalue”  PC_msg_init(ch,chld,userld,Types,2,&sh)  PC_msg_create(sh,PC_MSG_DATA,&msg);  PC_msg_setAttrValueByNameInt(msg,“stockvalue”,100);  PC_msg_setAttrValueByPosString(msg,1,“PreCache”);  PC_msg_addAttrString(msg,“comment”,“mycomments”);  PC_msg_send(msg);  PC_msg_delete(msg);  PC_msg_closeTransport(sh);       PC_msg_cleanup(sh);   表8   用以检索通知的API示例
  表5   ChannelHandle ch;  PC_msg_MsgHandle msg:  PC_msg_SessionHandle sh;  PC_msg_TypeInfo   Types[2];  PC_msg_AttributeArray*attrArray;  PC_CHAR*company;  PC_INT value;  Types[0].type=PC_STRING_TYPE;  Types[0].name=“company”  Types[1].type=PC_INT_TYPE;  Types[1].name=“stockvalue”  PC_msg_init(ch,chld,userld,Types,2,&sh);  While(1){        PC_msg_recv(sh,&msg);        PC_msg_getAttrValueByPosString(msg,0,&company);        PC_msg_getAttrValueByNameInt(msg,“stockvalue”,&value);        PC_msg_getDynamicAttributes(msg,&attrArray);        PC_msg_freeAttributeArray(attrArray);        PC_msg_delete(msg);  }  PC_msg_closeTransport(sh);        PC_msg_cleanup(sh);

图8是如以上标识的那些智能路由器以及图4所示的智能路由器92的示范性软件部件210的图。软件部件210可存储在例如存储器94中,以便由智能路由器92中的处理器93执行。部件210包括例如过滤守护程序212、分配器214、路由守护程序216以及高速缓存管理器218。过滤守护程序212提供基于内容路由的过滤,以便根据如下所阐释的路由规则处理订购的内容。分配器214提供如需要用来经由通路220传播过滤器的那些的控制消息的通信,并且分配器还可为用户提供单个输入点以及给一个保密插件提供信道管理器,从而提高了网络的安全性。换句话说,在本示例中用户不直接联系信道管理器,不过在备选实现方式中他们可以这样做。分配器214利用控制消息来从信道管理器获得属性(名称-值对)。
路由守护程序216提供与数据通路222的通信,它可经由如图4所说明的传统主干路由器或其他路由设备而进行。高速缓存管理器218在包括对应智能路由器的网络节点上提供本地高速缓存数据。以下将更进一步阐释高速缓存管理器218的操作,高速缓存管理器218在整个网络核心中提供数据的分布式高速缓存。
作为应用级的备选方式,基于内容路由可在内核级实现。可由内核访问的存储器独立于应用层中的存储器。为使基于内容路由运行于应用中,需要例如将消息数据从内核存储器区拷贝到应用区,并将应用环境从内核环境交换到路由应用环境中。二者均会引起大量开销。如果代替修改内核以支持基于内容路由,则可进行更快速地路由,从而摆脱了上述开销。
由于在内核中具有基于内容路由的这种特征,因此路由守护程序216依据实现可或不可直接经由数据通路222发送或接收数据.守护程序是运行于应用层的处理,它预先计算要插入到内核中的基于内容路由表.然而,一旦插入了基于内容路由表,路由表便可由内核用来作出路由决策.同样,过滤守护程序预先计算过滤表并将其插入内核中.在此内核实现中,路由守护程序或过滤守护程序均不能直接与数据通路交互.
图9是可能包括订购内容的消息的分组结构230的示例的图。用于基于内容路由的分组或消息包括例如首部部分和有效载荷部分。首部部分规定路由或其他信息。有效载荷部分规定数据或内容,或数据或内容的指示。分组结构230包括IP首部232、用户数据报协议(UDP)传输控制协议(TCP)首部234、长度值238、一个或多个主体字段240以及一个或多个属性242。分组结构230说明了关于长度值以及主体和属性的基本结构。基于内容路由的分组也可包括其他或不同的单元,如以下所阐释的图18的示例中说明的那些,并且基于内容路由的分组可按任何方式进行配置。而且,这些属性可包括例如附加于消息末尾的自由属性(discretionary attribute)。这些自由属性是例如由发布方(或者甚至是路由器)增加的特设信息,可不必用针对信道指定的消息格式对其进行传送。
发布方和订户方法论
图10是由发布方用来建立信道和发布内容的示范性发布方方法250的流程图。方法250可用例如包括由发布方机100中的处理器114执行的代理106的软件模块来实现。在方法150中,发布方机中的代理106接收发布方对于信道的代理服务器的创建(步骤252)。代理服务器提供与网络的通信。代理106通过接口确定信道的消息格式(步骤253),并且该格式信息可从例如信道管理器或网络中的其他实体获得。代理106使用所接收的信道信息来建立信道的代理服务器(步骤254),它包括接收信道的属性(步骤256)以及在信道上创建通知(步骤258)。该通知为“侦听”信道上的内容的设备提供内容。属性定义了通知的参数和特征。
代理106将内容信息和信道的标识符(ID)送给网络核心中或其它用于处理订购的任何地方的智能路由器(步骤260)。发布方用适当的值填充通知属性(步骤261),并且发布方随后可根据信道属性发布关于通知的内容(步骤262)。在本示例中,步骤260-262完成发布通知,或者,这可取决于特定实现需要不同的或附加的步骤。因此,在本示例中与通知相关联的信息被分成按顺序排列的属性序列,每个具有名称、在通知内的位置(从1开始)、类型以及值。或者,根据特定实现属性也可具有不同的特征。属性可包括例如预定义属性、自由属性或二者。
智能路由器可利用分组中的信道ID来获得对应信道的属性,它确定经由信道传送的分组的结构或格式。具体而言,每个分组可包含例如与信道ID以及其他首部信息(如发布方ID和主体)相关联的标记符。这些标记符可用于将主体映射为消息格式中的数字,图18中显示了其示例。小整数值(例如十六比特的值)可用作这些数字。或者,可用任何其他类型的数字或信息来映射这些主体。将主体映射为数字具有特别的好处;例如,它可节约消息格式中的空间并可提供统一或标准的方式来在消息中规定主体的指示,使得它们可快速地被定位并被识别。智能路由器可在本地存储映射,或者,也可利用数字通过命令远程获得对应主体。
表10说明用于将数字映射到主体的结构,在本示例中采用整数值.表中的主体树参数表明主体可在分级关系中包括一个或多个主体字段;例如,主体树可包括一串用特定符号划界的主体字段.表2中提供了主体树的示例.作为示例,主体树quotes.nyse包括主体“quotes”和子字段“nyse”两个术语,它们用如URL或其他网络地址中所发现的“.”来划界.除了采用周期和规定的URL类型串之外,还可以利用任何用于划界的任何字符和符号的方式来规定主体树.

因此,知道了特定信道的分组格式或结构,智能路由器便可快速地在基于内容路由的分组中定位主体和属性或其他信息。例如,信道可规定在信道上传送的主体和属性的字节位置,使它们易于通过对分组中的字节计数来定位。或者,智能路由器可解析分组以定位主体和属性或其他信息。
表11提供了C++编程语言的发布方程序的示例。表12提供了用以创建信道的API的示例。表13提供了由信道管理器(参见图6)维护的并提供信道相关信息的信道配置文件的示例,如表所示。或者,为了分布处理负载,系统可具有用以提供地理位置上分散的服务器的IP地址的全局信道管理器,其中这些服务器用作本地信道管理器。
表11 发布方程序示例 #include“PC_evn_Notification.h”#include“PC_evn_Proxy.h”using namespace precache::event;int main(int argc,char argv[]){       PC_UINT QuotesRUs=myChannelofInterest;//channel ID       PC_UINT myID=myPublisherID;//publisher ID
       try{            Proxy p(QuotesRUs,myID);            Notification n1(p,“quotes.nyse”);            n1.SetPredefinedAttr(“symbol”,“LUS”);            n1.SetPredefinedAttr(price”,95.73);            p.Publish(n1);            Notification n2(p,“quotes.nyse”);            n2.SetPredefinedAttr(1,“SNE”);//attribute symbol is in position 1            n2.SetPredefinedAttr(2,80.18);  //attribute price is in position 2            p.Publish(n2);       }       catch(InvalidChannelException icex){            cerr<<“bad channel”<<end1;       }       catch InvalidSubjectException isex){       }       catch(InvalidNotificationException inex){            cerr<<“bad notification”<<end1;       }       catch(Exception ex){            cerr<<“unknown error”<<end1;       }}   表12   用以创建信道的API示例
  PC_Status rc;  rc=PC_chn_create(Provider_info,authinfo,ConfigurationFile,&hChannel);  /*the first one primary channel manager*/  rc=PC_chn_addChannelManager(hChannel,“10.0.1.1”);  /*secondary channel manager*/  rc=PC_chn_addChannelManager(hChannel,“10.0.2.2”);  */  rc=PC_chn_setProperties(hChannel,ConfigurationFile);  /*  Set the message type(only in fixed part of the message)  by using rc=PC_chn_setAttributeType(hChannel,name,position,attributeType).  The type information is propagated to all edge routers.  */  rc=PC_chn_setAttributeType(hChannel,”Priority”,1,PC_UINT 16_TYPE);  rc=PC_chn_setAttributeType(hChannel,”Alarm_Name”,2,PC_STRING_TYPE);  rc=PC_chn_setAttributeType(hChannel,”Alarm_Time”,3,PC_INT32_TYPE);
  rc=PC_chn_updateAttribute(hChannel);  rc=PC_chn_close(hChannel);/*finish channel creation*/   表13   信道配置文件示例
  #Channel Setup-Read by Channel API,event and messaging  #Each channel entry information is tagged with the  #type of information e.g.  #[ChannelComm 5]for Channel 5 Communication related information  #[ChannelSubjects 5]for subject related information in channel 5  #[ChannelAttributes 5]for attribute information in channel 5  #  #The Channel id is appended to the tag to indicate  #the channel that the information belongs to  #e.g.[ChannelComm 5]indicates routing information  #for channel 5.  #  #All the fields need not be set.For example if  #running with the central server,the MulticastIP is  #not needed.  [ChannelComm 5]  MulticastIP=225.0.0.1  RouterIP=test3  RouterPort=12345  ProxyPort=9015  ProxyCtrlPort=9016  [ChannelSubjects 5]  NumberOfSubjects=2  subject1=#.SUBSCRIPTION  mapping1=0.100  subject2=Quotes.Nyse  mapping2=102.101  [ChannelAttributes 5]  NumberOfAttributes=4  name1=StockId  type1=PC_UINT_TYPE  name2=Company  type2=PC_CHARARRAY_TYPE  name3=Price  type3=PC_FLOAT_TYPE  name4=Volume  type4=PC_UINT_TYPE
图11是用于接收和处理订购的订户方法264的流程图。方法266可用例如包括由订户机122中的处理器134执行的代理128的软件模块来实现。在方法264中,图形用户界面(GUI)例如向用户显示可用信道的指示(步骤266),这可用应用126来完成。识别信道的信息可从例如提供信道相关信息的信道管理器接收。可用任何类型的应用126以任何特定方式或格式来显示信道的标识。该应用接收用户的信道选择(步骤268),并调用API或针对选择的信道的其他程序(步骤270)。API给用户提供了对应于所选择的选项的信道的订购选项(步骤272)。API从用户接收订购值(步骤274)并将该订购发送至代理128,以便进行如下所述的处理(步骤276)。
订购参数可包括例如表1中所示的断定。例如,每个信道可利用其自身的API,以便根据特定需求或对应信道的参数来处理订购。这些API可包括例如针对接收订购的基于web的或基于Java的API,并可采用任何类型的用户接口和处理来接收订购的信息,并将其传递给代理应用。
图12是从概念上说明信道和订户屏幕或GUI 278和284的图,它可用来与接收订购的方法264结合使用。屏幕278包括识别可供用户选择的可用信道的多个区282。当选择了特定信道时,便可显示屏幕284用于接收在区286中用户的订购值。用户可选择区288以提交订购或选择区290以取消订购。屏幕278和284可被格式化为例如超文本标记语言(HTML)网页或任何其他格式。而且,屏幕可包括任意配置的区和内容,可能包括例如文本、图画、图片、各种颜色或多媒体信息,以便按所希望的提供针对订户的用户友好以及吸引视觉的界面。这些屏幕还可包括提供例如传统浏览器功能的工具条280。
表14用C++编程语言提供了订户程序的示例。
表14 订户程序示例
表14 #include#include#include“PC_evn_Filter.h”#include“PC_evn_Subscription.h”#include“PC_evn_Proxy.h”using namespace precache::event;class SubscriberApp:public Subscriber{private”:        PC_UINT notificationCount=0;public:        SubscriberApp(){}//default constructor        void run()        {               PC_UINT QuotesRUs=myChannelofInterest;//channel ID               PC_UINT myID=myPublisherID;           //publisher ID               try{                    Proxy         p(QuotesRUs,myID);                    FilterFactory*factory=FilterFactory::GetFilterFactory();                    Filter*       f=factory->CreateFilter(p,“symbol=\”LU\””);                    PC_INT        c1=0;                    SubscriptionHandle sh=p.Subscribe(“quotes.nyse”,f,this,                                                       (void*)&c1);                    while(notificationCount<2){       //let notify() get some                                                       //notifications                          sleep(5);                    }                    p.Unsubscribe(sh);               }               catch(InvalidChannelException icex){                      cerr<<“bad channel”<<end1;               }               catch(InvalidSubjectException isex){                      cerr<<“bad subject”<<end1;               }
表14                 catch(InvalidChannelException ifex){                       cerr<<“bad filter”<<end1;                }                catch(InvalidSubscriptionHandleException ishex){                       cerr<<“bas subscription handle”<<end1;                }                catch(Exception ex){                       cerr<<“unknown error”<<end1;                }        }        void Notify(Notification*n,void*c)//this is the callback method        {                 if(*(PC_INT*)c==0){//check the closure object                        PC_STRING symbol;                        PC_FLOAT price;                        n->GetPredefinedAttr(“symbol”,symbol);                        n->GetPredefinedAttr(“price”,price);                        cout<<“The price of“<<symbol<<“is”<<price<<end1;                        notificationCount++;                }        }};int main(int argc,char argv[]){        SubscriberApp a;        a.run();        }
通过有效载荷检查的基于内容路由和信道
图13是通过有效载荷检查基于内容路由的方法300的流程图。方法300例如可用智能路由器92中的处理器93执行的软件模块来实现,如用过滤守护程序212所表示的软件模块。或者,它可用ASIC或硬件和软件的组合来实现。方法300中所说明的基于内容路由可在网络中如网络核心任何地方的智能路由器中或边缘路由器中执行。
一般意义上,基于内容路由涉及检查分组的有效载荷部分,以便确定如何处理分组.此基于内容路由的方法可包括例如处理按任何顺序的订购列表(例如采用过滤器)、逐个主体以及逐个属性地将消息与路由规则进行比较以便确定出该消息的路由以及在网络核心中执行该处理.这些规则可包括管理路由器内处理的规则或与过滤器相关联的任何规则.这些路由决策因此可分布于整个网络核心中.使用如信道所表示的主体例如通过了解它们针对特定信道在消息或分组中的字节位置来确定出消息格式,从而为智能路由器提供在消息内快速定位属性的方式.
在方法300中,智能路由器92接收消息分组(步骤302)。它根据该分组确定对应消息的信道ID(步骤304),并利用信道ID检索该信道的属性(步骤306)。在本示例中,信道类型(根据信道ID确定的)确定分组中属性的位置和数据类型。信道属性可在本地存储或诸如通过信道管理器远程检索。智能路由器92检索对应于订购的过滤器(步骤308)。该过滤器包括一个或多个属性测试,通常是一组针对订购的属性测试。智能路由器92将分组中的属性应用于过滤器描述中的对应的属性测试(步骤310)。
如果过滤器描述中的所有属性测试产生肯定结果(步骤312),则意味着属性满足所有的属性测试,智能路由器执行由与过滤器相关联的规则规定的一组功能(步骤314)。这些功能可包括例如把分组路由至下一链路,和/或利用分组的内容在本地路由器执行由这些规则所指定的一些动作或计算。可例如在指定对应订购的数据结构中识别出动作或下一链路。当规则是链路时,它通常识别出下一网络节点以便接收分组,下一网络节点可包括智能路由器、主干路由器、网络连接的设备或其他实体。或者,下一链路可以被指定或以其他方式与订购相关联。
如果过滤器描述中的所有属性测试未产肯定结果(步骤312),则意味着属性不满足所有的属性测试,过滤器被宣告失配(步骤315)。智能路由器递归式地继续以上过程,直到耗尽过滤器描述中的所有属性测试或遇到了第一个否定结果为止,而不管它们中哪一个先出现。
一旦已经处理了对此过滤器的所有属性测试,智能路由器便确定是否存在更多过滤器(步骤316),如果是的话,它返回到步骤308,检索下一过滤器的属性测试以便针对它处理该属性。匹配过程(步骤308、310、312、314、315和316)一直继续,直到耗尽完整的过滤器组或可确定所有的动作或路由规则的结果为止,而不管哪一个先出现。如果分组不满足任何过滤器,则它将被引下(丢弃)并不被转发。
智能路由器92可按任何特定顺序序列通过过滤器。例如,如表15中所示,智能路由器可将订购的过滤器存储在文件或路由表中,并线性地序列通过它们以将属性应用于过滤器(属性测试)。或者,该路由表可包括链路或对过滤器的指针。
可选地是,基于内容路由在相同的时间可采用一种以上的方法,这取决于例如应用和性能增强的启发式,如基于业务条件的算法交换。可选择地对用于处理的过滤器在网络中的路由器上进行加密、解密、转换以及合并,用以针对基于内容路由执行有效载荷部分的检查。例如,可将诸如价格>$3.54122的订购删减为价格>$3.54,因为已知应用中的发行物不包含超过第二个小数点以后的货币属性。而且,外币在从海外发来的发行物到达例如位于美国的第一路由器时,最好还是先转换成美国货币为好。
作为线性方法的备选方式,智能路由器92可按其他顺序或根据各种有可能提高处理速度和效率的算法来选择过滤器用于进行处理.表16提供了订购和针对订购的对应链路的示例;在这些示例中,主体与特定信道相关,并且对于主体的订购可由过滤器的路由规则表示.主体可包括例如网络地址(如识别内容来源的统一资源定位符(URL)).



网络节点上的高速缓存
图14是高速缓存方法320的流程图.方法320可用例如智能路由器92中的处理器93执行的软件模块来实现,如高速缓存管理器218所表示的.或者,它可用ASIC或硬件和软件的组合在与对应智能路由器相同或不同的物理设备中实现.在方法320中,智能路由器92接收含有数据或内容、信道ID和主体的消息(步骤322).智能路由器92对数据加时间标记(步骤324),并在本地将它高速缓存到如存储器94或辅助存储装置97中(步骤326).它通过例如信道ID、主体和时间戳来索引高速缓存的数据(步骤328).
如果智能路由器92接收了对数据的请求(步骤330),它便利用索引根据所述请求检索高速缓存的数据(步骤332)。智能路由器92将高速缓存的数据传送至主干路由器95或其他路由实体上,以便将其最终传输给请求者或其他人。方法320可重复地被执行以便响应于请求而连续地高速缓存数据以及检索高速缓存数据。
图15是说明与方法320一起使用的高速缓存索引(336)的图。高速缓存索引(336)接收数据(338),并将其与时间戳(340)一起存储。在收集数据时,每隔一段delta(德尔塔)t时间便对数据进行标记,这里deltat表示标记之间的时间,例如t2-t1。也可以采用其他以任何方式作时间标记的索引类型。
表17从概念上说明对高速缓存的数据进行的索引。表18从概念上说明用于存储关于高速缓存的连接历史的数据结构。表19提供了用于在含有智能路由器的网络节点中本地高速缓存数据的数据结构的示例。
可以按任何固定的或可变的时间间隔进行时间标记。例如,可每隔五分钟对数据进行高速缓存和索引。在接收到用以检索指定时间和主体的高速缓存的数据的命令(如#.getCache)时,信道管理器218利用高速缓存索引来确定它是否可检索对应于步骤332的请求的高速缓存的数据。
每个主体或信道可包括例如在组播树和一组智能路由器中的其自身的IP地址。因此,表18表示在这种路由器之间的连接历史,它可在本地存储于用户机中;如果边缘路由器故障,则用户机可访问连接历史,以确定如何在边缘路由器再次联机时与信道的上游路由器重新连接。例如,它也可在它断开连接的期间执行得到高速缓存的命令,以便获得任何未决的订购内容。



表19 智能路由器的高速缓存数据结构的示例 信道节点 Struct ChannelNode{        PC_UINT           unChanld;        PC_AttributeInfo  *pAttrinfo;        PC_BOOL           bPersistent;/*Persistent or RT*/        PC_UINT           unTimeout;        PC_UINT           unTimeGranularity;/* in minutes*/        PC_INT            nDirFd;        HashTable         *pFirstLevelSubjs;        } 主体节点 Struct SubjectNode{        PC_USHORT         unSubjectld;        PC_UINT           unSubjLevel;        Void              pParent;/*Channel or Subject*/        PC_INT            nDirFd;        HashTable         *pNextLevelSubjs;        DataNode          *pData;  } 数据节点
表19 Struct DataNode {        PC_INT            nDirFd;        SubjectNode       *pParent;        LastTimeGrainNode *pLastTGrainData;        DLIST             *pStoredData;/*list StoredTimeGrainNode*/        PC_Mutex          mStoredDataLock;        } 所存储的时间粒度节点 Struct StoredTimeGrainNode{         PC_UINT       unStartTime;/*in minutes*/Chanld;        PC_UINT       unEndTime;/*in minutes*/        PC_INT        nFd;} 最后的时间粒度节点 Struct LastTimeGrainNode{        PC_CHAR       pLastTGrainData;/*could be a list*/        PC_UINT       unLastTGrainStartTime;        PC_BOOL       bReadyToStore;        PC_Mutex      mCachedDataLock;}
这些示范性数据结构包括以下信息。主体节点包含主体标识符、主体级、对父信道或主体节点的指针、它自己目录的文件描述符、对包含有它的下一级主体节点的hash(哈希)表的指针以及对数据节点的指针。数据节点包含对它的主体父节点的指针、数据目录的文件描述符、包含有对于存储在每个存储设备上的数据的数据结构的环形缓冲器、缓冲器的头和尾以及用于在检索和存储期间锁定数据节点的锁。已存储的时间粒度节点是表示实际数据文件的节点,最后的时间粒度节点表示还没存储到存储设备但在存储器中维护的最后的缓冲器。本示例中的高速缓存和数据存储装置线程利用最后的时间粒度节点的互斥来防止对最后的时间粒度节点的并发访问。
代理处理
图16是用于输出订购消息的代理方法350的流程图.方法350可例如用如由代理128表示的软件模块来实现,其中该软件模块由用户(订户)机122中的处理器134执行.在方法350中,代理128如利用图11和12中的上述方法接收订购(步骤352).代理128针对订购创建指定布尔表达式的字符串(步骤354),并解析该字符串以检测订购中的任何错误(步骤356).如果存在错误,代理128可向用户提供错误消息(步骤360)以便用户纠正错误并重新输入订购.如果订购未包含错误(步骤358),则代理128将表达式存储在数据结构中(步骤362),以下提供了其示例.代理128将数据结构中组成的不等表达式转变成正形(positive form)(步骤364),并将数据结构转变成对应的析取范式(DNF:disjunctive normal form)结构(步骤366)。代理128还将DNF结构的“与”表达式简化为只包含范围过滤器和成员测试(步骤368)。
DNF是一种众所周知的规范形式,其中布尔表达式表示为一个或多个所谓分离的子表达式的“或”,每个子表达式作为一个或多个属性测试的“与”。例如,布尔表达式(价格>=10“与”(符号==“LU”“或”符号==“T”))具有等同DNF表示((价格>=10“与”符号==“LU”)“或”(价格>=10“与”符号==“T”))。
步骤364中的转换涉及将具有“不等”操作符(在示范性语法中表示为!=)的表达式转换成等效的“正”形,该正形指定所有的容许值而不是一个不容许值。这一转换在创建DNF之前执行,并且由于在本示例中的路由器要求正形中的公式,因此这种转换是必要的。例如表达式(价格!=80)可转换为等效的正表达式(价格<=79或价格>=81)。
步骤368中的转换在创建DNF之后执行,并涉及所得的“与”表达式的额外简化,在本示例中,还执行它用以简化路由器的工作。具体而言,对于相同的属性的多属性测试的“与”可在等同性测试的情况下被简化为或者带有一个下界、一个上界、下界和上界二者或单个值的规范的“范围过滤器”。特定种类的范围过滤器则根据表22进行编码。
例如,表达式(价格>=10“与”价格<=80“与”价格>=20“与”价格<=100)可简化为表达式(价格>=20与价格<=80),这是具有下界和上界的范围过滤器的示例。以下为简化后的其他种类的例子:(价格>=20)(只有下界);(价格<=80)(只有上界);以及(价格==50)(单个值)。在创建这些范围过滤器时,也可以将一些子表达式简化为“真”或“假”,在这种情形下,可根据布尔代数法则消除子表达式,由此还可进一步优化消息中的表达式的编码。例如,将表达式(价格>=50“与”价格<=20)简化为“假”,这是因为对于“价格”没有可满足该表达式的值。在将整个过滤器表达式简化为“假”的特定情况下,代理根本不必创建消息,由此减轻了路由器的不必要的工作。
如果主体过滤器包含通配符,代理128则可选地按如下所述的方式将它们转换(步骤370)。或者,可在网络中而不是用户机或其他设备上转换任何通配符。在本示范性实施例中,用于主体过滤器的语法是采用通配符的仅有语法,而属性过滤器的语法是采用布尔表达式的仅有语法。或者,实现可针对主体过滤器和属性过滤器采用不同的或可变类型的语法。
代理128将所得的DNF表达式编码成消息(步骤372),并将该消息传送到智能路由器(步骤374)。编码可能涉及将订购转换成平面消息格式(flat message format),这意味着它构成了数据串。此传送可涉及将由订购的主体过滤器和属性过滤器产生的路由规则传播至一个或多个智能路由器或网络中的其他路由实体上。对于该传播,订购表达式例如可映射成传统分组结构。
步骤372的编码涉及将对于某信道的订购编组为消息传送API的消息传送格式,以便在整个信道上传播.订购是在内部例如作为带有主体#.SUBSCRIPTION的通知进行消息传送的.因为既有可变数量的主体过滤器字段又有可变数量的属性测试,因此在本示例中一对字节用于存储主体过滤器字段数,而另一对字节用来存储属性测试数.对主体过滤器的各个字段顺序地(例如按在源订购中所规定的顺序)进行编组,并将每个编组为消息的两字节部分.通配符字段可按下述方式编组.
在对属性测试编组时,在消息的末尾以类似于通知的属性值的编组的方式编组测试操作数。在对属性测试和操作数编组之前,它们是按DNF的每个析取项(disjunct)内的属性顺序进行分类的,同时按位置顺序测试预定义的属性,随后是按名称顺序测试自由属性。此外,在每个析取项内对标量值的属性进行相关测试集被简化为具有一个界限值(对于左或右开放范围或等同性测试)或两个界限值(对于不同界限值之间的闭合范围)的范围过滤器的正规式。关于测试的其余信息被编码成例如按与操作数的相同顺序的两字节对;此两字节对序列设在消息中,紧跟在主体过滤器字段的两字节编码序列之后。两字节对可构成一序列属性测试的比特串编码的一种形式,除两个字节对之外它也可用于表示其他类型的编码。以下提供了属性测试的例子。
属性测试的编码概要如表20所述。表21说明两字节对的编码,表22说明两字节对中的操作符ID的编码。




由于测试的两字节对已经表明测试的操作数的类型以及测试是否应用于预定义或自由属性,因此不需要对自由属性或它们的类型所执行的测试数分开编组。此方案假定在通知中不超过127个预定义属性。或者,此设计可采用更多比特来编码属性测试。
虽然这种编组常规根据属性过滤器的DNF来命令并分组属性测试,但是为使整个属性过滤器的整体评估更加高效,基础设施单元(如路由器)也可选择按某其他顺序(或许根据动态获得的关于不同测试的成功或失败的可能性的本地数据)来评估测试。消息的订购ID字段是由代理产生的值,用于唯一识别后续请求中的代理的边缘路由器的订购,以便修改或取消该订购。具体而言,对订购的属性过滤器的动态修改是采用图18的示例中显示的消息格式进行传播的,除了主体是#.RESUBSCRIPTION,并且订购ID是要修改的先前登记的订购的ID。取消订购是例如在整个订购ID字段采用图18的消息格式进行传播的,其中主体是#.UNSUBSCRIPTION,并且订购ID是先前登记的要被取消的订购的ID。
以下提供了用于说明由上述代理进行的转换和编码的示例。考虑以下示范性属性过滤器表达式:价格>=10与(符号==“LU”或(量>=1000与量<=10000))。图19显示了描述步骤362中由代理所使用的对象以存储表达式的统一建模语言(UML)的图390。此图说明用于规定订购的等级关系,它可包括变量、恒定值或二者。图中的对象可以是根据特定实现的过滤器类实例。每个SimpleFilter(简单过滤器)对象描述了用于存储有关过滤器表达式的对应属性测试的信息的属性值。在图19的表达式中,“或”过滤器396连接两个“与”过滤器392和400。“与”过滤器392包含具有订购属性的简单过滤器394。类似地,“或”过滤器396包含简单过滤器398,“与”过滤器400包含简单过滤器402和404。
为此示例,假定属性价格、符号以及量为相关联信道的预定义属性,并假定它们分别定义在位置0、1和2中。此外,属性类型假定分别为无符号整数(类型代码6)、字符阵列(类型代码12)和无符号整数(类型代码6)。
考虑包含以上示范性属性过滤器表达式的下一订购作为它的属性过滤器。图18显示了将订购编组成消息。图18左边的简图386显示了实际的消息内容,而右边的简图388提供了消息的不同部分的图例。在本示例中,每个简图的宽度为四个字节。在编组之前,过滤器已转换为它的等价DNF:(价格>=10与符号==“LU”)或(价格>=10与量>=1000与量<=10000)。
十六比特的属性测试编码显示为比特序列,间隙显示出分隔成不同的部分。注意,本示例中的价格的两个测试是不可合并的,由于它们是分开的析取项,因此它们被分开编组为无右界(“右开放范围”)的范围。另一方面,因为量的两个测试在相同的析取项中,因此它们可以结合,并由此将它们编组到一起作为单个的“闭合范围”的测试。
最后,还要注意到一定字段的特征是“假设的”;这意味着此示例的这些字段值是任意选择的,并且一般与所编组的订购无关。此外,订购的主体过滤器任意地选择为“>”,它与相关联信道定义的任何主体匹配。上述以及图18和19中所示的示例是只为说明目的而提供的,并且编组可用于任何其他类型的订购。而且,方法350只提供编组订购的一个示例,可以任何其他方式对它们进行编组。
图17是输入消息的代理方法376的流程图。方法376可例如通过用户机122中的代理128和应用126实现。在方法376中,代理128接收来自对应于订购的智能路由器的消息(步骤378)。代理128例如利用消息中的信道ID确定对应于订购的信道(步骤380),并调用该信道的API(步骤382)。该API以GUI或其他格式在用户机上提供对于该订购的数据(步骤384)。输入消息的处理可采用与上述编码处理相反的、解码数据的处理,并且此解码(反编码)可在路由器或其他网络实体中执行。
通配符处理
图20是通配符方法410的流程图。此方法说明针对过滤器采用一组路由规则以转换订购的表达式中的通配符的示例。方法410可用例如用代理128表示的由用户机122中的处理器134执行的软件模块来实现。或者,可在网络中由处理器93在智能路由器92或包含在ASIC91中的对应功能中的软件控制下处理通配符。通配符包括开字段(open fields)或可变长度字段,其示例在表21中提供。
在方法410中,代理128或其他实体接收具有通配符的订购(步骤412).订购的主体长度可在发布内容时由发布方规定,并且主体可在发布方机上进行预处理,以便例如对主体的字段进行计数并因此获得它的字段计数(长度).代理128计数过滤器操作数中字段的数量(步骤414),并初始化字段长度=N的新规则(过滤器)(步骤416).代理128检索订购的子字段(步骤418),并确定过滤器操作数子字段O[i]是否为通配符(步骤420).如果过滤器操作数子字段不是通配符,则代理128将合取子句增加到该规则中,字段[i]=O[i](步骤422).如果过滤器操作数有更多子字段(步骤424),代理128返回到步骤418以处理其他子字段.参数“i”表示字段,其中i在本示例中是表示字段数的整数.
在处理了子字段之后,代理128确定最后的过滤器操作数子字段是否是“>”(步骤426),如果是的话,则它将长度限制改变为字段长度>N-1(步骤428)。通配符处理可采用任何类型的符号,“>”只是这样的一个示例。在此示例中,“a.>”可意指a.b,a.c,a.d等,以及在所有的级上的所有其子主体(例如a.b.x,a.c.x,a.b.x.y等)。对于通配符的其他实现还可用其他符号。
如果必要的话,代理128将已变换的规则传播给智能路由器或网络中的其他实体(步骤430)。因此,该方法重述通过上述子字段以便处理它们,将通配符转换为无通配符的规则,也就是不包含通配符的规则。通配符的转换可出现在网络中的任何地方,例如在订户机上或在智能路由器中。因此,此转换可在一个带有传播到其他实体的变换的规则的实体中进行,或者它也可动态地进行。
表23提供了用于处理通配符的这些示范性路由规则的概要以及示例。这些路由规则例如可在智能路由器中产生,或在其他网络实体产生并传播到智能路由器中。此外,提供表23中的路由规则只用于说明目的,也可以采用用于转换通配符的其他路由规则。


告警服务
上述智能的基于内容路由可用于许多实现中,其中之一涉及数字视频监视系统(DVSS)。例如,用户(如执法或安全机构)可输入对来自特定位置的摄像机的视频剪辑的订购。摄像机可捕获数字视频剪辑并经由具有基于内容路由的网络(如因特网)传送那些剪辑,在网络核心中其根据订购处理视频剪辑。因此,用户接收感兴趣的视频剪辑,并将它们的过滤分布于整个网络中。除视频剪辑以外,可分布任何其他类型的内容以提供任何类型的警告,这些示例包括安全破坏、失火以及欺诈检测。
在另一示例中,特定摄像机可包括相关联的移动传感器。在检测到移动时,移动传感器同时触发摄像机将拍摄的视频剪辑传送至网络,该网络采用基于内容路由来将视频剪辑路由至订户。
因此,上述基于内容路由可显著减少网络在处理和路由视频剪辑方面的负担。例如,由每个电荷耦合装置(CCD)产生的视频信号要求通过数字视频录像(DVR)写到四个不同的目的地,它们分别是DVR管理的本地存储装置、连接到网络的全局存储装置、DVSS系统以及iDSS管理服务器。考虑到承载如此巨大的数据量所必须的网络带宽,由iDSS管理的CCD或DVR的总量可能不满足客户的容量需求。因此,带宽需要例如采用针对媒介或大量的订户的技术来限制。图21显示了一个监视系统的整体接构视图,其中每个DVR可管理四个或十六个CCD。
结构概述:图22说明了主要基于上述技术的两项改进,以改善图21所示的监视系统的能力。如图22所示,第一项改进集中于如何减少DVR主干业务量,而第二项改进采用称为z盒的设备,该设备提供如上述那些功能的基于内容路由的功能,以提高数据传送效率。
减少DVR主干上的本地业务量:数据分布方案中的低效率可导致严重的可扩展性问题。即,在DVR生成的图像文件采用基于TCP协议交付到其他的盒中时,带宽消耗随连接到局域网(LAN)的设备数量而线性增加。在iDSS的一个视图中,相同的流式视频数据需要发送到联网的存储装置(SAN或NAS)、iDSS监视器以及每个DVSS中,其中DVSS是远程监控软件。
一种解决此问题的方法是对于每个DVR,在LAN上发布出仅一个数据流,并让其他连接到网络的设备接收相同的数据流作为订购的结果。因此,如果DVR的输出速率为10兆比特/秒(Mbps)的话,则相同的网络上例如有3个订购设备应当只需要网络的10Mbps,而非30Mbps。
为达到此目的,上述发布-订购、事件通知API可用于DVR盒和利用DVR数据的任何设备(如iDSS、全局存储装置)上。API可以是简单但有效的,它可采用IP组播和恢复协议。API还可遵循以上的发布-订购模型,使得其他实现不需要改变代码,只要简单地利用提供API的完全版本的库便可进行重新链接。
DVSS的代理服务器:每个DVSS可接通一条到DVR盒的连接(基于TCP)以接收流式视频数据。可扩展性提出了如上所述相同的问题。
参照图22,此方法可描述为2个阶段,例如在第一阶段1中,在LAN侧处,可提供代理服务器(如z盒1)以处理所有的DVSS输出数据(即从DVR输出到DVSS的数据).此代理服务器订购LAN上所有的DVR数据,并将该数据发布到外部网络(如因特网)上.DVSS订购此数据.因此,代理服务器z盒1提供了订户代理(如代理128)和发布方代理(如代理36),其中订户代理用于采集来自DVR的数据,发布方代理用于将此数据在整个发布-订购网络(如上述的发布-订购网络)上发布.
即使在阶段1,业务量也会在LAN侧有极大地减少,但是业务量仍然可能堵塞输出链路,特别是在某些国家,在典型的不对称数字订户线路(ADSL)只有64千比特/秒(kbps)的上行链路速度时,尤其如此。
继续参照图22,阶段2优选涉及租用或者获取在服务提供商机房中的连接并在那里设置第二z盒设备(如z盒2)。例如,z盒设备可放在Hi-Net主干上。可在客户住宅处建立从该设备至z盒2的单个连接(隧道)。
在此情况下,在客户住宅处的z盒2用作订户代理(如代理128)。Z盒2还可用作路由守护程序(如路由守护程序216)。作为订户代理,z盒2(如Hi-Net机房中的)优选订购DVR通过z盒1发布的内容。在z盒1和z盒2之间的是如上所述的发布-订购网络。因此,z盒1发布来自DVR的视频,而z盒2订购DVSS所需要的视频。在此方式中,采用这里所述的事件通知系统提高了告警服务的数据交付效率。z盒(如z盒1和z盒2)优选包括如上所述用于在此发布-订购网络上进行发布和订购的模块。
数字内容交付
上述智能的路由基于内容可用于许多实现,包括路由通过订购的视频、音乐和软件更新。例如,用户可订购软件更新(如防病毒软件),并将该更新自动路由给他们。在其他示例中,用户可订购特定视频和音乐内容,并且也可使订购的内容自动路由给他们。视频和音乐例如可作为流式数字内容而接收。此外,网络核心中的分布处理大大减轻了提供软件、视频和音乐内容的服务器上的处理负担。因此,除其他好处以外,采用相同的网络基础设施来提供内容还可有效地增加网络带宽。
图23显示了一种用于实现此路由的特定结构。应当注意,该结构假设有两级高速缓存服务器C1和C2,优选驻留在网络服务提供商的设在同一位置的场所中。不过,在只有C1高速缓存服务器是可用的时候也可获得这些效益。术语C1和C2高速缓存服务器是指提供如上所述的分布式网络高速缓存的服务器(参见图14-15及相关描述)。该结构例如可在两个阶段中发展得来。第一阶段假设C2高速缓存服务器不存在,它在中央分布器450和C1高速缓存服务器之间采用快速文件传送机制,以减少服务器负载和发送大的媒体文件所需的时间。快速文件传送机制优选通过在中央分布器450与C1高速缓存服务器之间添加路由盒(图23中的470)而获得。第二阶段是在C2高速缓存服务器上添加路由盒,以及在用户(如用户机460)和C2高速缓存服务器之间采用上述订购机制。
采用路由盒的效益:路由盒470优选包括用于实现上述基于内容路由的模块(如上述智能路由器92)。采用路由盒470实现上述基于内容路由有两个主要效益。采用这些路由盒470的快速路由和文件传送解决方案可将文件传送的速度提高到传统文件传送协议(如FTP或RCP)的5倍。同时,也可在广域网(WAN)上实现高效组播。当数据从中央位置发送到一组接收器中时,此路由解决方案将通过利用网络组播拓扑和在WAN上构建组播隧道来减少服务器负载和网络带宽需求从而加快内容交付的速度。
结构:将媒体内容从中央分布器交付到C1高速缓存服务器中.C1高速缓存服务器存储全部的内容文件.每个C1高速缓存服务器需要例如terra字节的磁盘空间来存储全部内容.用户(例如采用诸如订户机122的用户机460)请求C2高速缓存服务器的内容,该高速缓存服务器只存储部分内容.C2高速缓存服务器需要例如数百个吉字节的盘空间.
用户和C2高速缓存之间的文件传送:在用户460通过发出订购请求媒体文件时,该请求由其中一个C2高速缓存服务器来处理。如果所请求的媒体文件已在C2服务器中高速缓存,则立即交付此文件。如果未在C2服务器中高速缓存,则向C1高速缓存服务器发送订购并将所请求的文件从C1高速缓存服务器传送到C2高速缓存服务器。
从C1高速缓存器至C2高速缓存器预先将媒体数据高速缓存:基于用户订购或订购模型,可预先将媒体文件从C1高速缓存服务器高速缓存到C2高速缓存服务器中。例如,如果连接到C2高速缓存服务器的用户460对流行歌曲非常感兴趣,C1高速缓存服务器可将新的流行歌曲推向C2高速缓存服务器,即便是在C2高速缓存服务器上的任何用户460请求这种歌曲之前也这样做。
实现阶段:第一阶段涉及例如安装快速文件传送机制,具有在分布器450与所有的C1高速缓存服务器之间的内容路由。不需要C2高速缓存服务器。在此情况下,所有的用户460直接连接到C1高速缓存器上。C1高速缓存服务器定期从分布器450接收新的媒体文件。图24中显示了阶段1的结构。
注意,在图24中,分布器450向路由盒470只发送新的媒体文件一次,由上述智能的基于内容路由技术驱动。因此,减少了分布器450的负载。路由盒470采用快速文件传送机制将文件发送到每个C1高速缓存服务器。在此情况下,在接收器460端不需要额外的路由盒。或者,其他类型的服务器可用于C1高速缓存服务器。
现参照图25,其中显示了实现阶段2的实施例的结构。本示例中的阶段2优选采用内核实现的路由盒470来路由和发送数据。内核层解决方案还减少了发送文件时的开销,这是因为它需要更少的缓冲器拷贝以及更少的环境交换时间(context-switching time)。此外,阶段2解决方案在结构中增加了C2高速缓存服务器,如图25所示。同样,如图所示,优选在服务提供商网络中采用共同定位以在C2站点上添加路由盒470。这进一步显著减少了带宽需求,可能有数百倍的带宽减少。
如图25所示,C1高速缓存服务器和C2高速缓存服务器之间传送的文件经由与C1高速缓存服务器相关联的路由盒470和与C2高速缓存服务器相关联的路由盒470传送。在此方式中,采用这些路由盒470实现了C1和C2高速缓存服务器之间的快速路由和文件传送解决方案。
服务质量管理
上述智能的基于内容路由例如可用于以特定交付保证路由内容。例如,基于服务级协定(SLA),ISP或内容提供商可预留带宽来保证服务质量(QoS)。这可通过上述基于内容智能路由而高效地完成。
结构:存在至少两种保证内容交付中的QoS的可能配置。第一种配置是将多个链路连接到一个或多个电话公司(TELCO)网络中。第二种配置是只用一条到TELCO网络的网络链路。如图26中所示的示例,有两层路由盒(R盒)。R盒1基于数据分组的内容将分组路由到R盒2和R盒3。R盒2和R盒3将数据分组路由到不同的网络链路(如L1-L4)中,每条链路连接到TELCO网络。为给高级用户预留带宽,为最高SLA客户产生的数据分组被路由到具有最高带宽(最高优先级)的链路上,以保证那些客户的特定QoS。
如图27中所示的示例,R盒1将数据分组路由到R盒2和R盒3.R盒2和R盒3将数据分组又路由到不同的通信链路中,它们随后全部连接到R盒4.R盒4基于每条链路的QoS水平从四条链路获取数据分组.随后,R盒4通过网络链路(如L5)将数据分组发送到因特网ISP.通过实现在每条链路中获取数据的各种算法,该系统可为每条链路动态分配带宽,以便得到比多链路配置更佳的QoS管理.
技术:QoS保证可影响上述智能和分布的基于内容路由的技术。为基于内容路由标记要路由的每个分组。解决方案为ASP/内容提供商作出经济可行的QoS的部署,此外还可能有其他好处。
效益:该解决方案可提供给因特网服务提供商(如IDC)或内容提供商(如按需媒体(MOD)服务提供商),以便基于客户的SLA为不同的客户预留带宽。
实时告警:告警可具有不同的优先级。例如,安全和失火告警可赋予最高优先级,而新的告警可赋予更低优先级。在没有QoS路由的情况下,最高优先级告警可能不能以实时方式到达它们的订户,因为ASP的网络带宽可能被具有更低优先级的告警和通信占用。这种解决方案防止了此问题的发生。而且,可基于客户的SLA将告警发送到每个客户。高级客户可以付出更多的费用并拥有分配给他们的更多带宽。
实时数据交付:对于一些应用(如按需音频(VOD)、MOD或IP上的语音传送业务(VoIP)),带宽可用性影响了这些应用的质量。这种解决方案可按如上所述通过检查分组内容基于消息类型来路由数据分组。对于一些带宽敏感的应用,它们的数据分组可路由到具有更高优先级的链路。除了消息类型之外,数据分组还可基于它们的SLA级路由到各个订户。可采用这种解决方案将对于更高的SLA客户的分组路由到具有更高优先级的链路。
软件或防病毒软件的更新也可利用这种解决方案。例如,可将防病毒文件路由到具有最高优先级的链路,以确保实时防病毒更新,而可将音频驱动文件路由到具有较低优先级的链路。
基于内容的过滤:采用共同定位服务并将R盒置于TELCO网络内,系统可在ISP之外执行过滤和动态高速缓存,如图28所示。在TELCO网络内部的R盒可基于上述的内容过滤技术来过滤数据,以减少进入IDC/ISP网络的业务量。这可用来阻止黑克攻击,例如DOS攻击或未授权的数据访问。由于能够检查请求的内容,因此R盒还可以是用于静态和动态web数据的高速缓存盒。此解决方案的优点包括例如安全、节约TELCO和ISP之间的网络带宽以及节约ISP服务器的负载。
利用选择组播进行高速缓存
消息持续是一种可以在稍后时间存储消息并检索它们的能力。大量的特定应用(如电子邮件)通常对于流过网络的消息需要超长的消息持续。在理想状态下,在网络没有故障的时候,总是连接的订户应当不需要任何超过针对这些特定应用所需要的持续。然而,现实中,消息可能会在通过网络时由于各种原因“丢失”,例如(1)或者在网络内部或在用户端处出现了故障或缓冲器溢出或(2)用户显示地断开了网络连接并在一段时间之后再次连接。
这里所述的事件通知系统持续模型被分成两级:短期持续和长期持续。短期持续专用于恢复由于网络拥塞或短期的链路故障而引起丢失的分组。长期持续专用于恢复其他故障,包括例如用户连接失败或ISP网络故障、用户机故障、较长期的网络故障和/或其他故障。以下将描述这两种方案的实施例。
短期持续:数据重传和流控制
在数据网络中,数据丢失的原因可简单地划分为链路故障和缓冲器溢出。为给事件通知系统提供可靠的信道,需要解决这些问题。对于链路故障,可以实施前向纠错(FEC)方案以纠正由链路故障引起的一些错误。然而,仍然有必要提供一种在错误非常严重以致于没有FEC方案可校正它的时候恢复分组的方案。就缓冲器溢出而言,必须要防止缓冲器流发生。流控制方案通常用于数据网络以防止这种问题。
在短期持续方案中,传输控制协议(TCP)隧道优选用于逐跳地连接事件路由器(如智能路由器12)。基于可靠的层2隧道而不是采用可靠传输协议(如RMTP)的原因是多方面的。在事件通知系统中的短期持续方案中,如果消息不满足过滤规则,则消息优选由路由器过滤出。因此,接收路由器通常不可以通过采用类似源序列号的方案检测到分组的丢失。同样,对于所有接收路由器也不希望确认它们接收的每个分组,因为这样将会导致确认过量(即ACK扩增)。此外,为避免缓冲器溢出,对于短期持续模型实施流控制方案,以便在路由器用完缓冲器空间之前路由器可请求转发给它消息的邻近路由器减速。这些方案均包含于TCP中。
TCP传输策略:在用于短期持续方案的TCP中,传输窗优选在本地用于数据发送器以协助跟踪已进行重传的数据。采用传输窗的目的在于两个方面:首先,传输窗确保了发送器将会明确地知道已由接收器正确地接收数据;其次,传输窗允许更佳地利用信道容量。在TCP中,需要隐含或明确地确认发送器发送的每个字节。传输窗有助于发送者跟踪已发送并确认的数据。传输窗还改善了信道利用,因为发送者可以在传输窗内发送数据,而不用停止并等待要得到确认的前一分组。一旦前一数据得到确认,则窗将自动前进。
接收器窗也是在TCP中进行维护的。接收器窗优选用来表明在数据接收器端的可用缓冲器空间。它的可用缓冲器空间值发送至发送器,使得发送器知道如何在接收器侧避免溢出缓冲器。
TCP拥塞控制:由于TCP设计为端到端的传输协议,因此短期持续方案中所采用的TCP也解决了在发布-订购网络内部的缓冲器溢出。为解决此问题,用于短期持续模型的TCP优选采用第三窗:拥塞窗。该拥塞窗用于使发送器猜测在沿通路的路由器上的最大缓冲器空间。简言之,如果发送器检测到分组中的丢失则拥塞窗大小被减少,或反之则增加。
长期持续:持续信道的高速缓存
信道(如上所述)可以是持续或实时的。实时信道传送通常只实时有用且没有任何应用特定的持续需求的数据。持续信道存储在持续时间帧T内通过网络的数据。换句话说,持续信道的持续性在时间帧T期间被保证。数据的这种持续性通过以下步骤获得,例如:在每个边缘节点处高速缓存数据持续的信道持续时间;在故障条件下检索来自对用户透明的高速缓存器的数据;允许用户明确地从高速缓存器中检索数据;通过防止路由器故障和在路由器之间建立可靠隧道使经过网络的数据流持续;以及防止在复制过程中的信道部件故障。
因此,如下所述,当订户失效并在持续信道的时间帧T内再次返回时,长期持续方案优选使利用持续信道登记的订户可以检索在网络中高速缓存的在最后“X”时间帧(X<T)的较早数据。
在长期持续方案中,订户应用(如应用126)优选可明确地将数据(如消息)从相关联的订户代理(如代理128)拉出.如上所述,代理可利用代理服务器或用它实现.在代理或代理服务器已从网络故障中恢复之后,代理优选以透明方式从高速缓存器中检索它与边缘路由器断开连接的一段时间内的数据.而且,在长期持续方案中优选容许订户只可访问到最后T时间帧的数据.为此,优选针对连接到代理(或代理服务器)上的边缘路由器确定时间.检索的高速缓存的数据优选在带外传送并没有实时保证.长期持续方案的实施例主要对象是失效并再次有效或失去与边缘路由器(如边缘路由器16)的连接的已有订户.新的订户可能不能够得到高速缓存的信息.
持续性定义:订户的时控持续性(利用时间帧T)定义为可从发布-订购网络检索最后的时间帧T的数据的能力。如果该订户离开了网络,则在持续信道上的在订户不在期间所接收的任何数据将在网络中保持一段时间帧T(从数据的接收开始)的时间。如果该订户在时间帧T内返回,则订户不会丢失任何数据。然而,如果订户在T和2T时间帧之间返回,则订户可能会丢失数据。如果订户在时间帧2T之后返回,则优选不保证订户访问任何先前的数据。
以上定义要求在订户处发出叶的发布-订购网络树应当在订户消失后保留一时间帧T,随后可被剪除,以便将在订户离开后在时间帧T内接收的新的数据保留到时间帧T到达它的期满时间为止。
结构:图29是说明在高速缓存中提供持续性的发布-订购网络的某些部件的框图。如图所示,该网络包括核心路由节点548和边缘路由节点545。每个路由节点优选包括智能路由器92(用边缘路由节点显示)和传统主干路由器(未显示),如上图4所述。需要对持续信道执行高速缓存的每个智能路由器92优选具有与它共同定位的高速缓存管理器218,如图29所示。以上参照图8描述了高速缓存管理器218。智能路由器92优选负责短期持续性以便检索已丢失的数据或从路由器故障中恢复。高速缓存管理器218负责高速缓存数据以提供信道的长期持续性。高速缓存管理器218优选将此数据高速缓存在高速缓存器540中。高速缓存器540优选包括存储器和盘(未显示)。
带有高速缓存管理器218存在几项优点,如与智能路由器92相反,负责高速缓存长期持续性的数据,包括:索引高速缓存的数据的计算密集型操作可在单独的处理器上执行,因此路由和过滤处理器的性能不受到影响,周期性地将高速缓存的数据移动到盘的盘I/O操作也可在另一处理器上进行,因此防止了循环从路由和过滤中被窃取,避免边缘路由器必须进行定期的I/O。
图29中还显示了代理128,它优选驻留在订户机122中(图29中未显示),如图5所示。代理128负责与高速缓存管理器218进行通信,以从高速缓存器540中检索数据、接收所检索的数据以及负责组织检索的数据。如上所指出的,代理128可利用代理服务器或用它来实现。
在没有故障的条件下,只有边缘路由器节点545需要高速缓存管理器218与它们相关联.然而,虽然图29中未显示,由于长期持续方案预计故障,处于边缘路由节点545上游的第一级核心路由节点548的每一个优选包括用于存储数据的高速缓存管理器218.上游是远离代理128(即远离订户机122)移动的方向.上游核心路由节点的第一级指直接处于边缘路由节点545上游的路由节点.虽然发布-订购网络通常包括多个第一级上游核心路由节点,但图29只描述了一个第一级上游核心路由节点,核心路由节点548.如上所述,高速缓存管理器218在它所处的网络节点上提供数据的本地高速缓存.因此,位于各个核心路由节点(包括如核心路由节点548)上的高速缓存管理器218的操作提供了在整个网络核心中的数据的分布式高速缓存.这种分布式高速缓存为边缘路由节点545处的高速缓存提供了备份.
图30是说明在上游路由器(如核心路由节点548)中备份高速缓存的图。在长期持续方案中,每个高速缓存优选用下一个上游路由器的高速缓存器进行备份。上游高速缓存器存储了全部的输入数据并用作所有的下一级下游边缘路由器高速缓存器的备份。上游高速缓存中的数据优选采用与边缘路由器高速缓存相同的机制进行存储。
下面参照图31,对于持续信道的高速缓存结构优选提供跨越四个不同模块的功能性:高速缓存管理器218-优选为负责存储通过智能路由器92的数据的服务器处理;路由器高速缓存API552-优选为负责从智能路由器92对高速缓存管理器218的所有控制面访问的库,如创建和破坏高速缓存;代理(或代理服务器)高速缓存API554-优选为负责从代理128(或代理128代理服务器)对高速缓存管理器218的所有控制面访问的库,如检索数据;以及代理128(或代理服务器)-优选负责从高速缓存器546搜集检索的数据并组织这些数据。
图31说明这四个模块的交互操作。代理128和智能路由器92二者优选通过高速缓存API库552和554访问高速缓存器。高速缓存API库552和554提供用于在高速缓存器546中初始化、创建并破坏对于主体的高速缓存、检索高速缓存地址、最重要的是从高速缓存器546检索数据的API。路由守护程序216优选通过数据通路将数据发送到高速缓存管理器218,而不用通过高速缓存API552。高速缓存API552和554优选对所有的控制消息(包括数据检索)采用控制通路。
高速缓存管理器-高速缓存器管理:下面参照图32,当高速缓存管理器218遇到了新的信道时,高速缓存管理器218优选激活信息服务器(如上述的服务器152、154和/或156)以得到该信道的信道管理器150。一旦高速缓存管理器218具有信道管理器150的地址,高速缓存管理器218优选检索信道管理器150的信道特性。信道特性优选例如包括:信道主体树和属性、信道的持续特性、信道的持续时间帧(T)、高速缓存的粒度性。在高速缓存管理器218可开始高速缓存流过用于给定主体的信道的数据之前,需要在高速缓存管理器218中创建那个主体的高速缓存。高速缓存管理器218期望创建高速缓存消息并响应于该消息创建主体高速缓存。随后可根据请求将此主体高速缓存破坏、挂起或恢复。图32说明关于订购的高速缓存的创建。
高速缓存管理器-高速缓存数据输入:高速缓存管理器218优选以多种方式访问进入智能路由器92的数据,例如:IP似的解决方案,在此类情况下,智能路由器92输入链路上的数据还被转发到高速缓存管理器218中;采用探查机制(在这种机制中高速缓存管理器218侦听在智能路由器92的网络上传播的所有分组);在过滤后,智能路由器92转发需要在一个或多条链路上传播的每个消息到高速缓存器546;以及,高速缓存管理器218用作进入智能路由器92的所有数据的订户。
高速缓存管理器-高速缓存数据存储装置:下面参照图33,高速缓存管理器218优选在高速缓存器546中以多种方式索引数据,如以信道ID、主体、发布方ID、时间戳、时间粒度(G)、主高速缓存属性、链路(在为故障进行高速缓存时的特定的情况中)或其他方式.数据可被索引并按分级目录结构存储在文件系统或存储器中.数据优选高速缓存在存储器中,并被周期性地移动至盘.存储器中的高速缓存仅持续“G”时间粒度的持续时间.在时间G到期后,与树中的特定分支相关的所有数据优选移动到那一分支下的文件中,从而覆盖那一分支的最早的文件.(注意G最好不要实现为滑动窗,而是实现为绝对窗,因为要将每个消息单独地写到盘中代价高,而在一次操作中将所有的G间隔写到盘中效率更高).图33是示范性索引树的图.当为持续而高速缓存数据时,优选使用图33中的第一索引树.
继续参照图33,主体优选分级存储,“a”是主体(如“a.b”、“a.c”“a.d”等)的父。高速缓存管理器218优选针对将所有主体映射到它们的对应文件位置的高速缓存器546保留hash表。在一些情况下,在上游路由器(如核心路由节点548)检测到一条其链路上的下游路由器(如边缘路由节点545)的故障时,高速缓存器546可能需要存储故障条件下的数据。用于恢复的第一方法是重新启动下游路由器(这可能会花费几分钟)。当下游路由器重新启动的时候,上游路由器将需要高速缓存正向下转发到那条链路的数据。此高速缓存(如图33中称为FM高速缓存)优选在输出链路上索引。
高速缓存管理器-垃圾搜集:如果信道是不持续的,则高速缓存器546不存储数据,而是立即将这些数据引下。如果信道是持续的,则高速缓存器546存储该数据。将特定信道的持续时间帧“T”分成N个时间粒度,每个大小为G。存储器中的高速缓存只持续G的持续时间。在高速缓存管理器确定已过了时间间隔G之后,数据被移动到盘中。高速缓存管理器218将在持续时间帧间隔T的持续时间将数据存储在盘上。
一旦时间大于信道的持续超时(T)+间隔的上限,便将对应于时间间隔G的数据从盘中删除。为更将理解这一点,假设信道的T为2个小时。作为示例,高速缓存管理器218采用15分钟的时间粒度G。为了将数据从盘中删除,优选采用的策略是当在时间间隔G(15分钟)期间高速缓存的最后的数据已存储了T(2小时),在15分钟间隔期间高速缓存的整个数据将被丢弃。因此,在15分钟间隔的开始时高速缓存的数据在被删除之前将已存储了超过2小时。在本示例中,在每个15分钟间隔期间高速缓存的数据是数据块。如果持续时间帧T被分成N个间隔,则时间中的任何点上将对于每个主体在高速缓存器546中有N+1个数据块(盘上的N和存储器中的1)。
高速缓存管理器-高速缓存数据检索:下面参照图34,代理128(或代理服务器)优选激活GetCache(得到高速缓存)操作以获得从当前时间回到时间“T”的数据。在图34中,将代理128连接以激活GetCache操作的高速缓存管理器218标为入口高速缓存器。由于路由器或代理128的故障/断开连接,入口高速缓存不可以拥有所有代理128请求的数据。在此情况中,入口高速缓存的工作是从所有其他高速缓存(如上游高速缓存器)中检索数据,比较数据并将它返回给代理128。图34说明从不同时间戳(TS1、TS2和TS3)的多个高速缓存(A、B和C)的检索操作。
高速缓存管理器218优选可只检索时间粒度G的块中的数据。因此代理128可得到比它期望或请求的更多的数据。此外,在从多个高速缓存中检索期间,在高速缓存之间可能存在一些交叠间隔,因此代理128还将会发现存在数据的复本,代理128应当对高速缓存所提供的数据流进行复本抑制。
高速缓存管理器与其他模块的交互操作:在事件通知系统基础设施中,高速缓存管理器218优选与几个模块交互,如图35所示.当高速缓存管理器218遇到了新的信道(在创建高速缓存时间时),它优选激活信息服务器550以得到该信道的信道管理器150.一旦高速缓存管理器218拥有了信道管理器150的地址,它优选从信道管理器150得到信道特性.优选容许管理员模块552设置/修改一些特性,如高速缓存的粒度性.还优选容许管理员模块552人工创建或删除信道高速缓存.
代理高速缓存API-应用-代理交互:应用(如应用126)优选激活代理高速缓存API554以得到带有给定的主体和过滤器的高速缓存器546。最好是,应用可只检索来自高速缓存器546的数据,条件是它已订购了该数据。代理高速缓存API554优选地实际提供两个API。
第一API允许取消订购应用,以便在相同的时间订购和检索高速缓存器546。如果设置了“fifo”标志,则创建订购并将其发送到边缘路由器节点545。然而,优选立即将订购置于“暂停”模式。在代理128已接收了所有的高速缓存的数据之后,代理128首先交付所有高速缓存的数据,跟踪对于发布方在数据中未看到的最后的序列,并随后从未由每个发布方看到的最后序列开始交付已暂停的数据。
对于第二API,假设应用已订购一些数据并请求高速缓存的数据。在此情况下,已交付给该应用一些就高速缓存数据而言可能不是按顺序排好的数据。因此,在此情况下的“fifo”标志仅表明从高速缓存器546检索的数据应当在其本身中是按顺序排好的,而在规则数据流中不必按顺序排好。
代理128优选在一大块数据中检索所有的事件。在从高速缓存API554检索数据之后,代理128优选需要在激活回叫操作之前对数据进行以下操作(参见上述内容):根据通知列表构建通知;跟踪每个发布方的最后的序列号;以及过滤。当代理128将所有的事件推向回叫时,它优选将DoneCache(完成高速缓存)事件发送到回叫,以表明已交付了所有高速缓存的数据。在此点上,如果订购是FIFO,并且规则的数据是暂停的,代理128优选转发所有暂停的通知。代理128只交付那些其序列号大于高速缓存的数据中最后的序列号的通知。
代理高速缓存API对高速缓存交互操作:当订户请求高速缓存的数据时,在代理128端554上的高速缓存API优选地首先查询连接代理128的边缘路由器的历史,并采用GetCache(得到高速缓存)请求中所提供的时间间隔来过滤出该列表。API554随后向它所连接的最后一个边缘高速缓存器发送GetCache(信道、主体、过滤器、local_pubs、时间_周期、fifo、路由器阵列)消息。高速缓存管理器218优选基于信道id、主体和时间戳推出数据,并把数据推向代理128。当高速缓存管理器218完成了推出数据时,它便向高速缓存API发送DoneCache事件以表明数据传送已完成。
如果高速缓存管理器218未在本地发现数据,它便利用代理128提供的“路由器列表”来定位所需要的数据。一旦高速缓存管理器218已搜集了所有必要的数据后,高速缓存管理器218便比较必要的数据,并在将它转发给代理128之前对其进行复本抑致。
高速缓存连接历史:为了能够从高速缓存器546检索数据,对于边缘以及上游高速缓存器而言,优选地在代理128处维护高速缓存连接历史。由于这种信息需要跨过代理128关闭和破坏,因此信息应当被持续地维护在文件中。盘上的高速缓存连接历史优选按存储在以下文件和格式中:
边缘高速缓存位置:边缘高速缓存的位置(如在边缘路由节点546上的高速缓存器546)优选从信道管理器/信道库中获得.这在引导时以及在边缘高速缓存器发生变化(如失去/恢复连接、连接移动)的任何随后的时刻出现.分配器通知代理128有关边缘高速缓存连接中的任何变化,并且这些变化随后被传递到代理128高速缓存库中.每当发生变化时,均使该变化持续.
持续存储装置:CACHE_ROOT/信道_id/信道-高速缓存的数据的示范性路径。
数据优选按以下格式进行存储:
边缘高速缓存数;
边缘高速缓存1:时间间隔数,开始时间1:终止时间1,开始时间2:终止时间2,...;以及
边缘高速缓存2:时间间隔数,开始时间1:终止时间1,开始时间2:终止时间2,...
...带有作为列表中第一的最新时间戳。注意这两个不同的边缘高速缓存器将决不会有交叠的间隔(因为代理128一次只连接一个边缘高速缓存器)。每当增加新的项目时,便会检查旧的项目以看他们是否仍然有效;如果它们是无效的,则将它们丢弃。如果
间隔终止时间+信道的持续超时<当前时间的话,则时间间隔变为无效。如果项目中的所有间隔无效则边缘高速缓存项目变为无效。注意“终止时间”为0意味着间隔当前是有效的。
上游高速缓存位置:上游高速缓存的位置(如核心路由节点548上的高速缓存器546)取决于主体。每个主体有其自身的组播树,因此该组第一级上游高速缓存是主体的功能。任何时候用户要订购主体,智能路由器92优选返回与主体相关联的上游高速缓存的列表。同样,由于故障或组播树中的重新组织而引起的上游高速缓存位置的任何变化也优选通过控制信道传递到代理128。这些变化在本地以持续存储(文件)方式存档。
持续存储装置:CACHE_ROOT/信道_标识符/主体(不按层次,而是按整个主体)。-高速缓存的数据的示范性路径。
数据优选按以下格式进行存储:
上游高速缓存数;
上游高速缓存1:时间间隔数,开始时间1:终止时间1,开始时间2:终止时间2,...;
上游高速缓存2:时间间隔数,开始时间1:终止时间1,开始时间2:终止时间2,...
...同样带有作为列表中第一的最新时间戳。与边缘高速缓存间隔不同的是,两个上游高速缓存器可具有交叠间隔,因为对于给定主体,代理128可以有几个上游高速缓存器。上游高速缓存文件的内容也是采用与边缘高速缓存器相同的算法搜集的垃圾。
数据检索期间的高速缓存有效性:在代理128的使用期限期间,它连接到不同的边缘路由器和上游路由器。代理高速缓存API554优选将这种连接历史存储在本地存储器中。当代理128需要从高速缓存器546检索数据的最后的T间隔时,代理高速缓存API554优选查看连接历史,以确定可从中访问数据的高速缓存。如下为优选用于此目的的算法:1)高速缓存库探测所有的边缘高速缓存间隔并检查落于T时间帧内的间隔。如果间隔落于该时间帧内,则它便被添加到有效边缘高速缓存的列表Le中;2)列表Le是采用间隔开始时间进行分类的;3)针对Le中未由边缘高速缓存覆盖的每个间隔,探测出上游高速缓以得到可覆盖此间隔的所有的上游高速缓存间隔,并将有效间隔添加到列表Lu中;将Lu附加到Le上,并采用间隔开始时间对Le分类,从而创建了L。
此算法给出高速缓存L的列表以及针对每个高速缓存给出用以检索数据的时间间隔。此高速缓存L列表随后4)编组成得到高速缓存消息并被发送到高速缓存管理器218。在高速缓存管理器218末端,高速缓存管理器218优选5)从得到高速缓存消息中把高速缓存间隔去编组,并重新创建按开始时间的递增顺序分类的列表L。对于列表L中的每个间隔:高速缓存管理器218优选6)检查在前一间隔和当前间隔之间是否存在间隙,如果存在间隙,则向本地高速缓存请求该数据。如果不存在间隙,则高速缓存管理器218优选7)与相关的高速缓存器对话以得到该数据。高速缓存管理器218优选8)比较来自所有高速缓存的数据并将它发送给代理128。
路由器高速缓存API:在智能路由器92上的路由器高速缓存API552负责激活高速缓存管理器218,以针对特定主体创建、破坏、挂起和恢复高速缓存。路由器高速缓存API552还处理初始化配置-将高速缓存地址从智能路由器92上载到信道管理器150中,使得代理128侧(代理高速缓存API554)可在需要的时候获得这种信息,以及针对其他路由器检索高速缓存器546的位置(这在智能路由器92想要通知代理128有关给定主体的上游高速缓存的时候使用,例如在订购答复时以及主体树发生了变化之后)。
用于拉出的高速缓存的使用:以上讨论集中于采用高速缓存实现持续信道并允许返回订户将数据从网络拉出。备选实施例允许任何订户(新的或返回的)可以将任何种类的数据从高速缓存器546拉出(如包括订户可能还没有订购,但由于其它一些人的订购而在高速缓存器546中的数据)。此实施例和前一实施例之间的区别是,对于返回订户而言,到目前为止数据是得到保证的,并且数据的位置是众所周知的,而对于新的订户而言,存储数据的位置是未知的。实现此备选实施例的一种简单方式是在该信道上发布“FindCache(寻找高速缓存)”请求。“FindCache”请求包含信道id、主体、过滤器、时间间隔以及代理128的位置,代理128寻找带有所请求的高速缓存的数据的高速缓存器546。所有的高速缓存器546均侦听“寻找高速缓存”请求。当每个高速缓存器546接收到该请求时,高速缓存器546便查看对应数据是否在其数据存储器中,如果在的话,便在单播消息中送回它自己的位置。代理128选择一个高速缓存器546并在其上激活得GetCache操作以得到数据。
最新数据拉出:其他实施例包括允许订户应用(如应用126)可得到给定主体的最新消息的最新数据拉出特征。这对诸如股票报价告警的数据是有用的,例如在用户只想知道最近的股票价格而不是其历史的时候。
高速缓存管理器的实现:优选有三种线程类型,例如,在高速缓存管理器218实现中:数据高速缓存线程-数据高速缓存线程优选从到智能路由器92的连接中获取数据,并在存储器中索引和存储该数据;数据存储线程-一旦到达了时间间隔的终点,数据存储线程便优选将存储器中所存储的数据移动到盘中,并且在该处理中还对过期数据执行垃圾搜集;数据检索线程-数据检索线程优选负责获取对高速缓存的数据的请求并从高速缓存器546中检索数据.这三类线程可实现为单线程或线程池.优选的是,数据高速缓存线程和数据存储线程在将数据移动到盘中的时间进行同步.在数据存储线程和数据检索线程之间的这种同步可防止在检索数据时删除数据.
数据结构:以上在表19和所附的描述中提供了用于高速缓存的数据结构示例。
数据存储装置:图36是说明用于在名为“Aquila高速缓存”的高速缓存器546中存储数据文件的优选目录结构的图。注意,每个主体级目录优选具有一组子主体目录以及存储发布在该主体上的数据的数据目录。例如,在娱乐信道上的Fox.Movies上发布的数据将进入到目录AquilaCache/娱乐/Fox/电影/数据的文件中,在主体Fox上发布的数据将进入到目录AquilaCache/娱乐/Fox/数据中的文件中。为了提高数据存储装置的速度,特定主体的目录层次优选在智能路由器92请求高速缓存器546开始对给定的信道和主体的高速缓存时进行创建。
数据检索:从高速缓存器546检索数据应当是高效的,以便不会阻止数据存储装置和使高速缓存器546停顿。数据检索从盘和存储器中检索数据。数据检索所采取的步骤优选如下:1)定位数据节点;2)锁定数据节点;3)定位需要检索的数据的时间戳;3)检索数据并将其存储在存储器中;4)对数据节点解锁;5)在将在存储器中存储的所检索的数据推出到代理128客户中之前对它进行过滤并按顺序排列。
虽然已结合示范性实施例描述了本发明,但将会理解,对于本领域的技术人员而言,可容易地进行许多种修改,并且本申请旨在涵盖它的任何改编版本或变型。例如,在不背离本发明范围的情况下,可采用各种类型的发布方机、用户或订户机、信道和它们的配置以及基于内容路由和其他功能的硬件和软件实现。本发明应当仅由权利要求和其等效物来限定。
对相关申请的引用
本申请通过引用结合2002年7月8日提交的题为“通过有效载荷检测针对服务质量管理的分组路由”的美国临时申请No.60/394631,并要求享有其优先权。本专利申请还是以下均于2002年7月19日提交的题为“通过有效载荷检测的分组路由”的美国专利申请No.10/199356、题为“在采用信道的路由器上进行基于内容的路由和过滤的方法和装置”的美国专利申请No.10/199368、题为“在网络上发送与接收布尔函数的方法”的美国专利申请No.10/199439、题为“用于存储布尔函数以在网络上实现评估、修改、再利用和交付的方法”的美国专利申请No.10/199369以及题为“在基于连接的路由中关于大小可变字段的通配符匹配的有效实现”的美国专利申请No.10/199388的部分继续申请(CIP),并且通过引用将它们全部结合在此。
本申请还通过引用结合了以下于2003年3月28日提交的美国专利申请,并作为它们的CIP:题为“用于在不可靠的网络中进行可靠发布和订购的方法和装置”的申请No.10/400671、题为“采用紧凑过滤存储和离线预计算进行基于内容的分组路由的方法和装置”的申请No.10/400465、题为“用于在发布-订购网络中实现查询响应交互的方法和装置”的申请No.10/400453、题为“实现持续可靠的消息交付的方法和装置”的申请No.10/400462以及题为“针对发布-订购网络传播内容过滤器的方法和装置”申请No.10/400444。