CN101312457A - 在发行-预订网络中使用的方法、路由器、设备和该网络 - Google Patents

在发行-预订网络中使用的方法、路由器、设备和该网络 Download PDF

Info

Publication number
CN101312457A
CN101312457A CNA2008100915804A CN200810091580A CN101312457A CN 101312457 A CN101312457 A CN 101312457A CN A2008100915804 A CNA2008100915804 A CN A2008100915804A CN 200810091580 A CN200810091580 A CN 200810091580A CN 101312457 A CN101312457 A CN 101312457A
Authority
CN
China
Prior art keywords
filtration
network
data
publish
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2008100915804A
Other languages
English (en)
Inventor
P·-F·杨
T·W·陈
A·W·P·冯
D·S·罗森布卢姆
S·亚尼克
C·-Y·王
C·-M·林
Y·黄
R·特奥多雷斯库
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
PreCache Inc
Original Assignee
PreCache Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by PreCache Inc filed Critical PreCache Inc
Publication of CN101312457A publication Critical patent/CN101312457A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

提供了一种用于在不可靠的网络(10)上执行发行-预订操作的方法和设备。提供了一种在发行-预订网络(118,140)中传播过滤的方法和设备。提供了一种用于在发行-预订网络(118,140)中分组的基于内容的路由的方法和设备。提供了一种用于在发行-预订网络(118,140)上实现查询-响应交互的方法和设备。提供了一种用于持久地高速缓存经由发行-预订网络(118,140)递送的消息的方法和设备。

Description

在发行-预订网络中使用的方法、路由器、设备和该网络
本分案申请的母案国家申请号为03812180.8,母案申请的国际申请号为PCT/US03/09624,母案申请的国际申请日:2003年3月28日。
相关申请的引用
本申请要求了以下申请的优先权,并且将它们的内容并入本申请,以供参考,所述申请为:2002年3月28日申请的题目为“ReliablePublish/Subscribe System Architecture over Unreliable Networks”的美国临时申请号为60/368,833的申请;2002年3月28日申请的题目为“Methods for Propagating Content Filters for a Publish/SubscribeNetwork”的美国临时申请号为60/369,105的申请;2002年3月28日申请的题目为“Practical Method for Content-Based Packet Routing in aPublish/Subscribe Network”的美国临时申请号为60/368,831的申请;2002年3月28日申请的题目为“Implementing Query-ResponseInteractions On a Publish-Subscribe Infrastructure By Mapping DataAdvertisements as Subscriptions and Queries as Notifications”的美国临时申请号为60/368,870的申请;2002年4月3日申请的题目为“Method andApparatus for Implementing Persistent and Reliable Message Delivery”的美国临时申请号为60/369,832的申请;以及2003年2月19日申请的,题目为“Propagating Content Filters,Content-Based Packet RoutingUsing Compact Filter Storage and Off-Line Pre-computation,ReliablePublishing and Subscribing Implementing Persistent and ReliableMessage Delivery,and Implementing Query-Response Interactions ByMapping Data Advertisements as Subscriptions and Queries asNotifications in a Publish-Subscribe Network”的美国临时申请号为60/447,782的申请。
本申请还引入以下内容,以供参考,所述内容为:题为“PacketRouting ViaPayload Inspection”的第10/199,356号美国专利申请;题为“Method And Apparatus For Content-Based Routing And Filtering AtRouters Using Channels”的第10/199,368号美国专利申请;题为“MethodFor Sending And Receiving A Boolean Function Over A Network”的第10/199,439号美国专利申请;题为“Method For Storing BooleanFunctions To Enable Evaluation,Modification,Reuse,And Delivery OverA Network”的第10/199,369号美国专利申请;以及题为“EfficientImplementation of Wildcard Matching On Variable-Sized Fields InConnect-Based Routing”的第10/199,388号美国专利申请,这些申请均于2002年7月19日申请。
发明背景
网络带宽是按指数规律地增加的。然而,网络基础结构(包括路由器、服务器、守护程序、协议等)仍使用相对旧的技术。因此,因特网应用以及网络路由器无法跟上带宽增加的速度。同时,越来越多的装置以及应用都变的能够使用网络。置于网络节点上的这些装置以及应用的负载已经极大地增加。网络负载以及应用数目的增加还使实现以及维护网络应用的复杂性大大的增高。因此,网络带宽的增加和网络装置以及应用的前所未有的使用,在旧的网络基础结构中产生了路由和数据传输的问题,当向预订者发行内容时尤为突出。
使网络将信息从服务器推送给客户端的模型是发行-预订类型。依照此模型,所述服务器成为其信息的简化的发行者,而不考虑哪些客户端对所述信息感兴趣或者他们位于网络的什么地方。所述客户端成为信息的预订者,当信息变得有效时被递送,潜在地不考虑有关它在网络的什么地方被发行的细节。然后,所述网络负责高效地向预订者路由发行的信息,将信息与有效预订相匹配,并且以对于发行者和预订者来说是透明的方式来执行上述这些操作。
因为在发行-预订模型中极大地降低了服务器的复杂性,因此,重量级服务器和轻量级客户端之间的区别开始消失,确切地说,合并成一个对等体的概念,该对等体可以是发行者、或者预订者、或者两者都是。很多种类的应用对于对等体设备之间的发行-预订类型交互来说具有天然的亲和性(affinity)。成为许多这些应用的基础的通用课题是被发行和预订的信息是以事件的形式出现。例如,投资者购买或者销售股票,令股票的价格改变。在高速公路上发生交通事故,令高速公路上的交通堵塞。软件系统中的安全漏洞被发现,引起为软件的用户开发补丁。游戏者在因特网游戏中使用武器射击,令另一游戏者的化身死亡。所有这些示例性的现象都是事件,这些事件潜在地是大量预订者所感兴趣的,并且可以经由网络传播以便通知那些预订者事件的发生。由此,事件是只是自含的,简短的信息单元,它们涉及在网络上某一地方并在某一时间点发生的可能感兴趣的一些事情。
其它例子涉及安排了时间的广播,其具有不同于只涉及异步事件的应用的特性,在所述异步事件中,事件的时间是不可预知并且是随机的。首先,所述事件被安排在已知时间发生。第二,一个事件不需要是简短的信息单元。相反,它可以是量非常巨大的数据。将此巨大的数据负载定向到预订者找到兴趣的网络部分要求相当大的服务器处理。
通常,服务器或者发行者执行对网络的路由决定,以便命令在发行-预订模型要在其上发送发行的内容的网络。所述发行者存储对它发行的内容的预订。当接收或者生成新的内容时,发行者将所述内容与每个预订进行比较以便识别任一匹配。如果所述内容(事件)满足任一预订,那么发行者将经由网络把所述内容推送给相应的预订者。此常规的发行-预订模型给发行者增添了巨大的负担,这一点在更多装置变为能够网络以及当预订数目增加时尤为突出。补偿的方法可能是让人讨厌的——预订者对所有发行的事件评价其所拥有的预订。
随着跨越因特网的数不清数量的应用的更大覆盖,采用事件通知的可能性就会变得无休止。然而,那些可能性要求更加高效的方法做出路由决定并且确定何时事件满足预订,由此减轻发行者的负担。因此,普遍的、持久的事件通知服务可以为因特网应用以及其他应用和实现提供巨大的增值效益。
发明内容
提供了一种用于在发行-预订网络中传播过滤的方法和设备。接收涉及网络中内容预订的多个过滤。基于特定的标准减少过滤的数目,并且传播数目减少的过滤以便满足所述预订。
提供了一种用于在发行-预订网络上实现查询-响应交互的方法和设备。接收涉及数据集的广告和代表逻辑表达式的查询。将所述广告映射到相应的预订。将所述查询映射到相应的通知。预订以及通知被用于在网络中实现广告以及查询。
提供了一种用于提供经由网络发送的消息的持久性的方法以及设备。经由所述网络接收消息。存储所述消息以便稍后检索。响应涉及网络的故障来提供持久的并且可靠的消息递送。
附图简述
将附图并入并且构成此说明书的一部分,并且连同所述描述一起来解释本发明的优势和原理。
图1是举例说明在网络核心中智能路由的图。
图2是举例说明用于发行者和预订者的智能路由器的网络图。
图3是举例说明用于智能路由器和骨干路由器的网络基础结构的图。
图4是智能路由器的硬件部件的图。
图5是发行者和预订者机器的图。
图6是智能路由器的通道管理器的图。
图7是在用户机器中用于连接所述机器和智能路由器的软件组件的图。
图8是智能路由器的软件组件的图。
图9是消息的分组结构的图。
图10是发行者方法的流程图。
图11是预订者方法的流程图。
图12是通道和预订者屏幕的图。
图13是基于内容的路由方法的流程图。
图14是高速缓存方法的流程图。
图15是举例说明高速缓存索引的图。
图16是用于出去的消息的代理方法的流程图。
图17是用于进来的消息的代理方法的流程图。
图18是举例说明消息编码的例子的图。
图19是用于存储预订的数据库结构的图。
图20是通配符方法的流程图。
图21是用于在发行-预订网络中可靠传输通知的方法的流程图。
图22A是过滤传播方法的流程图。
图22B是过滤减少方法的流程图。
图22C是另一过滤传播方法的流程图。
图22D是发行-预订网络拓扑的图。
图23A-23B是使用预先计算的基于内容的路由方法的流程图。
图24A是使用发行-预订的查询-响应方法的流程图。
图24B是进一步举例说明图24A的方法的顺序图。
图24C是使用发行-预订的另一查询-响应方法的流程图。
图24D是进一步举例说明图24C的方法的顺序图。
图24E是使用发行-预订的另一查询-响应方法的流程图。
图24F是进一步举例说明图24E的方法的顺序图。
图24G和24H是使用发行-预订的另一查询-响应方法的流程图。
图24I是进一步举例说明图24G和24H的方法的顺序图。
图25A是举例说明持久性发行-预订网络的部件的框图。
图25B是举例说明高速缓存管理器例程的实施例的图。
图25C是持久高速缓存方法的流程图。
图25D是持久信息检索方法的流程图。
详细说明
概述
一种因特网-规模的或者其他分布式网络-规模的事件通知系统为应用提供大功率且灵活的发行-预订联网的实现。在此系统中,应用程序使用事件通知应用程序接口(API)来发行通知和/或预订和接收关于网络内部发生事件的通知。
向系统中的通知给予一个主题,所述主题是字符串或者其他结构,其对通知所封装的信息的类型进行分类。此外,利用包含专用于所述通知的信息的一组属性完成通知。例如,应用可能使用主题quotes.nyse以及属性符号(symbol)和价格(price)来发行关于纽约证券交易所的交易的通知。所述应用例如利用等于SNE(Sony公司的证券报价机符号)以及等于85.25的价格来发行具有特定属性值的单个通知。从属性在对于相同系列的主题的所有通知中都能够被找到的意义上讲,在一个通知中的属性的大多数,要不然就是在一个通知中的属性的全部都被预先定义了。然而,发行者可以根据预先通知或者其他方式添加任意的属性,以便提供附加的事件专用信息。因此,不是所有的乃至任何属性都需要被预先定义。
在此系统中,预订者不局限于只预订主题或者整个通道。下文将进一步解释和定义通道。它们可以包括例如规定主题字段以及相关子领域(子主题)的一个或多个级别的分级结构。由此,预订者可以通过在通知属性上规定基于内容的过滤来提供兴趣的好的多得多的可以微调的表达式。例如,预订者可能预订具有符号等于SNE并且价格大于90.00的主题quotes.nyse的所有通知(表明预订者拥有的股票的大概销售时机)。与所述预订相匹配的所有通知可以经由回调函数或者其他类型函数递送给预订者,所述其他类型的函数是预订者在注册其预订之时或者在其他时间所提供的。可以将一个预订分解为多个过滤。
所述回调函数可以执行多种计算,包括象将消息写入终端或者发送电子邮件那么简单的事情,诸如启动出售股票的更复杂的事情,以及启动新的发行-预订活动的越发复杂的事情(例如,对于75.00价格的购买时机来说以新的预订代替现有的预订,或者发行已经修改了预订者的有价证券的新通知)。
例如应用在它们的发行和预订活动中由代理(angent)加以帮助。所述代理可能使用代理机(proxy),或者利用代理机来实现。当使用代理时,所述代理提供网络连通性,以便发出通知和预订,并且向预订者递送进来的匹配通知。一旦通知进入所述网络,路由器的系统网络向其预订与所述通知匹配的所有预订者传播所述通知。实现此操作的一个方式往往是向网络的所有点广播所述通知,然后让应用代理判断所述通知是否与它们的预订者有关。然而,这未必是可扩缩的途径-网络往往因消息通信量的负载而被很快地倾覆,在存在大量有效并且冗长的发行者时尤为突出。并且即便有足够的带宽时不存在问题,预订者也会因必须处理那么多通知而被倾覆。
系统的示例性网络依照其路由通知的方式是更加有效的。首先,它可以使用多播路由来确保通知例如经由网络中任何链路最多被传播一次。第二,它可以对过滤采用大量的高级优化来尽可能地减少通知的传播。
图1是概念上举例说明在网络核心中此智能路由的图。发行者14经由边缘路由器16采用消息把内容发送到网络核心10,其用在发行-预订网络中。发行-预订网络包括用于将数据或者内容从发行者路由到预订者的任何类型的网络。将所述内容经由一个或多个通道18发送,所述通道表示路由器或者其他装置之间的逻辑连接。网络核心10中的智能路由器12确定是路由还是转发消息。具体来讲,智能路由器12可以确定所述消息是否包括预订者24预订的内容。
每个预订封装主题过滤以及属性过滤。路由器可能将主题过滤扩展到匹配主题集合,并且以每个主题为基础来合并属性过滤。智能路由器相对于通知的主题来评估主题过滤,并且相对于通知中的属性值评估属性过滤。主题过滤的语法可能使用通配符,而属性过滤的语法可以使用布尔表达式,下文将进一步解释它们两者。使用术语“过滤”来描述一组事件,所述事件是预订者感兴趣从发行者接收的事件。根据所述过滤将生成路由规则,并且由智能路由器使用所述路由规则来做出路由决定。
因此,例如如果整个过滤组不满足消息26,那么智能路由器12丢掉(丢弃)消息26,这意味着不转发所述消息。例如,如果整个组的任何过滤依照主题和属性过滤的评估满足于消息20,那么依照所有路由和/或为为匹配过滤所规定的动作规则,智能路由器12经由边缘路由器22以及其他可能的装置向预订者24路由(转发)消息20,或者利用消息20执行路由器12内的其他功能。所述搜索将继续,直到过滤的整个组已经取尽、或者已经获得对所有规则的决定的任何一个首先到来为止。
在网络核心中的这类智能的基于内容的路由提供例如警报以及更新的实时数据递送。用于警报的实时数据递送的例子包括、但是不局限于以下内容:股票行情、交通、新闻、旅游、天气、欺骗检测、安全、电信息通信、工厂自动化、供应链管理以及网络管理。用于更新的实时数据递送的例子包括、但是不局限于以下内容:软件更新、反病毒更新、电影以及音乐递送、工作流程、存储管理以及高速缓存一致性。多种其他应用也能够用于递送预订的信息。
表1举例说明了利用主题以及谓词(predicate)来存储预订以供过滤。根据期望或者需求,可以依照任何类型的数据结构将它们存储在网络中的任何地方。正如下面解释的那样,所述谓词是预订的分量。所述预订可以用任何方式表示,下面提供了其例子。
Figure A20081009158000251
表2提供了开盘服务器的发行以及预订的例子。此例子只为举例说明而提供,并且所述预订可以包括用于任何类型的数据或者内容的任何数目和类型的参数。
Figure A20081009158000252
所述谓词为预订提供布尔表达式,并且主题为所述预订提供通道指示。预订可以用多种不同的方式表示。使用布尔表达式是这种例子之一,并且为基于内容的路由提供了将所述预订容易地转换为主题过滤以及属性过滤的能力。作为选择,预订可以不参考主题来表示;但是,使用主题或者通道(下面进一步解释)提供用于解释并且对属性应用过滤的环境。
所述路由决定可以在网络核心中实现,并且遍及所述网络分发,由此减轻对发行者以及预订者机器的处理负担,并且显著地增强了网络效率。图1举例说明了一个发行者、一个预订者以及一个智能路由器,这仅仅是为了举例说明;其实现可以包括许多发行者、预订者以及智能路由器。术语智能路由器指的是具有通过检查网络核心或者其他位置中分组或者消息的有效负载来做出路由决定的能力的路由器或者其他实体。
网络基础结构
图2是举例说明发行者和预订者的智能路由器的网络图。提供通道服务的路由实体30例如在网络基础结构上被有效地分层,如下文将解释的,以便在智能路由器之间路由消息。发行者32概念上例如包括应用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互连,所述多个链路73-85表示链路的例子,并且也可以通过所述链路与最终用户装置相连。智能路由器61-70可以由一个或多个管理员机器加以控制,诸如实体71,并且一个或多个虚拟专用网络(VPN)控制器诸如实体72。ISP网络58,59和60往往还与发行者和预订者机器(图3中未示出)相连。在ISP 58,59和60之中和之间的骨干路由器在现有的网络基础结构内、依照常规的方式互连。
如图所示,所述智能路由器61-70和链路73-85可以使用现有的网络基础结构实现,并且它们提供在网络核心中基于内容的路由。链路73-85表示智能路由器61-70之间的逻辑连接,并且例如可以使用现有的网络基础结构或者其他装置来实现。例如,可以使用称为隧道(tunnel)的逻辑连接来实现。隧道包括硬件,并且可能包括软件、用于实现链接的网络基础结构,并且一个隧道可以是多个通道的一部分。所述通道通过为特殊类型内容提供逻辑配置而易于在智能路由器中进行基于内容的路由,并且由此为经由通道发送的属性提供环境。尽管智能路由器可以在没有通道的情况下执行路由决定,但是所述通道增强网络核心中智能路由器进行的的基于内容的路由的效率。
此示例性实施例包括使用通道和链路。链路是两个路由器之间的连接——虽然是智能路由器。通道是包含路由器集合(通常较大)的网络实体,其通过互连的链路来静态地或者动态地配置以便实现一对多或者多对多的逻辑连接。具体来讲,通道是描述通道基本特征的最高层逻辑实体。在一个通道下,可以存在许多主题。每个主题将形成子网络(诸如多播树),所述子网络涉及互连路由器的集合。这些基于主题的子网络可以采用不同的方式分配、定向和配置。例如,为其下主题形成的所有子网络的集合的通道可能类似网络的网格。
图4是智能路由器92的示例性硬件部件的图,其相应于任何其他提及的智能路由器。网络节点90可以包括与常规骨干路由器95相连接的智能路由器92。智能路由器92包括与(例如可能利用可拆卸机器实现的)存储器94和次级存储器97相连的处理器93,两者中的人一个都可以存储数据,并且可以高速缓存数据,以及存储处理器93执行的应用。次级存储器97提供数据的非易失性存储。在如下所述的软件控制下,处理器93向骨干路由器95提供指令,以便所述骨干路由器95基于根据对预订的主题过滤以及属性过滤生成的路由规则路由(转发)或不路由(丢弃)消息或者分组。尽管采用独立的处理器控制的装置的实现方式示出,但是作为选择,智能路由器92可以采用骨干路由器95中的专用集成电路(ASIC)来实现,以便采用可能具有嵌入软件的硬件来提供智能路由功能。作为选择,所述智能路由功能还可以采用一个或者多个路由装置中的软件以及硬件组合来实现。
图5是示例性的发行者和预订者机器的图。发行者机器100或者118可以包括以下部件:存储器102,存储一个或多个发行者应用104以及代理应用105;次级存储装置112,提供数据的非易失性存储;输入装置108,用于输入信息或者命令;处理器114,用于执行存储在存储器102中的应用或者从其他存储设备接收的应用;输出装置110,用于输出信息;以及显示装置116,用于提供信息的可视显示。
预订者机器122或者140可以包括以下部件:存储器124,存储一个或多个应用126以及代理应用128;次级存储装置130,提供数据的非易失性存储;输入装置132,用于输入信息或者命令;处理器134,用于执行存储在存储器124中的应用或者从其他存储设备接收的应用;输出装置136,用于输出信息;以及显示装置116,用于提供信息的可视显示。作为选择,发行者和预订者机器可以采用任意配置包括或多或少的部件,或者不同的部件。
发行者机器100以及118经由网络120与预订者机器122以及140连接,所述网络诸如如上所述的网络。网络120包括智能路由器,用于经由分组或者消息提供在网络核心中的数据或者内容的分布式路由。尽管只示出了两个发行者和预订者机器,但是网络120可以扩展到包括更多发行者和预订者机器。所述发行者和预订者机器可以利用任何处理器控制装置实现,诸如但不局限于以下例子:服务器、个人计算机;笔记本计算机;个人数字助理;电话;蜂窝电话;传呼机;或者其他装置。带有智能路由器的网络120可以包括任意的有线或者无线分布式网络、有线连接装置、无线装置或者两者。网络120还可能使用现有的或者常规的网络基础结构。
图6是举例说明了智能路由器的通道管理器150的图。在此例子中,通道管理器150利用多个服务器152,154以及156实现。每个服务器均包括其自身的本地存储器158,160以及162。智能路由器164,166以及168与通道管理器就有关特定通道的信息进行联系。所述通道管理器还可以提供数据持久性、故障转移功能或者其他功能。所述通道管理器由此提供通道服务,其包括在网络中任何地方的、用于规定涉及通道的信息、数据持久性属性、发行者和预订者的用户信息以及基础结构信息的数据库或者数据库集。所述基础结构信息例如可以包括智能路由器和连接它们的相应的隧道的标识、通道的主题以及通道的属性(每个属性的名称以及类型)。分组或者消息还可以携带涉及通道的信息,包括固定属性以及可变属性的标识。
当用户在线时可以下载通道信息。例如,用户能够通过使用用户名以及密码来注册。当身份验证用户的登录时,用户可以打开(启用)通道,并且从通道管理器检索关于所述通道的信息。发行者可以使用发行内容中的该信息,并且预订者可以使用该信息来输入并且注册预订。
在此例子中,每个通道管理器152,154和156对于每个智能路由器的充当主通道管理器。具体来讲,在此例子中,每个智能路由器被提供有两个网际协议(IP)地址,一个用于主通道管理器而另一个用于备份通道管理器。所述智能路由器使用那些IP地址来联系通道管理器并且检索通道信息。如果所述主通道管理器故障,那么智能路由器可以联系备份通道管理器。所述通道管理器152,154和156由此共享涉及通道属性的数据和其他信息的数据,如连接它们的线所表示的。每个通道管理器还具有指定的备份,以致如果该通道管理器故障,那么另一个可以接管它来进行处理。网络中的装置例如可以使用命令来检索通道信息,表3中提供了其例子。作为选择,智能路由器可以只具有一个主通道管理器或两个以上的通道管理器。
图7是在用户机器或用于将其与具有智能路由器的网络连接的装置的堆栈180中的示例性软件组件的图。所述用户机器可以用作发行者、预订者或者两者,并且它可以包括上文所标识的示例性装置。堆栈180可以包括一个或多个用户应用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或者采用任何程序设计语言编制的其他软件实体。
Figure A20081009158000301
Figure A20081009158000302
Figure A20081009158000311
  表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);//对于每种类型PC_Status  PC_msg_setAttrByPosInt(PC_msg_MsgHandle msg,PC_UINT attributePos,PC_INT Value);//对于每种类型PC_Status  PC_msg_addAttrInt(PC_msg_MsgHandle msg,const PC_char*name,PC_INT value);//对于每种类型PC_Status PC_msg_send(PC_msg_MsgHandle msg);
  表6
  用于检索消息的API的例子
  typedef struct_attribute{PC_char              *name;PC_Status PC_msg_init(ChannelHandle ch,PC_UINT chld,PC_UINT userid,PC_TypeInfo*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);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_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);//对于每种类型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的例子
  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的例子
  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);
