



































本発明は、引用により本願に援用される、2002年7月8日に出願された、米国仮出願番号60/394,631号、発明の名称「サービス品質管理のためのペイロード検査によるパケットルーティング(Packet Routing Via Payload Inspection for Quality of Service Management)」に対する優先権を主張する。また、本出願は、2002年7月19日に出願され、引用により本願に援用される、米国特許出願番号10/199,356号、発明の名称「ペイロード検査によるパケットルーティング(Packet Routing Via Payload Inspection)」、米国特許出願番号10/199,368号、発明の名称「チャンネルを用いたルータにおけるコンテンツベースの経路選択及びフィルタリングの用の方法及び装置(Method And Apparatus For Content-Based Routing And Filtering At Routers Using Channels)」、米国特許出願番号10/199,439号、発明の名称「ネットワークを介して、論理関数を送受する方法(Method for Sending And Receiving A Boolean Function Over A Network)」、米国特許出願番号10/199,369号、発明の名称「ネットワークを介して評価、変更、再利用及び配信を可能にするのための論理関数を保存する方法(Method For Storing Boolean Functions To Enable Evaluation, Modification, Reuse, And Delivery Over A Network)」、米国特許出願番号10/199,388号、発明の名称「接続ベースのルーティングにおける可変長フィールドを照合するワイルドカードを効率的な実行する方法(Efficient Implementation of Wildcard Matching On Variable-Sized Fields In Connect-Based Routing)」の一部継続出願である。 The present invention is a US Provisional Application No. 60 / 394,631, filed July 8, 2002, incorporated herein by reference, entitled “Packet Routing with Payload Inspection for Quality of Service Control”. Claims priority over “Packet Routing Via Payload Inspection for Quality of Service Management”. This application is also filed on Jul. 19, 2002, which is incorporated herein by reference, US patent application Ser. No. 10 / 199,356, entitled “Packet Routing Via Payload Inspection”. US patent application Ser. No. 10 / 199,368, entitled “Method and Apparatus For Content-Based Routing And Filtering At Routers”. Using Channels ”, US Patent Application No. 10 / 199,439, title of invention“ Method for Sending And Receiving A Boolean Function Over A Network ”, US
また、上述した出願の一部継続出願である、2003年3月28日に出願された、米国特許出願番号10/400,671号、発明の名称「信頼性が低いネットワークにおける信頼性が高い発行−購読システムアーキテクチャ(Reliable Publish/Subscribe System Architecture over Unreliable Networks)」、米国特許出願番号10/400,465号、発明の名称「コンパクトフィルタストレージ及びオフラインの事前計算を用いたコンテンツベースのパケットルーティングのための方法及び装置(Method and Apparatus for Content-Based Packet Routing Using Compact Filter Storage and Off-Line Pre-computation)」、米国特許出願番号10/400,453号、発明の名称「発行−購読ネットワークにおいて、問合せ−応答インタラクションを実行する方法及び装置(Method and Apparatus for Implementing Query-Response Interactions in a Publish-Subscribe Network)」、米国特許出願番号10/400,462号、発明の名称「持続的で信頼できるメッセージ配信を実行する方法及び装置(Method and Apparatus for Implementing Persistent and Reliable Message DELIVERY)」、米国特許出願番号10/400,444号、発明の名称「発行−購読ネットワークにおいて、コンテンツベースを伝搬する方法及び装置(Method and Apparatus for Propagating Content Filters for a Publish-Subscribe Network)」も引用により本願に援用されるものとする。 In addition, US Patent Application No. 10 / 400,671, filed on March 28, 2003, which is a continuation-in-part of the above-mentioned application, is entitled “Highly reliable issuance in networks with low reliability”. -Reliable Publish / Subscribe System Architecture over Unreliable Networks ", US Patent Application No. 10 / 400,465, Title of Invention" For content-based packet routing using compact filter storage and off-line precomputation " Method and Apparatus for Content-Based Packet Routing Using Compact Filter Storage and Off-Line Pre-computation ”, US Patent Application No. 10 / 400,453, Name of Invention“ Issuance-Subscription Network, Inquiry -Method and Apparatus for Impleme nting Query-Response Interactions in a Publish-Subscribe Network), US patent application Ser. No. 10 / 400,462, title of invention “Method and Apparatus for Implementing Persistent and Reliable Message DELIVERY), US Patent Application No. 10 / 400,444, Title of Invention “Method and Apparatus for Propagating Content Filters for a Publish-Subscribe Network” Is also incorporated herein by reference.
本発明は、ネットワークコアにおいて、警告サービス(alert service)を提供するためのパケット内のペイロードの検査(inspection)に基づいて、パケットをルーティングする方法及び装置に関する。 The present invention relates to a method and apparatus for routing a packet in a network core based on inspection of a payload in the packet for providing an alert service.
ネットワークの帯域幅は、指数関数的に拡大している。しかしながら、ネットワークインフラストラクチャ(ルータ、サーバ、デーモン、プロトコル等を含む。)は、未だに比較的古い技術を用いている。この結果、インターネットアプリケーション及びネットワークルータは、帯域幅の拡大の速度に対応することができない。同時に、ネットワークに対応する機器及びアプリケーションも増加している。これらの機器及びアプリケーションによるネットワークノードへの負荷は、著しく大きくなっている。また、ネットワーク負荷及びアプリケーションの数の増加のために、ネットワークアプリケーションを実行し、保守するための複雑性がより高まっている。この結果、ネットワークの帯域幅の増加、及びネットワーク機器及びアプリケーションの偏在的な(ubiquitous)使用により、古いネットワークインフラストラクチャにおけるデータの経路選択及び伝送に、特に、コンテンツを購読者(subscriber)に発行(publishing)するときに、問題が生じている。 Network bandwidth is growing exponentially. However, the network infrastructure (including routers, servers, daemons, protocols, etc.) still uses relatively old technology. As a result, Internet applications and network routers cannot cope with the speed of bandwidth expansion. At the same time, devices and applications corresponding to the network are increasing. The load on the network node by these devices and applications is significantly increased. Also, the complexity of running and maintaining network applications has increased due to the increased network load and number of applications. This results in increased network bandwidth and the ubiquitous use of network equipment and applications for data routing and transmission in older network infrastructures, especially for publishing content to subscribers ( publishing), there is a problem.
ネットワークにおいてサーバからクライアント装置に情報をプッシュするモデルは、発行−購読型(publish-subscribe style)と呼ばれる。このモデルでは、サーバは、どのクライアントが情報に興味を持ち、又はクライアントがネットワーク内のどこに位置するかに拘わらず、その情報の単純化された発行者装置(publisher)として機能する。クライアント装置は、情報の購読者装置(subscriber)となり、潜在的には、その情報がネットワークのどこで利用可能となったかに関する詳細に拘わらず、その情報が利用可能になると、その情報が配信される。そして、ネットワークは、発行された情報を購読者装置に効率的にルーティングし、情報を能動的な購読に適合させ、これらの処理を発行者装置及び購読者装置に対して透過的な方法で実行する責務を負う。 A model for pushing information from a server to a client device in a network is called a publish-subscribe style. In this model, the server acts as a simplified publisher of that information regardless of which clients are interested in the information or where the client is located in the network. The client device becomes an information subscriber device, potentially delivering the information as it becomes available, regardless of the details of where the information was made available on the network . The network then efficiently routes the published information to the subscriber device, adapts the information to the active subscription, and performs these processes in a manner that is transparent to the publisher device and the subscriber device. To take responsibility.
発行−購読モデルにおいては、サーバの構成が著しく簡略化されるので、大型のサーバ(heavyweight server)と小型のクライアント(lightweight client)といった区別はなくなり、これらは、発行者装置、購読者装置又はその両方にもなり得るピアという呼称に統合される。様々な種類のアプリケーションは、ピア間の発行−購読型のインタラクションに近い性質を兼ね備えている。これらの多くのアプリケーションの基底に存在する課題では、発行及び購読される情報は、イベントの形式で提供される。例えば、投資家が株式を購入又は売却することにより、株価が変動する。また、高速道路上で交通事故が発生すると、交通が渋滞する。ソフトウェアシステムのセキュリティホールが発見されると、ソフトウェアのユーザのためにパッチが開発される。インターネットゲームのプレーヤが武器を使用すると、他のプレーヤのアバタが死ぬ。これらの例示的な現象は、全て、多数の購読者が潜在的に興味を有するイベントであり、このようなイベントが生じたことをこれらの購読者に通知するために、ネットワーク内で伝搬(propagate)させることができる。すなわち、イベントは、ある時刻に、ネットワーク上のある場所で発生した、潜在的に興味が持たれる何かに関する、自己充足的(self-contained)で簡潔な情報片(succinct piece of information)である。 In the publish-subscribe model, the server configuration is greatly simplified, so there is no distinction between a heavyweight server and a lightweight client, which can be an issuer device, a subscriber device or its It is integrated into the designation of a peer that can be both. Various types of applications combine properties close to publish-subscribe interactions between peers. In the issues that exist at the base of many of these applications, published and subscribed information is provided in the form of events. For example, the stock price fluctuates as an investor purchases or sells stock. In addition, when a traffic accident occurs on a highway, traffic is congested. When a security hole in the software system is discovered, a patch is developed for the software user. When an internet game player uses a weapon, the other player's avatar dies. These exemplary phenomena are all events that are potentially of interest to a large number of subscribers and are propagated within the network to inform these subscribers that such events have occurred. ). That is, an event is a self-contained and succinct piece of information about something of potential interest that occurred at some point on the network at a certain time. .
発行−購読モデルにおいて、発行されたコンテンツをどこに送信するかをネットワークに指示するための経路決定(routing decision)は、通常、サーバ又は発行者装置が行う。発行者装置は、それが発行したコンテンツに関する購読予約(subscription)を保存している。発行者装置は、新たなコンテンツを受信又は生成すると、そのコンテンツと各購読予約とを比較し、何らかの一致がないかを調べる。コンテンツ(イベント)がいずれかの購読予約を満たす場合、発行者装置は、ネットワークを介して、対応する購読者装置にコンテンツをプッシュする。この従来の発行−購読モデルでは、特に、より多くの機器がネットワークに対応し、購読予約の数が増加すると、発行者装置に大きな負担がかかる。 In the publish-subscribe model, a routing decision for instructing the network where to send the published content is usually performed by a server or issuer device. The issuer device stores a subscription for the content it issues. When the issuer device receives or generates new content, the issuer device compares the content with each subscription reservation and checks whether there is any match. If the content (event) satisfies any subscription reservation, the publisher device pushes the content to the corresponding subscriber device over the network. In this conventional publish-subscribe model, particularly when more devices are compatible with the network and the number of subscription reservations is increased, the issuer device is heavily burdened.
インターネットにおける無数のアプリケーションの集中度が高まることにより、事象通知(event notification)を利用する可能性も無限になる。ここで、これらの可能性のために、経路決定を効率的に行い、イベントがいつ購読予約を充足するかを効率的に判定して、発行者装置の負担を軽減する手法を実現することが必要である。したがって、普遍的で持続的な事象通知サービス(event notification service)を実現すれば、インターネットアプリケーション並びに他のアプリケーションに、及びそれらの実行に大きな付加価値を与えることができる。 As the myriad of applications on the Internet increase in concentration, the possibilities for using event notifications are infinite. Here, because of these possibilities, it is possible to efficiently determine the route, efficiently determine when the event satisfies the subscription, and realize a technique to reduce the burden on the issuer device is necessary. Thus, the realization of a universal and persistent event notification service can provide great added value to Internet applications and other applications and to their execution.
本発明に係るルーティング方法は、プロセッサによって実行され、ネットワークにおいて、サービス品質保証に基づいてパケットをルーティングするルーティング方法において、ヘッダ部と、ペイロード部とを有するパケットを受信する受信ステップと、ネットワークコアにおいて、パケットをルーティングする前に、パケットのペイロード部を検査する検査ステップと、パケットの確保された帯域幅に関するサービス品質保証を判定する判定ステップと、検査及びサービス品質保証に基づいて、パケットを選択的にルーティングするルーティングステップとを有する。検査ステップは、ペイロード部からデータ属性を抽出するステップと、抽出したデータ属性を2つ以上の属性フィルタと比較するステップと、2つ以上の属性フィルタのそれぞれが満たされる場合、1組の機能を実行するステップとを有する。各属性フィルタは、購読者が、発行者から受信した興味があるイベントの組を記述している。 A routing method according to the present invention is executed by a processor, and in a routing method for routing a packet based on service quality assurance in a network, a receiving step for receiving a packet having a header portion and a payload portion, and a network core Before routing the packet, an inspection step that inspects the payload portion of the packet, a determination step that determines a quality of service guarantee regarding the reserved bandwidth of the packet, and a packet based on the inspection and the quality of service guarantee. Routing step for routing to the network. The inspection step includes a step of extracting a data attribute from the payload portion, a step of comparing the extracted data attribute with two or more attribute filters, and a set of functions when each of the two or more attribute filters is satisfied. Performing steps. Each attribute filter describes a set of events the subscriber is interested in received from the publisher.
本発明に係るルーティング方法は、プロセッサによって実行され、ネットワークにおいて、メッセージをルーティングするルーティング方法において、ヘッダ部と、少なくとも1つの主語と、複数のデータ属性とを有するメッセージを受信する受信ステップと、メッセージから、主語及びデータ属性を読み出す主語/属性読出ステップと、主語に基づいて、複数の属性フィルタを指定する購読予約を読み出す購読予約読出ステップと、メッセージの確保された帯域幅に関するサービス品質保証を判定するステップと、メッセージをどのようにルーティングするかを決定するために、ネットワークコアにおいて、購読予約にデータ属性を適用する適用ステップと、適用及びサービス品質保証に基づいて、メッセージを選択的にルーティングするステップとを有する。適用ステップは、パケットからデータ属性を抽出するステップと、抽出したデータ属性を2つ以上の属性フィルタと比較するステップと、2つ以上の属性フィルタのそれぞれが満たされる場合、1組の機能を実行するステップとを有する。各属性フィルタは、購読者が、発行者から受信した興味があるイベントの組を記述している。 A routing method according to the present invention is executed by a processor, and in a routing method for routing a message in a network, a receiving step for receiving a message having a header part, at least one subject, and a plurality of data attributes; A subject / attribute read step for reading the subject and data attributes, a subscription read step for reading a subscription reservation specifying a plurality of attribute filters based on the subject, and a service quality guarantee for the reserved bandwidth of the message And, in the network core, to apply data attributes to the subscription, and to selectively route the message based on the application and quality of service guarantee to determine how to route the message. And a step. The applying step performs a set of functions if each of the step of extracting data attributes from the packet, comparing the extracted data attributes to two or more attribute filters, and two or more attribute filters are satisfied. A step of performing. Each attribute filter describes a set of events the subscriber is interested in received from the publisher.
本発明に係るルーティング装置は、プロセッサ及びメモリを有し、ネットワークにおいて、サービス品質保証に基づいてパケットをルーティングするルーティング装置において、ヘッダ部と、ペイロード部とを有するパケットを受信する受信手段と、ネットワークコアにおいて、上記パケットのペイロード部を検査する検査手段と、パケットの確保された帯域幅に関する上記サービス品質保証を判定する判定手段と、検査手段及び判定手段による判定の結果得られた検査結果及びサービス品質保証に基づいて、パケットを選択的にルーティングするルーティング手段とを備える。検査手段は、ペイロード部からデータ属性を抽出し、抽出したデータ属性を2つ以上の属性フィルタと比較し、2つ以上の属性フィルタのそれぞれが満たされる場合、パケットをどのようにルーティングするかを決定し、各属性フィルタは、購読者が、発行者から受信した興味があるイベントの組を記述している。 A routing device according to the present invention includes a processor and a memory, and in a routing device for routing a packet based on service quality assurance in a network, a receiving means for receiving a packet having a header portion and a payload portion, and a network In the core, an inspection means for inspecting the payload portion of the packet, a determination means for determining the service quality guarantee relating to the reserved bandwidth of the packet, and an inspection result and a service obtained as a result of the determination by the inspection means and the determination means Routing means for selectively routing packets based on quality assurance. The inspection means extracts the data attribute from the payload portion, compares the extracted data attribute with two or more attribute filters, and determines how to route the packet when each of the two or more attribute filters is satisfied. Determine, each attribute filter describes a set of events that the subscriber is interested in received from the publisher.
本発明に係るルーティング装置は、プロセッサ及びメモリを有し、ネットワークにおいて、メッセージをルーティングするルーティング装置において、ヘッダ部と、少なくとも1つの主語と、複数のデータ属性とを有するメッセージを受信する受信手段と、メッセージから、主語及びデータ属性を読み出す主語/属性読出手段と、主語に基づいて、購読予約を読み出す購読予約読出手段と、メッセージを購読者装置にどのようにルーティングするかを決定するために、ネットワークコアにおいて、購読予約を複数のフィルタに照合する照合手段と、パケットの確保された帯域幅に関するサービス品質保証を判定する判定手段とを備える。主語/属性読出手段は、購読予約に対応した複数のフィルタを読み出す手段を備え、各フィルタは、購読者が、発行者から受信した興味があるイベントの組を記述している。 A routing device according to the present invention includes a processor and a memory, and a receiving device for receiving a message having a header part, at least one subject, and a plurality of data attributes in a routing device for routing a message in a network. In order to determine a subject / attribute reading means for reading a subject and data attributes from a message, a subscription reading means for reading a subscription reservation based on the subject, and how to route the message to a subscriber device, The network core includes a matching unit that matches a subscription reservation with a plurality of filters, and a determination unit that determines a quality of service guarantee regarding a bandwidth in which a packet is secured. The subject / attribute reading means includes means for reading a plurality of filters corresponding to the subscription reservation, and each filter describes a set of events that the subscriber has received from the publisher.
本発明に係るルーティング/キャッシング方法は、マルチキャストネットワークにおいて、データのパケットをルーティング及びキャッシングするルーティング/キャッシング方法において、ヘッダ部と、ペイロード部とを有するパケットを受信する受信ステップと、パケットを購読者装置にどのようにルーティングするかを決定するために、ネットワークコアにおいて、パケットのペイロード部を検査する検査ステップと、検査に基づいて、パケットを選択的にルーティングするルーティングステップと、パケットに対応するチャンネルを判定するステップと、チャンネルのチャンネル特性を読み出すステップと、チャンネル特性から、チャンネルが持続的なチャンネルであるか否かを判定するステップと、チャンネルが持続的なチャンネルである場合、パケットからデータを、ネットワークコアのコアルーティングノードで局所的にキャッシングするステップとを有する。コアルーティングノードは、エッジルーティングノードの上流の購読者装置から離れる方向に位置する。 A routing / caching method according to the present invention is a routing / caching method for routing and caching data packets in a multicast network. In the routing / caching method, a reception step of receiving a packet having a header portion and a payload portion; In the network core, an inspection step for inspecting the payload portion of the packet, a routing step for selectively routing the packet based on the inspection, and a channel corresponding to the packet are determined in the network core. Determining, reading the channel characteristics of the channel, determining whether the channel is a persistent channel from the channel characteristics, and determining whether the channel is a persistent channel. If it is, the data from the packet, and a step of locally caching core routing nodes in the network core. The core routing node is located away from the subscriber device upstream of the edge routing node.
本発明に係るネットワークは、データのパケットをルーティング及びキャッシングするネットワークにおいて、ヘッダ部と、ペイロード部とを有するパケットを受信して、ルーティングするエッジルーティングノードであって、受信したパケットをルーティングするインテリジェントルータを含むエッジルーティングノードと、ネットワークコア内に位置するコアルーティングノードと、コアルーティングノード内に位置し、インテリジェントルータに動作可能に接続されたキャッシュマネージャとを備える。インテリジェントルータは、パケットを購読者装置にどのようにルーティングするかを決定するために、ネットワークコアにおいて、パケットのペイロード部を検査する命令と、検査に基づいて、パケットを選択的にルーティングする命令とを有し、キャッシュマネージャは、パケットのそれぞれに対応するチャンネルを判定する命令と、チャンネルのチャンネル特性を読み出す命令と、チャンネル特性から、各チャンネルが持続的なチャンネルであるか否かを判定する命令と、チャンネルが持続的なチャンネルである場合、対応するパケットからデータを、コアルーティングノードのローカルキャッシュで局所的にキャッシングする命令とを有する。コアルーティングノードは、エッジルーティングノードの上流の購読者装置から離れる方向に位置する。 The network according to the present invention is an edge routing node that receives and routes a packet having a header portion and a payload portion in a network that routes and caches a packet of data, and is an intelligent router that routes the received packet An edge routing node, a core routing node located in the network core, and a cache manager located in the core routing node and operably connected to the intelligent router. The intelligent router has instructions for inspecting the payload portion of the packet at the network core and instructions for selectively routing the packet based on the inspection to determine how to route the packet to the subscriber device. The cache manager has an instruction to determine a channel corresponding to each of the packets, an instruction to read the channel characteristics of the channel, and an instruction to determine whether each channel is a persistent channel from the channel characteristics And, if the channel is a persistent channel, instructions for caching data from the corresponding packet locally in the local cache of the core routing node. The core routing node is located away from the subscriber device upstream of the edge routing node.
本発明に係るルーティング/キャッシング装置は、マルチキャストネットワークにおいて、データのパケットをルーティング及びキャッシングするルーティング/キャッシング装置において、複数のプロセッサと、複数のプロセッサによって実行される命令とを備える。命令は、ヘッダ部と、ペイロード部とを有するパケットを受信する命令と、パケットを購読者装置にどのようにルーティングするかを決定するために、ネットワークコアにおいて、パケットのペイロード部を検査する命令と、検査に基づいて、パケットを選択的にルーティングする命令と、パケットに対応するチャンネルを判定する命令と、チャンネルのチャンネル特性を読み出す命令と、チャンネル特性から、上記チャンネルが持続的なチャンネルであるか否かを判定する命令と、チャンネルが持続的なチャンネルである場合、パケットからデータを、ネットワークコアのコアルーティングノードで局所的にキャッシングする命令とを有する。コアルーティングノードは、エッジルーティングノードの上流の購読者装置から離れる方向に位置する。 The routing / caching apparatus according to the present invention includes a plurality of processors and instructions executed by the plurality of processors in the routing / caching apparatus for routing and caching data packets in a multicast network. The instructions include an instruction for receiving a packet having a header portion and a payload portion, and an instruction for examining the payload portion of the packet at the network core to determine how to route the packet to a subscriber device. Based on the inspection, whether the channel is a persistent channel, an instruction to selectively route the packet, an instruction to determine a channel corresponding to the packet, an instruction to read the channel characteristic of the channel, and the channel characteristic An instruction to determine whether or not, and if the channel is a persistent channel, an instruction to locally cache data from the packet at the core routing node of the network core. The core routing node is located away from the subscriber device upstream of the edge routing node.
概観
インターネット規模又は他の分散ネットワーク規模においては、事象通知システム(event notification system)により、アプリケーションにおいて、強力で柔軟な発行−購読ネットワーク(publish-subscribe networking)が実現される。この事象通知システムでは、アプリケーションプログラムは、通知アプリケーションプログラムインタフェース(application program interface:以下、APIという。)を用いて、ネットワーク内で発生するイベントに関する通知を発行し及び/又は通知を購読又は受信する。Overview At the Internet scale or other distributed network scale, the event notification system provides a powerful and flexible publish-subscribe networking for applications. In this event notification system, an application program uses a notification application program interface (hereinafter referred to as API) to issue a notification regarding an event that occurs in the network and / or subscribe to or receive the notification.
この事象通知システムにおける通知には、主語(subject)が与えられており、主語は、文字列(string)、又は通知がカプセル化している情報の種類を分類する(classify)他のデータ構造として示される。また、通知には、その通知に特有の情報を含む1組の属性によって完結されている。例えば、アプリケーションは、subject quotes.nyse(ニューヨーク証券取引所における主語の株価)と、属性シンボル及び価格とを用いて、ニューヨーク証券取引所における取引に関する通知を発行してもよい。例えば、アプリケーションは、SNE(ソニー株式会社(商標)の株価表示板のシンボル)に等しいシンボルと、85.25ドルの株価とを含む特定の属性値を有する個々の通知を発行する。通知の全ての属性ではなく、殆どの属性は、主語が同じファミリに関する全ての通知において見出されるという意味で、予め定義されている。なお、発行者は、イベント固有の情報を追加するために、通知毎に又は他の単位で、通知に任意の属性を加えることができる。したがって、一部又は全ての属性は、予め定義されている必要はない。 Notifications in this event notification system are given a subject, which is shown as a string or other data structure that classifies the type of information that the notification encapsulates (classify). It is. Further, the notification is completed by a set of attributes including information specific to the notification. For example, an application may issue a notification regarding a transaction on the New York Stock Exchange using subject quotes.nyse (the subject stock price on the New York Stock Exchange), attribute symbols and prices. For example, the application issues individual notifications with specific attribute values that include a symbol equal to SNE (a symbol of a stock price display board of Sony Corporation (trademark)) and a stock price of $ 85.25. Most but not all attributes of notifications are predefined in the sense that the subject is found in all notifications for the same family. Note that the issuer can add any attribute to the notification for each notification or in other units to add event specific information. Thus, some or all of the attributes need not be predefined.
この事象通知システムでは、購読者は、主語又は全チャンネルの購読のみに制限されるわけではない。チャンネルについては、後に説明し、定義する。チャンネルは、例えば主語フィールド及び関連したサブフィールド(サブ主語)の1つ以上のレベルを指定する階層構造を含むことができる。したがって、購読者は、通知の属性に対して、コンテンツベースのフィルタを指定することによって、興味に応じてより精密に調整された表現を指定することができる。例えば、購読者は、SNEに等しいシンボルと、90.00ドルより高い価格(例えば、購読者が所有している株式の売りの指値)とを有するsubject quotes.nyseに対する全ての通知を購読予約してもよい。購読予約に一致する全ての通知は、コールバック、あるいは購読者が購読予約を登録したときの又は他の時点における他の種類の機能によって、購読者に配信される。1つの購読予約は、複数のフィルタに分割することができる。 In this event notification system, subscribers are not limited to subject or all channel subscriptions. Channels will be described and defined later. A channel can include, for example, a hierarchical structure that specifies one or more levels of subject fields and associated sub-fields (sub-subjects). Thus, the subscriber can specify a more precisely tailored expression according to interest by specifying a content-based filter for the notification attribute. For example, a subscriber subscribes to all notifications for subject quotes.nyse with a symbol equal to SNE and a price higher than $ 90.00 (eg, the limit of selling shares held by the subscriber). May be. All notifications matching a subscription are delivered to the subscriber by a callback or other type of function when the subscriber registers a subscription or at some other time. One subscription can be divided into multiple filters.
コールバックは、多くの計算(computation)を実行することができ、これらには、例えば端末機器にメッセージを書き込む又は電子メールを送信する等の単純な処理から、例えば株式の売却を開始する等のより複雑な処理、新たな発行−購読活動を開始する(例えば、既存の購読予約を75.00ドルの買いの指値とする新たな購読予約に置き換え、又は購読者のポートフォリオが手直しされた新たな通知を発行する)等の更に複雑な処理までの処理が含まれる。 Callbacks can perform many computations, such as starting a sale of stock from a simple process, such as writing a message to a terminal or sending an email. Initiate more complex processing, new publish-subscribe activities (e.g., replace existing subscriptions with new subscriptions with a bid limit of $ 75.00, or new subscriber portfolios reworked) Processing up to more complicated processing such as issuing a notification).
アプリケーションにおける発行及び購読活動は、例えば、エージェントによって支援してもよい。エージェントは、プロキシを使用することができ、又はプロキシによって実現することができる。エージェントは、それが用いられるときには、通知及び購読予約を出力するネットワーク接続性と、照合通知(matching notification)を購読者装置に入力する配信とを提供する。通知がネットワークに出されると、この事象通知システムのルータのネットワークは、その通知に購読予約が一致する全ての購読者装置に通知を伝搬(propagate)する。この処理を実現する一手法は、ネットワーク内の全ての点に通知を同報通信し、アプリケーションエージェントに、対応する購読者装置にその通知が関連するか否かを判定させる手法がある。しかしながら、これは必ずしも拡張性がある手法であるというわけではなく、通常、ネットワークは、特に多数の活発で冗長な購読者装置がある場合、メッセージトラヒックの負荷によって、急速に機能しなくなる(overwhelmed)。更に、帯域幅が十分な場合でさえも、購読者装置は、大量の通知を処理しきれなくなると考えられる。 Publishing and subscription activities in the application may be supported by an agent, for example. The agent can use a proxy or can be realized by a proxy. The agent, when it is used, provides network connectivity to output notifications and subscriptions, and delivery to input matching notifications to subscriber devices. When a notification is sent to the network, the network of routers in this event notification system propagates the notification to all subscriber devices whose subscription reservation matches the notification. One technique for implementing this process is to broadcast notifications to all points in the network and have the application agent determine whether the notification is relevant to the corresponding subscriber device. However, this is not necessarily a scalable approach, and the network usually overwhelmed rapidly due to message traffic load, especially if there are a large number of active and redundant subscriber devices. . Furthermore, even if the bandwidth is sufficient, the subscriber device will not be able to handle a large amount of notifications.
本発明に基づくシステムの一例として示すネットワークは、非常に効率的に通知をルーティングする。まず、このネットワークは、マルチキャストルーティングを用いて、例えば、ネットワーク内の全てのリンクにおいて最大で1回、通知を伝搬させることができる。次に、このネットワークは、フィルタに対して多数の高度な最適化処理を採用して、通知の伝搬の回数を可能な限り削減することができる。 The network shown as an example of a system according to the present invention routes notifications very efficiently. First, the network can propagate notifications using multicast routing, for example, at most once on all links in the network. The network can then employ a number of advanced optimization processes for the filter to reduce the number of notification propagations as much as possible.
図1は、ネットワークコア10におけるこのインテリジェントルーティングを概念的に示す図である。発行者装置14は、エッジルータ(edge router)16を介して、発行−購読ネットワークにおいて用いられているネットワークコア10にメッセージのコンテンツを送信する。発行−購読ネットワークは、発行者装置14から購読者装置24にデータ又はコンテンツをルーティングするためのあらゆる種類のネットワークであってもよい。コンテンツは、ルータ間又は他の機器間の論理的接続を表す1つ以上のチャンネル18を介して伝送される。ネットワークコア10におけるインテリジェントルータ12は、メッセージをルーティング又は転送するか否かを判定する。特に、インテリジェントルータ12は、メッセージが購読者装置24によって購読予約されているコンテンツを含んでいるか否かを判定することができる。 FIG. 1 is a diagram conceptually showing this intelligent routing in the
各購読予約は、主語フィルタ(subject filter)と属性フィルタ(attribute filter)とをカプセル化している。ルータは、主語フィルタを一致する主語の集合に拡張し、又は主語毎に属性フィルタを併合することができる。インテリジェントルータは、通知の主語に対して主語フィルタを評価し、通知における属性値に対して属性フィルタを評価する。主語フィルタの構文では、ワイルドカードを用いることができ、属性フィルタの構文では、論理式(Boolean expression)を用いることができ、これらについては、後に更に詳細に説明する。「フィルタ」という用語は、購読者装置が発行者装置から受信を望んでいる1組のイベントを意味する。経路選択規則(routing rule)は、フィルタから生成され、インテリジェントルータは、この規則を用いて経路決定を行う。 Each subscription reservation encapsulates a subject filter and an attribute filter. The router can extend the subject filter to a set of matching subjects or merge attribute filters for each subject. The intelligent router evaluates the subject filter for the subject of the notification and evaluates the attribute filter for the attribute value in the notification. Wildcards can be used in the subject filter syntax, and Boolean expressions can be used in the attribute filter syntax, which will be described in more detail later. The term “filter” refers to a set of events that a subscriber device wants to receive from an issuer device. A routing rule is generated from the filter, and the intelligent router performs route determination using this rule.
したがって、メッセージ26がフィルタ集合の全部を充足していない場合、例えば、インテリジェントルータ12は、メッセージ26をドロップ(破棄)し、これは、メッセージ26が転送されないことを意味する。主語フィルタ及び属性フィルタの評価に基づき、メッセージ20がフィルタの集合の一部又は全部を充足していると判定された場合、例えば、インテリジェントルータ12は、エッジルータ22及び他の機器を介して、購読者装置にメッセージ20をルーティング(転送)し、又は、一致したフィルタについて規定されている全ての経路選択及び/又は動作規則(action rule)に基づいて、インテリジェントルータ12内でメッセージ20に対する他の機能を実行する。検索は、フィルタの集合全体に対する処理が完了するまで、又は全ての規則に関する判定が得られるまで続けられ、どちらが最初であってもよい。この2つの条件のいずれか1つが満たされると終了する。 Thus, if the message 26 does not satisfy the entire filter set, for example, the
ネットワークコア内のこの種類のインテリジェントなコンテンツベースの経路選択は、例えば警告及び更新のためのリアルタイムデータ配信を実現する。警告のためのリアルタイムデータ配信の具体例としては、以下に限定されるものではないが、例えば、株価速報(stock quot)、交通情報、ニュース、旅行、天気、不正検出(fraud detection)、セキュリティ、テレマティックス、ファクトリオートメーション、サプライチェーン管理(supply chain management)及びネットワーク管理等がある。更新のためのリアルタイムデータ配信の具体例としては、以下に限定されるものではないが、例えば、ソフトウェアの更新、アンチウイルスの更新、映画及び音楽配信、ワークフロー、保管管理(storage management)及びキャッシュコンシステンシ(cache consistency)等がある。購読予約された情報を配信するシステムは、他の様々な分野に応用することができる。 This type of intelligent content-based routing within the network core provides real-time data delivery for alerts and updates, for example. Specific examples of real-time data delivery for warnings include, but are not limited to, stock quotes, traffic information, news, travel, weather, fraud detection, security, Telematics, factory automation, supply chain management and network management. Specific examples of real-time data delivery for updates are not limited to the following, but include, for example, software updates, antivirus updates, movie and music delivery, workflow, storage management and cache consistency. There are tensi (cache consistency). The system for distributing subscribed information can be applied to various other fields.
表1は、フィルタ用の主語(subject)及び述語(predicate)によって保存される購読予約を示している。購読予約は、希望されれば、又は必要に応じて、ネットワークの如何なる場所に、あらゆる種類のデータ構造を用いて保存してもよい。後述するように、述語は、購読予約の構成要素である。購読予約は、如何なる形式で表現してもよく、その具体例を以下に示す。 Table 1 shows the subscriptions stored by the filter subject and predicate. Subscription subscriptions may be stored using any kind of data structure anywhere on the network, if desired or necessary. As will be described later, the predicate is a component of a subscription reservation. The subscription reservation may be expressed in any format, and a specific example is shown below.
表2は、株価速報サーバ(quote server)用の発行及び購読予約の具体例を示している。この具体例は、説明を目的とする例示的な具体例に過ぎず、購読予約は、あらゆる種類のデータ又はコンテンツに対するあらゆる数の及び種類のパラメータを含むことができる。 Table 2 shows specific examples of issuance and subscription reservations for a quote server. This example is merely an illustrative example for purposes of illustration, and subscriptions can include any number and type of parameters for any type of data or content.
述語は、購読予約用の論理式を提供し、主語は、購読予約用のチャンネルの指標(indication)を提供する。購読予約は、他の様々な手法で表現することができる。論理式は、このような手法の一例であり、論理式を用いることにより、購読予約を主語フィルタと属性フィルタに容易に変換する機能を、コンテンツベースの経路選択に提供する。これに代えて、主語を参照することなく、購読予約を表現することもできるが、主語又はチャンネル(後に詳細に説明する。)を用いることにより、フィルタを解釈して、属性に適用するコンテキスト(context)を提供する。 The predicate provides a logical expression for subscription reservation, and the subject provides an indication of the channel for subscription reservation. Subscription reservations can be expressed in various other ways. A logical expression is an example of such a technique, and by using the logical expression, a function for easily converting a subscription reservation into a subject filter and an attribute filter is provided for content-based route selection. Alternatively, a subscription can be expressed without referring to the subject, but by using the subject or channel (discussed in detail later), the context to interpret the filter and apply to the attribute ( context).
経路決定は、ネットワークコアで行って、ネットワークを介して配信することができるので、発行者装置及び購読者装置の機器の負担を軽減し、ネットワーク効率を大幅に高めることができる。図1では、説明を目的として、単一の発行者装置14、単一の購読者装置24及び単一のインテリジェントルータ12のみを示しているが、実際には、発行者装置、購読者装置及びインテリジェントルータは、それぞれ複数設けることができる。インテリジェントルータという用語は、ネットワークコア又は他の位置において、パケット又はメッセージのペイロードを検査することによって経路を決定する能力を有するルータ又は他のエンティティ(entity)を意味する。 Since the route determination can be performed at the network core and distributed via the network, the burden on the issuer device and the subscriber device can be reduced, and the network efficiency can be greatly increased. Although only a
ネットワークインフラストラクチャ
図2は、発行者装置及び購読者装置用のインテリジェントルータを示すネットワーク図である。例えば、チャンネルサービスを提供する経路選択エンティティ(以下、チャンネルサービスともいう。)30は、後述するように、インテリジェントルータ38、40、42、44、46、48間でメッセージをルーティングするために、ネットワークインフラストラクチャ上に効果的に階層化されている。例えば、発行者装置32は、概念的に、発行されたコンテンツの指標、例えばコンテンツを検索するためのポインタを受信するアプリケーション34と、チャンネルサービス30を介したネットワーク伝送のためにコンテンツを符号化するエージェント36とを含む。論理的に互いに接続されたインテリジェントルータ38、40、42、44、46、48の集合は、購読予約の主語フィルタ及び属性フィルタから生成された経路選択規則を用いて、発行者装置32からのコンテンツをルーティングする。複数のリンク39、41、43、45は、インテリジェントルータ38、40、42、44、46、48間を論理的に接続する。他のリンク37、47は、それぞれ、発行者装置32とインテリジェントルータ38間及び購読者装置54とインテリジェントルータ46間を論理的に接続する。購読者装置54は、購読するコンテンツを検出して、受信するエージェント50と、コンテンツを表示するアプリケーション52とを備えている。Network Infrastructure FIG. 2 is a network diagram showing intelligent routers for issuer and subscriber devices. For example, a routing entity (hereinafter also referred to as a channel service) 30 that provides a channel service may be used to route messages between
チャンネルは、例えば、分散方式によって実行される論理的なマルチキャスト接続の関連した集合を含むことができる。この例示的な実施例におけるチャンネルは、コンテンツを交換する発行者装置と購読者装置のコミュニティとして機能する論理的に関連したネットワークリソースの集合である。コンテンツは、チャンネル主語名前空間(channel subject namespace)に従って分類され、ネットワークリソースは、チャンネルマネージャ(channel manager)によって提供されるチャンネルサービス30を介して、管理され、制御され、供給される。複数のチャンネルが同じネットワークリソースを共有してもよい。チャンネルは、非常に拡張性があるディレクトリサービス、例えば、以下に限定されるものではないが、発行者及び購読者の情報、認証(authentication)及び許可(authorization)情報、メッセージの種類、管理情報、会計及び課金情報(accounting and billing information)が含まれる。また、チャンネルは、例えば、キャッシングによる持続性(persistence through caching)、高速データ配信機構、セキュリティ、ユーザ及びネットワーク管理等を提供することができる。また、チャンネルは、他の如何なる目的にも利用することができる。 A channel can include, for example, an associated set of logical multicast connections performed by a distributed scheme. A channel in this exemplary embodiment is a collection of logically related network resources that function as a community of publisher and subscriber devices that exchange content. Content is classified according to a channel subject namespace, and network resources are managed, controlled, and supplied via a
インテリジェントルータによるフィルタリングをネットワークコアで行って、経路決定をネットワーク内に配信することができる。更に、インテリジェントルータは、発行者装置又は購読者装置等のユーザ機器をネットワークコアに接続するエッジルータとして機能することができる。また、ネットワークに接続された同じ機器が、ネットワークにおける経路決定に基づいて、購読者装置にコンテンツをプッシュする発行者装置と、プッシュされたコンテンツを受信する購読者装置との両方として機能することができる。インテリジェントルータ及びチャンネルは、特定の実施例における必要又は要望に応じて、如何なる構成で接続してもよく、図2の構成は例示的に示しているに過ぎない。 Filtering by intelligent routers can be performed at the network core and routing can be distributed within the network. Furthermore, the intelligent router can function as an edge router that connects a user device such as an issuer device or a subscriber device to the network core. Also, the same device connected to the network can function as both an issuer device that pushes content to the subscriber device and a subscriber device that receives the pushed content based on routing in the network. it can. The intelligent routers and channels may be connected in any configuration as needed or desired in a particular embodiment, and the configuration of FIG. 2 is only shown by way of example.
図3は、インテリジェントルータ及び従来のバックボーンルータの例示的なネットワークインフラストラクチャの構成を示しており、チャンネルの論理的接続も示している。この実施例におけるインテリジェントルータ61〜70は、インターネット又は他の分散ネットワーク等のネットワークの既存のバックボーンルータを用いており、したがって、インテリジェントルータ61〜70は、バックボーンルータ上に効果的に階層化されている。この実施例では、インターネットサービスプロバイダ(Internet Service Provider:以下、ISPという。)ネットワーク58、59、60は、メッセージ又はパケットの従来の経路選択を行う幾つかのバックボーンルータをそれぞれ備えている。複数のインテリジェントルータ61〜70は、ISPネットワーク58、59、60内の1つ以上のバックボーンルータによって接続されている。また、インテリジェントルータ61〜70は、実際のリンクを例示的に示す複数のリンク73〜85によって、互いに接続されており、また、これらのリンク73〜85を介して、エンドユーザ機器にも接続することができる。インテリジェントルータ61〜70は、例えばエンティティ71等の1つ以上の管理装置(administrator machine)及び例えばエンティティ72等の1つ以上の仮想私設ネットワーク(virtual private network:以下、VPNという。)コントローラによって制御される。ISPネットワーク58、59、60は、発行者装置及び購読者装置(図3には示していない。)に接続してもよい。ISPネットワーク58、59、60内及び間のバックボーンルータは、既存のネットワークインフラストラクチャにおいて、従来の如何なる手法で互いに接続してもよい。 FIG. 3 shows an exemplary network infrastructure configuration of intelligent routers and conventional backbone routers, and also shows the logical connection of channels. The intelligent routers 61-70 in this embodiment use existing backbone routers in networks such as the Internet or other distributed networks, and therefore the intelligent routers 61-70 are effectively layered on the backbone routers. Yes. In this embodiment, Internet Service Provider (ISP)
図3に示すように、既存のネットワークインフラストラクチャを用いて、インテリジェントルータ61〜70及びリンク73〜85を実現することができ、これらは、ネットワークコアにおけるコンテンツベースの経路選択を提供する。リンク73〜85は、インテリジェントルータ61〜70間の論理的接続を表し、例えば、既存のネットワークインフラストラクチャ又は他の機器を用いて実現することができる。リンクは、例えば、トンネル(tunnel)と呼ばれる論理的接続を用いて実現することができる。トンネルは、ハードウェアと、ソフトウェアと、リンクを実現するためのネットワークインフラストラクチャとを含み、1つのトンネルは、複数のチャンネルの一要素であってもよい。チャンネルは、特定の種類のコンテンツのための論理的な構成を提供することによって、インテリジェントルータにおけるコンテンツベースの経路選択を容易にし、したがって、チャンネルを介して伝送される属性にコンテキストを提供する。インテリジェントルータは、チャンネルを用いることなく、経路決定を行うこともできるが、チャンネルは、ネットワークコアにおけるインテリジェントルータによるコンテンツベースの経路選択の効率を高める。 As shown in FIG. 3, the existing network infrastructure can be used to implement intelligent routers 61-70 and links 73-85, which provide content-based routing at the network core. Links 73-85 represent logical connections between intelligent routers 61-70 and may be implemented using, for example, existing network infrastructure or other equipment. The link can be realized by using a logical connection called a tunnel, for example. The tunnel includes hardware, software, and network infrastructure for realizing the link, and one tunnel may be an element of a plurality of channels. A channel facilitates content-based routing in an intelligent router by providing a logical configuration for a particular type of content and thus provides context for attributes transmitted over the channel. Although intelligent routers can also make routing without using channels, channels increase the efficiency of content-based routing by intelligent routers in the network core.
この例示的な実施例は、チャンネルとリンクの使用を含んでいる。リンクは、例えばインテリジェントルータである2つのルータ間の接続を表す。チャンネルは、ルータの(通常は大きな)集合を含むネットワークエンティティであり、相互接続リンク(interconnecting link)によって静的又は動的に構成されており、1対多又は多対多の論理的接続を実現する。特に、チャンネルは、チャンネルの本質的特徴を記述する最上位レベルの論理的エンティティである。1つのチャンネルには、多くの主語が存在することができる。各主語は、互いに接続されたルータの集合を含むサブネットワーク(例えばマルチキャストツリー)を形成する。これらの主語ベースのサブネットワークは、様々な手法で、割当、適応化及び構成を行うことができる。全てのサブネットワークの集合であり、その下に主語を形成するチャンネルは、例えばネットワークのメッシュ(mesh of networks)に似ている。 This exemplary embodiment includes the use of channels and links. A link represents a connection between two routers, for example intelligent routers. A channel is a network entity that contains a (usually large) collection of routers, configured statically or dynamically by interconnecting links, to provide one-to-many or many-to-many logical connections To do. In particular, a channel is the highest level logical entity that describes the essential characteristics of a channel. There can be many subjects in one channel. Each subject forms a subnetwork (eg, a multicast tree) that includes a collection of routers connected to each other. These subject-based sub-networks can be allocated, adapted and configured in various ways. The set of all sub-networks, under which the subject is formed, resembles, for example, a mesh of networks.
図4は、インテリジェントルータ92のハードウェア構成要素を示しており、インテリジェントルータ92は、符号が付された他の如何なるインテリジェントルータに対応させることができる。ネットワークノード90は、従来のバックボーンルータ95に接続されたインテリジェントルータ92を備えている。インテリジェントルータ92は、メモリ94及び補助記憶装置97(例えば、独立した装置として実現してもよい。)に接続されたプロセッサ93を備え、メモリ94及び補助記憶装置97は、いずれも、キャッシュデータを含むデータを保存し、及びプロセッサ93によって実行されるアプリケーションプログラムを保存する。補助記憶装置97は、データの不揮発性記憶装置である。後述するように、プロセッサ93は、ソフトウェアによって制御され、バックボーンルータ95にインストラクション(instruction)を発行し、このインストラクションに応じて、バックボーンルータ95は、購読予約の主語フィルタ及び属性フィルタから生成された経路選択規則に基づいて、メッセージ又はパケットをルーティング(転送)し又はルーティングしない(破棄する)。ここでは、インテリジェントルータ92をプロセッサによって制御される独立した装置として示しているが、インテリジェントルータ92は、ソフトウェアを組み込むことによって、ハードウェアにインテリジェント経路選択機能を提供する特定用途向け集積回路(application specific integrated circuit:ASIC)91によって実現することができる。また、これに代えて、インテリジェント経路選択機能は、1つ又は複数の経路選択機器において、ソフトウェアとハードウェアの組合せとして実現することができる。 FIG. 4 shows the hardware components of the
図5は、発行者装置及び購読者装置の具体的な構成を示している。発行者装置100、118は、例えば、1つ以上の発行者アプリケーション104及びエージェントアプリケーション106を記憶するメモリ102と、データの不揮発性記憶装置である補助記憶装置112と、情報又はコマンドを入力する入力装置108と、メモリ102に記憶されている又は他の記憶装置から受け取ったアプリケーションを実行するプロセッサ114と、情報を出力する出力装置110と、情報を視覚的に表示する表示装置116とを備えている。 FIG. 5 shows a specific configuration of the issuer device and the subscriber device. The
購読者装置122、140は、例えば、1つ以上のアプリケーション126及びエージェントアプリケーション128を記憶するメモリ124と、データの不揮発性記憶装置である補助記憶装置130と、情報又はコマンドを入力する入力装置132と、メモリ124に記憶されている又は他の記憶装置から受け取ったアプリケーションを実行するプロセッサ134と、情報を出力する出力装置136と、情報を視覚的に表示する表示装置138とを備えている。発行者装置100、118及び購読者装置122、140は、如何なる構成であってもよく、上述したものとは異なる構成要素を備えていてもよく、構成要素は、上述したものより多くても少なくてもよい。 The
発行者装置100、118は、上述したネットワーク等のネットワーク120を介して購読者装置122、140に接続されている。ネットワーク120は、ネットワークコアにおいて、パケット又はメッセージを介して、データ又はコンテンツの分散経路選択(distributed routing)を行うインテリジェントルータを含んでいる。ここでは、それぞれ2つの発行者装置100、118及び購読者装置122、140のみを示しているが、より多くの発行者装置及び購読者装置を含むようにネットワーク120を拡張することができる。発行者装置100、118及び購読者装置122、140は、プロセッサによって制御される如何なる装置、例えば、以下に限定されるものではないが、サーバ、パーソナルコンピュータ、ノートブックコンピュータ、携帯情報端末、電話機、携帯電話機、ページャ又は他の機器によって実現することができる。また、インテリジェントルータを有するネットワーク120は、有線機器、無線機器又はその両方を接続する如何なる有線又は無線分散ネットワークを含むことができる。また、ネットワーク120は、潜在的には、既存の又は従来のネットワークインフラストラクチャを用いることができる。 The issuer apparatuses 100 and 118 are connected to the
図6は、インテリジェントルータのためのチャンネルマネージャ(channel manager)150の構成を示している。この実施例では、チャンネルマネージャ150は、複数のサーバ152、154、156によって実現されている。各サーバ152、154、156は、それ自体の局部記憶装置(local storage)158、160、162を備えている。インテリジェントルータ164、166、168は、特定のチャンネルに関する情報を得るために、チャンネルマネージャ150に接触する。また、チャンネルマネージャ150は、データ持続性(data persistence)、フェイルオーバ機能(fail over function)及び他の機能を提供することができる。したがって、チャンネルマネージャ150は、ネットワークの任意の場所において、例えばチャンネル関連情報、データ持続性の属性、発行者及び購読者のユーザ情報、及びインフラストラクチャ情報を指定するデータベース又はデータベースの集合を含むチャンネルサービスを提供する。インフラストラクチャ情報は、例えば、インテリジェントルータ164、166、168及びこれらを接続するトンネルの識別情報、チャンネルの主語、及びチャンネルの属性(各属性の名称と種類)を含むことができる。また、パケット又はメッセージは、固定の属性及び可変の属性の識別情報を含むチャンネル関連情報を搬送することができる。 FIG. 6 shows the configuration of a
ユーザは、オンラインのとき、経路情報(channel information)をダウンロードすることができる。例えば、ユーザは、ユーザ名とパスワードを用いて、自らを登録することができる。ユーザのログオンが認証されると、ユーザは、チャンネルを開き(呼び出し)、チャンネルマネージャ150からチャンネルに関する情報を検索することができる。発行者装置は、コンテンツを発行する際に、この情報を用いることができ、購読者装置は、購読予約を入力及び登録するために、この情報を用いることができる。 The user can download channel information when online. For example, a user can register himself using a user name and password. Once the user's logon is authenticated, the user can open (call) the channel and retrieve information about the channel from the
この実施例では、チャンネルマネージャ150の各サーバ152、154、156は、各インテリジェントルータ164、166、168のためのプライマリ(primary)として機能する。特に、この実施例では、各インテリジェントルータ164、166、168は、2つのインターネットプロトコル(Internet Protocol:以下、IPという。)アドレスが供給され、一方のIPアドレスは、プライマリチャンネルマネージャ用であり、他方のIPアドレスは、バックアップチャンネルマネージャ用である。インテリジェントルータ164、166、168は、これらのIPアドレスを用いて、チャンネルマネージャ150の各サーバ152、154、156に接触し、経路情報を検索する。プライマリチャンネルマネージャに障害が発生すると、インテリジェントルータ164、166、168は、バックアップチャンネルマネージャと接触することができる。したがって、チャンネルマネージャ150のサーバ152、154、156は、これらを繋ぐ線によって示すように、チャンネル属性及び他の情報に関するデータを共有する。また、各サーバ152、154、156は、所定のバックアップチャンネルマネージャを有し、プライマリチャンネルマネージャに障害が生じた場合、他のバックアップチャンネルマネージャに処理を引き継がせることができる。ネットワーク内の機器は、コマンド、例えば経路情報を検索するコマンドを用いることができ、表3は、コマンドの具体例を示している。これに代えて、インテリジェントルータ164、166、168は、プライマリチャンネルマネージャのみを有していてもよく、あるいは3つ以上のチャンネルマネージャを有していてもよい。 In this embodiment, each
図7は、ユーザ装置又は機器をインテリジェントルータを有するネットワークに接続するためのユーザ装置又は機器内の具体的なソフトウェアコンポーネントのスタック180を示している。ユーザ装置は、発行者装置、購読者装置又はこれらの両方として用いることができ、ユーザ装置は、具体例として上述した様々な機器を含むことができる。スタック180は、1つ以上のユーザアプリケーション182を含むことができ、ユーザアプリケーション182は、ユーザからの購読予約の受信、発行者装置からの経路情報の受信又は発行するコンテンツ又はデータの受信に用いることができる。また、ユーザアプリケーション182は、ユーザ装置又は機器によって実行される他のあらゆる種類のアプリケーションを含んでいてもよい。 FIG. 7 illustrates a specific
また、スタック180は、例えば、エージェント184と、イベントライブラリ186と、キャッシュライブラリ188と、チャンネルライブラリ190と、メッセージングライブラリ192と、ディスパッチャライブラリ194とを含んでいてもよい。エージェント184は、ネットワーク接続の確立又は他の機能を提供し、表3は、エージェント184によって実行されるコマンドの具体例を示しており、エージェント184は、プロキシコマンド又は他の種類のコマンドを用いることができる。イベントライブラリ186は、ユーザ装置に関するイベント又は他のイベント又は情報を記録する。キャッシュライブラリ188は、データのローカルキャッシングを行う。チャンネルライブラリ190は、チャンネルの識別情報と、それらのチャンネルに関する情報とを保存する。ディスパッチャライブラリ194は、制御パス196、チャンネルマネージャ198、1つ以上のインテリジェントルータ200への接続を提供し、ディスパッチャライブラリ194は、表4に示す例示的な機能を含むことができる。メッセージングライブラリ192は、データパス204への接続を提供する。 Further, the
Cプログラミング言語で書かれたメッセージングAPI(以下、単にAPIという。)の具体例を表5〜表9に示す。表5及び表6は、メッセージを送信及び検索するAPIの具体例を示している。表7及び表8は、通知を送信及び検索するAPIの具体例を示している。表9は、制御メッセージを送信及び検索するAPIの具体例を示している。ここに示す特定の機能又は特徴を実現するAPI及び他のAPI、プログラム及びデータ構造は、例示的に示しているに過ぎず、これらの機能は、如何なるプログラミング言語で書かれたあらゆる種類のAPI又は他のソフトウェアエンティティとして実現してもよい。 Specific examples of messaging APIs (hereinafter simply referred to as APIs) written in the C programming language are shown in Tables 5 to 9. Tables 5 and 6 show specific examples of APIs for transmitting and retrieving messages. Tables 7 and 8 show specific examples of APIs for sending and retrieving notifications. Table 9 shows a specific example of an API for transmitting and retrieving a control message. The APIs and other APIs, programs and data structures that implement the particular functions or features shown here are merely exemplary, and these functions can be any kind of API or any other written in any programming language. It may be realized as another software entity.
図8は、上述したようなインテリジェントルータ及び図4に示すインテリジェントルータ92等のインテリジェントルータの例示的なソフトウェアコンポーネント210を示している。ソフトウェアコンポーネント210は、例えば、インテリジェントルータ92のメモリ94に格納されており、プロセッサ93によって実行することができる。ソフトウェアコンポーネント210は、例えば、フィルタリングデーモン212と、ディスパッチャ214と、経路選択デーモン216と、キャッシュマネージャ218とを含んでいる。フィルタリングデーモン212は、後述するように、購読予約のコンテンツを経路選択規則に基づいて処理するフィルタリングを、コンテンツベースの経路選択に提供する。ディスパッチャ214は、パス220を介してフィルタを伝搬するために必要な制御メッセージの通信を行い、また、ディスパッチャ214は、ユーザのエントリの単一点及びチャンネルマネージャを有する1つの安全なソケット(one secure socket)を提供することができ、ネットワークのセキュリティを向上させる。換言すれば、この具体例では、ユーザは、チャンネルマネージャに直接接触しないが、他の実施例において、ユーザは、チャンネルマネージャと直接接触してもよい。ディスパッチャ214は、制御メッセージを用いて、チャンネルマネージャから属性(名称−値の対)を得る。 FIG. 8 illustrates an
経路選択デーモン216は、データパス222による通信を行い、データパス222は、図4に示すような従来のバックボーンルータ95又は他の経路選択機器によって形成することができる。キャッシュマネージャ218は、対応するインテリジェントルータを含むネットワークノードにおけるデータのローカルキャッシングを行う。キャッシュマネージャ218の動作は、後に詳細に説明するが、キャッシュマネージャ218は、ネットワークコアを介したデータの分散キャッシングを行う。 The
コンテンツベースの経路選択は、アプリケーションレベルではなく、カーネルレベルにおいて実行することができる。カーネルによってアクセス可能なメモリは、アプリケーション層におけるメモリから独立している。アプリケーションにおいて、コンテンツベースの経路選択を実行するためには、例えば、メッセージデータをカーネルメモリ領域からアプリケーション領域にコピーし、アプリケーションのコンテキスト(context)をカーネルのコンテキストから、経路選択アプリケーションのコンテキストに切り換える必要がある。これらの処理は、いずれもかなりのオーバヘッドを引き起こす。ここで、コンテンツベースの経路選択をサポートするようにカーネルを変更すれば、上述したオーバヘッドが取り除かれ、経路選択をより高速に行うことができるようになる。 Content-based routing can be performed at the kernel level rather than at the application level. The memory accessible by the kernel is independent of the memory in the application layer. To perform content-based routing in an application, for example, it is necessary to copy message data from the kernel memory area to the application area and switch the application context from the kernel context to the routing application context. There is. Both of these processes cause considerable overhead. Here, if the kernel is changed to support content-based route selection, the overhead described above is removed, and route selection can be performed at higher speed.
このようなカーネルにおけるコンテンツベースの経路選択機能により、経路選択デーモン216は、実装例に応じて、データパス222を介してデータを直接又は間接的に送信又は受信することができる。経路選択デーモン216は、アプリケーション層において実行されるプロセスであり、カーネルに導入する(inject)コンテンツベースの経路選択テーブル(content-based routing table)を予め計算する(pre-computing)プロセスである。なお、カーネルは、経路選択テーブルが一旦導入されると、経路選択テーブルを用いて、経路決定を行うことができる。同様に、フィルタリングデーモン212は、フィルタリングテーブル(filtering table)を予め計算し、フィルタリングテーブルをカーネルに導入する。このカーネルの実行において、経路選択デーモン216もフィルタリングデーモン212もデータパス222とは直接インタラクトしない。 Such a content-based routing function in the kernel allows the
図9は、購読予約のコンテンツを含むことができるメッセージのパケット構造230の具体例を示している。コンテンツベースの経路選択に用いられるパケット又はメッセージは、例えば、ヘッダ部とペイロード部を含んでいる。ヘッダ部は、経路選択又は他の情報を指定する。ペイロード部は、データ又はコンテンツ、あるいはデータ又はコンテンツの指標(indication)を指示する。パケット構造230は、IPヘッダ232と、ユーザデータグラムプロトコル(User Datagram Protocol:以下、UDPという。)の伝送制御プロトコル(Transmission Control Protocol:以下、TCPという。)ヘッダ234と、長さの値238と、1つ以上の主語フィールド240と、1つ以上の属性242とを含んでいる。パケット構造230は、長さの値、主語及び属性のための基本構造を示している。また、コンテンツベースの経路選択で用いられるパケットは、例えば、後述する図18の実施例に示すように、他の又は異なる要素を含むことができ、コンテンツベースの経路選択のためのパケットは、如何なる手法で構成してもよい。また、属性は、例えば、メッセージの最後に付加される任意の属性を含むことができる。これらの任意の属性は、例えば発行者装置(又はルータ)によって追加される特別の情報(ad-hoc information)であり、必ずしもチャンネルに対して定められたメッセージフォーマットを用いて搬送する必要はない情報である。 FIG. 9 shows an example of a
発行者装置及び購読者装置における方法(Publisher and Subscriber Methodologies )
図10は、発行者装置によって、チャンネルを設定し、コンテンツを発行する例示的な発行方法250のフローチャートである。発行方法250は、例えば、発行者装置100内のプロセッサ114によって実行されるエージェントアプリケーション(以下、単にエージェントという。)106を含むソフトウェアモジュールによって実現することができる。発行方法250において、発行者装置100のエージェント106は、チャンネル用のプロキシの発行者生成(publisher creation)を受信する(ステップ252)。プロキシは、ネットワークとの通信を行う。エージェント106は、インタフェースを介してチャンネルにおいて用いられるメッセージフォーマットを判定する(ステップ253)。フォーマット情報は、例えば、チャンネルマネージャ又はネットワークにおける他のエンティティから得ることができる。エージェント106は、受信経路情報を用いて、チャンネルのプロキシを設定し(ステップ254)、この処理は、チャンネルの属性を受信し(ステップ256)、チャンネルへの通知を生成する(ステップ258)ことを含む。この通知は、チャンネル上でコンテンツを「待機(listening)」している機器にコンテンツを提供する。属性は、通知のパラメータ及び特性を定義する。Publisher and Subscriber Methodologies
FIG. 10 is a flowchart of an exemplary publishing method 250 for setting a channel and publishing content by an issuer device. The issuing method 250 can be realized by, for example, a software module including an agent application (hereinafter simply referred to as an agent) 106 executed by the
エージェント106は、チャンネルの識別子(ID)及びコンテンツ情報を、ネットワークコア内の又は購読予約を処理するためにそれらを用いる他の場所内のインテリジェントルータに送信する(ステップ260)。発行者装置100は、通知属性に適切な値を設定し(ステップ261)、そして、発行者装置100は、チャンネル属性に基づいて、通知に関するコンテンツを発行することができる(ステップ262)。この実施例におけるステップ260〜262により、通知の発行が完了する。この処理は、実際の個々の実施例に応じて、他の又は更なるステップを含んでいてもよい。したがって、この実施例における通知に関連した情報は、順序正しい一連の属性に区切られ、各属性は、名称と、通知内の位置(1から始まる)と、種類と、値とを有する。これに代えて、属性は、個々の実施例に応じて、異なる特性を有していてもよい。例えば、属性は、予め定義された属性、任意の属性又はこれらの両方を含むことができる。 Agent 106 transmits the channel identifier (ID) and content information to intelligent routers in the network core or in other locations that use them to process subscriptions (step 260). The
インテリジェントルータは、パケット内のチャンネルIDを用いて、対応するチャンネルの属性を得ることができる。この属性は、チャンネルを介して伝送されるパケットの構造と又はフォーマットを決定している。特に、各パケットは、例えば、チャンネルIDに関連したタグと、発行者ID又は主語のような他のヘッダ情報とを含むことができる。このタグは、例えば図18の具体例に示すように、主語をメッセージフォーマットの番号にマッピングするために用いることができる。この番号には、小さな整数値、例えば16ビットの値を用いることができる。これに代えて、他のあらゆる種類の番号又は情報を用いて、主語をマッピングすることができる。主語を番号にマッピングすることにより、特別な利点が得られる。例えば、これにより、メッセージフォーマット内の空間を節約でき、メッセージにおいて主語の指標を指定する一様な又は標準化された手法を提供することができ、この手法により、主語を速やかに検出し、識別できるようになる。インテリジェントルータは、マッピングを局所的に保存することができ、あるいは、これに代えて番号を用い、コマンドによって、リモートから対応する主語を取得することができる。 The intelligent router can obtain the attribute of the corresponding channel using the channel ID in the packet. This attribute determines the structure and format of the packet transmitted over the channel. In particular, each packet may include, for example, a tag associated with the channel ID and other header information such as issuer ID or subject. This tag can be used to map a subject to a message format number, for example, as shown in the example of FIG. This number can be a small integer value, for example a 16 bit value. Alternatively, the subject can be mapped using any other type of number or information. Mapping the subject to a number offers special advantages. For example, this can save space in the message format and provide a uniform or standardized way of specifying subject indicators in the message, which can quickly detect and identify the subject. It becomes like this. The intelligent router can store the mapping locally, or it can use the number instead and obtain the corresponding subject remotely by command.
表10は、主語を番号にマッピングするための構造を示しており、この具体例では、番号に整数値を用いている。表10における主語ツリーパラメータは、主語が階層関係内に1つ以上の主語フィールドを含むことができることを示しており、例えば、主語ツリーは、特定のシンボルによって区切られた一連の主語フィールドを含むことができる。主語ツリーの具体例は、表2に示されている。例えば、subject tree quotes.nyse(ニューヨーク証券取引所における主語ツリーの株価)は、主語「quote」とサブフィールド「nyse」を含んでおり、これらの2つの用語は、URL又は他のネットワークアドレスのように、「.(ピリオド)」によって区切られている。ピリオド及びURL型の文字列を用いる代わりに、如何なる文字及び区切りのためのシンボルを用いて、如何なる手法で主語ツリーを指定してもよい。 Table 10 shows a structure for mapping a subject to a number. In this specific example, an integer value is used for the number. The subject tree parameter in Table 10 indicates that the subject can include one or more subject fields in a hierarchical relationship, for example, the subject tree includes a series of subject fields separated by a particular symbol. Can do. Specific examples of subject trees are shown in Table 2. For example, subject tree quotes.nyse (the price of the subject tree on the New York Stock Exchange) includes the subject “quote” and the subfield “nyse”, these two terms being like URLs or other network addresses. Are separated by “. (Period)”. Instead of using a period and URL type character string, the subject tree may be specified by any method using any character and symbol for delimiter.
特定のチャンネルのパケットフォーマット又は構造を知ることにより、インテリジェントルータは、コンテンツベースの経路選択のためのパケット内において、主語及び属性、又は他の情報を速やかに検出することができる。例えば、チャンネルは、パケット内のバイトを数えることによって、チャンネルを介して伝送されてきた主語及び属性のバイト位置を容易に特定でき、主語及び属性を簡単に検出することができる。これに代えて、インテリジェントルータは、パケットを解析して、主語及び属性、又は他の情報を検出することができる。 By knowing the packet format or structure of a particular channel, the intelligent router can quickly detect subject and attributes, or other information, in the packet for content-based routing. For example, by counting bytes in a packet, a channel can easily identify the byte position of the subject and attribute transmitted over the channel, and can easily detect the subject and attribute. Alternatively, the intelligent router can analyze the packet to detect subject and attributes, or other information.
表11は、C++プログラミング言語で書かれた発行者プログラムの具体例を示している。表12は、チャンネルを生成するAPIの具体例を示している。表13は、チャンネルマネージャによって維持されるチャンネル設定ファイルの具体例(図6参照)と、チャンネル関連情報とを示している。これに代えて、システムは、処理負荷を分散させるために、ローカルチャンネルマネージャとして機能する地理的に分散した複数のサーバのIPアドレスを提供する広域チャンネルマネージャ(global channel manager)を備えていてもよい。 Table 11 shows a specific example of an issuer program written in the C ++ programming language. Table 12 shows a specific example of an API for generating a channel. Table 13 shows a specific example of the channel setting file maintained by the channel manager (see FIG. 6) and channel related information. Alternatively, the system may include a global channel manager that provides the IP addresses of multiple geographically distributed servers that act as local channel managers to distribute the processing load. .
図11は、購読予約を受信及び処理するのに用いられる購読方法264のフローチャートである。購読方法264は、例えば、購読者装置122内のプロセッサ134によって実行されるエージェントアプリケーション(以下、単にエージェントという。)128を含むソフトウェアモジュールによって実現することができる。購読方法264において、例えば、グラフィカルユーザインタフェース(graphical user interface;以下、GUIという。)は、利用可能なチャンネルの指標をユーザに表示する(ステップ266)。この処理は、アプリケーション126によって行われる。チャンネルを識別する情報は、例えば、チャンネル関連情報を提供するチャンネルマネージャから受信することができる。あらゆる種類のアプリケーション126を用いて、如何なる特別な手法又はフォーマットによって、チャンネルを識別する情報を表示してもよい。アプリケーション126は、ユーザが選択したチャンネルを受信し(ステップ268)、選択されたチャンネルのAPI又は他のプログラムを呼び出す(ステップ270)。APIは、選択されたオプションに対応したチャンネルの購読予約オプションをユーザに表示する(ステップ272)。APIは、ユーザから購読予約に関する値を受け取り(ステップ274)、購読予約を、後述する処理のために、エージェント128に送る(ステップ276)。 FIG. 11 is a flowchart of a
購読予約のパラメータは、例えば表1に示すような述語を含むことができる。各チャンネルは、例えば、対応するチャンネルに関する特定の要求又はパラメータに基づいて、購読予約を処理するために、それ自体のAPIを用いることができる。これらのAPIは、例えば、購読予約を受け取るウェブベースの又はJavaベースのAPIを含むことができ、あらゆる種類のユーザインタフェース及び処理を用いて、購読予約に関する情報を受け取り、この情報をエージェント128に渡すことができる。 The subscription parameters may include predicates as shown in Table 1, for example. Each channel can use its own API to process subscriptions based on, for example, specific requirements or parameters for the corresponding channel. These APIs can include, for example, web-based or Java-based APIs that receive subscriptions, receive information about subscriptions using any kind of user interface and processing, and pass this information to the
図12は、チャンネル及び購読者画面(すなわちGUI)278、284を概念的に示す図であり、これらは、購読予約を受信する購読方法264に関連して用いられる。購読者画面278は、ユーザによって選択される利用可能なチャンネルを識別する複数の領域領域282を含んでいる。特定のチャンネルが選択されると、購読者画面284に示すように、購読予約のユーザの値を入力する領域286が表示される。ユーザが領域288を選択すると、購読予約が確定し、又は、ユーザが領域290を選択すると、購読予約が中止される。購読者画面278、284は、例えば、ハイパーテキストマークアップ言語(HyperText Markup Language:以下、HTMLという。)のウェブページとしてフォーマットしてもよく、又は如何なる他の形式でフォーマットしてもよい。また、購読者画面278、284は、領域及びコンテンツのあらゆる構成を含むことができ、例えば、所望の、ユーザフレンドリで視覚的に魅力的なインタフェースを、購読者に提供するために、例えばテキスト、図形、画像、様々な色又はマルチメディア情報を含むことができる。また、購読者画面278、284は、例えば、従来と同様のブラウザ機能を提供するツールバー280を含んでいてもよい。 FIG. 12 conceptually illustrates channel and subscriber screens (ie, GUIs) 278, 284, which are used in connection with a
表14は、C++プログラミング言語で書かれた購読者プログラムの具体例を示している。 Table 14 shows a specific example of a subscriber program written in the C ++ programming language.
ペイロード検査によるコンテンツベースの経路選択及びチャンネル
図13は、コンテンツベースの経路選択のためのペイロード検査方法300のフローチャートである。ペイロード検査方法300は、例えば、インテリジェントルータ92内のプロセッサ93によって実行され、フィルタリングデーモン212として表されるソフトウェアモジュールによって実現することができる。これに代えて、このぺイロード検査方法300は、ASICによって実現してもよく、あるいはハードウェアとソフトウェアの組合せによって実現してもよい。ペイロード検査方法300として示すコンテンツベースの経路選択は、インテリジェントルータ内、あるいは、例えばネットワークコア又はエッジルータのようなネットワーク内の任意の場所において実行することができる。Content Based Routing and Channel with Payload Inspection FIG. 13 is a flowchart of a payload inspection method 300 for content based routing. Payload inspection method 300 may be implemented, for example, by a software module that is executed by
一般的な意味では、コンテンツベースの経路選択は、パケットをどのように処理するかを決定するために、パケットのペイロード部を検査することが必要である。このコンテンツベースの経路選択方法は、例えば、購読予約のリストを任意の順序で(例えば、フィルタを用いて)処理し、経路選択規則に基づいて、メッセージを主語毎及び属性毎に比較し、メッセージの経路選択を決定し、ネットワークコアにおける処理を実行することを含む。この経路選択規則は、ルータにおける処理を制御する規則又はフィルタに関連したあらゆる規則を含むことができる。したがって、これらの経路決定は、ネットワークコアを介して配信することができる。主語をチャンネルとして表すことにより、メッセージフォーマットが決定され、したがって、インテリジェントルータは、例えば、特定のチャンネルのメッセージ又はパケット内の属性のバイト位置を知ることによって、メッセージ内の属性の位置を速やかに検出できる。 In a general sense, content-based routing requires examining the payload portion of the packet to determine how to process the packet. This content-based route selection method, for example, processes a list of subscription reservations in any order (eg, using a filter), compares messages by subject and attribute based on route selection rules, Determining the path selection and executing processing at the network core. This routing rule can include any rule associated with a rule or filter that controls processing at the router. Therefore, these route decisions can be distributed via the network core. By representing the subject as a channel, the message format is determined, so the intelligent router quickly detects the position of the attribute in the message, for example by knowing the byte position of the attribute in the message or packet of a particular channel it can.
ペイロード検査方法300において、インテリジェントルータ92は、メッセージのパケットを受信する(ステップ302)。インテリジェントルータ92は、パケットから、対応するメッセージのチャンネルIDを判定し(ステップ304)、このチャンネルIDを用いて、チャンネルの属性を読み出す(ステップ306)。この実施例では、チャンネルの種類(チャンネルIDから判定される。)は、パケット内の属性の位置及びデータタイプを決定している。チャンネルの属性は、局所的に保存し、例えばチャンネルマネージャを介して遠隔から読み出すこともできる。インテリジェントルータ92は、購読予約に対応するフィルタを検索する(ステップ308)。フィルタは、購読予約に対する1つ以上の属性テスト(attribute test)、多くの場合、属性テストのグループを含んでいる。インテリジェントルータ92は、フィルタ記述(filter description)のうちの対応する属性テストを、パケットの属性に適用する(ステップ310)。 In the payload inspection method 300, the
フィルタ記述の全ての属性テストの結果が肯定的である場合(ステップ312)、すなわち、属性が全ての属性テストを満たす場合、インテリジェントルータ92は、フィルタに関連した規則によって定められた1組の機能を実行する(ステップ314)。これらの機能には、例えば、次のリンクにパケットをルーティングすること、及び/又はローカルルータにおいて、パケットのコンテンツに対して、規則で定められた何らかの働き又は演算を実行することが含まれる。この働き又は次のリンクは、例えば、対応する購読予約を指定するデータ構造において識別される。規則がリンクである場合、規則は、通常、パケットを受信する次のネットワークノードを識別し、次のネットワークノードには、インテリジェントルータ、バックボーンルータ、ネットワークに接続された機器又は他のエンティティが含まれる。これに代えて、次のリンクは、他の手法で指定し又は購読予約に関係付けることができる。 If the results of all attribute tests in the filter description are positive (step 312), that is, if the attributes satisfy all attribute tests, the
フィルタ記述の全ての属性テストの結果が肯定的でない場合(ステップ312)、すなわち、属性が全ての属性テストを満たさない場合、フィルタは、不一致(mismatch)が宣言される(ステップ315)。インテリジェントルータ92は、フィルタ記述の全ての属性テストが終了するまで、又は最初の否定的結果が得られるまで、上述した処理を繰り返す。 If the results of all attribute tests in the filter description are not positive (step 312), that is, if the attribute does not satisfy all attribute tests, the filter is declared mismatch (step 315). The
インテリジェントルータ92は、このフィルタに対する全ての属性テストを行った後、更なるフィルタが存在するかを判定し(ステップ316)、更なるフィルタが存在する場合、インテリジェントルータ92は、ステップ308に戻り、次のフィルタに対する属性テストを読み出して、次のフィルタの属性を処理する。マッチング処理(ステップ308、310、312、314、315、316)は、フィルタの全集合に対する処理が終了するまで、あるいは全ての働き又は全ての規則に対する結果が判定されるまで続けられる。パケットがあるフィルタを満たさない場合、そのフィルタは、ドロップ(破棄)されて、転送されない。 After the
インテリジェントルータ92は、フィルタをある特定の順序に配列することができる。例えば表15に示すように、インテリジェントルータ92は、購読予約のフィルタを、ファイル又は経路選択テーブル内に保存することができ、属性にフィルタを適用する(属性テストの)ために、これらのフィルタを直線的に順序付けることができる。これに代えて、経路選択テーブルは、フィルタへのリンク又はポインタを含んでいてもよい。 The
コンテンツベースの経路選択では、アプリケーション及び性能向上ヒューリスティックス(performance-enhancing heuristics)、例えばトラヒック条件に基づくアルゴリズムの切換に基づいて、複数の方法を選択的に同時に用いることができる。コンテンツベースの経路選択に関するペイロード部を検査するために、処理用のフィルタは、ネットワーク内のルータにおいて、選択的に暗号化、復号、変換及び併合することができる。例えば、アプリケーションにおける発行(publication)が、小数点以下2桁より小さい通貨属性を含まない場合、購読予約、例えば「価格>3.54122ドル」は、「価格>3.54ドル」に切り捨てられる。また、例えば、海外からの発行が、米国内に位置する最初のルータに到達したときに、外貨を、米国の通貨に換算してもよい。 In content-based routing, multiple methods can be selectively used simultaneously based on application and performance-enhancing heuristics, eg, switching algorithms based on traffic conditions. Processing filters can be selectively encrypted, decrypted, transformed and merged at routers in the network to examine the payload portion for content-based routing. For example, if the publication in the application does not include a currency attribute that is less than two decimal places, a subscription reservation, eg “price> $ 3.54122”, is truncated to “price> $ 3.54”. Also, for example, when an overseas issue reaches the first router located in the United States, the foreign currency may be converted into the US currency.
インテリジェントルータ92は、線形的な手法に代えて、処理の速度と効率を高めることができる他の順序で、又は様々なアルゴリズムに基づいて、処理するフィルタを選択することができる。表16は、購読予約と対応するリンクの具体例を示す。これらの具体例において、主語は、特定のチャンネルに関連し、主語の購読予約は、フィルタの経路選択規則によって表すことができる。主語は、例えば、ユニフォームリソースロケータ(Uniform Resource Locator:URL)のようなコンテンツの供給源装置(source)を識別するネットワークアドレスを含むことができる。 Instead of a linear approach, the
図14は、キャッシング方法320のフローチャートである。キャッシング方法320は、例えば、インテリジェントルータ92内のプロセッサ93によって実行され、キャッシュマネージャ218として表されるソフトウェアモジュールによって実現することができる。これに代えて、このキャッシング方法300は、対応するインテリジェントルータと同じ又は異なる物理機器内のASICによって実現してもよく、あるいはハードウェアとソフトウェアの組合せによって実現してもよい。キャッシング方法320において、インテリジェントルータ92は、データ又はコンテンツと、チャンネルIDと、主語とを含むメッセージを受信する(ステップ322)。インテリジェントルータ92は、データにタイムマークを付して(time mark)(ステップ324)、データを、例えばメモリ94又は補助記憶装置97に局所的に格納する(ステップ326)。インテリジェントルータ92は、キャッシュデータに、チャンネルID、主語及びタイムスタンプによって、インデックスを付ける(ステップ328)。 FIG. 14 is a flowchart of the
インテリジェントルータ92がデータの要求を受信した場合(ステップ330)、インテリジェントルータ92は、その要求に基づき、インデックスを用いて、キャッシュデータを検索する(ステップ332)。インテリジェントルータ92は、最終的に要求者装置(requester)又は他のエンティティに伝送するために、キャッシュデータを、バックボーンルータ95又は他の経路選択エンティティに転送する。キャッシング方法320は、継続的にデータをキャッシュに格納し、キャッシュデータ(cached data)を、要求に応じて検索するために、繰り返し実行することができる。 When the
図15は、キャッシング方法320に用いられるキャッシュインデックス336の具体例を示している。キャッシュインデックス336は、データ338が入力され、これをタイムスタンプ340とともに保存する。データを収集する際、全てのデータには期間Δt毎にマークが付される。ここで、期間Δtは、マーク間の時間、例えばt2−t1を表す。タイムマークの付与(time marking)のために、他のあらゆる種類のインデックスを用いてもよい。 FIG. 15 shows a specific example of the
表17は、キャッシュデータに用いられるインデックスを概念的に示している。表18は、キャッシングのための接続履歴を保存するためのデータ構造を概念的に示している。表19は、インテリジェントルータを有するネットワークノードにおいて、データを局所的にキャッシュに格納するために用いられるデータ構造の具体例を示している。 Table 17 conceptually shows indexes used for cache data. Table 18 conceptually shows a data structure for storing a connection history for caching. Table 19 shows a specific example of a data structure used for storing data locally in a cache in a network node having an intelligent router.
タイムマークの付与は、固定された如何なる間隔で行ってもよく、可変の時間間隔で行ってもよい。例えば、データを5分毎にキャッシュに格納して、インデックスを付けてもよい。キャッシュマネージャ218は、ステップ332において、時刻及び主語を指定した、キャッシュデータを読み出すコマンド(例えば、#.getCache)を受信すると、キャッシュインデックスを用いて、要求に対応するキャッシュデータを読み出すことができるか否かを判定する。 The time mark may be given at any fixed interval or at a variable time interval. For example, data may be stored in a cache every 5 minutes and indexed. If the
各主語又はチャンネルは、例えば、マルチキャストツリー及び1組のインテリジェントルータにおけるそれ自体のIPアドレスを含むことができる。したがって、表18は、ユーザ装置に局所的に保存できる、このようなルータ間の接続履歴を示している。エッジルータが故障した場合、ユーザ装置は、エッジルータがオンラインに戻ったときに、チャンネルの上流(upstream)のルータにどのように再接続すべきかを決定するために、この接続履歴にアクセスすることができる。また、ユーザ装置は、例えば、それが切断されていた期間における購読予約に関する保留中のコンテンツを取得するために、ゲットキャッシュコマンド(get cache command)を実行することができる。 Each subject or channel can include, for example, its own IP address in a multicast tree and a set of intelligent routers. Therefore, Table 18 shows such a connection history between routers that can be stored locally in the user equipment. If an edge router fails, the user equipment can access this connection history to determine how to reconnect to the upstream router of the channel when the edge router comes back online. Can do. Also, the user device can execute a get cache command, for example, to obtain pending content for subscription subscriptions during the period when it was disconnected.
これらの例示的なデータ構造は、以下の情報を含んでいる。主語ノード(subject node)は、主語識別子(subject identifier)と、主語レベル(subject level)と、親チャンネル(parent channel)又は主語ノードへのポインタと、それ自体のディレクトリのためのファイル記述子(file descriptor)と、その次のレベルの主語ノードを含むハッシュテーブル(hash table)へのポインタと、データノード(data node)へのポインタとを含んでいる。データノードは、主語親ノード(subject parent node)へのポインタと、データディレクトリ(data directory)のためのファイル記述子と、各記憶装置に保存されたデータのデータ構造を含む循環バッファ(circular buffer)と、バッファの最初及び最後と、検索及び保存中にデータノードをロックするロックとを含んでいる。保存された時間単位ノード(time grain node)は、実際のデータファイルを表すノードであり、最後の時間単位ノードは、メモリには維持されているが、記憶装置にはまだ保存されていない最後のバッファを表す。この実施例におけるキャッシング及びデータ記憶スレッドは、最後の時間単位ノードに対する同時アクセスを防止する、最後の時間単位ノードのミューテックス(mutex)を用いる。 These exemplary data structures include the following information: The subject node includes a subject identifier, a subject level, a pointer to a parent channel or subject node, and a file descriptor for its own directory (file descriptor), a pointer to a hash table including a subject node of the next level, and a pointer to a data node. The data node is a circular buffer that contains a pointer to the subject parent node, a file descriptor for the data directory, and the data structure of the data stored in each storage device. And the beginning and end of the buffer and the lock that locks the data node during retrieval and storage. The saved time grain node is the node that represents the actual data file, and the last time unit node is the last one that is maintained in memory but not yet saved in storage. Represents a buffer. The caching and data storage thread in this embodiment uses a last time unit node mutex that prevents simultaneous access to the last time unit node.
エージェントの処理
図16は、送信購読予約メッセージのためのエージェント方法350のフローチャートである。エージェント方法350は、例えば、購読者装置(以下、ユーザ装置ともいう。)122内のプロセッサ134によって実行され、エージェント128として表されるソフトウェアモジュールによって実現することができる。エージェント方法350において、エージェント128は、例えば、図11及び図12を用いて説明した購読方法264によって生成された購読予約を受信する(ステップ352)。エージェント128は、購読予約用の論理式を指定する文字列を生成し(ステップ354)、文字列を解析して、購読予約内のエラーを検出する(ステップ356)。エラーが存在する場合、エージェント128は、ユーザがエラーを修正し、購読予約を再入力するように促すエラーメッセージをユーザに表示する(ステップ360)。購読予約がエラーを全く含んでいない場合(ステップ358)、エージェント128は、例えば後続するステップのように、論理式をデータ構造内に保存する(ステップ362)。エージェント128は、データ構造内の構成要素である不等号式(constituent not-equal expression)を肯定的形式に変換し(ステップ364)、更にデータ構造を対応する論理和標準形式(disjunctive normal form:以下、DNFという。)に変換する(ステップ366)。また、エージェント128は、範囲フィルタ(range filter)及びメンバシップテスト(membership test)のみが含まれるように、DNF構造のAND式(AND expression)を単純化する(ステップ368)。Agent Processing FIG. 16 is a flowchart of an
DNFは、周知の標準形式(canonical form)であり、その標準形式においては、論理式は、1つ以上の部分式(sub-expressions)のOR(選言肢(disjunct)と呼ばれる)として表され、各部分式は、1つ以上の属性テストのANDで表される。例えば、論理式「price >= 10 AND (symbol ="LU" OR symbol ="T")」に等価なDNFの論理式は、論理式「(price >= 10 AND symbol ="LU") OR (price >= 10 AND SYMBOL ="T")」である。 DNF is a well-known canonical form in which a logical expression is expressed as an OR (called a disjunct) of one or more sub-expressions. Each sub-expression is represented by an AND of one or more attribute tests. For example, the logical expression of DNF equivalent to the logical expression “price> = 10 AND (symbol =" LU "OR symbol =" T ")" is the logical expression "(price> = 10 AND symbol =" LU ") OR ( price> = 10 AND SYMBOL = "T") ".
ステップ364における変換では、「不等号(not-equal)」演算子(例示的な構文では、!=で表す。)を有する論理式を、1つの許可されていない値ではなく、全ての許可される値を指定する等価な「肯定的(positive)」形式に変換することが必要である。この実施例のルータは、肯定的形式の式を要求するので、この変換は、DNFを生成する前に行われる。例えば、論理式「price != 80」は、等価な肯定的論理式「price<= 79 OR price >=81」に変換することができる。 In the transformation in
ステップ368における変換は、DNFが生成された後に実行されるので、得られるAND式を更に単純化しなければならず、また、この変換は、この実施例におけるルータの作業を単純化するために実行される。特に、同じ属性に対する複数の属性テストのANDは、1つの下限、1つの上限、下限及び上限の両方、又は等号テスト(equality test)の場合における単一の値のいずれかを標準的な(canonical)「範囲フィルタ」に単純化することができる。そして、特定の種類の範囲フィルタは、例えば表22に基づいて符号化される。 Since the transformation in
例えば、論理式「price >= 10 AND price <= 80 AND price >=20 AND price <= 100」は、論理式「price >= 20 AND price <= 80」に単純化することができ、これは、下限と上限の両方を有する範囲フィルタの具体例である。単純化後の他の種類の具体例としては、「price >= 20(下限のみ)」、「price <= 80(上限のみ)」、「price = 50(単一の値)」等がある。これらの範囲フィルタを生成する際、何らかの部分式を真又は偽に単純化することができ、その場合、部分式は、論理代数の法則に従って削除することができ、これにより、メッセージ内の論理式の符号化が更に最適化される。例えば、論理式「price >= 50 AND price <= 20」は、論理式を満足させる「price」の値がないので、偽に単純化することができる。フィルタの論理式(filter expression)全体が偽に単純化される特別な場合、エージェント128は、メッセージを生成する必要がなく、これにより、ルータを不要な作業から解放することができる。 For example, the logical expression "price> = 10 AND price <= 80 AND price> = 20 AND price <= 100" can be simplified to the logical expression "price> = 20 AND price <= 80" This is a specific example of a range filter having both a lower limit and an upper limit. Specific examples of other types after simplification include “price> = 20 (only the lower limit)”, “price <= 80 (only the upper limit)”, “price = 50 (single value)”, and the like. In generating these range filters, any sub-expression can be simplified to true or false, in which case the sub-expression can be deleted according to the laws of logical algebra, thereby allowing the logical expression in the message Is further optimized. For example, the logical expression “price> = 50 AND price <= 20” can be simplified to false because there is no “price” value that satisfies the logical expression. In the special case where the entire filter expression is simplified to false, the
主語フィルタがワイルドカードを含んでいる場合、エージェント128は、後述するように、それらを選択的に変換することができる(ステップ370)。これに代えて、如何なるワイルドカードもユーザ装置122又は他の機器ではなく、ネットワーク内において変換してもよい。この例示的な実施例では、主語フィルタの構文は、ワイルドカードを用いる唯一の構文であり、属性フィルタの構文は、論理式を用いる唯一の構文である。これに代えて、実施例において、主語フィルタ及び属性フィルタの異なる又は様々な種類の構文を用いてもよい。 If the subject filter includes wildcards,
エージェント128は、生成されたDNFの論理式をメッセージに符号化し(ステップ372)、メッセージをインテリジェントルータに転送する(ステップ374)。この符号化は、購読予約を、一連のデータから構成されることを意味する平坦な(flat)メッセージフォーマットに変換することを含む。また、この転送は、購読予約に対する主語フィルタ及び属性フィルタから生成される経路選択規則を、ネットワーク内の1つ以上のインテリジェントルータ又は他の経路選択エンティティに伝搬することを含む。この伝搬のために、例えば、購読予約の論理式を従来のパケット構造にマッピングすることができる。 The
ステップ372における符号化は、チャンネルの購読予約を、チャンネル全体に亘って伝搬するために、メッセージングAPIのメッセージフォーマットに配列(marshalling)することを含む。例えば、購読予約は、主語#.SUBSCRIPTIONを含む通知として内部的に送られる(messaged)。主語フィルタフィールドの変数(variable number)と属性テストの変数の両方があるので、この実施例では、主語フィルタフィールドの変数を保存するために、1対のバイトが用いられ、属性テストの変数を保存するために、もう1対のバイトが用いられる。主語フィルタの個々のフィールドは、連続して、例えば元の購読予約で指定された順番で配列され、各フィールドは、メッセージの2バイト部分に配列される。ワイルドカードフィールドの配列については後述する。 The encoding in
属性テストの配列においては、属性テストのオペランドは、通知の属性値の配列と同様な方法で、メッセージの最後に配列される。属性テスト及びオペランドは、配列される前に、所定の属性に対する位置順(position order)のテストと、これに続く任意の属性に対する名称順(name order)のテストとによって、DNFの各選言肢内で属性順(attribute order)にソートされる。更に、各選言肢内のスカラ値の(scalar valued)属性に対する1組の関係テスト(relational tests)は、1つの限界値(limit)(左が開いた範囲(left-open range)又は右が開いた範囲(right-open range)又は等号(equality)のテスト)、又は2つの限界値(異なる限界値間の閉じられた範囲のテスト)を有する範囲フィルタとして、標準形式に単純化される。属性テストに関する残りの情報は、オペランドと同じ順番で、例えば2バイト対(two-byte pairs)に符号化され、この2バイト対のシーケンスは、メッセージ内において、主語フィルタフィールドの2バイト符号化のシーケンスの直後に配置される。2バイト対は、属性テストの連続したビット列の符号化の1つの形式を構成することができ、これは、2バイト対とは別に、他の種類の符号化を表すためにも用いることができる。属性テストの具体例については、後述する。 In the attribute test array, the attribute test operands are arranged at the end of the message in a manner similar to the notification attribute value array. Attribute tests and operands are each ordered by DNF by a position order test for a given attribute, followed by a name order test for any attribute before being arranged. Sorted in attribute order. In addition, a set of relational tests for the scalar valued attribute within each choice has one limit (left-open range or right-open range). Simplified to standard form as a range filter with open range (right-open range or equality test) or two limit values (closed range test between different limit values) . The remaining information about the attribute test is encoded in the same order as the operands, for example, two-byte pairs, and this two-byte pair sequence is included in the message in the two-byte encoding of the subject filter field. Placed immediately after the sequence. Two-byte pairs can constitute one form of encoding of consecutive bit strings of attribute tests, which can be used to represent other types of encodings apart from two-byte pairs. . A specific example of the attribute test will be described later.
表20は、属性テストの符号化規則を示している。表21は、2バイト対の符号化を示し、表22は、2バイト対の演算子IDの符号化を示している。 Table 20 shows the encoding rule for the attribute test. Table 21 shows the encoding of 2-byte pairs, and Table 22 shows the encoding of 2-byte pairs of operator IDs.
テストの2バイト対が、既に、テストのオペランドの種類と、テストが所定又は任意の属性に適用された否かの両方を表しているので、任意の属性又はそれらの種類に対して実行されたテストの回数を別に配列する必要はない。この方式では、通知内の所定の属性の数が127個以下であると仮定している。これに代えて、この設計では、属性テストを符号化するために、より多くのビットを用いることができる。 Since the two byte pairs of the test already represent both the operand type of the test and whether or not the test was applied to a given or arbitrary attribute, it was performed on any attribute or those types There is no need to arrange the number of tests separately. In this method, it is assumed that the number of predetermined attributes in the notification is 127 or less. Alternatively, in this design, more bits can be used to encode the attribute test.
この配列規則は、属性フィルタのDNFに基づいて、属性テストを順序付け及びグループ化する(group)が、インフラストラクチャの構成要素(例えば、ルータ)は、属性フィルタの全体評価をより効率的に行うために、属性テストを別の順序で(例えば、異なる属性テストの成功又は失敗の確率に関して動的に導出されたローカルデータに基づいて)評価するように選択することができる。メッセージの購読予約IDフィールドは、購読予約を変更又は取り消す(unsubscribe)後続の要求において、エージェントのエッジルータに対して購読予約を一義的に識別するための、エージェントによって生成された値である。特に、購読予約の属性フィルタに対する動的な変更は、主語が#.RESUBSCRIPTIONであり、且つ購読予約IDが既に登録されたものであって、変更する購読予約IDである場合を除いて、図18の実施例に示すメッセージフォーマットを用いて伝搬される。購読停止(unsubscription)は、例えば、主語を#.UNSUBSCRIPTIONとし、購読予約IDを、既に登録されたものであって、登録を取り消す(unsubscribed)購読予約IDを有する図18に示すメッセージフォーマットを用い、購読予約IDフィールドによって伝搬される。 This ordering rule orders and groups attribute tests based on the attribute filter's DNF, but infrastructure components (eg, routers) make the overall evaluation of the attribute filter more efficient. In addition, the attribute tests may be selected to be evaluated in another order (eg, based on dynamically derived local data regarding the probability of success or failure of different attribute tests). The subscription ID field of the message is a value generated by the agent to uniquely identify the subscription to the agent's edge router in subsequent requests to change or unsubscribe the subscription. In particular, the dynamic change to the subscription reservation attribute filter is shown in FIG. 18 except when the subject is # .RESUBSCRIPTION and the subscription reservation ID is already registered and the subscription reservation ID is changed. It is propagated using the message format shown in the embodiment. Unsubscription uses, for example, the message format shown in FIG. 18 where the subject is # .UNSUBSCRIPTION and the subscription ID is already registered and has an unsubscribed subscription ID. Propagated by the subscription ID field.
以下、上述したエージェントによる変換及び符号化の具体例を説明する。具体的な属性フィルタの論理式「price >= 10 AND (symbol == "LU" OR (volume >= 1000 AND volume <= 10000))」について考察する。図19は、ステップ362において、論理式を保存するためにエージェントによって用いられるオブジェクト(object)を表した統一モデリング言語(Unified Modeling Language:以下、UMLという。)390を示している。この図19は、変数値、定数値又はその両方を含むことができる購読予約を指定するための階層関係を示している。図19のオブジェクトは、特定の実施例に基づく、フィルタクラスの例である。各単純フィルタ(simple filter)のオブジェクトは、フィルタの論理式の対応する属性テストに関する情報を保存するために用いられる属性の値を表している。図19に示す表現では、ORフィルタ396は、2つのANDフィルタ392、400に接続している。ANDフィルタ392は、購読予約の属性を有する単純フィルタ394を含んでいる。同様に、ORフィルタ396は、単純フィルタ398を含み、ANDフィルタ400は、単純フィルタ402、404を含んでいる。 Hereinafter, a specific example of the conversion and encoding by the agent described above will be described. Consider a logical expression “price> = 10 AND (symbol ==“ LU ”OR (volume> = 1000 AND volume <= 10000))” of a specific attribute filter. FIG. 19 shows a Unified Modeling Language (hereinafter referred to as UML) 390 that represents an object used by the agent to store a logical expression in
この実施例においては、属性price、symbol、volumeは、関連したチャンネルの所定の属性であり、それぞれ位置0、1、2が定義されているものとする。更に、各属性の種類は、それぞれ符号なし整数(タイプコード6)、文字配列(character array)(タイプコード12)、符号なし整数(タイプコード6)であるものとする。 In this embodiment, attributes price, symbol, and volume are predetermined attributes of related channels, and
次に、その属性フィルタとして、上述した具体的な属性フィルタの論理式を含む購読予約について考察する。図18は、購読予約をメッセージに配列した具体例を示している。図18の左側の配列386は、実際のメッセージ内容を示しており、図18の右側の配列388は、メッセージの各部分の説明を示している。各配列の横幅は、4バイトに対応している。配列する前に、属性フィルタは、その等価なDNFの論理式「(price >= 10 AND symbol == "LU") OR (price >= 10 AND volume >= 1000 AND volume <= 10000)」に変換されている。 Next, a subscription reservation including the above-described logical expression of the specific attribute filter is considered as the attribute filter. FIG. 18 shows a specific example in which subscription reservations are arranged in a message. An
16ビットの属性テストの符号化は、異なる部分を分離するギャップ(gap)を有するビットシーケンスとして示される。なお、この実施例においては、priceに対する2つのテストは、それぞれ別の選言肢内に存在するので、結合することができず、したがって、これらは、右の限界値(bound)がない範囲(右が開いた範囲)として別々に配列される。一方、volumeに対する2つのテストは、同じ選言肢内に存在するので、結合することができ、したがって、これらは、単一の「閉じた範囲」のテストとして配列される。 The encoding of the 16-bit attribute test is shown as a bit sequence with a gap separating different parts. Note that in this example, the two tests for price are in separate choices and therefore cannot be combined, so they are in the range without the right bound (bound) Are arranged separately as the open range on the right. On the other hand, the two tests for volume can be combined because they are in the same choice, so they are arranged as a single “closed range” test.
また、特定のフィールドは、「仮定(assumed)」として特徴付けられ、これは、この具体例においては、これらのフィールドの値が、任意に選択され、通常、配列された購読予約から独立していることを意味する。更に、購読予約の主語フィルタは、「>」として任意に選択され、これは、関連したチャンネルによって定義された如何なる主語にも一致する。上述し、図18及び図19に示した具体例は、例示的なものであり、配列は、他のあらゆる種類の購読予約とともに用いてもよい。また、エージェント方法350は、購読予約を配列する一具体例に過ぎず、購読予約は、他の如何なる方法によって配列することができる。 Also, certain fields are characterized as “assumed”, in which, in this embodiment, the values of these fields are arbitrarily chosen and are usually independent of the arranged subscriptions. Means that In addition, the subject filter for the subscription is arbitrarily selected as “>”, which matches any subject defined by the associated channel. The examples described above and shown in FIGS. 18 and 19 are exemplary, and the arrangement may be used with any other type of subscription. Also, the
図17は、受信メッセージのためのエージェント方法376のフローチャートである。エージェント方法376は、例えば、ユーザ装置122のエージェント128及びアプリケーション126によって実現することができる。エージェント方法376において、エージェント128は、インテリジェントルータから購読予約に対応するメッセージを受信する(ステップ378)。エージェント128は、購読予約に対応するチャンネルを、例えばメッセージのチャンネルIDによって判定し(ステップ380)、チャンネルのAPIを呼び出す(ステップ382)。APIは、ユーザ装置122において、購読予約のデータをGUI又は他のフォーマットで表示する(ステップ384)。受信メッセージの処理としては、上述した符号化処理の逆のデータ復号処理を用いることができ、この復号(逆符号化)は、ルータ又は他のネットワークエンティティにおいて実行することができる。 FIG. 17 is a flowchart of an agent method 376 for received messages. The agent method 376 can be realized by the
ワイルドカード処理
図20は、ワイルドカード方法410のフローチャートである。ワイルドカード方法410は、フィルタの1組の経路選択規則を用いて、ワイルドカードを購読予約の論理式に変換する具体例を示している。ワイルドカード方法410は、例えば、ユーザ装置122内のプロセッサ134によって実行され、エージェント128として表されるソフトウェアモジュールによって実現することができる。これに代えて、ワイルドカードは、ネットワークにおいて、インテリジェントルータ92内のソフトウェア制御のプロセッサ93によって、又はASIC91内の対応する機能によって処理することができる。ワイルドカードは、空のフィールド(open fields)又は可変長のフィールドを含んでおり、表21は、このようなフィールドの具体例を示している。Wildcard Processing FIG. 20 is a flowchart of the wildcard method 410. The wildcard method 410 shows a specific example in which a wildcard is converted into a subscription reservation logical expression using a set of filter route selection rules. The wildcard method 410 can be implemented, for example, by a software module that is executed by the
ワイルドカード方法410において、エージェント128又は他のエンティティは、ワイルドカードを含む購読予約を受信する(ステップ412)。購読予約の主語長は、発行者がコンテンツを発行する際に指定でき、主語は、発行者装置100において前処理することができ、例えば主語のフィールドを数え、したがって、フィールド数(長)を得ることができる。エージェント128は、フィルタオペランド内のフィールドの数を数え(ステップ414)、フィールド長=Nの新たな規則(フィルタ)を初期化する(ステップ416)。エージェント128は、購読予約のサブフィールドを読み出し(ステップ418)、フィルタオペランドのサブフィールドO[i]がワイルドカードであるか否かを判定する(ステップ420)。フィルタオペランドのサブフィールドO[i]がワイルドカードでない場合、エージェント128は、接続詞(conjunctive clause)を規則に追加し、フィールド[i]=O[i]とする(ステップ422)。フィルタオペランドが更なるサブフィールドを有している場合(ステップ424)、エージェント128は、ステップ418に戻り、この更なるサブフィールドを処理する。パラメータ[i]は、フィールドを表し、iは、この実施例においては、フィールド番号を表す整数である。 In the wildcard method 410, the
エージェント128は、サブフィールドを処理した後に、フィルタオペランドの最後のサブフィールドが「>」であるか否かを判定し(ステップ426)、フィルタオペランドの最後のサブフィールドが「>」である場合、長さの制約(constraint)をフィールド長>N−1に変更する(ステップ428)。ワイルドカード処理は、あらゆる種類のシンボルを用いることができ、「>」は、その一例に過ぎない。この具体例においては、「a.>」は、a.b、a.c、a.d等を表し、全てのレベルにおけるこれらの全てのサブ主語(例えば、a.b.x、a.c.x、a.b.x.y等)を表すことができる。また、他のシンボルをワイルドカードとして用いてもよい。 After processing the subfield,
必要に応じて、エージェント128は、変更された規則(transformed rule)をインテリジェントルータ92又はネットワークにおける他のエンティティに伝搬する(ステップ430)。したがって、ワイルドカード方法410は、ワイルドカード規則を、ワイルドカードを含まないことを意味する非ワイルドカード規則に変換するために、全てのサブフィールドに対して繰り返される。ワイルドカードの変換は、ネットワーク内の任意の場所、例えば、購読者装置122又はインテリジェントルータにおいて行うことができる。したがって、この変換は、他のエンティティに伝搬された、変更された規則を有する1つのエンティティで行い、又は動的に行うことができる。 If necessary,
表23は、ワイルドカードを処理するこれらの例示的な経路選択規則の概要をその具体例とともに示している。これらの経路選択規則は、例えば、インテリジェントルータで生成してもよく、又は他のネットワークエンティティで生成し、インテリジェントルータに伝搬してもよい。更に、表23の経路選択規則は、説明のために例示的に示しているに過ぎず、他の経路選択規則を用いてワイルドカードを変換してもよい。 Table 23 outlines these exemplary route selection rules for processing wildcards along with specific examples. These routing rules may be generated, for example, by intelligent routers, or may be generated by other network entities and propagated to intelligent routers. Furthermore, the route selection rules in Table 23 are merely shown for illustrative purposes, and wildcards may be converted using other route selection rules.
警告サービス
上述したインテリジェントなコンテンツベースの経路選択は、様々な用途に用いることができ、その1つとして、デジタルビデオ監視システム(digital video surveillance system:以下、DVSSという。)がある。例えば、警察又は警備会社等のユーザは、特定の位置のカメラからのビデオクリップを購読予約することができる。カメラは、デジタルビデオクリップを捕捉し、例えばインターネット等、コンテンツベースの経路選択を有するネットワークを介してこれらのクリップを伝送し、ネットワークコアは、購読予約に基づいて、ビデオクリップを処理する。これにより、ユーザは、興味があるビデオクリップを受信し、これらのフィルタリングは、ネットワークを介して配信することができる。ビデオクリップに加えて、例えば、機密保護違反、発火、不正検出等に対する如何なる種類の警告を提供するために、他の如何なる種類のコンテンツを配信してもよい。Warning Service The intelligent content-based route selection described above can be used in a variety of applications, one of which is a digital video surveillance system (hereinafter referred to as DVSS). For example, a user such as a police or security company can subscribe to a video clip from a camera at a specific location. The camera captures digital video clips and transmits these clips over a network with content-based routing, such as the Internet, for example, and the network core processes the video clips based on the subscription. This allows the user to receive video clips of interest and these filtering can be distributed over the network. In addition to the video clip, any other type of content may be distributed, for example, to provide any type of warning for security breaches, firing, fraud detection, and the like.
他の実施例としてカメラは、関連する動きセンサを備えていてもよい。この動きセンサは、動きを検出すると、カメラを起動し、捕捉と同時にビデオクリップをネットワークに伝送し、ネットワークは、コンテンツベースの経路選択を用いて、購読者にビデオクリップをルーティングする。 As another example, the camera may have an associated motion sensor. When the motion sensor detects motion, it activates the camera and transmits the video clip to the network upon capture, which uses content-based routing to route the video clip to the subscriber.
したがって、上述したコンテンツベースの経路選択により、ビデオクリップの処理及びルーティングに関するネットワークの負担を大幅に削減することができる。例えば、各電荷結合素子(charge coupled device:CCD)カメラによって生成されたビデオ信号を、デジタルビデオレコーダ(DVR)によって、DVRによって管理された局部記憶装置、ネットワークに取り付けられた広域記憶装置(global storage)、DVSSシステム及びIDSS管理サーバといった4つの異なる宛先に書き込む必要があるとする。このような膨大なデータ量を搬送するためのネットワーク帯域幅を考慮すると、IDSSによって管理されるCCDカメラ又はDVRの容量が顧客の能力要求を満たさない場合がある。したがって、例えば、媒体又は大口顧客のための技術を用いて、帯域幅を制限する必要がある。図21は、各DVRが、4台又は16台のCCDカメラを管理できる監視システムの全体的なアーキテクチャを示している。 Thus, the content-based route selection described above can greatly reduce the network burden associated with video clip processing and routing. For example, a video signal generated by each charge coupled device (CCD) camera is converted into a local storage device managed by the DVR or a global storage device attached to the network by a digital video recorder (DVR). ), It is necessary to write to four different destinations, the DVSS system and the IDSS management server. Considering the network bandwidth for carrying such an enormous amount of data, the capacity of the CCD camera or DVR managed by the IDSS may not meet customer capability requirements. Thus, for example, there is a need to limit bandwidth using media or technology for large customers. FIG. 21 shows the overall architecture of a surveillance system where each DVR can manage 4 or 16 CCD cameras.
アーキテクチャ概要:
図22は、主に上述した技術に基づいて、図21に示す監視システムの能力を向上させる2つの拡張例を示している。図22に示すように、第1の拡張は、DVRバックボーントラヒックを低減することを目的とし、第2の拡張は、上述したようなデータ配信効率を向上させるための機能と同様なコンテンツベースの経路選択機能を提供するzボックス(z-box)と呼ばれる機器を用いる。Architecture overview:
FIG. 22 shows two examples of expansion that improve the capability of the monitoring system shown in FIG. 21 mainly based on the above-described technique. As shown in FIG. 22, the first extension aims to reduce DVR backbone traffic, and the second extension is a content-based route similar to the function for improving the data distribution efficiency as described above. A device called a z-box that provides a selection function is used.
DVRバックボーンのローカルトラヒックの低減:
データ配信スキームが非効率であると、重大な拡張性の問題が生じることがある。すなわち、TCPベースのプロトコルを用いて、DVRによって生成される画像ファイルを他のボックスに供給する場合、使用される帯域幅は、ローカルエリアネットワーク(LAN)に接続されている機器の数に比例して大きくなる。例えば、IDSSについて言えば、同じストリーミングビデオデータは、ネットワークに接続された記憶装置(SAN又はNAS)、IDSSモニタ、及び遠隔監視ソフトウェアである各DVSSに送信する必要がある。Reducing local traffic on the DVR backbone:
Inefficient data distribution schemes can cause significant scalability problems. That is, when an image file generated by DVR is supplied to another box using a TCP-based protocol, the bandwidth used is proportional to the number of devices connected to the local area network (LAN). Become bigger. For example, for IDSS, the same streaming video data needs to be sent to each storage device (SAN or NAS) connected to the network, IDSS monitor, and each DVSS which is remote monitoring software.
この問題を解決する1つの手法として、各DVRが1つのみのデータストリームをLANに発行し、ネットワークに接続された他の機器が購読予約の結果として、このデータストリームを受信するようにしてもよい。この場合、DVRの出力レートが10メガビット/秒(Mbps)であれば、例えば、ネットワーク上に3個の購読機器に情報を提供するために必要な出力レートは、30Mbpsではなく、10Mbpsで足りる。 One approach to solving this problem is that each DVR issues only one data stream to the LAN and other devices connected to the network receive this data stream as a result of a subscription. Good. In this case, if the output rate of the DVR is 10 megabits / second (Mbps), for example, the output rate required to provide information to three subscribed devices on the network is 10 Mbps instead of 30 Mbps.
このような発行−購読構造を実現するために、DVRボックス又はDVRデータを利用する他の何らかの機器(例えば、IDSS、広域記憶装置)において、上述した事象通知APIを用いることができる。この事象通知APIは、単純であるが、有効であり、ここでは、IPマルチキャスティング及び復旧プロトコル(recovery protocol)を用いることができる。また、この事象通知APIは、上述の発行−購読モデルに基づいて実現でき、このため、他の実施は、コードを変える必要はなく、単に、事象通知APIを提供するライブラリの完全版に再リンクさせればよい。 In order to realize such an issue-subscribe structure, the event notification API described above can be used in a DVR box or some other device (for example, IDSS, wide area storage device) that uses DVR data. This event notification API is simple but effective, where IP multicasting and recovery protocol can be used. This event notification API can also be implemented based on the publish-subscribe model described above, so other implementations do not require code changes and simply relink to the full version of the library that provides the event notification API. You can do it.
DVSSのプロキシ:
各DVSSは、DVRボックスへの1つの接続(TCPベース)を確立し、ストリーミングビデオデータを受信することができる。DVSS proxy:
Each DVSS can establish one connection (TCP-based) to the DVR box and receive streaming video data.
図22に示すように、この手法は、2つの段階によって説明することができる。第1の段階であるステージ1では、LAN側において、全てのDVSS発信データ(すなわちDVRからDVSSに供給されるデータ)を処理するためのプロキシサーバ(例えば、zボックス1)を準備する。このプロキシサーバは、LAN上の全てのDVRデータを購読し、外部のネットワーク(例えば、インターネット)にそのデータを発行する。DVSSは、このデータを購読する。したがって、プロキシサーバであるzボックス1は、購読者エージェント(例えば、エージェント128)と、DVRからデータを集める上述した発行−購読ネットワーク等の発行−購読ネットワークを介してこのデータを発行する発行者エージェント(例えば、エージェント36)とを提供する。 As shown in FIG. 22, this approach can be described in two stages. In
ステージ1により、LAN側において、トラヒックを大幅に削減することができるが、特に幾つかの国において、典型的な非対称デジタル加入者線(ADSL)が64のキロビット/秒(kbps)のアップリンク速度しか有していないような場合、送信リンクにおけるトラヒックの問題が残る。
更に図22を用いて説明すると、ステージ2では、好ましくは、サービスプロバイダの機械室(machine room)を借り受け又は他の手法で確保し、ここに第2のzボックス機器、例えばzボックス2を配設する。例えば、zボックス機器は、ハイネットバックボーン(Hi-Net backbone)上に配設してもよい。顧客の敷地内において、zボックス2から又はへの単一の接続(トンネル)を設定することができる。 With further reference to FIG. 22, in
この場合、顧客の敷地内のzボックス2は、購読者エージェント(例えば、エージェント128)として機能する。また、zボックス2は、経路選択デーモン(例えば、経路選択デーモン216)としても機能することができる。zボックス2は、購読者エージェントとして(例えば、ハイネット機械室(Hi-Net machine room)内において)、好ましくは、DVRがzボックス1を介して発行する情報を購読する。zボックス1とzボックス2間は、上述のような発行−購読ネットワークである。したがって、zボックス1は、DVRからのビデオ情報を発行し、zボックス2は、DVSSによる要求に応じて、このビデオ情報を購読する。このように、ここに開示する事象通知システムを用いることによって、警告サービスのデータ配信効率が向上する。zボックス機器(例えば、zボックス1及びボックス2)は、好ましくは、上述のように、この発行−購読ネットワークを介して発行及び購読を行うためのモジュールを備えている。 In this case, the z-
デジタルコンテンツ配信
上述したインテリジェントなコンテンツベースの経路選択は、購読予約を介したビデオ及び音楽の配信、ソフトウェアの更新等、様々な用途に用いることができる。例えば、ユーザは、例えば、ウィルス除去ソフト等のソフトウェアの更新を購読予約することにより、アップデートされたソフトウェアを自動的に受け取ることができる。他の実施例として、ユーザは、特定のビデオ及び音楽コンテンツを購読予約し、その購読されたコンテンツを自動的に受け取るようにしてもよい。ビデオ及び音楽コンテンツは、例えば、ストリーミングデジタルコンテンツとして受信することができる。更に、ネットワークコアにおける分散処理により、ソフトウェア、ビデオ及び音楽コンテンツを提供するためのサーバの処理負担を実質的に軽減することができる。したがって、他の様々な利点とともに、コンテンツを提供するための同じネットワークインフラストラクチャにおいて、ネットワーク帯域幅を有効に活用することができる。Digital Content Distribution The intelligent content-based route selection described above can be used for a variety of applications, such as video and music distribution via subscriptions, software updates, etc. For example, a user can automatically receive updated software by, for example, subscribing to software updates such as virus removal software. As another example, a user may subscribe to specific video and music content and automatically receive the subscribed content. Video and music content can be received, for example, as streaming digital content. Furthermore, the processing load on the server for providing software, video, and music content can be substantially reduced by the distributed processing in the network core. Thus, network bandwidth can be effectively utilized in the same network infrastructure for providing content, along with various other advantages.
この経路選択を実現するためのアーキテクチャの一具体例を図23に示す。なお、このアーキテクチャは、好ましくは、ネットワークサービスプロバイダの同じ設備内に配設されている2つのレベルのキャッシュサーバCl、C2を想定する。但し、キャッシュサーバClのみを用いても、本発明の利益を享受することができる。キャッシュサーバCl、C2とは、上述した(図14、図15及び対応する説明参照)分散ネットワークキャッシングを提供するサーバである。このアーキテクチャは、例えば、2つの段階によって実現される。キャッシュサーバC2が存在しないと仮定する第1の段階では、セントラルディストリビュータ450とキャッシュサーバClの間において、高速ファイル転送メカニズムを用いて、大きなメディアファイルを転送するために必要なサーバ負荷と時間を減少させる。この高速ファイル転送メカニズムは、好ましくは、セントラルディストリビュータ450とキャッシュサーバClの間にルーティングボックス(図23における470)設けることによって実現される。第2の段階では、キャッシュサーバC2において、ルーティングボックスを設け、ユーザ(例えば、ユーザマシン460)とキャッシュサーバC2の間で上述した購読予約メカニズムを実現する。 A specific example of the architecture for realizing this route selection is shown in FIG. Note that this architecture preferably assumes two levels of cache servers Cl, C2 that are located in the same facility of the network service provider. However, even if only the cache server Cl is used, the benefits of the present invention can be enjoyed. The cache servers Cl and C2 are servers that provide the distributed network caching described above (see FIGS. 14 and 15 and the corresponding description). This architecture is realized, for example, in two stages. In the first stage, assuming that no cache server C2 exists, a high-speed file transfer mechanism is used between the
ルーティングボックスを用いる利点:
ルーティングボックス470は、好ましくは、上述したようなコンテンツベースの経路選択を実現するためのモジュール(例えば、上述したインテリジェントルータ92)を備える。上述したコンテンツベースの経路選択を実現するルーティングボックス470を用いる主な利点は2つある。これらのルーティングボックス470を用いた高速ルーティング及びファイル転送ソリューションにより、FTPやRCP等の従来のファイル転送プロトコルに比べて5倍程度ファイル転送を加速できる。また、広域ネットワーク(WAN)を介した効率的なマルチキャストを実現できる。中央から受信機のグループにデータを送信する場合、このルーティングソリューションでは、ネットワークマルチキャストトポロジーを利用し、WANの上でマルチキャスティングトンネルを構築することによってコンテンツ配信速度が加速され、サーバ負荷とネットワーク帯域幅要求を軽減することができる。Advantages of using a routing box:
The
アーキテクチャ:
メディアコンテンツは、セントラルディストリビュータからキャッシュサーバC1に配信される。キャッシュサーバClは、全てのコンテンツファイルを保存する。各キャッシュサーバClは、全てのコンテンツを保存するために、例えば、数テトラバイトのディスク容量を必要とする。ユーザは(例えば、購読者装置122等のユーザマシン460を用いて)、コンテンツの一部のみを保存するキャッシュサーバC2に対してコンテンツを要求する。キャッシュサーバC2は、例えば、数百ギガバイトものディスク容量を必要とする。architecture:
Media content is distributed from the central distributor to the cache server C1. The cache server Cl stores all content files. Each cache server Cl requires, for example, a disk capacity of several tetrabytes in order to store all contents. The user requests the content from the cache server C2 that stores only a part of the content (for example, using the
ユーザとC2キャッシュの間のファイル転送:
ユーザ460が購読予約を発行することによってメディアファイルを要求すると、キャッシュサーバC2の1つによって処理される要求されたメディアファイルがC2サーバに既にキャッシングされている場合、ファイルは、直ちに提供される。これ以外の場合、購読予約は、キャッシュサーバC1に送信され、要求されたファイルは、キャッシュサーバC1からキャッシュサーバC2に転送される。File transfer between user and C2 cache:
When a
ClキャッシュからC2キャッシュまでのメディアデータの予備的キャッシング(Pre-caching):
メディアファイルは、ユーザ購読予約又は購読予約のパターンに基づいて、キャッシュサーバC1からキャッシュサーバC2に予めキャッシングしてもよい。例えば、キャッシュサーバC2に接続するユーザ460が主にポップスに関心がある場合、キャッシュサーバC1は、ユーザ460がキャッシュサーバC2に曲を要求する以前に、ポップスの新たな曲をキャッシュサーバC2に自動的に供給してもよい。Pre-caching of media data from Cl cache to C2 cache:
The media file may be cached in advance from the cache server C1 to the cache server C2 based on a user subscription reservation or a subscription reservation pattern. For example, if the
導入段階:
第1の段階は、例えば、ディストリビュータ450と、全てのキャッシュサーバC1との間のコンテンツルーティングを行う高速ファイル転送メカニズムをインストールする処理を含む。ここでは、キャッシュサーバC2は、不要である。この場合全てのユーザ460は、キャッシュClに直接接続する。キャッシュサーバC1は、ディストリビュータ450から定期的に新たなメディアファイルを受け取る。図24は、第1の段階のアーキテクチャを示している。Introduction phase:
The first stage includes, for example, a process of installing a high-speed file transfer mechanism that performs content routing between the
なお、図24において、ディストリビュータ450は、上述したインテリジェントなコンテンツベースの経路選択技術に基づき、ルーティングボックス470に新たなメディアファイルを一回だけ送信する。したがって、ディストリビュータ450の負担が軽減される。ルーティングボックス470は、高速ファイル転送メカニズムを用いて、各キャッシュサーバC1にファイルを出力する。この場合、受信機460の側では、更なるルーティングボックスは不要である。これに代えてキャッシュサーバC1のために他の種類のサーバを用いてもよい。 In FIG. 24, the
図25は、第2段階の実施例のアーキテクチャを示している。この実施例に示す第2の段階では、好ましくは、カーネルを実装するルーティングボックス470を用いて、データをルーティング及び送信している。カーネルレイヤソリューションは、バッファコピーを低減し、コンテキスト切換時間を短縮するため、ファイルを送る際のオーバヘッドを更に減少させる。更に、第2の段階のソリューションでは、図25に示すように、キャッシュサーバC2をアーキテクチャに追加する。また、図25に示すように、好ましくは、C2側において、サービスプロバイダネットワーク内の同じ位置に、ルーティングボックス470が追加されている。これにより、帯域幅要件が大幅に軽減され、帯域幅を数百分の一にできる可能性もある。 FIG. 25 shows the architecture of the second stage embodiment. In the second stage shown in this example, data is routed and transmitted preferably using a
図25に示すように、キャッシュサーバC1とキャッシュサーバC2の間で転送されるファイルは、キャッシュサーバC1に関連付けられるルーティングボックス470と、キャッシュサーバC2に関連付けられるルーティングボックス470とを介して転送される。このように、これらのルーティングボックス470を用いて、キャッシュサーバC1、C2の間において、高速ルーティング及びファイル転送ソリューションが実現される。 As shown in FIG. 25, a file transferred between the cache server C1 and the cache server C2 is transferred via a
サービス品質の管理
上述したインテリジェントなコンテンツベースの経路選択は、例えば、特定の配信を保証するコンテンツのルーティングのために用いることができる。例えば、サービス品質保証制度(service level agreement:以下、SLAという。)に基づいて、ISP又はコンテンツプロバイダは、サービス品質(quality of service:以下、QoSという。)を保証するために帯域幅を確保することができる。これは、上述したコンテンツベースのインテリジェントルーティングによって効率的に実現される。Quality of Service Management The intelligent content-based routing described above can be used, for example, for routing content that guarantees specific delivery. For example, based on a service level agreement (hereinafter referred to as SLA), an ISP or a content provider reserves bandwidth to guarantee quality of service (hereinafter referred to as QoS). be able to. This is efficiently achieved by the content-based intelligent routing described above.
アーキテクチャ:
コンテンツ配信におけるQoSを保証するために、少なくとも2つの可能な構成がある。第1の構成では、複数のリンクを1つ以上の電話会社(telephone company:以下、TELCOという。)のネットワークに接続する。第2の構成では、TELCOネットワークへの1つのネットワークリンクだけを用いる。図26に示す実施例では、2つのレイヤのルーティングボックス(以下、Rボックスともいう。)を設けている。Rボックス1は、データパケットのコンテンツに基づいて、Rボックス2とRボックス3にパケットをルーティングする。Rボックス2とRボックス3は、異なるネットワークリンク(例えば、L1−L4)にデータパケットをルーティングする。各リンクは、TELCOネットワークに接続されている。プレミアムユーザ(premium customers)のための帯域幅を確保するために、最も高いSLAに対応する顧客用に生成されたデータパケットは、最も高い帯域幅(最も高い優先順位)でリンクにルーティングされ、これにより、これらの顧客のための特定のQoSが保証される。architecture:
There are at least two possible configurations to guarantee QoS in content distribution. In the first configuration, a plurality of links are connected to a network of one or more telephone companies (hereinafter referred to as TELCO). In the second configuration, only one network link to the TELCO network is used. In the embodiment shown in FIG. 26, two layers of routing boxes (hereinafter also referred to as R boxes) are provided. The
図27に示す実施例では、Rボックス1は、Rボックス2及びRボックス3にデータパケットをルーティングする。Rボックス2とRボックス3は、更に異なる通信リンクにデータパケットをルーティングし、これらの通信リンクは、全てRボックス4に接続されている。Rボックス4は、4つのリンクからそれぞれのリンクのQoSレベルに基づいて、データパケットを受信する。そして、Rボックス4は、ネットワークリンク(例えば、L5)を介して、インターネットISPにデータパケットを送信する。このシステムは、各リンクからデータを受け取るための様々なアルゴリズムを実装することによって、各リンクについて、帯域幅を動的に割り当てることができ、マルチリンク構成より優れたQoS管理を行うことができる。 In the embodiment shown in FIG. 27,
技術:
QoS保証には、インテリジェントで分散型の上述したコンテンツベースの経路選択技術を利用することができる。ルーティングされる各パケットは、コンテンツベースの経路選択のためにタグが付される。このソリューションによって、他の様々な利点とともに、ASP/コンテンツプロバイダのためのQoSの展開が経済的に可能になる。Technology:
For QoS guarantees, the intelligent and distributed content-based routing technology described above can be used. Each routed packet is tagged for content-based routing. This solution economically enables QoS deployment for ASP / content providers, along with various other advantages.
利点:
このソリューションにより、インターネット接続サービス業者(例えば、IDC)又はコンテンツプロバイダ(例えば、メディアオンデマンドの(MOD)サービスプロバイダ)は、顧客毎に、それらのSLASに基づいて個別に帯域幅を確保できる。advantage:
This solution allows Internet service providers (eg, IDCs) or content providers (eg, media on demand (MOD) service providers) to reserve bandwidth for each customer based on their SLAS.
リアルタイムの警告:
警告に異なる優先順位を付すことができる。例えば、セキュリティ及び火災警報に最も高い優先順位を与え、ニュースの告知には、低い優先順位を与えることができる。QoSルーティングを行わなければ、優先度が低い警告及び通信によってASPのネットワーク帯域幅を占領され、最優先の警告がリアルタイムで購読者に届かないこともある。このソリューションは、このような事態の発生を防ぐ。また、警告は、それぞれのSLASに基づいて、各顧客に送信することもできる。プレミアムユーザがより多くの料金を支払うことにより、これらのユーザに対してより広い帯域幅を割り当てるようにしてもよい。Real-time alert:
Warnings can have different priorities. For example, security and fire alarms can be given the highest priority and news announcements can be given a lower priority. Without QoS routing, low priority alerts and communications can occupy the ASP network bandwidth, and top priority alerts may not reach subscribers in real time. This solution prevents this from happening. Alerts can also be sent to each customer based on their respective SLAS. Premium users may pay more to allocate more bandwidth to these users.
実時間データ配信:
例えば、ビデオオンデマンド(VOD)、MOD、及びIPを介した音声送信(VoIP)等の幾つかの用途では、帯域幅の利用可能性は、サービスの品質に影響する。このソリューションでは、上述のように、パケットのコンテンツを検査することによって、メッセージの種類に基づいてデータパケットをルーティングできる。帯域幅に大きく影響される用途では、それらのデータパケットをより高い優先順位のリンクにルーティングするとよい。メッセージの種類に加えて、購読者のSLAレベルに基づいて、様々な購読者にデータパケットをルーティングしてもよい。このソリューションを用いることにより、SLAがより高い顧客に対しては、パケットをより高いレベルのリンクにルーティングできる。Real-time data distribution:
For some applications, such as, for example, video on demand (VOD), MOD, and voice transmission over IP (VoIP), bandwidth availability affects quality of service. In this solution, as described above, data packets can be routed based on the type of message by examining the contents of the packet. In applications that are greatly affected by bandwidth, these data packets may be routed to higher priority links. In addition to the message type, data packets may be routed to various subscribers based on the subscriber's SLA level. Using this solution, packets can be routed to higher level links for customers with higher SLA.
また、このソリューションは、ソフトウェア又はウィルス対策のための更新にも利用できる。例えば、音声用ドライバファイルは、優先順位が低いリンクにルーティングし、アンチウィルスファイルは、優先順位が高いリンクにルーティングすることにより、ウィルス対策のための更新をリアルタイムで行うことができる。 This solution can also be used for software or anti-virus updates. For example, an audio driver file is routed to a link having a low priority, and an anti-virus file is routed to a link having a high priority, whereby updating for anti-virus can be performed in real time.
コンテンツベースのフィルタリング:
図28に示すように、コロケーションサービスを用いることにより及びRボックスをTELCOネットワーク内部に配設することにより、システムは、ISPの外部でフィルタリング及び動的なキャッシングを実行することができる。TELCOネットワーク内部のRボックスを用いて、上述したコンテンツのフィルタリング技術に基づいて、データをフィルタリングすることにより、IDC/ISPネットワークにおけるトラヒックを減少させることができる。これにより、例えば、サービス妨害攻撃や不正なデータアクセス等のハッカーアタックを防止することができる。また、R−ボックスは、要求のコンテンツを検査する能力により、静的及び動的なウェブデータのためのキャッシングボックスとしても機能する。このソリューションは、例えば、機密保護を可能にし、TELCOとISPの間のネットワーク帯域幅を節約し、ISPサーバの負荷を軽減できる等の利点がある。Content-based filtering:
As shown in FIG. 28, the system can perform filtering and dynamic caching outside the ISP by using a collocation service and by placing the R-box inside the TELCO network. By using the R box inside the TELCO network and filtering the data based on the content filtering technique described above, traffic in the IDC / ISP network can be reduced. As a result, for example, it is possible to prevent a hacker attack such as a denial of service attack or unauthorized data access. The R-box also functions as a caching box for static and dynamic web data due to its ability to inspect the requested content. This solution has advantages such as enabling security, saving network bandwidth between TELCO and ISP, and reducing the load on the ISP server.
選択的なマルチキャスティングによるキャッシング
メッセージの持続性とは、メッセージを保存し、後にこの保存されたメッセージを読み出すことができる性質を指す。例えば電子メールを始めとする多くの特定の用途では、通常、ネットワークを介して通信されるメッセージについて、長いメッセージ持続性が必要とされる。ネットワーク障害が発生しない理想的な条件では、常時接続された購読者は、これらの特定の用途において必要とされる以上の如何なる持続も求めない。しかしながら、現実には、メッセージは、ネットワークを介して伝送されている間に様々な理由のために「失われる」ことがある。この理由としては、例えば、(1)ネットワーク又はユーザ側における故障又はバッファオーバフローや(2)ユーザが自らネットワーク接続を切断した後、所定の期間経過後に再び接続する場合等がある。Caching by selective multicasting Message persistence refers to the property that a message can be stored and the stored message can be retrieved later. Many specific applications, such as e-mail, typically require long message persistence for messages communicated over a network. In ideal conditions where no network failure occurs, always-connected subscribers do not require any persistence beyond what is required in these particular applications. In reality, however, messages may be “lost” for various reasons while being transmitted over the network. The reason for this is, for example, (1) a failure or buffer overflow on the network or user side, or (2) a case where the user disconnects the network and then reconnects after a predetermined period.
この実施例における事象通知プラットフォームの持続モデルは、短期持続と長期持続の2つのレベルに分割される。短期持続は、ネットワーク輻輳又は短期的なリンク障害のために失われたパケットを復元する。長期持続は、例えば、ユーザ接続の障害、ユーザ装置の障害、アプリケーションの障害及び/又はより長い期間ネットワーク内の障害等を含む他の障害に起因して失われたパケットを復元する。以下では、これらの2つのスキームの具体例について説明する。 The event notification platform persistence model in this embodiment is divided into two levels: short-term persistence and long-term persistence. Short duration restores packets lost due to network congestion or short term link failures. Long-lasting recovers lost packets due to other failures, including, for example, user connection failures, user device failures, application failures and / or failures in the network for longer periods of time. Hereinafter, specific examples of these two schemes will be described.
短期持続:データ再送及びフロー制御
データネットワークにおいては、データ損失の原因は、単に、リンク障害とバッファオーバフローの2つに分類できる。事象通知システムについて信頼できるチャンネルを提供するためには、これらの問題を解決する必要がある。リンク障害については、順方向誤り訂正(FEC)スキームを実行して、リンク障害によって引き起こされる幾つかのエラーを修正することができる。ここで、エラーが深刻であり、如何なるFECスキームでもエラーを修正できないような場合、パケットを復元するための更なるスキームを提供する必要がある。また、バッファオーバフローの発生を防止する必要もある。データネットワークにおいて、このような問題を避けるためには、通常、フロー制御スキームが用いられる。Short-term persistence: data retransmission and flow control In data networks, the cause of data loss can simply be divided into two categories: link failure and buffer overflow. In order to provide a reliable channel for event notification systems, these problems need to be solved. For link failures, a forward error correction (FEC) scheme can be performed to correct some errors caused by link failures. Here, if the error is severe and cannot be corrected by any FEC scheme, there is a need to provide a further scheme to recover the packet. It is also necessary to prevent the occurrence of buffer overflow. In order to avoid such problems in data networks, a flow control scheme is usually used.
短期持続スキームにおいては、好ましくは、伝送制御プロトコル(Transmission Control Protocol:以下、TCPという。)トンネルを用いて、ホップバイホップ方式でイベントルータ(例えば、インテリジェントルータ12)を接続する。信頼できる転送プロトコル(例えば、RMTP)を用いる代わりに、信頼できるレイヤ−2トンネルを用いる理由は複数ある。短期持続スキームでは、好ましくは、事象通知システムにおいて、メッセージがフィルタ規則を満たさない場合、メッセージは、ルータにおいて、無視される。この結果、受信ルータは、多くの場合、ソースシーケンスナンバー(Source Sequence Number:SSN)等のスキームを用いても、パケットの損失を検出できない。また、全ての受信ルータが、受信した各パケットについて肯定応答を行うことも望ましくない。このような処理を行うと、肯定応答のオーバロード(すなわち、ACKエクスプロージョン(ACK-explosion))が生じる。更にバッファオーバフローを避けるために短期持続モデルは、フロー制御スキームを実現し、これにより、ルータのバッファ容量が一杯になる前に、ルータは、自らにメッセージを送る隣接するルータに、メッセージの供給の速度を遅くするよう要求することができる。これらのスキームは、TCPによってカバーされている。 In the short-term persistence scheme, the event router (for example, the intelligent router 12) is preferably connected in a hop-by-hop manner using a transmission control protocol (hereinafter referred to as TCP) tunnel. There are several reasons for using a reliable layer-2 tunnel instead of using a reliable transport protocol (eg, RMTP). In the short duration scheme, preferably in the event notification system, if the message does not satisfy the filter rules, the message is ignored at the router. As a result, in many cases, the receiving router cannot detect a packet loss even if a scheme such as a source sequence number (SSN) is used. It is also undesirable for all receiving routers to acknowledge each received packet. When such processing is performed, an overload of an acknowledgment (that is, ACK explosion) occurs. Furthermore, to avoid buffer overflow, the short-lived model implements a flow control scheme that allows a router to provide message delivery to neighboring routers that send messages to itself before the router's buffer capacity is full. You can request to slow down. These schemes are covered by TCP.
TCP伝送ポリシ:
短期持続スキームにおいて用いられるTCPにおいては、好ましくは、データの送信側で、局所的に送信ウィンドウを用いて、再送処理されたデータを監視する。送信ウィンドウを用いる目的は、2つある。第1に、送信ウィンドウにより、送信側は、データが受信機によって正しく受信されたことを明示的に確認でき、第2に、送信ウィンドウにより、チャンネル容量をより有効に活用できる。TCPにおいては、送信側が送信した各バイトは、暗示的又は明示的に肯定応答を受ける必要がある。送信ウィンドウは、送信側が、送信され、肯定応答されたデータを監視するのに役立つ。送信側は、動作を止めて、先のパケットに関する肯定応答を待機する必要なく、送信ウィンドウ内でデータを送信できるので、また、送信ウィンドウにより、チャンネルの利用効率を向上させることができる。一旦、前のデータが肯定応答されると、ウィンドウは、自動的に進められる。TCP transmission policy:
In TCP used in the short-term persistence scheme, it is preferable to monitor the retransmitted data locally using a transmission window on the data transmission side. There are two purposes for using the send window. First, the transmission window allows the transmission side to explicitly confirm that the data has been correctly received by the receiver, and second, the transmission window can more effectively utilize the channel capacity. In TCP, each byte sent by the sender needs to be implicitly or explicitly acknowledged. The transmission window helps the sender to monitor the transmitted and acknowledged data. Since the transmission side can transmit data within the transmission window without having to stop the operation and wait for an acknowledgment regarding the previous packet, the transmission window can improve the utilization efficiency of the channel. Once the previous data is acknowledged, the window is automatically advanced.
また、TCPでは、受信ウィンドウも維持される。受信ウィンドウは、好ましくは、データ受信端末において、使用可能なバッファ容量を示すために用いられる。使用可能なバッファ容量が送信側に送られ、これにより送信側は、受信側におけるバッファオーバフローをどのように回避できるかを知ることができる。 In TCP, the reception window is also maintained. The receive window is preferably used to indicate the available buffer capacity at the data receiving terminal. The available buffer capacity is sent to the sender, which allows the sender to know how to avoid buffer overflow at the receiver.
TCP輻輳制御:
TCPは、エンドツーエンドトランスポートプロトコルとして設計されているので、短期持続スキームで利用されたTCPは、発行−購読ネットワーク内におけるバッファオーバフローの問題も解決する。この問題を解決するために、短期間の持続モデルのために用いられるTCPは、好ましくは、第3のウィンドウである輻輳ウィンドウ(congestion window)を用いる。送信側は、輻輳ウィンドウを用いて、パスに沿ったルータにおける最大のバッファ容量を推定することができる。簡潔に言えば、送信側がパケットの損失を検出すると輻輳ウィンドウのサイズが縮小され、逆にパケットの損失が検出されないと、輻輳ウィンドウのサイズが拡大される。TCP congestion control:
Since TCP is designed as an end-to-end transport protocol, TCP utilized in the short-lasting scheme also solves the problem of buffer overflow in publish-subscribe networks. To solve this problem, the TCP used for the short-term persistence model preferably uses a third window, the congestion window. The sender can use the congestion window to estimate the maximum buffer capacity at the router along the path. In short, the size of the congestion window is reduced when the transmission side detects a packet loss, and conversely, the size of the congestion window is increased when no packet loss is detected.
長期持続:持続的なチャンネルのキャッシング
チャンネルは、(例えば、上述のように)持続的であっても又はリアルタイムであってもよい。リアルタイムチャンネルは、実時間においてのみ有用であり、アプリケーション固有の如何なる持続要求も有さないデータを送信する。持続チャンネルは、持続タイムフレームTの間、ネットワークを介して送受されるデータを保存する。換言すれば持続チャンネルの持続性は、タイムフレームTの間、保証される。このデータの持続性は、例えば、チャンネルの持続期間の間、それぞれのエッジノードでデータをキャッシングすること、障害が生じた条件下で、ユーザにトランスペアレントなキャッシュからのデータを検索すること、ユーザがキャッシュから明示的にデータを読み出すことができるようにすること、ルータ障害に対する保護及びルータの間で信頼できるトンネルを確立することにより、ネットワークを介したデータのフローを持続的にすること、及び複製によって、障害に対してチャンネル成分を保護すること等によって実現される。Long-lasting: persistent channel caching Channels may be persistent (eg, as described above) or real-time. Real-time channels are useful only in real time and transmit data without any application specific persistence requirements. The persistent channel stores data transmitted and received over the network for a sustained time frame T. In other words, the persistence of the persistent channel is guaranteed during the time frame T. This data persistence can be achieved, for example, by caching data at each edge node for the duration of the channel, retrieving data from a cache that is transparent to the user under fault conditions, Allows data to be explicitly read from the cache, protects against router failures and establishes a reliable tunnel between routers to make the flow of data through the network persistent and replicate This is realized by protecting the channel component against failure.
したがって、後述するように、長期持続スキームにより、購読者の端末に障害が生じ、持続的なチャンネルのためのタイムフレームT内に再び復帰すると、持続的なチャンネルに登録された購読者は、直前のタイムフレーム「X」(X<T)の間、ネットワークにおいてキャッシングされた古いデータを検索することができる。 Therefore, as described below, when a subscriber's terminal fails due to a long-lasting scheme and returns again within the time frame T for the persistent channel, the subscriber registered in the persistent channel During the time frame “X” (X <T), old data cached in the network can be retrieved.
長期持続スキームにおいては、購読者アプリケーション(例えば、アプリケーション126)は、関連する購読者エージェント(例えば、エージェント128)から好ましくは、明示的に、データ(例えば、メッセージ)をプルすることができる。上述のように、エージェントは、プロキシを利用でき又はプロキシによって実現することができる。エージェント又はプロキシがネットワーク内の障害から復帰した後、このエージェントは、キャッシュから、自らがエッジルータから切断されていた期間に対応するデータを好ましくはトランスペアレントに検索する。また購読者は、長期持続スキームにおいて、好ましくは、直前のTタイムフレームに含まれるデータのみにアクセスすることができる。このため、好ましくは、エージェント(又はプロキシ)が接続されているエッジルータに関して、時間が判定される。検索されたキャッシングされたデータは、好ましくは帯域外で配信され、実時間配信は保証されない。長期持続スキームの実施例は、クラッシュから復帰した、又はエッジルータ(例えば、エッジルータ16)から切断された既存の購読者を対象とするものである。新たな購読者は、キャッシングされた情報を得ることはできない。 In a long-lasting scheme, a subscriber application (eg, application 126) can preferably explicitly pull data (eg, a message) from an associated subscriber agent (eg, agent 128). As described above, the agent can use or be implemented by a proxy. After an agent or proxy recovers from a failure in the network, the agent retrieves data, preferably transparently, from the cache that corresponds to the period during which it was disconnected from the edge router. Also, the subscriber can access only the data contained in the immediately preceding T time frame in the long-lasting scheme. For this reason, the time is preferably determined for the edge router to which the agent (or proxy) is connected. The retrieved cached data is preferably delivered out-of-band and real-time delivery is not guaranteed. Examples of long-lasting schemes are for existing subscribers who have recovered from a crash or disconnected from an edge router (eg, edge router 16). New subscribers will not get the cached information.
持続性の定義:
購読者に対する(タイムフレームTによる)期限付きの持続性は、発行−購読ネットワークから直前のタイムフレームTに含まれるデータを読み出すことができる能力として定義される。購読者がネットワークから切断されると、購読者の不在の間に受け取られた持続的なチャンネル上の如何なるデータも、(データの受信から)タイムフレームTの間、ネットワーク内に保存される。購読者がタイムフレームT内に復帰した場合、購読者は、如何なるデータも失わない。但し、購読者がTから2Tの期間内に復帰した場合、購読者は、データを失う可能性がある。また、購読者が2Tを過ぎて復帰した場合、購読者に対しては、好ましくは、それまでの如何なるデータも保証されない。Definition of persistence:
Timed persistence (by time frame T) for a subscriber is defined as the ability to retrieve the data contained in the previous time frame T from the publish-subscribe network. When a subscriber is disconnected from the network, any data on the persistent channel received during the absence of the subscriber is stored in the network during the time frame T (from receipt of the data). If the subscriber returns within the time frame T, the subscriber will not lose any data. However, if the subscriber returns within a period of 2T from T, the subscriber may lose data. Also, if the subscriber returns after 2T, the subscriber is preferably not guaranteed any previous data.
上述の定義により、購読者をリーフとする発行−購読ネットワークツリーは、購読者が切断された後、タイムフレームTの間保持され、その後に購読者を切り離す必要がある。これにより、購読者が切断された後、タイムフレームTの間に受信された新たなデータは、タイムフレームTが経過するまで保持される。 According to the above definition, the publish-subscribe network tree with the subscriber as a leaf is maintained for a time frame T after the subscriber is disconnected, after which the subscriber needs to be disconnected. Thus, after the subscriber is disconnected, new data received during the time frame T is held until the time frame T elapses.
アーキテクチャ:
図29は、キャッシングによって持続性を実現する発行−購読ネットワークの一部を示すブロック図である。図29に示すように、ネットワークは、コアルーティングノード548とエッジルーティングノード545とを備える。各ルーティングノードは、図4を用いて上述したように、好ましくは、インテリジェントルータ92(エッジルーティングノードと共に示す)と、従来のバックボーンルータ(図示せず)とを備える。持続的なチャンネルのためのキャッシングを行う必要がある各インテリジェントルータ92は、図29に示すように、好ましくは同じ場所にキャッシュマネージャ218を備える。キャッシュマネージャ218については、図8を用いて上述した通りである。インテリジェントルータ92は、好ましくは、失われたデータを読み出し又はルータ故障から復元するための短期的な持続性を実現する。キャッシュマネージャ218は、チャンネルにおける長期的な持続を実現するために、データをキャッシングする。キャッシュマネージャ218は、好ましくは、キャッシュ540内にこのデータをキャッシングする。キャッシュ540は、好ましくは、メモリとディスク(図示せず)を含んでいる。architecture:
FIG. 29 is a block diagram illustrating a portion of a publish-subscribe network that provides persistence through caching. As shown in FIG. 29, the network includes a
長期持続のためにデータをキャッシングするために、インテリジェントルータ92に対して、キャッシュマネージャ218を設けることには、例えば次のような利点がある。キャッシングされたデータにインデックスを付すための負荷が大きい演算は、独立したプロセッサによって実行でき、したがって、ルーティング及びフィルタリングプロセッサの性能には影響がなく、及びキャッシングされたデータを定期的にディスクに移動するためのディスクI/O動作も他のプロセッサによって実行でき、これにより、ルーティングとフィルタリングからサイクルが奪われることを防ぎ、エッジルータが定期的な入出力動作を行う必要を無くすことができる。 Providing the
また、図29に示すエージェント128は、図5を用いて上述したように、好ましくは、購読者装置122(図25Aでは示していない)内に設けられる。エージェント128は、キャッシュマネージャ218と通信し、キャッシュ540からデータを検索し、検索したデータを受け取り、検索したデータを組織化する。上述のように、エージェント128は、プロキシを利用でき又はプロキシによって実現することができる。 Also, the
障害が発生しない条件下では、エッジルータノード545のみが関連するキャッシュマネージャ218を有していればよい。しかしながら、図29には示していないが、長期持続スキームでは、障害を予期しているので、好ましくは、エッジルーティングノード545より上流側にある第1のレベルのコアルーティングノード548のそれぞれがデータを保存するためのキャッシュマネージャ218を備えている。上流とは、エージェント128から遠ざかる(すなわち、購読者装置122から遠ざかる)方向である。第1のレベルの上流コアルーティングノードとは、エッジルーティングノード545より上流側に隣接するルーティングノードを意味する。発行−購読ネットワークは、多くの場合、複数の第1のレベルのコアルーティングノードを含んでいるが、図29では、1つの第1のレベルのコアルーティングノード、すなわちコアルーティングノード548のみを示している。上述のように、キャッシュマネージャ218は、自らが存在するネットワークノードにおいて、データのローカルなキャッシングを実現する。したがって、例えば、コアルーティングノード548を含む様々なコアルーティングノードに存在するキャッシュマネージャ218の動作は、ネットワークコア内のデータの分散型のキャッシングを実現する。この分配型のキャッシングは、エッジルーティングノードのキャッシングにバックアップを提供する。 Under conditions where no failure occurs, only the
図30は、上流ルータ(例えば、コアルーティングノード548)におけるバックアップキャッシングを説明する図である。各長期持続スキームにおいては、各キャッシュは、次の上流ルータのキャッシュによってバックアップされる。上流のキャッシュは、全ての受信データを保存し、下流の次のレベルの全てのエッジルータのキャッシュのバックアップとして機能する。上流のキャッシュのデータは、好ましくは、エッジルータキャッシングと同じメカニズムを用いて保存される。 FIG. 30 is a diagram for explaining backup caching in an upstream router (for example, the core routing node 548). In each long-lasting scheme, each cache is backed up by the next upstream router cache. The upstream cache stores all received data and serves as a backup for the cache of all downstream edge routers. Upstream cache data is preferably stored using the same mechanism as edge router caching.
図31は、持続的なチャンネルのキャッシングのためのアーキテクチャを示しており、このアーキテクチャでは、好ましくは、以下のような4つの異なるモジュールに亘る機能を提供する。キャッシュマネージャ218は、好ましくは、インテリジェントルータ92を通過するデータを保存するサーバ処理を行う。ルータキャッシュAPI552は、好ましくは、インテリジェントルータ92からキャッシュマネージャ218への制御、例えば、キャッシュを作成及び消去する処理に関連する全てのアクセスのためのライブラリである。エージェント(又は、プロキシ)キャッシュAPI554は、好ましくは、エージェント128(又はエージェント128プロキシ)からキャッシュマネージャ218への制御、例えば、データの検索に関連する全てのアクセスのためのライブラリである。エージェント128(又はプロキシ)は、好ましくは、キャッシュ546から検索されたデータを収集し、このデータを組織化する。 FIG. 31 illustrates an architecture for persistent channel caching, which preferably provides functionality across four different modules as follows. The
図31を用いて、これらの4つのモジュールのインタラクションを説明する。エージェント128とインテリジェントルータ92は、好ましくは、キャッシュAPIライブラリ552、554を介してキャッシュにアクセスする。キャッシュAPIライブラリ552、554は、キャッシュ546を初期化し、主語のためにキャッシュを作成及び消去し、キャッシュアドレスを検索し、及び最も重要な機能としてキャッシュ546からデータを検索するためのAPIを提供する。経路選択デーモン216は、好ましくは、キャッシュAPI552を介さず、データパスを介して、キャッシュマネージャ218にデータを送信する。キャッシュAPI552、554は、データ検索を含む全ての制御メッセージについて、好ましくは制御パスを用いる。 The interaction of these four modules will be described with reference to FIG.
キャッシュマネージャ−キャッシュ管理:
図32に示すように、キャッシュマネージャ218が新たなチャンネルに遭遇するとキャッシュマネージャ218は、好ましくは情報サーバ(例えば、上述したサーバ152、154及び/又は156)を呼び出し、そのチャンネルのためにチャンネルマネージャ150を獲得する。キャッシュマネージャ218がチャンネルマネージャ150のアドレスを得ると、キャッシュマネージャ218は、好ましくは、チャンネルマネージャ150からチャンネル特性を検索する。チャンネル特性には、例えば、チャンネル主語ツリー及び属性、チャンネルの持続特性、チャンネルの持続タイムフレーム(T)、及びキャッシングの精度等が含まれる。キャッシュマネージャ218が、所定の主語について、チャンネルを介して伝送されるデータのキャッシングを開始する前に、キャッシュマネージャ218において、その主語のキャッシュを作成する必要がある。キャッシュマネージャ218は、キャッシュ作成メッセージを待機し、そのメッセージに応じて、主語キャッシュを作成する。この主語キャッシュは、要求に応じて、消去され、中断され又は再開される。図32は、購読予約に対するキャッシュの作成を示している。Cache Manager-Cache management:
As shown in FIG. 32, when the
キャッシュマネージャ−キャッシュデータ入力:
キャッシュマネージャ218は、好ましくは、以下に示すような様々な手法によって、インテリジェントルータ92に入るデータにアクセスすることができる。すなわち、インテリジェントルータ92の入力リンク上の全てデータをキャッシュマネージャ218にも送るIPと同様のソリューションを用いてもよい。また、スニフィングメカニズムを用いてもよい(この場合、キャッシュマネージャ218は、インテリジェントルータ92のネットワークを介して伝送される全てのパケットを待機する)。また、フィルタリングの後に、インテリジェントルータ92が、1つ以上のリンクに伝搬させる必要がある各メッセージをキャッシュ546に供給してもよい。また、キャッシュマネージャ218は、全てのインテリジェントルータ92に供給されるデータに関する購読者として機能してもよい。Cache Manager-Cache data input:
The
キャッシュマネージャ−キャッシュデータストレージ:
図33に示すように、好ましくは、キャッシュマネージャ218は、例えば、チャンネルID、主語、発行者ID、タイムスタンプ、タイムグレイン(G)、プライマリキャッシング属性、リンク(キャッシングが障害のために行われる特別な場合)及び他の様々な手法によって、キャッシュ546内のデータにインデックスを付す。データにインデックスを付し、ファイルシステム又はメモリ内の階層的ディレクトリ構造に保存してもよい。データは、好ましくは、メモリ内にキャッシングされ、定期的にディスクに移動される。メモリ内のキャッシングは、タイムグレイ「G」の期間のみ行われる。タイムグレインGが経過すると、ツリー内の特定のブランチに関連する全てのデータは、好ましくは、そのブランチの下のファイルに移動され、そのブランチの最も古いファイルに上書きされる(なお、各メッセージをディスクに個別に書き込むことは高価であり、G期間を一回の動作でディスクに書き込んだ方が効率的であるためタイムグレインGは、好ましくは、スライディングウィンドウとしてではなく、絶対ウィンドウとして実現する)。図33は、インデックスツリーの具体例を示している。持続性のためにデータをキャッシングする場合、好ましくは、図33に示す第1のインデックスツリーを用いる。Cache Manager-Cache data storage:
As shown in FIG. 33, preferably, the
図33に示すように、主語は、好ましくは、階層構造内に保存され、ここで、「a」は、例えば「a.b」、「a.c」、「a.d」等の主語の親である。キャッシュマネージャ218は、キャッシュ546のために、全ての主語を対応するファイル位置にマッピングするハッシュテーブルを保管する。幾つかの具体例では、キャッシュ546は、上流ルータ(例えば、コアルーティングノード548)がそのリンク上の下流のルータ(例えば、エッジルーティングノード545)における障害を検出した場合、障害が発生した条件下で、データを保存する必要がある。復旧のための1つの手法は、下流のルータを再起動することである(この処理は、数分もかかることがある)。下流のルータが再起動されている間、上流ルータは、そのリンクの下流方向に供給するデータをキャッシングする必要がある。このキャッシュ(例えば、図33ではFMキャッシュと示す。)は、好ましくは、出力側のリンク上でインデックスが付される。 As shown in FIG. 33, the subject is preferably stored in a hierarchical structure, where “a” is the subject of the subject such as “ab”, “ac”, “ad”, etc. Parent.
キャッシュマネージャ:ガーベージコレクション:
チャンネルが持続的でない場合、キャッシュ546は、データを保存せず、直ちにデータを消去する。チャンネルが持続的である場合、キャッシュ546は、データを保存する。特定のチャンネルの持続タイムフレーム「T」は、それぞれサイズがGであるN個のタイムグレインに分割される。メモリへのキャッシングは、Gに対応する期間のみ行われる。キャッシュマネージャが、期間Gが経過したと判定すると、データは、ディスクに移動される。キャッシュマネージャ218は、持続タイムフレーム期間Tの間、データをディスクに保存する。Cache Manager: Garbage Collection:
If the channel is not persistent, the
期間Gに対応するデータは、時間が、そのチャンネル+期間の上限の持続タイムフレーム期間(T)を過ぎた場合、ディスクから削除される。具体的には、例えば、チャンネルの持続タイムフレーム期間Tが2時間であるとする。ここでは、例示的に、キャッシュマネージャ218は、15分のタイムグレインGを用いるとする。この場合、データをディスクから削除するための規則は、次の通りである。すなわち、期間G(15分)の間に最後にキャッシングされたデータが期間T(2時間)の間保存された場合、その15分の期間の間にキャッシングされた全てのデータが破棄される。したがって、その15分の期間の最初にキャッシングされたデータは、破棄されるまでに、2時間より長く保存されることとなる。この実施例では、各15分の期間にキャッシングされるデータは、データのブロックである。持続タイムフレームTがN個の期間に分割される場合、如何なる時刻においても、各主語のためのキャッシュ546において、N+1個(ディスクにN個とメモリに1個)のデータのブロックが保存される。 Data corresponding to period G is deleted from the disk when the time has passed the channel + period upper duration time frame period (T). Specifically, for example, it is assumed that the continuous time frame period T of the channel is 2 hours. Here, as an example, it is assumed that the
キャッシュマネージャ−キャッシュデータ検索:
図34に示すように、エージェント128(又はプロキシ)は、好ましくは、キャッシュ読出処理(GetCache operation)を呼び出し、現在の時間から期間T分遡ったデータを入手する。図34においては、キャッシュ読出処理を呼び出すためにエージェント128が接続するキャッシュマネージャ218には、ポータルキャッシュのラベルを付している。ルータ又はエージェント128の失敗/切断のため、ポータルキャッシュは、エージェント128によって要求されたデータの全てを有していない場合がある。この場合、ポータルキャッシュは、他の全てのキャッシュ(例えば、上流のキャッシュ)からデータを検索し、データを照合し、このデータをエージェント128に返す。図34は、異なるタイムスタンプ(TS1、TS2、TS3)に対する、複数のキャッシュ(A、B、C)からの検索を示している。Cache Manager-Cache data search:
As shown in FIG. 34, the agent 128 (or proxy) preferably calls a cache read process (GetCache operation), and obtains data that is back for a period T from the current time. In FIG. 34, the
キャッシュマネージャ218は、好ましくは、タイムグレインGのデータのブロックのみを検索する。したがって、エージェント128には、予期又は要求したデータより多くのデータが提供されることもある。更に複数のキャッシュから検索を行うと、キャッシュ間において、幾つかの期間が重複し、エージェント128は、データが重複して供給されることもあり、このため、エージェント128は、キャッシュによって提供されるデータストリームにおける重複を削除する必要がある。 The
キャッシュマネージャの他のモジュールとのインタラクション:
キャッシュマネージャ218は、好ましくは、図35に示すように、事象通知システムインフラストラクチャにおいて、幾つかのモジュールとインタラクトする。キャッシュマネージャ218が(キャッシュ作成時に)新たなチャンネルに遭遇すると、キャッシュマネージャ218は、好ましくは、そのチャンネルのチャンネルマネージャ150を得るために情報サーバ550を呼び出す。一旦、キャッシュマネージャ218がチャンネルマネージャ150のアドレスを得ると、キャッシュマネージャ218は、好ましくは、チャンネルマネージャ150からチャンネル特性に関する情報を得る。アドミニストレータモジュール552は、好ましくは、キャッシングの分割の度合い等の幾つかの特性を設定/変更することができる。また、アドミニストレータモジュール552は、好ましくは、マニュアルでチャンネルキャッシュを作成/削除することもできる。Interaction with other modules of the cache manager:
The
エージェントキャッシュAPI−アプリケーションエージェントインタラクション:
アプリケーション(例えば、アプリケーション126)は、好ましくは、エージェントキャッシュAPI554を呼び出し、所定の主語とフィルタとともにキャッシュ546を得る。好ましくは、アプリケーションは、既にそのデータを購読予約している場合、キャッシュ546からそのデータのみを検索することができる。エージェントキャッシュAPI554は、実際には、好ましくは2つのAPIを提供する。Agent Cache API-Application Agent Interaction:
An application (eg, application 126) preferably calls the
第1のAPIにより、購読予約していないアプリケーションは、キャッシュ546の購読予約と検索を同時に行うことができる。「FIFO」フラグが設定されている場合、購読予約が作成され、エッジルータノード545に送信される。エージェント128がキャッシングされた全てのデータを受け取った後に、エージェント128は、まず、キャッシングされた全てのデータを配信し、そのデータにおいて、全ての発行者が確認できなかった最後のシーケンスを監視し、この各発行者が確認できなかった最後のシーケンスから、中断されたデータを配信する。 The first API allows an application that has not subscribed to subscribe to and search the
第2のAPIでは、アプリケーションが既にあるデータを購読予約し、キャッシングされたデータを要求していると仮定する。この場合、アプリケーションには、キャッシュデータに関して、連続的ではない幾つかのデータが既に配信されている。この具体例では、「FIFO」フラグは、単に、キャッシュ546から読み出されたデータが自ら順序を決定するが通常のデータストリームと同様の順序である必要はないことを示す。 In the second API, it is assumed that the application subscribes to existing data and requests cached data. In this case, some non-continuous data regarding the cache data is already distributed to the application. In this specific example, the “FIFO” flag simply indicates that the data read from the
エージェント128は、好ましくは、1つの大きなデータのブロック内の全てのイベントを読み出す。エージェント128は、キャッシュAPI554からデータを読み出した後、好ましくは、コールバック動作を呼び出す前に(上述参照)、データに対して以下のような動作を行う。この動作とは、通知のリストからの通知の生成、各発行者について、最後のシーケンス番号の監視、及びフィルタリングである。エージェント128によって全てのイベントをコールバックに渡す処理が完了すると、エージェント128は、キャッシュ完了イベント(DoneCache event)をコールバックに渡し、キャッシングされた全てのデータが配信されたことを示す。このとき、購読予約がFIFOであり、通常のデータが中断されている場合、エージェント128は、好ましくは、中断された全ての通知を配信する。このとき、エージェント128は、シーケンス番号がキャッシングされたデータにおける最後のシーケンス番号より大きい通知のみを配信する。
エージェントキャッシュAPIとキャッシュのインタラクション:
購読者がキャッシングされたデータを供給した場合、エージェント128側のキャッシュAPI554は、好ましくは、まず、エージェント128が接続されているエッジルータに関する履歴を調べ、キャッシュ読出要求(GetCache request)によって定義されている期間を用いて、リストをフィルタリングする。API554は、キャッシュ読出(GetCache)(チャンネル、主語、フィルタ、local_pubs、time_period、FIFO、ルータのアレー)メッセージをAPI554が接続されていた最後のエッジキャッシュに送信する。キャッシュマネージャ218は、好ましくは、チャンネルID、主語及びタイムスタンプに基づいてデータをプルし、このデータをエージェント128に戻す。キャッシュマネージャ218によるデータの供給が完了すると、キャッシュマネージャ218は、キャッシュ完了イベント(DoneCache event)をキャッシュAPIに渡し、データの転送がキャッシングされた全てのデータが配信されたことを示す。Agent cache API and cache interaction:
When a subscriber provides cached data, the
キャッシュマネージャ218がデータをローカルで検出できない場合、キャッシュマネージャ218は、エージェント128によって提供される「ルータのリスト」を用いて、必要なデータを検索する。キャッシュマネージャ218が必要な全てのデータを集めると、キャッシュマネージャ218は、必要なデータを照合し、重複削除を行った後に、このデータをエージェント128に供給する。 If the
キャッシュ接続履歴:
キャッシュ546からのデータの検索を可能にするために、好ましくは、エージェント128において、上流のキャッシュと同様に両方の側のキャッシュに関するキャッシュ接続履歴が維持される。この情報は、エージェント128がシャットダウン及びクラッシュした場合に必要であるので、この情報は、ファイルに持続的に保存する必要がある。キャッシュ接続履歴は、好ましくは、以下のようなファイル及びフォーマットによってディスクに保存される。Cache connection history:
To enable retrieval of data from
エッジキャッシュ位置:
エッジキャッシュの位置(例えば、エッジルーティングノード546のキャッシュ546)は、好ましくは、チャンネルマネージャ/チャンネルライブラリから得られる。これは、起動時及びこれに続く、例えば、接続の切断/再接続、接続の変更等によってエッジキャッシュが変化した、如何なる時点でも発生する。ディスパッチャは、エッジキャッシュ接続の全ての変化をエージェント128に通知し、これらの変化は、エージェント128のキャッシュライブラリに伝えられる。変化が起こるたび、その情報は持続される。Edge cache location:
The location of the edge cache (eg,
持続的なストレージ:CACHE_ROOT/channel_id/Channel−キャッシングされたデータのためのパスの具体例
データは、好ましくは次のようなフォーマットで保存される。
エッジキャッシュの数;
エッジキャッシュ1:インターバルの数、StartTimel:EndTimel、StartTime2:EndTime2、...;
エッジキャッシュ2:インターバルの数、StartTimel:EndTimel、StartTime2:EndTime2、...;・・・
ここで、最後のタイムスタンプがリストの最初に設けられる。なお、2つの異なるエッジキャッシュが重複する期間を有することはない(エージェント128は、一度に1つのエッジキャッシュのみに接続されるため)。新たなエントリが追加される毎に、古いエントリは、それらがまだ有効であるか確認され、それらが無効である場合、このエントリは、削除される。期間は、時刻EndTime+チャンネルの持続期間<現在の時刻となった場合、無効となる。Persistent storage: CACHE_ROOT / channel_id / Channel-path example for cached data Data is preferably stored in the following format.
Number of edge caches;
Edge cache 1: number of intervals, StartTimel: EndTimel, StartTime2: EndTime2,. . . ;
Edge cache 2: number of intervals, StartTimel: EndTimel, StartTime2: EndTime2,. . . ; ...
Here, the last time stamp is provided at the beginning of the list. Note that two different edge caches do not have overlapping periods (because
エッジキャッシュエントリは、エントリ内の全ての期間が無効になった場合、無効になる。なお、「EndTime」が0であるということは、その期間が現在有効であることを意味する。 An edge cache entry becomes invalid if all periods in the entry are invalidated. Note that “EndTime” being 0 means that the period is currently valid.
上流のキャッシュ位置:
上流のキャッシュ(例えば、コアルーティングノード548のキャッシュ546)の位置は、主語に依存している。各主語は、それ自身のマルチキャストツリーを有し、したがって、第1のレベルの上流のキャッシュの組は、主語の関数である。ユーザが主語を購読予約すると、インテリジェントルータ92は、必ず主語に関連している上流のキャッシュのリストを返す。同様に、障害又はマルチキャストツリーの再構成に起因する上流のキャッシュ位置のあらゆる変化は、制御パスを介してエージェント128に伝えられる。これらの変化は、持続的なメモリ(ファイル)に局所的に記録される。Upstream cache position:
The location of the upstream cache (eg,
持続的なストレージ:CACHE_ROOT/channel_identifier/subject(階層ではなく、完全な主語)−キャッシングされたデータのためのパスの具体例
データは、好ましくは、以下のフォーマットで保存される。
上流キャッシュの数;
上流キャッシュ1:インターバルの数、StartTimel:EndTimel、StartTime2:EndTime2,...;
上流キャッシュ2:インターバルの数、StartTimel:EndTimel、StartTime2:EndTime2、...;・・・
ここでも、最後のタイムスタンプがリストの最初に設けられる。エッジキャッシュ期間とは異なり、エージェント128は、所定の主語について、複数の上流のキャッシュを有することができるので、2つの上流キャッシュが重複する期間を有することがある。また、上流のキャッシュファイルのコンテンツは、エッジキャッシュの場合と同様なアルゴリズムを用いて集められたガーベージである。Persistent storage: CACHE_ROOT / channel_identifier / subject (full subject, not hierarchy)-path example for cached data The data is preferably stored in the following format:
Number of upstream caches;
Upstream cache 1: number of intervals, StartTimel: EndTimel, StartTime2: EndTime2,. . . ;
Upstream cache 2: number of intervals, StartTimel: EndTimel, StartTime2: EndTime2,. . . ; ...
Again, the last time stamp is placed at the beginning of the list. Unlike the edge cache period, the
データ検索の間のキャッシュ妥当性:
エージェント128が有効な間、エージェント128は、接続を介して、異なるエッジルータ及び上流ルータ間を移動する。エージェントキャッシュAPI554は、好ましくは、この接続履歴をローカルメモリに保存する。エージェント128が、キャッシュ546からデータの最後のT期間を読み出す必要がある場合、エージェントキャッシュAPI554は、好ましくは、接続履歴を調べ、そのデータにアクセスするためのキャッシュを判定する。これのために用いられるアルゴリズムは、好ましくは以下の通りである。(1)キャッシュライブラリは、全てのエッジキャッシュ期間を探検し、Tタイムフレーム内に含まれる期間を確認する。(2)リストLeは、期間開始時刻に基づいて、リストLeをソートする。(3)LE内のエッジキャッシュによってカバーされていない各期間について、上流キャッシュを探索し、この期間をカバーできる全ての上流キャッシュ期間に関する情報を得て、有効な期間をリストLuに加え、LeにLuを追加し、期間開始時刻を用いてLeをソートし、Lを作成する。Cache validity during data retrieval:
While the
このアルゴリズムによりキャッシュのリストLが生成され、各キャッシュについて、データを読み出すための期間が得られる。次に、このキャッシュのリストLは、(4)キャッシュ読出メッセージに組み込まれ、キャッシュマネージャ218に送信される。キャッシュマネージャ218側では、キャッシュマネージャ218は、好ましくは、(5)ゲットキャッシュメッセージからキャッシュ期間を取り出し、開始時刻順にソートされたリストLを再構築する。リストLの各期間の間、キャッシュマネージャ218は、好ましくは、(6)前の期間と現在の期間の間に、隙間があるか否かを確認し、隙間があれば、そのデータのローカルキャッシュを要求する。このような隙間がなければ、キャッシュマネージャ218は、好ましくは(7)関連するキャッシュにデータを読み出すよう指示する。キャッシュマネージャ218は、好ましくは(8)全てのキャッシュからのデータを照合し、このデータをエージェント128に送信する。 A cache list L is generated by this algorithm, and a period for reading data is obtained for each cache. This cache list L is then incorporated into the (4) cache read message and sent to the
ルータキャッシュAPI:
インテリジェントルータ92側のルータキャッシュAPI552は、特定の主語のためのキャッシングを作成し、消去し、停止し、再開するためにキャッシュマネージャ218を呼び出す。また、ルータキャッシュAPI552は、初期の構成を処理する。すなわち、ルータキャッシュAPI552は、インテリジェントルータ92からチャンネルマネージャ150にキャッシュアドレスをアップロードし、これにより、エージェント128側(エージェントキャッシュAPI554)は、必要なときにこの情報を得ることができる。更に、ルータキャッシュAPI552は、他のルータのキャッシュ546の位置を読み出す(この位置は例えば、購読予約に対する応答において及び主語ツリーの変更の後にインテリジェントルータ92が所定の主語のための上流キャッシュをエージェント128に通知する際に用いられる)。Router cache API:
The
プルのためのキャッシュの使用:
上述の説明では、持続的なチャンネルを実現し、購読者がネットワークからデータをプルすることによって情報を返すためのキャッシュの使用に焦点をあてた。変形例では、如何なる購読者(新たな購読者又は復帰した購読者)もキャッシュ546から(例えば、購読者が購読予約していないが、他の誰かの購読予約のためにキャッシュ546に保存されているデータを含む)あらゆる種類のデータをプルすることができる。この実施例と先の実施例との違いは、復帰した購読者については、データの存在が保証され、データの位置は、既知であるが、新たな購読者については、保存されているデータの位置が未知であるという点である。この変形例を実現する単純な手法は、チャンネルにおいて「キャッシュ検出(FindCache)」要求を発行することである。キャッシュ検出要求は、チャンネルID、主語、フィルタ、期間及び要求されたキャッシングされたデータを有するキャッシュ546を探すエージェント128の位置を含んでいる。全てのキャッシュ546がキャッシュ検出要求を待機している。各キャッシュ546が要求を受け取ると、キャッシュ546は、対応するデータが自らのデータストアにあるか否かを確認し、自らがそのデータを保存している場合、自らの位置をユニキャストメッセージとして返す。エージェント128は、キャッシュ546の1つを選択し、そのキャッシュ546をキャッシュ読出処理によって呼び出し、そのデータを得る。Use of cache for pull:
The above discussion has focused on the use of a cache to implement persistent channels and return information by subscribers pulling data from the network. In a variant, any subscriber (new subscriber or reinstated subscriber) is saved from cache 546 (eg, the subscriber has not subscribed, but is saved in
最新データプル:
他の実施例では、購読者アプリケーション(例えば、アプリケーション126)が所定の主語について、最新のメッセージを得ることができる最新データプルを実現する。これは、例えば、株価警告等のデータに有効であり、この場合、ユーザは、履歴ではなく、最新の株価に関する情報のみを希望する。Latest data pull:
In another embodiment, a subscriber data application (eg, application 126) implements the latest data pull that can obtain the latest message for a given subject. This is effective, for example, for data such as stock price warnings. In this case, the user only wants information on the latest stock price, not a history.
キャッシュマネージャの実現:
キャッシュマネージャ218の実現においては、好ましくは、3種類のスレッドを用いる。データキャッシングスレッド−データキャッシングスレッドは、好ましくは、インテリジェントルータ92への接続からデータを取り出し、データにインデックスを付してメモリに保存する。データストレージスレッド−期間の最後に到達すると、データストレージスレッドは、メモリに保存されているデータをディスクに移動させ、及びこの処理において、期限切れのデータに関するガーベージコレクションを実行する。データ検索スレッド−データ検索スレッドは、好ましくは、キャッシングされたデータの要求を受け、キャッシュ546からデータを検索する。これらの3つの種類のスレッドは、単一のスレッドとして実現してもよく、スレッドのプールとして実現してもよい。好ましくは、データキャッシングスレッドとデータストレージスレッドは、データがディスクに移動される時刻に同期される。このようにデータストレージスレッドとデータ検索スレッドとを同期させることにより、データの検索中にデータが消去されることが防止される。Realization of cache manager:
In implementing the
データ構造:
キャッシングのためのデータ構造の具体例は、表19及びこれに関連する説明に記した通りである。data structure:
Specific examples of the data structure for caching are as described in Table 19 and the related description.
データストレージ:
図36は、「アクイラキャッシュ(Aquila Cache)」と呼ばれるキャッシュ546にデータファイルを保存するために用いられる好適なディレクトリ構造を示している。なお、各主語レベルのディレクトリは、好ましくは、その主語について発行されるデータを保存するデータディレクトリに加えて、1組の子主語ディレクトリを有する。例えば、エンターテインメントチャンネルにおいて、FOXムービーから発行されたデータは、AquilaCache/エンターテインメント/FOX/ムービー/データ(AquilaCache/Entertainment/FOX/Movies/Data)のディレクトリのファイルに格納され、主語FOXについて発行されたデータは、AQUILACACHE/エンターテインメント/フォックス/データ(AquilaCache/Entertainment/FOX/Data)のディレクトリのファイルに格納される。データのストレージを高速に行うために、好ましくは、インテリジェントルータ92がキャッシュ546に対し、所定のチャンネルと主語に関するキャッシングを開始するよう要求した時点で、特定の主語のディレクトリ階層を構築する。Data storage:
FIG. 36 illustrates a preferred directory structure used to store data files in a
データ検索:
キャッシュ546からのデータ検索は、データのストレージを妨げないように、及びキャッシュ546がホールドアップしないように、効率的に行う必要がある。このデータ検索では、ディスクとメモリの両方からデータを読み出す。データ検索においては、好ましくは以下のようなステップを実行する。(1)データノードの位置を検出する。(2)データノードをロックする。(3)呼び出す必要があるデータのタイムスタンプを検出する。(4)データを読み出し、メモリに保存する。(5)データノードをロック解除する。(6)メモリに保存され、読み出されたデータをフィルタリングし、並べ替えた後、エージェント128クライアントにプッシュする。data search:
Data retrieval from the
以上、例示的な実施例を用いて本発明を説明してきたが、これらの実施例を様々に変形できることは当業者にとって明らかであり、本発明は、これらの如何なる適応化又は変形をも含む。例えば、本発明の範囲から逸脱することなく、様々な種類の発行者装置、ユーザ又は購読者装置、これらのチャンネル及び構成、コンテンツベースの経路選択及び他の機能のハードウェア及びソフトウェアによる実現が可能である。この発明は、特許請求の範囲及びその均等物によってのみ制限される。 Although the present invention has been described using exemplary embodiments, it will be apparent to those skilled in the art that these embodiments can be variously modified and the present invention includes any adaptations or variations thereof. For example, various types of issuer devices, user or subscriber devices, their channels and configurations, content-based routing and other functions can be realized by hardware and software without departing from the scope of the present invention. It is. The invention is limited only by the claims and the equivalents thereof.
| 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 |
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2004520021ADivisionJP2005532748A (en) | 2002-07-08 | 2003-07-08 | Caching including packet inspection for payload inspection, alert service, digital content delivery, and quality of service management, and selective multicasting in publish-subscribe networks |
| Publication Number | Publication Date |
|---|---|
| JP2010148118Atrue JP2010148118A (en) | 2010-07-01 |
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2004520021APendingJP2005532748A (en) | 2002-07-08 | 2003-07-08 | Caching including packet inspection for payload inspection, alert service, digital content delivery, and quality of service management, and selective multicasting in publish-subscribe networks |
| JP2009296288APendingJP2010148118A (en) | 2002-07-08 | 2009-12-25 | Routing method, routing apparatus, routing/caching method, routing/caching apparatus, and network |
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2004520021APendingJP2005532748A (en) | 2002-07-08 | 2003-07-08 | Caching including packet inspection for payload inspection, alert service, digital content delivery, and quality of service management, and selective multicasting in publish-subscribe networks |
| 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) |
| 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 |
| JP2013210997A (en)* | 2012-03-16 | 2013-10-10 | Boeing Co:The | System and method for rapid management of logic formulas |
| JP2020126283A (en)* | 2019-01-31 | 2020-08-20 | 有二 菱沼 | Corporate information transmission/reception system |
| JP2022164421A (en)* | 2021-04-16 | 2022-10-27 | Jcc株式会社 | Broadcast recording apparatus and program therefor |
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4614128B2 (en) | 2004-12-10 | 2011-01-19 | 日本電気株式会社 | Packet delivery system, PAN registration device, PAN management device, and packet transfer device |
| US8792852B2 (en)* | 2004-12-23 | 2014-07-29 | Telefonaktiebolaget Lm Ericsson (Publ) | Method for informing multiple mobile terminals of an emergency event |
| 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 |
| US9686183B2 (en) | 2005-12-06 | 2017-06-20 | Zarbaña Digital Fund Llc | Digital object routing based on a service request |
| US8194701B2 (en) | 2005-12-06 | 2012-06-05 | Lippershy Celestial Llc | System and/or method for downstream bidding |
| US8014389B2 (en) | 2005-12-06 | 2011-09-06 | Lippershy Celestial Llc | Bidding network |
| US7894447B2 (en)* | 2005-12-06 | 2011-02-22 | Lippershy Celestial Llc | Digital object routing |
| 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 |
| 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 |
| 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 |
| 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 |
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2000349830A (en)* | 1999-06-04 | 2000-12-15 | Oki Electric Ind Co Ltd | INTERCONNECTION DEVICE AND MAPPING METHOD FOR ACTIVE QoS |
| JP2002158714A (en)* | 2000-09-21 | 2002-05-31 | Lucent Technol Inc | Method and apparatus for use in a node of a UMTS UTRAN for exchanging data with another node of a UTRAN network |
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0867088A4 (en)* | 1995-12-15 | 2000-04-05 | Telcordia Tech 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 |
| 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 |
| US7046680B1 (en)* | 2000-11-28 | 2006-05-16 | Mci, 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 |
| US7325249B2 (en)* | 2001-04-30 | 2008-01-29 | Aol Llc | Identifying unwanted electronic messages |
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2000349830A (en)* | 1999-06-04 | 2000-12-15 | Oki Electric Ind Co Ltd | INTERCONNECTION DEVICE AND MAPPING METHOD FOR ACTIVE QoS |
| JP2002158714A (en)* | 2000-09-21 | 2002-05-31 | Lucent Technol Inc | Method and apparatus for use in a node of a UMTS UTRAN for exchanging data with another node of a UTRAN network |
| 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 |
| JP2013210997A (en)* | 2012-03-16 | 2013-10-10 | Boeing Co:The | System and method for rapid management of logic formulas |
| JP2020126283A (en)* | 2019-01-31 | 2020-08-20 | 有二 菱沼 | Corporate information transmission/reception system |
| JP2022164421A (en)* | 2021-04-16 | 2022-10-27 | Jcc株式会社 | Broadcast recording apparatus and program therefor |
| Publication number | Publication date |
|---|---|
| AU2003256463A1 (en) | 2004-01-23 |
| KR100985237B1 (en) | 2010-10-04 |
| EP1535157A4 (en) | 2010-09-08 |
| KR20050017108A (en) | 2005-02-21 |
| CN1701304B (en) | 2010-05-05 |
| WO2004006486A2 (en) | 2004-01-15 |
| CN1701304A (en) | 2005-11-23 |
| EP1535157A2 (en) | 2005-06-01 |
| WO2004006486A3 (en) | 2004-05-27 |
| JP2005532748A (en) | 2005-10-27 |
| AU2003256463A8 (en) | 2004-01-23 |
| Publication | Publication Date | Title |
|---|---|---|
| JP2010148118A (en) | Routing method, routing apparatus, routing/caching method, routing/caching apparatus, and network | |
| US7672275B2 (en) | Caching with selective multicasting in a publish-subscribe network | |
| US7376092B2 (en) | Method and apparatus for implementing persistent and reliable message delivery | |
| KR100971506B1 (en) | Method and apparatus for reliable and effective content-based routing and query and response in publishing subscription networks | |
| 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 | |
| TWI345397B (en) | Method and system for stale data detection based quality of service | |
| US7958251B2 (en) | Method and system for processing raw financial data streams to produce and distribute structured and validated product offering data to subscribing clients | |
| US7958025B2 (en) | Method and system for processing raw financial data streams to produce and distribute structured and validated product offering objects | |
| US20030195946A1 (en) | Method and apparatus for reliable publishing and subscribing in an unreliable network | |
| US7545805B2 (en) | Method and apparatus for content-based routing and filtering at routers using channels | |
| US20040083305A1 (en) | Packet routing via payload inspection for alert services | |
| 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 | |
| JP2008211835A (en) | Packet routing via payload inspection and subscription processing in publish / subscribe networks | |
| US20030165139A1 (en) | Packet routing via payload inspection | |
| WO2002013091A1 (en) | System for processing raw financial data to produce validated product offering information to subscribers | |
| JP4429173B2 (en) | Method and computer system for triggering action based on digital communication data | |
| US7411954B2 (en) | Efficient implementation of wildcard matching on variable-sized fields in content-based routing | |
| Marandi | Bloom Filter-Based Content Discovery and Retrieval for Information-Centric Networks. | |
| KR20040039288A (en) | Packet routing via payload inspection and subscription processing in a publish-subscribe network | |
| EP1079567A2 (en) | A method for selective data-communications duplication |
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal | Free format text:JAPANESE INTERMEDIATE CODE: A131 Effective date:20110614 | |
| A02 | Decision of refusal | Free format text:JAPANESE INTERMEDIATE CODE: A02 Effective date:20111206 |