JP2008252907A - ペイロード検査を介したパケット・ルーティング、及びパブリッシュ/サブスクライブ型ネットワークにおけるサブスクリプション処理 - Google Patents
ペイロード検査を介したパケット・ルーティング、及びパブリッシュ/サブスクライブ型ネットワークにおけるサブスクリプション処理 Download PDFInfo
- Publication number
- JP2008252907A JP2008252907A JP2008110937A JP2008110937A JP2008252907A JP 2008252907 A JP2008252907 A JP 2008252907A JP 2008110937 A JP2008110937 A JP 2008110937A JP 2008110937 A JP2008110937 A JP 2008110937A JP 2008252907 A JP2008252907 A JP 2008252907A
- Authority
- JP
- Japan
- Prior art keywords
- subscription
- channel
- network
- content
- routing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/56—Routing software
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/302—Route determination based on requested QoS
- H04L45/306—Route determination based on the nature of the carried application
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/302—Route determination based on requested QoS
- H04L45/308—Route determination based on user's profile, e.g. premium users
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
【課題】ルーティング判断を行い且つイベントがサブスクリプションを満足させるときを決定して、パブリッシャへの負担を軽減する一層効率的な方法を提供する。
【解決手段】パブリッシュ/サブスクライブ型ネットワークに関するサブスクリプションを格納する本方法では、構造を指定してサブスクリプションを前記ネットワークに格納し;当該構造を複数の副表現に分割し、;当該副表現を用いて特定のサブスクリプションを集約的に指定し;特定のサブスクリプションに関してブール代数値化された述部を上記副表現の1つと関連付け;当該述部がコンテンツ・ベースのルーティングをサブスクリプションに与えるため上記特定のサブスクリプションに関する通知要素の指示を与える。
【選択図】図1
【解決手段】パブリッシュ/サブスクライブ型ネットワークに関するサブスクリプションを格納する本方法では、構造を指定してサブスクリプションを前記ネットワークに格納し;当該構造を複数の副表現に分割し、;当該副表現を用いて特定のサブスクリプションを集約的に指定し;特定のサブスクリプションに関してブール代数値化された述部を上記副表現の1つと関連付け;当該述部がコンテンツ・ベースのルーティングをサブスクリプションに与えるため上記特定のサブスクリプションに関する通知要素の指示を与える。
【選択図】図1
Description
[関連出願の参照]
本出願は以下の出願と関連し、それらの全てがあたかも完全に記載されているかのように本明細書に援用されている。
本出願は以下の出願と関連し、それらの全てがあたかも完全に記載されているかのように本明細書に援用されている。
米国仮出願Serial No.60/312,074、発明の名称「ペイロード検査を介したパケット・ルーティング(Packet Routing Via PayloadInspection)」、2001年8月15日出願;
米国仮出願Serial No.60/312,077、発明の名称「チャネルを用いた、ルータでのコンテンツ・ベースのルーティング及びフィルタリング方法及び装置(Methodand Apparatus forContent−Based Routing andFiltering at Routers Using Channnels)」、2001年8月1日出願;
米国仮出願Serial No.60/312,076、発明の名称「ブール関数をネットワークを介して送信及び受信する方法(Method for Sending andReceiving a Boolean Function Over a Network)」、2001年8月15日に出願;
米国仮出願Serial No.60/312,075、発明の名称「ブール関数を格納して、ネットワークを介して評価、変更、再使用及び配信を可能にする方法(Methodfor Storing BooleanFunctions to Enable Evaluation, Modulation, Reuse, and DeliveryOver a Network)」、2001年8月15日出願;
米国仮出願Serial No.60/329,526、発明の名称「コンテンツ・ベースのルーティングにおいてサイズ可変のフィールドについてワイルドカード整合の効率的実装(EfficientImplementation of Wildcard Matching on Variable−SizedFields in Content Based Routing)」、2001年10月17日出願。
米国仮出願Serial No.60/312,077、発明の名称「チャネルを用いた、ルータでのコンテンツ・ベースのルーティング及びフィルタリング方法及び装置(Methodand Apparatus forContent−Based Routing andFiltering at Routers Using Channnels)」、2001年8月1日出願;
米国仮出願Serial No.60/312,076、発明の名称「ブール関数をネットワークを介して送信及び受信する方法(Method for Sending andReceiving a Boolean Function Over a Network)」、2001年8月15日に出願;
米国仮出願Serial No.60/312,075、発明の名称「ブール関数を格納して、ネットワークを介して評価、変更、再使用及び配信を可能にする方法(Methodfor Storing BooleanFunctions to Enable Evaluation, Modulation, Reuse, and DeliveryOver a Network)」、2001年8月15日出願;
米国仮出願Serial No.60/329,526、発明の名称「コンテンツ・ベースのルーティングにおいてサイズ可変のフィールドについてワイルドカード整合の効率的実装(EfficientImplementation of Wildcard Matching on Variable−SizedFields in Content Based Routing)」、2001年10月17日出願。
[発明の分野]
本発明は、パケット内のペイロードの検査に基づいて、ネットワーク・コア内でパケットをルーティングする方法及び、サブスクリプション(予約購読)をパブリッシュ/サブスクライブ型ネットワーク(publish−subscribenetwork)において処理する方法及び装置に関する。
本発明は、パケット内のペイロードの検査に基づいて、ネットワーク・コア内でパケットをルーティングする方法及び、サブスクリプション(予約購読)をパブリッシュ/サブスクライブ型ネットワーク(publish−subscribenetwork)において処理する方法及び装置に関する。
ネットワーク帯域幅が指数関数的に増大しつつある。しかしながら、ネットワーク・インフラストラクチャ(ルータ、サーバ、デーモン、プロトコル等を含む。)は、依然比較的古い技術を用いている。その結果、インターネット・アプリケーション及びネットワーク・ルータは、帯域幅の増大速度に遅れずについていくことができない。同時に、更に一層多くの装置及びアプリケーションがネットワーク化可能になりつつある。これらの装置及びアプリケーションがネットワーク・ノードにかける負荷は、途方もなく増大した。また、ネットワーク負荷及びアプリケーションの数の増大により、ネットワーク・アプリケーションの実装及び維持が極めて高度に複雑になった。その結果、ネットワーク帯域幅の増大、及びネットワーク装置及びアプリケーションの偏在した使用により、古いネットワーク・インフラストラクチャで、特にコンテンツをサブスクライバ(subscriber)に発行(publish)するとき、データのルーティング及び送信の問題が生じる可能性がある。
ネットワークに情報をサーバからクライアントに押し込ませるモデルがパブリッシュ/サブスクライブ型(publish−subscribestyle)である。このモデルでは、サーバは、どのクライアントがその情報に関心があるか又はそれらがネットワーク内のどこに配置されているかに関係無く、その情報の単純化されたパブリッシャ(publisher)となる。クライアントは、情報のためのサブスクライバ(subscriber)となり、ネットワーク内のどこで情報が発行されたかについての詳細に潜在的に関係無く、情報が入手可能となるにつれ情報は配信される。次いで、ネットワークは、発行された情報をサブスクライバへ効率的にルーティングし、情報をアクティブ状態のサブスクリプションに対して整合させ、そしてこれの全てを、パブリッシャ及びサブスクライバに対してトランスペアレントであるやり方で行うのを担う。
サーバの複雑さがパブリッシュ/サブスクライブ・モデルで著しく低減されるので、重量型サーバと軽量型クライアントとの区別が無くなる、又はむしろパブリッシャ又はサブスクライバあるいはこれら両方のいずれかである場合があるピア(peer)の概念に併合し始める可能性がある。多数の種類のアプリケーションは、ピア間でのパブリッシュ/サブスクライブ型対話に対して生来の親和性を有する。これらのアプリケーションの多くの根底にある共通のテーマは、発行されて且つ申し込まれた情報がイベントの形式であることである。例えば、投資家は株を売買し、株の価格を変えさせる。交通未遂事故が高速自動車道で生じ、高速自動車道上で交通を渋滞させる。ソフトウエア・システムにおけるセキュリティ・ホールが発見され、ソフトウエアのユーザのためパッチを開発させる。プレーヤがインターネット・ゲームで武器を発砲して、別のプレーヤのアバターを死なせる。これらの例示的現象の全ては、非常に多くのサブスクライバにとって潜在的に興味があり且つネットワークを介して伝搬されて、サブスクライバにイベントがたまたま起こったことを通知することができる当該イベントである。こうして、イベントは単純に、ネットワーク上のある場所で適時にある地点でたまたま起こった潜在的に興味のある何かについての自己完結型の簡潔な情報である。
別の事例はスケジュール設定されたブロードキャストに関係し、そのスケジュール設定されたブロードキャストは、イベントの時間が予測不能で且つランダムである場合非同期のイベントのみに関係するアプリケーションから異なった特性を有する。第1に、イベントは、既知の時間に起こるようスケジュール設定される。第2に、イベントは簡潔な情報である必要がない。代わりに、それは、大量のデータであることができるであろう。興味のあるサブスクライバを見つけた場合ネットワークの構成要素にデータの大量の負荷を指向させることは、かなりのサーバ処理を必要とする。
典型的には、サーバ又はパブリッシャは、パブリッシュ/サブスクライブ・モデル(publish−subscribemodel)において発行されたコンテンツを送るべき場所についてネットワークに命令するためネットワークに対してルーティング判断を実行する。パブリッシャは、それが発行するコンテンツのサブスクリプションを格納する。新しいコンテンツを受信し又は発生すると、パブリッシャは、そのコンテンツをサブスクリプションのそれぞれと比較して、いずれかの整合を識別する。コンテンツ(イベント)がいずれかのサブスクリプションを満足させる場合、パブリッシャは、そのコンテンツを対応のサブスクライバにネットワークを介して押し込む。この従来のパブリッシュ/サブスクライブ・モデルは、特により多くの装置がネットワーク化可能になるにつれ、そしてサブスクリプションの数が増大するにつれ、極めて大きい負担をパブリッシャにかける。相補的アプローチはまさに気に入らない場合があり、即ち、サブスクライバはそれ自身のサブスクリプションを全ての発行されたイベントについて評価する。
インターネット中の無数のアプリケーションの非常に大きな集中により、イベント通知のエクスプロイト(弱点を利用する)を行う可能性は際限無しになる。しかしながら、これらの可能性は、ルーティング判断を行い且つイベントがサブスクリプションを満足させるときを決定して、パブリッシャへの負担を軽減する一層効率的な方法を必要とする。従って、普及した辛抱強いイベント通知サービスは、インターネット・アプリケーション、並びに他のアプリケーション及び実行にとって極めて大きい付加価値のある恩恵を提供することができるであろう。
本発明と一致している第1の方法及び装置は、ネットワークにおいてパケットを処理することを提供する。ヘッダ・セクション及びペイロード・セクションを有するパケットが受信される。パケットのペイロード・セクションが、パケットの処理の手法を決定する際に使用するためネットワーク・コアにおいて検査され、そして当該パケットが、当該検査に基づいて選択的に処理される。
本発明と一致している第2の方法及び装置は、コンテンツ・ベースのルーティングを容易にするようチャネルを構成することを提供する。チャネルは、パブリッシュ/サブスクライブ型ネットワーク内の複数のノード間に論理通信経路を与える。当該チャネルは、通信経路にわたり情報のコンテンツ・ベースのルーティングする際に使用されるよう構成され、そしてメッセージ・フォーマットが、通信経路を介した送信のため上記チャネルに基づいて選択される。
本発明と一致している第3の方法及び装置は、パブリッシュ/サブスクライブ型ネットワークにおいて述部(predicates)を送信することを提供する。サブスクリプションと関連するブール代数値化された述部を含む表現(expression)が受信される。当該表現が、コンテンツ・ベースのルーティングする際に使用するためネットワークにおける送信のためメッセージに符号化され、そして当該メッセージが、コンテンツ・ベースのルーティングをサブスクリプションに与えるため、ネットワーク・コア内の少なくとも1つのルータに送信される。
本発明と一致している第4の方法及び装置は、パブリッシュ/サブスクライブ型ネットワークに関するサブスクリプションを格納することを提供する。構造(strucure)が、ネットワークにおけるサブスクリプションを格納するため指定される。当該構造は、複数の副表現(sub−expression)に分割され、当該副表現は、特定のサブスクリプションを集約的に指定するため用いられる。ブール代数値化された述部が、特定のサブスクリプションに関して、副表現のうちの少なくとも1つと関連付けられ、そして当該ブール代数値化された述部が、コンテンツ・ベースのルーティングをサブスクリプションに与えるため、特定のサブスクリプションに関する通知要素の指示を与える。
本発明と一致している第5の方法及び装置は、パケットをネットワークの中でルーティングすることを提供する。ヘッダ・セクション及びペイロード・セクションを有するパケットが受信される。パケットのペイロード・セクションが、ワイルドカードを有するペイロード・セクションの中のフィールドの大きさを制約するルーティング規則を用いることにより、パケットをルーティングする手法を決定する際に使用するため検査され、そして当該パケットは、当該検査に基づいて選択的にルーティングされる。
添付図面は、この明細書に組み込まれ、その一部を構成し、そして明細書の説明と共に、本発明の利点及び原理を説明する。
添付図面は、この明細書に組み込まれ、その一部を構成し、そして明細書の説明と共に、本発明の利点及び原理を説明する。
概観
インターネット規模の又は他の分散ネットワーク規模のイベント通知システムは、アプリケーションに、パブリッシュ/サブスクライブ型ネットワーク化の強力で柔軟な実現を与える。このシステムにおいては、アプリケーション・プログラムは、イベント通知アプリケーション・プログラム・インターフェース(API)を用いて、通知を発行し及び/又はネットワーク内で生じるイベントについての通知に対してサブスクライブ(購読)し且つその通知を受信する。
インターネット規模の又は他の分散ネットワーク規模のイベント通知システムは、アプリケーションに、パブリッシュ/サブスクライブ型ネットワーク化の強力で柔軟な実現を与える。このシステムにおいては、アプリケーション・プログラムは、イベント通知アプリケーション・プログラム・インターフェース(API)を用いて、通知を発行し及び/又はネットワーク内で生じるイベントについての通知に対してサブスクライブ(購読)し且つその通知を受信する。
システム内の通知は主題(subject)を与えられ、当該主題は、通知がカプセル化する情報の種類を分類するストリング又は他の構造である。また、通知は、当該通知に特有の情報を含む1組の属性が備わっている。例えば、アプリケーションは、主題のニューヨーク証券取引所相場(subjectquotes.nyse)及び属性シンボル及び価格を用いてニューヨーク証券取引所上での取引業務についての通知を発行し得るであろう。アプリケーションは、特有の属性値を有する、例えば、SNE(ソニー・コーポレーション(SonyCorporation)に対する株チッカー・シンボル)に等しいシンボル及び85.25に等しい価格を付した個々の通知を発行し得るであろう。属性の全部ではないが大部分は、属性が主題の同じファミリに対して全ての通知の中に見つけられるという意味において、事前定義される。しかしながら、パブリッシャは、追加のイベント特有情報を与えるため自由裁量の属性を1通知あたりの又は他のベースで追加することができる。従って、全ての又は更にいずれの属性が事前定義されることが必要なわけではない。
このシステムにおいては、サブスクライバは、主題又は全体のチャネルのみを申し込むよう限定されない。チャネルを更に以下で説明し定義する。チャネルは、例えば、主題フィールド、及び1つ又はそれより多いレベルの関連サブフィールド(副主題)を指定する階層構造を含むことができる。従って、サブスクライバは、通知の属性を介してコンテンツ・ベースのフィルタを指定することにより関心の非常に多く精密に定義された表現を与えることができる。例えば、サブスクライバは、SNEに等しいシンボル、及び90.00より大きい価格(多分、サブスクライバが所有する一塊りの株券に対する売りの機会を指示する)を有する主題ニューヨーク証券取引所相場のための全ての通知を申し込む場合がある。サブスクリプションを整合させる全ての通知は、サブスクライバに、サブスクライバがそのサブスクリプションを登録する時間又は他の時間に与えるコールバック又は他のタイプの機能を介してサブスクライバに配信されることができる。1つのサブスクリプションは、多くのフィルタに細分されることができる。
コールバックは、メッセージを端末装置に書き込むこと、又はEメールを送ること程単純なあるものを含む多くの計算を、一塊りの株券の販売を開始することのようなより複雑なあるものに、及び新しいパブリッシュ/サブスクライブ活動(発行/購読活動)(例えば、既存のサブスクリプションを、75.00の価格での購入機会のための新しいサブスクリプションに置換すること、又はサブスクライバのポートフォリオが変更されたことの新しい通知を発行すること)を開始する更に一層複雑なあるものに対して実行することができる。
アプリケーションは、例えば、エージェントによるそれらのパブリッシュ及びサブスクライブ活動を支援する。エージェントは、多分プロキシを利用する又はそれを用いて実行されることができる。エージェントは、それが用いられるとき、通知及びサブスクリプションを送出するためのネットワーク接続性、及び到来する整合通知のサブスクライバへの配信を与える。一度通知がネットワークに入ると、ルータのシステム・ネットワークは、当該通知を、サブスクライバのサブスクリプションがその通知と整合する全てのサブスクライバに伝搬させる。これを達成する一つの方法は、通知をネットワークの全ての点にブロードキャストし、次いでアプリケーション・エージェントに当該通知がそれらのサブスクライバと関連しているかどうかを判断させる方法であろう。しかしながら、これは、必ずしも拡張可能なアプローチではなく、即ち、ネットワークは、通常、特に、非常に多数のアクティブで且つ冗長なパブリッシャが存在する場合に、メッセージ・トラフィックの負荷により速やかに圧倒されるであろう。そして、たとえ十分な帯域幅が問題でない場合ですら、サブスクライバは、そのような多くの通知を処理しなければならないことにより圧倒されるであろう。
システムの例示的ネットワークは、それが通知をルーティングする方法において極めて効率的である。第1に、それは、マルチキャスト・ルーティングを用いて、通知が、例えば、せいぜい一度ネットワーク内の任意のリンクを介して伝搬されることを保証することができる。第2に、それは、フィルタに関して非常に多数の高度な最適化を採用して、通知の伝搬を出来るだけ低減することができる。
図1は、ネットワーク・コアにおいてこのインテリジェントなルーティングを概念的に説明する図である。パブリッシャ14は、メッセージ内のコンテンツをエッジ・ルータ16を介してネットワーク・コア10に送信し、それはパブリッシュ/サブスクライブ型ネットワークにおいて用いられる。パブリッシュ/サブスクライブ型ネットワークは、データ又はコンテンツをパブリッシャからサブスクライバへルーティングする任意のタイプのネットワークを含む。コンテンツは、ルータ又は他の装置間の論理的接続を表す1つ又はそれより多いチャネル18を介して送信される。ネットワーク・コア10内のインテリジェント・ルータ12は、メッセージをルーティング又は送るべきかどうかを決定する。特に、インテリジェント・ルータ12は、メッセージがサブスクライバ24により申し込まれたようなコンテンツを含むかどうかを決定することができる。
各サブスクリプションは、主題フィルタ及び属性フィルタをカプセル化する。ルータは、多分、主題フィルタを整合主題の組に拡張し、そして属性フィルタを1主題当たりベースで併合することができる。インテリジェント・ルータは、主題フィルタを通知の主題に対して評価し、そして属性フィルタを当該通知の中の属性値に対して評価する。主題フィルタのためのシンタックスは、多分ワイルドカードを用いることができ、そして属性フィルタのためのシンタックスは、ブール代数表現を用いることができ、それら両方について以下で更に説明する。用語「フィルタ」は、サブスクライバがパブリッシャから受信することに興味がある1組のイベントを記述するため用いられる。ルーティング規則は、当該フィルタから発生され、そしてインテリジェント・ルータによりルーティングを判断するため用いられる。
従って、フィルタの組の全体が例えばメッセージ26により満足されない場合、インテリジェント・ルータ12は、メッセージ26を落とし(廃棄し)、そのことは、メッセージが送られないことを意味する。フィルタの組全体の中の任意のフィルタがメッセージ20により、例えば、主題及び属性フィルタの評価に従って満足される場合、インテリジェント・ルータ12は、メッセージ20をエッジ・ルータ22及びおそらく他の装置を介してサブスクライバ24にルーティングし(送り)、又はメッセージ20を用いてインテリジェント・ルータ12の内部で他の機能を、整合フィルタに対して規定された全てのルーティング及び/又は活動規則に従って実行する。検索は、フィルタの組全体を使い果たすまで、又は全ての規則についての判断を獲得するまでのうちのいずれかが最初に来るときまで継続する。
ネットワーク・コアにおけるこのタイプのインテリジェントなコンテンツ・ベースのルーティングは、例えば、警告及び更新のリアルタイムのデータ配信を提供する。警告のためのリアルタイムのデータ配信の例には、それに限定されないが、以下のこと、即ち、株式相場(stockquotes)、交通、ニュース、旅行、天候、詐欺行為検出、セキュリティ、テレマティーク(telematics)、工場自動化、サプライ・チェーン・マネジメント、及びネットワーク管理が含まれる。更新のためのリアルタイムのデータ配信の例には、それに限定されないが、以下のこと、即ち、ソフトウエア更新、アンチウィルス更新、映画及び音楽配信、ワークフロー、記憶管理、及びキャッシュ整合性が含まれる。多くの他のアプリケーションが、サブスクリプションのための情報の配信のため可能である。
表1は、フィルタリングのための主題及び述部を備えるサブスクリプションを格納することを説明する。それらは、所望により又は必要に応じて、ネットワーク内の任意の場所に任意のタイプのデータ構造で格納されることができる。以下で説明されるように、述部はサブスクリプションの構成要素である。サブスクリプションは、以下で与えられる例のいずれの方法で表現されることができる。
表2は、相場サーバ(quote server)に関するパブリッシュ(発行)及びサブスクライブ(購読)の一例を与える。この例は、例示の目的のためのみに提供されており、そしてサブスクリプションは、任意のタイプのデータ又はコンテンツに関する任意の数及び任意のタイプのパラメータを含むことができる。
述部は、サブスクリプションのためのブール代数表現(ブール代数式)を与え、そして主題は、サブスクリプションのためのチャネルの指示を与える。サブスクリプションは、多くの異なる方法で表現することができる。ブール代数表現の使用は、1つのそのような例であり、そしてそのサブスクリプションを、コンテンツ・ベースのルーティングのための主題フィルタ及び属性フィルタに容易に変換する能力を与える。サブスクリプションは、代替として、主題に関係無しに表現されることができるが、しかし主題又はチャネルの使用(以下で更に説明する。)は、フィルタを解釈してそれを属性に適用するコンテキストを与える。
ルーティングの判断は、ネットワーク・コアの中で達成され、そしてネットワーク全体にわたり分散されることができ、その結果、パブリッシャ・マシン及びサブスクライバ・マシンへの処理負担が軽減され、そしてネットワークの効率を著しく向上させることができる。図1は、例示の目的のためのみに、1つのパブリッシャ、1つのサブスクライバ、及び1つのインテリジェント・ルータを図示するが、実行においては、多くのパブリッシャ、サブスクライバ及びインテリジェント・ルータを含めることができる。用語「インテリジェント・ルータ」は、ネットワーク・コア内又は他の位置でパケット又はメッセージのペイロードを検査することによりルーティング判断を行う能力を有するルータ又は他のエンティテイのことを言う。
ネットワーク・インフラストラクチャ
図2は、パブリッシャ及びサブスクライバのためのインテリジェント・ルータを図示するネットワーク図である。チャネル・サービスを与えるルーティング・エンティテイ30は、例えば、以下で説明されるように、メッセージをインテリジェント・ルータ間でルーティングするためネットワーク・インフラストラクチャ上に効果的に階層化されている。パブリッシャ32は、概念的に、例えば、コンテンツを検索するためのポインタのような、発行されたコンテンツの指示を受信するためのアプリケーション34と、チャネル・サービス30を介したネットワーク送信のためのコンテンツを符号化するためのエージェント36とを含む。論理的に相互接続されたインテリジェント・ルータ38、40、42、44、46及び48の集合は、サブスクリプションのための主題フィルタ及び属性フィルタから発生されたルーティング規則を用いて、コンテンツをパブリッシャからルーティングする。複数のリンク39、41、43及び45は、インテリジェント・ルータ38、40、42、44、46及び48間の論理的接続を与える。他のリンク37及び47は、パブリッシャ32とインテリジェント・ルータ38との間の論理的接続と、サブスクライバ54とインテリジェント・ルータ46との間の論理的接続とをそれぞれ与える。サブスクライバ54は、申し込まれたコンテンツを検出して受信するためのエージェント50と、当該コンテンツを与えるためのアプリケーション52とを含む。
図2は、パブリッシャ及びサブスクライバのためのインテリジェント・ルータを図示するネットワーク図である。チャネル・サービスを与えるルーティング・エンティテイ30は、例えば、以下で説明されるように、メッセージをインテリジェント・ルータ間でルーティングするためネットワーク・インフラストラクチャ上に効果的に階層化されている。パブリッシャ32は、概念的に、例えば、コンテンツを検索するためのポインタのような、発行されたコンテンツの指示を受信するためのアプリケーション34と、チャネル・サービス30を介したネットワーク送信のためのコンテンツを符号化するためのエージェント36とを含む。論理的に相互接続されたインテリジェント・ルータ38、40、42、44、46及び48の集合は、サブスクリプションのための主題フィルタ及び属性フィルタから発生されたルーティング規則を用いて、コンテンツをパブリッシャからルーティングする。複数のリンク39、41、43及び45は、インテリジェント・ルータ38、40、42、44、46及び48間の論理的接続を与える。他のリンク37及び47は、パブリッシャ32とインテリジェント・ルータ38との間の論理的接続と、サブスクライバ54とインテリジェント・ルータ46との間の論理的接続とをそれぞれ与える。サブスクライバ54は、申し込まれたコンテンツを検出して受信するためのエージェント50と、当該コンテンツを与えるためのアプリケーション52とを含む。
チャネルは、例えば、分散した状態で実現される1つの関連した組の論理的マルチキャスト接続を含むことができる。この例示的実施形態におけるチャネルは、コンテンツを交換するパブリッシャ及びサブスクライバのコミュニティにサービスを行うため用いられるネットワーク資源の論理的に関連した集合である。コンテンツは、チャネル主題の名前空間に従って分類され、そして当該資源は、チャネル・マネジャにより与えられるチャネル・サービスを介して管理され、制御され、そして供給される。複数チャネルが同じ資源を共用し得る。チャネルは、それに限定されないが、以下の例、即ち、パブリッシャ及びサブスクライバ情報、認証及び権限付与情報、メッセージのタイプ、管理情報、及び課金及び料金請求情報のような高度に拡張可能なディレクトリ・サービスを与えることができる。チャネルはまた、例えば、キャッシング、高速データ配信機構、セキュリティ、及びユーザ及びネットワーク管理を介した持続性を与えることができる。チャネルは、同様に任意の他の目的のため用いることができる。
インテリジェント・ルータによるフィルタリングは、ルーティング判断を分散するためネットワーク・コア内に生じることができる。その上、インテリジェント・ルータはまた、パブリッシャ又はサブスクライバのようなユーザ装置をネットワーク・コアと接続するエッジ・ルータとして機能することができる。また、ネットワークに接続された同じ装置は、コンテンツをサブスクライバにネットワーク・コア内のルーティング判断を介して押し込むためのパブリッシャと、受信され押し込まれたコンテンツに対するサブスクライバとの両方として、機能することができる。インテリジェント・ルータ及びチャネルは、必要に応じて又は特定の実現を所望されるように、任意の構成で接続されることができ、図2に示される構成は例示的目的のためにのみ提供されている。
図3は、インテリジェント・ルータ及び通常のバックボーン・ルータのための例示的ネットワーク・インフラストラクチャの図であり、且つチャネルのための論理的接続を説明している。この事例におけるインテリジェント・ルータは、インターネット又は他の分散型ネットワークのようなネットワークにおける既存のバックボーン・ルータを用いており、従ってインテリジェント・ルータは、バックボーン・ルータ上に効果的に階層化されて置かれている。この例においては、インターネット・サービス・プロバイダ(ISP)・ネットワーク58、59及び60のそれぞれは、メッセージ又はパケットの従来のルーティングのための幾つかのバックボーン・ルータを含む。複数のインテリジェント・ルータ61−70は、ISPネットワーク58、59及び60内の1つ又はそれより多いバックボーン・ルータと接続される。インテリジェント・ルータ61−70はまた、リンクの例を表す複数のリンク73−85により相互接続され、そして同様にエンド・ユーザ装置にリンクにより接続されることができる。インテリジェント・ルータ61−70は、エンティテイ71のような1つ又はそれより多いアドミニストレータ・マシン、及びエンティテイ72のような1つ又はそれより多い仮想私設ネットワーク(VPN)・コントローラにより制御されることができる。ISPネットワーク58、59及び60はまた、パブリッシャ・マシン及びサブスクライバ・マシン(図3に図示されてない)に接続されるであろう。ISPネットワーク58、59及び60の中の及びそれらの間のバックボーン・ルータは、任意の従来の方法で既存のネットワーク・インフラストラクチャ内で相互接続される。
インテリジェント・ルータ61−70及びリンク73−85は、図示されているように、既存のネットワーク・インフラストラクチャを用いて実現されることができ、そしてそれらは、ネットワーク・コア内でコンテンツ・ベースのルーティングを与える。リンク73−85は、インテリジェント・ルータ61−70間の論理的接続を表し、そして例えば、既存のネットワーク・インフラストラクチャ又は他の装置を用いて実現されることができる。リンクは、例えば、トンネルと呼ばれる論理的接続を用いて実現されることができる。トンネルは、ハードウエアを、そして多分、ソフトウエアと、リンクを実現するためのネットワーク・インフラストラクチャとを含み、そして1つのトンネルは、複数チャネルの構成要素であることができる。当該チャネルは、論理的構成を特定のタイプのコンテンツに与え、従って当該チャネルを介して送信される属性にコンテキストを与えることによりインテリジェント・ルータにおけるコンテンツ・ベースのルーティングを容易にする。インテリジェント・ルータがチャネル無しでルーティング判断を実行することができるにも拘わらず、チャネルは、ネットワーク・コア内のインテリジェント・ルータによりコンテンツ・ベースのルーティングの効率を向上させる。
この例示的実施形態は、チャネル及びリンクの使用を含む。リンクは、インテリジェント・ルータとはいえ2つのルータ間の接続である。チャネルは、1対多又は多対多の論理的接続を達成するため相互接続リンクにより静的又は動的に構成されたルータの(典型的には大きな)集合を包含するネットワーク・エンティテイである。特に、チャネルは、当該チャネルの本質的特性を記述するトップレベルの論理的エンティテイである。1つのチャネルの下に、多くの主題があることができるであろう。各主題は、相互接続されたルータの集合を含む(マルチキャスト・トリーのような)サブネットワークを形成するであろう。これらの主題ベースのサブネットワークは、異なる要領で割り当てられ、指向(orient)させられ、そして構成されることができる。チャネルは、それの下で主題のため形成された全てのサブネットワークの集合であるが、そのチャネルは、例えば、ネットワークのメッシュに似ていてよい。
図4は、インテリジェント・ルータ92の例示的ハードウエア構成要素の図であり、そのインテリジェント・ルータ92は、他の参照されたインテリジェント・ルータのいずれかと一致することができる。ネットワーク・ノード90は、従来のバックボーン・ルータ95と接続されたインテリジェント・ルータ92を含むことができる。インテリジェント・ルータ92は、メモリ94及び二次記憶装置97(多分、例えば分離したマシンを用いて実現される。)に接続されたプロセッサ93を含み、これらメモリ94及び二次記憶装置97のいずれも、データを格納し、並びにデータをキャッシュすることができ、そしてプロセッサ93による実行のためのアプリケーションを格納することができる。二次記憶装置97はデータの不揮発性記憶を与える。以下で説明されるようなソフトウエア制御の下で、プロセッサ93は、命令をバックボーン・ルータ95に与え、そのバックボーン・ルータ95は、メッセージ又はパケットを、サブスクリプションに関する主題フィルタ及び属性フィルタから発生されたルーティング規則に基づいてルーティングし(送り)又はルーティングしない(廃棄する)。別個のプロセッサ制御された装置で実行されるように示されているが、インテリジェント・ルータ92は、代替として、バックボーン・ルータ95内の特定用途向け集積回路(ASIC)で実行されて、多分埋め込み型ソフトウエアを備えるハードウエア内のインテリジェントなルーティング機能を与えることができる。インテリジェントなルーティング機能はまた、代替として、1つ又は複数のルーティング装置内のソフトウエア及びハードウエアの組み合わせで実行されることができる。
図5は、例示的パブリッシャ・マシン及びサブスクライバ・マシンの図である。パブリッシャ・マシン100又は118は、以下の構成要素、即ち、1つ又はそれより多いパブリッシャ・アプリケーション104及びエージェント・アプリケーション106を格納するメモリ102と、データの不揮発性記憶を与える二次記憶装置112と、情報又は指令を入力するための入力装置108と、メモリ102に格納された又は他の記憶装置から受け取られたアプリケーションを実行するプロセッサ114と、情報を出力するための出力装置110と、情報の可視表示を与える表示装置116とを含むことができる。
サブスクライバ・マシン122又は140は、以下の構成要素、即ち、1つ又はそれより多いアプリケーション126及びエージェント・アプリケーション128を格納するメモリ124と、データの不揮発性記憶を与える二次記憶装置130と、情報又は指令を入力するための入力装置132と、メモリ124に格納され又は他の記憶装置から受け取られたアプリケーションを実行するプロセッサ134と、情報を出力するための出力装置136と、情報の可視表示を与える表示装置138とを含むことができる。パブリッシャ・マシン及びサブスクライバ・マシンは、代替として、より多くの又はより少ない構成要素、又は異なる構成要素を任意の構成で含むことができる。
パブリッシャ・マシン100又は118は、サブスクライバ・マシン122又は140と、前述したネットワークのようなネットワーク120を介して接続される。ネットワーク120は、ネットワーク・コアにおいてパケット又はメッセージを介してデータ又はコンテンツの分散型ルーティングを与えるためのインテリジェント・ルータを含む。それぞれたった2つのパブリッシャ・マシン及びサブスクライバ・マシンが示されているが、ネットワーク120は、それより多いパブリッシャ・マシン及びサブスクライバ・マシンを含むよう規模を拡大することができる。パブリッシャ・マシン及びサブスクライバ・マシンは、それに限定されないが、以下の例、即ち、サーバ、パーソナル・コンピュータ、ノートブック・コンピュータ、携帯情報端末(PDA)、電話機、セルラ電話機、ページャ、又は他の装置のような任意のプロセッサ制御された装置を用いて実現されることができる。インテリジェント・ルータを備えるネットワーク120は、任意の有線又は無線の分散型ネットワーク、ワイヤ接続型装置、無線装置、又はそれら両方を含むことができる。ネットワーク120はまた、潜在的に既存又は従来のネットワーク・インフラストラクチャを用いることができる。
図6は、インテリジェント・ルータのためのチャネル・マネジャ150を図示する図である。この例においては、チャネル・マネジャ150は、複数のサーバ152、154及び156を用いて実現される。各サーバは、それ自身の局部記憶装置158、160及び162を含む。インテリジェント・ルータ164、166及び168は、特定のチャネルについての情報のためチャネル・マネジャと接触する。チャネル・マネジャはまた、データ持続性(datapersitence)、フェイルオーバー機能、又は他の機能を与えることができる。従って、チャネル・マネジャはチャネル・サービスを提供し、それは、例えば、チャネルと関連の情報、データ持続性についての特性、パブリッシャ及びサブスクライバに関するユーザ情報及びインフラストラクチャ情報を指定するデータベース又はデータベースの組をネットワーク内の任意の場所に含む。インフラストラクチャ情報は、例えば、インテリジェント・ルータの識別と、それらを接続する対応のトンネルと、チャネルに関する主題と、チャネルに関する属性(各属性についての名前及びタイプ)を含むことができる。パケット又はメッセージはまた、固定の属性及び可変の属性の識別を含むチャネルと関連の情報を搬送することができる。
ユーザは、オンラインのとき、チャネル情報をダウンロードすることができる。例えば、ユーザは、ユーザ名及びパスワードを用いることにより登録することができる。ユーザのログオンを認証すると、ユーザは、チャネルを開き(呼び出し)、そしてチャネルについての情報をチャネル・マネジャから検索することができる。パブリッシャは、その情報をコンテンツの発行において用いることができ、そしてサブスクライバは、その情報をサブスクリプションに入り且つ登録するため用いることができる。
各チャネル・マネジャ152、154及び156は、この例においては、各インテリジェント・ルータのための第1のものとして動作する。特に、各インテリジェント・ルータには、この例においては、2つのインターネット・プロトコル(IP)アドレスが与えられ、1つは主チャネル・マネジャ用であり、別のはバックアップ・チャネル・マネジャ用である。インテリジェント・ルータは、それらのIPアドレスを用いて、チャネル・マネジャに接触して、チャネル情報を検索する。主チャネル・マネジャが故障した場合、インテリジェント・ルータは、バックアップ・チャネル・マネジャに接触することができる。従って、チャネル・マネジャ152、154及び156は、それらを接続する線により示されるように、チャネル特性及び他の情報に関してデータを共有する。各チャネル・マネジャはまた指定されたバックアップを有し、それによりチャネル・マネジャが故障した場合別のチャネル・マネジャがそのため処理を引き継ぐことができる。ネットワーク内の装置は、例えば、指令を用いて、チャネル情報を検索することができ、その指令の例が表3に与えられている。インテリジェント・ルータは、代替として、主チャネル・マネジャのみ、又は3以上のチャネル・マネジャを有することができる。
図7は、ユーザ・マシン又は装置をインテリジェント・ルータを有するネットワークと接続するため当該ユーザ・マシン又は装置の中のスタック180内の例示的ソフトウエア構成要素の図である。ユーザ・マシンをパブリッシャ、サブスクライバ又はそれら両方として用いることができ、そしてユーザ・マシンは、上記で特定した例示的装置を含むことができる。スタック180は、1つ又はそれより多いユーザ・アプリケーション182を含むことができ、それらアプリケーション182は、サブスクリプションをユーザから受け取ること、又はチャネル情報をパブリッシャから受け取ること、あるいは発行されるべきコンテンツ又はデータを受け取ることを提供することができる。ユーザ・アプリケーション182はまた、ユーザ・マシン又は装置による実行のための任意の他のタイプのアプリケーションを含むことができる。
スタック180はまた、例えば、エージェント184、イベント・ライブラリ186、キャッシュ・ライブラリ188、チャネル・ライブラリ190、メッセージング・ライブラリ192、及びディスパッチャ・ライブラリ194を含むことができる。エージェント184は、ネットワーク接続又は他の機能を確立することを提供し、そして表3は、エージェント184により実行される指令の例を与え、その指令は、プロキシ指令又は他のタイプの指令を用いることができる。イベント・ライブラリ186は、ユーザ・マシンに関するイベント又は他のイベント又は情報をログする。キャッシュ・ライブラリ188は、データのローカル・キャッシングを与える。チャネル・ライブラリ190は、チャネルの識別及びそれらのための情報を格納する。ディスパッチャ・ライブラリ194は、制御経路196、チャネル・マネジャ198、及び1つ又はそれより多いインテリジェント・ルータ200との接続を与え、そしてそれは、表4で特定される例示的機能を含むことができる。メッセージング・ライブラリ192は、データ経路204との接続を与える。
表5から表9は、Cプログラミング言語でのメッセージングAPIの例を与える。表5及び表6は、APIがメッセージを送り且つ検索する例を与える。表7及び表8は、APIが通知を送り且つ検索する例を与える。表9は、APIが制御メッセージを送り且つ検索する例を与える。この記述におけるこれらのAPI及び他のAPI、プログラム、及びデータ構造は、特定の機能又は特徴を実現するための例としてのみ与えられており、そしてその実現には、任意のプログラミング言語での任意のタイプのAPI又は他のソフトウエア・エンティテイが含められることができる。
図8は、上記で特定されたインテリジェント・ルータ及び図4に示されるインテリジェント・ルータ92のようなインテリジェント・ルータのための例示的ソフトウエア構成要素210の図である。ソフトウエア構成要素210は、例えば、インテリジェント・ルータ92内のプロセッサ93による実行のためメモリ94に格納されることができる。ソフトウエア構成要素210は、例えば、フィルタリング・デーモン212、ディスパッチャ214、ルーティング・デーモン216、及びキャッシュ・マネジャ218を含む。フィルタリング・デーモン212は、以下で説明されるように、コンテンツを処理するためコンテンツ・ベースのルーティングのためフィルタリングを与えて、サブスクリプションのためのコンテンツをルーティング規則に従って処理する。ディスパッチャ214は、フィルタを経路220を介して伝搬させるため要求される制御メッセージのような制御メッセージの通信を与え、そして当該ディスパッチャ214はまた、ユーザのための単一のエントリ点と、チャネル・マネジャとの1個の安全なソケットとを与え、ネットワークの安全性を増強する。換言すると、ユーザは、この例においてはチャネル・マネジャに直接接触しないが、ユーザは代替実行形態においては接触し得る。ディスパッチャ214は、制御メッセージを用いて、属性(名前−値対)をチャネル・マネジャから獲得する。
ルーティング・デーモン216はデータ経路222との通信を与え、それは、図4に図示されている従来のバックボーン・ルータ又は他のルーティング装置を介して行われることができる。キャッシュ・マネジャ218は、対応のインテリジェント・ルータを含むネットワーク・ノードにおいてデータのローカル・キャッシングを与える。キャッシュ・マネジャ218の動作は更に以下で説明され、そしてそれは、ネットワーク・コア全体にわたりデータの分散されたキャッシングを与える。
コンテンツ・ベースのルーティングは、アプリケーション・レベルに対する代替として、カーネル・レベルで実行されることができる。カーネルによりアクセス可能であるメモリは、アプリケーション層におけるそれから分離している。アプリケーションでコンテンツ・ベースのルーティングの動作をさせるには、例えば、メッセージ・データがカーネル・メモリ・エリアからアプリケーション・エリアへコピーされること、及びアプリケーションのコンテキストをカーネルのそれからルーティング・アプリケーションのそれへ切り換えることが必要である。両方とも実質的なオーバヘッドを含むことができる。代わりにカーネルがコンテンツ・ベースのルーティングをサポートするため修正される場合、ルーティングは、前述したオーバヘッドが無い状態であれば極めて早く行われることができるであろう。
カーネルにおけるコンテンツ・ベースのルーティングのこの特徴により、ルーティング・デーモン216は、データをデータ経路222を介して、実行に依存して直接送り又は受け取り得るし、又はそうし得ない。デーモンは、アプリケーション層で動作するプロセスであり、カーネルの中に注入されるべきコンテンツ・ベースのルーティング・テーブルを事前計算する。しかしながら、一度注入されると、ルーティング・テーブルがカーネルにより用いられて、ルーティング判断を行うことができる。同様に、フィルタリング・デーモンは、フィルタリング・テーブルを事前計算し、そしてそれをカーネルの中に注入する。このカーネルの実行において、ルーティング・デーモンもフィルタリング・デーモンも直接データ経路と対話をしないであろう。
図9は、多分サブスクリプションに関するコンテンツを含むメッセージに関するパケット構造230の一例の図である。コンテンツ・ベースのルーティングに使用のためのパケット又はメッセージは、例えば、ヘッダ・セクション及びペイロード・セクションを含む。ヘッダ・セクションは、ルーティング又は他の情報を指定する。ペイロード・セクションは、データ又はコンテンツ、又はデータ又はコンテンツの指示を指定する。パケット構造230は、IPヘッダ232、ユーザ・データグラム・プロトコル(UDP)伝送制御プロトコル(TCP)ヘッダ234、長さ値238、1つ又はそれより多い主題フィールド240、及び1つ又はそれより多い属性242を含む。パケット構造230は、長さ値と主題及び属性とに関する基本構造を示す。コンテンツ・ベースのルーティングで用いられるパケットはまた、以下で説明される図18の例で図示される構成要素のような他の又は異なる構成要素を含むことができ、そしてコンテンツ・ベースのルーティングのためのパケットは、任意の要領で構成されることができる。また、属性は、例えば、メッセージの終わりに付けられた自由裁量の属性を含むことができる。これら自由裁量の属性は、例えば、チャネルに対して規定されたメッセージ・フォーマットを用いて必ずしも搬送されることができるものではないパブリッシャ(又は更にルータ)により追加されたアドホック(その場限りの)情報である。
パブリッシャ及びサブスクライバ方法論
図10は、チャネルを設定し且つコンテンツを発行するためパブリッシャにより使用される例示的パブリッシャ方法250のフロー・チャートである。パブリッシャ方法250は、例えば、パブリッシャ・マシン100内のプロセッサ114による実行のためのエージェント106を含むソフトウエア・モジュールで実行されることができる。パブリッシャ方法250において、パブリッシャ・マシン100内のエージェント106は、パブリッシャがチャネルに関して生成したプロキシを受け取る(ステップ252)。プロキシは、ネットワークとの通信を与える。エージェント106は、インターフェースを介してチャネルに関するメッセージ・フォーマットを決定し(ステップ253)、そしてそのフォーマット情報は、例えば、ネットワーク内のチャネル・マネジャ又は他のエンティテイから獲得されることができる。エージェント106は、受け取られたチャネル情報を用いてチャネルに関するプロキシを設定し(ステップ254)、それはチャネルに関する属性を受け取ること(ステップ256)、及びチャネルについての通知を生成すること(ステップ258)を含む。当該通知は、チャネルについてのコンテンツを「聴く」装置にコンテンツを与える。属性は、通知に関するパラメータ及び特性を定義する。
図10は、チャネルを設定し且つコンテンツを発行するためパブリッシャにより使用される例示的パブリッシャ方法250のフロー・チャートである。パブリッシャ方法250は、例えば、パブリッシャ・マシン100内のプロセッサ114による実行のためのエージェント106を含むソフトウエア・モジュールで実行されることができる。パブリッシャ方法250において、パブリッシャ・マシン100内のエージェント106は、パブリッシャがチャネルに関して生成したプロキシを受け取る(ステップ252)。プロキシは、ネットワークとの通信を与える。エージェント106は、インターフェースを介してチャネルに関するメッセージ・フォーマットを決定し(ステップ253)、そしてそのフォーマット情報は、例えば、ネットワーク内のチャネル・マネジャ又は他のエンティテイから獲得されることができる。エージェント106は、受け取られたチャネル情報を用いてチャネルに関するプロキシを設定し(ステップ254)、それはチャネルに関する属性を受け取ること(ステップ256)、及びチャネルについての通知を生成すること(ステップ258)を含む。当該通知は、チャネルについてのコンテンツを「聴く」装置にコンテンツを与える。属性は、通知に関するパラメータ及び特性を定義する。
エージェント106は、サブスクリプションを処理する際に使用のため、チャネルの識別子(ID)及びコンテンツ情報をネットワーク・コア内のインテリジェント・ルータ又は他の場所に送信する(ステップ260)。パブリッシャは、通知属性に適切な値をポピュレート(populate)し(ステップ261)、そしてパブリッシャは次いで、通知についてのコンテンツをチャネル属性に従って発行することができる(ステップ262)。この例におけるステップ260−262は、通知を発行することを達成し、それは、代替として、異なる又は追加のステップを特定の実行に依存して含むことができる。従って、この例において通知と関連した情報は、属性の順序付けされたシーケンスに仕切られ、当該属性のそれぞれは、名前、通知内の位置(1で開始)、タイプ及び値を有する。代替として、属性は、異なる特性を特定の実行に依存して有することができる。属性は、例えば、事前定義された属性、自由裁量の属性、又はそれら両方を含むことができる。
インテリジェント・ルータは、パケットの中のチャネルIDを用いて、対応のチャネルに関する属性を獲得することができ、それは、チャネルを介して送信されるパケットのための構造又はフォーマットを決定する。特に、各パケットは、例えば、チャネルIDと、パブリッシャID及び主題のような他のヘッダ情報とに関連したタグを含むことができる。タグを用いて、主題をメッセージ・フォーマット内の数字(number)とマッピングさせることができ、その一例が図18に示されている。小さい整数値、例えば、16ビット値を上記数字のため用いることができる。代替として、任意の他のタイプの数字又は情報を用いて、主題をマッピングすることができる。主題を数字にマッピングすることは、特定の利点を与え、例えば、それは、メッセージ内のスペースを節約し、そして一様な又は標準の方法を与えて、メッセージ内の主題の指示を指定し、それによりそれらは迅速に場所を特定され且つ識別されることができる。インテリジェント・ルータは、そのマッピングをローカルに格納し、又は代替として、数字を用いて、対応の主題を指令を介して遠隔で獲得することができる。
表10は、この例において、整数値を用いて、数字を主題にマッピングするための構造を説明する。表10の中の主題トリー・パラメータは、主題が1つ又はそれより多い主題フィールドを階層関係で含むことができることを示し、例えば、主題トリーは、特定のシンボルにより境界を定められた主題のストリングを含むことができる。主題トリーの例は表2に与えられている。一例として、主題トリー(subjecttree)「quotes.nyse(ニューヨーク証券取引所相場)」は、主題「quotes(相場)」及びサブフィールド「nyse(ニューヨーク証券取引所)」を含み、これら2つの用語は、URL又は他のネットワーク・アドレスに見られるように「.」により境界を定められている。ピリオッドを用い且つURL型のストリングを指定することの他に、主題トリーは、境界決定のための任意のキャラクタ及びシンボルを用いたいずれの方法で指定されることができる。
従って、特定のチャネルのためのパケット・フォーマット又は構造を知って、インテリジェント・ルータは、コンテンツ・ベースのルーティングのためパケットの中の主題及び属性又は他の情報の位置を迅速に特定することができる。例えば、チャネルは、当該チャネルを介して送信された主題及び属性のバイト位置を指定することができ、パケットの中のバイトを計数することによりそれらの位置を容易に特定する。代替として、インテリジェント・ルータは、パケットをパーズして、主題及び属性又は他の情報の位置を特定することができる。
表11は、C++プログラミング言語でのパブリッシャ・プログラムの一例を与える。表12は、チャネルを生成するAPIの一例を与える。表13は、チャネル・マネジャ(図6参照)により維持され、且つ図示のように、チャネルと関連した情報を与えるチャネル構成ファイルの一例を与える。システムは、代替として、処理負荷を分散するためローカル・チャネル・マネジャとして機能する地理的に分散したサーバのIPアドレスを与えるグローバル・チャネル・マネジャを有するこことができる。
(注釈文の訳:
#”PC_evn_Notification.h”を含む。
#”PC_evn_Proxy.h”を含む。)
#”PC_evn_Notification.h”を含む。
#”PC_evn_Proxy.h”を含む。)
(注釈文の訳:
/*第1の1つの主チャネル・マネジャ*/
/*第2のチャネル・マネジャ*/
/*rc=PC_chn_setAttributeType(hChannel, name, position,attributeType)を用いることによりメッセージ・タイプ(メッセージの固定部分のみ)を設定する。*/
/*チャネル生成を終了*/)
/*第1の1つの主チャネル・マネジャ*/
/*第2のチャネル・マネジャ*/
/*rc=PC_chn_setAttributeType(hChannel, name, position,attributeType)を用いることによりメッセージ・タイプ(メッセージの固定部分のみ)を設定する。*/
/*チャネル生成を終了*/)
(注釈文の訳:
#チャネル設定−チャネルAPIによるイベント及びメッセージングの読み出し。
#各チャネル・エントリ情報が情報のタイプのタグを付される。例えば、
#チャネル5通信と関連した情報のための[ChannelComm 5]
#チャネル5における主題と関連した情報のための[ChannelSubjects 5]
#チャネル5における属性情報のための[ChannelAttributes 5]
#
#チャネルIDは、当該情報が属するチャネルを指示するためタグに添付される。
#例えば、[ChannelComm 5]は、チャネル5に関するルーティング情報を指示する。
#
#全てのフィールドが設定される必要はない。例えば、中央サーバを用いて動作する場合、MulticastIPは必要でない。)
#チャネル設定−チャネルAPIによるイベント及びメッセージングの読み出し。
#各チャネル・エントリ情報が情報のタイプのタグを付される。例えば、
#チャネル5通信と関連した情報のための[ChannelComm 5]
#チャネル5における主題と関連した情報のための[ChannelSubjects 5]
#チャネル5における属性情報のための[ChannelAttributes 5]
#
#チャネルIDは、当該情報が属するチャネルを指示するためタグに添付される。
#例えば、[ChannelComm 5]は、チャネル5に関するルーティング情報を指示する。
#
#全てのフィールドが設定される必要はない。例えば、中央サーバを用いて動作する場合、MulticastIPは必要でない。)
図11は、サブスクリプションを検索し処理する際に用いるサブスクライバ方法264のフローチャートである。方法264は、例えば、サブスクライバ・マシン122内のプロセッサ134による実行のためのエージェント128を含むソフトウエア・モジュールで実行されることができる。方法264において、グラフィカル・ユーザ・インターフェース(GUI)は、例えば、使用可能なチャネルの指示をユーザに与え(ステップ266)、それは、アプリケーション126により達成されることができる。チャネルを識別する情報は、例えば、チャネルと関連した情報を与えるチャネル・マネジャから受信されることができる。いずれの特定の方法又はフォーマットでチャネルの識別を与えるため、任意のタイプのアプリケーション126を用いることができる。当該アプリケーションは、ユーザのチャネル選択を受信し(ステップ268)、そして当該選択されたチャネルのためAPI又は他のプログラムを呼び出す(ステップ270)。APIは、上記選択されたオプションと一致するチャネルに関するサブスクリプション・オプションをユーザに与える。APIは、サブスクリプションに関する値をユーザから受信し(ステップ274)、そして以下で説明されるように、処理のため当該サブスクリプションをエージェント128に送る(ステップ276)。
サブスクリプションに関するパラメータは、例えば、表1に図示されるように述部を含むことができる。各チャネルは、例えば、対応するチャネルについての特定の要件又はパラメータに従ってサブスクリプションを処理するため、それ自身のAPIを用いることができる。これらのAPIは、例えば、サブスクリプションを受信するためのウェブ・ベースの又はJava(登録商標)ベースのAPIを含むことができ、そしてサブスクリプションに関する情報を受信し且つそれをエージェント・アプリケーションに伝えるため任意のタイプのインターフェース及び処理を用いることができる。
図12は、チャネル及びサブスクライバ・スクリーン又はGUI278及び284を概念的に図示する図であり、それは、サブスクリプションを受信する方法264と組み合わせて用いることができる。スクリーン278は、ユーザによる選択のため使用可能なチャネルを識別する複数のセクション282を含む。特定のチャネルを選択すると、セクション286におけるサブスクリプションのためのユーザの値を受信するためのスクリーン284を表示することができる。ユーザは、サブスクリプションを送出するためセクション288を選択し、又はサブスクリプションを取り消すためセクション290を選択することができる。スクリーン278及び284は、例えば、ハイパテキスト・マークアップ言語(HTML)ウェブ・ページとして、又は任意の他のフォーマットでフォーマット化されることができる。また、スクリーンは、希望される場合、サブスクリプションのためのユーザ・フレンドリで視覚的に訴えるインターフェースを提供するため、例えば、テキスト、グラフィックス、画像、様々な色、又はマルチメディア情報を多分含む、セクション及びコンテンツの任意の構成を含むことができる。スクリーンはまた、例えば、従来のブラウザ機能を与えるツールバー280を含むことができる。
表14は、C++プログラミング言語でのサブスクライバ・プログラムの一例を与える。
(注釈文の訳:
#<unistd.h>を含む。
#<iostream>を含む。
#kc.jde”PC_evn_Filter.h”
#” PC_evn_Subscription.h”を含む。
#”PC_evn_Proxy.h”を含む。)
#<unistd.h>を含む。
#<iostream>を含む。
#kc.jde”PC_evn_Filter.h”
#” PC_evn_Subscription.h”を含む。
#”PC_evn_Proxy.h”を含む。)
ペイロード検査及びチャネルを介したコンテンツ・ベースのルーティング
図13は、ペイロード検査を介したコンテンツ・ベースのルーティング方法300のフローチャートである。方法300は、例えば、フィルタリング・デーモン212により表されるように、インテリジェント・ルータ92内のプロセッサ93による実行のためのソフトウエア・モジュールで実行されることができる。代替として、それは、ASIC、又はハードウエア及びソフトウエアの組み合わせで実行されることができる。方法300で図示されるようなコンテンツ・ベースのルーティングは、ネットワーク・コア、又はエッジ・ルータのようなネットワーク内の任意の場所においてインテリジェント・ルータで実行されることができる。
図13は、ペイロード検査を介したコンテンツ・ベースのルーティング方法300のフローチャートである。方法300は、例えば、フィルタリング・デーモン212により表されるように、インテリジェント・ルータ92内のプロセッサ93による実行のためのソフトウエア・モジュールで実行されることができる。代替として、それは、ASIC、又はハードウエア及びソフトウエアの組み合わせで実行されることができる。方法300で図示されるようなコンテンツ・ベースのルーティングは、ネットワーク・コア、又はエッジ・ルータのようなネットワーク内の任意の場所においてインテリジェント・ルータで実行されることができる。
一般的な意味において、コンテンツ・ベースのルーティングは、パケットを処理する手法を決定するためパケットのペイロード・セクションを検査することを含む。このコンテンツ・ベースのルーティング方法は、例えば、サブスクリプションのリストを(例えばフィルタを用いて)任意の順序で処理すること、ルーティング規則を用いてメッセージを主題毎に及び属性毎に比較して、メッセージのためのルーティングを決定すること、及び当該処理をネットワーク・コアにおいて実行することを含むことができる。当該規則は、ルータ内処理を支配する規則、又はファイルと関連した任意の規則を含むことができる。従って、これらのルーティング判断は、ネットワーク・コア全体にわたって分散されることができる。チャネルにより表されるような主題の使用は、メッセージ・フォーマットを決定し、従って、例えば特定のチャネルのためメッセージ又はパケット内のそれらのバイト位置を知ることにより属性の位置をメッセージ内で迅速に特定する方法をインテリジェント・ルータに与える。
方法300において、インテリジェント・ルータ92は、メッセージについてのパケットを受信する(ステップ302)。それは、パケットから、対応のメッセージに関するチャネルIDを決定し(ステップ304)、そしてそのチャネルIDを用いてチャネルに関する属性を検索する(ステップ306)。この例においては、チャネルのタイプ(チャネルIDから決定される。)は、パケット内での属性の位置を決定する。チャネルに関する属性は、チャネル・マネジャを介するように、ローカルに格納され、又は遠隔で検索されることができる。インテリジェント・ルータ92が、サブスクリプションと一致するフィルタを検索する(ステップ308)。フィルタは、1つ又はそれより多い属性試験、通常サブスクリプションに関する1群の属性を含む。インテリジェント・ルータ92は、パケット内の属性を、フィルタ記述(description)内の対応の1つ又は複数の属性試験に適用する(ステップ310)。
フィルタ記述における全ての属性試験は、当該属性が全ての属性試験を満足させることを意味する肯定的結果を生成する場合(ステップ312)、インテリジェント・ルータは、フィルタと関連した規則により規定された1組の機能を実行する(ステップ314)。これらの機能は、例えば、パケットを次のリンクにルーティングすること、及び/又は上記規則により規定されるようにローカル・ルータでパケットのコンテンツを用いたある動作又は計算を実行することを含むことができる。当該動作又は次のリンクは、例えば、対応のサブスクリプションを指定するデータ構造において識別されることができる。上記規則がリンクであるとき、それは、典型的には、次のネットワーク・ノードを識別してパケットを受信し、それは、インテリジェント・ルータ、バックボーン・ルータ、ネットワークに接続された装置、又は他のエンティティを含むことができる。代替として、次のリンクは、他の方法で指定される、又はサブスクリプションと関連付けられることができる。
フィルタ記述における全ての属性試験が肯定的結果を生成しない、即ち属性が全ての属性試験を満足させないことを意味する場合(ステップ312)、フィルタは、不整合と宣言される(ステップ315)。インテリジェント・ルータは、フィルタ記述における全ての属性試験が使い尽くされるか、又は最初の否定的結果に遭遇するかのうちのいずれかが先に来るまで、上記の手順に再帰的に追従する。
一度全ての属性試験がこのフィルタに対して処理されてしまうと、インテリジェント・ルータは、もっと多くのフィルタが存在するかどうかを決定し(ステップ316)、そして、そうである場合には、それは、ステップ308に戻って、次のフィルタに関する属性試験を検索して、その次のフィルタに関して当該属性を処理する。整合手順(ステップ308、310、312、314、315及び316)は、フィルタの全部の組が使い尽くされるか、又は全ての上記の動作又はルーティング規則に対する結果が決定されることができるかの何れかが最初に来るまで継続する。パケットがいずれのフィルタも満足させない場合、それは、落とされ(廃棄され)、そして送られないであろう。
インテリジェント・ルータ92は、任意の特定の順序でフィルタに対して順に行うことができる。例えば、表15に図示されるように、インテリジェント・ルータは、サブスクリプションのためのフィルタをファイル又はルーティング・テーブルの中に格納し、そしてそれらに対して直接的に順に行って、属性をフィルタに適用(属性試験)することができる。代替として、ルーティング・テーブルは、フィルタへのリンク又はポインタを含むことができる。
コンテンツ・ベースのルーティングは、随意に、例えば、トラフィック条件に基づくアルゴリズムの切り換えのような、アプリケーション及び性能を増強する発見的方法に依存して、2以上の方法を同時に使用することができる。処理のためのフィルタは、随意に、コンテンツ・ベースのルーティングのためペイロード・セクションの検査を実行する際に使用のためネットワーク内のルータで、暗号化され、暗号解読され、変換され、そして併合されることができる。例えば、価格>3.54122ドルのようなサブスクリプションが、価格>3.54ドルに切り捨てられ得る。それは、アプリケーション内の発行が、小数第2位より下の通貨属性を含まないことが知られているからである。また、外国通貨は、海外から送られた発行物が例えば米国に配置された最初のルータに到着するとき、同様に米国通貨に変換され得る。
線形アプローチの代替として、インテリジェント・ルータ92は、他の順序、又は多分処理の速度及び効率を増強させることができる様々なアルゴリズムに従って、処理のためのフィルタを選択することができる。表16は、サブスクリプション及びそれらのための対応のリンクの例を与える。これらの例においては、主題は、特定のチャネルと関連し、そして主題に関するサブスクリプションは、フィルタに関するルーティング規則により表されることができる。主題は、例えば、コンテンツのソースを識別するユニフォーム・リソース・ロケータ(URL)のようなネットワーク・アドレスを含むことができる。
ネットワーク・ノードでのキャッシング
図14はキャッシング方法320のフロー・チャートである。当該方法320は、例えば、キャッシュ・マネジャ218により表されるように、インテリジェント・ルータ92内のプロセッサ93による実行のためのソフトウエア・モジュールで実行されることができる。代替として、それは、対応のインテリジェント・ルータと同じ装置か又は異なる装置のいずれかにおいて、ASIC、又はハードウエア及びソフトウエアの組み合わせにおいて実行されることができる。方法320においては、インテリジェント・ルータ92は、データ又はコンテンツ、チャネルID及び主題を有するメッセージを受信する(ステップ322)。インテリジェント・ルータ92は、データをタイムマークし(ステップ324)、そしてそれを、メモリ94又は二次記憶装置97のようなものにローカルにキャッシュする(ステップ326)。それは、キャッシュされたデータを、例えば、チャネルID、主題、及びタイム・スタンプにより索引付けする(ステップ328)。
図14はキャッシング方法320のフロー・チャートである。当該方法320は、例えば、キャッシュ・マネジャ218により表されるように、インテリジェント・ルータ92内のプロセッサ93による実行のためのソフトウエア・モジュールで実行されることができる。代替として、それは、対応のインテリジェント・ルータと同じ装置か又は異なる装置のいずれかにおいて、ASIC、又はハードウエア及びソフトウエアの組み合わせにおいて実行されることができる。方法320においては、インテリジェント・ルータ92は、データ又はコンテンツ、チャネルID及び主題を有するメッセージを受信する(ステップ322)。インテリジェント・ルータ92は、データをタイムマークし(ステップ324)、そしてそれを、メモリ94又は二次記憶装置97のようなものにローカルにキャッシュする(ステップ326)。それは、キャッシュされたデータを、例えば、チャネルID、主題、及びタイム・スタンプにより索引付けする(ステップ328)。
インテリジェント・ルータ92がデータの要求を受信する場合(ステップ330)、それは、キャッシュされたデータを、インデックスを用いて、当該要求に従って検索する(ステップ332)。インテリジェント・ルータ92が、要求者又は他の者に最終的に送信するため、キャッシュされたデータをバックボーン・ルータ95又は他のルーティング・エンティテイに転送する。方法320は、データを連続的にキャッシュし且つ要求に応答してキャッシュ・データを検索するため繰り返し実行されることができる。
図15は、方法320と使用のためのキャッシュ・インデックス(336)を図示する図である。キャッシュ・インデックス(336)は、データ(338)を受信し、そしてそれにタイム・スタンプ(340)を付して格納する。データが収集されるにつれ、それは、Δtの持続時間毎にマークアップされる。なお、Δtは、マーク間の時間、例えばt2−t1を表す。いずれの方法でのタイム・マーキングするための他のタイプのインデックスを代替として用いることができる。
表17は、キャッシュ・データを索引付けすることを概念的に説明している。表18は、キャッシングのための接続履歴を格納するためのデータ構造を概念的に図示する。表19は、インテリジェント・ルータを有するネットワーク・ノードにおいてデータをローカルにキャッシングする際に使用のデータ構造の例を与える。
タイム・マーキングは、任意の固定又は可変の間隔で生じることが可能である。例えば、データは、5分毎にキャッシュされ且つ索引付けされる。指令を受信して、時間及び主題を指定するキャッシュされたデータを検索する(#.getCacheのようなもの)と、チャネル・マネジャ218は、キャッシュ・インデックスを用いて、それがステップ332の要求と一致するキャッシュされたデータを検索することができるかどうかを決定する。
各主題又はチャネルは、例えば、それ自身のIPアドレスをマルチキャスト・トリー及び1組のインテリジェント・ルータ内に含むことができる。従って、表18は、ユーザ・マシンにローカルに格納されることができるそのようなルータ間の接続履歴を表す。エッジ・ルータが故障の場合、当該マシンは、接続履歴にアクセスして、エッジ・ルータがオンラインに戻るときチャネルのためのアップストリーム・ルータと再接続する手法を決定することができる。それはまた、例えば、サブスクリプションのための任意の未決のコンテンツを獲得するため、それが接続を切られた持続時間の間キャッシュ獲得指令を実行することができる。
これらの例示的データ構造は、以下の情報を含む。主題ノードは、主題識別子、主題レベル、親チャネル又は主題ノードへのポインタ、それ自身のディレクトリのためのファイル記述子、その次のレベル主題ノードを含むハッシュ・テーブルへのポインタ、及びデータ・ノードへのポインタを含む。データ・ノードは、その主題親ノードへのポインタ、データ・ディレクトリのためのファイル記述子、各記憶装置に格納されるデータのためのデータ構造を含むサーキュラー・バッファ、当該バッファのヘッド及びテール、及びデータ・ノードを検索及び格納中にロックするための錠(ロック)を含む。格納された時間粒ノード(storedtime grain node)は、実際のデータ・ファイルを表すノードであり、そして最後の時間粒ノードは、未だ記憶装置に格納されていないがしかしメモリに維持されている最後のバッファを表す。この例におけるキャッシング及びデータ格納スレッドは、最後の時間粒ノードへの同時発生アクセスを防ぐため最後の時間粒ノードのミューテック(mutex)を使用する。
エージェント処理
図16は、送出サブスクリプション・メッセージのためのエージェント方法350のフローチャートである。エージェント方法350は、例えば、ユーザ(サブスクライバ)・マシン122内のプロセッサ134による実行のためのエージェント128により表されるようにソフトウエア・モジュールで実行されることができる。エージェント方法350においては、エージェント128は、図11及び図12において前述した方法のような方法を介してサブスクリプションを受信する(ステップ352)。エージェント128は、サブスクリプションに関するブール代数表現を指定するストリングを生成し(ステップ354)、そして当該ストリングをパーズして、サブスクリプションの中のエラーを検出する(ステップ356)。エラーが存在する場合、エージェント128は、ユーザがエラーを訂正し且つサブスクリプションを再び入れるためエラー・メッセージをユーザに与えることができる(ステップ360)。サブスクリプションがエラーを含まない場合(ステップ358)、エージェント128は、上記表現をデータ構造体の中に格納し(ステップ362)、その一例が以下で与えられる。エージェント128は、データ構造体の中の構成要素の不同等表現(constituentnot−equal expressions)を肯定的形式に変換し(ステップ364)、そして当該データ構造を対応の論理和標準形(DNF)構造に変換する(ステップ366)。エージェント128はまた、レンジ・フィルタ及びメンバーシップ試験のみを含むようDNF構造のAND表現を単純化する(ステップ368)。
図16は、送出サブスクリプション・メッセージのためのエージェント方法350のフローチャートである。エージェント方法350は、例えば、ユーザ(サブスクライバ)・マシン122内のプロセッサ134による実行のためのエージェント128により表されるようにソフトウエア・モジュールで実行されることができる。エージェント方法350においては、エージェント128は、図11及び図12において前述した方法のような方法を介してサブスクリプションを受信する(ステップ352)。エージェント128は、サブスクリプションに関するブール代数表現を指定するストリングを生成し(ステップ354)、そして当該ストリングをパーズして、サブスクリプションの中のエラーを検出する(ステップ356)。エラーが存在する場合、エージェント128は、ユーザがエラーを訂正し且つサブスクリプションを再び入れるためエラー・メッセージをユーザに与えることができる(ステップ360)。サブスクリプションがエラーを含まない場合(ステップ358)、エージェント128は、上記表現をデータ構造体の中に格納し(ステップ362)、その一例が以下で与えられる。エージェント128は、データ構造体の中の構成要素の不同等表現(constituentnot−equal expressions)を肯定的形式に変換し(ステップ364)、そして当該データ構造を対応の論理和標準形(DNF)構造に変換する(ステップ366)。エージェント128はまた、レンジ・フィルタ及びメンバーシップ試験のみを含むようDNF構造のAND表現を単純化する(ステップ368)。
DNFは周知の正規化形式であり、その正規化形式においては、ブール代数表現は、論理和(disjunct)と呼ばれる1つ又はそれより多い副表現のORとして表され、各副表現は、1つ又はそれより多い属性試験のANDである。例えば、ブール代数表現(価格≧10AND (シンボル=“LU” OR シンボル=“T”))は、((価格≧10 AND (シンボル=“LU”) OR (価格≧10 AND シンボル=“T”))の等価DNF表現を有する。
ステップ364における変換は、「不同等(not−equal)」オペレータ(例示的シンタクス(構文)で!=と表される。)を有する表現を、1個の許可されない値よりむしろ全ての許可される値を指定する等価な「肯定的」形式に変換することを含む。この変換は、DNFの生成前に実行され、そしてそれは、この例におけるルータが肯定的形式であるべき公式を要求するので、必要である。例えば、表現(価格!=80)は、等価な肯定的表現(価格≦79OR 価格≧81)に変換されることができる。
ステップ368における変換は、DNFが生成された後で実行され、そしてその結果生じるAND表現の余分の単純化を含み、そしてそれはまた、この例におけるルータの作業を単純化するため実行される。特に、同じ属性に関する複数の属性試験のANDは、1つの下限、1つの上限、下限と上限の両方、及び相等性試験の場合の単一の値のうちのいずれかを有する正規化の「レンジ・フィルタ」に単純化されることができる。従って、特定の種類のレンジ・フィルタが、表22に従って符号化される。
例えば、表現(価格≧10 AND 価格≦80AND 価格≧20 AND価格≦100)は、表現(価格≧20 AND 価格≦80)に単純化されることができ、それは、下限及び上限の両方を備えるレンジ・フィルタの一例である。単純化後の他の種類の例は、次のもの、即ち、(価格≧20)(下限のみ);(価格≦80)(上限のみ);(価格=50)(単一値)である。これらのレンジ・フィルタを生成する際に、一部の副表現が真に又は偽に単純化することが可能であり、その場合副表現は、ブール代数の法則に従って排除されることができ、それにより更に、メッセージ内の表現を符号化することを最適化する。例えば、表現(価格≧50AND 価格≦20)は、「価格」に対するいずれの値も上記表現を満足させることができないので、偽に単純化する。フィルタ表現の全体が偽に単純化する特別の場合は、エージェントは、メッセージを全く生成する必要がなく、それによりルータから不必要な作業を免じる。
主題フィルタがワイルドカードを含む場合、エージェント128は、随意にそれらを以下で説明するように変換することができる(ステップ370)。その他の場合、いずれのワイルドカードも、ユーザ・マシン又は他の装置よりむしろネットワーク内で変換されることができる。この例示的実施形態においては、主題フィルタのためのシンタクスは、ワイルドカードを用いる唯一のシンタクスであり、そして属性フィルタのためのシンタクスは、ブール代数表現を用いる唯一のシンタクスである。代替として、実行は、主題フィルタ及び属性フィルタのための異なる又は様々なタイプのシンタクスを用いることができる。
エージェント128は、その結果生じたDNF表現をメッセージの中に符号化し(ステップ372)、そして当該メッセージをインテリジェント・ルータに転送する(ステップ374)。上記符号化は、サブスクリプションを平坦なメッセージ・フォーマットに変換することを含み、それは、その平坦なメッセージ・フォーマットがデータのストリングを構成することを意味する。この変換は、サブスクリプションのための主題フィルタ及び属性フィルタから発生されたルーティング規則をネットワーク内の1つ又はそれより多いインテリジェント・ルータ又は他のルーティング・エンティティに伝搬させることを含むことができる。その伝搬のため、サブスクリプション表現は、例えば、従来のパケット構造にマッピングされることができる。
ステップ372に関する符号化は、チャネルのサブスクリプションを、チャネル全体にわたり伝搬させるためメッセージAPIのメッセージング・フォーマットにマーシャリング(marshalling)することを含む。サブスクリプションは、例えば、主題#.SUBSCRIPTIONを備える通知として内部でメッセージされる。可変数個の主題フィルタ・フィールド及び可変数個の属性試験の両方が存在するので、この例においては、1対のバイトを用いて、その可変数個の主題フィルタ・フィールドを格納し、そして別の1対のバイトを用いて、その可変数個の属性試験を格納する。主題フィルタの個々のフィールドは、例えば、それらが元のサブスクリプションにおいて指定された順序で順次マーシャリングされ、そして各々メッセージの2バイト部分にマーシャリングされる。ワイルドカード・フィールドは、以下で説明するようにマーシャリングされることができる。
属性試験をマーシャリングする際に、当該属性試験のオペランドは、通知の属性値のマーシャリングに似た要領で、メッセージの終わりでマーシャリングされる。属性試験及びオペランドをマーシャリングする前に、それらは、DNFの各論理和内の属性順で、位置の順に事前定義された属性について試験を用いてソートされ、その試験には名前順の自由裁量の属性についての試験が続く。更に、各論理和内のスカラー値化された属性についてのリレーショナル試験の組が、正規化形式に、1つの限界(左オープン範囲又は右オープン範囲、又は相等性試験に対して)、及び2つの限界(別個の限界間の閉じた範囲に対して)のうちのいずれかを有するレンジ・フィルタとして単純化される。上記試験についての残りの情報は、例えば、オペランドと同じ順序で2バイト対の中に符号化され、この2バイト対のシークエンスは、主題フィルタ・フィールドの2バイト符号化のシークエンスに直ぐ続くメッセージの中に置かれる。当該2バイト対は、属性試験のビット・ストリング符号化のシークエンスの1つの形式を構成することができ、またそれは用いて、2バイト対とは別の他のタイプの符号化を表すことができる。属性試験の例が以下に与えられる。
属性試験の符号化のためのスキーマが表20に示されている。表21は2バイト対のための符号化を示し、そして表22は2バイト対の中のオペレータIDの符号化を示す。
試験のための2バイト対が既に当該試験のオペランドのタイプと、当該試験が事前定義された又は自由裁量の属性に適用されるか否かとの両方を指示するので、自由裁量の属性又はそれらのタイプについて実行される試験の数を別々にマーシャリングする必要性が無い。このスキームは、通知内に127個以下の個数の事前定義された属性があることを保証する。代替として、この設計は、より多くのビットを用いて、属性試験を符号化し得る。
このマーシャリング規約が属性フィルタのDNFに従って属性試験を順序付け且つグループに分ける一方、インフラストラクチャ構成要素(例えば、ルータのようなもの)は、属性フィルタの全体評価をより効率的にするため、上記試験をある他の順序で(多分、異なる試験の成功又は失敗の確率について動的に導出されたローカル・データに従って)評価することを選定し得る。メッセージのサブスクリプションIDフィールドは、後続の要求においてエージェントのエッジ・ルータに対して当該サブスクリプションを一義的に識別して当該サブスクリプションを修正又はその登録を取り消す(unsubscribe)当該エージェントにより発生された値である。特に、サブスクリプションの属性フィルタに対する動的修正は、主題が#.RESUBSCRIPTIONであり且つサブスクリプションIDが修正されつつある以前登録されたサブスクリプションのそれであることを除いて、図18の例で示されるメッセージ・フォーマットを用いて、伝搬される。そして、サブスクリプション登録の取り消しは、例えば、サブスクリプションIDフィールドを通して、図18のメッセージ・フォーマットを用いて伝搬され、主題が#.RESUBSCRIPTIONであり且つサブスクリプションIDがサブスクリプション登録の取消をされつつある以前登録されたサブスクリプションのそれである。
次ぎのことは、前述したようにエージェントによる変換及び符号化を説明するための例を与える。次の例示的属性フィルタ表現、即ち、価格≧10AND (シンボル=“LU” OR (ボリューム≧1000 ANDボリューム≦10000))を考えてみる。図19は、上記表現を格納するため、ステップ362においてエージェントにより用いられたオブジェクトを図示する統一モデリング言語(UML)図390を提供する。この図は、サブスクリプションを指定するための階層関係を図示し、それは、変数、定数値、又はそれら両方を含むことができる。図におけるオブジェクトは、特定の実行に依存したフィルタ・クラスのインスタンスであることができる。各SimpleFilterオブジェクト(単純フィルタ・オブジェクト)は、フィルタ表現の対応の属性試験についての情報を格納するため用いられる属性値を表す。図19の表現において、OrFilter(ORフィルタ)396は、2つのAndFilter(ANDフィルタ)392と400とを接続する。ANDフィルタ392は、サブスクリプションに関する属性を備えるSimpleFilter(単純フィルタ)394を含む。同様に、OrFilter(ORフィルタ)396はSimpleFilter(単純フィルタ)398を含み、そしてAndFilter(ANDフィルタ)400はSimpleFilter(単純フィルタ)402及び404を含む。
この例のために、属性価格、シンボル及びボリュームを、関連のチャネルの事前定義された属性であると仮定し、そして位置0、1及び2のそれぞれにおいて定義されると仮定する。更に、属性のタイプを、符号無しの整数(タイプコード(typecode)6)、キャラクタ・アレイ(タイプコード12)、及び符号無しの整数(タイプコード6)のそれぞれであると仮定する。
次ぎに、上記の例示的属性フィルタ表現をその属性フィルタとして含むサブスクリプションを考えてみる。図18は、サブスクリプションをメッセージの中にマーシャリングすることを与える。図18の左側の図表386は実際のメッセージ・コンテンツを示し、一方右側の図表388はメッセージの異なる構成要素(パーツ)のための凡例を与える。この例における各図表の幅は4バイトである。マーシャリングする前に、フィルタは、その等価なDNF、即ち、(価格≧10AND シンボル=“LU”) OR (価格≧10 AND ボリューム≧1000 AND ボリューム≦10000)に変換され済みである。
16ビット属性試験符号化がビット・シークエンスとして示され、間隙は、異なるパーツの中への分離を示す。この例における価格についての2つの試験は、それらが別々の論理和であるので組み合わされることができなく、従ってそれらは、右限界を持たない範囲(「右オープン範囲」)として別々にマーシャリングされることに留意されたい。他方、ボリュームについての2つの試験は、それらが同じ論理和にあるので組み合わされることができ、従ってそれらは一緒に、単一の「閉じた範囲」試験として一緒にマーシャリングされる。
最後に、また、ある一定のフィールドが、「仮定されている」として特徴付けられており、これは、これらのフィールドのための値がこの例のため任意に選定され、そしてマーシャリングされたサブスクリプションから一般的に独立していることを意味することに留意されたい。その上、サブスクリプションのための主題フィルタは、「>」であるよう任意に選定され、それは、関連のチャネルにより定義されたいずれの主題と整合する。前述しそして図18及び図19に示される例は、例証の目的のみのため与えられ、そしてマーシャリングは、任意の他のタイプのサブスクリプションと共に用いることができる。また、方法350は、単にサブスクリプションをマーシャリングする一例を与え、そしてそれらは、任意の他の方法でマーシャリングされることができる。
図17は、到来メッセージのためのエージェント方法376のフロー・チャートである。エージェント方法376は、例えば、ユーザ・マシン122内のエージェント128及びアプリケーション126により実行されることができる。エージェント方法376においては、エージェント128は、サブスクリプションと一致するメッセージをインテリジェント・ルータから受信する(ステップ378)。エージェント128は、例えば、メッセージ内のチャネルIDによりサブスクリプションと一致するチャネルを決定し(ステップ380)、そして当該チャネルのためのAPIを呼び出す(ステップ382)。APIは、ユーザ・マシンでのGUI又は他のフォーマットにおけるサブスクリプションに関するデータを与える(ステップ384)。到来メッセージの処理は、前述した符号化プロセスとは逆にデータを復号するプロセスを用いることができ、そしてこの復号(逆符号化)は、ルータ又は他のネットワーク・エンティテイで実行されることができる。
ワイルドカード処理
図20は、ワイルドカード方法410のフロー・チャートである。この方法は、フィルタのための1組のルーティング規則を用いて、サブスクリプションに関する表現の中のワイルドカードを変換する一例を例証する。方法410は、例えば、ユーザ・マシン122内のプロセッサ134による実行のためのエージェント128により表されるようにソフトウエア・モジュールで実行されることができる。代替として、ワイルドカードは、ネットワークにおいてプロセッサ93により、インテリジェント・ルータ92内のソフトウエア制御下で、又はASIC91に含まれる対応の機能で処理されることができる。ワイルドカードは、オープン・フィールド又は可変長フィールドを含み、それらの例が、表21に与えられている。
図20は、ワイルドカード方法410のフロー・チャートである。この方法は、フィルタのための1組のルーティング規則を用いて、サブスクリプションに関する表現の中のワイルドカードを変換する一例を例証する。方法410は、例えば、ユーザ・マシン122内のプロセッサ134による実行のためのエージェント128により表されるようにソフトウエア・モジュールで実行されることができる。代替として、ワイルドカードは、ネットワークにおいてプロセッサ93により、インテリジェント・ルータ92内のソフトウエア制御下で、又はASIC91に含まれる対応の機能で処理されることができる。ワイルドカードは、オープン・フィールド又は可変長フィールドを含み、それらの例が、表21に与えられている。
方法410においては、エージェント128又は他のエンティテイは、ワイルドカードを有するサブスクリプションを受信する(ステップ412)。サブスクリプションのための主題長(subjectlength)は、コンテンツを発行するときパブリッシャにより指定されることができ、そして主題(subject)は、例えば、パブリッシャ・マシン上で事前処理されて、主題のフィールドを計数し、従ってその主題のフィールドに関するフィールド計数(長さ)を獲得することができる。エージェント128は、フィルタ・オペランドの中のフィールド数を計数し(ステップ414)、そしてフィールド長=Nの新しい規則(フィルタ)を初期化する(ステップ416)。エージェント128は、サブスクリプションのサブフィールドを検索し(ステップ418)、そしてフィルタ・オペランド・サブフィールドO[i]がワイルドカードであるか否かを決定する(ステップ420)。フィルタ・オペランド・サブフィールドがワイルドカードでない場合、エージェント128は、論理積節(conjunctiveclause)を規則、フィールド[i]=O[i]に加える(ステップ422)。フィルタ・オペランドがより多くのサブフィールドを有する場合(ステップ424)、エージェント128は、ステップ418に戻って、追加のサブフィールドを処理する。パラメータ「i」はフィールド値を表し、ここで、iは、この例においてはフィールド数を表す整数である。
サブフィールドを処理した後で、エージェント128は、最後のオペランド・サブフィールドが「>」であるか否かを決定し(ステップ426)、そしてそうである場合、それは、長さ制約をフィールド長>N−1に変える(ステップ428)。ワイルドカード処理は、任意のタイプのシンボルを用いることができ、そして「>」はそのようなほんの一例である。この例においては、「a.>」は、a.b、a.c、a.d等、及び(例えば、a.b.x、a.c.x、a.b.x.y等に関して)全てのレベルでの全てのそれらの副主題を意味することができる。他のシンボルが、ワイルドカードの他の実行のため用いられることができる。
必要ならば、エージェント128は、変換された規則を、ネットワーク内のインテリジェント・ルータ又は他のエンティテイへ伝搬させる(ステップ430)。従って、上記方法は、サブフィールドを処理してワイルドカードを非ワイルドカード規則(ワイルドカードを含まない規則を意味する。)に変換するため、当該サブフィールドを通して反復する。ワイルドカードの変換は、ネットワーク内の任意の場所で、例えば、サブスクライバ・マシン上又はインテリジェント・ルータの中で生じることができる。従って、当該変換は、1個のエンティテイにおいて、他のエンティテイへ伝搬された変換済みの規則を用いて生じることができ、又はそれは動的に生じることができる。
表23は、複数の例と共に、ワイルドカードを処理するためこれらの例示的ルーティング規則の要約を与える。これらのルーティング規則は、例えば、インテリジェント・ルータの中で発生され、又は他のネットワーク・エンティテイ内で発生され且つインテリジェント・ルータに伝搬されることができる。その上、表23内のルーティング規則は、例証的目的のみのため与えられ、そして他のルーティング規則が、ワイルドカードを変換するため可能である。
本発明の一局面においては、ネットワークにおいてパケットをルーティングする方法は、ルーティング情報を指定するヘッダ・セクションと、データ又はコンテンツ又は当該データ又はコンテンツの指示を指定するペイロード・セクションとを有するパケットを受信するステップと、パケットのペイロード・セクションをネットワーク・コアにおいて検査して、前記ペイロード・セクション内の情報がネットワーク宛先、又はルータ内処理を支配する規則に対応するブール代数値化された述部に一致するかどうかを決定するステップと、前記検査に基づいて前記パケットを選択的にルーティングするステップとを備える。本方法は、前記ネットワーク・コア内のルータで前記検査するステップを実行するステップを更に含み得る。前記検査するステップが、フィルタを前記ペイロード・セクション内の情報に適用するステップを含み得る。本方法は、前記検査するステップを実行する際に使用するため前記フィルタを前記ネットワーク内のルータに伝搬させるステップを更に含み得る。本方法は、前記受信するステップ、前記検査するステップ及び前記処理するステップを実行するためルータを前記ネットワークにおいてプログラミングするステップを更に含み得る。前記検査するステップが、パケットをルーティングする手法を決定する際に使用するため属性を検査するステップを含み得る。
本発明の別の局面においては、パブリッシャとしてのサーバとサブスクライバとしての1又はそれより多い端末装置を含み、ネットワークに情報を前記パブリッシャから前記サブスクライバに押し込ませるパブリッシュ/サブスクライブ型ネットワークにおいて述部を送信する方法は、サブスクリプションと関連するブール代数値化された述部を含む表現を受信するステップと、前記表現を、コンテンツ・ベースのルーティングをする際に使用するため前記ネットワークにおける送信のためのメッセージに符号化するステップと、コンテンツ・ベースのルーティングを前記サブスクリプションに与えるためネットワーク・コア内の少なくとも1つのルータに前記メッセージを送信するステップとを備える。前記符号化するステップが、前記表現を平坦なメッセージ・フォーマットに変換するステップを含み得る。前記受信するステップが、前記述部に関して論理積、論理和又は否定の項を受信するステップを含み得る。前記符号化するステップが、前記表現を対応の論理和標準形に変換するステップを含み得る。前記符号化するステップが、前記論理和標準形を、属性試験のビット・ストリング符号化の対応シークエンスに変換するステップを含み得る。前記符号化するステップが、前記表現内の不同等パラメータを肯定的形式に変換するステップを含み得る。前記符号化するステップが、レンジ・フィルタ及びメンバーシップ試験を含むようAND表現を論理和標準形に単純化するステップを含み得る。本方法は、前記サブスクリプションを受信するステップと、前記表現を前記サブスクリプションから生成するステップとを更に含み得る。本方法は、前記サブスクリプションの中の間違いを検出するため前記表現をパーズするステップを更に含み得る。本方法は、前記表現をデータ構造体に格納するステップを更に含み得る。
本発明の一局面においては、パブリッシャとしてのサーバとサブスクライバとしての1又はそれより多い端末装置を含み、ネットワークに情報を前記パブリッシャから前記サブスクライバに押し込ませるパブリッシュ/サブスクライブ型ネットワークにおいてパケット及びサブスクリプションを処理する装置は、上記の方法のうちのいずれかを実行する1つ又はそれより多いモジュールを備える。
本発明が、例示的実施形態と関連して説明されたが、多くの変更が当業者にとって容易に明らかであり、そして本出願が、本発明の任意の適応又は変形に及ぶことを意図している。例えば、様々なタイプのパブリッシャ・マシン、ユーザ又はサブスクライバ・マシン、チャネル、及びそれらの構成、及びコンテンツ・ベースのルーティングのハードウエア及びソフトウエア実行、及び他の機能が、本発明の範囲から離れること無しに用いられ得る。本発明は、特許請求の範囲及びその均等物によってのみ限定されるべきである。
58、59、60 インターネット・サービス・プロバイダ(ISP)・ネットワーク
61−70 インテリジェント・ルータ
73−85 リンク
61−70 インテリジェント・ルータ
73−85 リンク
Claims (39)
- パブリッシャとしてのサーバとサブスクライバとしての1又はそれより多い端末装置を含み、ネットワークに情報を前記パブリッシャから前記サブスクライバに押し込ませるパブリッシュ/サブスクライブ型ネットワークに関するサブスクリプションを格納する方法であって、
構造を指定して、サブスクリプションを前記ネットワークに格納するステップと、
前記構造を複数の副表現に分割するステップと、
前記副表現を用いて、特定のサブスクリプションを集約的に指定するステップと、
特定のサブスクリプションに関して、ブール代数値化された述部を前記副表現のうちの少なくとも1つと関連付けるステップであって、前記ブール代数値化された述部が、コンテンツ・ベースのルーティングを前記サブスクリプションに与えるため前記特定のサブスクリプションに関する通知要素の指示を与える、前記関連付けるステップと
を備える方法。 - 前記の副表現を用いるステップが、1個の特定の副表現を複数のサブスクリプションで用いるステップを含む請求項1記載の方法。
- 前記関連付けるステップが、前記特定のサブスクリプションに関して、論理積、論理和又は否定の述部を前記副表現と関連付けるステップを含む請求項1記載の方法。
- 前記特定のサブスクリプションについて前記副表現のうちの少なくとも1つに関する一定値を指定するステップを更に含む請求項1記載の方法。
- 前記特定のサブスクリプションに関する複数の通知要素間の関係を指定するステップを更に含む請求項1記載の方法。
- 前記指定するステップが、前記副表現を指定するための複数のレベルを有する階層構造を指定するステップを含む請求項1記載の方法。
- 前記分割するステップが、前記副表現を用いて、前記サブスクリプションを論理和標準形で格納するステップを含む請求項1記載の方法。
- 前記分割するステップが、前記サブスクリプションの中の不同等パラメータを前記副表現の中の肯定的形式に変換するステップを含む請求項1記載の方法。
- 前記分割するステップが、レンジ・フィルタ及びメンバーシップ試験を前記副表現の中に含むようAND表現を論理和標準形に単純化するステップを含む請求項7記載の方法。
- 前記サブスクリプションを受信するステップと、
前記副表現を前記サブスクリプションから生成するステップと
を更に含む請求項1記載の方法。 - 前記サブスクリプションの中の間違いを検出するため前記副表現をパーズするステップを更に含む請求項1記載の方法。
- ネットワークにおいてメッセージを処理する方法であって、
ヘッダ・セクション、少なくとも1つの主題及び少なくとも1つの属性を有するメッセージを受信するステップと、
前記メッセージから主題及び属性を検索するステップと、
サブスクリプションを前記主題に基づいて検索するステップと、
前記メッセージをルーティングする手法を決定するためネットワーク・コアにおいて前記属性を前記サブスクリプションに適用するステップと
を備える方法。 - 前記サブスクリプションを検索するステップが、前記サブスクリプションと一致するフィルタを検索するステップを含む請求項12記載の方法。
- 前記属性が前記サブスクリプションを満足させる場合前記メッセージをルーティングするステップを更に含む請求項12記載の方法。
- 前記属性がいずれか又は全てのサブスクリプションを満足させない場合前記メッセージを廃棄するステップを更に含む請求項12記載の方法。
- 複数のサブスクリプションと一致する複数のフィルタを検索するステップと、
複数のメッセージから複数の属性を検索するステップと、
属性のそれぞれをフィルタのそれぞれに適用して、対応のサブスクリプションのうちのいずれかが満足されるかどうかを決定するステップと、
前記サブスクリプションのうちのいずれかが満足されるか否かに基づいて前記メッセージを選択的にルーティングするステップと
を更に備える請求項12記載の方法。 - 前記適用するステップを前記ネットワーク・コア内のルータで実行するステップを更に含む請求項12記載の方法。
- コンテンツ・ベースのルーティングを容易にするようチャネルを構成する方法であって、
前記チャネルを介して発行されるべきコンテンツに基づいて前記チャネルを設定し、前記チャネルに関するメッセージ・フォーマットを決定し、前記チャネルに関するプロキシを設定し、通知を前記メッセージ・フォーマットに基づいて生成し、及び前記通知を発行することにより、パブリッシャとしてのサーバとサブスクライバとしての1又はそれより多い端末装置を含むパブリッシュ/サブスクライブ型ネットワークであってネットワークに情報を前記パブリッシャから前記サブスクライバに押し込ませるパブリッシュ/サブスクライブ型ネットワーク内の複数のノード間に論理通信経路を与えるチャネルを確立するステップと、
前記通信経路にわたって情報のコンテンツ・ベースのルーティングをする際に使用するため前記チャネルを構成するステップと
を備える方法。 - 主題を前記メッセージ・フォーマットにおける数字にマッピングするステップを更に含み、
前記主題が、前記チャネルを介して発行されるべきコンテンツと一致する
請求項18記載の方法。 - 前記構成するステップが、パケットをフィルタリングするのを実行するためのチャネルをサブスクリプションに基づいて構成するステップを含む請求項18記載の方法。
- 前記確立するステップが、前記ネットワーク内の複数のルータの間に前記チャネルを分散させるステップを含む請求項18記載の方法。
- 前記チャネルを介して発行されたコンテンツに関するサブスクリプションをユーザから受信するステップを更に含む請求項18記載の方法。
- 前記サブスクリプションを受信するステップが、
前記チャネルの選択を受信するステップと、
前記チャネルについてのユーザのサブスクリプションに関するパラメータを受信するステップと
を含む請求項22記載の方法。 - ユーザのサブスクリプションを前記チャネルを介してネットワーク・コア内のルータに伝搬させるステップを更に含む請求項22記載の方法。
- コンテンツを前記チャネルを介して受信するステップと、
前記コンテンツを前記ネットワーク内ルータでローカルにキャッシュするステップと、
前記のキャッシュされたコンテンツをタイム・マーキングするステップと
を更に含む請求項18記載の方法。 - 前記のキャッシュされたコンテンツを、前記チャネルの識別、前記チャネルと一致する主題の識別、及び前記タイム・マーキングにより索引付けするステップを更に含む請求項25記載の方法。
- 前記ルータで、前記のキャッシュされたコンテンツと関連する要求を受信するステップと、
前記のキャッシュされたコンテンツの少なくとも一部を前記要求及び前記タイム・マーキングに基づいて検索し且つ送信するステップと
を更に備える請求項25記載の方法。 - コンテンツ・ベースのルーティングを容易にするようチャネルを構成する方法であって、
ネットワーク内のルータ間に論理接続を確立するステップと、
前記論理接続を、少なくとも1つの主題と関連するコンテンツの送信のためのチャネルとして構成するステップと、
前記チャネルを介したコンテンツ・ベースのルーティングをする際に使用するため属性を与えるステップと
を備える方法。 - 前記チャネル及び属性の識別を前記ネットワーク内ルータに送信するステップを更に含む請求項28記載の方法。
- パケットをネットワークにおいてルーティングする方法であって、
ヘッダ・セクション及びペイロード・セクションを有するパケットを受信するステップと、
ワイルドカードを有するサブスクリプションの中のフィールドの大きさを制約するルーティング規則を用いることにより、前記パケットをルーティングする手法を決定する際に使用するための前記パケットのペイロード・セクションを検査するステップと、
前記パケットを前記の検査に基づいて選択的にルーティングするステップと
を備える方法。 - 前記検査するステップをネットワーク・コア内のルータで実行するステップを更に含む請求項30記載の方法。
- 前記検査するステップが、フィルタから発生されたルーティング規則を用いるステップを含む請求項30記載の方法。
- 前記検査するステップが、
前記ペイロード・セクション内のフィルタ・オペランドの中のフィールド数を計数するステップと、
前記フィルタ・オペランドについてのフィールド長規則を前記フィルタ・オペランドに関するフィールド数に基づいて発生するステップと、
前記フィルタ・オペランドのサブフィールドを通じて繰り返し、且つワイルドカードを含むサブフィールドを検出すると、当該サブフィールドを前記フィールド長規則に基づいて変換するステップと
を含む請求項32記載の方法。 - 前記検査するステップが、前記ペイロード・セクションの中のサブフィールドの大きさを制約するフィルタリング規則を用いるステップを含む請求項33記載の方法。
- メッセージをネットワークにおいてルーティングする方法であって、
ヘッダ・セクション、少なくとも1つの主題及び少なくとも1つの属性を有するメッセージを受信するステップと、
前記主題及び属性を前記メッセージから検索するステップであって、前記属性が少なくとも1つのワイルドカード・オペランドを含む、前記検索するステップと、
前記ワイルドカード・オペランドを対応の非ワイルドカード・ルーティング規則に変換するステップと、
サブスクリプションを前記主題に基づいて検索するステップと、
前記メッセージをルーティングする手法を決定するため前記属性を前記サブスクリプションに適用するステップと
を備える方法。 - 前記適用するステップをネットワーク・コア内のルータで実行するステップを更に含む請求項35記載の方法。
- フィルタを用いて、前記属性を前記サブスクリプションに適用するステップを更に含む請求項35記載の方法。
- 前記変換するステップが、
前記サブスクリプションのためオペランドの中のフィールド数を計数するステップと、
前記オペランドについてのフィールド長規則を前記オペランドに関するフィールド数に基づいて発生するステップと、
前記オペランドのサブフィールドを通じて繰り返し、且つワイルドカードとの整合を検出すると、前記サブフィールドを前記フィールド長規則に基づいて変換するステップと
を含む請求項35記載の方法。 - 前記変換するステップが、前記ペイロード・セクションの中のサブフィールドの大きさを制約するフィルタリング規則を用いるステップを含む請求項38記載の方法。
Applications Claiming Priority (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US31207401P | 2001-08-15 | 2001-08-15 | |
US31207601P | 2001-08-15 | 2001-08-15 | |
US31207701P | 2001-08-15 | 2001-08-15 | |
US31207501P | 2001-08-15 | 2001-08-15 | |
US32952601P | 2001-10-17 | 2001-10-17 | |
US10/199,439 US7117270B2 (en) | 2001-08-15 | 2002-07-19 | Method for sending and receiving a Boolean function over a network |
US10/199,368 US7545805B2 (en) | 2001-08-15 | 2002-07-19 | Method and apparatus for content-based routing and filtering at routers using channels |
US10/199,356 US20030165139A1 (en) | 2001-08-15 | 2002-07-19 | Packet routing via payload inspection |
US10/199,369 US6910033B2 (en) | 2001-08-15 | 2002-07-19 | Method for storing Boolean functions to enable evaluation, modification, reuse, and delivery over a network |
US10/199,388 US7411954B2 (en) | 2001-10-17 | 2002-07-19 | Efficient implementation of wildcard matching on variable-sized fields in content-based routing |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003521531A Division JP2005500741A (ja) | 2001-08-15 | 2002-07-25 | ペイロード検査を介したパケット・ルート付け、及び発行−申し込みネットワークにおける申し込み処理 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008252907A true JP2008252907A (ja) | 2008-10-16 |
Family
ID=29408280
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003521531A Pending JP2005500741A (ja) | 2001-08-15 | 2002-07-25 | ペイロード検査を介したパケット・ルート付け、及び発行−申し込みネットワークにおける申し込み処理 |
JP2008110926A Pending JP2008211835A (ja) | 2001-08-15 | 2008-04-22 | ペイロード検査を介したパケット・ルーティング、及びパブリッシュ/サブスクライブ型ネットワークにおけるサブスクリプション処理 |
JP2008110937A Pending JP2008252907A (ja) | 2001-08-15 | 2008-04-22 | ペイロード検査を介したパケット・ルーティング、及びパブリッシュ/サブスクライブ型ネットワークにおけるサブスクリプション処理 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003521531A Pending JP2005500741A (ja) | 2001-08-15 | 2002-07-25 | ペイロード検査を介したパケット・ルート付け、及び発行−申し込みネットワークにおける申し込み処理 |
JP2008110926A Pending JP2008211835A (ja) | 2001-08-15 | 2008-04-22 | ペイロード検査を介したパケット・ルーティング、及びパブリッシュ/サブスクライブ型ネットワークにおけるサブスクリプション処理 |
Country Status (7)
Country | Link |
---|---|
EP (2) | EP1419608A4 (ja) |
JP (3) | JP2005500741A (ja) |
KR (1) | KR20090037962A (ja) |
CN (1) | CN100438398C (ja) |
AU (1) | AU2002356068A1 (ja) |
HK (1) | HK1082858A1 (ja) |
WO (1) | WO2003017562A1 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010103633A (ja) * | 2008-10-21 | 2010-05-06 | Toshiba Corp | 通信制御方法、通信装置、および通信システム |
JP2014505896A (ja) * | 2010-11-04 | 2014-03-06 | ディジマーク コーポレイション | スマートフォンベースの方法及びシステム |
CN108353020A (zh) * | 2015-10-16 | 2018-07-31 | 萨托里环球有限责任公司 | 用于传送消息数据的系统和方法 |
US11049094B2 (en) | 2014-02-11 | 2021-06-29 | Digimarc Corporation | Methods and arrangements for device to device communication |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0305066D0 (en) | 2003-03-06 | 2003-04-09 | Ibm | System and method for publish/subscribe messaging |
US10698859B2 (en) * | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
KR101715080B1 (ko) | 2011-06-09 | 2017-03-13 | 삼성전자주식회사 | 네임 기반의 네트워크 시스템에서 펜딩 테이블의 오버플로우를 방지하는 노드 장치 및 방법 |
JP5942994B2 (ja) * | 2011-09-02 | 2016-06-29 | 日本電気株式会社 | イベント通知サービス方法およびシステム |
JP5954330B2 (ja) * | 2011-09-02 | 2016-07-20 | 日本電気株式会社 | イベント通知サービス方法およびシステム |
US10452399B2 (en) | 2015-09-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Broadcast channel architectures for block-based processors |
CN106777276B (zh) * | 2016-12-29 | 2020-03-10 | 微梦创科网络科技(中国)有限公司 | 用户信息的索引存储及原生信息展示的方法和装置 |
US10963379B2 (en) | 2018-01-30 | 2021-03-30 | Microsoft Technology Licensing, Llc | Coupling wide memory interface to wide write back paths |
CN110620722B (zh) * | 2018-06-20 | 2022-09-30 | 北京京东尚科信息技术有限公司 | 一种订单处理的方法和装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5873084A (en) * | 1996-01-18 | 1999-02-16 | Sun Microsystems, Inc. | Database network connectivity product |
US6463446B1 (en) * | 1998-02-26 | 2002-10-08 | Sun Microsystems, Inc. | Method and apparatus for transporting behavior in an event-based distributed system |
US6091724A (en) * | 1997-11-20 | 2000-07-18 | International Business Machines Corporation | Routing messages within a network using the data content of the message |
US6216132B1 (en) * | 1997-11-20 | 2001-04-10 | International Business Machines Corporation | Method and system for matching consumers to events |
CN1619561A (zh) * | 1997-12-08 | 2005-05-25 | 新日铁系统集成株式会社 | 商品交易装置 |
GB2345164A (en) * | 1998-12-24 | 2000-06-28 | Ibm | Publish and subscribe data processing with subscriber option to request subscription propagation prior to acknowledgment |
EP1043671A3 (en) * | 1999-03-19 | 2003-07-16 | International Business Machines Corporation | Message broker providing a publish/subscribe service and method of processing messages in a publish/subscribe environment |
US6321267B1 (en) * | 1999-11-23 | 2001-11-20 | Escom Corporation | Method and apparatus for filtering junk email |
-
2002
- 2002-07-25 WO PCT/US2002/023921 patent/WO2003017562A1/en active Application Filing
- 2002-07-25 JP JP2003521531A patent/JP2005500741A/ja active Pending
- 2002-07-25 EP EP02752603A patent/EP1419608A4/en not_active Withdrawn
- 2002-07-25 KR KR1020097004161A patent/KR20090037962A/ko active IP Right Grant
- 2002-07-25 EP EP09003267A patent/EP2112804A3/en not_active Withdrawn
- 2002-07-25 AU AU2002356068A patent/AU2002356068A1/en not_active Abandoned
- 2002-07-25 CN CNB028184483A patent/CN100438398C/zh not_active Expired - Fee Related
-
2006
- 2006-01-17 HK HK06100782.6A patent/HK1082858A1/xx not_active IP Right Cessation
-
2008
- 2008-04-22 JP JP2008110926A patent/JP2008211835A/ja active Pending
- 2008-04-22 JP JP2008110937A patent/JP2008252907A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010103633A (ja) * | 2008-10-21 | 2010-05-06 | Toshiba Corp | 通信制御方法、通信装置、および通信システム |
JP2014505896A (ja) * | 2010-11-04 | 2014-03-06 | ディジマーク コーポレイション | スマートフォンベースの方法及びシステム |
US11049094B2 (en) | 2014-02-11 | 2021-06-29 | Digimarc Corporation | Methods and arrangements for device to device communication |
CN108353020A (zh) * | 2015-10-16 | 2018-07-31 | 萨托里环球有限责任公司 | 用于传送消息数据的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2112804A3 (en) | 2009-12-02 |
AU2002356068A1 (en) | 2003-03-03 |
EP1419608A4 (en) | 2008-05-28 |
WO2003017562A9 (en) | 2003-11-13 |
EP1419608A1 (en) | 2004-05-19 |
CN1650566A (zh) | 2005-08-03 |
KR20090037962A (ko) | 2009-04-16 |
JP2008211835A (ja) | 2008-09-11 |
WO2003017562A1 (en) | 2003-02-27 |
HK1082858A1 (en) | 2006-06-16 |
JP2005500741A (ja) | 2005-01-06 |
EP2112804A2 (en) | 2009-10-28 |
CN100438398C (zh) | 2008-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7545805B2 (en) | Method and apparatus for content-based routing and filtering at routers using channels | |
JP2008252907A (ja) | ペイロード検査を介したパケット・ルーティング、及びパブリッシュ/サブスクライブ型ネットワークにおけるサブスクリプション処理 | |
US7587517B2 (en) | Packet routing via payload inspection for quality of service management | |
US7627603B2 (en) | Method and apparatus for implementing query-response interactions in a publish-subscribe network | |
US7376092B2 (en) | Method and apparatus for implementing persistent and reliable message delivery | |
US7551629B2 (en) | Method and apparatus for propagating content filters for a publish-subscribe network | |
US6910033B2 (en) | Method for storing Boolean functions to enable evaluation, modification, reuse, and delivery over a network | |
US7672275B2 (en) | Caching with selective multicasting in a publish-subscribe network | |
US20030195946A1 (en) | Method and apparatus for reliable publishing and subscribing in an unreliable network | |
US20040078450A1 (en) | Packet routing via payload inspection for digital content delivery | |
US7653753B2 (en) | Method and apparatus for content-based packet routing using compact filter storage and off-line pre-computation | |
US7958515B2 (en) | Publish/subscribe mechanism for web services | |
US7139844B2 (en) | Method and system for processing financial data objects carried on broadcast data streams and delivering information to subscribing clients | |
US8386633B2 (en) | Method and system for processing raw financial data streams to produce and distribute structured and validated product offering data to subscribing clients | |
US8671212B2 (en) | Method and system for processing raw financial data streams to produce and distribute structured and validated product offering objects | |
US20040083305A1 (en) | Packet routing via payload inspection for alert services | |
JP2005521950A (ja) | 発行−購読ネットワークにおける、信頼性が高く効率的なコンテンツに基づくルーティング、クエリ及び応答のための方法及び装置 | |
US20030165139A1 (en) | Packet routing via payload inspection | |
US7117270B2 (en) | Method for sending and receiving a Boolean function over a network | |
JP2004506272A (ja) | 未加工金融データを処理して、妥当性検査した商品案内情報を加入者に対して生成するシステム | |
US7411954B2 (en) | Efficient implementation of wildcard matching on variable-sized fields in content-based routing | |
KR20040039288A (ko) | 게시-가입 네트워크에서의 페이로드 조사 및 가입 처리를통한 패킷 라우팅 | |
TW571531B (en) | Packet routing via payload inspection and subscription processing in a publish-subscribe network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100223 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100712 |