Figure A20081009158000341
图8是智能路由器的示例性软件组件210的图,诸如上面标识的那些和图4中所示的智能路由器92。软件组件210例如可以存储在存储器94中,以便由智能路由器92中的处理器93执行。组件210例如包括过滤守护程序212、调度器214、路由守护程序216和高速缓存管理器218。过滤守护程序212为基于内容的路由提供过滤,以便依照路由规则处理预订的内容,如下面将解释的那样。调度器214提供控制消息的通信,诸如经由通路220传播过滤所要求的那些消息,并且所述调度器还可以为用户提供单个输入点以及带有通道管理器的一个安全套接字,由此增强网络的安全性。换言之,在此例子中,用户不直接联系通道管理器,不过在替代的实现方式中是可能的。调度器214使用控制消息来从通道管理器获得属性(名称值的对)。
路由守护程序216提供与数据通路222的通信,其可以经由如图4中所示的常规骨干路由器或者其他路由装置进行。高速缓存管理器218提供处于包括相应智能路由器的网络节点的数据的本地高速缓存。下面进一步解释高速缓存管理器218的操作,并且它提供遍及网络核心的数据的分布式高速缓存。
基于内容的路由可以在内核级别实现,作为对应用级别的替代。核心可访问的存储器独立于应用层中的存储器。在应用中运行基于内容的路由,例如要求将消息数据从内核存储区复制到应用区,并且将应用的环境从内核环境切换到路由应用的环境。两者可以导致相当的开销。如果代之以修改所述内核以便支持基于内容的路由,那么所述路由可以更快的进行,由此减少如上所述的开销。
使用内核中的基于内容的路由的这一特征,路由守护程序216可以直接或者可以不直接经由数据通路222发送或者接收数据,这要取决于实现方式。所述守护程序是这样的进程,在应用层中运行,预先计算待注入到内核中的基于内容的路由表。然而,一旦注入,所述路由表可以由内核使用来做出路由决定。同样地,过滤守护程序预先计算过滤表并且将其注入内核中。在此内核实现方式中,路由守护程序和过滤守护程序两者往往都不直接与数据通路交互。
图9是可能包括预订内容的消息的分组结构230的例子的图。供基于内容的路由之用的分组或者消息例如包括首部部分以及有效负载部分。所述首部部分规定路由或者其他信息。所述有效负载部分规定数据或者内容,或者数据或者内容的指示。分组结构230包括IP首部232、用户数据报协议(UDP)、传输控制协议(TCP)首部234、长度值238、一个或多个主题字段240以及一个或多个属性242。分组结构230举例说明了长度值以及主题和属性的基本结构。用于基于内容的路由的分组还可以包括其他或者不同单元,诸如下面解释的图18的例子中所示的那些,并且用于基于内容的路由的分组可以采用任何方式配置。此外,所述属性例如可以包括追加到消息末尾的任意的属性。这些任意的属性是例如由发行者(乃至路由器)添加的ad-hoc信息,其未必要使用为通道规定的消息格式传达。
发行者和预订者方法
图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类型字符串以外,主题树可以使用任意字符和用于分界的符号采用任意方式来规定。
Figure A20081009158000361
Figure A20081009158000371
由此,知道特定通道的分组格式或者结构,所述智能路由器可以很快地定位分组中的主题和属性,或者其他信息,以便进行在基于内容的路由。例如,通道可以规定经由所述通道发送的主题和属性的字节位置,通过计算分组中的字节使它们便于定位。作为选择,智能路由器可以分析分组以便定位主题和属性,或者其他信息。
表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;//通道IDPC_UINT myID=myPublisherID;//发行者IDtry{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”);//属性符号在位置n2.SetPredefinedAttr(2,80.18);//属性符号在位置p.Publish(n2);}catch(InvalidChannelException jcex){cerr<<“bad channel”<<endl;}catch InvalidSubjectException ises){}catch(InvalidNotificationException inex){cerr<<“bad notification”<<endl;}catch(Exception ex){cerr<<“unknown error”<<endl;}}
  表12
  用于创建通道的API的例子
  PC_Status rc;rc=PC_chn_create(Provider_info,authinfo,ConfigurationFile,&hChannel);/*第一主通道管理器*/rc=PC_chn_addChannelManager(hChannel,“10.0.1.1”);/*第二通道管理器*/rc=PC_chn_addChannelManager(hChannel,“10.0.2.2”);*/rc=PC_chn_setProperties(hChannel,ConfigurationFile);/*/*通过使用rc=PC_chn_setAttributeType(hChannel,name,position,attributeType)来设置消息类型(只在消息的一部分设置)该类型消息被传播到所有的边缘路由器。*/
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);/*完成通道创建*/
 表13
 通道配置文件的例子
 #通道设置-由通道API读取,时间和消息传送#每个通道条目信息用如下的信息类型来加上标记:#[ChannelComm 5]用于涉及信息的的通信#[ChannelSubject 5]用于在通道5中涉及信息的主题#[ChannelAttributes 5]在通道5中的属性信息##通道ID被追加到标记上以便指示#信息所属于的通道例如[ChannelComm 5]指示通道5的路由信息##并非所有的字段都需要加以设置。例如如果用中央服务器来运行,则多播IP#是不需要的。[ChannelComm 5]MulticastIP=225.0.0.1RouterIP=test3RouterPort=12345ProxyPort=9015ProxyCtrlPort=9016[ChannelSubjects 5]NumberOfSubjects=2subiect1=#.SUBSCRIPTION
mapping1=0.100subject2=Quotes.Nysemapping2=102.101[ChannelAttributes 5]NumberOfAttributes=4name1=StockIdtype1=PC_UINT_TYPEname2=Companytype2=PC_charARRAY_TYPEname3=Pricetype3=PC_FLOAT_TYPEname4=Volumetype4=PC_UINT_TYPE
图11是供接收和处理预订之用的预订者方法264的流程图。方法266例如可以采用软件模块实现,所述软件模块包括代理128,由预订者机器122中的处理器134加以执行。在方法264中,例如图形用户界面(GUI)向用户展示有效通道的指示(步骤266),这可以利用应用126实现。标识所述通道的信息例如可以从提供涉及通道的信息的通道管理器接收。任何类型的应用126可以采用任何特殊方式或格式来展示通道标识。所述应用接收用户对通道的选择(步骤268),并且为所选通道调用API或者其他程序(步骤270)。所述API针对对应于所选选项的通道向用户展示预订选项(步骤272)。所述API接收来自于用户的预订的值(步骤274),并且向代理128发送所述预订以便处理,如下面将解释的(步骤276)。
用于预订的参数例如可以包括如表1中所示的谓词。例如,每个通道可以使用其自身的API,以便依照相应通道的特定需求或者参数处理预订。这些API例如可以包括用于接收预订的基于网页或者基于Java的API,并且可以使用任何类型的用户界面和处理来接收预订信息,并且将其传递到代理应用。
图12是概念上举例说明通道和预订者屏幕即GUI 278和284的图,其可用于结合方法264来接收预订。屏幕278包括多个部分(section)282,用于标识有效通道以供用户进行选择。当选择特定的通道时,可以显示屏幕284,以便接收在部分286中的用户的预订值。用户可以选择部分288来提交预订或者选择部分290来取消预订。屏幕278和284例如可以被格式化为超文本标记语言(HTML)网页,或者具有任意其他格式。此外,所述屏幕可以包括部分和内容的任何配置,例如可能包括文本、图形、图片、各种色彩或者多媒体信息,以便随心所欲地向预订者提供用户友好的并且视觉上吸引人的预订界面。所述屏幕还可以包括工具栏280,用于例如提供常规的浏览器功能。
表14提供了采用C++程序设计语言的预订者程序的例子。
  表14
  预订者程序的例子
  #include<unistd.h>#include<iostream>#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(){}//缺省的构造器Void run {}{PC-UNIT QuotesRUs=myChannelofInternest;//通道IDPC-UNIT myID=myPublisherID;//发行者IDtry{Proxy p(QuotesRUs,myD);Filter*factory*=FilterFactory::GeFilterFactory0;Filter*f factory->CreateFilter(p,″symbol=\″LU\″″);PC_INT    cl  =0;SubscriptionHandle sh=p.Subscribe(″quotes.nyse″,f,this,(void*)&cl);
     while(notificationCount<2){//让notify()获取一些通知sleep(5);}p.Unsubscribe(sh);}catch(InvalidChannelException icex){cerr*″bad channel″*endi;}catch(InvalidSubjectException isex){cerr*″bad subject″*endi;}catch(InvalidChannelException ifex){cerr*″bad filter″*endi;}catch(InvalidSubscriptionHandleException ishex){cerr*″bas subscription handle″*endi;}catch(Exception ex){cerr*″unknown error″*endi;}void Notify(Notification*n,vojd*c)//这是一个回调方法{if(*(PC_INT*)c=0){//检查闭包对象PC_STRING symbol;PC_FLOAT price;n->GetpredefinedAttr(″symbol″,symbol);n->GetPredefinedAttr(″price″,price);cout<<″The price of″<<symbol<<″is″<<″price<<endl;
         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)。
