CN1701304B - Systems, methods and apparatus for packet routing via payload inspection in a publish-subscribe network - Google Patents
Systems, methods and apparatus for packet routing via payload inspection in a publish-subscribe network Download PDFInfo
- Publication number
- CN1701304B CN1701304B CN038212064A CN03821206A CN1701304B CN 1701304 B CN1701304 B CN 1701304B CN 038212064 A CN038212064 A CN 038212064A CN 03821206 A CN03821206 A CN 03821206A CN 1701304 B CN1701304 B CN 1701304B
- Authority
- CN
- China
- Prior art keywords
- network
- route
- grouping
- order
- cache
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/16—Multipoint routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/52—Multiprotocol routers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/61—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/185—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with management of multicast group membership
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1895—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for short real-time information, e.g. alarms, notifications, alerts, updates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
Description
对相关申请的引用References to related applications
本申请通过引用结合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),并且通过引用将它们全部结合在此。This application is incorporated by reference and claims priority to US Provisional Application No. 60/394631, entitled "Packet Routing for Quality of Service Management via Payload Inspection," filed July 8, 2002. This patent application is also the following U.S. Patent Application No. 10/199,356, entitled "Packet Routing Through Payload Inspection," both filed July 19, 2002, entitled "Content-Based Routing at Routers Employing Channels" and Filtering Method and Apparatus, U.S. Patent Application No. 10/199,368, entitled "Method of Sending and Receiving Boolean Functions Over a Network," U.S. Patent Application No. 10/199,439, entitled "Used for Storing Boolean Functions in U.S. Patent Application No. 10/199369 for a method of implementing evaluation, modification, reuse, and delivery over a network, and U.S. Patent Application entitled "Efficient Implementation of Wildcard Matching on Variable-Sized Fields in Connection-Based Routing" Continuation-in-Part (CIP) of Application No. 10/199388, which is hereby incorporated by reference in its entirety.
本申请还通过引用结合了以下于2003年3月28日提交的美国专利申请,并作为它们的CIP:题为“用于在不可靠的网络中进行可靠发布和订购的方法和装置”的申请No.10/400671、题为“采用紧凑过滤存储和离线预计算进行基于内容的分组路由的方法和装置”的申请No.10/400465、题为“用于在发布-订购网络中实现查询响应交互的方法和装置”的申请No.10/400453、题为“实现持续可靠的消息交付的方法和装置”的申请No.10/400462以及题为“针对发布-订购网络传播内容过滤器的方法和装置”申请No.10/400444。This application also incorporates by reference the following U.S. patent applications filed March 28, 2003 and as their CIP: Application entitled "Method and Apparatus for Reliable Publishing and Ordering in an Unreliable Network" Application No. 10/400671, entitled "Method and Apparatus for Content-Based Packet Routing Using Compact Filter Storage and Offline Precomputation," and Application No. 10/400465, entitled "For Implementing Query Response in Publish-Subscribe Networks" Application No. 10/400453 entitled "Method and Apparatus for Interaction", Application No. 10/400462 entitled "Method and Apparatus for Enabling Continuous and Reliable Message Delivery", and Application No. 10/400462 entitled "Propagation of Content Filters for Publish-Subscribe Networks and devices" Application No. 10/400444.
技术领域technical field
本发明涉及一种基于分组中的有效载荷的检测在网络核心中路由该分组用以提供告警服务的方法和装置。The present invention relates to a method and apparatus for routing packets in a network core to provide an alert service based on the detection of the payload in the packets.
背景技术Background technique
如今网络带宽正按指数规律急剧递增。然而网络的基础设施(包括路由器、服务器、守护程序和协议等)仍在使用相对较旧的技术。因此因特网应用软件和网络路由器发展速度跟不上带宽增加的速度。同时,越来越多的设备和应用软件变为网络使能的。这些设备和应用软件给网络节点施加的负载已大大增加。网络负载和应用软件数量的增加使得实现和维护网络应用软件变得更为复杂。因此,网络带宽的增加以及网络设备和应用软件的普遍使用使得越来越难在旧的网络基础设施中路由和传输数据,特别是在向订户发布内容时尤其如此。Today's network bandwidth is increasing exponentially. However, the infrastructure of the network (including routers, servers, daemons, protocols, etc.) is still using relatively old technology. Therefore, the development speed of Internet application software and network routers cannot keep up with the speed of bandwidth increase. At the same time, more and more devices and applications are becoming network-enabled. The load imposed by these devices and application software on network nodes has increased significantly. The increase in network load and the number of applications makes implementing and maintaining network applications more complex. Consequently, the increase in network bandwidth and the ubiquitous use of network devices and application software has made it increasingly difficult to route and transmit data across legacy network infrastructure, especially when distributing content to subscribers.
一种用于使网络将信息从服务器推向客户机的模型是发布-订购形式。在这一模型中,服务器成为简单的信息发布方,而不考虑哪个客户机可能对信息感兴趣或客户机在网络中的位置。客户机成为信息的订户,当信息可得时便接收所交付的信息,而可以不考虑在网络中发布它的具体位置。网络则负责:高效地将所发布的信息路由给订户、将信息与有效订购匹配、并以对发布方和订户均透明的方式执行上述操作。One model for having a network push information from servers to clients is the publish-subscribe format. In this model, servers become simple publishers of information, regardless of which clients might be interested in the information or where the clients are on the network. Clients become subscribers to information, receiving delivered information as it becomes available, regardless of where in the network it was published. The network is responsible for efficiently routing published information to subscribers, matching information to valid subscriptions, and doing so in a manner that is transparent to both publishers and subscribers.
由于在发布-订购模型中服务器的复杂度大大降低,因此重要的服务器与不重要的客户机之间变得没有差别,或者可以将它们合并为或者是发布方或者是订户、或者是二者的对等物。对于在对等物之间进行发布-订购形式的交互,许多类型的应用软件具有自然亲和性。许多这些应用软件所基于的共同主题是所发布和订购的信息是以事件形式的。例如,投资者购买或出售股票,使得股票价格变化。高速公路上发生交通事故,使得高速公路上交通堵塞。软件系统中的安全突破口被发现,使得要为软件使用者开发补丁。一个玩家在网络游戏中开火射击,使得另一玩家操纵的虚拟人物死亡。所有这些具有代表性的现象都是大多数订户感兴趣的事件,并且可通过网络传播以通知那些订户发生了这些事件。因此,事件只不过是关于在网络上某地某时发生的可能引起兴趣的某事的独立简洁的信息。Since the server complexity is greatly reduced in the publish-subscribe model, there is no distinction between important servers and unimportant clients, or they can be combined as either publishers or subscribers, or both. equivalent. Many types of application software have a natural affinity for publish-subscribe style interactions between peers. A common theme on which many of these applications are based is that the information published and subscribed is in the form of events. For example, an investor buys or sells a stock, causing the stock price to change. A traffic accident occurred on the highway, causing traffic jams on the highway. Security breaches in software systems are discovered, leading to the development of patches for software users. One player shoots in an online game, causing the death of the virtual character manipulated by another player. All of these representative phenomena are events of interest to most subscribers and can be propagated through the network to notify those subscribers that these events have occurred. Thus, an event is nothing more than a self-contained succinct piece of information about something that happened somewhere and at a time on the network that might be of interest.
为了命令网络在何处按发布-订购模型发送所发布的内容,一般由服务器或发布方执行网络路由决策。发布方存储关于它发布的内容的订购。当接收或产生新的内容时,发布方便将该内容与每个订购相比较以识别任何匹配之处。如果该内容(事件)满足订购,则发布方通过网络将内容推向相应的订户。这种常规的发布-订购模型给发布方造成巨大的负担,特别是在越来越多的设备成为网络使能以及在订购数量增加时,尤其如此。In order to instruct the network where to send published content in a publish-subscribe model, network routing decisions are typically performed by the server or publisher. A publisher stores subscriptions for the content it publishes. As new content is received or generated, the publishing facility compares that content to each subscription to identify any matches. If the content (event) satisfies the subscription, the publisher pushes the content to the corresponding subscribers through the network. This conventional publish-subscribe model places a huge burden on the publisher, especially as more and more devices become network-enabled and as the number of subscriptions increases.
随着因特网中无数应用愈加汇聚,利用事件通知的可能性将变得无穷止尽。然而,这些可能性需要一种更有效的方式来作出路由决策并确定何时事件满足订购,从而减轻发布方的负担。因此,普遍的持久事件通知服务可为因特网应用以及其他应用和实现提供极大的增值效益。As countless applications converge on the Internet, the possibilities for leveraging event notifications will become endless. However, these possibilities require a more efficient way of making routing decisions and determining when events satisfy subscriptions, thereby reducing the burden on the publisher. Therefore, a pervasive persistent event notification service can provide great value-added benefits for Internet applications as well as other applications and implementations.
发明内容Contents of the invention
一种方法和装置提供了在网络中进行路由分组用以提供告警服务。此方法和装置克服了现有技术的缺陷。该方法和装置的一个优点包括在处理和路由视频剪辑时显著减小了网络负担。另一个优点包括减小了路由视频剪辑的带宽需求。还有一个优点包括减少了数字视频录像机局域网上的业务量。A method and apparatus provide for routing packets in a network to provide alerting services. The method and device overcome the disadvantages of the prior art. One advantage of the method and apparatus includes a significant reduction in network load when processing and routing video clips. Another advantage includes reduced bandwidth requirements for routing video clips. Yet another advantage includes reduced traffic on the LAN of the digital video recorder.
在实现这些和其他优点的实施例中,接收具有首部部分和有效载荷部分的分组,其包含有与来自特定摄像机的视频剪辑有关的信息。在网络核心中检测有效载荷部分,用于确定是否以及如何路由分组给订户来自特定摄像机的信息,并基于检测对此分组有选择地进行路由。这些和其它优点还可通过例如具有完成这些步骤的模块的装置来实现。In an embodiment that achieves these and other advantages, a packet is received having a header portion and a payload portion containing information related to a video clip from a particular camera. The payload portion is detected in the network core for determining whether and how to route a packet to a subscriber for information from a particular camera, and based on detection this packet is selectively routed. These and other advantages can also be realized by, for example, an apparatus having modules to perform these steps.
这些和其它优点还可利用例如在网络中路由消息来提供告警服务的方法来实现。此方法包括:接收具有首部部分、至少一个主体和至少一个属性的消息,属性涉及来自特定摄像机的视频剪辑;从消息中检索主体和属性;根据主体检索订购;以及为了确定是否以及如何路由消息给订户来自特定摄像机的信息,在网络核心中将属性应用于订购。这些和其它优点还可通过例如包括执行这些步骤的模块的装置来实现。These and other advantages may also be realized using methods such as routing messages in a network to provide alerting services. The method includes: receiving a message having a header portion, at least one body, and at least one attribute, the attribute relating to a video clip from a particular camera; retrieving the body and attributes from the message; retrieving an order from the body; and in order to determine whether and how to route the message to Subscriber information from a specific camera, attributes are applied to the subscription in the core of the network. These and other advantages may also be realized by, for example, an apparatus comprising means for performing these steps.
同样,这些和其它优点可利用例如在网络中路由分组来提供告警服务的方法来实现。此方法包括:接收具有首部部分和有效载荷的分组,其中有效载荷部分包涉及特定告警服务的事件的信息;在网络核心中检测分组的有效载荷部用以确定是否以及如何路由分组给订户告警服务信息;以及基于检测有选择地路由该分组。这些和其它优点还可通过例如包括执行这些步骤的模块的装置来实现。Again, these and other advantages can be achieved using methods such as routing packets in a network to provide alerting services. The method includes: receiving a packet having a header portion and a payload, wherein the payload portion includes information related to an event of a particular alerting service; examining the payload portion of the packet in a network core to determine whether and how to route the packet to the subscriber alerting service information; and selectively routing the packet based on the detection. These and other advantages may also be realized by, for example, an apparatus comprising means for performing these steps.
附图说明Description of drawings
附图结合于并组成此说明的一部分,它与说明书一起用于阐述本发明的优点和原理。The accompanying drawings are incorporated in and constitute a part of this specification, and together with the description, serve to explain the advantages and principles of the invention.
图1是说明在网络核心中进行智能路由的图。Figure 1 is a diagram illustrating intelligent routing in the network core.
图2是说明发布方和订户的智能路由器的图。FIG. 2 is a diagram illustrating an intelligent router for publishers and subscribers.
图3是说明智能路由器和主干路由器的网络基础设施的图。FIG. 3 is a diagram illustrating network infrastructure of intelligent routers and backbone routers.
图4是智能路由器的硬件部件图。FIG. 4 is a diagram of hardware components of an intelligent router.
图5是发布方和用户机的图。Figure 5 is a diagram of a publisher and a user machine.
图6是智能路由器的信道管理器的图。Figure 6 is a diagram of a channel manager of an intelligent router.
图7是在用户机中用于将该机与智能路由器接口的软件部件图。Figure 7 is a diagram of the software components in a user machine for interfacing the machine with an intelligent router.
图8是智能路由器的软件部件图。FIG. 8 is a software component diagram of an intelligent router.
图9是消息的分组结构图。Fig. 9 is a packet structure diagram of a message.
图10是发布方方法的流程图。Figure 10 is a flowchart of a publisher method.
图11是订户方法的流程图。Figure 11 is a flowchart of a subscriber method.
图12是信道和订户屏幕的图。Figure 12 is a diagram of the Channels and Subscribers screen.
图13是基于内容的路由方法的流程图。Fig. 13 is a flowchart of a content-based routing method.
图14是高速缓存方法的流程图。Figure 14 is a flowchart of a caching method.
图15是说明高速缓存索引的图。Fig. 15 is a diagram illustrating a cache index.
图16是输出消息的代理方法的流程图。Figure 16 is a flowchart of a proxy method for outputting messages.
图17是输入消息的代理方法的流程图。Figure 17 is a flowchart of a proxy method for incoming messages.
图18是说明一个消息编码例子的图。Fig. 18 is a diagram illustrating an example of message encoding.
图19是存储订购的数据库结构的图。Fig. 19 is a diagram of a database structure for storing orders.
图20是通配符方法的流程图。Figure 20 is a flowchart of the wildcard method.
图21是数字视频监视系统的图。Figure 21 is a diagram of a digital video surveillance system.
图22是说明在两步方法中用于数字视频监视系统的代理的图。Figure 22 is a diagram illustrating an agent for a digital video surveillance system in a two-step approach.
图23是数字内容交付的体系结构图。Figure 23 is an architectural diagram of digital content delivery.
图24是说明数字内容交付阶段1的体系结构图。FIG. 24 is an architectural
图25是说明数字内容交付阶段2的体系结构图。FIG. 25 is an architectural
图26是说明服务质量管理的多个外部链接的图。Fig. 26 is a diagram illustrating a plurality of external links of quality of service management.
图27是说明服务质量管理的单个外部链接的图。Fig. 27 is a diagram illustrating a single external link of quality of service management.
图28是说明在ISP外部过滤和动态缓存的图。Figure 28 is a diagram illustrating filtering and dynamic caching outside the ISP.
图29是网络中的高速缓存器图。Figure 29 is a diagram of caches in the network.
图30是上游路由器中的备用持久高速缓存器图。Figure 30 is a diagram of a backup persistent cache in an upstream router.
图31是说明高速缓存与代理服务器和路由器之间交互的图。Figure 31 is a diagram illustrating the interaction between caches and proxy servers and routers.
图32说明创建关于订购的高速缓存的图。Figure 32 illustrates a diagram for creating a cache on an order.
图33是索引树的图。Fig. 33 is a diagram of an index tree.
图34是说明从多个高速缓存器中检索的图。Fig. 34 is a diagram illustrating retrieval from a plurality of caches.
图35是说明高速缓存管理器与系统中其它模块交互的图。Figure 35 is a diagram illustrating the interaction of the cache manager with other modules in the system.
图36是高速缓存器的文件目录结构图。Fig. 36 is a file directory structure diagram of the cache.
具体实施方式Detailed ways
概况overview
因特网级或其它分布式网络级的事件通知系统提供了强大而灵活的发布-订购网络实现的应用。在此系统中,应用程序利用事件通知应用程序接口(API)来发布通知和/或订购并接收关于网络内部发生的事件的通知。An Internet-scale or other distributed network-level event notification system provides a powerful and flexible publish-subscribe network implementation. In this system, applications utilize an event notification application programming interface (API) to publish notifications and/or subscribe to and receive notifications about events occurring within the network.
系统中的通知有一主体,它是一字符串或其它区分该通知所封装的信息类型的结构。通知还用一组包含特定于通知的信息的属性来完成。例如,应用可利用主体quote.nyse和属性符号和价格发布关于在纽约证券交易所交易的通知。该应用可发布个别有特殊属性值的通知,例如符号为SNE(索尼公司的证券报价机符号),价格为85.25。在多数情况下,如果通知中不是所有的属性都被预定义,那么所有通知中的属性为同一主体类。但是,为了提供额外的特定于事件的信息,发布方可在每个通知或其它基础上增加任意的属性。因此,并不是所有的或甚至任何属性都需要预定义。Notifications in the system have a body, which is a string or other structure that distinguishes the type of information that the notification encapsulates. Notifications are also completed with a set of properties that contain notification-specific information. For example, an application may post a notification about trading on the New York Stock Exchange with the subject quote.nyse and the attributes symbol and price. The application can issue individual notifications with special attribute values, for example, the symbol is SNE (Sony's stock ticker symbol), and the price is 85.25. In most cases, if not all properties in a notification are predefined, then the properties in all notifications are of the same body class. However, to provide additional event-specific information, publishers MAY add arbitrary attributes on a per-notification or other basis. Therefore, not all or even any properties need to be predefined.
在这一系统中,订户并不限于仅对主体或整个信道订购。下面进一步解释和定义信道。它们可包括一个分级结构,此分级结构指定例如一个主体字段和一级或多级相关的子字段(子主体)。因此,订户通过在通知的属性上指定基于内容的过滤器,可提供更适合的兴趣表示。例如,订户可能会订购具有符号为SNE以及价格超过90.00的主体quote.nyse的所有通知(表明或许是订户所拥有股票的出售时机)。所有与订购相匹配的通知可通过回叫或订户在登记订购时或其它时候提供的其它类型功能而交付给订户。可将一个订购分解到许多过滤器中。In this system, subscribers are not limited to subscribing only to subjects or to entire channels. Channels are further explained and defined below. They may include a hierarchy specifying, for example, a subject field and one or more levels of related subfields (subsubjects). Thus, subscribers can provide more appropriate representations of interest by specifying content-based filters on attributes of notifications. For example, a subscriber might subscribe to all notifications with a symbol of SNE and a subject quote.nyse with a price above 90.00 (indicating perhaps a sell opportunity for a stock owned by the subscriber). All notifications matching a subscription may be delivered to the subscriber through a callback or other type of functionality provided by the subscriber when registering for the subscription or at other times. A subscription can be broken down into many filters.
回叫可执行许多计算,包括给终端写消息或发送电子邮件这样简单的操作,更为复杂一点的比如发起股票的出售,还要复杂一点的比如发起新的发布-订购行为(例如,用在价格为75.00时买进的新的订购替代现有订购,或者发布订户的有价证券已被更改的新的通知)。Callbacks can perform many computations, ranging from something as simple as writing a message to a terminal or sending an e-mail, to something more complex like initiating a sale of a stock, to something more complex like initiating a new publish-subscribe action (e.g., used in A new subscription bought at the price of 75.00 replaces an existing subscription, or a new notification is issued that the subscriber's securities have been changed).
例如,在应用发布和订购行为中是由代理协助的。代理可能利用代理服务器或用它来实现。代理在被使用时用以提供网络连接,以便输出通知和订购以及向订户交付输入的匹配通知。一旦通知进入网络,该系统的网络的路由器则将通知传播给所有其订购匹配此通知的订户。一种实现此传播的方法是向网络中的所有点广播该通知,然后让应用代理决定该通知是否与订户有关。然而,这是不需要扩展的方法,网络通常很快地受到过量的消息业务量载荷,特别是当存在大量激活且冗长的发布方时,尤其如此。即便是有足够的带宽,订户也会因为需要处理很多通知而承受很重的负担。For example, in application publishing and ordering activities are assisted by agents. A proxy may utilize or be implemented with a proxy server. Brokers, when used, provide network connectivity for outgoing notifications and ordering and delivery of incoming matching notifications to subscribers. Once a notification enters the network, the routers of the system's network propagate the notification to all subscribers whose subscriptions match the notification. One way to achieve this propagation is to broadcast the notification to all points in the network, and let the application agent decide whether the notification is relevant to the subscriber. However, this is an approach that does not need to scale, and the network is often quickly overloaded with excessive message traffic, especially when there are a large number of active and lengthy publishers. Even if there is enough bandwidth, the subscriber will be heavily burdened by the need to process many notifications.
本系统的示范性网络在路由通知方面更加有效。首先,可使用组播路由,以保证通知例如越过网络中的任何连接至多传播一次。其次,可对过滤器应用大量高级优化操作,以尽可能地减少通知的传播。The exemplary network of the present system is more efficient at routing notifications. First, multicast routing can be used to ensure that notifications are propagated at most once, for example, across any connection in the network. Second, a number of advanced optimizations can be applied to filters to minimize the propagation of notifications.
图1是在概念上说明网络核心中的这种智能路由器的图。用于发布-订购网络中,发布方14通过边缘路由器16将消息中的内容传送到网络核心10。发布-订购网络包括将数据或内容从发布方路由到订户的任何类型的网络。内容是通过一个或多个表示路由器或其它设备之间逻辑连接的信道18而传送的。由网络核心10中的智能路由器12确定是否路由或转发消息。具体而言,智能路由器12可确定消息是否包含订户24订购的内容。Figure 1 is a diagram conceptually illustrating such an intelligent router in the core of a network. For a publish-subscribe network, the publisher 14 transmits the contents of the message to the
每个订购封装了主体过滤器和属性过滤器。路由器可将主体过滤器扩大到匹配的主体集,基于每个主体合并属性过滤器。智能路由器对照通知的主体评估主体过滤器,对照通知中的属性值评估属性过滤器。用于主体过滤器的语法可使用通配符,用于属性过滤器的语法可使用布尔表达式,这两者将在下面详细说明。术语“过滤器”是用来描述订户感兴趣从发布方接收的一组事件。路由规则由过滤器产生,并由智能路由器用以作出路由决策。Each subscription encapsulates subject filters and attribute filters. The router can expand subject filters to the set of matching subjects, merging attribute filters on a per-subject basis. The intelligent router evaluates the body filter against the body of the notification and the attribute filter against the attribute values in the notification. The syntax for body filters can use wildcards, and the syntax for attribute filters can use Boolean expressions, both of which are explained in detail below. The term "filter" is used to describe a set of events that a subscriber is interested in receiving from a publisher. Routing rules are generated by filters and used by intelligent routers to make routing decisions.
因此,如果消息26不满足整个过滤器组,例如,智能路由器12引下(丢弃)消息26,意味着该消息不再被转发。例如,如果根据对主体和属性过滤器的评估,整组中的任一个过滤器均由消息20满足,则智能路由器12根据为匹配过滤器器规定的所有路由和/或动作的规则,通过边缘路由器22以及可能其它设备来将消息20路由(转发)给订户24,或利用消息20执行路由器12内部的其它功能。此搜索将一直持续到整个过滤器组耗尽或已获得关于所有规则的决定为止,无论哪个先发生。Thus, if a message 26 does not satisfy the entire set of filters, for example, the intelligent router 12 drops (drops) the message 26, meaning that the message is no longer forwarded. For example, if any one of the filters in the entire set is satisfied by the message 20 based on the evaluation of the body and attribute filters, intelligent router 12 passes the edge Router 22 and possibly other devices to route (forward) message 20 to subscriber 24 , or utilize message 20 to perform other functions internal to router 12 . This search will continue until the entire filter set is exhausted or decisions on all rules have been obtained, whichever happens first.
网络核心中这些基于内容路由的智能路由提供了实时数据(例如告警和更新)的交付。对于告警的实时数据交付实例包括但不限于股票报价、业务、新闻、旅行、天气、欺诈检测、安全、信息通讯服务(telematics)、工厂自动控制、供应链管理和网络管理。对于更新的实时数据交付实例包括但不限于软件更新、防病毒更新、电影和音乐交付、工作流程、存储管理和高速缓存连贯性。许多其它的应用可用于交付订购信息。These intelligent routes based on content routing in the core of the network provide the delivery of real-time data such as alerts and updates. Examples of real-time data delivery for alerts include, but are not limited to, stock quotes, business, news, travel, weather, fraud detection, security, telematics, factory automation, supply chain management, and network management. Examples of real-time data delivery for updates include, but are not limited to, software updates, antivirus updates, movie and music delivery, workflow, storage management, and cache coherency. Many other applications can be used to deliver ordering information.
表1说明了有主体的订购的存储并对过滤进行断定。它们可以按期望的或需要的任何类型的数据结构存储于网络中的任何位置上。如下所述,断定是订购的组成部分。订购可以任何方式表示,以下提供了其中的示例。Table 1 illustrates the storage of subscriptions with subjects and predicates on filtering. They can be stored anywhere on the network in any type of data structure desired or needed. As described below, predicates are an integral part of ordering. Ordering can be expressed in any number of ways, examples of which are provided below.
表2提供了关于报价服务器的发布和订购的示例。提供本示例只用于说明目的,订购可包括关于任意类型的数据或内容的任何数量和类型的参数。Table 2 provides an example of publishing and ordering on the quote server. This example is provided for illustration purposes only, an order may include any number and type of parameters for any type of data or content.
断定提供订购的布尔表达式,而主体提供了订购信道的指示。可以许多不同的方式表达订购。采用布尔表达式便是这样的一种示例,并提供了易于将订购转换成主体过滤器和属性过滤器以供基于内容路由的能力。或者可不参考主体而表达订购;然而,采用主体或信道(以下将做进一步阐释)提供了用于解释和将过滤器应用于属性的环境。The assertion provides a Boolean expression to order, while the body provides an indication of the ordering channel. Ordering can be expressed in many different ways. The use of boolean expressions is one such example and provides the ability to easily convert ordering into body filters and attribute filters for content-based routing. Or an order may be expressed without reference to a subject; however, employing a subject or a channel (explained further below) provides an environment for interpreting and applying filters to attributes.
路由决策可在网络核心中完成,并分布于整个网络,减轻了发布方和订户机上的处理负担,并显著提高了网络效率。仅为说明目的,图1显示了一个发布方、一个订户和一个智能路由器;实现可包括许多发布方、订户和智能路由器。术语智能路由器指能够通过在网络核心或其他位置检查分组或消息的有效载荷而作出路由决策的路由器或其他实体。Routing decisions can be made in the core of the network and distributed throughout the network, reducing the processing burden on publisher and subscriber machines and significantly improving network efficiency. For illustration purposes only, Figure 1 shows a publisher, a subscriber, and an intelligent router; implementations may include many publishers, subscribers, and intelligent routers. The term intelligent router refers to a router or other entity capable of making routing decisions by inspecting the payload of packets or messages at the network core or elsewhere.
网络基础设施network infrastructure
图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。Figure 2 is a network diagram of intelligent routers illustrating publishers and subscribers. For example, routing entities 30 that provide channel services are actually layered on the network infrastructure for routing messages between intelligent routers, as described below. Publisher 32 conceptually includes
信道可包括例如以分布方式实现的相关的一组逻辑组播连接。在本示范性实施例中的信道是用于为发布方和订户的联营机构交换内容的逻辑相关的网络资源集合。根据信道主体的名字空间来对内容进行分类,并经由信道管理器提供的信道服务来管理、控制以及供应这些资源。多个信道可共享相同的资源。信道可提供高扩展目录服务,如以下示例:发布方和订户信息、认证和授权信息、消息类型、管理信息以及记帐收费信息,但不限于此。信道还可提供例如高速缓存期间的持续、快速数据交付机制、安全以及用户和网络管理。信道也可用于任何其他目的。A channel may comprise, for example, a related logical set of multicast connections implemented in a distributed manner. A channel in the exemplary embodiment is a logically related collection of network resources used to exchange content for an affiliate of publishers and subscribers. Classify content according to the namespace of the channel subject, and manage, control and provision these resources through the channel service provided by the channel manager. Multiple channels can share the same resource. Channels may provide highly scalable directory services such as, but not limited to, publisher and subscriber information, authentication and authorization information, message types, administrative information, and billing and charging information, for example. Channels may also provide mechanisms such as persistent, fast data delivery during caching, security, and user and network management. Channels can also be used for any other purpose.
由智能路由器进行的过滤可在网络核心中发生以分布路由决策.此外,智能路由器还可用作连接用户设备(如发布方或订户)与网络核心的边缘路由器.而且,连接到网络的相同设备即可用作发布方以在网络中通过路由决策将内容推向订户,也可用作订户以接收所推的内容.智能路由器和信道可按任何配置(如对于特定实现所需要或希望的那样)进行连接,并且提供图2所示的配置只为说明目的.Filtering by intelligent routers can occur in the network core to distribute routing decisions. In addition, intelligent routers can also be used as edge routers connecting user devices (such as publishers or subscribers) with the network core. Moreover, the same devices connected to the network Can act either as a publisher to push content to subscribers through routing decisions in the network, or as a subscriber to receive pushed content. Intelligent routers and channels can be in any configuration as required or desired for a particular implementation ) and the configuration shown in Figure 2 is provided for illustration purposes only.
图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之间的主干路由器可以任何传统方式在现有网络基础设施内进行互连接。Figure 3 is a diagram of an exemplary network infrastructure of intelligent routers and traditional backbone routers, which also illustrates the logical connection of channels. The intelligent router in this example adopts an existing backbone router in a network (such as the Internet or other distribution network), and the intelligent router is actually layered on the backbone router here. In this example, Internet service provider (ISP) networks 58, 59 and 60 each include several backbone routers for conventional routing of messages or packets. A plurality of intelligent routers 61 - 70 are connected to one or more backbone routers in the ISP networks 58 , 59 and 60 . The intelligent routers 61-70 are also interconnected by a plurality of links 73-85 (representative examples of links), and end-user devices may also be connected by these links. Intelligent routers 61-70 may be controlled by one or more supervisors (such as entity 71) and one or more virtual private network (VPN) controllers (such as entity 72). The ISP networks 58, 59 and 60 also connect to publisher and subscriber machines (not shown in Figure 3). Backbone routers in and between ISPs 58, 59 and 60 may be interconnected in any conventional manner within the existing network infrastructure.
如上说明的智能路由器61-70和链路73-85可采用现有网络基础设施来实现,它们在网络核心中提供基于内容路由。链路73-85表示智能路由器61-70之间的逻辑连接,并可采用例如现有网络基础设施或其他设备实现。例如,链路可采用称为隧道的逻辑连接来实现。隧道包括硬件,可能还有软件、用于实现链路的网络基础设施,而且一个隧道可作为多个信道的一个部件。信道通过提供针对特定类型的内容的逻辑配置并由此为信道上传输的属性提供环境从而促进智能路由器中基于内容路由。虽然智能路由器可在没有信道的条件下执行路由决策,但是信道提高由网络核心中的智能路由器进行基于内容路由的效率。Intelligent routers 61-70 and links 73-85 as described above can be implemented using existing network infrastructure, which provide content-based routing in the core of the network. Links 73-85 represent logical connections between intelligent routers 61-70 and may be implemented using, for example, existing network infrastructure or other equipment. For example, links can be implemented using logical connections called tunnels. A tunnel includes the hardware, and possibly software, network infrastructure used to implement the link, and a tunnel can be a component of multiple channels. Channels facilitate content-based routing in intelligent routers by providing a logical configuration for specific types of content and thereby providing context for attributes transmitted over the channel. While intelligent routers can perform routing decisions without channels, channels increase the efficiency of content-based routing by intelligent routers in the network core.
此示范性实施例包括信道和链路的使用。链路是两个路由器之间的连接,即便是智能路由器也如此。信道是包含路由器集合的网络实体(通常较大的),它们通过互连接的链路静态或动态配置以完成一对多或多对多的逻辑连接。具体而言,信道是描述信道基本特征的顶级逻辑实体。在一个信道下可能存在许多主体。各个主体将形成涉及互连接的路由器集合的子网(如组播树)。可按不同的方式对这些基于主体的子网进行分配、定向和配置。信道作为针对主体而在其中构成的所有子网的集合可类似于例如网状的网络。This exemplary embodiment includes the use of channels and links. A link is a connection between two routers, even smart ones. A channel is a network entity (usually large) consisting of a collection of routers, which are statically or dynamically configured through interconnected links to complete one-to-many or many-to-many logical connections. Specifically, a channel is a top-level logical entity that describes the basic characteristics of a channel. There may be many principals under one channel. Individual subjects will form subnetworks (eg, multicast trees) involving collections of interconnected routers. These principal-based subnets can be assigned, directed, and configured in different ways. A channel as a collection of all subnets within which a subject is constituted may resemble, for example, a mesh network.
图4是智能路由器92的示范性硬件部件图,智能路由器92可对应于任一个其他引用的智能路由器。网络节点90可包括与传统主干路由器95相连的智能路由器92。智能路由器92包括连接到存储器94和辅助存储装置97(可能是用例如独立的机器实现的)的处理器93,存储器94和辅助存储装置97二者任一个均可存储数据,也可高速缓存数据,并可存储由处理器93执行的应用。辅助存储装置97提供非易失数据存储。根据如下所阐释的软件控制,处理器93向主干路由器95提供指令,以便它可基于由针对订购的主体过滤器和属性过滤器产生的路由规则路由(转发)或不路由(丢弃)消息或分组。虽然显示为在独立的处理器控制设备中来实现,但可选的是可用专用集成电路(ASIC)在主干路由器95内实现智能路由器92,以便可在可能还带有嵌入软件的硬件中提供智能路由功能。或者,智能路由功能也可用一个或多个路由设备的软件和硬件的组合来实现。FIG. 4 is a diagram of exemplary hardware components of
图5是示范性发布方和订户机的图.发布方机100或118可包括以下部件:存储一个或多个发布方应用104和代理应用105的存储器102;提供非易失数据存储的辅助存储设备112;用于输入信息或命令的输入设备108;用于执行存储在存储器102中或从其他存储设备接收的应用的处理器114;用于输出信息的输出设备110;以及用于提供可视显示信息的显示设备116.Figure 5 is a diagram of exemplary publisher and subscriber machines. A publisher machine 100 or 118 may include the following components: memory 102 to store one or more publisher applications 104 and broker applications 105; secondary storage to provide non-volatile data storage device 112; input device 108 for inputting information or commands; processor 114 for executing applications stored in memory 102 or received from other storage devices; output device 110 for outputting information; and for providing visual A display device for displaying information 116.
订户机122或140可包括以下部件:存储一个或多个应用126和代理应用128的存储器124;提供非易失数据存储装置的辅助存储设备130;用于输入信息或命令的输入设备132;用于执行存储在存储器124中或从其他存储设备接收的应用的处理器134;用于输出信息的输出设备136;以及用于提供可视显示信息的显示设备138。或者,发布方和订户机可包括更多或更少的部件,或者不同的部件,它们可以为任何配置。The subscriber machine 122 or 140 may include the following components: a memory 124 storing one or
发布方机100和118经由网络120(如上述网络)与订户机122和140相连。网络120包括用于在网络核心中通过分组或消息来提供数据或内容的分布路由的智能路由器。虽然只显示了两个发布方和订户机,但网络120可缩放以包括更多发布方和订户机。发布方和订户机可用任何处理器受控设备来实现,如包括但不限于以下示例:服务器;个人计算机;笔记本式计算机;个人数字助理;电话;蜂窝式电话;寻呼机;或其他设备。具有智能路由器的网络120可包括任何连接了硬接线设备、无线设备或二者的有线线路或无线分布网络。网络120还有可能利用现有或传统网络基础设施。Publisher machines 100 and 118 are connected to subscriber machines 122 and 140 via network 120, such as the network described above. Network 120 includes intelligent routers for providing distributed routing of data or content by packets or messages in the network core. Although only two publisher and subscriber machines are shown, network 120 can be scaled to include more publisher and subscriber machines. Publisher and subscriber machines may be implemented with any processor-controlled device, such as including but not limited to the following examples: servers; personal computers; notebook computers; personal digital assistants; telephones; cellular phones; pagers; or other devices. Network 120 with intelligent routers may include any wired or wireless distribution network that connects hardwired devices, wireless devices, or both. It is also possible for network 120 to utilize existing or legacy network infrastructure.
图6是说明智能路由器的信道管理器150的图。在本示例中,信道管理器150是用多个服务器152、154和156实现的。每个服务器包括其自身的本地存储装置158、160和162。智能路由器164、166和168联系信道管理器以便得到有关特定信道的信息。信道管理器也可提供数据持续、故障跳过功能或其他功能。因此该信道管理器提供包括该网络中任何地方的一个数据库或一组数据库的信道服务,这些数据库规定了例如与信道相关的信息、数据持续特性、发布方和订户的用户信息以及基础设施信息。基础设施信息可包括例如智能路由器的标识和连接它们的对应隧道、信道的主体以及信道的属性(每个属性的名称和类型)。分组或消息也可承载信道相关的信息,包括固定属性和可变属性的标识。FIG. 6 is a diagram illustrating the channel manager 150 of the intelligent router. In this example, channel manager 150 is implemented with a plurality of servers 152 , 154 and 156 . Each server includes its own local storage 158 , 160 and 162 . Intelligent routers 164, 166 and 168 contact the channel manager for information about a particular channel. The channel manager may also provide data persistence, fault skip functionality, or other functions. The channel manager thus provides channel services comprising a database or a set of databases anywhere in the network specifying, for example, channel-related information, data persistence characteristics, user information for publishers and subscribers, and infrastructure information. Infrastructure information may include, for example, the identities of the intelligent routers and the corresponding tunnels connecting them, the principals of the channels, and the attributes of the channels (name and type of each attribute). Packets or messages can also carry channel-related information, including identification of fixed and variable attributes.
用户在在线时可下载信道信息。例如,用户可通过利用用户名和口令来登记。当认证用户的登录时,该用户可打开(激活)信道,并从信道管理器检索关于该信道的信息。发布方可在发布内容时利用该信息,并且订户可利用该信息进入并登记订购。Users can download channel information while online. For example, a user may log in by using a username and password. When a user's login is authenticated, the user can open (activate) a channel and retrieve information about the channel from the channel manager. Publishers can use this information when publishing content, and subscribers can use this information to enter and register for subscriptions.
信道管理器152、154和156最好构成一组来执行持续可靠的信道目录服务。信道管理器之一将作为主信道管理器,而其他作为备用信道管理器。如果主信道管理器故障,则主信道管理器的相邻信道管理器将接管成为新的主信道管理器,以保持可靠的服务。每个智能路由器保留有这些信道管理器的地址。如果智能路由器不可到达一个信道管理器,则它将寻找另一个来检索信息。例如,网络中的设备可采用命令来检索信道信息,表3中提供了其中的一些示例。或者,智能路由器可只具有主信道管理器或超过两个信道管理器。Channel managers 152, 154, and 156 preferably form a team to perform a persistent and reliable channel directory service. One of the channel managers will act as the primary channel manager and the other as backup channel managers. If the primary channel manager fails, the primary channel manager's adjacent channel managers will take over as the new primary channel manager to maintain reliable service. Each intelligent router retains the addresses of these channel managers. If one channel manager is not reachable by the intelligent router, it will look for another to retrieve the information. For example, devices in the network may employ commands to retrieve channel information, some examples of which are provided in Table 3. Alternatively, an intelligent router may have only a primary channel manager or more than two channel managers.
图7是用户机或设备中的栈180内的示范性软件部件的图,该软件部件用于将用户机或设备与具有智能路由器的网络相连。用户机可用作发布方、订户或二者,并且它可包括以上所标识的示范性设备。栈180可包括一个或多个用户应用182,用户应用182可提供用于从用户接收订购、从发布方接收信道信息或接收要发布的内容或数据。用户应用182还可包括由用户机或设备执行的任何其他类型的应用。FIG. 7 is a diagram of exemplary software components within a stack 180 in a user machine or device for connecting the user machine or device to a network with an intelligent router. A client machine can act as a publisher, subscriber, or both, and it can include the exemplary devices identified above. Stack 180 may include one or more user applications 182 that may provide for receiving subscriptions from users, receiving channel information from publishers, or receiving content or data to be published. User applications 182 may also include any other type of application executed by a user machine or device.
栈180也可包括如代理184、事件库186、高速缓存库188、信道库190、消息传送库192以及分配器库194.代理184提供建立网络连接或其他功能,表3提供了由代理184实现的命令示例,它可采用代理服务器命令或其他类型的命令.事件库186记录有关用户机的事件或其他事件或信息.高速缓存库188提供本地高速缓存数据.信道库190存储信道的标识及其信息.分配器库194提供与控制通路196、信道管理器198以及一个或多个智能路由器200的连接,并且它可包括表4中所标识的示范性功能.消息传送库192提供与数据通路204的连接.The stack 180 may also include, for example, an agent 184, an event library 186, a cache library 188, a channel library 190, a messaging library 192, and a dispatcher library 194. The agent 184 provides for establishing a network connection or other functions, and Table 3 provides the information implemented by the agent 184. example of a command, which may use a proxy server command or other types of commands. Event repository 186 records events or other events or information about the user machine. Cache repository 188 provides local cache data. Channel repository 190 stores the identification of the channel and its Information. Dispatcher library 194 provides connectivity to control path 196, channel manager 198, and one or more intelligent routers 200, and it may include exemplary functionality identified in Table 4. Messaging library 192 provides connectivity to data path 204 Connection.
表5-9提供了用C编程语言的消息传送API的示例。表5和6提供了用以发送和检索消息的API示例。表7和8提供了用以发送和检索通知的API示例。表9提供了用以发送和检索控制消息的API示例。本说明书中提供的这些API以及其他API、程序和数据结构仅作为用于实现特定功能或特征的示例,并且实现可包括用任何编程语言的任何类型的API或其他软件实体。Table 5-9 provides examples of messaging APIs in the C programming language. Tables 5 and 6 provide examples of APIs used to send and retrieve messages. Tables 7 and 8 provide examples of APIs used to send and retrieve notifications. Table 9 provides examples of APIs used to send and retrieve control messages. These APIs and other APIs, programs, and data structures provided in this specification are only examples for implementing specific functions or features, and implementations may include any type of API or other software entities in any programming language.
图8是如以上标识的那些智能路由器以及图4所示的智能路由器92的示范性软件部件210的图。软件部件210可存储在例如存储器94中,以便由智能路由器92中的处理器93执行。部件210包括例如过滤守护程序212、分配器214、路由守护程序216以及高速缓存管理器218。过滤守护程序212提供基于内容路由的过滤,以便根据如下所阐释的路由规则处理订购的内容。分配器214提供如需要用来经由通路220传播过滤器的那些的控制消息的通信,并且分配器还可为用户提供单个输入点以及给一个保密插件提供信道管理器,从而提高了网络的安全性。换句话说,在本示例中用户不直接联系信道管理器,不过在备选实现方式中他们可以这样做。分配器214利用控制消息来从信道管理器获得属性(名称-值对)。FIG. 8 is a diagram of exemplary software components 210 of intelligent routers such as those identified above, as well as
路由守护程序216提供与数据通路222的通信,它可经由如图4所说明的传统主干路由器或其他路由设备而进行。高速缓存管理器218在包括对应智能路由器的网络节点上提供本地高速缓存数据。以下将更进一步阐释高速缓存管理器218的操作,高速缓存管理器218在整个网络核心中提供数据的分布式高速缓存。
作为应用级的备选方式,基于内容路由可在内核级实现。可由内核访问的存储器独立于应用层中的存储器。为使基于内容路由运行于应用中,需要例如将消息数据从内核存储器区拷贝到应用区,并将应用环境从内核环境交换到路由应用环境中。二者均会引起大量开销。如果代替修改内核以支持基于内容路由,则可进行更快速地路由,从而摆脱了上述开销。As an alternative to the application level, content-based routing can be implemented at the kernel level. The memory accessible by the kernel is independent of the memory in the application layer. For content-based routing to work in an application, it is necessary, for example, to copy message data from the kernel memory area to the application area, and to switch the application context from the kernel context to the routing application context. Both incur significant overhead. If instead the kernel is modified to support content-based routing, faster routing can be done, thereby getting rid of the overhead described above.
由于在内核中具有基于内容路由的这种特征,因此路由守护程序216依据实现可或不可直接经由数据通路222发送或接收数据.守护程序是运行于应用层的处理,它预先计算要插入到内核中的基于内容路由表.然而,一旦插入了基于内容路由表,路由表便可由内核用来作出路由决策.同样,过滤守护程序预先计算过滤表并将其插入内核中.在此内核实现中,路由守护程序或过滤守护程序均不能直接与数据通路交互.Because of this feature of content-based routing in the kernel, the
图9是可能包括订购内容的消息的分组结构230的示例的图。用于基于内容路由的分组或消息包括例如首部部分和有效载荷部分。首部部分规定路由或其他信息。有效载荷部分规定数据或内容,或数据或内容的指示。分组结构230包括IP首部232、用户数据报协议(UDP)传输控制协议(TCP)首部234、长度值238、一个或多个主体字段240以及一个或多个属性242。分组结构230说明了关于长度值以及主体和属性的基本结构。基于内容路由的分组也可包括其他或不同的单元,如以下所阐释的图18的示例中说明的那些,并且基于内容路由的分组可按任何方式进行配置。而且,这些属性可包括例如附加于消息末尾的自由属性(discretionary attribute)。这些自由属性是例如由发布方(或者甚至是路由器)增加的特设信息,可不必用针对信道指定的消息格式对其进行传送。FIG. 9 is a diagram of an example of a packet structure 230 of messages that may include ordering content. A packet or message for content-based routing includes, for example, a header portion and a payload portion. The header section specifies routing or other information. The payload portion specifies data or content, or an indication of data or content. Packet structure 230 includes an IP header 232 , a User Datagram Protocol (UDP) Transmission Control Protocol (TCP) header 234 , a length value 238 , one or more body fields 240 , and one or more attributes 242 . Packet structure 230 illustrates the basic structure with respect to length values as well as bodies and attributes. Content-based routing packets may also include other or different elements, such as those illustrated in the example of FIG. 18 explained below, and content-routing based packets may be configured in any manner. Also, these attributes may include, for example, discretionary attributes appended to the end of the message. These free attributes are ad hoc information added eg by publishers (or even routers), which may not necessarily be conveyed in the message format specified for the channel.
发布方和订户方法论Publisher and Subscriber Methodology
图10是由发布方用来建立信道和发布内容的示范性发布方方法250的流程图。方法250可用例如包括由发布方机100中的处理器114执行的代理106的软件模块来实现。在方法150中,发布方机中的代理106接收发布方对于信道的代理服务器的创建(步骤252)。代理服务器提供与网络的通信。代理106通过接口确定信道的消息格式(步骤253),并且该格式信息可从例如信道管理器或网络中的其他实体获得。代理106使用所接收的信道信息来建立信道的代理服务器(步骤254),它包括接收信道的属性(步骤256)以及在信道上创建通知(步骤258)。该通知为“侦听”信道上的内容的设备提供内容。属性定义了通知的参数和特征。10 is a flowchart of an exemplary publisher method 250 used by a publisher to establish a channel and publish content. Method 250 may be implemented in software modules including, for example, agent 106 executed by processor 114 in publisher machine 100 . In method 150, proxy 106 in the publisher machine receives the publisher's creation of a proxy server for the channel (step 252). A proxy server provides communication with the network. The agent 106 determines the message format of the channel through the interface (step 253), and this format information may be obtained from, for example, the channel manager or other entities in the network. Proxy 106 uses the received channel information to establish a proxy server for the channel (step 254), which includes receiving the attributes of the channel (step 256) and creating notifications on the channel (step 258). The notification provides content to devices that "listen" for content on the channel. Properties define the parameters and characteristics of the notification.
代理106将内容信息和信道的标识符(ID)送给网络核心中或其它用于处理订购的任何地方的智能路由器(步骤260)。发布方用适当的值填充通知属性(步骤261),并且发布方随后可根据信道属性发布关于通知的内容(步骤262)。在本示例中,步骤260-262完成发布通知,或者,这可取决于特定实现需要不同的或附加的步骤。因此,在本示例中与通知相关联的信息被分成按顺序排列的属性序列,每个具有名称、在通知内的位置(从1开始)、类型以及值。或者,根据特定实现属性也可具有不同的特征。属性可包括例如预定义属性、自由属性或二者。The agent 106 sends the content information and the identifier (ID) of the channel to an intelligent router in the network core or wherever else used to process the subscription (step 260). The publisher populates the notification attributes with appropriate values (step 261), and the publisher can then publish content about the notification according to the channel attributes (step 262). In this example, steps 260-262 accomplish publishing the notification, or this may require different or additional steps depending on the particular implementation. Thus, the information associated with the notification in this example is divided into an ordered sequence of attributes, each having a name, a position within the notification (starting at 1), a type, and a value. Alternatively, properties may have different characteristics depending on the particular implementation. Attributes may include, for example, predefined attributes, free attributes, or both.
智能路由器可利用分组中的信道ID来获得对应信道的属性,它确定经由信道传送的分组的结构或格式。具体而言,每个分组可包含例如与信道ID以及其他首部信息(如发布方ID和主体)相关联的标记符。这些标记符可用于将主体映射为消息格式中的数字,图18中显示了其示例。小整数值(例如十六比特的值)可用作这些数字。或者,可用任何其他类型的数字或信息来映射这些主体。将主体映射为数字具有特别的好处;例如,它可节约消息格式中的空间并可提供统一或标准的方式来在消息中规定主体的指示,使得它们可快速地被定位并被识别。智能路由器可在本地存储映射,或者,也可利用数字通过命令远程获得对应主体。An intelligent router can use the channel ID in the packet to obtain attributes of the corresponding channel, which determine the structure or format of the packet transmitted over the channel. Specifically, each packet may contain, for example, a marker associated with a channel ID and other header information such as a publisher ID and a body. These tokens can be used to map bodies to numbers in message formats, an example of which is shown in Figure 18. Small integer values (such as sixteen-bit values) can be used as these numbers. Alternatively, these subjects can be mapped with any other type of number or information. Mapping subjects to numbers has particular benefits; for example, it saves space in message formats and provides a uniform or standard way to specify indications of subjects in messages so that they can be quickly located and identified. The smart router can store the mapping locally, or it can also use the numbers to remotely obtain the corresponding principal through commands.
表10说明用于将数字映射到主体的结构,在本示例中采用整数值.表中的主体树参数表明主体可在分级关系中包括一个或多个主体字段;例如,主体树可包括一串用特定符号划界的主体字段.表2中提供了主体树的示例.作为示例,主体树quotes.nyse包括主体“quotes”和子字段“nyse”两个术语,它们用如URL或其他网络地址中所发现的“.”来划界.除了采用周期和规定的URL类型串之外,还可以利用任何用于划界的任何字符和符号的方式来规定主体树.Table 10 illustrates the structure used to map numbers to subjects, in this example taking integer values. The subject tree parameter in the table indicates that a subject may include one or more subject fields in a hierarchical relationship; for example, a subject tree may consist of a string Subject fields delimited by specific symbols. An example of a subject tree is provided in Table 2. As an example, the subject tree quotes.nyse includes the subject "quotes" and the subfield "nyse", which are used, for example, in URLs or other network addresses The found "." is used to delimit. In addition to using the period and the specified URL type string, any character and symbol used for delimiting can also be used to specify the subject tree.
因此,知道了特定信道的分组格式或结构,智能路由器便可快速地在基于内容路由的分组中定位主体和属性或其他信息。例如,信道可规定在信道上传送的主体和属性的字节位置,使它们易于通过对分组中的字节计数来定位。或者,智能路由器可解析分组以定位主体和属性或其他信息。Thus, knowing the packet format or structure for a particular channel, an intelligent router can quickly locate subjects and attributes or other information in packets for content-based routing. For example, a channel may specify the byte positions of bodies and attributes transmitted on the channel, making them easy to locate by counting the bytes in the packet. Alternatively, an intelligent router may parse packets to locate subjects and attributes or other information.
表11提供了C++编程语言的发布方程序的示例。表12提供了用以创建信道的API的示例。表13提供了由信道管理器(参见图6)维护的并提供信道相关信息的信道配置文件的示例,如表所示。或者,为了分布处理负载,系统可具有用以提供地理位置上分散的服务器的IP地址的全局信道管理器,其中这些服务器用作本地信道管理器。Table 11 provides examples of publisher programs in the C++ programming language. Table 12 provides an example of an API to create a channel. Table 13 provides an example of a channel profile maintained by a channel manager (see FIG. 6) and providing channel-related information, as shown in the table. Alternatively, to distribute the processing load, the system may have a global channel manager to provide IP addresses of geographically dispersed servers, where these servers are used as local channel managers.
图11是用于接收和处理订购的订户方法264的流程图。方法266可用例如包括由订户机122中的处理器134执行的代理128的软件模块来实现。在方法264中,图形用户界面(GUI)例如向用户显示可用信道的指示(步骤266),这可用应用126来完成。识别信道的信息可从例如提供信道相关信息的信道管理器接收。可用任何类型的应用126以任何特定方式或格式来显示信道的标识。该应用接收用户的信道选择(步骤268),并调用API或针对选择的信道的其他程序(步骤270)。API给用户提供了对应于所选择的选项的信道的订购选项(步骤272)。API从用户接收订购值(步骤274)并将该订购发送至代理128,以便进行如下所述的处理(步骤276)。FIG. 11 is a flowchart of a subscriber method 264 for receiving and processing subscriptions. Method 266 may be implemented in software modules including, for example,
订购参数可包括例如表1中所示的断定。例如,每个信道可利用其自身的API,以便根据特定需求或对应信道的参数来处理订购。这些API可包括例如针对接收订购的基于web的或基于Java的API,并可采用任何类型的用户接口和处理来接收订购的信息,并将其传递给代理应用。Ordering parameters may include assertions such as those shown in Table 1. For example, each channel may utilize its own API in order to process ordering according to specific needs or parameters of the corresponding channel. These APIs may include, for example, web-based or Java-based APIs for receiving orders, and may employ any type of user interface and processing to receive ordered information and pass it on to the broker application.
图12是从概念上说明信道和订户屏幕或GUI 278和284的图,它可用来与接收订购的方法264结合使用。屏幕278包括识别可供用户选择的可用信道的多个区282。当选择了特定信道时,便可显示屏幕284用于接收在区286中用户的订购值。用户可选择区288以提交订购或选择区290以取消订购。屏幕278和284可被格式化为例如超文本标记语言(HTML)网页或任何其他格式。而且,屏幕可包括任意配置的区和内容,可能包括例如文本、图画、图片、各种颜色或多媒体信息,以便按所希望的提供针对订户的用户友好以及吸引视觉的界面。这些屏幕还可包括提供例如传统浏览器功能的工具条280。12 is a diagram conceptually illustrating channel and subscriber screens or GUIs 278 and 284, which may be used in conjunction with method 264 of receiving an order. Screen 278 includes a plurality of fields 282 identifying available channels for user selection. When a particular channel is selected, a screen 284 may be displayed for receiving the user's subscription values in field 286 . A user may select field 288 to submit an order or field 290 to cancel an order. Screens 278 and 284 may be formatted, for example, as hypertext markup language (HTML) web pages or in any other format. Furthermore, the screen may include any configuration of regions and content, possibly including, for example, text, drawings, pictures, various colors or multimedia information, in order to provide a user-friendly and visually appealing interface to the subscriber as desired. These screens may also include
表14用C++编程语言提供了订户程序的示例。Table 14 provides an example of a subscriber program in the C++ programming language.
通过有效载荷检查的基于内容路由和信道Content-based routing and channeling via payload inspection
图13是通过有效载荷检查基于内容路由的方法300的流程图。方法300例如可用智能路由器92中的处理器93执行的软件模块来实现,如用过滤守护程序212所表示的软件模块。或者,它可用ASIC或硬件和软件的组合来实现。方法300中所说明的基于内容路由可在网络中如网络核心任何地方的智能路由器中或边缘路由器中执行。13 is a flowchart of a method 300 of content-based routing through payload inspection. Method 300 may be implemented, for example, as a software module executed by processor 93 in
一般意义上,基于内容路由涉及检查分组的有效载荷部分,以便确定如何处理分组.此基于内容路由的方法可包括例如处理按任何顺序的订购列表(例如采用过滤器)、逐个主体以及逐个属性地将消息与路由规则进行比较以便确定出该消息的路由以及在网络核心中执行该处理.这些规则可包括管理路由器内处理的规则或与过滤器相关联的任何规则.这些路由决策因此可分布于整个网络核心中.使用如信道所表示的主体例如通过了解它们针对特定信道在消息或分组中的字节位置来确定出消息格式,从而为智能路由器提供在消息内快速定位属性的方式.In a general sense, content-based routing involves examining the payload portion of a packet in order to determine how to process the packet. This content-based routing approach may include, for example, processing ordered lists in any order (e.g., with filters), body-by-body, and attribute-by-attribute The message is compared with routing rules in order to determine the routing of the message and perform the processing in the core of the network. These rules may include rules governing processing within routers or any rules associated with filters. These routing decisions may thus be distributed over Throughout the core of the network, message formats are determined using entities represented by channels, e.g. by knowing their byte position within a message or packet for a particular channel, thereby providing a way for intelligent routers to quickly locate attributes within a message.
在方法300中,智能路由器92接收消息分组(步骤302)。它根据该分组确定对应消息的信道ID(步骤304),并利用信道ID检索该信道的属性(步骤306)。在本示例中,信道类型(根据信道ID确定的)确定分组中属性的位置和数据类型。信道属性可在本地存储或诸如通过信道管理器远程检索。智能路由器92检索对应于订购的过滤器(步骤308)。该过滤器包括一个或多个属性测试,通常是一组针对订购的属性测试。智能路由器92将分组中的属性应用于过滤器描述中的对应的属性测试(步骤310)。In method 300,
如果过滤器描述中的所有属性测试产生肯定结果(步骤312),则意味着属性满足所有的属性测试,智能路由器执行由与过滤器相关联的规则规定的一组功能(步骤314)。这些功能可包括例如把分组路由至下一链路,和/或利用分组的内容在本地路由器执行由这些规则所指定的一些动作或计算。可例如在指定对应订购的数据结构中识别出动作或下一链路。当规则是链路时,它通常识别出下一网络节点以便接收分组,下一网络节点可包括智能路由器、主干路由器、网络连接的设备或其他实体。或者,下一链路可以被指定或以其他方式与订购相关联。If all attribute tests in the filter description yield positive results (step 312), meaning that the attribute satisfies all attribute tests, the intelligent router performs a set of functions specified by the rules associated with the filter (step 314). These functions may include, for example, routing the packet to the next link, and/or using the content of the packet to perform some action or computation at the local router as specified by these rules. The action or next link can be identified, for example, in a data structure specifying the corresponding subscription. When the rule is a link, it typically identifies the next network node to receive the packet, which may include an intelligent router, backbone router, network-connected device, or other entity. Alternatively, a next link can be designated or otherwise associated with the subscription.
如果过滤器描述中的所有属性测试未产肯定结果(步骤312),则意味着属性不满足所有的属性测试,过滤器被宣告失配(步骤315)。智能路由器递归式地继续以上过程,直到耗尽过滤器描述中的所有属性测试或遇到了第一个否定结果为止,而不管它们中哪一个先出现。If all of the property tests in the filter description yield no positive results (step 312), it means that the property does not satisfy all of the property tests and the filter is declared a mismatch (step 315). The smart router continues the above process recursively until all property tests in the filter description are exhausted or the first negative result is encountered, whichever comes first.
一旦已经处理了对此过滤器的所有属性测试,智能路由器便确定是否存在更多过滤器(步骤316),如果是的话,它返回到步骤308,检索下一过滤器的属性测试以便针对它处理该属性。匹配过程(步骤308、310、312、314、315和316)一直继续,直到耗尽完整的过滤器组或可确定所有的动作或路由规则的结果为止,而不管哪一个先出现。如果分组不满足任何过滤器,则它将被引下(丢弃)并不被转发。Once all attribute tests for this filter have been processed, the intelligent router determines whether there are more filters (step 316), and if so, it returns to step 308 to retrieve the attribute test for the next filter to be processed for it The property. The matching process (steps 308, 310, 312, 314, 315, and 316) continues until the complete filter set is exhausted or all action or routing rule outcomes can be determined, whichever comes first. If a packet does not satisfy any filter, it is dropped (dropped) and not forwarded.
智能路由器92可按任何特定顺序序列通过过滤器。例如,如表15中所示,智能路由器可将订购的过滤器存储在文件或路由表中,并线性地序列通过它们以将属性应用于过滤器(属性测试)。或者,该路由表可包括链路或对过滤器的指针。
可选地是,基于内容路由在相同的时间可采用一种以上的方法,这取决于例如应用和性能增强的启发式,如基于业务条件的算法交换。可选择地对用于处理的过滤器在网络中的路由器上进行加密、解密、转换以及合并,用以针对基于内容路由执行有效载荷部分的检查。例如,可将诸如价格>$3.54122的订购删减为价格>$3.54,因为已知应用中的发行物不包含超过第二个小数点以后的货币属性。而且,外币在从海外发来的发行物到达例如位于美国的第一路由器时,最好还是先转换成美国货币为好。Optionally, content-based routing can employ more than one method at the same time, depending on eg application and performance-enhancing heuristics, such as algorithm switching based on traffic conditions. Filters for processing are optionally encrypted, decrypted, converted, and merged at routers in the network to perform payload portion inspection for content-based routing. For example, an order such as price > $3.54122 may be truncated to a price > $3.54 since it is known that publications in the application do not contain currency attributes beyond the second decimal point. Furthermore, it is better to convert the foreign currency into the U.S. currency when the issue sent from overseas reaches, for example, the first router located in the United States.
作为线性方法的备选方式,智能路由器92可按其他顺序或根据各种有可能提高处理速度和效率的算法来选择过滤器用于进行处理.表16提供了订购和针对订购的对应链路的示例;在这些示例中,主体与特定信道相关,并且对于主体的订购可由过滤器的路由规则表示.主体可包括例如网络地址(如识别内容来源的统一资源定位符(URL)).As an alternative to the linear approach,
网络节点上的高速缓存Caches on network nodes
图14是高速缓存方法320的流程图.方法320可用例如智能路由器92中的处理器93执行的软件模块来实现,如高速缓存管理器218所表示的.或者,它可用ASIC或硬件和软件的组合在与对应智能路由器相同或不同的物理设备中实现.在方法320中,智能路由器92接收含有数据或内容、信道ID和主体的消息(步骤322).智能路由器92对数据加时间标记(步骤324),并在本地将它高速缓存到如存储器94或辅助存储装置97中(步骤326).它通过例如信道ID、主体和时间戳来索引高速缓存的数据(步骤328).14 is a flow diagram of a
如果智能路由器92接收了对数据的请求(步骤330),它便利用索引根据所述请求检索高速缓存的数据(步骤332)。智能路由器92将高速缓存的数据传送至主干路由器95或其他路由实体上,以便将其最终传输给请求者或其他人。方法320可重复地被执行以便响应于请求而连续地高速缓存数据以及检索高速缓存数据。If
图15是说明与方法320一起使用的高速缓存索引(336)的图。高速缓存索引(336)接收数据(338),并将其与时间戳(340)一起存储。在收集数据时,每隔一段delta(德尔塔)t时间便对数据进行标记,这里deltat表示标记之间的时间,例如t2-t1。也可以采用其他以任何方式作时间标记的索引类型。FIG. 15 is a diagram illustrating a cache index ( 336 ) used with
表17从概念上说明对高速缓存的数据进行的索引。表18从概念上说明用于存储关于高速缓存的连接历史的数据结构。表19提供了用于在含有智能路由器的网络节点中本地高速缓存数据的数据结构的示例。Table 17 conceptually illustrates the indexing of cached data. Table 18 conceptually illustrates the data structure used to store connection history with respect to the cache. Table 19 provides an example of a data structure for locally caching data in a network node containing an intelligent router.
可以按任何固定的或可变的时间间隔进行时间标记。例如,可每隔五分钟对数据进行高速缓存和索引。在接收到用以检索指定时间和主体的高速缓存的数据的命令(如#.getCache)时,信道管理器218利用高速缓存索引来确定它是否可检索对应于步骤332的请求的高速缓存的数据。Timestamping can be done at any fixed or variable interval. For example, data can be cached and indexed every five minutes. Upon receiving a command (such as #.getCache) to retrieve cached data for a specified time and subject,
每个主体或信道可包括例如在组播树和一组智能路由器中的其自身的IP地址。因此,表18表示在这种路由器之间的连接历史,它可在本地存储于用户机中;如果边缘路由器故障,则用户机可访问连接历史,以确定如何在边缘路由器再次联机时与信道的上游路由器重新连接。例如,它也可在它断开连接的期间执行得到高速缓存的命令,以便获得任何未决的订购内容。Each principal or channel may include its own IP address, eg in a multicast tree and a set of intelligent routers. Therefore, Table 18 shows the connection history between such routers, which can be stored locally in the client machine; if the edge router fails, the client machine can access the connection history to determine how to connect to the channel when the edge router comes back online. The upstream router reconnects. For example, it may also execute cached commands while it is disconnected in order to obtain any pending subscriptions.
这些示范性数据结构包括以下信息。主体节点包含主体标识符、主体级、对父信道或主体节点的指针、它自己目录的文件描述符、对包含有它的下一级主体节点的hash(哈希)表的指针以及对数据节点的指针。数据节点包含对它的主体父节点的指针、数据目录的文件描述符、包含有对于存储在每个存储设备上的数据的数据结构的环形缓冲器、缓冲器的头和尾以及用于在检索和存储期间锁定数据节点的锁。已存储的时间粒度节点是表示实际数据文件的节点,最后的时间粒度节点表示还没存储到存储设备但在存储器中维护的最后的缓冲器。本示例中的高速缓存和数据存储装置线程利用最后的时间粒度节点的互斥来防止对最后的时间粒度节点的并发访问。These exemplary data structures include the following information. A principal node contains a principal identifier, a principal level, a pointer to a parent channel or principal node, a file descriptor for its own directory, a pointer to a hash table containing its subordinate principal nodes, and a pointer to a data node pointer. A data node contains a pointer to its principal parent, a file descriptor for the data directory, a ring buffer containing data structures for the data stored on each storage device, the buffer's head and tail, and the and the lock that locks the data node during storage. The stored time granularity node is a node that represents the actual data file, and the last time granularity node represents the last buffer that has not been stored in the storage device but is maintained in the memory. The cache and data store threads in this example utilize the last time granularity node's mutex to prevent concurrent access to the last time granularity node.
代理处理proxy processing
图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)。16 is a flowchart of a
DNF是一种众所周知的规范形式,其中布尔表达式表示为一个或多个所谓分离的子表达式的“或”,每个子表达式作为一个或多个属性测试的“与”。例如,布尔表达式(价格>=10“与”(符号==“LU”“或”符号==“T”))具有等同DNF表示((价格>=10“与”符号==“LU”)“或”(价格>=10“与”符号==“T”))。DNF is a well-known canonical form in which a Boolean expression is expressed as an "or" of one or more so-called disjoint subexpressions, each as an "and" of one or more property tests. For example, the Boolean expression (price>=10 "and" (symbol == "LU" "or" symbol == "T")) has an equivalent DNF representation ((price>=10 "and" symbol == "LU" ) "or" (price>=10 "and" symbol == "T")).
步骤364中的转换涉及将具有“不等”操作符(在示范性语法中表示为!=)的表达式转换成等效的“正”形,该正形指定所有的容许值而不是一个不容许值。这一转换在创建DNF之前执行,并且由于在本示例中的路由器要求正形中的公式,因此这种转换是必要的。例如表达式(价格!=80)可转换为等效的正表达式(价格<=79或价格>=81)。The conversion in
步骤368中的转换在创建DNF之后执行,并涉及所得的“与”表达式的额外简化,在本示例中,还执行它用以简化路由器的工作。具体而言,对于相同的属性的多属性测试的“与”可在等同性测试的情况下被简化为或者带有一个下界、一个上界、下界和上界二者或单个值的规范的“范围过滤器”。特定种类的范围过滤器则根据表22进行编码。The transformation in
例如,表达式(价格>=10“与”价格<=80“与”价格>=20“与”价格<=100)可简化为表达式(价格>=20与价格<=80),这是具有下界和上界的范围过滤器的示例。以下为简化后的其他种类的例子:(价格>=20)(只有下界);(价格<=80)(只有上界);以及(价格==50)(单个值)。在创建这些范围过滤器时,也可以将一些子表达式简化为“真”或“假”,在这种情形下,可根据布尔代数法则消除子表达式,由此还可进一步优化消息中的表达式的编码。例如,将表达式(价格>=50“与”价格<=20)简化为“假”,这是因为对于“价格”没有可满足该表达式的值。在将整个过滤器表达式简化为“假”的特定情况下,代理根本不必创建消息,由此减轻了路由器的不必要的工作。For example, the expression (price>=10 "and" price<=80" and "price>=20" and" price<=100) can be reduced to expression (price>=20 and price<=80), which is Example of a range filter with lower and upper bounds. The following are simplified examples of other categories: (price>=20) (lower bound only); (price<=80) (upper bound only); and (price==50) (single value). When creating these range filters, it is also possible to reduce some subexpressions to "true" or "false", in which case subexpressions can be eliminated according to the rules of Boolean algebra, thereby further optimizing the The encoding of the expression. For example, the expression (price >= 50" and "price <= 20") is simplified to "false" because there is no value for "price" that satisfies the expression. In the specific case of reducing the entire filter expression to "false", the broker does not have to create the message at all, thereby relieving the router of unnecessary work.
如果主体过滤器包含通配符,代理128则可选地按如下所述的方式将它们转换(步骤370)。或者,可在网络中而不是用户机或其他设备上转换任何通配符。在本示范性实施例中,用于主体过滤器的语法是采用通配符的仅有语法,而属性过滤器的语法是采用布尔表达式的仅有语法。或者,实现可针对主体过滤器和属性过滤器采用不同的或可变类型的语法。If the subject filters contain wildcards, the
代理128将所得的DNF表达式编码成消息(步骤372),并将该消息传送到智能路由器(步骤374)。编码可能涉及将订购转换成平面消息格式(flat message format),这意味着它构成了数据串。此传送可涉及将由订购的主体过滤器和属性过滤器产生的路由规则传播至一个或多个智能路由器或网络中的其他路由实体上。对于该传播,订购表达式例如可映射成传统分组结构。
步骤372的编码涉及将对于某信道的订购编组为消息传送API的消息传送格式,以便在整个信道上传播.订购是在内部例如作为带有主体#.SUBSCRIPTION的通知进行消息传送的.因为既有可变数量的主体过滤器字段又有可变数量的属性测试,因此在本示例中一对字节用于存储主体过滤器字段数,而另一对字节用来存储属性测试数.对主体过滤器的各个字段顺序地(例如按在源订购中所规定的顺序)进行编组,并将每个编组为消息的两字节部分.通配符字段可按下述方式编组.The encoding of
在对属性测试编组时,在消息的末尾以类似于通知的属性值的编组的方式编组测试操作数。在对属性测试和操作数编组之前,它们是按DNF的每个析取项(disjunct)内的属性顺序进行分类的,同时按位置顺序测试预定义的属性,随后是按名称顺序测试自由属性。此外,在每个析取项内对标量值的属性进行相关测试集被简化为具有一个界限值(对于左或右开放范围或等同性测试)或两个界限值(对于不同界限值之间的闭合范围)的范围过滤器的正规式。关于测试的其余信息被编码成例如按与操作数的相同顺序的两字节对;此两字节对序列设在消息中,紧跟在主体过滤器字段的两字节编码序列之后。两字节对可构成一序列属性测试的比特串编码的一种形式,除两个字节对之外它也可用于表示其他类型的编码。以下提供了属性测试的例子。When marshalling property tests, the test operands are marshaled at the end of the message in a manner similar to the marshalling of property values for notifications. Before attribute tests and operand marshalling, they are sorted in attribute order within each disjunct of DNF, while pre-defined attributes are tested in positional order, followed by free attributes in name order. Furthermore, the set of correlation tests on scalar-valued properties within each disjunct is reduced to have one bound value (for left or right open range or equality tests) or two bound values (for The canonical form of the range filter for the closed range of ). The remaining information about the test is encoded, for example, as a two-byte pair in the same order as the operands; this two-byte pair sequence is set in the message immediately following the two-byte encoded sequence for the body filter field. A two-byte pair may constitute a form of bit-string encoding of a sequence of property tests, but it may also be used to represent other types of encoding. Examples of property tests are provided below.
属性测试的编码概要如表20所述。表21说明两字节对的编码,表22说明两字节对中的操作符ID的编码。The coding profiles for the attribute tests are described in Table 20. Table 21 illustrates the encoding of the two-byte pair, and Table 22 illustrates the encoding of the operator ID in the two-byte pair.
由于测试的两字节对已经表明测试的操作数的类型以及测试是否应用于预定义或自由属性,因此不需要对自由属性或它们的类型所执行的测试数分开编组。此方案假定在通知中不超过127个预定义属性。或者,此设计可采用更多比特来编码属性测试。Since the two-byte pair of the test already indicates the type of the operand being tested and whether the test applies to a predefined or free attribute, there is no need for a separate marshalling of the number of tests performed on free attributes or their types. This scheme assumes no more than 127 predefined attributes in the notification. Alternatively, this design can take more bits to encode the attribute test.
虽然这种编组常规根据属性过滤器的DNF来命令并分组属性测试,但是为使整个属性过滤器的整体评估更加高效,基础设施单元(如路由器)也可选择按某其他顺序(或许根据动态获得的关于不同测试的成功或失败的可能性的本地数据)来评估测试。消息的订购ID字段是由代理产生的值,用于唯一识别后续请求中的代理的边缘路由器的订购,以便修改或取消该订购。具体而言,对订购的属性过滤器的动态修改是采用图18的示例中显示的消息格式进行传播的,除了主体是#.RESUBSCRIPTION,并且订购ID是要修改的先前登记的订购的ID。取消订购是例如在整个订购ID字段采用图18的消息格式进行传播的,其中主体是#.UNSUBSCRIPTION,并且订购ID是先前登记的要被取消的订购的ID。While this grouping routine orders and groups attribute tests according to the DNF of the attribute filter, to make the overall evaluation of the entire attribute filter more efficient, infrastructure units (such as routers) may choose to be in some other order (perhaps according to dynamically obtained local data on the likelihood of success or failure of different tests) to evaluate tests. The Subscription ID field of the message is a value generated by the proxy to uniquely identify the subscription of the proxy's edge router in subsequent requests to modify or cancel the subscription. Specifically, dynamic modifications to a subscription's attribute filter are propagated using the message format shown in the example of Figure 18, except that the body is #.RESUBSCRIPTION, and the subscription ID is the ID of the previously registered subscription to be modified. Unsubscription is propagated, for example, across the Subscription ID field in the message format of Figure 18, where the body is #.UNSUBSCRIPTION and the Subscription ID is the ID of the previously registered subscription to be cancelled.
以下提供了用于说明由上述代理进行的转换和编码的示例。考虑以下示范性属性过滤器表达式:价格>=10与(符号==“LU”或(量>=1000与量<=10000))。图19显示了描述步骤362中由代理所使用的对象以存储表达式的统一建模语言(UML)的图390。此图说明用于规定订购的等级关系,它可包括变量、恒定值或二者。图中的对象可以是根据特定实现的过滤器类实例。每个SimpleFilter(简单过滤器)对象描述了用于存储有关过滤器表达式的对应属性测试的信息的属性值。在图19的表达式中,“或”过滤器396连接两个“与”过滤器392和400。“与”过滤器392包含具有订购属性的简单过滤器394。类似地,“或”过滤器396包含简单过滤器398,“与”过滤器400包含简单过滤器402和404。Examples are provided below to illustrate the conversion and encoding performed by the above agents. Consider the following exemplary attribute filter expressions: price >= 10 and (symbol == "LU" or (quantity >= 1000 and quantity <= 10000)). FIG. 19 shows a Unified Modeling Language (UML) diagram 390 describing the objects used by the agent in
为此示例,假定属性价格、符号以及量为相关联信道的预定义属性,并假定它们分别定义在位置0、1和2中。此外,属性类型假定分别为无符号整数(类型代码6)、字符阵列(类型代码12)和无符号整数(类型代码6)。For this example, assume that the attributes Price, Sign, and Volume are predefined attributes of the associated channel, and assume they are defined in
考虑包含以上示范性属性过滤器表达式的下一订购作为它的属性过滤器。图18显示了将订购编组成消息。图18左边的简图386显示了实际的消息内容,而右边的简图388提供了消息的不同部分的图例。在本示例中,每个简图的宽度为四个字节。在编组之前,过滤器已转换为它的等价DNF:(价格>=10与符号==“LU”)或(价格>=10与量>=1000与量<=10000)。Consider the next order containing the above exemplary attribute filter expression as its attribute filter. Figure 18 shows the marshalling of subscriptions into messages. The diagram 386 on the left of Figure 18 shows the actual message content, while the diagram 388 on the right provides an illustration of the different parts of the message. In this example, each sketch is four bytes wide. Before marshalling, the filter has been converted to its equivalent DNF: (price >= 10 and symbol == "LU") or (price >= 10 and volume >= 1000 and volume <= 10000).
十六比特的属性测试编码显示为比特序列,间隙显示出分隔成不同的部分。注意,本示例中的价格的两个测试是不可合并的,由于它们是分开的析取项,因此它们被分开编组为无右界(“右开放范围”)的范围。另一方面,因为量的两个测试在相同的析取项中,因此它们可以结合,并由此将它们编组到一起作为单个的“闭合范围”的测试。The attribute test code of sixteen bits is shown as a sequence of bits, with gaps shown separated into distinct sections. Note that the two tests for price in this example are not mergeable, since they are separate disjuncts, they are grouped separately into ranges with no right bound ("right open range"). On the other hand, since the two tests of the quantity are in the same disjunct, they can be combined, thereby grouping them together as a single "closed-scope" test.
最后,还要注意到一定字段的特征是“假设的”;这意味着此示例的这些字段值是任意选择的,并且一般与所编组的订购无关。此外,订购的主体过滤器任意地选择为“>”,它与相关联信道定义的任何主体匹配。上述以及图18和19中所示的示例是只为说明目的而提供的,并且编组可用于任何其他类型的订购。而且,方法350只提供编组订购的一个示例,可以任何其他方式对它们进行编组。Finally, note also that the characteristics of certain fields are "hypothetical"; this means that the values of these fields for this example were chosen arbitrarily, and are generally independent of the order being marshaled. Additionally, the ordered subject filter is arbitrarily chosen to be ">", which matches any subject defined by the associated channel. The examples described above and shown in Figures 18 and 19 are provided for illustration purposes only, and groupings can be used for any other type of order. Also,
图17是输入消息的代理方法376的流程图。方法376可例如通过用户机122中的代理128和应用126实现。在方法376中,代理128接收来自对应于订购的智能路由器的消息(步骤378)。代理128例如利用消息中的信道ID确定对应于订购的信道(步骤380),并调用该信道的API(步骤382)。该API以GUI或其他格式在用户机上提供对于该订购的数据(步骤384)。输入消息的处理可采用与上述编码处理相反的、解码数据的处理,并且此解码(反编码)可在路由器或其他网络实体中执行。Figure 17 is a flowchart of a
通配符处理Wildcard handling
图20是通配符方法410的流程图。此方法说明针对过滤器采用一组路由规则以转换订购的表达式中的通配符的示例。方法410可用例如用代理128表示的由用户机122中的处理器134执行的软件模块来实现。或者,可在网络中由处理器93在智能路由器92或包含在ASIC91中的对应功能中的软件控制下处理通配符。通配符包括开字段(open fields)或可变长度字段,其示例在表21中提供。FIG. 20 is a flowchart of the wildcard method 410 . This method illustrates an example of wildcards in expressions that take a set of routing rules against a filter to translate the order. Method 410 may be implemented in a software module, such as represented by
在方法410中,代理128或其他实体接收具有通配符的订购(步骤412).订购的主体长度可在发布内容时由发布方规定,并且主体可在发布方机上进行预处理,以便例如对主体的字段进行计数并因此获得它的字段计数(长度).代理128计数过滤器操作数中字段的数量(步骤414),并初始化字段长度=N的新规则(过滤器)(步骤416).代理128检索订购的子字段(步骤418),并确定过滤器操作数子字段O[i]是否为通配符(步骤420).如果过滤器操作数子字段不是通配符,则代理128将合取子句增加到该规则中,字段[i]=O[i](步骤422).如果过滤器操作数有更多子字段(步骤424),代理128返回到步骤418以处理其他子字段.参数“i”表示字段,其中i在本示例中是表示字段数的整数.In method 410, a
在处理了子字段之后,代理128确定最后的过滤器操作数子字段是否是“>”(步骤426),如果是的话,则它将长度限制改变为字段长度>N-1(步骤428)。通配符处理可采用任何类型的符号,“>”只是这样的一个示例。在此示例中,“a.>”可意指a.b,a.c,a.d等,以及在所有的级上的所有其子主体(例如a.b.x,a.c.x,a.b.x.y等)。对于通配符的其他实现还可用其他符号。After processing the subfields, the
如果必要的话,代理128将已变换的规则传播给智能路由器或网络中的其他实体(步骤430)。因此,该方法重述通过上述子字段以便处理它们,将通配符转换为无通配符的规则,也就是不包含通配符的规则。通配符的转换可出现在网络中的任何地方,例如在订户机上或在智能路由器中。因此,此转换可在一个带有传播到其他实体的变换的规则的实体中进行,或者它也可动态地进行。
表23提供了用于处理通配符的这些示范性路由规则的概要以及示例。这些路由规则例如可在智能路由器中产生,或在其他网络实体产生并传播到智能路由器中。此外,提供表23中的路由规则只用于说明目的,也可以采用用于转换通配符的其他路由规则。Table 23 provides a summary and examples of these exemplary routing rules for handling wildcards. These routing rules can be generated in the intelligent router, for example, or generated in other network entities and propagated to the intelligent router. Additionally, the routing rules in Table 23 are provided for illustration purposes only, and other routing rules for converting wildcards may also be employed.
告警服务Alert service
上述智能的基于内容路由可用于许多实现中,其中之一涉及数字视频监视系统(DVSS)。例如,用户(如执法或安全机构)可输入对来自特定位置的摄像机的视频剪辑的订购。摄像机可捕获数字视频剪辑并经由具有基于内容路由的网络(如因特网)传送那些剪辑,在网络核心中其根据订购处理视频剪辑。因此,用户接收感兴趣的视频剪辑,并将它们的过滤分布于整个网络中。除视频剪辑以外,可分布任何其他类型的内容以提供任何类型的警告,这些示例包括安全破坏、失火以及欺诈检测。The intelligent content-based routing described above can be used in many implementations, one of which involves Digital Video Surveillance Systems (DVSS). For example, a user (such as a law enforcement or security agency) may enter an order for video clips from a camera in a particular location. Cameras can capture digital video clips and transmit those clips over a network with content-based routing, such as the Internet, where the video clips are processed on a subscription basis in the core of the network. Thus, users receive video clips of interest and their filtering is distributed throughout the network. Besides video clips, any other type of content may be distributed to provide any type of warning, examples include security breaches, fire and fraud detection.
在另一示例中,特定摄像机可包括相关联的移动传感器。在检测到移动时,移动传感器同时触发摄像机将拍摄的视频剪辑传送至网络,该网络采用基于内容路由来将视频剪辑路由至订户。In another example, a particular camera may include an associated motion sensor. When motion is detected, the motion sensor simultaneously triggers the camera to transmit the captured video clip to the network, which uses content-based routing to route the video clip to the subscriber.
因此,上述基于内容路由可显著减少网络在处理和路由视频剪辑方面的负担。例如,由每个电荷耦合装置(CCD)产生的视频信号要求通过数字视频录像(DVR)写到四个不同的目的地,它们分别是DVR管理的本地存储装置、连接到网络的全局存储装置、DVSS系统以及iDSS管理服务器。考虑到承载如此巨大的数据量所必须的网络带宽,由iDSS管理的CCD或DVR的总量可能不满足客户的容量需求。因此,带宽需要例如采用针对媒介或大量的订户的技术来限制。图21显示了一个监视系统的整体接构视图,其中每个DVR可管理四个或十六个CCD。Therefore, the content-based routing described above can significantly reduce the burden on the network in processing and routing video clips. For example, video signals generated by each charge-coupled device (CCD) are required to be written to four different destinations by a digital video recorder (DVR), which are local storage managed by the DVR, global storage connected to the network, DVSS system and iDSS management server. Considering the necessary network bandwidth to carry such a huge amount of data, the total amount of CCDs or DVRs managed by iDSS may not meet the capacity requirements of customers. Therefore, bandwidth needs to be limited, for example, with techniques for media or large numbers of subscribers. Figure 21 shows an overall structure view of a surveillance system, where each DVR can manage four or sixteen CCDs.
结构概述:图22说明了主要基于上述技术的两项改进,以改善图21所示的监视系统的能力。如图22所示,第一项改进集中于如何减少DVR主干业务量,而第二项改进采用称为z盒的设备,该设备提供如上述那些功能的基于内容路由的功能,以提高数据传送效率。 Architecture overview: Figure 22 illustrates two improvements based primarily on the techniques described above to improve the capabilities of the surveillance system shown in Figure 21. As shown in Figure 22, the first improvement focuses on how to reduce DVR backbone traffic, while the second improvement uses a device called a z-box that provides content-based routing functions such as those described above to improve data transfer efficiency.
减少DVR主干上的本地业务量:数据分布方案中的低效率可导致严重的可扩展性问题。即,在DVR生成的图像文件采用基于TCP协议交付到其他的盒中时,带宽消耗随连接到局域网(LAN)的设备数量而线性增加。在iDSS的一个视图中,相同的流式视频数据需要发送到联网的存储装置(SAN或NAS)、iDSS监视器以及每个DVSS中,其中DVSS是远程监控软件。 Reduced local traffic on the DVR backbone: Inefficiencies in the data distribution scheme can lead to serious scalability issues. That is, when image files generated by a DVR are delivered to other boxes using a TCP-based protocol, bandwidth consumption increases linearly with the number of devices connected to a local area network (LAN). In one view of iDSS, the same streaming video data needs to be sent to networked storage devices (SAN or NAS), iDSS monitors, and each DVSS, where DVSS is remote monitoring software.
一种解决此问题的方法是对于每个DVR,在LAN上发布出仅一个数据流,并让其他连接到网络的设备接收相同的数据流作为订购的结果。因此,如果DVR的输出速率为10兆比特/秒(Mbps)的话,则相同的网络上例如有3个订购设备应当只需要网络的10Mbps,而非30Mbps。One way to solve this problem is to publish only one data stream on the LAN for each DVR, and let other devices connected to the network receive the same data stream as a result of ordering. Thus, if the output rate of the DVR is 10 megabits per second (Mbps), then for example 3 subscribing devices on the same network should only require 10 Mbps of the network, not 30 Mbps.
为达到此目的,上述发布-订购、事件通知API可用于DVR盒和利用DVR数据的任何设备(如iDSS、全局存储装置)上。API可以是简单但有效的,它可采用IP组播和恢复协议。API还可遵循以上的发布-订购模型,使得其他实现不需要改变代码,只要简单地利用提供API的完全版本的库便可进行重新链接。For this purpose, the publish-subscribe, event notification API described above can be used on the DVR box and on any device that utilizes DVR data (eg iDSS, global storage). API can be simple but effective, it can adopt IP multicast and recovery agreement. The API can also follow the publish-subscribe model above, so that other implementations do not require code changes and can simply be relinked using libraries that provide full versions of the API.
DVSS的代理服务器:每个DVSS可接通一条到DVR盒的连接(基于TCP)以接收流式视频数据。可扩展性提出了如上所述相同的问题。 Proxy server for DVSS: Each DVSS can open a connection (based on TCP) to the DVR box to receive streaming video data. Scalability presents the same issues as above.
参照图22,此方法可描述为2个阶段,例如在第一阶段1中,在LAN侧处,可提供代理服务器(如z盒1)以处理所有的DVSS输出数据(即从DVR输出到DVSS的数据).此代理服务器订购LAN上所有的DVR数据,并将该数据发布到外部网络(如因特网)上.DVSS订购此数据.因此,代理服务器z盒1提供了订户代理(如代理128)和发布方代理(如代理36),其中订户代理用于采集来自DVR的数据,发布方代理用于将此数据在整个发布-订购网络(如上述的发布-订购网络)上发布.Referring to Fig. 22, this method can be described as 2 stages, for example in the
即使在阶段1,业务量也会在LAN侧有极大地减少,但是业务量仍然可能堵塞输出链路,特别是在某些国家,在典型的不对称数字订户线路(ADSL)只有64千比特/秒(kbps)的上行链路速度时,尤其如此。Even in
继续参照图22,阶段2优选涉及租用或者获取在服务提供商机房中的连接并在那里设置第二z盒设备(如z盒2)。例如,z盒设备可放在Hi-Net主干上。可在客户住宅处建立从该设备至z盒2的单个连接(隧道)。With continued reference to Figure 22,
在此情况下,在客户住宅处的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)优选包括如上所述用于在此发布-订购网络上进行发布和订购的模块。In this case, the z-
数字内容交付digital content delivery
上述智能的路由基于内容可用于许多实现,包括路由通过订购的视频、音乐和软件更新。例如,用户可订购软件更新(如防病毒软件),并将该更新自动路由给他们。在其他示例中,用户可订购特定视频和音乐内容,并且也可使订购的内容自动路由给他们。视频和音乐例如可作为流式数字内容而接收。此外,网络核心中的分布处理大大减轻了提供软件、视频和音乐内容的服务器上的处理负担。因此,除其他好处以外,采用相同的网络基础设施来提供内容还可有效地增加网络带宽。The intelligent content-based routing described above can be used in many implementations, including routing video, music, and software updates through subscriptions. For example, users can order software updates, such as antivirus software, and have the updates automatically routed to them. In other examples, users can order specific video and music content and have the ordered content automatically routed to them as well. Video and music, for example, may be received as streaming digital content. In addition, distributed processing in the network core greatly reduces the processing burden on the servers that deliver software, video and music content. Therefore, using the same network infrastructure to deliver content effectively increases network bandwidth, among other benefits.
图23显示了一种用于实现此路由的特定结构。应当注意,该结构假设有两级高速缓存服务器C1和C2,优选驻留在网络服务提供商的设在同一位置的场所中。不过,在只有C1高速缓存服务器是可用的时候也可获得这些效益。术语C1和C2高速缓存服务器是指提供如上所述的分布式网络高速缓存的服务器(参见图14-15及相关描述)。该结构例如可在两个阶段中发展得来。第一阶段假设C2高速缓存服务器不存在,它在中央分布器450和C1高速缓存服务器之间采用快速文件传送机制,以减少服务器负载和发送大的媒体文件所需的时间。快速文件传送机制优选通过在中央分布器450与C1高速缓存服务器之间添加路由盒(图23中的470)而获得。第二阶段是在C2高速缓存服务器上添加路由盒,以及在用户(如用户机460)和C2高速缓存服务器之间采用上述订购机制。Figure 23 shows a specific structure for implementing this routing. It should be noted that this architecture assumes two levels of cache servers C1 and C2, preferably residing at the network service provider's co-located premises. However, these benefits are also obtained when only the C1 cache server is available. The terms C1 and C2 cache servers refer to servers that provide a distributed network cache as described above (see Figures 14-15 and associated description). The structure can be developed, for example, in two stages. The first stage assumes that the C2 cache server does not exist, and it uses a fast file transfer mechanism between the
采用路由盒的效益:路由盒470优选包括用于实现上述基于内容路由的模块(如上述智能路由器92)。采用路由盒470实现上述基于内容路由有两个主要效益。采用这些路由盒470的快速路由和文件传送解决方案可将文件传送的速度提高到传统文件传送协议(如FTP或RCP)的5倍。同时,也可在广域网(WAN)上实现高效组播。当数据从中央位置发送到一组接收器中时,此路由解决方案将通过利用网络组播拓扑和在WAN上构建组播隧道来减少服务器负载和网络带宽需求从而加快内容交付的速度。 Benefits of using a routing box : The
结构:将媒体内容从中央分布器交付到C1高速缓存服务器中.C1高速缓存服务器存储全部的内容文件.每个C1高速缓存服务器需要例如terra字节的磁盘空间来存储全部内容.用户(例如采用诸如订户机122的用户机460)请求C2高速缓存服务器的内容,该高速缓存服务器只存储部分内容.C2高速缓存服务器需要例如数百个吉字节的盘空间. Structure: The media content is delivered from the central distributor to the C1 cache server. The C1 cache server stores all content files. Each C1 cache server requires, for example, terra bytes of disk space to store all content. Users (such as using A
用户和C2高速缓存之间的文件传送:在用户460通过发出订购请求媒体文件时,该请求由其中一个C2高速缓存服务器来处理。如果所请求的媒体文件已在C2服务器中高速缓存,则立即交付此文件。如果未在C2服务器中高速缓存,则向C1高速缓存服务器发送订购并将所请求的文件从C1高速缓存服务器传送到C2高速缓存服务器。 File transfer between user and C2 cache: When a
从C1高速缓存器至C2高速缓存器预先将媒体数据高速缓存:基于用户订购或订购模型,可预先将媒体文件从C1高速缓存服务器高速缓存到C2高速缓存服务器中。例如,如果连接到C2高速缓存服务器的用户460对流行歌曲非常感兴趣,C1高速缓存服务器可将新的流行歌曲推向C2高速缓存服务器,即便是在C2高速缓存服务器上的任何用户460请求这种歌曲之前也这样做。 Pre-cache media data from C1 cache to C2 cache: Based on user subscription or subscription model, media files can be pre-cached from C1 cache server to C2 cache server. For example, if a
实现阶段:第一阶段涉及例如安装快速文件传送机制,具有在分布器450与所有的C1高速缓存服务器之间的内容路由。不需要C2高速缓存服务器。在此情况下,所有的用户460直接连接到C1高速缓存器上。C1高速缓存服务器定期从分布器450接收新的媒体文件。图24中显示了阶段1的结构。 Implementation Phase: The first phase involves, for example, installing a fast file transfer mechanism with content routing between
注意,在图24中,分布器450向路由盒470只发送新的媒体文件一次,由上述智能的基于内容路由技术驱动。因此,减少了分布器450的负载。路由盒470采用快速文件传送机制将文件发送到每个C1高速缓存服务器。在此情况下,在接收器460端不需要额外的路由盒。或者,其他类型的服务器可用于C1高速缓存服务器。Note that in FIG. 24,
现参照图25,其中显示了实现阶段2的实施例的结构。本示例中的阶段2优选采用内核实现的路由盒470来路由和发送数据。内核层解决方案还减少了发送文件时的开销,这是因为它需要更少的缓冲器拷贝以及更少的环境交换时间(context-switching time)。此外,阶段2解决方案在结构中增加了C2高速缓存服务器,如图25所示。同样,如图所示,优选在服务提供商网络中采用共同定位以在C2站点上添加路由盒470。这进一步显著减少了带宽需求,可能有数百倍的带宽减少。Referring now to Figure 25, there is shown the structure of an
如图25所示,C1高速缓存服务器和C2高速缓存服务器之间传送的文件经由与C1高速缓存服务器相关联的路由盒470和与C2高速缓存服务器相关联的路由盒470传送。在此方式中,采用这些路由盒470实现了C1和C2高速缓存服务器之间的快速路由和文件传送解决方案。As shown in FIG. 25, files transferred between the C1 cache server and the C2 cache server are transferred via the
服务质量管理Service Quality Management
上述智能的基于内容路由例如可用于以特定交付保证路由内容。例如,基于服务级协定(SLA),ISP或内容提供商可预留带宽来保证服务质量(QoS)。这可通过上述基于内容智能路由而高效地完成。The intelligent content-based routing described above can be used, for example, to route content with certain delivery guarantees. For example, based on a Service Level Agreement (SLA), an ISP or content provider may reserve bandwidth to guarantee Quality of Service (QoS). This can be efficiently done by content-based intelligent routing as described above.
结构:存在至少两种保证内容交付中的QoS的可能配置。第一种配置是将多个链路连接到一个或多个电话公司(TELCO)网络中。第二种配置是只用一条到TELCO网络的网络链路。如图26中所示的示例,有两层路由盒(R盒)。R盒1基于数据分组的内容将分组路由到R盒2和R盒3。R盒2和R盒3将数据分组路由到不同的网络链路(如L1-L4)中,每条链路连接到TELCO网络。为给高级用户预留带宽,为最高SLA客户产生的数据分组被路由到具有最高带宽(最高优先级)的链路上,以保证那些客户的特定QoS。 Structure: There are at least two possible configurations for guaranteeing QoS in content delivery. The first configuration is to connect multiple links into one or more telephone company (TELCO) networks. The second configuration uses only one network link to the TELCO network. As the example shown in Figure 26, there are two layers of routing boxes (R boxes). R-
如图27中所示的示例,R盒1将数据分组路由到R盒2和R盒3.R盒2和R盒3将数据分组又路由到不同的通信链路中,它们随后全部连接到R盒4.R盒4基于每条链路的QoS水平从四条链路获取数据分组.随后,R盒4通过网络链路(如L5)将数据分组发送到因特网ISP.通过实现在每条链路中获取数据的各种算法,该系统可为每条链路动态分配带宽,以便得到比多链路配置更佳的QoS管理.As an example shown in Figure 27, R-
技术:QoS保证可影响上述智能和分布的基于内容路由的技术。为基于内容路由标记要路由的每个分组。解决方案为ASP/内容提供商作出经济可行的QoS的部署,此外还可能有其他好处。 Technology: QoS guarantees can affect the intelligent and distributed content-based routing technology described above. Mark each packet to be routed for content-based routing. The solution makes for an economically viable QoS deployment for ASP/content providers, and may have other benefits as well.
效益:该解决方案可提供给因特网服务提供商(如IDC)或内容提供商(如按需媒体(MOD)服务提供商),以便基于客户的SLA为不同的客户预留带宽。 Benefits: This solution can be provided to Internet service providers (such as IDC) or content providers (such as media on demand (MOD) service providers) to reserve bandwidth for different customers based on the customer's SLA.
实时告警:告警可具有不同的优先级。例如,安全和失火告警可赋予最高优先级,而新的告警可赋予更低优先级。在没有QoS路由的情况下,最高优先级告警可能不能以实时方式到达它们的订户,因为ASP的网络带宽可能被具有更低优先级的告警和通信占用。这种解决方案防止了此问题的发生。而且,可基于客户的SLA将告警发送到每个客户。高级客户可以付出更多的费用并拥有分配给他们的更多带宽。 Real-time alerts: Alerts can have different priorities. For example, security and fire alerts can be given the highest priority, while new alerts can be given lower priority. Without QoS routing, the highest priority alerts may not reach their subscribers in a real-time manner because the ASP's network bandwidth may be occupied by alerts and traffic with lower priorities. This solution prevents this problem from happening. Also, alerts can be sent to each customer based on the customer's SLA. Premium customers can pay more and have more bandwidth allocated to them.
实时数据交付:对于一些应用(如按需音频(VOD)、MOD或IP上的语音传送业务(VoIP)),带宽可用性影响了这些应用的质量。这种解决方案可按如上所述通过检查分组内容基于消息类型来路由数据分组。对于一些带宽敏感的应用,它们的数据分组可路由到具有更高优先级的链路。除了消息类型之外,数据分组还可基于它们的SLA级路由到各个订户。可采用这种解决方案将对于更高的SLA客户的分组路由到具有更高优先级的链路。 Real-time data delivery: For some applications, such as audio on demand (VOD), MOD, or voice over IP (VoIP), bandwidth availability affects the quality of these applications. Such a solution may route data packets based on the message type by inspecting the packet content as described above. For some bandwidth-sensitive applications, their data packets can be routed to links with higher priority. In addition to message type, data packets can also be routed to individual subscribers based on their SLA level. This solution can be employed to route packets for higher SLA clients to links with higher priority.
软件或防病毒软件的更新也可利用这种解决方案。例如,可将防病毒文件路由到具有最高优先级的链路,以确保实时防病毒更新,而可将音频驱动文件路由到具有较低优先级的链路。Software or antivirus software updates can also take advantage of this solution. For example, antivirus files can be routed to the highest priority link to ensure real-time antivirus updates, while audio driver files can be routed to lower priority links.
基于内容的过滤:采用共同定位服务并将R盒置于TELCO网络内,系统可在ISP之外执行过滤和动态高速缓存,如图28所示。在TELCO网络内部的R盒可基于上述的内容过滤技术来过滤数据,以减少进入IDC/ISP网络的业务量。这可用来阻止黑克攻击,例如DOS攻击或未授权的数据访问。由于能够检查请求的内容,因此R盒还可以是用于静态和动态web数据的高速缓存盒。此解决方案的优点包括例如安全、节约TELCO和ISP之间的网络带宽以及节约ISP服务器的负载。 Content-Based Filtering: Using co-location services and placing the R-box inside the TELCO network, the system can perform filtering and dynamic caching outside the ISP, as shown in Figure 28. The R box inside the TELCO network can filter data based on the above-mentioned content filtering technology, so as to reduce the traffic entering the IDC/ISP network. This can be used to prevent hacking attacks such as DOS attacks or unauthorized data access. The R box can also be a cache box for static and dynamic web data, since the content of the request can be inspected. The advantages of this solution include eg security, saving network bandwidth between TELCO and ISP, and saving load on ISP servers.
利用选择组播进行高速缓存Caching with Selective Multicast
消息持续是一种可以在稍后时间存储消息并检索它们的能力。大量的特定应用(如电子邮件)通常对于流过网络的消息需要超长的消息持续。在理想状态下,在网络没有故障的时候,总是连接的订户应当不需要任何超过针对这些特定应用所需要的持续。然而,现实中,消息可能会在通过网络时由于各种原因“丢失”,例如(1)或者在网络内部或在用户端处出现了故障或缓冲器溢出或(2)用户显示地断开了网络连接并在一段时间之后再次连接。Message persistence is the ability to store messages and retrieve them at a later time. Mass specific applications such as electronic mail often require extremely long message durations for messages flowing through the network. Ideally, always-connected subscribers should not require any more persistence than is required for these particular applications when the network is not down. In reality, however, messages may be "lost" as they travel through the network for various reasons, such as (1) a failure or buffer overflow either within the network or at the user's end or (2) the user explicitly disconnects The network connects and connects again after a while.
这里所述的事件通知系统持续模型被分成两级:短期持续和长期持续。短期持续专用于恢复由于网络拥塞或短期的链路故障而引起丢失的分组。长期持续专用于恢复其他故障,包括例如用户连接失败或ISP网络故障、用户机故障、较长期的网络故障和/或其他故障。以下将描述这两种方案的实施例。The event notification system persistence model described here is divided into two levels: short-term persistence and long-term persistence. Short-term persistence is dedicated to recovering lost packets due to network congestion or short-term link failures. Long-term persistence is dedicated to recovering from other failures, including, for example, user connection failures or ISP network failures, user computer failures, longer-term network failures, and/or other failures. Examples of these two schemes will be described below.
短期持续:数据重传和流控制Short duration: data retransmission and flow control
在数据网络中,数据丢失的原因可简单地划分为链路故障和缓冲器溢出。为给事件通知系统提供可靠的信道,需要解决这些问题。对于链路故障,可以实施前向纠错(FEC)方案以纠正由链路故障引起的一些错误。然而,仍然有必要提供一种在错误非常严重以致于没有FEC方案可校正它的时候恢复分组的方案。就缓冲器溢出而言,必须要防止缓冲器流发生。流控制方案通常用于数据网络以防止这种问题。In data networks, the causes of data loss can be simply divided into link failure and buffer overflow. These issues need to be addressed in order to provide a reliable channel for event notification systems. For link failures, a forward error correction (FEC) scheme can be implemented to correct some errors caused by the link failure. However, there is still a need to provide a scheme for recovering packets when the error is so severe that no FEC scheme can correct it. As far as buffer overflow is concerned, it is necessary to prevent buffer flow from occurring. Flow control schemes are often used in data networks to prevent this kind of problem.
在短期持续方案中,传输控制协议(TCP)隧道优选用于逐跳地连接事件路由器(如智能路由器12)。基于可靠的层2隧道而不是采用可靠传输协议(如RMTP)的原因是多方面的。在事件通知系统中的短期持续方案中,如果消息不满足过滤规则,则消息优选由路由器过滤出。因此,接收路由器通常不可以通过采用类似源序列号的方案检测到分组的丢失。同样,对于所有接收路由器也不希望确认它们接收的每个分组,因为这样将会导致确认过量(即ACK扩增)。此外,为避免缓冲器溢出,对于短期持续模型实施流控制方案,以便在路由器用完缓冲器空间之前路由器可请求转发给它消息的邻近路由器减速。这些方案均包含于TCP中。In a short-term persistence scheme, Transmission Control Protocol (TCP) tunnels are preferably used to connect event routers (eg, intelligent router 12) hop-by-hop. There are many reasons for relying on
TCP传输策略:在用于短期持续方案的TCP中,传输窗优选在本地用于数据发送器以协助跟踪已进行重传的数据。采用传输窗的目的在于两个方面:首先,传输窗确保了发送器将会明确地知道已由接收器正确地接收数据;其次,传输窗允许更佳地利用信道容量。在TCP中,需要隐含或明确地确认发送器发送的每个字节。传输窗有助于发送者跟踪已发送并确认的数据。传输窗还改善了信道利用,因为发送者可以在传输窗内发送数据,而不用停止并等待要得到确认的前一分组。一旦前一数据得到确认,则窗将自动前进。 TCP transmission strategy: In TCP for short-term persistent schemes, the transmission window is preferably used locally at the data sender to assist in tracking data that has been retransmitted. The purpose of employing the transmission window is twofold: firstly, the transmission window ensures that the sender will definitely know that the data has been correctly received by the receiver; secondly, the transmission window allows better utilization of the channel capacity. In TCP, every byte sent by the sender needs to be acknowledged either implicitly or explicitly. Transmission windows help senders keep track of data that has been sent and acknowledged. Transmission windows also improve channel utilization because the sender can send data within the transmission window without having to stall and wait for the previous packet to be acknowledged. Once the previous data is confirmed, the window will automatically advance.
接收器窗也是在TCP中进行维护的。接收器窗优选用来表明在数据接收器端的可用缓冲器空间。它的可用缓冲器空间值发送至发送器,使得发送器知道如何在接收器侧避免溢出缓冲器。Receiver windows are also maintained in TCP. The receiver window is preferably used to indicate the available buffer space at the receiver side of the data. Its available buffer space value is sent to the sender so that the sender knows how to avoid overflowing the buffer on the receiver side.
TCP拥塞控制:由于TCP设计为端到端的传输协议,因此短期持续方案中所采用的TCP也解决了在发布-订购网络内部的缓冲器溢出。为解决此问题,用于短期持续模型的TCP优选采用第三窗:拥塞窗。该拥塞窗用于使发送器猜测在沿通路的路由器上的最大缓冲器空间。简言之,如果发送器检测到分组中的丢失则拥塞窗大小被减少,或反之则增加。 TCP Congestion Control: Since TCP is designed as an end-to-end transport protocol, the TCP used in the short-term persistence scheme also solves the buffer overflow inside the publish-subscribe network. To solve this problem, TCP for the short-term persistence model preferably employs a third window: the congestion window. The congestion window is used to make the sender guess the maximum buffer space at the routers along the path. In short, the congestion window size is decreased if the sender detects a loss in packets, or increased vice versa.
长期持续:持续信道的高速缓存Long Persistence: Caching of Persistent Channels
信道(如上所述)可以是持续或实时的。实时信道传送通常只实时有用且没有任何应用特定的持续需求的数据。持续信道存储在持续时间帧T内通过网络的数据。换句话说,持续信道的持续性在时间帧T期间被保证。数据的这种持续性通过以下步骤获得,例如:在每个边缘节点处高速缓存数据持续的信道持续时间;在故障条件下检索来自对用户透明的高速缓存器的数据;允许用户明确地从高速缓存器中检索数据;通过防止路由器故障和在路由器之间建立可靠隧道使经过网络的数据流持续;以及防止在复制过程中的信道部件故障。Channels (as described above) can be persistent or real-time. Real-time channels carry data that is generally only useful in real time and does not have any application-specific persistent requirements. A persistent channel stores data that passes through the network for a persistent time frame T. In other words, the persistence of the persistent channel is guaranteed during the time frame T. This persistence of data is achieved by steps such as: caching data at each edge node for the duration of the channel; retrieving data from the cache transparent to the user under failure conditions; Retrieve data from buffers; enable continuous data flow across the network by protecting against router failures and establishing reliable tunnels between routers; and protect against channel component failures during replication.
因此,如下所述,当订户失效并在持续信道的时间帧T内再次返回时,长期持续方案优选使利用持续信道登记的订户可以检索在网络中高速缓存的在最后“X”时间帧(X<T)的较早数据。Therefore, as described below, when a subscriber fails and returns again within the time frame T of the persistent channel, the long-term persistent scheme preferably enables a subscriber registered with a persistent channel to retrieve the last "X" time frame (X <T) earlier data.
在长期持续方案中,订户应用(如应用126)优选可明确地将数据(如消息)从相关联的订户代理(如代理128)拉出.如上所述,代理可利用代理服务器或用它实现.在代理或代理服务器已从网络故障中恢复之后,代理优选以透明方式从高速缓存器中检索它与边缘路由器断开连接的一段时间内的数据.而且,在长期持续方案中优选容许订户只可访问到最后T时间帧的数据.为此,优选针对连接到代理(或代理服务器)上的边缘路由器确定时间.检索的高速缓存的数据优选在带外传送并没有实时保证.长期持续方案的实施例主要对象是失效并再次有效或失去与边缘路由器(如边缘路由器16)的连接的已有订户.新的订户可能不能够得到高速缓存的信息.In a long-term persistence scenario, a subscriber application (such as application 126) preferably can explicitly pull data (such as a message) from an associated subscriber proxy (such as proxy 128). As described above, the proxy can utilize a proxy server or implement it . After the proxy or proxy server has recovered from a network failure, the proxy preferably retrieves data from the cache transparently for a period of time when it was disconnected from the edge router. Also, in a long-term persistence scheme it is preferred to allow the subscriber to only Data up to the last T time frame is accessible. For this purpose, the time is preferably determined for the edge router connected to the proxy (or proxy server). Retrieved cached data is preferably delivered out-of-band with no real-time guarantees. Long-term persistence schemes Embodiments are primarily targeted at existing subscribers that have failed and re-validated or lost connection to an edge router (such as edge router 16). New subscribers may not be able to get cached information.
持续性定义:订户的时控持续性(利用时间帧T)定义为可从发布-订购网络检索最后的时间帧T的数据的能力。如果该订户离开了网络,则在持续信道上的在订户不在期间所接收的任何数据将在网络中保持一段时间帧T(从数据的接收开始)的时间。如果该订户在时间帧T内返回,则订户不会丢失任何数据。然而,如果订户在T和2T时间帧之间返回,则订户可能会丢失数据。如果订户在时间帧2T之后返回,则优选不保证订户访问任何先前的数据。 Persistence Definition: A subscriber's timed persistence (in terms of time frame T) is defined as the ability to retrieve data for the last time frame T from the publish-subscribe network. If the subscriber leaves the network, any data received on the persistent channel during the subscriber's absence will remain in the network for a period of time frame T (from the time the data was received). If that subscriber returns within time frame T, the subscriber will not lose any data. However, if the subscriber returns between the T and 2T timeframes, the subscriber may lose data. If the subscriber returns after time frame 2T, the subscriber is preferably not guaranteed to have access to any previous data.
以上定义要求在订户处发出叶的发布-订购网络树应当在订户消失后保留一时间帧T,随后可被剪除,以便将在订户离开后在时间帧T内接收的新的数据保留到时间帧T到达它的期满时间为止。The above definition requires that a publish-subscribe network tree that emits leaves at a subscriber should persist for a time frame T after the subscriber disappears, and can be subsequently pruned to preserve new data received within time frame T after the subscriber leaves to time frame T reaches its expiration time.
结构:图29是说明在高速缓存中提供持续性的发布-订购网络的某些部件的框图。如图所示,该网络包括核心路由节点548和边缘路由节点545。每个路由节点优选包括智能路由器92(用边缘路由节点显示)和传统主干路由器(未显示),如上图4所述。需要对持续信道执行高速缓存的每个智能路由器92优选具有与它共同定位的高速缓存管理器218,如图29所示。以上参照图8描述了高速缓存管理器218。智能路由器92优选负责短期持续性以便检索已丢失的数据或从路由器故障中恢复。高速缓存管理器218负责高速缓存数据以提供信道的长期持续性。高速缓存管理器218优选将此数据高速缓存在高速缓存器540中。高速缓存器540优选包括存储器和盘(未显示)。 Architecture: Figure 29 is a block diagram illustrating some components of a publish-subscribe network that provides persistence in cache. As shown, the network includes
带有高速缓存管理器218存在几项优点,如与智能路由器92相反,负责高速缓存长期持续性的数据,包括:索引高速缓存的数据的计算密集型操作可在单独的处理器上执行,因此路由和过滤处理器的性能不受到影响,周期性地将高速缓存的数据移动到盘的盘I/O操作也可在另一处理器上进行,因此防止了循环从路由和过滤中被窃取,避免边缘路由器必须进行定期的I/O。There are several advantages to having a
图29中还显示了代理128,它优选驻留在订户机122中(图29中未显示),如图5所示。代理128负责与高速缓存管理器218进行通信,以从高速缓存器540中检索数据、接收所检索的数据以及负责组织检索的数据。如上所指出的,代理128可利用代理服务器或用它来实现。Also shown in FIG. 29 is
在没有故障的条件下,只有边缘路由器节点545需要高速缓存管理器218与它们相关联.然而,虽然图29中未显示,由于长期持续方案预计故障,处于边缘路由节点545上游的第一级核心路由节点548的每一个优选包括用于存储数据的高速缓存管理器218.上游是远离代理128(即远离订户机122)移动的方向.上游核心路由节点的第一级指直接处于边缘路由节点545上游的路由节点.虽然发布-订购网络通常包括多个第一级上游核心路由节点,但图29只描述了一个第一级上游核心路由节点,核心路由节点548.如上所述,高速缓存管理器218在它所处的网络节点上提供数据的本地高速缓存.因此,位于各个核心路由节点(包括如核心路由节点548)上的高速缓存管理器218的操作提供了在整个网络核心中的数据的分布式高速缓存.这种分布式高速缓存为边缘路由节点545处的高速缓存提供了备份.In the absence of failures, only the
图30是说明在上游路由器(如核心路由节点548)中备份高速缓存的图。在长期持续方案中,每个高速缓存优选用下一个上游路由器的高速缓存器进行备份。上游高速缓存器存储了全部的输入数据并用作所有的下一级下游边缘路由器高速缓存器的备份。上游高速缓存中的数据优选采用与边缘路由器高速缓存相同的机制进行存储。FIG. 30 is a diagram illustrating backup caches in upstream routers (eg, core routing node 548). In a long-term persistence scheme, each cache is preferably backed up with the cache of the next upstream router. The upstream cache stores all incoming data and serves as a backup for all next-level downstream edge router caches. Data in the upstream cache is preferably stored using the same mechanism as the edge router cache.
下面参照图31,对于持续信道的高速缓存结构优选提供跨越四个不同模块的功能性:高速缓存管理器218-优选为负责存储通过智能路由器92的数据的服务器处理;路由器高速缓存API552-优选为负责从智能路由器92对高速缓存管理器218的所有控制面访问的库,如创建和破坏高速缓存;代理(或代理服务器)高速缓存API554-优选为负责从代理128(或代理128代理服务器)对高速缓存管理器218的所有控制面访问的库,如检索数据;以及代理128(或代理服务器)-优选负责从高速缓存器546搜集检索的数据并组织这些数据。Referring now to Figure 31, the cache structure for persistent channels preferably provides functionality across four distinct modules: Cache Manager 218 - preferably server processing responsible for storing data passing through
图31说明这四个模块的交互操作。代理128和智能路由器92二者优选通过高速缓存API库552和554访问高速缓存器。高速缓存API库552和554提供用于在高速缓存器546中初始化、创建并破坏对于主体的高速缓存、检索高速缓存地址、最重要的是从高速缓存器546检索数据的API。路由守护程序216优选通过数据通路将数据发送到高速缓存管理器218,而不用通过高速缓存API552。高速缓存API552和554优选对所有的控制消息(包括数据检索)采用控制通路。Figure 31 illustrates the interaction of these four modules. Both
高速缓存管理器-高速缓存器管理:下面参照图32,当高速缓存管理器218遇到了新的信道时,高速缓存管理器218优选激活信息服务器(如上述的服务器152、154和/或156)以得到该信道的信道管理器150。一旦高速缓存管理器218具有信道管理器150的地址,高速缓存管理器218优选检索信道管理器150的信道特性。信道特性优选例如包括:信道主体树和属性、信道的持续特性、信道的持续时间帧(T)、高速缓存的粒度性。在高速缓存管理器218可开始高速缓存流过用于给定主体的信道的数据之前,需要在高速缓存管理器218中创建那个主体的高速缓存。高速缓存管理器218期望创建高速缓存消息并响应于该消息创建主体高速缓存。随后可根据请求将此主体高速缓存破坏、挂起或恢复。图32说明关于订购的高速缓存的创建。 Cache Manager - Cache Management: Referring now to Figure 32, when the
高速缓存管理器-高速缓存数据输入:高速缓存管理器218优选以多种方式访问进入智能路由器92的数据,例如:IP似的解决方案,在此类情况下,智能路由器92输入链路上的数据还被转发到高速缓存管理器218中;采用探查机制(在这种机制中高速缓存管理器218侦听在智能路由器92的网络上传播的所有分组);在过滤后,智能路由器92转发需要在一个或多条链路上传播的每个消息到高速缓存器546;以及,高速缓存管理器218用作进入智能路由器92的所有数据的订户。 Cache Manager - Cache Data Input:
高速缓存管理器-高速缓存数据存储装置:下面参照图33,高速缓存管理器218优选在高速缓存器546中以多种方式索引数据,如以信道ID、主体、发布方ID、时间戳、时间粒度(G)、主高速缓存属性、链路(在为故障进行高速缓存时的特定的情况中)或其他方式.数据可被索引并按分级目录结构存储在文件系统或存储器中.数据优选高速缓存在存储器中,并被周期性地移动至盘.存储器中的高速缓存仅持续“G”时间粒度的持续时间.在时间G到期后,与树中的特定分支相关的所有数据优选移动到那一分支下的文件中,从而覆盖那一分支的最早的文件.(注意G最好不要实现为滑动窗,而是实现为绝对窗,因为要将每个消息单独地写到盘中代价高,而在一次操作中将所有的G间隔写到盘中效率更高).图33是示范性索引树的图.当为持续而高速缓存数据时,优选使用图33中的第一索引树. Cache Manager - Cache Data Storage: Referring now to Figure 33,
继续参照图33,主体优选分级存储,“a”是主体(如“a.b”、“a.c”“a.d”等)的父。高速缓存管理器218优选针对将所有主体映射到它们的对应文件位置的高速缓存器546保留hash表。在一些情况下,在上游路由器(如核心路由节点548)检测到一条其链路上的下游路由器(如边缘路由节点545)的故障时,高速缓存器546可能需要存储故障条件下的数据。用于恢复的第一方法是重新启动下游路由器(这可能会花费几分钟)。当下游路由器重新启动的时候,上游路由器将需要高速缓存正向下转发到那条链路的数据。此高速缓存(如图33中称为FM高速缓存)优选在输出链路上索引。Continuing to refer to FIG. 33, the subject is preferably stored hierarchically, and "a" is the parent of the subject (such as "a.b", "a.c", "a.d", etc.).
高速缓存管理器-垃圾搜集:如果信道是不持续的,则高速缓存器546不存储数据,而是立即将这些数据引下。如果信道是持续的,则高速缓存器546存储该数据。将特定信道的持续时间帧“T”分成N个时间粒度,每个大小为G。存储器中的高速缓存只持续G的持续时间。在高速缓存管理器确定已过了时间间隔G之后,数据被移动到盘中。高速缓存管理器218将在持续时间帧间隔T的持续时间将数据存储在盘上。 Cache Manager - Garbage Collection: If the channel is not persistent, the
一旦时间大于信道的持续超时(T)+间隔的上限,便将对应于时间间隔G的数据从盘中删除。为更将理解这一点,假设信道的T为2个小时。作为示例,高速缓存管理器218采用15分钟的时间粒度G。为了将数据从盘中删除,优选采用的策略是当在时间间隔G(15分钟)期间高速缓存的最后的数据已存储了T(2小时),在15分钟间隔期间高速缓存的整个数据将被丢弃。因此,在15分钟间隔的开始时高速缓存的数据在被删除之前将已存储了超过2小时。在本示例中,在每个15分钟间隔期间高速缓存的数据是数据块。如果持续时间帧T被分成N个间隔,则时间中的任何点上将对于每个主体在高速缓存器546中有N+1个数据块(盘上的N和存储器中的1)。Once the time is greater than the channel's duration timeout (T) + the upper limit of the interval, the data corresponding to the time interval G is deleted from the disk. To better understand this, assume that T of the channel is 2 hours. As an example,
高速缓存管理器-高速缓存数据检索:下面参照图34,代理128(或代理服务器)优选激活GetCache(得到高速缓存)操作以获得从当前时间回到时间“T”的数据。在图34中,将代理128连接以激活GetCache操作的高速缓存管理器218标为入口高速缓存器。由于路由器或代理128的故障/断开连接,入口高速缓存不可以拥有所有代理128请求的数据。在此情况中,入口高速缓存的工作是从所有其他高速缓存(如上游高速缓存器)中检索数据,比较数据并将它返回给代理128。图34说明从不同时间戳(TS1、TS2和TS3)的多个高速缓存(A、B和C)的检索操作。 Cache Manager - Cache Data Retrieval: Referring now to Figure 34, the proxy 128 (or proxy server) preferably activates the GetCache operation to obtain data from the current time back to time "T". In FIG. 34, the
高速缓存管理器218优选可只检索时间粒度G的块中的数据。因此代理128可得到比它期望或请求的更多的数据。此外,在从多个高速缓存中检索期间,在高速缓存之间可能存在一些交叠间隔,因此代理128还将会发现存在数据的复本,代理128应当对高速缓存所提供的数据流进行复本抑制。The
高速缓存管理器与其他模块的交互操作:在事件通知系统基础设施中,高速缓存管理器218优选与几个模块交互,如图35所示.当高速缓存管理器218遇到了新的信道(在创建高速缓存时间时),它优选激活信息服务器550以得到该信道的信道管理器150.一旦高速缓存管理器218拥有了信道管理器150的地址,它优选从信道管理器150得到信道特性.优选容许管理员模块552设置/修改一些特性,如高速缓存的粒度性.还优选容许管理员模块552人工创建或删除信道高速缓存. Cache Manager Interaction with Other Modules: In the event notification system infrastructure, the
代理高速缓存API-应用-代理交互:应用(如应用126)优选激活代理高速缓存API554以得到带有给定的主体和过滤器的高速缓存器546。最好是,应用可只检索来自高速缓存器546的数据,条件是它已订购了该数据。代理高速缓存API554优选地实际提供两个API。 Proxy Cache API-Application-Proxy Interaction: An application (such as application 126) preferably activates the
第一API允许取消订购应用,以便在相同的时间订购和检索高速缓存器546。如果设置了“fifo”标志,则创建订购并将其发送到边缘路由器节点545。然而,优选立即将订购置于“暂停”模式。在代理128已接收了所有的高速缓存的数据之后,代理128首先交付所有高速缓存的数据,跟踪对于发布方在数据中未看到的最后的序列,并随后从未由每个发布方看到的最后序列开始交付已暂停的数据。The first API allows unsubscribing applications to subscribe and retrieve
对于第二API,假设应用已订购一些数据并请求高速缓存的数据。在此情况下,已交付给该应用一些就高速缓存数据而言可能不是按顺序排好的数据。因此,在此情况下的“fifo”标志仅表明从高速缓存器546检索的数据应当在其本身中是按顺序排好的,而在规则数据流中不必按顺序排好。For the second API, assume that the application has ordered some data and requested cached data. In this case, some data has been delivered to the application that may not be in order as far as cache data is concerned. Thus, the "fifo" flag in this case simply indicates that the data retrieved from
代理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事件以表明数据传送已完成。 Proxy Cache API Interoperates with Cache: When a subscriber requests cached data, the Cache API on
如果高速缓存管理器218未在本地发现数据,它便利用代理128提供的“路由器列表”来定位所需要的数据。一旦高速缓存管理器218已搜集了所有必要的数据后,高速缓存管理器218便比较必要的数据,并在将它转发给代理128之前对其进行复本抑致。If the
高速缓存连接历史:为了能够从高速缓存器546检索数据,对于边缘以及上游高速缓存器而言,优选地在代理128处维护高速缓存连接历史。由于这种信息需要跨过代理128关闭和破坏,因此信息应当被持续地维护在文件中。盘上的高速缓存连接历史优选按存储在以下文件和格式中: Cache Connection History: In order to be able to retrieve data from
边缘高速缓存位置:边缘高速缓存的位置(如在边缘路由节点546上的高速缓存器546)优选从信道管理器/信道库中获得.这在引导时以及在边缘高速缓存器发生变化(如失去/恢复连接、连接移动)的任何随后的时刻出现.分配器通知代理128有关边缘高速缓存连接中的任何变化,并且这些变化随后被传递到代理128高速缓存库中.每当发生变化时,均使该变化持续. Edge Cache Location: The location of the edge cache (
持续存储装置:CACHE_ROOT/信道_id/信道-高速缓存的数据的示范性路径。 Persistent Storage: CACHE_ROOT/channel_id/channel - Exemplary path of cached data.
数据优选按以下格式进行存储:Data is preferably stored in the following format:
边缘高速缓存数;number of edge caches;
边缘高速缓存1:时间间隔数,开始时间1:终止时间1,开始时间2:终止时间2,...;以及edgecache1:interval number, starttime1:endtime1, starttime2:endtime2, ...; and
边缘高速缓存2:时间间隔数,开始时间1:终止时间1,开始时间2:终止时间2,...Edge cache 2: number of time intervals, start time 1: end
...带有作为列表中第一的最新时间戳。注意这两个不同的边缘高速缓存器将决不会有交叠的间隔(因为代理128一次只连接一个边缘高速缓存器)。每当增加新的项目时,便会检查旧的项目以看他们是否仍然有效;如果它们是无效的,则将它们丢弃。如果...with the most recent timestamp as first in the list. Note that these two different edge caches will never have overlapping intervals (since the
间隔终止时间+信道的持续超时<当前时间的话,则时间间隔变为无效。如果项目中的所有间隔无效则边缘高速缓存项目变为无效。注意“终止时间”为0意味着间隔当前是有效的。If the interval end time + the continuous timeout of the channel < the current time, the time interval becomes invalid. An edge cache entry becomes invalid if all intervals in the entry are invalid. Note that an "end time" of 0 means that the interval is currently valid.
上游高速缓存位置:上游高速缓存的位置(如核心路由节点548上的高速缓存器546)取决于主体。每个主体有其自身的组播树,因此该组第一级上游高速缓存是主体的功能。任何时候用户要订购主体,智能路由器92优选返回与主体相关联的上游高速缓存的列表。同样,由于故障或组播树中的重新组织而引起的上游高速缓存位置的任何变化也优选通过控制信道传递到代理128。这些变化在本地以持续存储(文件)方式存档。Upstream Cache Location: The location of an upstream cache (such as
持续存储装置:CACHE_ROOT/信道_标识符/主体(不按层次,而是按整个主体)。-高速缓存的数据的示范性路径。Persistent Storage: CACHE_ROOT/Channel_Identifier/Body (not by hierarchy, but by whole body). - Exemplary paths for cached data.
数据优选按以下格式进行存储:Data is preferably stored in the following format:
上游高速缓存数;Number of upstream caches;
上游高速缓存1:时间间隔数,开始时间1:终止时间1,开始时间2:终止时间2,...;upstream cache1: number of intervals, start_time1: end_time1, start_time2: end_time2, ...;
上游高速缓存2:时间间隔数,开始时间1:终止时间1,开始时间2:终止时间2,...Upstream cache 2: interval number, start time 1: end
...同样带有作为列表中第一的最新时间戳。与边缘高速缓存间隔不同的是,两个上游高速缓存器可具有交叠间隔,因为对于给定主体,代理128可以有几个上游高速缓存器。上游高速缓存文件的内容也是采用与边缘高速缓存器相同的算法搜集的垃圾。...also with the latest timestamp as the first in the list. Unlike the edge cache spacing, two upstream caches may have overlapping spacing, because for a given principal,
数据检索期间的高速缓存有效性:在代理128的使用期限期间,它连接到不同的边缘路由器和上游路由器。代理高速缓存API554优选将这种连接历史存储在本地存储器中。当代理128需要从高速缓存器546检索数据的最后的T间隔时,代理高速缓存API554优选查看连接历史,以确定可从中访问数据的高速缓存。如下为优选用于此目的的算法:1)高速缓存库探测所有的边缘高速缓存间隔并检查落于T时间帧内的间隔。如果间隔落于该时间帧内,则它便被添加到有效边缘高速缓存的列表Le中;2)列表Le是采用间隔开始时间进行分类的;3)针对Le中未由边缘高速缓存覆盖的每个间隔,探测出上游高速缓以得到可覆盖此间隔的所有的上游高速缓存间隔,并将有效间隔添加到列表Lu中;将Lu附加到Le上,并采用间隔开始时间对Le分类,从而创建了L。 Cache Availability During Data Retrieval: During the lifetime of the
此算法给出高速缓存L的列表以及针对每个高速缓存给出用以检索数据的时间间隔。此高速缓存L列表随后4)编组成得到高速缓存消息并被发送到高速缓存管理器218。在高速缓存管理器218末端,高速缓存管理器218优选5)从得到高速缓存消息中把高速缓存间隔去编组,并重新创建按开始时间的递增顺序分类的列表L。对于列表L中的每个间隔:高速缓存管理器218优选6)检查在前一间隔和当前间隔之间是否存在间隙,如果存在间隙,则向本地高速缓存请求该数据。如果不存在间隙,则高速缓存管理器218优选7)与相关的高速缓存器对话以得到该数据。高速缓存管理器218优选8)比较来自所有高速缓存的数据并将它发送给代理128。This algorithm gives a list of caches L and for each cache the time interval to retrieve data. This cache L list is then 4) assembled into a get cache message and sent to the
路由器高速缓存API:在智能路由器92上的路由器高速缓存API552负责激活高速缓存管理器218,以针对特定主体创建、破坏、挂起和恢复高速缓存。路由器高速缓存API552还处理初始化配置-将高速缓存地址从智能路由器92上载到信道管理器150中,使得代理128侧(代理高速缓存API554)可在需要的时候获得这种信息,以及针对其他路由器检索高速缓存器546的位置(这在智能路由器92想要通知代理128有关给定主体的上游高速缓存的时候使用,例如在订购答复时以及主体树发生了变化之后)。 Router Cache API:
用于拉出的高速缓存的使用:以上讨论集中于采用高速缓存实现持续信道并允许返回订户将数据从网络拉出。备选实施例允许任何订户(新的或返回的)可以将任何种类的数据从高速缓存器546拉出(如包括订户可能还没有订购,但由于其它一些人的订购而在高速缓存器546中的数据)。此实施例和前一实施例之间的区别是,对于返回订户而言,到目前为止数据是得到保证的,并且数据的位置是众所周知的,而对于新的订户而言,存储数据的位置是未知的。实现此备选实施例的一种简单方式是在该信道上发布“FindCache(寻找高速缓存)”请求。“FindCache”请求包含信道id、主体、过滤器、时间间隔以及代理128的位置,代理128寻找带有所请求的高速缓存的数据的高速缓存器546。所有的高速缓存器546均侦听“寻找高速缓存”请求。当每个高速缓存器546接收到该请求时,高速缓存器546便查看对应数据是否在其数据存储器中,如果在的话,便在单播消息中送回它自己的位置。代理128选择一个高速缓存器546并在其上激活得GetCache操作以得到数据。 Use of caches for pull: The above discussion has focused on employing caches to implement persistent channels and allow returning subscribers to pull data from the network. Alternative embodiments allow any subscriber (new or returning) to pull any kind of data from cache 546 (such as including a subscriber who may not have subscribed yet but is in
最新数据拉出:其他实施例包括允许订户应用(如应用126)可得到给定主体的最新消息的最新数据拉出特征。这对诸如股票报价告警的数据是有用的,例如在用户只想知道最近的股票价格而不是其历史的时候。 Latest Data Pull: Other embodiments include a latest data pull feature that allows a subscriber application (such as application 126) to obtain the latest news for a given subject. This is useful for data such as stock quote alerts, for example when the user only wants to know the most recent stock price and not its history.
高速缓存管理器的实现:优选有三种线程类型,例如,在高速缓存管理器218实现中:数据高速缓存线程-数据高速缓存线程优选从到智能路由器92的连接中获取数据,并在存储器中索引和存储该数据;数据存储线程-一旦到达了时间间隔的终点,数据存储线程便优选将存储器中所存储的数据移动到盘中,并且在该处理中还对过期数据执行垃圾搜集;数据检索线程-数据检索线程优选负责获取对高速缓存的数据的请求并从高速缓存器546中检索数据.这三类线程可实现为单线程或线程池.优选的是,数据高速缓存线程和数据存储线程在将数据移动到盘中的时间进行同步.在数据存储线程和数据检索线程之间的这种同步可防止在检索数据时删除数据. Cache Manager Implementation: There are preferably three thread types, for example, in a
数据结构:以上在表19和所附的描述中提供了用于高速缓存的数据结构示例。 Data Structures: An example of a data structure for caching is provided above in Table 19 and the accompanying description.
数据存储装置:图36是说明用于在名为“Aquila高速缓存”的高速缓存器546中存储数据文件的优选目录结构的图。注意,每个主体级目录优选具有一组子主体目录以及存储发布在该主体上的数据的数据目录。例如,在娱乐信道上的Fox.Movies上发布的数据将进入到目录AquilaCache/娱乐/Fox/电影/数据的文件中,在主体Fox上发布的数据将进入到目录AquilaCache/娱乐/Fox/数据中的文件中。为了提高数据存储装置的速度,特定主体的目录层次优选在智能路由器92请求高速缓存器546开始对给定的信道和主体的高速缓存时进行创建。 Data Storage: Figure 36 is a diagram illustrating a preferred directory structure for storing data files in the
数据检索:从高速缓存器546检索数据应当是高效的,以便不会阻止数据存储装置和使高速缓存器546停顿。数据检索从盘和存储器中检索数据。数据检索所采取的步骤优选如下:1)定位数据节点;2)锁定数据节点;3)定位需要检索的数据的时间戳;3)检索数据并将其存储在存储器中;4)对数据节点解锁;5)在将在存储器中存储的所检索的数据推出到代理128客户中之前对它进行过滤并按顺序排列。 Data Retrieval: Retrieving data from
虽然已结合示范性实施例描述了本发明,但将会理解,对于本领域的技术人员而言,可容易地进行许多种修改,并且本申请旨在涵盖它的任何改编版本或变型。例如,在不背离本发明范围的情况下,可采用各种类型的发布方机、用户或订户机、信道和它们的配置以及基于内容路由和其他功能的硬件和软件实现。本发明应当仅由权利要求和其等效物来限定。While the invention has been described in conjunction with exemplary embodiments, it will be understood that numerous modifications may readily be made by those skilled in the art and that this application is intended to cover any adaptations or variations thereof. For example, various types of publisher machines, user or subscriber machines, channels and their configurations, as well as hardware and software implementations based on content routing and other functions, may be employed without departing from the scope of the present invention. The invention should be limited only by the claims and the equivalents thereof.
Claims (110)
Applications Claiming Priority (9)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US39464102P | 2002-07-08 | 2002-07-08 | |
| US39456102P | 2002-07-08 | 2002-07-08 | |
| US39471402P | 2002-07-08 | 2002-07-08 | |
| US39463102P | 2002-07-08 | 2002-07-08 | |
| US60/394,641 | 2002-07-08 | ||
| US60/394,561 | 2002-07-08 | ||
| US60/394,714 | 2002-07-08 | ||
| US60/394,631 | 2002-07-08 | ||
| PCT/US2003/021338 WO2004006486A2 (en) | 2002-07-08 | 2003-07-08 | Packet routing via payload inspection for alert services, for digital content delivery and for quality of service management and caching with selective multicasting in a publish-subscribe network |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN1701304A CN1701304A (en) | 2005-11-23 |
| CN1701304B true CN1701304B (en) | 2010-05-05 |
Family
ID=30119330
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN038212064A Expired - Lifetime CN1701304B (en) | 2002-07-08 | 2003-07-08 | Systems, methods and apparatus for packet routing via payload inspection in a publish-subscribe network |
Country Status (6)
| Country | Link |
|---|---|
| EP (1) | EP1535157A4 (en) |
| JP (2) | JP2005532748A (en) |
| KR (1) | KR100985237B1 (en) |
| CN (1) | CN1701304B (en) |
| AU (1) | AU2003256463A1 (en) |
| WO (1) | WO2004006486A2 (en) |
Families Citing this family (30)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0629764A (en) * | 1991-07-16 | 1994-02-04 | Nec Ic Microcomput Syst Ltd | Wind noise reduction microphone amplifier |
| JP4614128B2 (en) | 2004-12-10 | 2011-01-19 | 日本電気株式会社 | Packet delivery system, PAN registration device, PAN management device, and packet transfer device |
| CN100587746C (en) | 2004-12-23 | 2010-02-03 | 艾利森电话股份有限公司 | Method for notifying emergency event to multiple mobile terminals |
| US20070005725A1 (en) * | 2005-06-30 | 2007-01-04 | Morris Robert P | Method and apparatus for browsing network resources using an asynchronous communications protocol |
| CN100456753C (en) * | 2005-07-13 | 2009-01-28 | 华为技术有限公司 | Method and system for message matching |
| CN1925482B (en) * | 2005-09-01 | 2013-03-27 | 中兴通讯股份有限公司 | Transforming method and device for human-machine order format |
| US7894447B2 (en) | 2005-12-06 | 2011-02-22 | Lippershy Celestial Llc | Digital object routing |
| US8014389B2 (en) | 2005-12-06 | 2011-09-06 | Lippershy Celestial Llc | Bidding network |
| US8194701B2 (en) | 2005-12-06 | 2012-06-05 | Lippershy Celestial Llc | System and/or method for downstream bidding |
| US9686183B2 (en) | 2005-12-06 | 2017-06-20 | Zarbaña Digital Fund Llc | Digital object routing based on a service request |
| US8055897B2 (en) | 2005-12-06 | 2011-11-08 | Lippershy Celestial Llc | Digital object title and transmission information |
| JP4680068B2 (en) * | 2006-01-05 | 2011-05-11 | 富士通株式会社 | Communication control method, network and network device |
| US9330190B2 (en) | 2006-12-11 | 2016-05-03 | Swift Creek Systems, Llc | Method and system for providing data handling information for use by a publish/subscribe client |
| WO2012002726A2 (en) * | 2010-06-30 | 2012-01-05 | 한국전자통신연구원 | Communication node and communication method |
| KR20120002424A (en) | 2010-06-30 | 2012-01-05 | 한국전자통신연구원 | Communication node and communication method |
| CN101969469B (en) | 2010-10-25 | 2013-11-06 | 华为技术有限公司 | Callback processing method and device in telecom capability opening |
| IN2014KN01349A (en) | 2011-11-29 | 2015-10-16 | Ericsson Telefon Ab L M | |
| CN103166851B (en) * | 2011-12-16 | 2016-06-15 | 中国电信股份有限公司 | The transfer processing method of internet information and system |
| US9026410B2 (en) * | 2012-03-16 | 2015-05-05 | The Boeing Company | System and method for rapid management of logic formulas |
| KR101487859B1 (en) | 2014-01-15 | 2015-02-02 | 주식회사 이디엄 | Method for Collecting UDP Packet When Java Program Is Being Executed |
| CN103796342B (en) * | 2014-01-24 | 2017-02-15 | 北京奇虎科技有限公司 | Attribute information display system and router |
| CN104811740B (en) * | 2015-04-29 | 2019-01-08 | 北京奇艺世纪科技有限公司 | A kind of distribution method of video file, system and device |
| JP6665697B2 (en) | 2016-06-09 | 2020-03-13 | 富士通株式会社 | Past information providing program, past information providing method, and past information providing device |
| US10824598B2 (en) * | 2018-08-07 | 2020-11-03 | Dell Products L.P. | Handling file commit and commit-delete operations in an overlay optimizer |
| JP2020126283A (en) * | 2019-01-31 | 2020-08-20 | 有二 菱沼 | Corporate information transmission/reception system |
| CN112383582A (en) * | 2020-10-09 | 2021-02-19 | 爱普(福建)科技有限公司 | Management method and system for real-time data of edge layer |
| WO2022180690A1 (en) * | 2021-02-24 | 2022-09-01 | 日本電信電話株式会社 | Communication system, communication device, data distribution method, and program |
| JP2022164421A (en) * | 2021-04-16 | 2022-10-27 | Jcc株式会社 | Broadcast recording apparatus and program therefor |
| US12362916B2 (en) * | 2021-09-24 | 2025-07-15 | Cisco Technology, Inc. | Providing connection data to network devices for content inspection and replay attack mitigation |
| CN114900555A (en) * | 2021-12-14 | 2022-08-12 | 合肥哈工轩辕智能科技有限公司 | Data distribution method and device based on lossless compression algorithm |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2002045317A2 (en) * | 2000-11-28 | 2002-06-06 | Worldcom, Inc. | Network access system including a programmable access device having distributed service control |
| US20020087881A1 (en) * | 2000-12-29 | 2002-07-04 | Shlomi Harif | System, method and program for identifying and binding a process in a heterogeneous network |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO1997023096A1 (en) * | 1995-12-15 | 1997-06-26 | Bell Communications Research, Inc. | Systems and methods employing video combining for intelligent transportation applications |
| US5873084A (en) * | 1996-01-18 | 1999-02-16 | Sun Microsystems, Inc. | Database network connectivity product |
| GB2350758A (en) * | 1999-06-04 | 2000-12-06 | Ibm | Message broker providing a publish/subscribe sevice and method of processing messages in a publish/subscribe environment |
| JP3685651B2 (en) * | 1999-06-04 | 2005-08-24 | 沖電気工業株式会社 | Interconnect apparatus and active QoS mapping method |
| US6523068B1 (en) * | 1999-08-27 | 2003-02-18 | 3Com Corporation | Method for encapsulating and transmitting a message includes private and forwarding network addresses with payload to an end of a tunneling association |
| GB2354349A (en) * | 1999-09-16 | 2001-03-21 | Ibm | Event notification data processing with command and command notification combined into a single event |
| US7283502B1 (en) * | 2000-09-21 | 2007-10-16 | Lucent Technologies Inc. | Enhancement of framing protocol frame format to support quality of service |
| US7325249B2 (en) | 2001-04-30 | 2008-01-29 | Aol Llc | Identifying unwanted electronic messages |
-
2003
- 2003-07-08 CN CN038212064A patent/CN1701304B/en not_active Expired - Lifetime
- 2003-07-08 AU AU2003256463A patent/AU2003256463A1/en not_active Abandoned
- 2003-07-08 EP EP03763348A patent/EP1535157A4/en not_active Withdrawn
- 2003-07-08 WO PCT/US2003/021338 patent/WO2004006486A2/en not_active Ceased
- 2003-07-08 JP JP2004520021A patent/JP2005532748A/en active Pending
- 2003-07-08 KR KR1020057000385A patent/KR100985237B1/en not_active Expired - Fee Related
-
2009
- 2009-12-25 JP JP2009296288A patent/JP2010148118A/en active Pending
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2002045317A2 (en) * | 2000-11-28 | 2002-06-06 | Worldcom, Inc. | Network access system including a programmable access device having distributed service control |
| US20020087881A1 (en) * | 2000-12-29 | 2002-07-04 | Shlomi Harif | System, method and program for identifying and binding a process in a heterogeneous network |
Also Published As
| Publication number | Publication date |
|---|---|
| KR20050017108A (en) | 2005-02-21 |
| WO2004006486A2 (en) | 2004-01-15 |
| WO2004006486A3 (en) | 2004-05-27 |
| AU2003256463A1 (en) | 2004-01-23 |
| AU2003256463A8 (en) | 2004-01-23 |
| JP2005532748A (en) | 2005-10-27 |
| EP1535157A4 (en) | 2010-09-08 |
| KR100985237B1 (en) | 2010-10-04 |
| EP1535157A2 (en) | 2005-06-01 |
| JP2010148118A (en) | 2010-07-01 |
| CN1701304A (en) | 2005-11-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN1701304B (en) | Systems, methods and apparatus for packet routing via payload inspection in a publish-subscribe network | |
| US7672275B2 (en) | Caching with selective multicasting in a publish-subscribe network | |
| US7376092B2 (en) | Method and apparatus for implementing persistent and reliable message delivery | |
| US7551629B2 (en) | Method and apparatus for propagating content filters for a publish-subscribe network | |
| US7587517B2 (en) | Packet routing via payload inspection for quality of service management | |
| US20040083305A1 (en) | Packet routing via payload inspection for alert services | |
| Zhang et al. | Scalable name-based data synchronization for named data networking | |
| US7545805B2 (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 | |
| US7627603B2 (en) | Method and apparatus for implementing query-response interactions in a publish-subscribe network | |
| KR100971506B1 (en) | Method and apparatus for reliable and effective content-based routing and query and response in publishing subscription networks | |
| US7653753B2 (en) | Method and apparatus for content-based packet routing using compact filter storage and off-line pre-computation | |
| US20040078450A1 (en) | Packet routing via payload inspection for digital content delivery | |
| US6910033B2 (en) | Method for storing Boolean functions to enable evaluation, modification, reuse, and delivery over a network | |
| Mastorakis et al. | Real-time data retrieval in named data networking | |
| CN120658593A (en) | Network data intelligent tool system and method based on Model Context Protocol (MCP) | |
| EP2112804A2 (en) | Packet routing via payload inspection and subscription processing in a publish-subscribe network | |
| Fox et al. | Building messaging substrates for web and grid applications | |
| US7117270B2 (en) | Method for sending and receiving a Boolean function over a network | |
| US7411954B2 (en) | Efficient implementation of wildcard matching on variable-sized fields in content-based routing | |
| Hall | Multi-layer network monitoring and analysis | |
| Koskenvaara | Decentralization of multimedia content in a heterogeneous environment | |
| Grossman | High performance data streaming in service architecture | |
| HK1082858B (en) | Packet routing via payload inspection and subscription processing in a publish-subscribe network |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| C10 | Entry into substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| C14 | Grant of patent or utility model | ||
| GR01 | Patent grant | ||
| CX01 | Expiry of patent term |
Granted publication date: 20100505 |
|
| CX01 | Expiry of patent term |