Figure A20081009158000452
图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是举例说明了供方法使用的高速缓存索引(336)的图。高速缓存索引(336)接收数据(338)并且将其与时间戳存储在一起(340)。当收集数据时,在每个Δt的时间时,就给数据加标记,其中Δt表示标记之间的时间,例如t2-t1。作为选择,可以使用依照任何方式的时间标记的其他类型索引。
表17概念上举例说明了高速缓存的数据索引。表18概念上举例说明了用于存储连接历史以便高速缓存的数据结构。表19提供了用于本地高速缓存具有智能路由器的网络节点中的数据的数据结构的例子。
加时间标记可以按照任何固定或者可变得间隔发生。例如,可以每五分钟高速缓存并且索引数据。当接收命令以检索高速缓存的数据(诸如#_.getCache)时,其中所述数据用于规定时间和主题,那么通道管理器218使用高速缓存索引来确定它是否可以检索对应于步骤332请求的高速缓存数据。
每个主题或者通道例如可以包括其在多播树中的自身IP地址以及一组智能路由器。因此,表18表示这种可以被本地存储在用户机器的路由器之间的连接历史;如果边缘路由器故障,那么所述机器可以访问连接历史来确定在边缘路由器恢复在线时、如何为所述通道重新连接上游路由器。例如它还可以执行获取断开它的持续时间的高速缓存命令,以便获得预订的所有未决内容。
Figure A20081009158000471
Figure A20081009158000472
表19
智能路由器的高速缓存数据结构的例子
             通道节点
Struct ChannelNode{PC_UINT          unChanld;PC_AttributeInfo *pAttrinfo;PC_BOOL          bPersistent;/*持久的或者RT*/PC_UINT          unTimeout;PC_UINT          unTimeGranularity;/*按照分钟*/PC_INT           nDirFd;HashTable             *pFirstLevelsubjs;}
                  主题节点
Struct SubjectNode{PC_USHORT  unSubjectld;PC_UINT    unSubjLevel;Void       pParent;/*通道或者主题*/PC_INT     nDirFd;HashTable  *pNextLevelSubjs;
  DataNode        *pData;}
                数据节点
  Struct DataNode{PC_INT              nDirFd;SubjectNode         *pParent;LastTirneGrainNode  *pLastTGrainData;DLIST               *pstoredData;/*列出StoredTimeGrainNode*/PC_Mutex            mStoredDataLock;}
              存储的时间粒度节点
  Struct StoredTimeGrainNode{PC_UINT    unStartTime;/*按照分钟*/Chanld;PC_UINT    UnEndTime;/*按照分钟*/PC_UINT    nFd;}
                最后时间的粒度节点
  Struct LastTimeGrainNode{PC_char    pLastTGrainData;/*可以是一个列表*/PC_UNIT    unLastTGrainStartTime;PC_BOOL    bReadyToStore;PC_Mutex   mCachedDataLock;}
这些示例性数据结构包括以下信息。主题节点包含主题标识符、主题级别、指向亲代通道或者主题节点的指针、其自身目录的文件描述符、指向包含其下一级别主题节点的散列表的指针以及指向数据节点的指针。数据节点包含指向其主题亲代节点的指针,数据目录的文件描述符、包含存储在每个存储装置上的数据的数据结构的环形缓冲器、缓冲器的首部和尾部、用于在检索和存储期间锁定数据节点的锁。存储的时间粒度节点是表示实际数据文件的节点,并且最后的时间粒度节点表示还没有存储到存储装置但是却被维护在存储器中的最后的缓冲器。在此例子中的高速缓存和数据存储线程使用最后的事件粒度节点的互斥信号来防止对最后时间粒度节点的并发访问。
代理处理
图16是用于出去的预订消息的代理方法350的流程图。方法350例如可以采用如由代理128表示的软件模块加以实现,所述软件模块由用户(预订者)机器122中的处理器134加以执行。在方法350中,代理128诸如通过如图11和12中所述方法来接收预订(步骤352)。代理128创建规定所述预订的布尔表达式的字符串(步骤354),并且分析所述字符串以便检测所述预订中的任何错误(步骤356)。如果存在错误,那么代理128可以向用户展示错误消息(步骤360),以便用户可以纠正错误并且再输入所述预订。如果所述预订不包含错误(步骤358),那么代理128在数据结构中存储所述表达式,下面提供了它的例子(步骤362)。代理128将数据结构中作为组成部分的不等表达式转换为正则形式(form)(步骤364),并且将所述数据结构转换为相应的析取范式(DNF)结构(步骤366)。代理128还简化DNF结构的AND表达式,以便只包含范围过滤以及成员资格测试(步骤368)。
所述DNF是众所周知的正则形式,其中将布尔表达式表示为称为析取项的一个或多个子表达式的OR,每个子表达式是一个或多个属性测试的AND。例如,所述布尔表达式(price>=10AND(Symbol==“LU”ORSymbol==“T”))具有等效DNF表示((price>=10 AND Symbol==“LU”)OR(price>=10 AND Symbol==“T”))。
在步骤364的变换涉及将具有“不等”运算符(依照示例性语法表示为!=)的表达式变换为等效“正则”形式,其用于规定所有容许值而不是一个不容许值。此变换在创建DNF之前执行,并且因为在此例子中的路由器需要正则形式的公式,所以需要它。例如,表达式(price!=80)可以转换为等效正则表达式(price<=79 OR price>==81)。
在步骤368的变换在创建DNF之后执行,并且包含额外简化作为结果的AND表达式,并且还执行它以便简化在此例子中路由器的工作。具体来讲,可以将对相同属性的多个属性测试的AND简化为正则“范围过滤”,其具有一个下界、一个上界、具有下界和上界两者,或者在等效测试情况下是单个值。然后依照表22编码特定类别的范围过滤。
例如,表达式(price>=10 AND price<=80 AND price>=20 ANDprice<=100)可以简化为表达式(price>=20 AND price<=80),这是具有下界和上界两者的范围过滤的例子。以下是简单化之后的其他类别的例子:(price>=20)(只有下界);(price<=80)(只有上界);以及(price==50)(单值)。在创建这些范围过滤中,一些子表达式可能会简化成真的或者假的,在这样的情况下,可以依照布尔代数的法则删去某个子表达式,由此进一步地最佳化消息中的表达式的编码。例如,表达式(price>=50 AND price<=20)简化为假的,因为没有对应于“price”的价格可以满足所述表达式。在整个过滤表达式简化为假的特殊情况下,所述代理根本无须创建消息,由此减轻了路由器不必要的工作。
如果主题过滤包含通配符,那么代理128可以选择性地转换它们,如下面将解释的(步骤370)。否则,可以在网络中转换任何通配符,而不是在用户机器或者其他装置上。在此示例性实施例中,主题过滤对语法是只使用通配符的语法,而属性过滤的语法是只使用布尔表达式的语法。作为选择,对于主题过滤以及属性过滤,实现方式可以将不同的或者变化类型的语法。
代理128将作为结果的DNF表达式编码为消息(步骤372),并且将所述消息转送到智能路由器(步骤374)。所述编码可以涉及将所述预订转换为扁平(flat)消息格式,意思是说它构成数据字符串。此转送可以包含将根据所述预订的主题过滤以及属性过滤生成的路由规则传播到一个或多个智能路由器或者网络中其他路由实体。对于所述传播来说,例如可以将预订表达式映射到常规的分组结构。
步骤372的编码包含将通道的预订编排(marshall)为消息传送API的消息传送格式,以便遍及通道传播。将预订进行内部消息传送,例如作为具有主题#.SUBSCRIPTION的通知传播。因为存在数量可变的主题过滤字段和属性测试,所以在此例子中,使用一对字节存储主题过滤字段的数目,并且使用另一对字节存储属性测试的数目。将主题过滤的个别字段顺序地编排,例如依照它们在原始预订中规定的顺序,并且均被编排到消息的两个字节的部分中。通配符字段可以如下所述的进行编排。
在编排所述属性测试的过程中,在消息结尾以类似于编排通知的属性值的方式来编排测试的操作数。在编排所述属性测试和操作数之前,将它们按照DNF的每个析取项内的属性次序进行排序,并且依照位置次序对预订属性进行测试,随后按照名称次序对任意的属性进行测试。此外,将每个析取项内对标量值属性的关系测试集简化为正则形式,诸如具有一个界限(对于左或右开范围或者等效测试而言)或者两个界限(对于截然不同的界限之间的闭合范围而言)的范围过滤。关于测试的剩余信息例如按与操作数相同的次序被编码为两字节对;将两个字节对的此序列紧跟主题过滤字段的两字节编码的序列之后地置于消息中。所述两字节对可以构成属性测试的位串编码的一个序列形式,其还可以用于表示除了两字节对以外的其他类型编码。下文中提供了属性测试的例子。
在表20中描述了属性测试的编码方案。表21举例说明了两字节对的编码,并且表22举例说明了依照两字节对的运算符ID的编码。
Figure A20081009158000511
Figure A20081009158000521
Figure A20081009158000522
因为用于测试的两字节对早已表明测试的操作数的类型以及测试是否适用于预订义或者任意的属性,所以不必独立地编排对任意属性或者它们的类型执行测试的数目。此方案假定在通知中只有127个预先定义的属性。作为选择,此设计可以使用更多位来编码属性测试。
虽然此编排惯例依照属性过滤的DNF对属性测试排定了次序并且分了组,但是可以选择基础结构元件(诸如路由器)来依照其它次序评估测试(也许依照动态推导的关于不同测试的成功或者失败的概率的本地数据),以便使属性过滤的总体评估更加有效。消息的所述预订ID字段是由代理生成的值,用于唯一地在随后请求中向代理的边缘路由器标识预订,以便修改或者取消对所述预订的预定。具体来讲,使用图18的例子中所示的消息格式来传播对预订的属性过滤的动态修改,除了主题是#_.RESUBSCRIPTION,并且预订ID是被修改的先前注册的预订的ID。并且例如使用图18的消息格式通过预订ID字段向上游传播取消预订,同时主题是#_.UNSUBSCRIPTION并且预订ID是被取消预订的先前注册的预订的ID。
以下提供了举例说明通过如上所述的代理转换并且编码的例子。考虑以下属性过滤表达式的例子:price>=10 and(symbol==“LU”或者(volume>=1000 and volume<=10000))。图19展示了统一建模语言(UML)图390,用于描述代理在步骤362使用的对象,用于存储表达式。此图举例说明了用于规定所述预订的层次关系,其可以包括变量、恒定值或者它们两者。图中的对象根据特定的实现方式可以是过滤类的实例。每个SimpleFilter(简单过滤)对象描述了用于存储与相应过滤表达式的属性测试有关的信息的属性值。在图19的表达式中,OR过滤396连接两个AND过滤392和400。AND过滤392包含具有预订属性的简单过滤394。同样,OR过滤396包含简单过滤398,并且AND过滤400包含简单过滤402和404。
对于此例子来说,将属性价格、符号和数量假定为相关联通道的预先定义的属性,并且假定为分别定义在位置0,1和2。此外,将属性类型分别假定为无符号整数(typecode 6)、字符数组(typecode 12)和无符号整数(typecode 6)。
接下来,将包含上述示例性属性过滤表达式的预订视为其属性过滤。图18展示将所述预订编排为消息。图18左侧的简图386示出了实际消息内容,而右侧的简图388提供了消息的不同部分的图例。在此例子中,每个简图的宽度是四个字节。在编排之前,已经将所述过滤转换为它的等效DNF:(price>=10 and symbol==“LU”)or(price>=10and volume>=1000 and volume<=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加以执行。作为选择,通配符可以在智能路由器92中或者ASIC 91中包含的相应功能的软件控制下由处理器93在网络中加以处理。通配符包括开放字段或者可变长字段,在表21中提供了其例子。
在方法410中,代理128或者其他实体接收具有通配符的预订(步骤412)。用于预订的主题长度可以在发行内容时由发行者规定,并且主题可以在发行者机器上预先处理,例如对主题的字段计数并且由此获得它的字段计数(长度)。代理128计数过滤操作数中的字段数目(步骤414),并且初始化字段长度=N的新规则(过滤)(步骤416)。代理128检索预订的子字段(步骤418),并且确定过滤操作数子字段0[i]是否是通配符(步骤420)。如果所述过滤操作数子字段不是通配符,那么代理128将合取子句添加到规则,字段[i]=0[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中的路由规则只为举例说明而提供,而其他路由规则也能用于转换通配符。
不可靠网络中的可靠发行-预订系统
发行-预订网络-诸如此处所述的发行-预订网络(例如参见图1-3)的主要功能在于将依照有效并且及时的方式向预订者递送匹配的通知。发行-预订网络的实现方式需要以网络分组的形式将通知从发行者发送到预订者。不可靠网络暗指一些网络分组在运送过程中可能会被丢掉。由本实施例克服的主要技术困难是确定所述通知(即,网络分组)是否因为传输错误或者因为上游路由器内部的过滤机制被丢掉。
图21举例说明了用于提供发行-预订网络中的可靠性的方法520。在此方法520中,使用了可靠的传输协议。具体来讲,所述可靠性通过实现相邻路由器对之间(或者路由器-用户机器对之间)可靠的传输机制(可靠的隧道)来实现。如果路由器确定进来的通知需要发送到邻近路由器,那么它使用可靠的传输协议-优选的是TCP来转发所述消息.每个路由器只负责将通知递送到其下游邻近(跳数=1)路由器。因此,依照逐跳方式实现从发行者到预订者的可靠的通知递送。方法520可以在智能路由器92中或者ASIC 91中包含的相应功能的软件控制下由处理器93执行。方法520例如还可以采用例如由代理105表示的软件模块加以实现,所述软件模块由用户机器100中的处理器114加以执行。
已经发现使用TCP克服与将可靠传输协议与在此描述的发行-预订系统的基于内容的路由相关联的问题,并且此方法是优选的。可能用于发行-预订系统的另一技术是前向纠错。前向纠错向接收者发送多个通知分组,以期待他们中之一将通过。这样做增加了接收分组的概率,其以增加带宽使用为代价,但是不保证递送。可靠多播是第三种技术,它确保一组多播接收者接收来自于多播发送者的“相同”分组集。因为不同的接收者根据不同的预订必然接收不同的通知集,所以采用CBR发行-预订系统必然无法很好的工作。
发行-预订网络中的节点经由所述网络接收对内容的预订(步骤522)。从发行者接收的内容根据预订使用CBR经由网络并通过以下步骤来发行,所述步骤为:接收涉及网络中节点的内容的通知(步骤524),确定是否将所述通知转发到邻近节点(步骤526),并且基于所述确定、使用可靠的传输协议有选择地将所述通知转发到邻近节点(步骤528)。优选的是,依照如上所述的任一种CBR方法来执行这些步骤。
用于步骤528的可靠传输协议优选的是TCP。TCP是在OSI模型的传输层上的通信协议。TCP提供了传输功能,其确保发送的字节总数在另一端正确地被接收。据此,以单个节点到单个节点为基础来执行转发步骤528,并且如果存在传输故障,那么转发步骤528包括接收在通知传输中的故障指示(步骤5281),并且响应所述指示传输所述通知(步骤5282)。优选的是,将对这种故障指示的请求封装在通知分组中。
优选的是,如果需要重新传输通知分组的话,就将通知分组保存在缓冲器中。如果用于特定邻近节点的缓冲器已满,那么可以停止对该节点进行的递送,所述分组可以基于先进先出来被丢弃,或者所述分组可以存储在次级存储器中。作为选择,如果已经向一定的发行者或者预订者担保一定的服务质量(QoS),那么可以基于QoS从缓冲器中有选择地丢弃所述分组(例如,QoS不管理的那些分组将首先被丢弃)。
如图21所示,如果在邻近节点需要进一步的路由,那么为下一邻近节点重复所述方法(步骤530)。此举例说明了方法520依照逐级跳过方式实现从发行者到预订者的可靠通知递送。
过滤传播
基于内容的路由(CBR)是一种形式的约束-驱动的路由。在具有CBR功能的增强的发行-预订网络中,诸如如上所述的发行-预订网络(例如参见图1-3),优选的是,将预订者对发行的特殊内容的兴趣(即预订)封装在称为过滤的实体中。优选的是,由网络中的路由器使用所述过滤来做出路由决定。不同于在前的只得在边缘或者用户端执行的过滤方案,能够在网络核心中操作的当前CBR方案涉及这些过滤的传播。如果赋予预订者对它们接收的分组内容设置约束的能力,并且如果这些内容约束用于网络核心以便路由分组,那么网络的效率和功能将极大地受益于CBR。
此处所述的实施例提供了一系列高度可扩缩的过滤传播方法,以致(i)所述过滤可以沿发行者和预订者之间的数据通路传播到核心路由器中、或者从中输出、和/或遍及所述核心路由器,并且(ii)如果需要的话,在网络核心内而非仅仅在网络边缘向上游执行CBR。通过进行更向上游(例如,在网络核心中,或者在远到发行者机器中)的CBR,需要向下路由的数据分组数目经常可以急剧减少。因此,可以减少网络上的通信量负载。
此处所述的过滤传播方法涵盖依照任何名称以及任何形式将内容过滤传播到网络核心中、或从中传出以及遍及网络核心传播。所述过滤传播具有许多方面并且包含许多问题。所描述的过滤传播方法解决的重要问题之一是:当过滤将传播流从大量过滤源(例如预订者)移动到“前往”几个过滤目的地(例如核心路由器、边缘路由器或者发行者)时,能够避免集结大量的过滤。此问题还称为“累积”问题,并且它例如发生在树形拓扑结构中由所连接的级联节点组成的网络中。
被设计以便解决这些以及其他问题的方案包括规则、过程、策略、进程、机制、协议、消息格式、数据结构和/或算法的一个或多个集合。通过这些解决方案,可以使得过滤传播:快速的(例如,通过简化、合并、有效编排等);可扩缩的(例如,通过合并、求近似等);动态的(例如,新的预订、取消预订、修补等);安全的(例如,认证);私人的(例如,加密);可靠的(例如,TCP连接、可靠隧道、编码、恢复协议等);灵活的(例如,惰性传播(见下文)、各种多播拓扑结构或者协议);并且适应用户需求(例如,出版者/订阅者行为-编码)。此处所述的所述过滤传播方法使用这些解决方案来实现这些益处以及其他益处。
A.网络拓扑-过滤传播策略
发行-预订系统可以依照多播、广播或者移动式发行-预订策略来实现。可以将过滤传播嵌入网络拓扑,或者在网络拓扑“上面”或除网络拓扑以外来执行,其中所述网络拓扑通过为链接发行者和预订者而挑选的策略进行强加。作为选择,所述过滤传播策略还可以是用于链接发行者和预订者的策略,诸如依照涉及发行广告的发行-预订方案,其中可以将嵌入过滤的预订直接朝向登广告目的地递送。
在多播种类中,过滤传播可以使用与用于多播(例如,协议独立的多播-分散模型(PIMSM)以及-密集模型(PIMDM)、基于核心的树(CBT)、距离向量多播路由协议(DVMRP)、多播开放式最短路径优先(MOSPF)等)一致的协议。根据所使用的协议,过滤传播可以是双向的或者单向的,并且许多过滤传播策略都是可能的。这些策略包括一个或多个以下例子:1)当接收到所有过滤时,将它们传播到所有可能的上游链路(积极的传播方案);2)响应输入的发行者分组来启动过滤传播(惰性传播方案);3)响应发行者的广播广告进行传播;4)在计算网络拓扑(例如MOSPF)之后进行传播;5)周期性的过滤传播(例如,为了满足支持过滤超时的系统中的重新刷新需求);6)在修补网络中的故障期间要求过滤重新传播;7)在网络重新配置期间要求过滤重新传播;和/或上述例子的任何组合。优选的是,将所述策略以此处所述的过滤传播方法和规则为条件。
B.用于过滤传播的链路级连接机制
连接在过滤传播过程中涉及的源和目的地的方式可以改变。例如,过滤传播过程中涉及的源和目的地可以依照以下方式连接:1)逐级跳过(例如路由器到路由器);2)端到端(例如,在离线数据检索中从用户机器到高速缓存);3)使用隧道;4)使用传输控制协议(TCP);5)使用用户数据报协议(TCP)(例如,利用可靠的数据恢复机制代替);6)使用安全协议;7)使用其他协议;8)只在路由器和/或用户机器的内核中进行;9)只涉及路由器和/或用户机器处的用户级处理;10)涉及所有可能组合的路由器和/或用户机器处的内核和用户级进程(例如,内核到应用、应用到内核到应用等);和/或11)上述任何组合。
C.过滤传播的目的地
可以将过滤注入发行-预订网络中的任何地方,如以下所给出的例子:1)形成发行者和预订者之间的端到端连接的所有路由器以及用户机器;2)包括边缘路由器的网络中的每个路由器;3)只有核心路由器;4)只有边缘路由器;5)预订者机器;6)发行者机器;7)管理员机器;8)高速缓存;9)备份路由器;10)其中可以转移分组的任何路由器;11)涉及网络修补或者故障恢复的新的路由器;和/或12)上述任何组合。优选的是,所述过滤通过求近似、合并以及其他进程来修改。对于上面每个目的地种类来说,被传播的过滤形式可能不同。
D.过滤传播的源
过滤传播源可以是发行-预订网络中的任何地方。可以在上文的C部分中找到例子。同样,优选的是,在传播期间、通过求近似、合并以及其他进程来修改过滤,因此它们经常对不同的源采取不同的形式。
E.潜在的过滤收件人行为规则
过滤传播还可能根据潜在收件人的行为和需求而有所不同。例如:1)位于持久的或者半持久位置的发行者希望过滤朝向他们传播;2)移动式发行者未必希望过滤朝向他们的位置传播,因为他们不久就要离开;3)在注销以前只发行少许发行物的少量发行者不需要过滤;4)大量的发行者可能希望在发送第一组发行物之前传播过滤以便节省网络带宽;5)具有有限访问权的发行者可能被拒绝过滤传播,以保护预订者在该应用中的隐私和机密性;6)实现过滤超时策略的核心路由器需要从下游路由器周期更新;和/或7)没有与预订者机器固定连接的边缘路由器可能请求周期更新预订或者过滤兴趣。所有这些行为属性及其他例如可以通过使用发行者广告、在其首次发行时编码发行者行为、周期发送过滤更新以及其他技术来加以区分,以便传达过滤收件人的需求。
F.过滤发件人行为规则
同样,过滤传播还可能根据过滤发件人的行为和需求而有所不同。例如:1)预订者可能只希望提交具有(系统定义或者用户定义的)超时的临时过滤;例如,如果他/她对采样发行物感兴趣的话;2)预订者是移动的,并且过滤应该在预订者移动之后期满;3)在支持自动过滤超时的CBR系统中,不与他们的边缘路由器固定连接的预订者可能被请求发送周期过滤更新;4)一些策略可能规定预订者在传播他们的过滤以前需要进行身份验证;5)在支持自动过滤超时的CBR系统中的路由器往往需要发送周期过滤更新;6)只对数据固定集的特定查询可能涉及过滤或者可能由过滤实现(例如,响应查询或者预订来自于高速缓存的数据、持久性备份数据、在故障恢复期间恢复的数据等);和/或7)为传播修改了过滤的路由器可以向上游路由器表明怎样根据发件人需求需要来修改所传播的过滤。所有这些行为属性及其他可以例如通过编码过滤传播消息中的行为或者通过使用特殊协议(例如用于身份验证的协议)来得以支持。
G.被传播的过滤处理
所述过滤处理可以涉及用于修改过滤的内容或者表示的变换,和/或涉及仅用于组织所述过滤的管理功能。预订中的原始过滤表达式可能在数据递送通路的不同部分中经历不同的处理过程集,其包括以下通路部分:1)从预订者机器至边缘路由器;2)从边缘路由器至核心路由器;3)在两个核心路由器之间;4)从核心路由器至发行者端上的边缘路由器;和5)从边缘路由器到发行者机器。这些变换过程的一些例子如上所述(例如,参见代理处理和通配符处理)。这些过程可以遍及发行-预订网络上-例如在预订者机器上、发行者机器上、边缘路由器或者核心路由器上执行。诸如(预订者和发行者机器上的)代理和(路由器上的)守护程序的组件可以执行这些过程。
所述过程可以包括以下例子:1)属性内容转换(例如,从主题名称到主题ID,从字符串到它们的字典式的值,从一种货币到另一种);2)表达式扩展(例如,从通配符到它们的组成);3)表达式转换(例如,>运算符到>=运算符,!=运算符到>和<运算符);4)表示变换(例如,从字符串表示到数字或者符号表示,诸如波兰式表示法、涉及括号的表示法,或者到与用于存储或者匹配过滤的具体数据结构有关的表示,诸如树、基数线索(Rdix trie)等);5)编码/解码(例如,校验和);6)加密/解密;7)机器级编排和取消编排;8)协议级编排为预订过滤传播消息格式,并且从预订过滤传播消息格式取消编排;9)分解(例如,分解为析取范式(DNF));10)简化以便去除冗余谓词表达式(例如,$1>5& &$2>3 & & $1>3);11)两个或多个过滤的归类;12)在合并之前和/或之后对过滤求近似;13)合并两个或多个不同过滤(例如,基于近似);14)对两个或多个不同过滤进行分组(例如,用于传播至不同上行链路);15)取消预订或者除去过滤;16)过滤期满;17)过滤的Δ更新(例如,依照任何表示簿记旧的过滤集并且从其中减去新的过滤以便获得过滤配置方面的改变,即Δ更新);和/或18)过滤模型的形成(例如,如果过滤1匹配,那么过滤2也就匹配)。涉及上面列出或未列出的过滤传播的任何过程可以由此处所述的过滤传播方法使用。
H.过滤传播消息的内容和格式
消息可用来发送或者传播过滤。包含被传播的过滤消息的内容和格式可能受到所述过滤经历的变换过程和在其传播期间触发过滤传播的环境的影响。以下是示例性格式:1)任何消息在机器或者用户级的布置;2)过滤可能涉及固定或者随机位置的属性(例如,与发行物部分匹配的字符串);3)过滤可能涉及固定大小(例如,整数、布尔符号等)或者可变大小属性(例如,数组、字符串、c结构等);4)过滤可能包含简单(例如,整数、布尔符号等)或者复杂的数据类型(例如,数组、字符串、范围变量等);5)过滤可能包含简单(例如,>,==,<=,等)或者复杂的测试或算符(例如,成员资格测试、正则表达式、字符串匹配、范围运算,诸如交集查询、闭包查询、包含查询等);6)分解DNF格式;7)过滤的简化的或者原始表示;8)紧凑的或者扩展的格式(例如,一侧过滤可以使用二界限表达式来表示,或者可以将两侧过滤重写为两个一侧过滤);9)过滤的部分表示(例如,字符串谓词的截断、数据类型消解(resolution)的归结(reduction)以及数目属性的减少);10)过滤的转换表示(例如,波兰表示法、分类、树、线索(trie)等);11)主题字段的包含/排除(例如,可以通过过滤传播在其上发生的多播骨干来实现主题过滤);12)通配符主题或者属性谓词的扩展;13)内容或者表达式的转换;14)编码信息(例如,纠错校验和等);15)加密;16)过滤的全集(例如,在故障恢复期间,在具有过滤超时的系统中重新刷新更新);17)过滤的部分集(例如,对过滤进行归类、只有新的过滤将被插入或者旧的过滤将被去除);18)过滤的修改集(合并过滤、求近似的过滤);19)没有相似于过滤的过滤表示方面的Δ改变(例如,在插入和去除过滤期间基数线索上的改变);20)标识过滤标签而不是其坐标(例如,在取消预订期间);21)过滤的超时参数;22)过滤模型信息;和/或23)编码如部分F中所述的过滤发件人的行为和请求的信息。此列表只表示可以用于此处所述的方法的传播的过滤的可能的内容和格式的采样。
I.过滤传播的过程和策略
在系统级,可以制定策略和过程以便控制过滤传播所有方面的一些。这些方面例如可以包括:1)管理(例如,全局的关机和重新启动);2)维护(例如,故障恢复);3)过滤持久性(例如,期满超时、高速缓存数据的以前的过滤);4)性能增强策略(例如,负载均衡、边缘选择、积极对惰性的传播);5)监控(例如,故障报告);6)计帐(例如,统计簿记);7)计费;8)调节(例如,授权传播过滤、网络中允许的过滤类型等);9)用户身份验证;10)用户帮助(例如,主题过滤的目录服务);10)预订者隐私(例如,过滤应该对他人隐瞒);11)同步(例如,当边缘路由器接收到过滤时向预订者确认、当完成过滤传播向预订者确认、在恢复期间确认修补路由器等);12)优先化,和/或13)确定和调节自动过滤注入的任何策略(例如,基于他们已经注入本身的过滤集中所示的兴趣、自动地注入对许可消费者是感兴趣的过滤的消费者关系管理)。
在部分A到I中已经彻底地讨论了过滤传播的许多方面和可能的特征。然而,过滤传播的可行性依靠找到如上所述的“累积”问题的可扩缩解决方案。以下提供了用于实现可扩缩的过滤传播的方法和设备。
如上所述,在过滤传播中重要的问题是:当过滤将传播流从大量过滤源(例如预订者)移动到“前往”几个过滤目的地(例如核心路由器、边缘路由器或者发行者)时,避免集结大量的过滤。此问题还称为“累积”问题,并且它例如发生在树形拓扑结构中由所连接的级联节点组成的网络中。图22A举例说明了过滤传播方法450,其致力于解决过滤累积问题。方法450举例说明了使用上文在部分A-I描述的一组解决方案的例子,用于在发行-预订网络中传播过滤。所述方法450例如还可以采用由代理128所表示的软件模块加以实现,所述软件模块由预订者机器122中的处理器134加以执行。作为选择,所述方法450可以在智能路由器92中或者在ASIC 91中包含的相应功能的软件控制下由处理器93执行。此外,方法450可以通过这些模块的组合来执行。
如图22A所示,接收多个过滤(步骤452)。如上所述,在部分C,可以将所述过滤注入发行-预订网络中的任何地方。处理所接收的过滤以便减少过滤数目(步骤454)。所述减少步骤减少了被传播的过滤数目,以便避免或者减少过滤累积问题。如果在此发行-预订网络的一个节点处累积太多过滤,就像在存在至当前节点的大量直接的下行链路节点时,或者在前节点处于过滤传播通路的很靠后的级的情况,那么发行者和路由器可能被倾覆,并且网络效率将遭受因为处理和匹配所有过滤所需的巨大计算负担而带来的困扰。
以下进一步地举例说明过滤减少步骤454的作用。在传播路径的每个级中存在许多下游节点并且只存在有一个或者几个上游节点。如果处于特定级的每个下游节点减少过滤数目,那么按照接近于或者不是非常小于该级的下游节点的数目的因数将其传播至上游节点,在上游节点累积的过滤总数将具有与每个其下游节点的过滤数目相同的数量级。通过归纳,能够看出,此减少因素确保在过滤传播的每个目的地的过滤的数目决不会比传播通路中的级的数增长速度快,由此有效地解决了累积问题。
图22B举例说明了优选的减少步骤的子步骤。优选的是,这些子步骤包括简化过滤以便去除冗余谓词表达式(步骤4542),对只来自于与主题有关的下行链路的过滤进行分组(步骤4544),并且在这一过滤的组中,(在合并前或者后)对过滤求近似(步骤4546),依照它们的相对距离聚类过滤(步骤4548),对过滤进行归类(步骤4550),并且合并两个或多个过滤(步骤4552)。可以依照不同于所示出的顺序来执行这些步骤,并且可以省略一些步骤。在代理处理中描述了简化,参照图16。
过滤组合步骤4544对于向上游发送校正过滤信息是十分重要的。以下给出其重要性的一些例子。例如,路由器可以具有许多下行链路(例如,至下游路由器的链路)。不是所有下行链路都让预订者向它们发送预订或者过滤。对于另一个例子,在双向的多播方案中,至路由器的每个链路可以充当上行链路和下行链路两者,这是因为允许发行者和预订者根据任意的方向连接所述网络。当从链路接收了过滤请求时,此链路应该被认为是当前上行链路,并且只有从属于同一主题的那些下行链路注入的过滤和当前上行链路之外的过滤被组合,以便随后用于求近似、聚类、包含以及合并操作。
分组4544还因其它目的而需要,诸如记帐以及网络通信量控制。在一些情况下,例如当因为任意原因需要从所有链路进来的过滤的全局映射时,甚至可以将其一起省略。
步骤4546,求近似修改过滤以便获取更多、而不是少数发行物。例如,求近似可以减少被传播的过滤的表示中的谓词数目,减少过滤坐标的分辨率,或者将长字符串截断为最初的12个字符。求近似具有对准过滤格式的作用,以致它们可以成为归类以及合并的最佳候选(步骤4550,4552)。所述求近似步骤还减少传播所述过滤的消息的大小。
步骤4550,归类删去作为另一过滤的子集的过滤。例如,如果第一过滤用于具有面积大于或等于1000平方英尺并且小于或等于1300平方英尺以及价格幅度大于等于$200K并且小于或等于$300k的所有公寓,而第二过滤用于具有面积大于或等于1100平方英尺并且小于或等于1200平方英尺以及价格幅度大于等于$225k并且小于或等于$275k的所有公寓,那么第二过滤是第一过滤的子集,因此通过归类将其删去。
步骤4542,4544,4546,4548,4550和4552可以根据具体过滤减少方案和/或选择的算法、采用任何次序执行。例如,步骤4546和4550可以交换。求近似可以在归类之后进行。此外,步骤4550和4552可以被集成并且作为单步执行。例如,合并可以包括归类,如下面图所示。
继续参照图22B,步骤4552,因为合并用来组合两个或多个过滤过滤,因此与归类相似。然而,合并可以使用求近似来组合部分或者完全不同的两个或多个过滤。浏览各种过滤几何地举例说明此过程。例如,参见下面图1-4:
Figure A20081009158000641
图1几何地举例说明了两个过滤s1和s2,如上所述,因为过滤s2是过滤s1的子集,所以其可以通过归类而减少。然而,在图2中,过滤s3或者过滤s4两者都不是其他过滤的子集。但是过滤s3和s4部分重叠。合并步骤4552通过求近似一个包含s3和s4两者的最小过滤sA来合并s3和s4。因为s3和s4两个都是sA的子集,所以s3和s4被归类到sA中。图3举例说明了合并的另一个例子;在图3中,过滤s5和s6完全不同。所述合并步骤4552求近似一个包括s5、s6和这些过滤之间的面积的过滤sA。过滤s5和s6然后被归类到sA中。图4举例说明了合并的又一个例子,其中过滤s7和s8只因一个属性而部分不同。因为s7和s8重叠一个属性,并且具有相同的其他属性值,所以合并步骤4552将两个过滤简单地一起合并到sA,归类了重叠部分。
正如可以看到的那样,归类(步骤4550)以及合并(4552)取决于彼此接近的定位的过滤。为了通过整个过滤列表经由线性搜索获得效率,可以使用聚类算法作为可选的步骤(步骤4548)以便收集具有彼此接近或者重叠的边界的过滤。当添加或去除过滤时,可以实时逐增地执行聚类算法。在过滤属性的属性空间上的任何粒度的固定大小或者可变大小的网格还可以被用来基于它们的各自网格坐标对过滤进行分组。
没有由s3、s4、s5以及s6中的任一个覆盖的sA部分被称为泄漏(leakage)面积(或者松弛(relaxation)面积、冗余面积等),原因在于这些部分将获取没有由s3或者s4或者由s5或者s6请求的发行物。因此,所述合并步骤4552损失过滤减少或者以泄漏来换取过滤减少。然而,随着进行更大的求近似,泄漏面积可能达到一个点,在该点,它非常大以至于无法弥补过滤减少的益处。因此优选的是,在其中正在执行方法450的发行-预订网络具有已经定义的泄漏面积阈值,该阈值用于合并步骤4552来确定每个求近似的泄漏面积是否过大。优选的是,所述合并步骤4552对泄漏面积执行统计分析,以便确定因为所述求近似而将接受的附加分组的预期百分比是多少(即,落入所述泄漏面积的分组)。此统计分析可以基于分组分布图,该分组分布图使用进来的分组或者出去的分组的历史(例如,在执行所述方法450的路由器处)构建。如果预期百分比超出所述泄漏面积阈值,那么不使用求近似。
所述泄漏阈值通常是百分比图,并且一个以上阈值可以用作合并标准。作为泄漏阈值的其中一个例子,在图3中,如果泄漏阈值#_1被规定为分组数目的10%,这往往是合并步骤4552中涉及的实际过滤s5和s6所接受的,并且如果估计泄漏面积可能包含落在过滤s5和s6中的分组总数的20%,那么可不准许合并操作。对于泄漏阈值的另一个例子,在同一图中,如果泄漏阈值#_2是通过路由器的分组总数的2%,并且如果估计过滤s5和s6之间的间隙可能构成通过路由器的分组总数的1%,那么即便第一泄漏阈值(#_1)超出,也可以允许合并操作,这是因为总体泄漏仍是分组的小的百分比,如果在不过滤的情况下路由它们,往往消耗下游带宽。可以设计和规定各种泄漏阈值之间的大量的和多样性的相互影响。
所述泄漏面积阈值可以取决于合并的过滤数目、过滤覆盖的面积、或者过滤分布的任何特征。例如,当过滤的总数较少时,由于累积问题还没有马上来临,故而可以使用更紧密的约束来合并过滤。
如上面图4所示出的那样,应该注意的是,不是所有合并操作都是近似的。由两个或多个不同的过滤组成的合并的过滤sA,在一定的情况下也许具有零泄漏面积,并且因此是确切的。例如,假定二维过滤(即图4的s7和s8),当表示过滤的两个矩形相互对齐并且彼此接近时,他们之间没有留下间隙,产生过滤sA的合并步骤4552将是确切的。通常,在多维情况下,如果两个或多个过滤对于一个属性具有重叠或者相交的谓词范围并且对于任何其他属性都具有相同的谓词范围,那么可能会发生此情况。同样,如果对一个过滤的谓词范围以在另一个过滤的谓词范围结束后的下一可能的值(例如,对于只有整数的属性)开始,那么这些过滤可能用具有零泄漏面积的合并的过滤sA来近似,在这里假定对于这些过滤的任何其他属性都有相同的谓词范围。
返回参考图22A,作为选择,方法450可以包括附加过滤处理(除在步骤454的处理以外),诸如在上面部分G描述的过滤处理。如图所示,方法450基于收件人行为规则确定是否传播所述过滤(步骤456),其例子在上面部分E给出。优选的是,所述确定步骤456检查是否将过滤(和/或将什么过滤)传播至潜在的收件人。例如,潜在的收件人可能是一个移动发行者,所述发行者已经发送了不向它所附于其上的节点(例如边缘路由器)传播过滤的请求。作为选择,潜在的收件人可以是新的发行者,所述发行者已经发送了一请求,以便在它开始发行大量内容之前,将所有过滤传播至它所附于其上的节点。还可以使用其他潜在的收件人行为规则,诸如在部分E上列出的那些。步骤458和456的次序是可互换的。另外,因为过滤累积还不是一个严重的问题,故而例如对于数目有限的预订(即过滤)或者只包括几个传播级的网络来说,诸如步骤454(具体来讲,合并子步骤4552)和步骤456的一些步骤是可选的。
还可以基于发件人行为规则确定是否传播所述过滤(步骤458),其例子在上面部分F给出。例如,过滤发件人可能已经包括过滤超时。在该情况下,确定步骤458检查所述过滤以便查看所述过滤是否已经期满。同时,对于待传播至下一节点的过滤来说,过滤发件人可能需要进行身份验证。在该情况下,如果其起源无法通过身份验证,那么确定步骤458可能拒绝所述过滤。还可以使用其他过滤发件人行为规则,诸如在部分F上列出的那些。
如部分D中所述,此过滤传播过程450可以从发行-预订网络中的任何地方启动,包括网络管理员。将减少数目的过滤或者过滤的全集传播至下一节点(步骤460)。如以上在部分C所述,所述下一节点(所述过滤收件人)可以位于发行-预订网络中的任何地方。可以通过步骤454至458的每个步骤来减少过滤的数目。实际上,通过步骤456或者458(例如,基于没有传播任何过滤的潜在的收件人规则)可以将过滤的数目减少为零。所述方法450还可以基于发行-预订网络的过滤传播策略之一来传播460,如上面部分A中所述。因此,所述传播步骤可以包括确定过滤传播策略,并且基于所确定的过滤传播策略的需求的满足来传播过滤。例如,传播460可以在接收到过滤时进行,或者只响应发行者进行的广播广告而进行。同样,方法450可以依照上面部分I中列出的任何策略和过程来执行。方法450还可以依照上面部分H来格式化过滤传播消息。用于连接在传播步骤460中涉及的源和目的地的方式可以改变,如上面部分B中所述。
在传播460之后,所述方法450可以确定是否存在另一个潜在的收件人(另一个节点)(步骤462)。如果存在另一个潜在的收件人,那么所述方法450确定是否存在为此潜在的收件人重复所述过程的需要。在某一发行-预订网络策略中(例如CBT)存在这样的情况,其中过滤没有任何期满超时,并且一旦将它们传播至一个节点,它们将在该链路上保持持久,直到发生了对过滤集的一些改变(例如,过滤附加、过滤去除等)。在那些情况下,过滤传播对于该链路变得不必要。在如下所述的惰性传播方法中可以找到一个例子。
如果需要过滤传播,那么方法450可以基于行为规则确定是否传播,步骤456和458。所述方法450可以重复,直到不再有减少的过滤的潜在的收件人为止。
图22C举例说明了另一个过滤传播方法470。此方法举例说明了使用上文在部分A-I中描述的一组解决方案的另一个例子,用于在发行-预订网络中传播过滤。所述方法470可以在智能路由器92中或者在ASIC91中包含的相应功能的软件控制下由处理器93执行。作为选择,所述方法470例如可以采用如代理128或者105所表示的软件模块加以实现,所述软件模块由预订者或者发行者机器122或者100中的处理器134或者114加以执行。
在此例子中,网络拓扑是双向的拓扑结构,其中一系列发行者P从任意的方向并且经由至智能路由器C的网络的任何任意的通路连接到其上,如图22D所示。这种网络例如可以通过基于核心的树的多播方案来实现。在所述例子中,将新的发行者PN以及新的路由器CN连接到路由器C处的网络。一个努力与特定发行-预订网络连接的新的发行者PN,可能需要通过一系列新的路由器与所述核心连接,其中所述新的路由器将形成该网络的扩展,和/或该新的发行者PN可以通过已经作为该网络一部分的路由器连接。为了举例说明的目的,图22D中只示出来1个新的路由器CN
所述过滤传播过程在2个级中进行。在图22D中所示的双向网络中,任何链路可以同时是上行链路或者下行链路。为了当前论述的目的,将所述上行链路(只有一个)定义为从其接收当前过滤请求的链路,将下行链路(许多当中)定义为到从所述上行链路离开的过滤请求的直接的下游收件人的链路。上游和下游是依照与上行链路以及下行链路相同意义定义的方向。
参照图22C,在第一级中,新的发行者PN将请求过滤的通知广播或者多播至下游路由器C(或者所有下游节点)(步骤472)。在路由器C接收到过滤请求之后(步骤474),路由器C更新其簿记以便确保不会将相同的过滤集向同一上行链路发送两次,优选的是,借助于引用计数来实现(步骤476)。然后路由器C确定来自于此上行链路的过滤请求是否之前已经被服务过了,优选的是,借助于检查对此上行链路的引用计数器来实现(步骤478)。如果其是之前从来没有得到过服务的新的上行链路,就象第一发行者由此上行链路连接所述网络的情况,那么路由器C将所述请求中继至(步骤480)路由器的下行链路(即下游路由器),并且等待来自于所述路由器下行链路的响应(步骤482)。那些下游路由器又发送所述请求至它们的下游路由器并且等待它们的响应。重复此过程,直到所述接收节点可以作出一个应答响应为止。这样就完成了第一级。
当用于接收过滤请求的任何节点都已经收集到了来自于那个节点的下游路由器的所有的响应时,或者当该节点是网络中最后的节点并且不期待来自于下游的响应时,开始第二级(步骤484)。如果没有过滤要发送,那么将向上游发送否定确认(或者在任意表示中都是空过滤集)。如果已经从所述节点的下游路由器的全部都接收了所有新的过滤,那么整个或者部分过滤集(例如,Δ改变)将在可选的过滤减少之后(步骤454)向上游发送(步骤486)。依照方法450,只有从相对于当前上行链路的下行链路收集的过滤将被分组、合并以及减少。然后,将此收集然后传播过程向上游重复,直到发送过滤请求的发行者或者初始路由器接收来自于所有所述发行者或者初始路由器的下游路由器的否定确认为止。过滤的实际传播或者如上所述的空集(否定确认)构成第二级。所述二个级在它们的传播方向以及传播内容方面不同,并且由于过滤请求可以比其它请求前进到更下游的一些网络分支,故而它们在时间上可能会重叠。
因为此过滤传播方案只有当接收来自于上行链路的过滤请求时才启动过滤传播过程,而不是急切地将过滤泵送到每个上行链路,所以它作为惰性传播方案可能是已知的,它只将过滤泵送到请求过滤的上游路由器并且只有当它请求它们时才这样做。这里应该注意的是,过滤请求未必需要是特殊格式的通知。依照部分E,来自于任何发行者的第一通知可以被认为是其存在的广告,并且已编码并且被嵌入数据通知的过滤收件人行为规则可被用于确定过滤是否正被请求。
每个发行者P的过滤可能存储在发行者用户机器100,或者存储在与发行者P相连接的路由器C中。与采用上文方法450一样,方法470还可以使用附加解决方案,诸如在上文部分A-I中描述的那些。
使用紧凑的过滤存储器以及离线预先计算的CBR
在此部分中描述的CBR的实施例涉及一种用于基于深度分组检查以及过滤匹配、在发布/订阅网络核心中路由数据分组的方法。通过将过滤变换为更加紧凑的形式,并且通过预先计算所述过滤在属性空间中的覆盖范围,此CBR方法形成从属性空间座标的有限集至离线路由指令的映射,然后实时地使用所述映射来做出路由决定。此CBR方法非常快,实现了与传统的网际协议(IP)路由相同数量级的数据转发速率。因此,此CBR方法是用于在网络核心中基于内容的路由的实用商业部署的适合的候选。
如上所述,预订者通过在属性值范围上规定谓词来精炼如下分组的选择性,所述分组是从发行-预订网络中的一个或者多个发行者发送的。每个谓词是一属性测试(属性测试也可以包括主题测试),该属性测试将分组中一定位置的属性与关系或者成员资格测试中的1个或者2个操作数相关(操作数可以是诸如正则表达式的复杂对象)。例如,10<$1<20是一个用于检查由$1表示的第一属性位置中的数据值是否大于10并且小于20的测试(可以将谓词的定义通过将测试限制为只包含1个操作数来简化,例如,可以将2侧范围测试分开为两个单侧测试的连接)。所述预订者在一个或者多个预订中提交这些测试的一个集合,每个预订均可以包括预订者感兴趣的主题字段。
此处所述的实施例涉及使用过滤的基于内容的路由,所述过滤是从预订导出的对象并且只在它们的表示上不同于预订。过滤的一个例子是如下所述的合取过滤。在某种意义上,一个预订是原始过滤,一个被规定并用于过滤分组和/或由预订者直接发送到网络的原始过滤。为了易于传播以及在网络中的路由器处进行分组匹配,可以将预订转换为称为过滤的其他格式的对象。例如,在一些实现方式中,每个主题使用多播网络实现。属于相同主题并且为特定主题而注入到多播网络的每个节点的过滤只过滤具有相同主题字段的分组,实际上隐式地执行主题字段过滤。因此,可以将过滤存储在此网络中每个节点处的它们的主题标题下,而不用它们的主题字段。没有主题字段的过滤通常称为属性过滤。对于以下论述来说,术语预订、过滤以及属性过滤可互换使用,并且其意思仅仅由它们的环境清楚表明。
为了易于进入的数据分组与这些预订进行匹配,在把每个预订发送到边缘路由器之前,可以由代理机来处理每个预订并且将其分解为其等效析取范式(DNF),如上所述。DNF是称为合取过滤的一个或多个子过滤的析取式。每个合取过滤是一个或多个属性测试的合取式,其中每个属性在表达式中利用相同测试运算符最多表示一次。例如,合取过滤可以约束在位置1的属性与表达式(不同于$1的属性被归入以下例子)的匹配:
$1>10 and $1<20 and $2<4 and $3==5 and...
就路由器而言,属性过滤因为代理机的动作而全部是合取过滤。合取过滤不仅具有统一格式的有益性质,这种统一的格式易于在网络核心中传播这些过滤,而且每个属性在过滤表达式中的单次出现也允许将这些过滤解释为多维的几何对象,这对于描述此中CBR实施例十分有用。因此,在下文中,只将合取过滤用作例子。
不管是否使用DNF,如果使用一种单纯的方法来一个一个地并且一个谓词一个谓词地来匹配过滤的较大集合,那么所需要的巨大计算量可能很容易使通过使用CBR获得的下游带宽增益的益处受损。在关键性数据转发通路中的此巨大的计算量可能严重拖延发行-预订网络的效率。此处所述的CBR实施例设法减少此巨大的计算量,并且设法将大部分计算从关键性数据转发通路中移去。
实际上,此处所述的实施例为CBR提供了一种非常有效的方法,通过将过滤表达式近似为更加紧凑的形式并且离线预先计算过滤覆盖范围信息来实现。在此CBR方法中,当插入或者去除过滤时,属性空间中每一个单点上的过滤覆盖范围被离线预先确定。对具有落在该点上的属性值的所述分组的正确动作将是覆盖该点的全部过滤所断言的动作的合一。这些动作可以涉及以下分组,例如包括转发至物理或者封装的接口的分组、转移至用户级进程的分组、或者管道式传送至并行机(例如高速缓存、备份路由器等)的分组。一些动作可能根本不涉及分组,例如包括触发在路由器上运行的一般应用以便响应特殊指定的分组的到达,由于在所述过滤的相关区域中仍存在活动的发行物而延长一些过滤的寿命,基于发行物的内容自动地注入新的过滤等。实际上,每个过滤所断言的动作可以通过数据结构具体实现,所述数据结构诸如动作位屏蔽(ABM),每个位的位置代表不同的(转发的)动作,或者在动作数目变得过于难控制以致于无法放置在一个位屏蔽中(例如一个边缘路由器连接数目巨大的预订者)时,所述数据结构是一个不同动作的列表(不同动作列表-DAL)。在随后的论述中,当单独提及ABM或者DAL时,应该理解的是,所述环境涵盖体现动作的数据结构的所有形式。
由此,预先计算生成从属性空间中多个坐标到相同数目的合一或者动作列表的CBR映射。因为此简单映射与用于主题组多播中的多播路由表相似,所以可以将其通称为CBR表。正如可以看到的那样,通过将沉重的计算负担从关键性数据转发通路转移到在后台运行的非关键性过滤预先计算进程,数据几乎免于匹配原始过滤表达式所需的处理而快速地通过关键性数据转发通路。
优选的是,此CBR方法还包括将过滤表达式近似为更加紧凑的形式,例如借助于空间量化和谓词归结来实现。因为在每个属性维数中存在巨大的坐标数目,所以必须量化属性空间,由此形成网格。只使用量化的区域而不是个体坐标来构造CBR表。因为空间量化具有将实际属性空间中的个体点分组到量化属性空间中的单个点的作用,所以原始实际属性空间中的每个点仍间接地在CBR表中说明,与其邻近的具有相同量化坐标的点共享对那些量化坐标所断言的动作的列表。
在此方法中允许各种空间量化方案。此外,当过滤表达式包含太多谓词时,其可以被近似为只在CBR表中表示的子集。
属性的属性空间潜在地是无限的。因此,即使使用网格,属性空间也可能太过使用不便。因此,此处所述的CBR方法优选的是减少被量化的属性空间的面积。具体来讲,优选的是,只量化属性空间的如下那样的面积,对于该面积可预期接收到匹配的数据分组。如下所述,对于其将可能接收到匹配的数据的面积是基于从发行者接收的信息和/或基于过去的(即预先接收)的分组和/或过滤的分布的统计分析来确定的。例如,如果发行者提供信息:将永不发行大于一个属性的一定属性值的匹配的数据分组,那么优选的是不量化大于所述一定的值的属性空间。同样,如果统计分析表明:从来没有接收小于一个属性的一定值的过滤,那么优选的是不量化小于所述一定值的属性空间。
图23A依照此处所述的实施例、举例说明了通过将过滤表达式近似为更加紧凑的形式并且离线预先计算过滤覆盖范围信息的CBR方法480。此CBR方法最小化了实时的逐谓词的过滤匹配。方法480可以由处理器93在智能路由器92中或者ASIC 91中包含的相应功能的软件控制下执行。通常,因为涉及过滤管理功能的预先计算步骤是集中计算的,故而优选的是,采用软件来执行它。然而,在诸如基数(radix)表示的一些过滤表示中,它还能够采用硬件来维护过滤。方法480例如还可以采用软件模块来实现,所述软件模块例如由代理106所代表的,由用户机器100中的处理器114执行。
如图23A所示,方法480首先确定是否是时候执行空间(重新)量化(步骤482),其可以通过周期的或者非周期的超时来触发,或者通过预先定义的事件触发,所述预先定义的事件诸如观察到分组统计量在当前量化的属性空间上已经变成极度地不规则。如果需要并且当路由器相对空闲时,离线地执行空间量化(步骤484)。空间量化涉及新网格的计算,优选的是,所述新网格具有使分组分布或者过滤分布(或者这两者的一些相关)在作为结果的量化属性空间上变得一致的性质。可以使用空间量化的其他方法和标准。
可以将网格区域构造为只覆盖属性空间的减少的面积,在所述属性空间的减少的面积中,预期可以接收到匹配分组。例如,如果第一属性$1表示US某一工业部门中的股票数目,空间量化只需要在从0到组合的所有美国证券交易所中股票总数的数目范围中进行。在此属性的统计分布由所收集的分组统计量形成之后,如下面将论述的,自适应量化可用于动态地调节此范围,最初调节到一个小得多的数目,该数目是全部部门股票数目中最大的数目,并且以后在最大值增加时,调节到更高的数目。
然后,路由器确定是否有任意过滤已经被插入到网络位置(例如核心或者边缘智能路由器92、或者发行者机器100)或从该网络位置将其去除(步骤486),在所述位置处正在执行方法480。引用计数法可以记录一个新注入的过滤与先前注入的另一个过滤是否具有完全相同的信息(例如,属性、匹配的属性值以及过滤动作)(步骤488、步骤494)。只有完全不同的过滤才需要加以处理。为此描述的目的,将所述位置假定为智能路由器92。例如,一个新的过滤也许已被向上游传播至智能路由器92,或者一个旧的过滤也许已因为针对旧的过滤所设置的超时期满而超时。
当接收了插入或者去除一个过滤的请求时(步骤486),首先使用该过滤的实际坐标,将所述过滤与由路由器早已接收并且存储的其他过滤相比较,目的在于能够(1)在实际属性空间中更新对正确的过滤的引用计数(步骤488),并且(2)确定待插入/去除的过滤是一个不同的过滤还是一个以前已经接收的过滤(步骤490)。如果所述过滤不是一个完全不同的过滤,那么执行流向回传递到匹配分组的例程。否则,将分组的属性值映射到量化空间,以便获得属性值的量化坐标(步骤492)。执行一个类似的过滤标识过程,这次是使用量化坐标来进行的,以便(1)在量化属性空间中更新对正确的过滤的引用计数(步骤494),并且(2)确定在过滤的量化坐标中此过滤是否是一个完全不同的过滤(步骤496)。对于步骤488和步骤494来说,优选的是,使用从过滤坐标到过滤引用的两个映射。
如果在实际属性空间和量化空间中所述过滤是完全不同的,那么因此能对过滤求近似和减少过滤(步骤498)。例如,对于量化和映射来说,只可以选择具有太多谓词的过滤属性子集。同样,具有更加复杂的性质的谓词(例如,要求字符串匹配、正则表达式、字符串内、数组内、范围运算等的谓词)或者要求更高消解的属性可以被独立地处理。
本发明实施例的关键贡献之一在于这样的思想:如果将过滤做成紧凑的,那么就能够采用可扩缩的方式高效地执行分组的匹配和转发。过滤的压缩可以涉及过滤到量化属性空间的映射(步骤492)以及过滤表达式的求近似和减少(例如步骤498)这两种情况。如图所示,压缩步骤包括在空间上量化所述属性空间(步骤484)。此步骤在属性空间中形成网格,如上所述并且显示如下:
Figure A20081009158000741
现在可以更新CBR表(步骤500)。每个过滤与表明对匹配该过滤的发行物的一个或多个(路由)动作的规则相关联。将过滤所断言的动作(路由)采用以下方式插入到此CBR表中的网格单元中。使用在过滤覆盖范围信息的属性空间中形成的网格,步骤500首先标识所述过滤的量化坐标覆盖或者重叠的全部网格单元(即,量化的区域)。然后步骤500将所断言的(路由)动作插入到这些网格单元中。例如,假定五个可能的目的节点,要求路由至与节点2和3相连接的用户机器的两个过滤分别可以覆盖所述网格单元或者量化的区域X(参见上文)。因此,步骤500将分别要求路由至节点2和3的规则插入或者确认到网格单元或者量化的区域X。对于被标识为要由过滤的量化坐标加以覆盖或者重叠的每个网格单元来说,重复此过程。优选的是,步骤500表示通过为每个网格单元或者量化的区域生成或者更新ABM而获得的映射。在此例子中,假定节点被编号为0-4的网格单元或者量化区域X的ABM是:
  0   0   1   1   0
注意,优选的是,为过滤去除执行簿记。例如,假定一个网格单元由两个过滤覆盖,并且所述过滤之一被去除。ABM中的相应位不应该被复位至0。通过为每个网格单元簿记覆盖单元面积的过滤的引用计数,就可以避免混淆。然后,根据更新的引用计数器生成FBM。可以将这些引用计数器称为动作引用计数器。因此,映射步骤500可以包括此处所述的簿记步骤。
CBR表从为每个网格单元或者量化的区域生成的ABM来构造/更新(步骤500)。优选的是,这要直接或者间接地涉及空间重新量化以及CBR表更新,以及所有补充的步骤482-500。优选的是,离线(即,当智能路由器92不在接收发行的分组时)执行步骤482-500,或者当注入、挂起、暂停或者去除过滤时,在实时路由进程的后台中执行步骤482-500。据此,如果没有接收发行的分组,或者如果在后台正在执行步骤482-500,那么方法480再次首先确定是否是重新量化属性空间的时候(步骤482),并且随后确定是否有任意过滤已经被插入或者去除(步骤486)。然后,在数据转发通路中将CBR表用于实时路由进程,如图23B所示。
CBR表的大小可能因为大量的属性或者大量的对每个属性的网格划分而非常庞大。原则上,只有包含动作规则的在CBR表中的网格单元(即,由过滤覆盖的那些单元)需要被存储。可以使用任何技术来精简CBR表。
而图23A举例说明了方法480的CBR管理方面,图23B举例说明了方法480的CBR数据转发方面。如果方法480确定接收了发行的分组(步骤502),那么智能路由器92接收发行的分组(步骤504),如图23B所示。可以将所接收的分组使用点到点连接(例如,至边缘路由器的无线连接)注入到网络中。将所接收的分组映射至网格(步骤506)。步骤506确定分组的量化坐标,以致可以查找CBR表的正确的网格单元,并且可以提取该网格单元中包含的动作规则并且,使用这些工作规则来处理所述分组(508)。这些动作可以包括确定要把分组路由到网络中的哪些节点或者哪些其他位置,或者包括丢弃所述分组。
泄漏减少
至此所给出的CBR方法480可能存由于过滤近似而产生的分组泄漏形式的错误(参见步骤492)。因为使用网格单元的边界而不是原始过滤边界来匹配分组,故而增大了用于匹配的实际区域(例如,2维面积以及3维体积),并且属性值落入实际过滤边界和网格单元边界之间的不希望有的分组(此处通称为松弛区域)将被错误地接受。如上所述,当速度性能和可扩缩性在进程中被获得或者被改进时,并且当泄漏错误与进入的分组的总数比较是较小时,减少的过滤消解被认为是可接受的损失。
然而,在一些情况下,泄漏错误未必是小的。例如,当所述系统包含具有至少一个其CBR启用的属性谓词是相等或者不等测试的过滤(例如,$1=4 & $2=100 &S3<30,或者$1=4 & $2>3)。作为相等测试或者不等测试的那些属性的维数中,所述过滤相似于一点。当强加网格边界以便归类这些点时(在上面步骤490中),松弛区域的扩张(例如面积、体积,超体积)就可以大于实际过滤自身的扩张。
此问题在下面的图中加以描述,该图描绘了2个属性的空间并且示出了两个点过滤F1和F2,两者均由任一维数中的相等测试加以定义。所述数字指示网格单元坐标而所述字母是实际坐标。其属性落入网格单元中无论任何地方的那些分组(4,1)将被当作匹配F1和F2这二者。
Figure A20081009158000761
通过可以在泄漏减少步骤516中执行的各种技术可以减轻CBR方法480的这种不合需要的特性,这部分内容将在下面作为一个例子描述。
泄漏减少516的这种技术之一涉及在一个维数(1D)中的确切匹配。同时针对所有属性确切地把分组匹配至过滤是多维的问题,其不具有可扩缩的解决方案。然而,在1D中的确切匹配被获知具有许多高效并且可扩缩的解决方案,包括但不限于:(1)对过滤边界数组的对分检索;(2)遍及全部过滤边界的二叉树搜索;(3)沿着嵌有过滤边界信息的树向下的基数搜索;以及(4)采用其他更加复杂的数据结构-诸如间隔二叉搜索树等的搜索。
在泄漏减少步骤516中,优选的是,使用任何1D搜索技术1D进行1D的确切匹配对所有属性都要执行。下面将描述依照1D确切匹配的示例性泄漏减少步骤516。
a.在没有泄漏减少的情况下执行CBR匹配步骤508,如上所述(如果没有匹配,则丢掉分组);
b.对于匹配的分组(参见上面步骤508),选择一个属性维数,并且使用任何ID确切匹配技术及其相应数据结构来将所述分组的该属性值与所有过滤边界在该属性轴上的投影匹配。获得了为其找到了匹配的过滤的全部转发节点的列表;
c.如果没有1D匹配,那么因为确保在所有的分组属性测试上将没有过滤匹配所述分组,所以可以丢掉所述分组;
d.如果存在匹配,那么选出另一个属性维数并且重复步骤b,直到(i)在任何维数中都发现是失配的;(ii)由所有先前执行的1D搜索产生的转发节点列表不包含公用接口(即,从来自于不同接口的过滤生成1D匹配);或者,(iii)对所有属性维数都执行确切的匹配测试,所述属性维数可以包括对于CBR被禁止的那些属性维数。
e.如果在步骤d中描述的任何一个丢掉条件没有发生,并且测试所有属性而没有失配,那么可以做出一个不丢弃分组的判断。
f.在涉及一个以上接口的情况下,没有因其而丢掉分组的接口必须与从步骤a获得的接口列表进行比较。所述分组只被路由到将路由的两个列表之间交集中的接口。
子步骤a-f的其他次序也是被允许的。例如,子步骤a可以在ID泄漏减少步骤(子步骤b-e)完成之后执行。可以集成一些子步骤。
应注意的是,上述ID泄漏减少步骤516在考虑全部维数时是不确切的。使用上个例子,具有属性值$1=a & $2=d的分组在任一维数下都将通过确切匹配的测试,但是在每个维下的测试实际上一个匹配不同的过滤。在正确的多维分析中,往往往往要被丢掉。因此此泄漏减少只对丢掉分组很有用的,而对于接受分组却是没有用的。对于后者情况,它指示近似的,并且泄漏错误仍是可能的。尽管其不准确,泄漏减少步骤516还是极大地减少了通过使用对于过滤的网格单元(4,1)中的整个面积引起的泄漏错误。
检查经由所述智能路由器92的所述数据转发通路的信息量,以便确定其是否在一组阈值之上(步骤510)(即,智能路由器92例如是“繁忙”,被转发分组的关键任务占据着),其中在所述智能路由器92处执行方法480。如果所述智能路由器92繁忙,那么基于由步骤508确定的路由动作来路由映射至覆盖的网格单元(步骤508)的分组(步骤512),并且更新相应的分组统计量(步骤514)。因此,如果智能路由器92繁忙,那么由于路由映射至部分覆盖的网格单元的分组而不是路由在该网格单元中超出实际过滤覆盖范围以外的分组所导致的“泄漏”被当作损失,以便提高路由速度。
如果步骤510确定智能路由器92不繁忙(即,通信量没有超过阈值),那么优选的是,执行泄漏减少(步骤503)。所述泄漏减少步骤516减少在前段中描述的泄漏。所述泄漏减少例如可以依照下面描述的方法执行。
到目前为止,还没有实时地执行任何确切的或者逐个谓词的过滤匹配。然而,在方法480中,可以允许最小级的确切过滤匹配,优选的是,只有当通信量没有超出阈值时才允许上述确切过滤匹配。此CBR方法依照它们相对于所述网格的位置内部地对过滤进行分组。所述网格单元是一种工具,用于依照它们的几何位置对过滤进行分组。在过滤的任何组内(作为选择通称为过滤桶(filter bucket)),对于某些情况可以进行更加准确的详细过滤。这种额外的匹配需求可以存储在过滤桶中。一些例子包括:
1.要求比CBR映射提供的消解更高的消解的属性测试可以在从CBR的第一网格匹配步骤中检索出过滤桶(步骤508)之后加以处理。
2.通过所述过滤成组方法来处理更加复杂的性质的属性测试(例如,字符串匹配、正则表达式、字符串内、数组内、范围运算等)。
3.对于包含大量属性测试的过滤来说,可以将所述属性分成两个组,一组被输入到CBR映射,而另一组被输入到过滤桶。
可以通过上面的步骤498来减少在1-3中描述的属性的过滤谓词。另外,如果智能路由器92不繁忙(参见步骤520),那么使用逐谓词的或者其他确切的过滤匹配来将这种分组与由部分覆盖的网格单元确定的过滤桶匹配,所述部分覆盖的网格单元是根据CBR表所确定的。因为用于该网格单元或者量化区域的过滤桶早已通过预先计算(在步骤482-500)中被(从过滤的总数)减少,所以此过程简单地执行直接的逐个谓词的CBR,故而更加有效。
在基于所述CBR表路由所述分组以前(步骤512)(由步骤508所确定的),所述方法确定对于由映射到的网格单元确定的过滤桶而言,是否存在任何减少的过滤谓词或者是否存在映射至部分覆盖的网格单元的分组(步骤522)。如果存在这种减少的过滤谓词(例如,根据上面例子1-3)或者从存在这种映射的分组,那么执行逐个谓词的或者其他确切的过滤匹配(步骤524)。然后,根据例如通过求取通过这两种方法获得的接口列表之间的交集从CBR表和确切的匹配确定的路由动作来路由匹配的分组,(步骤512),并且更新分组统计量(514)。
在方法480的替代性实施例中,通信量阈值检查步骤510可以先于一些计算集中的步骤,诸如步骤518和524,通过平衡消耗对计算强度平衡消耗加以确定。此外,所述方法480可以具有独立的通路,分别用于映射至完全覆盖的网格单元的分组,以及用于映射至部分覆盖的网格单元的分组。通信量阈值步骤510可能只在部分覆盖的网格单元通路中执行。
在方法480中的泄漏减少步骤516可以替换为此处所述的更加高级的泄漏减少过程。高极的泄漏减少过程进一步减少泄漏错误。例如,确切的多维匹配可以在网格表搜索之后通过交叉乘积(cross-producting)在网格单元内执行。交叉乘积涉及以下过程:
a.使用任何ID确切匹配技术执行如上所述的ID确切匹配。此替代步骤中的主要区别在于产生过滤标签列表而不是转发节点列表;
b.如果所述列表是空的(即没有匹配),那么丢掉所述分组;
c.如果存在至少一个匹配,那么所述搜索进行到另一个属性。步骤ac被重复,直到下面任一项走捷径的条件满足为止:(i)在任一维数下都发现了失配;(ii)在由在前ID测试产生的所有过滤标签列表中没有通用过滤标签;或者,(iii)已经测试了所有维数;并且
d.如果在步骤c中描述的任意一个丢掉条件没有发生,并且测试了所有属性而没有失配,那么可以做出一个接受分组的决定。
例如,在上述图中,具有属性值(a,d)的分组将对$1测试产生F2,对$2测试产生F1。因为两个过滤标签列表之间没有交集,所以将丢掉所述分组。另一方面,具有属性值(a,c)的分组将在$1和$2测试中都产生F2,由此令所述分组被接受。因为此过程甚至在最后的多维分析中也几乎是确切的,故而它是一个接受分组的测试,而不是一个仅仅将这些分组丢掉的测试。只有已经进行的求近似是过滤中的属性测试的截断。此问题不是不可解决的。例如可以通过以下过程防止它发生:
1.创建多个网格表,包含对应于全集的子集置换的属性子集(例如,选择($1、$2、$3)作为一个集合,($S2、$4、$5)作为另一另一个集合)。具有长谓词列表的过滤将由至少一个这种网格表加以覆盖;或者
2.对全部属性执行交叉乘积测试。因为具有大量谓词的过滤在性质上是可选择的,所以走捷径的概率是很高的,并且上面在步骤c略述的任一项丢掉分组条件(例如,过滤标签列表交集)可以在测试所有属性之前发生。
因为让过滤包含大量谓词是不实用的并且稀少的,所以过滤表达式的某种截断,虽然是必需的,但是可以不频繁地发生。
组合空间量化和交叉乘积的此混合过程以及如上所述的多表格查找方法构成此专利的另一个关键的贡献点,这是因为所组合的这两种方法解决了任一种交叉乘积解决方案所经常面对的不可扩缩性的传统问题,如下面将看到的那样。
在点过滤的情况下,交叉乘积解决方案是确切的。然而在范围过滤的情况下,由于在任意对相邻过滤边界之间需要存储作为过滤标签列表的交叉乘积,故而存在传统上的两个问题。第一,当向系统注入彼此高度重叠的范围过滤时,存储具有N2阶,其中N是过滤的数目。第二,交集步骤列表具有N阶,当N较大时,这可能是一个非常慢的过程。组合网格搜索以及交叉乘积方法的混合处理方式将两个问题归结为合理的大小,因为只有那些落入相同网格单元的过滤边界需要加以存储,并且对于落入该网格单元的边界的分组进行匹配。在某种意义上,所述网格单元已经接替了根据邻近过滤边界之间的间隔存储过滤标签列表的角色,并且因为存在较少数网格单元,所以需要存储过滤标签列表。
如果基于过滤边界分布来构造所述网格,那么在任一属性维数中在每个网格单元间隔中将产生偶数过滤。当N变小时,存储问题N2就变得不那么难以对付。例如,32间隔的网格就有可能减少存储问题为(N/32)2*32=N/32。列表交集速度问题同样地得以减轻。
只要网格单元的数目在实际上保持一个小的数目,如上所述的交叉乘积方法就能很好地其作用。将属性划分为各种置换集并且为每个集分配一个CBR表的方法将每个表中的网络单元数目限制为合理的数目。例如,如果L是每个属性轴中的划分数目,k数目的属性的网格单元的总数就会是Lk。通过使用多个表(大小=4)的方法,现在将大小减少为M L4,其中M小于置换的总数k!/(k-4)!4!。应注意的是,一些置换彼此高度重叠并且只有一个可以挑选来作为代表。(例如,{$1,$2,$3},{$1,$2,$4},{$1,$2,$5}).
依照本实施例的CBR方法(例如,方法480)(减去确切的逐谓词的过滤匹配步骤516和524)具有至少以下性质:1)分组转发速度飞快,并且可与IP路由相比较,只需要0[klog(L)]个步骤,其中L是所有属性轴中的划分数目而k是被量化并且映射的属性数目。使用4个属性以及每属性32个划分,需要大约22步;2)分组转发速度实时地是恒定的。它不取决于过滤的数目(N)。此性质使得估计此CBR方法足可支撑的最大带宽容量成为可能;3)对于动态的更新它也是快速的。例如,插入过滤根据实现方式可以采用0(Lk)步;4)存储需求很小并且有限,近似地是k(L-1)SA+NrLk/8,其中SA是采用字节的属性数据类型的大小,而Nr是路由器处转发接口的数目。第一项是数据结构的所有k数目个索引部分的总体大小,并且后者是被索引的实际转发部分(即,CBR表)。对于依照4整数属性的32划分的CBR来配置的具有8个接口的路由器而言,存储量只有1MB;5)与大得多的转发部分相分离的索引数据结构应该要非常服从于高速缓存。例如,使用上面的例子,索引结构的大小只有(4)(31)(4)=496字节;并且6)所述网格也是对于分组和组织过滤的工具。它对于在传播过滤以前合并过滤是尤为有用的,由此使得此方法在包括大量预订者的系统中非常易于扩缩。概括地说,CBR方法480是快速的、可断言的、动态的、可扩缩的、没有存储需求的、灵活的,以及由此对于在发行-预订网络的核心中进行部署是切实可行的。
自适应网格
如上所述,所述网格是通过在空间上量化属性空间而形成的。一般说来,所述属性空间是均匀地量化的。然而,如果将所述属性空间自适应地在空间上加以量化,例如,基于过去的分组分布加以量化,那么网格的分辩率以及因此的CBR方法480的效率可以得以改进。自适应的量化确定很可能要为其接收最匹配的分组的属性空间的区域。例如,自适应的量化可以确定在其中过去的分组分布大多集中的属性空间的区域。然后依照比属性空间其他量化区域更大的程度来量化所确定的一个或多个区域。换言之,在所确定的区域中,网格单元的数目将大于属性空间中其它量化区域的,并且网格单元的大小要小于其它量化区域的。自适应网格的以下2个图举例说明了此情况:
Figure A20081009158000821
在第一个图中,将精细的网格叠加在繁重的分组通信量的区域上。在第二图中,举例说明了一种替代方法,在任一的属性轴上改变网格间距,以致更多的网格单元更加精细,并且更加集中于例如通过量化坐标(3,2)、(4,2)、(3,3)以及(4,3)包围的面积中。
这种自适应网格的优势是很多的。正如在此图中可以看到的那样,已经自适应地量化了区域Z。在区域Z中大概是四个(4)网格单元没有进行自适应的量化,目前存在64个(64)网格单元。正如此图中所示那样,尽管过滤覆盖范围信息sS预先可能会具有部分覆盖的三个网格单元,依照自适应网格只存在一个(1)部分覆盖的网格单元Y。因此,潜在的泄漏量被显著地减少。此外,如果区域Z中的六十四个网格单元的一个或多个被部分地覆盖了,那么这些网格单元中的每一个的潜在泄漏量就会显著地小于在部分覆盖的网格单元Y中的泄漏量。这是因为区域Z中这种部分覆盖的网格单元中的每一个的松弛区域会显著地小于部分覆盖的网格单元Y中的松弛区域。因此,可以通过使用自适应网格来提高CBR方法480的效率。
第二种方法具有不像第一种方法那样增加存储需求的优势,这是因为生产来相同数目的网格单元。然而,与前者方法相比,它也产生来稍欠的准确性。
依照发行-预订体系结构实现查询-响应
此处所述的是对于使用发行-预订网络来支持查询-响应类型交互的一系列方法。所述方法涉及从发行-预订类型的原始抽象(也就是发行物(也称为通知)以及预订)到那些查询-响应类型(也就是广告(也称为提供)、查询以及响应)的不同映射。附加变化区别单个(singleton)广告和查询(其表征单个内容项)与广告以及查询集(其表征多个内容项)的使用。
如上所述,在发行-预订网络中,发行者创建并且分送称为发行物或者通知的内容项。在许多系统中,将这些信息构造为类型属性的元组,并且在一些系统中,称为主题的区别属性用作所述通知的主分类器。预订者创建并且分发预订,这些预订表征他们感兴趣的通知。通知通常是单个内容项,而预订通常使用复杂的表达式来表征一组感兴趣的通知。相同实体可以充当发行者和预订者两者。通过让发行者将内容项推送给预订者来进行交互。这种推式递送在预订和通知之间遵守一定的时间次序;具体来讲,通知只相对于在通知时活动的预订匹配,而不相对于将来的预订匹配。
不同形式的交互,查询-响应类型位于许多通用分布式应用之下,所述应用包括网页搜索引擎和端-端的内容共享系统。在查询-响应软件应用中,称为广告客户或者生产者的实体向其他实体制造可用的内容,并且所述实体使得这种内容的存在通过如下广告或者供应使人们得知,所述广告或者供应表征所述实体所能够提供的单个或者感兴趣的内容项集。称为请求者或者消费者的另一个实体广播如下查询或者请求,所述查询或者请求表征单个内容项或者感兴趣的内容项集。然后所述应用负责定位匹配的广告并且作为响应将它们递送至消费者。通过让消费者将广告和内容项这两者本身一起从生产者拉回来而进行交互。这种拉回式递送在广告和查询之间遵循一定的时间次序;具体来讲,一个查询只获得关于在查询的时候活动的广告的响应,而不获得有关将来广告的响应。
此处所述的实施例是用于使用发行-订阅的推送类型交互来支持查询-响应的拉回类型交互的一系列方法。以下描述用于实现它的五个示例性方法。
1.图24A是举例说明使用发行-预订系统的第一查询-响应方法600的流程图。方法600可以使用各种发行-预订系统执行。例如,方法600可以在智能路由器92中(或者在ASIC 91中包含的相应功能中)的软件控制下由处理器93加以执行,并且例如采用如由代理128和105所代表的软件模块加以实现,所述软件模块由用户机器122和100中的处理器134和114加以执行。
在方法600中,使用发行-预订网络来匹配广告和查询,借此广告客户使用预订来注册单个或者广告集(步骤602),并且请求者使用发行物/通知来分发单个查询(步骤604)。换言之,将单个或者广告集映射至预订,并且将单个查询映射至通知。任何匹配的通知由发行-预订系统推送给广告客户,所述发行-预订系统使用所述预订(广告)作为对通知(查询)的过滤来执行CBR(步骤606)。所述CBR可以使用上述基础结构并依照任何上述方法来执行。所述广告客户经由一些非发行-预订手段(例如,至所述请求者的单播连接)或者经由使用发行-预订网络的协商一致的惯例(例如,要求请求者注册独立的预订(对应于请求者的通知),来接收所述响应,其作为通知被递送),来接收所述通知并且向请求者返回响应(步骤608)。
图24B是进一步举例说明方法600的顺序图。图24B描述了(例如使用发行者机器100的)广告客户、CBR基础结构(例如智能路由器92的网络)以及(例如,使用预订者机器122的)请求者之间的交互。所述顺序图举例说明了:多个处理器(例如,处理器93、处理器114以及处理器132)优选地执行方法600。
2.图24C是举例说明使用发行-预订系统的第二种查询-响应方法610的流程图。方法610可以使用各种发行-预订系统执行。例如,方法610可以在智能路由器92中(或者在ASIC 91中包含的相应功能中)的软件控制下由处理器93加以执行,并且例如如由代理128和105所代表的采用软件模块加以实现,所述软件模块由用户机器122和100中的处理器134和114加以执行。
在方法610中,生产者使用相关的主题对将内容项一式两份进行分发。生产者使用单个内容项的初始广告的一对主题的其中的一个(称为初始主题)发行通知(步骤616)。生产者使用该对的另一个主题(称为过去的主题)来发行通知,以便周期地再发行那些已经用初始主题首次发行的广告(步骤618)。消费者提交对初始主题的一个预订,以便接收新的广告(步骤612),并且它提交对过去的主题的另一个预订以便接收先前所发行的广告(步骤614)。作为选择,消费者可以只预订先前发行的广告。匹配的先前发行的广告(和在预订情况下的新的广告)被使用CBR推送给消费者(步骤620)。在某个点,消费者决定取消对过去的主题的预订的注册(步骤622)。
图24D是进一步举例说明方法610的顺序图。图24D描述了(例如使用发行者机器100的)广告客户、CBR基础结构(例如智能路由器92的网络)以及(例如,使用预订者机器122的)消费者/请求者之间的交互。所述顺序图举例说明了:多个处理器(例如,处理器93、处理器114以及处理器132)优选地执行方法610。
3.图24E是举例说明使用发行-预订系统的第三种查询-响应方法630的流程图。方法630可以使用各种发行-预订系统执行。例如,方法630可以在智能路由器92中(或者在ASIC 91中包含的相应功能中)的软件控制下由处理器93执行,并且例如采用如由代理128和105所代表的软件模块加以实现,所述软件模块由用户机器122和100中的处理器134和114加以执行。
发行-预订网络被补充了高速缓存特征,诸如如上所述的那个,借此高速缓存在过去发行的通知(步骤632)并且使其对于将来的预订者可用。生产者发行通知以便为单个内容项做广告(步骤634)。消费者提交单个预订以便查询感兴趣的先前登广告的内容项(这些内容项通过从高速缓存重放相关的通知来递送),并且获得感兴趣的内容项的将来广告(步骤636)。如在传统的发行-预订网络中那样,所述预订表征一组感兴趣的内容项。匹配的先前发行的通知被从高速缓存重放(步骤638),并且使用CBR将其推送给消费者(步骤640)。
图24F是进一步举例说明方法630的顺序图。图24F描述了(例如使用发行者机器100的)广告客户、CBR基础结构(例如智能路由器92的网络)以及(例如,使用预订者机器122的)消费者/请求者之间的交互。所述顺序图举例说明了:多个处理器(例如,处理器93、处理器114以及处理器132)优选地执行方法630。
4.图24G和24H是举例说明使用发行-预订系统的第四种查询-响应方法650的流程图。方法650可以使用各种发行-预订系统执行。例如,方法650可以在智能路由器92中(或者在ASIC 91中包含的相应功能中)的软件控制下由处理器93执行,并且例如采用如由代理128和105所代表的软件模块加以实现,所述软件模块由用户机器122和100中的处理器134和114加以执行。
图24G举例说明了方法650的数据广告阶段。接收一个数据广告(步骤652)。为了允许消费者使用预订来规定查询集并且允许生产者使用通知来为单个内容项做广告,并且为了实现因预订和通知的这种使用而要求的时间次序的反转,执行本体(ontology)变换,借此将数据广告转换为等效预订(步骤654)。将所述预订(转换的数据广告)向CBR网络注册(例如,将所述预订存储在智能路由器92中)(步骤656)。
图24H举例说明了方法650的查询-响应阶段。接收查询(步骤658)。如同使用上面的数据广告一样,使用本体变换将所述查询变换为等效通知(步骤660)。在步骤654和660中从旧的空间(例如数据广告)向新空间(例如等效预订)的变换首先包含在新空间中定义属性,这些属性代表来自于旧空间的属性和表达式运算符的组合。然后所述变换包含在新空间中创建通知和预订,这些通知和预订分别相当于旧的空间的查询和广告。所述变换必须满足这样的要求:当且仅当未变换的数据广告与未变换的查询匹配时,所述通知才与所述预订匹配。
通过发行-预订系统来将所述通知(变换的查询)推送给广告客户(步骤662),所述发行-预订系统使用作为对通知的过滤的预订(变换的数据广告)执行CBR。所述CBR可以使用上述基础结构并依照任何上述方法来执行。所述广告客户经由某种非发行-预订手段、或者经由使用发行-预订网络的协商一致的惯例接收变换的通知并且向请求者返回响应的数据(步骤664)。
图24I是进一步举例说明方法650的顺序图。图24I描述了(例如使用发行者机器100的)广告客户、CBR基础结构(例如智能路由器92的网络)以及(例如,使用预订者机器122的)请求者之间的交互。所述顺序图举例说明了:多个处理器(例如,处理器93、处理器114以及处理器132)可以执行方法650。
以下是本体变换的详细说明。以下假定是就下层结构作出的:一个广告(advertisement)是一个元素A∈A,致使A=V1×V2×...×Vm,其中Vi是一个数据集(1≤i≤m)并且Aj被用来指第j个A元素(1≤j≤m);一个查询(query)是一个逻辑表达式E∈Q,此处Q={E,E:A→B|E=(F and G)or E=(F or G)or E=Aiαivi,F,G∈Q,αi:Vi×Vi→B,vi∈Vi};并且,一般认为当且仅当E(A)=真(true)时, 一个查询E∈E才与广告A∈A匹配。同样,还作出以下假定:一个通知(notification)是一个元素N∈N,致使N=V1×V2×...×Vn,其中Vi是一个数据集(1≤i≤n),并且Nj指的是第j个N元素(1≤j≤n);一个预订(subscription)是一个逻辑表达式S∈S,其中S={S,S:N→B|S=(F and G)or S=(F or G)or S=Niαivi,F,G∈S,N∈N,αi:Vj×Vi→B,vi∈Vi};并且,一般认为当且仅当S(A)=真时,通知N ∈N才与预订S∈S匹配。将A和S之间、Q和N之间的映射定义为一对函数(MPAS,MPQN),MPAS:A→S,MPQN:Q→N,致使对于任一A∈A并且Q∈Q来说:
S=MPAS(A)
N=MPQN(Q)
S(N)=Q(A)即:(MPAS(A))(MPQN(Q))=Q(A)
作为简化假设条件,一个查询表达式往往被考虑只包括单谓词(诸如“Aiαivi”)和“and”运算符任一查询表达式都可以用DNF格式表达并且处理作为独立的查询的每个析取项)。下一部分呈送示例性映射解决方案,首先对特别情况应用然后对一般情况应用。
单查询映射
给出基本方案,其中一个查询包括一个单谓词Q=Aαv,一个广告元组只包含一个元素(即A=V),并且α是为V定义的唯一运算符,所述映射问题成为:N=MPQN(Aαv)and S=MPAS(A=a)。对于“A=a”广告以及“Aαv”查询来说的映射是:S=“Aαα-1a”并且N=“Aα=v”,其中,α-1:V×V→B,致使对于任意的x,y∈V来讲,“xα-1y=yαx”。
对于当存在多个运算符α1,α2,...αn的情况,所述映射是:S=MPAS(A=a)=“(Aα1α1 -1a)and(Aα2α2 -1a)and...and(Aαnαn -1a)”,并且N=MPQN(Aαka)=“Aα1=nullα1,Aα2=nullα2,...,Aαk=a,...,Aαn=nullan”,其中,对于任意x∈V和i=1,n,xαi -1nullai=真。
替代性的映射可以是:S=MPAS(A=a)=“(Aα1α1 -1a)or(Aα2α2 -1a)or...or(Aαnαn -1a)”并且N=MPQN(Aαk a)=“Aα1=nulla1,Aα2=nulla2,...,Aαk=a,...,Aαn=nullan”,其中,对于任意x∈V和i=1,n,xαi -1nullαi=假(false)。
析取的查询映射
对于一个单运算符以及一个析取的查询来说,所述映射看起来如下:A=“A=a”,Q=“(Aαa1)and(Aαa2)...(Aαaq)”,S=“Aαα-1a”,并且N=“Aα=SUPERα(a1,a2,...,an)”,其中SUPERα(a1,a2,...,an):V×V×...→V,“(xαa1)and(xαa2)...(xαaq)”<=>“xαSUPERα(a1,a2,...,an)”并且SUPERα(φ)=nulla。注意,对于任一运算符来说不确保函数SUPERα(a1,a2,...,a)存在(实际上,人们可以容易地定义对其这种性质无法定义的运算符)。然而,对于大多数通用运算符来说,这种函数是可用的(即,对于“<”,其是MAX(..),对于“in”∪(...),对于“=”是a=a1/如果a1==a2...==an并且还可以为null等。
对于多个运算符以及析取的查询来说,映射看起来如下(我们假定:每个运算符使用不止一次——前一种情况显示出有多少例子可以被减少到此情形):A=“A=a”,Q=(Aαxaαx)and(Aαyaαy)...(AαZ aαz)”,S=“(Aα1α1 -1a)and(Aα2α2 -1a)and...and(Aαnαn -1a)”,and N=(...,Aαk=nullai,如果αi由Q使用,或者还可以是aαi,...)。
一般情况映射
给出广告A以及查询Q,A=“A1=a1,A2=a2,...An=an”,并且Q=“...and(Aiαikai)and...”。所述映射如下所示:S=“...and(Aikαik -1ai)and...”,其中:i=1,n,其中n=来自于所述广告的字段数目,并且k=1,mi,其中mi=对字段类型支持的运算符数目,并且N=“...,Aαk=SUPERαk({aαk1,aαk2,...}),...”,其中aαki是出现在“Aikαik -1aαki”形式的查询谓词内部的值,如果对于αik来说现在存在这种元素的话。
以下是此处所述的映射变换的一些例子。
例子1
我们考虑一种简单的股票行情信息系统。所述信息结构通过2元组(Symbol(符号),Price(价格))来描述,其中Symbol属于字符串类型,并且Price属于浮点类型。查询被公式化为原语谓词的合取项和/或析取项,其中所述谓词具有如下的格式:“Symbol==<string value>”或者“Price==:<float value>”。所述数据集是:
A1=(“IBM”,70.12),
A2=(“LU”,5.30),
A3=(“KKD”,30.23),以及
A4=(“ATT”,5.30)。
所述查询是:
Q1=(Symbol==“IBM”),
Q2=(Symbol==“LU”)AND(Price==5.30),以及
Q3=(Symbol==“KKD”)OR(Price==5.30)。
因此,所述查询匹配(即所述响应)是:
Q1:{A1},
Q2:{A2},以及
Q3:{A2,A3,A4}。
对于上面的查询-响应的发行-预订映射是:
通知方案(Symbol==,Price==)
对数据广告的预订映射:
S1=MPAS(A1)=(Symbol=“IBM”)AND(Price=70.12),
S2=MPAS(A2)=(Symbol=“LU”)AND(Price=5.30),
S3=MPAS(A3)=(Symbol=“KKD”)AND(Price=30.23),以及
S4=MPAS(A4)=(Symbol=“ATT”)AND(Price=5.30)。
对查询的通知映射:
N1=MPQN(Q1)=(“IBM”,*),
N2=MPQN(Q2)=(“LU”,5.30),以及
N31,N32=MPQN(Q3)=(“KKD”,*),(*,5.30)。
因此,预订匹配是:
S1:{N1},
S2:{N2,M32},
S3:{N31},以及
S4:{N32}。
所述互逆通知匹配是:
Figure A20081009158000901
以及
Figure A20081009158000903
例子2
我们再次考虑一种简单的股票行情信息系统。所述信息结构通过2元组(Symbol(符号),Price(价格))来描述,其中Symbol属于字符串类型,并且Price属于浮点类型。查询被公式化为原语谓词的合取项和/或析取项,其中所述谓词属于如下格式:“Symbol==<string value>”或者“Price==<float value>”或者“Price><float value>”或者“Price<<float value>”。
所述数据集是:
A1=(“IBM”,70.12),
A2=(“LU”,5.30),
A3=(“KKD”,30.23),以及
A4=(“ATT”,5.30)。
所述查询是:
Q1=(Price>5.00),
Q2=(symbol==“LU”)AND(Price<40.00),以及
Q3=(Symbol==“KKD”)OR(Price=5.30)。
因此,所述查询匹配(即所述响应)是:
Q1:{A1,A2,A3,A4},
Q2:{A2},以及
Q3:{A2,A3,A4}。
对上述查询-响应的所述发行-预订映射:
所述通知方案是(Symbol==,Price==,Price>,Price<)。
对数据广告的所述预订映射是:
S1=MPAS(A1)=(Symbol=″IBM″)AND(Price=70.12)AND(Price<=70.12)
                   AND(Price>=70.12),
S2=MPAS(A2)=(Symbol=″LU″)AND(Price=5.30)AND(Price<=5.30)
                   AND(Price>=5.30),
S3=MPAS(A3)=(Symbol=″KKD″)AND(Price=30.23)AND(Price<=30.23)
                   AND(Price>=30.23),以及
S4=MPAS(A4)=(Symbol=″ATT″)AND(Price=5.30)AND(Price<=5.30)
                   AND(Price>=5.30)。
查询的所述通知映射是:
N1=MPQN(Q1)=(*,*,5.00,∞),
N2=MPQN(Q2)=(″LU″,*,-∞,40.00),以及
N31,N32=MPQN(Q3)=(″KKD″,*,-∞,∞),(*,5.30,-∞,∞)。
因此,所述预订匹配是:
S1:{N1},
S2:{N1,N2,N32},
S3:{N1,N31},以及
S4:{N1,N32}。
所述互逆通知匹配是:
Figure A20081009158000911
5.采用第五个方法,向所述发行-预订网络补充附加接口点和/或消息格式,所述消息格式使得生产者能够区别通知、广告以及响应,并且使得消费者能够区别预订以及查询。所述网络遵循各种原语之间的差别,同时使用一致的数据结构集、算法以及协议来同时实现两种类型的交互。
持久的并且可靠的消息递送
此处所述的实施例提供了用于面对网络、链路和/或发行-预订网络中的节点故障时持久性存储消息以及恢复、重启和/或继续消息流动的设备和方法。消息持久性是存储消息并且在以后检索它们的能力。大量专用应用-例如电子邮件,对于经由网络的消息流动通常要求持续很久的消息持久性。在理想条件下,在网络中没有故障的情况下,始终连接的预订者除了这些专用应用所要求的持久性之外,应该不会需要任何持久性。然而,实际上,消息当穿行通过网络时会因为如下的各种原因而可能“丢失”,所述原因例如是:(1)发生在网络内或者在用户端的故障或者缓冲器上溢,或者(2)用户明确地断开网络连接并且在一定时间周期之后重新连接。
将本实施例的事件通知平台的持久性模型分为两级,短期持久性以及长期持久性。短期持久性被设计成从因为网路拥塞或者短期链路故障造成的分组丢失中恢复过来。长期持久性被设计成从其他故障中恢复,例所述其他故障包括用户连接的丢失、用户机器的故障、应用故障和/或长期网络故障。
通道(例如如上所述的)可以是持久的或者实时的。一个实时通道发送通常只用于实时的数据,并且没有任何专用应用持久性需求。一个持久性通道存储穿行网络达一个持久性时间帧T的数据。换言之,一个持久性通道的持久性在一个时间帧T内得以保证。这种数据的持久性是例如通过以下步骤实现的:在通道的持久的持续期间内在每个边缘节点高速缓存数据;在故障条件下从高速缓存器中从对用户透明的高速缓存器中检索数据;使得用户能够显式地从高速缓存器中检索数据;通过防止路由器故障并且在路由器之间设立可靠的隧道来经由网络持久的进行数据流动;以及通过复制保护所述通道部分免于故障。
A.通过高速缓存的持久性
时间持久性(具有时间帧T)是从所述发行-预订网络检索数据的最后时间帧T的能力。例如,如果预订者离开所述网络,那么在预订者不在期间在持久性通道上所接收的任何数据在(从收到数据开始的)时间帧T内在网络中保持着。如果用户在时间帧T内返回,那么用户就不会丢失任何数据。
图25A是举例说明提供通过高速缓存的持久性的发行-预订网络的某些部件的框图。如图所示,所述网络包括核心路由节点以及边缘路由节点。优选的是,每个路由节点包括智能路由器92(与边缘路由节点一起示出)以及常规的骨干路由器(未示出),如上文在图4中所述的。需要对持久性通道执行高速缓存的每个智能路由器92优选地具有与其位于一起的高速缓存管理器218,如图25A中所示。所述高速缓存管理器218如上参照图8所述。所述智能路由器92优选地负责短期持久性,以便检索丢失的数据或者从路由器故障中恢复。所述高速缓存管理器218负责高速缓存数据以便为通道提供长期持久性。高速缓存管理器218优选地在高速缓存器540中高速缓存此数据。所述高速缓存器540优选地包括存储器以及盘(未示出)。图25A中还示出了代理128,其优选地驻留在预订者机器122(图25A中未示出)中,如图5中所述。所述代理128负责与高速缓存管理器218通信,以便从高速缓存器540检索数据,接收所检索的数据并且用于组织所述检索的数据。
虽然图25A中未示出,但是从所述边缘路由节点向上游的每个一级核心路由节点优选地都包括高速缓存管理器218。上游是远离所述代理128移动的方向(即,远离所述预订者机器122)。第一级的上游核心路由节点指的是从所述边缘路由节点直接向上游的路由节点。虽然发行-预订网络经常包括多个一级上游核心路由节点,但是图25A只描述了一个一级上游核心路由节点,即核心路由节点548。如上所述,高速缓存管理器218为它所位于的网络节点处的数据提供本地高速缓存。因此,位于各种核心路由节点-例如包括核心路由节点548的高速缓存管理器218的操作,为遍及网络核心的数据提供分布式高速缓存。此分布式高速缓存为在边缘路由节点的高速缓存提供了备份。
高速缓存管理器218优选地包括负责管理高速缓存器546的例行程序或者子例行程序。这些例行程序优选地包括高速缓存数据例行程序545、清除(purge)高速缓存数据例行程序547以及检索高速缓存数据例行程序549,如图25B中所示。这些例行程序中的每一个可以独立地操作,或者如图所示,也可以在彼此之间通信和/或传递控制权。
图25C是举例说明对在单个消息中包含的数据的持久性高速缓存550的示例方法的流程图。如图所示,所述方法550示出了图25B中所示每个例行程序执行的示例性的步骤执行。,这些例行程序在操作中优选地彼此独立的操作。方法550可以在智能路由器92、在边缘路由节点或者核心路由节点处执行,其提供了高速缓存。
所述方法550例如可以采用软件模块(例如高速缓存管理器218)来加以实现,所述软件模块由智能路由器92中的处理器93加以执行。作为选择,它可以采用ASIC或者硬件和软件组合来加以实现,或者在与相应的智能路由器92相同或者不同的物理设备中加以实现。所述智能路由器92把需要被高速缓存的消息转发至高速缓存管理器218。所述高速缓存管理器218接收包含数据的消息(步骤552),给消息中的数据加时间标记(步骤554),并且在高速缓存器546中高速缓存所述数据(步骤556)(类似于图14中的步骤322-326(参见上文))。所述高速缓存管理器218以多种方式索引高速缓存的数据(步骤558),例如通道标识符、主题、发行者标识符、时间戳等等,如上所述。所述索引步骤558可以在高速缓存步骤556之前、与其同时或者在其之后进行。可以对高速缓存的数据做索引并且将其存储在分层目录结构中(例如参见图15)。也参见表17-19。
将所述数据高速缓存在存储器(所述高速缓存器546)中并且周期地将其移到盘中(步骤560)。将对于特定通道的持久时间帧“T”分为N个时间粒度,每个大小为G。在存储器中进行高速缓存只能达到持续时间G之久(步骤556)。在高速缓存管理器确定时间间隔G已经过去之后(步骤559),将数据移到所述盘(步骤560)。高速缓存管理器218在所述盘上存储数据达持久的超时时间间隔T的持续时间之久。
一旦时间间隔G变得大于所述通道的持久超时(T)+间隔上限(步骤562),就将对应于所述时间的数据从所述盘上删除(步骤564)。为了更好的理解这些,假定通道具有2小时的T。作为一个例子,所述高速缓存管理器218使用15分钟的时间粒度G。对于从所述盘中删除数据来说,优选地使用的策略是:当在时间间隔G(15分钟)期间高速缓存的最后数据已经存储了T(2小时)之久,那么在15分钟间隔期间高速缓存的整个数据将被丢弃。因此,在15分钟间隔开始时的高速缓存的数据在将其删除之前已经被存储来比2小时更长的时间。在此例子中,在每个15分钟间隔期间高速缓存的数据是一数据块。如果持久时间帧T分为N个间隔,那么在高速缓存器540中,任意时间点上每个主题将具有N+1个数据块(盘上有N个并且存储器中有1个)。
如果所述高速缓存管理器218接收对数据的请求(步骤566),那么所述高速缓存管理器218使用所述索引(步骤568)检索所请求的高速缓存的数据(时间T还没有过去),并且向骨干路由器转送所检索的数据,以便路由至请求的预订者机器122(步骤570)。如下所述,参照图25D,如果所述数据不在边缘路由节点处的高速缓存器540,那么高速缓存管理器218可以启用第一级的上游核心路由节点(例如在核心路由节点548)处的高速缓存器来检索数据。如果所述高速缓存管理器218没有接收到一个请求,那么方法550循环返回至步骤552。
为了防止在给定智能路由器92处的高速缓存管理器218的故障,除在高速缓存器546中存储数据以外,还将数据存储在第一级的上游核心路由节点(例如,核心路由节点548)的高速缓存器中。因此,步骤552-564优选地在所述消息被路由到边缘路由节点并且在所述边缘路由节点处执行方法550之前,在第一级的上游核心路由节点加以执行。
(例如在边缘路由节点处的)高速缓存器546以及第一级的上游核心路由节点(例如在第一上游核心路由器548)处的高速缓存器的位置被本地存储在代理128中。因此,如果所述预订者机器122移动(例如预订者是在不同边缘路由节点重新与网络连接的移动用户),那么代理128将向新的边缘路由节点提供所述边缘路由节点以及预订者机器122在移动之前已连接到其上的第一级上游核心路由节点的高速缓存器的位置。这样做即使预订者机器122移动也能够维护持久性。
如图25D所示,其示出了持久的消息检索580的方法流程图,处于预订者机器122的用户应用182优选地启用代理128来从所述高速缓存器中请求数据(步骤582)。代理128使用存储的高速缓存器位置来(例如使用getcache命令)启用处于适当的边缘路由节点的高速缓存器546来获得数据(步骤584)。代理128可以指示要检索数据的什么时间帧。作为选择,高速缓存管理器218可以检查预订者机器122的连接历史(参见上面表18)以便确定将检索什么样的高速缓存的数据。如果所述连接历史表明预订者机器122已经离线了X时间周期,那么高速缓存管理器218可以检索对应X的全部有效的高速缓存数据。另外,所述高速缓存管理器218可以只检索持久时间帧T内的全部高速缓存的数据。如果边缘路由节点高速缓存器546具有所述数据(步骤585),那么代理128就从高速缓存器546检索所述数据(步骤586)。
如果高速缓存器546没有所述数据,那么高速缓存管理器218使用代理128提供的第一级的上游路由节点(例如核心路由节点548)的高速缓存器列表来启用这些上游高速缓存器来定位所述数据(步骤588)。一旦高速缓存管理器218在上游的一个或多个高速缓存器中定位所述数据,所述高速缓存管理器218就从上游高速缓存器中检索所述数据(步骤590)。在转发数据至代理128(步骤594)以前,高速缓存管理器218可以执行重复抑制(即删重复的数据)(步骤592)。
B.通过故障保护的持久性
与本实施例一致的基础结构具有以下组件或等效组件:通道管理器;事件代理;以及路由节点和高速缓存器。为了防止在故障条件期间丢失消息,这些组件中的每一个需要被保护。
1.通道管理器故障保护
上文参照图6描述了通道管理器。通过复制来防止所述通道管理器故障。所述通道管理器在主备份组中操作,其中存在一个主模块和另一个备份模块。所述主模块负责对数据的所有更新以及对查询的响应。所述备份可以只服务于查询,而不执行更新。它转发所有更新至主模块。
将需要从通道管理器检索通道信息的发行-预订网络的组件称为通道管理器客户端,并且向其分配一通道管理器。这些客户端包括智能路由器92以及它们的高速缓存管理器218,和预订者机器122以及它们的代理128。如果分配给客户端的通道管理器故障,那么所述客户端访问另一个通道管理器并且与其连接。
2.路由器和高速缓存器故障保护
对于路由基础结构组件来说存在几级恢复。(0级、1级、直到3级)。0级控制本地故障影响(即故障的路由器内),并且所述恢复也局限于故障的路由节点内。0级恢复取决于硬件冗余以便从硬件故障恢复。将路由器中的硬件资源复制。0级恢复的主要优势是恢复时间短并且透明性。1级控制LAN内的故障影响。1级恢复可以使用聚类技术依照IP故障转移实现。然而,一个故障的路由器到其邻点的隧道在恢复之后必须重建。因此,1级恢复透明度较低,并且比0级恢复花费时间长。
2级恢复的范围是在WAN之上通过远程备份路由器来恢复路由器故障,而没有影响网络拓扑,这可能引起复杂的重新配置以及数据丢失。2级可以通过分路由器以形成一个恢复集(例如主和备份路由器)来实现。一个路由器可以是一个组中的主路由器,还可以是另一个组中的备份路由器。所述主路由器与备份路由器交换路由和网络配置,并且当所述备份路由器检测到主路由器的故障时,它接管主路由器的功能。所述备份路由器通过确保它能够连接到所述故障的主路由器的大部分邻近主路由器,从而确保了故障的主路由器,而不确保到主路由器的链路。如果它不能确保,就触发3级恢复。
3级相反可以包含全系统范围的坐标恢复。当其他一切故障时可以使用3级恢复。检测到这种故障的路由器向所有下游路由器发送重启通知。接收所述通知的路由器挂起所有其他的恢复并且停止所有网络服务,并且丢弃重启消息中的所有多通道广播信息。在已经终止所有网络服务之后,所述路由器重启所有服务,包括对于多通道广播的构造树进程。网络中的任何故障通过较低级别的恢复过程加以处理。如果较低级别恢复无法应用,那么逐步升高恢复到下一较高级别。如果没有较低级别恢复工作,那么使用3级恢复。
3.可靠的隧道
为了防止在网络故障期间丢失消息,使用可靠的隧道来支撑路由节点之间的通信量。隧道在图3的叙述中描述了。在发送期间丢失的所有消息通过接收端检测,然后请发送者来重新发送丢失的消息。
虽然已经结合示例性实施例描述了本发明,但是很清楚,许多修改对于本领域技术人员是显而易见,并且这些应用意图是涵盖所有适用范围和其变化。例如,在不脱离本发明范围的情况下,可以使用各种形式的发行者机器、用户或者预订者机器、通道及其结构,以及基于内容的路由以及其他功能的硬件和软件实现方式。本发明的范围仅由权利要求书以及其等效限定。

Claims (164)

1.一种用于在发行-预订网络中传播过滤的方法,包括:
在网络中从一个或者多个节点处接收与对内容的预订相关的多个过滤,其中所述多个过滤中的一个过滤描述预订者感兴趣接收的事件的集合;
根据指定的标准来减少过滤数目;并且
在网络中传播数目减少的过滤,以供满足对内容的预订之用。
2.如权利要求1所述的方法,其中所述减少步骤包括下面两个步骤中的一个步骤或者两个步骤:
对多个过滤的一个或多个执行近似操作;并且
对多个过滤的一个或多个执行合并操作。
3.如权利要求2所述的方法,其中执行所述合并操作步骤包括确定合并的过滤是否会超出一个分组泄漏阈值。
4.如权利要求1所述的方法,其中所述接收步骤包括经由基于内容的路由网络接收多个过滤。
5.如权利要求1所述的方法,其中所述传播步骤包括使用从包括以下内容的列表中选出的多个特定过程的一个或多个过程来传播所述过滤,所述列表包括的内容如下:积极的传播方案;懒惰传播方案;响应广播广告方案;在网络拓扑计算后的方案;定期传播方案;故障修理期间过滤重新传播方案;在网络重新配置期间的过滤重新传播方案。
6.如权利要求1所述的方法,其中使用从以下列表中选出的多个特定机制的一个或多个来连接用于传播的源节点和目的地节点,所述列表包括:一跳到一跳、端到端、使用隧道以及使用传输控制协议。
7.如权利要求1所述的方法,还包括在网络中多个指定的位置的一个或多个位置处注入所述过滤。
8.如权利要求1所述的方法,其中所述传播步骤包括基于预定收件人的多个特定行为中的一个或多个行为来传播所述过滤,所述行为选自一个列表,所述列表包括:移动的、持久的以及临时的。
9.如权利要求1所述的方法,其中所述传播步骤包括基于一个或多个过滤的发件人的多个特定行为的一个或多个行为来传播所述过滤,所述行为选自一个列表,所述列表包括:移动的、持久的以及临时的。
10.如权利要求1所述的方法,还包括对一个或多个过滤执行多个特定处理步骤中的一个或多个步骤,所述处理步骤选择一个列表,所述列表包括:属性内容转换、表达式扩展、表达式转换、表示变换、编码/解码以及加密/解密。
11.如权利要求1所述的方法,还包括按照多个指定格式中的一个或多个格式来格式化包含一个或多个过滤的消息。
12.如权利要求1所述的方法,其中所述传播步骤包括按照从包含以下内容的列表中选出的多个特定策略或过程中的一个或多个策略或过程来传播所述过滤,所述内容包括:管理、维护、过滤持久性、性能增强策略、监控以及计帐。
13.如权利要求3所述的方法,其中所述传播步骤包括:
确定以过滤传播策略为基础的网络拓扑,其中所述基础的网络拓扑包括为了传播过滤必须满足的用于过滤传播的多个需求的一个或多个;以及
基于所确定的过滤传播策略需求的满足来传播数目减少的过滤。
14.如权利要求13所述的方法,其中所述确定的过滤传播策略是包括以下内容的列表中的一个,所述内容包括:积极的传播方案;懒惰传播方案;响应广播广告方案;在网络拓扑计算后的方案;定期传播方案;故障修理期间过滤重新传播方案;在网络重新配置期间的过滤重新传播方案。
15.如权利要求1所述的方法,其中所述接收步骤在网络中的核心路由器处接收多个过滤。
16.如权利要求1所述的方法,其中所述接收步骤在网络中的边缘路由器处接收多个过滤。
17.如权利要求1所述的方法,其中所述接收步骤在网络中发行者机器处接收多个过滤。
18.一种用于在发行-预订网络中传播过滤的路由器,包括用于执行如权利要求1所述方法的模块。
19.一种发行-预订网络,包括多个路由器,所述路由器包括用于执行如权利要求1所述方法的模块。
20.一种发行-预订网络,包括用户机器,所述用户机器包括用于执行如权利要求1所述方法的模块。
21.一种用于在发行-预订网络中传播过滤的设备,包括:
过滤接收模块,其中所述过滤接收模块在网络中接收与对内容的预订相关的多个过滤;
过滤减少模块,其中所述过滤减少模块基于特定标准减少过滤的数目;以及
过滤传播模块,其中所述过滤传播模块在发行-预订网络中传播数目减少的过滤以供满足预订之用。
22.如权利要求21所述的设备,其中所述过滤减少模块还包括:
过滤近似模块,其中所述过滤近似模块对多个过滤的一个或多个执行近似操作;以及
过滤合并模块,其中所述过滤合并模块合并多个过滤中的两个或多个过滤。
23.如权利要求22所述的设备,还包括:
过滤处理模块,其中所述过滤处理模块变换一个或多个过滤;以及
过滤编组模块,其中所述过滤编组模块基于所述过滤与其他过滤的接近度来对过滤进行编组。
24.一种用于在发行-预订网络中传播过滤的方法,包括以下步骤:
(a)在网络中节点处接收多个过滤;
(b)处理一个或多个所接收的过滤,以便减少过滤的数目;
(c)基于收件人行为规则确定是否传播过滤;以及
(d)传播所处理的过滤到网络中的下一节点。
25.如权利要求24所述的方法,还包括:
基于发件人行为规则确定是否传播过滤。
26.如权利要求24所述的方法,还包括确定在网络中下一节点之后是否存在另一个节点的步骤。
27.如权利要求24所述的方法,如果确定存在另一个节点,那么重复步骤(b)-(d)。
28.如权利要求24所述的方法,还包括确定是否有附加的过滤要在网络中下一节点处接收的步骤。
29.如权利要求28所述的方法,如果确定有附加的过滤要在网络中下一节点处接收,那么在新的节点处重复步骤(a)-(d)。
30.如权利要求24所述的方法,其中所述处理步骤包括一个或多个以下步骤:
简化所述过滤以便去除冗余谓词表达式;
对所述过滤求近似;
聚类所述过滤;
对所述过滤进行归类;并且
合并两个或多个过滤。
31.如权利要求30所述的方法,其中所述处理步骤还包括:
对过滤进行编组;并且,
其中所述求近似步骤对所述组中的过滤求近似,所述聚类步骤相对于过滤的接近度来定位并且收集所述组中的过滤,所述归类步骤对所述组中的过滤进行归类,并且所述合并步骤合并所述组中的过滤。
32.如权利要求31所述的方法,其中所述分组步骤只对来自于与主题有关的下行链路的过滤进行编组。
33.如权利要求30所述的方法,其中所述合并步骤包括确定合并的过滤是否将超出分组泄漏阈值。
34.如权利要求24所述的方法,其中所述处理步骤还包括:
对所述过滤求近似;并且,
归类并且合并求近似了的过滤。
35.如权利要求24所述的方法,其中网络中的节点包括存储的过滤,并且其中所述处理步骤处理所接收的过滤以及存储的过滤,以便减少过滤的数目。
36.如权利要求35所述的方法,其中所存储的过滤是预先接收并且处理的过滤。
37.如权利要求24所述的方法,其中所述接收步骤(a)在网络核心中的节点接收多个过滤。
38.一种用于在发行-预订网络中传播过滤的路由器,包括用于执行如权利要求24所述方法的模块。
39.一种发行-预订网络,包括多个路由器,所述路由器包括用于执行如权利要求24所述方法的模块。
40.一种发行-预订网络,包括用户机器,所述用户机器包括用于执行如权利要求24所述方法的模块。
41.一种用于在发行-预订网络中传播过滤的设备,包括:
过滤接收模块,其中所述过滤接收模块在网络中的节点处接收多个过滤;
过滤处理模块,其中所述过滤处理模块减少多个所接收的过滤的过滤数目;并且,
过滤传播模块,其中所述过滤传播模块基于收件人行为规则确定是否传播过滤,如果确定要传播,那么传播数目减少的过滤到网络中的下一节点。
42.如权利要求41所述的设备,其中所述过滤处理模块包括:
简化模块,其中所述简化模块简化过滤以便去除冗余谓词表达式。
43.如权利要求41所述的设备,其中所述过滤处理模块包括:
编组模块,其中所述编组模块依照对下行链路的选择对过滤进行编组。
44.如权利要求41所述的设备,其中所述过滤处理模块包括:
近似模块,其中所述近似模块对所述过滤求近似。
45.如权利要求41所述的设备,其中所述过滤处理模块包括:
归类模块,其中所述归类模块对过滤进行归类。
46.如权利要求41所述的设备,其中所述过滤处理模块包括:
聚类模块,其中所述聚类模块依照过滤彼此的接近度来聚类过滤。
47.如权利要求41所述的设备,其中所述过滤处理模块包括:
合并模块,其中所述合并模块合并过滤。
48.一种在发行-预订网络中的过滤传播方法,包括以下步骤:
一个路由器发送请求过滤的通知;
一个或多个下游路由器接收所述通知;
向更下游传播过滤请求;
等待来自于向其传播过滤请求的下游路由器的响应;
从向其传播过滤请求的下游路由器收集过滤;
处理传播的过滤以便减少过滤的数目;并且,
将数目减少的过滤向上游发送到请求过滤的路由器。
49.如权利要求48所述的方法,还包括:
每个下游路由器更新簿记数据库,以便反映出从路由器接收到过滤请求;并且
确定从其接收过滤请求的路由器是否已经得到服务。
50.一种发行-预订网络,包括多个路由器以及发行者机器,它们包括用于执行如权利要求48所述方法的模块。
51.一种在发行-预订网络中用于分组的基于内容的路由的方法,包括:
接收网络中的分组;
访问规定过滤在属性空间中覆盖范围的映射;
检查分组内容,以供对分组的路由决定之用;
使用所述映射来帮助对分组的路由决定;
基于检查的分组内容以及映射来做出路由决定;并且
基于所述路由决定路由所述分组。
52.如权利要求51所述的方法,其中做出路由决定步骤还包括将所述内容与相应预订相匹配。
53.如权利要求51所述的方法,其中所述匹配步骤包括使用多个合取过滤以便识别匹配。
54.如权利要求51所述的方法,其中所述匹配步骤包括执行属性测试。
55.如权利要求51所述的方法,其中做出路由决定步骤包括使用在线映射。
56.如权利要求51所述的方法,还包括离线或者利用后台处理来预先计算过滤覆盖范围。
57.如权利要求51所述的方法,还包括预先计算过滤覆盖范围,其中所述预先计算步骤包括对过滤表达式求近似并且减小过滤表达式。
58.如权利要求51所述的方法,还包括计算过滤覆盖范围,其中所述计算过滤覆盖范围包括在空间上把属性空间量化为包括网格单元的网格。
59.如权利要求58所述的方法,其中所述计算过滤覆盖范围包括:
对过滤覆盖范围信息和网格进行组合;并且
基于在每个网格单元中由过滤覆盖范围信息所断言的动作的合一来生成所述映射。
60.一种在发行-预订网络中用于分组的基于内容的路由的路由器,包括用于执行如权利要求51所述方法的模块。
61.一种包括如权利要求60所述的多个路由器的网络。
62.一种供分组的基于内容的路由之用的方法,包括:
(a)在空间上量化属性空间,其中所述在空间上量化步骤创建包括网格单元的网格;
(b)标识由多个过滤覆盖的网格单元,其中每个过滤具有至少一个断言的属性;和
(c)利用多个过滤所断言的动作规则来更新基于内容的路由(CBR)表,所述过滤覆盖在步骤(b)标识的网格单元。
63.如权利要求62所述的方法,还包括以下步骤:
确定是把一个或多个不同的过滤插入到节点中还是从节点去除;以及
基于是把一个或多个不同的过滤插入到节点中还是从节点去除的确定来在所述节点处执行步骤(b)和(c)。
64.如权利要求62所述的方法,还包括以下步骤:
接收发行的分组;并且
将所接收的分组绘制到所述网格。
65.如权利要求64所述的方法,其中对于绘制到由计算的过滤覆盖范围信息完全覆盖的网格单元的分组,所述方法还包括:
检查所述CBR表以便为绘制到完全覆盖的网格单元的分组确定路由动作。
66.如权利要求65所述的方法,还包括:
确定所述网络通信量是否在设置的阈值之上;并且
如果确定所述网络通信量在设置的阈值之上,那么基于确定的路由动作来路由发行的分组。
67.如权利要求66所述的方法,还包括:
如果确定网络通信量等于或低于设置的阈值,那么执行泄漏减少。
68.如权利要求67所述的方法,其中所述执行泄漏减少步骤包括一维的确切匹配。
69.如权利要求67所述的方法,其中所述执行泄漏减少步骤包括交叉乘积。
70.如权利要求67所述的方法,其中执行泄漏减少步骤包括依照有限数目和各种属性的置换的子集的全集来形成多个网格和CBR表。
71.如权利要求66所述的方法,还包括:
如果确定网络通信量等于或低于所述设置的阈值,那么确定是否存在任何减少的过滤谓词或者绘制到部分覆盖的网格单元的分组;
如果确定存在减少的过滤谓词或者绘制到部分覆盖的网格单元的分组,那么逐个谓词地执行过滤匹配,以便为任何减少的过滤谓词以及任何绘制到部分覆盖的网格单元的分组确定路由动作;并且
基于所确定的路由动作来路由所述分组。
72.如权利要求62所述的方法,还包括减小过滤表达式。
73.如权利要求62所述的方法,其中步骤(a)包括自适应地量化所述属性空间。
74.如权利要求73所述的方法,其中所述自适应地量化步骤基于分组分布信息来自适应地量化所述属性空间。
75.如权利要求62所述的方法,其中所述空间量化步骤基于分组分布信息来在空间上量化所述属性空间。
76.如权利要求62所述的方法,其中所述空间量化步骤基于分组分布信息来更新所述网格。
77.如权利要求62所述的方法,其中步骤(c)生成或者更新网格单元的动作位屏蔽,其中所述网格单元由计算机过滤覆盖范围信息覆盖。
78.如权利要求62所述的方法,其中步骤(c)生成或者更新网格单元的动作链接表,其中所述网格单元由计算机过滤覆盖范围信息覆盖。
79.如权利要求62所述的方法,还包括在CBR表中更新所覆盖的单元的参数,其中所述参数包括关于过滤分布的统计信息。
80.如权利要求62所述的方法,还包括收集关于分组分布的统计信息,其中所述分组分布信息用于步骤(a)。
81.如权利要求62所述的方法,其中步骤(a)至(c)被离线执行。
82.如权利要求62所述的方法,还包括执行基于内容的路由(CBR),其中只有CBR表以及CBR表中的规则被用于执行所述CBR。
83.一种用于在发行-预订网络中分组的基于内容的路由的设备,包括用于执行如权利要求62所述方法的模块。
84.如权利要求83所述的设备,其中所述设备是路由器。
85.一种包括多个路由器的网络,所述路由器包括用于执行如权利要求62所述方法的模块。
86.一种用于在发行-预订网络上实现查询-响应交互的方法,包括:
接收与数据集相关的广告;
接收代表逻辑表达式的查询;
将所述广告映射到相应的预订;
将所述查询映射到相应的通知;
使用用于实现所述广告的相应预订;以及
使用用于实现网络中的查询的相应通知。
87.如权利要求86所述的方法,其中所述映射广告步骤包括为所述广告执行一般情况映射。
88.如权利要求86所述的方法,其中所述映射查询步骤包括为所述查询执行析取查询映射。
89.一种用于在发行-预订网络上实现查询-响应交互的方法,包括:
创建预订以便注册广告;
发行通知以便分发查询;
使用所述预订来执行基于内容的路由(CBR)以便将所述通知推送给广告客户;以及,
将响应数据返回给请求者。
90.如权利要求89所述的方法,其中所述返回步骤使用广告客户和请求者之间的单播连接来实现。
91.如权利要求89所述的方法,其中所述返回步骤包括请求者为响应数据创建新的预订,并且使用新的预订执行CBR以便将响应数据推送给请求者。
92.如权利要求89所述的方法,其中所述创建步骤创建预订以便注册对一组数据的广告。
93.一种用于实现查询-响应交互的发行-预订网络,包括路由器、发行者机器以及预订者机器,它们包括用于执行如权利要求89所述方法的模块。
94.一种用于在发行-预订网络上实现查询-响应交互的方法,包括:
接收用于注册广告的预订;
接收用于分发查询的通知;
使用所述预订执行基于内容的路由,以便确定是否将所述通知转发到邻近节点;以及,
基于所述确定有选择地转发所述通知。
95.一种用于在发行-预订网络上实现查询-响应交互的设备,包括用于执行如权利要求94所述方法的模块。
96.如权利要求85所述的设备,其中所述设备包括路由器。
97.一种用于在发行-预订网络上实现查询-响应交互的方法,包括:
发行具有初始主题的通知;
发行具有过去主题的通知,其中具有过去主题的通知是用于以前发行的广告的;
提交对过去主题的预订,其中对过去主题的预订是对以前发行的广告的查询;以及
使用对过去主题的预订执行基于内容的路由,以便将以前发行的广告推送给消费者。
98.如权利要求97所述的方法,还包括提交取消对过去主题的预订的步骤。
99.如权利要求97所述的方法,还包括提交对初始主题的预订的步骤。
100.一种用于实现查询-响应交互的发行-预订网络,包括路由器、发行者机器以及预订者机器,它们包括用于执行如权利要求97所述方法的模块。
101.一种用于在发行-预订网络上实现查询-响应交互的方法,包括:
接收具有初始主题的通知以及具有过去主题的通知,其中具有过去主题的通知是用于以前发行的广告的;
接收对初始主题以及对过去主题的预订,其中对过去主题的预订是对以前发行的广告的查询;
使用对过去主题的预订执行基于内容的路由,以便确定是否将以前发行的广告转发到邻近节点;以及,
基于所述确定有选择地转发以前发行的广告。
102.一种用于在发行-预订网络上实现查询-响应交互的设备,包括用于执行如权利要求101所述方法的模块。
103.如权利要求101所述的设备,其中所述设备包括路由器。
104.一种用于在发行-预订网络上实现查询-响应交互的方法,包括:
高速缓存所发行的通知;
发行通知以便在高速缓存的发行通知中广告内容;
提交预订以便查询发行的通知;
重放来自于所述高速缓存器的高速缓存的发行通知;以及,
基于所述预订执行基于内容的路由(CBR),以便将重放的发行通知推送给消费者。
105.一种用于实现查询-响应交互的发行-预订网络,包括路由器、发行者机器以及预订者机器,它们包括用于执行如权利要求104所述方法的模块。
106.一种用于在发行-预订网络上实现查询-响应交互的方法,包括:
高速缓存发行的通知;
接收用于查询发行的通知的预订;
重放来自于所述高速缓存器的高速缓存的发行通知;以及,
使用所述用于查询发行的通知的预订执行基于内容的路由(CBR),以便确定是否转发高速缓存的发行通知到邻近节点;以及,
基于所述确定有选择地转发高速缓存的发行通知。
107.一种用于在发行-预订网络上实现查询-响应交互的设备,包括用于执行如权利要求106所述方法的模块。
108.如权利要求107所述的设备,其中所述设备包括路由器。
109.一种用于在发行-预订网络上实现查询-响应交互的方法,包括:
接收数据广告;
将所述数据广告变换为预订;
接收查询;
将所述查询变换为通知;
基于所述预订执行基于内容的路由(CBR)以便将所述通知推送给广告客户;以及,
基于所述通知将响应数据返回给请求者。
110.如权利要求109所述的方法,其中所述变换步骤包括执行本体变换。
111.如权利要求109所述的方法,其中所述返回步骤在广告客户和请求者之间使用单播连接来实现。
112.如权利要求109所述的方法,其中所述返回步骤包括请求者为响应数据创建新的预订,并且使用新的预订执行CBR以便将响应数据推送给请求者。
113.如权利要求109所述的方法,其中所述接收查询步骤接收对数据集的查询。
114.如权利要求109所述的方法,其中所述接收数据广告步骤接收对数据集的数据广告。
115.如权利要求109所述的方法,其中所述变换数据广告步骤包括对所述数据广告执行一般情况映射。
116.如权利要求109所述的方法,其中所述转换查询步骤包括为所述查询执行析取查询映射。
117.如权利要求109所述的方法,其中变换所述数据广告步骤包括在预订中定义属性,所述属性代表数据广告中属性以及表达式运算符的组合。
118.如权利要求109所述的方法,其中变换换所述查询步骤包括在所述通知中定义属性,所述属性代表查询中属性以及表达式运算符的组合。
119.一种用于实现查询-响应交互的发行-预订网络,包括路由器、发行者机器以及预订者机器,它们包括用于执行如权利要求109所述方法的模块。
120.一种用于在发行-预订网络上实现查询-响应交互的方法,包括:
接收查询;
将所述查询变换为通知;以及,
基于对所述通知以及变换为预订的数据广告执行的基于内容的路由来接收响应数据。
121.一种用于在发行-预订网络上实现查询-响应交互的设备,包括用于执行如权利要求120所述方法的模块。
122.如权利要求121所述的设备,其中所述设备包括预订者机器。
123.一种用于在发行-预订网络上实现查询-响应交互的方法,包括:
接收数据广告;
将所述数据广告变换为预订;
基于对所述预订以及所述通知执行的基于内容的路由来接收变换为通知的查询;以及
基于所述通知将响应数据转发给请求者。
124.一种用于在发行-预订网络上实现查询-响应交互的设备,包括用于执行如权利要求123所述方法的模块。
125.如权利要求124所述的设备,其中所述设备包括发行者机器。
126.一种用于在发行-预订网络上实现查询-响应交互的方法,包括:
接收通知,其中所述通知是从查询变换而来的;
执行基于内容的路由(CBR),以便确定是否将所述通知转发到邻近节点;以及
基于所述确定有选择地转发所述通知。
127.如权利要求126所述的方法,还包括接收预订,其中所述预订是从数据广告变换而来的,并且其中所述执行CBR步骤基于所述预订来执行CBR。
128.一种用于在发行-预订网络上实现查询-响应交互的设备,包括用于执行如权利要求126所述方法的模块。
129.如权利要求128所述的设备,其中所述设备包括路由器。
130.一种用于为经由发行-预订网络递送的消息提供持久的高速缓存的方法,包括以下步骤:
(a)在第一节点经由所述网络接收具有数据的消息;
(b)给所述数据加时间标记;
(c)在第一节点将所述数据高速缓存在高速缓存器中;以及
(d)使用基于内容的路由将所述消息路由至第二节点。
131.如权利要求130所述的方法,还包括以下步骤:
(e)在第二节点重复步骤(a)至(d),其中在第二节点将所述数据高速缓存在高速缓存器中。
132.如权利要求130所述的方法,还包括以下步骤:
确定自从高速缓存步骤(c)以来时间粒度G是否已经过去;以及
基于G已经过去的确定、将高速缓存的数据从高速缓存器移动到盘上。
133.如权利要求130所述的方法,还包括以下步骤:
确定自从对于最后的高速缓存数据块的高速缓存步骤(c)以来持久的时间帧T是否已经过去;以及
基于对于最后的高速缓存数据块T已经过去的确定来删除高速缓存的数据。
134.如权利要求133所述的方法,其中T是基于所述数据与其相关联的通道而设置的。
135.如权利要求130所述的方法,其中所述第一节点包括智能路由器,并且接收步骤(a)在智能路由器接收消息。
136.如权利要求135所述的方法,其中所述智能路由器包括高速缓存管理器,并且所述高速缓存管理器执行步骤(b)以及(c)。
137.如权利要求130所述的方法,其中所述第二节点包括预订者机器。
138.一种用于为经由发行-预订网络递送的消息提供持久的高速缓存的路由器,包括用于执行如权利要求130所述方法的模块。
139.一种用于提供消息的持久高速缓存的发行-预订网络,包括多个节点,所述节点包括用于执行如权利要求131所述方法的模块。
140.一种用于为经由发行-预订网络递送的消息提供持久的高速缓存的方法,包括以下步骤:
经由所述发行-预订网络接收具有数据的消息;
给所述数据加时间标记;
在高速缓存器中高速缓存所述数据;
确定自从高速缓存步骤以来时间粒度G是否已经过去;
基于G已经过去的确定、将高速缓存的数据移动到盘上;
确定自从对于最后的高速缓存数据块的高速缓存步骤以来持久的时间帧T是否已经过去;以及
基于对于最后的高速缓存数据块T已经过去的确定来从所述盘中删除高速缓存的数据。
141.如权利要求140所述的方法,还包括确定是否已经接收了对高速缓存数据的请求。
142.如权利要求140所述的方法,其中对高速缓存数据的请求是从用户机器接收的。
143.如权利要求140所述的方法,还包括基于已经接收了对高速缓存数据的请求的确定来检索高速缓存的数据。
144.如权利要求143所述的方法,其中所述检索步骤包括启用上游高速缓存器,并且从上游高速缓存器检索高速缓存的数据。
145.如权利要求144所述的方法,还包括对从上游高速缓存器检索的高速缓存数据执行重复抑制。
146.如权利要求144所述的方法,其中所述检索步骤从用户机器代理获得上游高速缓存器的列表。
147.如权利要求143所述的方法,还包括将高速缓存数据转送到骨干路由器以便路由到用户机器的步骤。
148.如权利要求140所述的方法,还包括为高速缓存的数据做索引的步骤。
149.如权利要求148所述的方法,其中所述做索引步骤按照通道ID、主题和/或时间戳来为高速缓存的数据做索引。
150.如权利要求140所述的方法,还包括在上游路由节点执行接收、做时间标记以及高速缓存步骤的步骤。
151.如权利要求140所述的方法,还包括重复所述接收步骤的步骤。
152.一种用于为经由发行-预订网络递送的消息提供持久的高速缓存的路由器,包括用于执行如权利要求140所述方法的模块。
153.一种用于提供持久高速缓存消息的发行-预订网络,包括第一节点以及第二节点,其中第一节点位于第二节点上游,并且所述第一节点和第二节点均包括用于执行如权利要求145所述方法的模块。
154.一种用于为经由发行-预订网络递送的消息提供持久的高速缓存的方法,包括以下步骤:
(a)经由所述网络在多个上游节点接收具有数据的多个消息;
(b)给所述数据加时间标记;
(c)在多个上游节点的一个或多个节点处把所述数据高速缓存在高速缓存器中;
(d)使用基于内容的路由将所述消息路由至边缘节点;以及,
(e)在边缘节点重复步骤(a)至(c),其中在第二节点处将所述数据高速缓存在高速缓存器中。
155.如权利要求154所述的方法,还包括使用基于内容的路由将至少一个消息从边缘节点路由到预订者机器的步骤。
156.如权利要求155所述的方法,还包括所述边缘节点接收来自于预订者机器的对高速缓存数据的请求的步骤。
157.如权利要求156所述的方法,还包括以下步骤:
响应所述请求来确定高速缓存数据的时间量以便检索;以及,
基于高速缓存数据的时间标记来检索所确定的高速缓存数据的时间量。
158.如权利要求157所述的方法,其中根据所述请求确定所述时间量,其中所述请求包括将检索的高速缓存数据的请求的时间量。
159.如权利要求157所述的方法,其中通过计算预订者机器的断开连接时间来确定所述时间量,其中所述断开连接时间是预订者机器与发行-预订网络断开连接的时间量。
160.如权利要求156所述的方法,还包括确定步骤,用于确定在多个上游节点的一个或多个节点存储至少一些所请求的高速缓存数据。
161.如权利要求160所述的方法,还包括所述边缘节点接收来自于预订者机器的上游节点列表的步骤。
162.如权利要求160所述的方法,还包括以下步骤:
将对高速缓存数据的请求发送到多个上游节点的一个或多个;
从多个上游节点的一个或多个检索所请求的高速缓存数据;以及,
路由所检索到的数据至预订者机器。
163.如权利要求162所述的方法,还包括对所检索到的数据执行重复抑制。
164.一种用于提供持久高速缓存消息的发行-预订网络,包括多个上游节点以及边缘节点,其中所述节点包括用于执行如权利要求154所述方法的模块。
CNA2008100915804A 2002-03-28 2003-03-28 在发行-预订网络中使用的方法、路由器、设备和该网络 Pending CN101312457A (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US36910502P 2002-03-28 2002-03-28
US60/368870 2002-03-28
US60/369105 2002-03-28
US60/368833 2002-03-28
US60/368831 2002-03-28
US60/369832 2002-04-03
US60/447782 2003-02-19

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CNB038121808A Division CN100458767C (zh) 2002-03-28 2003-03-28 用于在公共预订网络中可靠并且高效地进行基于内容的路由、查询以及响应的方法和设备

Publications (1)

Publication Number Publication Date
CN101312457A true CN101312457A (zh) 2008-11-26

Family

ID=40100877

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2008100915804A Pending CN101312457A (zh) 2002-03-28 2003-03-28 在发行-预订网络中使用的方法、路由器、设备和该网络

Country Status (1)

Country Link
CN (1) CN101312457A (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102271147A (zh) * 2010-06-03 2011-12-07 北京神州绿盟信息安全科技股份有限公司 信息递送系统和方法
CN102902595A (zh) * 2011-10-21 2013-01-30 微软公司 注入组合查询的单子评估
CN104090914A (zh) * 2014-06-10 2014-10-08 广东九联科技股份有限公司 一种自动屏蔽广告信息的无线路由器及其屏蔽方法
CN104137494A (zh) * 2012-02-29 2014-11-05 瑞典爱立信有限公司 使用基于树的二进制模式匹配的数据分组分类的复合屏蔽和熵
CN104471427A (zh) * 2012-07-17 2015-03-25 宝洁公司 连接的消费装置的家庭网络
CN104636502A (zh) * 2015-03-10 2015-05-20 浪潮集团有限公司 一种查询系统的数据加速查询方法
CN104919830A (zh) * 2012-12-31 2015-09-16 T移动美国公司 用于具有多载波功能的设备的服务偏好
CN105659555A (zh) * 2013-06-20 2016-06-08 高地技术解决方案公司 在屏幕投影室中的终端之间互动应用的通信方法
US10542122B2 (en) 2011-10-11 2020-01-21 Microsoft Technology Licensing, Llc Event service for local client applications through local server
US10579442B2 (en) 2012-12-14 2020-03-03 Microsoft Technology Licensing, Llc Inversion-of-control component service models for virtual environments
US10715425B2 (en) 2012-12-31 2020-07-14 T-Mobile Usa, Inc. Intelligent routing of network packets on telecommunication devices
CN111950038A (zh) * 2020-08-12 2020-11-17 广东电网有限责任公司佛山供电局 消除低概率信号的芯片硬件木马设计方法及木马生成平台

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102271147A (zh) * 2010-06-03 2011-12-07 北京神州绿盟信息安全科技股份有限公司 信息递送系统和方法
CN102271147B (zh) * 2010-06-03 2013-12-25 北京神州绿盟信息安全科技股份有限公司 信息递送系统和方法
US10542122B2 (en) 2011-10-11 2020-01-21 Microsoft Technology Licensing, Llc Event service for local client applications through local server
US9075672B2 (en) 2011-10-21 2015-07-07 Microsoft Technology Licensing, Llc Monadic evaluation of injected query compositions
CN102902595B (zh) * 2011-10-21 2015-04-08 微软公司 注入组合查询的单子评估
US9503505B2 (en) 2011-10-21 2016-11-22 Microsoft Technology Licensing, Llc Monadic evaluation of injected query compositions
CN102902595A (zh) * 2011-10-21 2013-01-30 微软公司 注入组合查询的单子评估
CN104137494A (zh) * 2012-02-29 2014-11-05 瑞典爱立信有限公司 使用基于树的二进制模式匹配的数据分组分类的复合屏蔽和熵
CN104471427A (zh) * 2012-07-17 2015-03-25 宝洁公司 连接的消费装置的家庭网络
US10579442B2 (en) 2012-12-14 2020-03-03 Microsoft Technology Licensing, Llc Inversion-of-control component service models for virtual environments
US11757765B2 (en) 2012-12-31 2023-09-12 T-Mobile Usa, Inc. Intelligent routing of network packets on telecommunication devices
US10715425B2 (en) 2012-12-31 2020-07-14 T-Mobile Usa, Inc. Intelligent routing of network packets on telecommunication devices
CN104919830A (zh) * 2012-12-31 2015-09-16 T移动美国公司 用于具有多载波功能的设备的服务偏好
CN105659555A (zh) * 2013-06-20 2016-06-08 高地技术解决方案公司 在屏幕投影室中的终端之间互动应用的通信方法
CN104090914A (zh) * 2014-06-10 2014-10-08 广东九联科技股份有限公司 一种自动屏蔽广告信息的无线路由器及其屏蔽方法
CN104636502A (zh) * 2015-03-10 2015-05-20 浪潮集团有限公司 一种查询系统的数据加速查询方法
CN111950038A (zh) * 2020-08-12 2020-11-17 广东电网有限责任公司佛山供电局 消除低概率信号的芯片硬件木马设计方法及木马生成平台
CN111950038B (zh) * 2020-08-12 2021-05-18 广东电网有限责任公司佛山供电局 消除低概率信号的芯片硬件木马设计方法及木马生成平台

Similar Documents

Publication Publication Date Title
CN100458767C (zh) 用于在公共预订网络中可靠并且高效地进行基于内容的路由、查询以及响应的方法和设备
US7551629B2 (en) Method and apparatus for propagating content filters for a publish-subscribe network
US7376092B2 (en) Method and apparatus for implementing persistent and reliable message delivery
US8521770B1 (en) Method for distributed RDSMS
US7627603B2 (en) Method and apparatus for implementing query-response interactions in a publish-subscribe network
Carzaniga et al. Achieving scalability and expressiveness in an internet-scale event notification service
US7672275B2 (en) Caching with selective multicasting in a publish-subscribe network
CN1701304B (zh) 在发布-订购网络中通过有效载荷检测进行分组路由的系统、方法和装置
US7653753B2 (en) Method and apparatus for content-based packet routing using compact filter storage and off-line pre-computation
US8386633B2 (en) Method and system for processing raw financial data streams to produce and distribute structured and validated product offering data to subscribing clients
US6910033B2 (en) Method for storing Boolean functions to enable evaluation, modification, reuse, and delivery over a network
US20030169749A1 (en) Method and apparatus for content-based routing and filtering at routers using channels
US20030195946A1 (en) Method and apparatus for reliable publishing and subscribing in an unreliable network
US20040078450A1 (en) Packet routing via payload inspection for digital content delivery
US20020046043A1 (en) Method and system for processing raw financial data streams to produce and distribute structured and validated product offering objects
CN101312457A (zh) 在发行-预订网络中使用的方法、路由器、设备和该网络
CN100438398C (zh) 在发布-订单网络中通过有效载荷检查和订单处理的包路由
US20030165139A1 (en) Packet routing via payload inspection
US20030154302A1 (en) Method for sending and receiving a boolean function over a network
Arcieri et al. Coherence maintainance in cooperative information systems: the Access Key Warehouse approach
US7411954B2 (en) Efficient implementation of wildcard matching on variable-sized fields in content-based routing
Papaemmanouil et al. Semantic multicast for content-based stream dissemination
Yang et al. Resource discovery in federated systems with voluntary sharing
Shen Techniques for building a scalable and reliable distributed content-based publish/subscribe system
KR20040039288A (ko) 게시-가입 네트워크에서의 페이로드 조사 및 가입 처리를통한 패킷 라우팅

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20081126