JP2005521950A - 発行−購読ネットワークにおける、信頼性が高く効率的なコンテンツに基づくルーティング、クエリ及び応答のための方法及び装置 - Google Patents

発行−購読ネットワークにおける、信頼性が高く効率的なコンテンツに基づくルーティング、クエリ及び応答のための方法及び装置 Download PDF

Info

Publication number
JP2005521950A
JP2005521950A JP2003581058A JP2003581058A JP2005521950A JP 2005521950 A JP2005521950 A JP 2005521950A JP 2003581058 A JP2003581058 A JP 2003581058A JP 2003581058 A JP2003581058 A JP 2003581058A JP 2005521950 A JP2005521950 A JP 2005521950A
Authority
JP
Japan
Prior art keywords
communication method
filter
network
filters
notification
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2003581058A
Other languages
English (en)
Inventor
ヤン、ピン−ファイ
ウェイ チェン、ツ
ファン、アレックス、ダブリュー.ピー.
ローゼンブラム、デビッド、エス.
ヤジニーク、シャリニ
ワン、チャン−イー
リン、チー−メイ
ファン、イェナン
テオドレスク、ラドゥ
Original Assignee
プリキャッシュ インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by プリキャッシュ インコーポレイテッド filed Critical プリキャッシュ インコーポレイテッド
Publication of JP2005521950A publication Critical patent/JP2005521950A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • H04L67/5651Reducing the amount or size of exchanged application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/566Grouping or aggregating service requests, e.g. for unified processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling 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/63Routing a service request depending on the request content or context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Abstract

【解決手段】
本発明は、信頼性の低いネットワーク上で発行−購読処理を実行するための通信方法及び装置を提供する(10)。また、発行−購読ネットワークにおいて、フィルタを伝播するための通信方法及び通信装置を提供する(118、140)。また、発行−購読ネットワークにおいて、パケットのコンテンツベースのルーティングを行う通信方法及び通信装置を提供する(118、140)。また、発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法及び通信装置を提供する(118、140)。発行−購読ネットワークを介して提供されるメッセージの持続的なキャッシングを実現する通信方法及び通信装置を提供する(118、140)。

Description

関連出願
本出願は、2002年3月28日に出願された、米国仮出願番号60/368,833号、発明の名称「信頼性が低いネットワークにおける信頼性が高い発行/購読システムアーキテクチャ(Reliable Publish/Subscribe System Architecture over Unreliable Networks)」、2002年3月28日に出願された、米国仮出願番号60/369,105号、発明の名称「発行/購読ネットワークのためのコンテンツフィルタの伝播方法(Methods for Propagating Content Filters for a Publish/Subscribe Network)」、2002年3月28日に出願された、米国仮出願番号60/368,831号、発明の名称「発行/購読ネットワークにおけるコンテンツに基づくパケットルーティングの実際的な方法(Practical Method for Content-Based Packet Routing in a Publish/Subscribe Network)」、2002年3月28日に出願された、米国仮出願番号60/368,870号、発明の名称「データ広告を購読としてマッピングし、クエリを通知としてマッピングすることにより、発行−購読インフラストラクチャにおいてクエリ−応答インタラクションを実現する方法(Implementing Query-Response Interactions On a Publish- Subscribe Infrastructure By Mapping Data Advertisements as Subscriptions and Queries as notifications)」、2002年4月3日に出願された、米国仮出願番号60/369,832号、発明の名称「持続的で信頼性が高いメッセージ配信を実現するための方法及び装置(Method and Apparatus for Implementing Persistent and Reliable Message Delivery)」、2003年2月19日に出願された、米国仮出願番号60/447,782号、発明の名称「コンテンツフィルタの伝播、コンパクトフィルタストレージ及びオフラインプリコンピュテーション、信頼性が高い発行及び購読、持続的で信頼性が高いメッセージ配信の実現、データ広告を購読としてマッピングし、クエリを通知としてマッピングすることにより、発行−購読インフラストラクチャにおいてクエリ−応答インタラクションを実現する方法(Propagating Content Filters, Content-Based Packet Routing Using Compact Filter Storage and Off-Line Pre-computation, Reliable Publishing and Subscribing, Implementing Persistent and Reliable Message Delivery, and Implementing Query- Response Interactions By Mapping Data Advertisements as Subscriptions and Queries as Notifications in a Publish-Subscribe Network)」に対する優先権を主張し、これらの特許文献は、参照により本願に援用されるものとする。
更に、米国特許出願第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)」も参照により本願に援用されるものとする。
ネットワーク帯域幅は、指数関数的に拡大している。しかしながら、ネットワークインフラストラクチャ(ルータ、サーバ、デーモン、プロトコル等を含む。)は、未だに比較的古い技術を用いている。この結果、インターネットアプリケーション及びネットワークルータは、帯域幅の拡大の速度に対応することができない。同時に、ネットワークに対応する機器及びアプリケーションも増加している。これらの機器及びアプリケーションによるネットワークノードへの負荷は、著しく大きくなっている。また、ネットワーク負荷及びアプリケーションの増加のために、ネットワークアプリケーションを実現し、維持するための複雑性がより高まっている。ネットワーク帯域幅の増加、及びネットワーク機器及びアプリケーションの偏在的な(ubiquitous)使用により、古いネットワークインフラストラクチャにおけるデータのルーティング及び送信、特に、購読者(subscriber)へのコンテンツを発行(publishing)に関する問題が生じている。
ネットワークにおいてサーバからクライアントに情報をプッシュするモデルは、発行−購読型(publish-subscribe style)と呼ばれる。このモデルでは、サーバは、どのクライアントが情報に興味を持ち、又はクライアントがネットワーク内のどこに位置するかに関わらず、その情報の単純化された発行者(publisher)として機能する。クライアントは、情報の購読者(subscriber)となり、潜在的には、その情報がネットワークのどこで利用可能となったかに関する詳細に関わらず、その情報が利用可能になると、その情報が配信される。ネットワークは、発行された情報を購読者に効率的にルーティングし、アクティブな購読のための情報を照合し、これらの処理を発行者及び購読者についてトランスペアレントな方法で実行する責務を負う。
発行−購読モデルにおいては、サーバの構成が著しく簡略化されるので、大型のサーバ(heavyweight server)と小型のクライアント(lightweight client)といった区別はなくなり、これらは、発行者、購読者又はその両方にもなり得るピアという呼称に統合される。様々な種類のアプリケーションがピア間の発行−購読型のインタラクションに近い性質を兼ね備えている。これらの多くのアプリケーションの基底に存在する課題では、発行及び購読される情報は、イベントの形式で提供される。例えば、投資家が株を購入又は売却することにより、株価が変動する。また、高速道路上で交通事故が発生すると、交通渋滞が発生する。ソフトウェアシステムのセキュリティホールが発見されると、ソフトウェアのユーザのためにパッチを開発する必要が生じる。インターネットゲームのプレイヤが武器を使用すると、他のプレーヤのアバターが死ぬ。これらの例示的な現象は、全て、多数の購読者が潜在的に興味を有するイベントであり、このようなイベントが生じたことをこれらの購読者に通知するために、ネットワーク内で伝播(propagate)させることができる。すなわち、イベントは、ある時刻に、ネットワーク上のある場所で発生した、潜在的に興味が持たれる何かに関する、自己充足的(self-contained)で簡潔な情報片(succinct piece of information)である。
他の具体例として、スケジューリングされた同報通信があり、これは、イベント発生の時刻が予測不可能であり、ランダムである非同期イベントのみを含むアプリケーションとは異なる性質を有している。この場合、まず、イベントは、既知の時刻発生するようスケジューリングされる。次に、イベントは、必ずしも簡潔な情報片ではなくてもよい。これに代えて、イベントは、大量のデータであってもよい。興味を有する購読者が検出されたネットワークの一部に、このような大量のデータを送信するには、かなりのサーバ処理が必要となる。
発行−購読モデルにおいて、発行されたコンテンツをどこに送信するかをネットワークに指示するための経路決定(routing decision)は、通常、サーバ又は発行者が行う。発行者は、自らが発行するコンテンツに関する購読予約(subscription)を保存する。発行者は、新たなコンテンツを受信又は生成すると、そのコンテンツと各購読予約とを比較し、何らかの一致がないかを調べる。コンテンツ(イベント)がいずれかの購読予約を満たす場合、発行者は、ネットワークを介して、対応する購読者にコンテンツをプッシュする。この従来の発行−購読モデルでは、特に、より多くの機器がネットワークに対応し、購読予約の数が増加すると、発行者に大きな負担がかかる。これに代えて、購読者が、発行された全てのイベントに対して自らの購読予約を評価する手法もあるが、これも同じくらい煩雑である。
インターネットにおける無数のアプリケーションの集中度が高まることにより、イベント通知を利用する可能性も無限になる。ここで、これらの可能性のために、経路決定を効率的に行い、イベントがいつ購読予約を充足するかを効率的に判定して、発行者の負担を軽減する手法を実現することが必要である。したがって、普遍的で持続的なイベント通知サービス(event notification service)が実現すれば、インターネットアプリケーション並びに他のアプリケーション及びインプリメンテーションに大きな付加価値が与えられる。
発行−購読ネットワークにおいて、フィルタを伝播するための通信方法及び通信装置を提供する。まず、ネットワークにおけるコンテンツの購読予約に関連する複数のフィルタを受信する。特定の基準に基づいて、フィルタの数を減少させ、ネットワークにおいて、コンテンツの購読予約を照合するために数が削減されたフィルタを伝播する。
また、発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法及び通信装置を提供する。まず、データセットに関連する広告と、論理式を表すクエリとを受信する。次に、広告を対応する購読予約にマッピングする。次に、クエリを対応する通知にマッピングする。これらの対応する購読予約及び通知を用いて、広告と、ネットワークにおけるクエリとを実現する。
また、ネットワークを介して配信されたメッセージの持続性を実現する通信方法及び通信装置を提供する。まず、ネットワークを介してメッセージを受信する。次に、メッセージを後の読出のために保存する。ネットワークに関連する障害に応じて、メッセージの持続的で信頼できる配信を提供する。
概観
インターネット規模又は他の分散型ネットワーク規模のイベント通知システムにより、アプリケーションにおいて、強力で柔軟な発行−購読ネットワーキング(publish-subscribe networking)が実現される。このシステムでは、アプリケーションプログラムは、イベント通知アプリケーションプログラムインタフェース(application program interface:以下、APIという。)を用いて、ネットワーク内部で発生するイベントに関する通知を発行し及び/又は通知を購読又は受信する。
このシステムにおける通知には、サブジェクトが与えられ、サブジェクトは、通知がカプセル化している情報の種類を分類するための文字列又はこの他のデータ構造として示される。また、通知は、その通知に特有の情報を含む属性の組によって完結されている。例えば、アプリケーションは、サブジェクトクォート.nyse(subject quotes.nyse)と、属性シンボル及び価格とを用いて、ニューヨーク証券取引所における取引に関する通知を発行してもよい。例えば、アプリケーションは、SNE(ソニー株式会社の相場受信機のシンボル)及び85.25ドルの株価を含む特定の属性値を有する個々の通知を発行する。全てではなくとも、殆どの通知の属性は、同じサブジェクトのファミリーに関する全ての通知において見出されるという意味で、予め定められている。なお、発行者は、イベント固有の情報を追加するために、通知毎に又は他の単位で、通知に任意の属性を加えることができる。したがって、一部又は全ての属性は、予め定義されたものではなくてもよい。
このシステムでは、購読者は、サブジェクト又はチャンネル全体の購読のみに制限されるわけではない。チャンネルついては、後に説明し、定義する。チャンネルは、例えばサブジェクトフィールド及び関連するサブフィールド(サブサブジェクト)の1つ以上のレベルを指定する階層構造を含むことができる。したがって、購読者は、通知の属性に対して、コンテンツ毎のフィルタを指定することによって、興味に応じてより精密に調整された表現を特定することができる。例えば、購読者は、SNEのシンボルを有し、価格が90.00ドル以上であるサブジェクトクォート.nyse(例えば、購読者が所有している株の売りの好機を示している)について、全ての通知を購読予約してもよい。購読予約に一致する全ての通知は、コールバック又は購読者が購読予約を登録したとき、又は他の時点で特定した他の種類の機能を介して、購読者に配信される。1つの購読予約は、複数のフィルタに分割することもできる。
コールバックは、多くの処理を実行することができ、これらには、例えば、端末機器にメッセージを送信し又は電子メールを送信する等の単純な処理から、株の一部を売却する等のより複雑な処理や、新たな発行−購読アクティビティを開始する(例えば、既存の購読予約を75.00ドルの株価を買いの好機とする新たな購読予約に置き換え、又は購読者のポートフォリオが修正された新たな通知を発行する等)等の更に複雑な処理が含まれる。
アプリケーションにおける発行及び購読アクティビティは、例えば、エージェントによって支援してもよい。エージェントは、プロキシを利用してもよく又はプロキシとして実現してもよい。エージェントは、送信される通知及び購読予約、及び購読者に受信される照合通知の配信のための接続を提供する。通知がネットワークに出されると、このシステムのルータのネットワークは、その通知に購読予約が一致する全ての購読者に通知を伝播(propagate)する。この処理を実現する一手法は、ネットワーク内の全ての点の通知を同報通信し、アプリケーションエージェントにより、対応する購読者にその通知が関連するか否かを判断させる手法がある。しかしながら、これは必ずしもスケーラブルな手法であるというわけではない。通常、ネットワークは、特に膨大な数のアクティブな購読者がいる場合、メッセージトラヒックの負荷によって正常に機能できなくなる。更に、帯域幅が十分に確保された場合でも、購読者は、膨大な量の通知を処理しきれなくなると考えられる。
本発明に基づくシステムの一例として示すネットワークは、非常に効率的に通知をルーティングする。まず、このネットワークは、マルチキャストルーティングを用いて、例えば、ネットワーク内の全てのリンクにおいて最大で1回、通知を伝播させることができる。次に、このネットワークは、フィルタに対する多数の高度な最適化処理を採用でき、これにより、通知の伝播の回数を可能な限り削減することができる。
図1は、ネットワークコアにおけるこのインテリジェントルーティングを概念的に示す図である。発行者14は、エッジルータ16を介して、発行−購読ネットワークにおいて用いられているネットワークコア10にメッセージのコンテンツを送信する。発行−購読ネットワークは、発行者から購読者にデータ又はコンテンツをルーティングするための如何なる種類のネットワークであってもよい。コンテンツは、ルータ間又は他の機器間の論理的接続を表す1個以上のチャンネル18を介して伝送される。ネットワークコア10におけるインテリジェントルータ12は、メッセージをルーティング又は転送するか否かを決定する。具体的には、インテリジェントルータ12は、メッセージが購読者24によって購読予約されているコンテンツを含んでいるか否かを判定することができる。
各購読予約は、サブジェクトフィルタと属性フィルタとをカプセル化している。ルータは、サブジェクトフィルタを一致するサブジェクトの組に拡張し、又はサブジェクト毎に属性フィルタを併合することができる。インテリジェントルータは、通知のサブジェクトに対してサブジェクトフィルタを評価し、及び通知における属性値に対して属性フィルタを評価する。サブジェクトフィルタのための構文では、ワイルドカードを用いることができ、属性フィルタのための構文では、論理式(Boolean expression)を用いることができ、これらについては、後に更に詳細に説明する。「フィルタ」という用語は、購読者が発行者から受信を望んでいる1組のイベントを意味する。ルーティング規則は、フィルタから生成され、インテリジェントルータは、この規則を用いて経路決定を行う。
したがって、メッセージ26が全体のフィルタセットを充足していない場合、例えばインテリジェントルータ12は、メッセージ26を除外(削除)し、これは、メッセージが転送されないことを意味する。サブジェクトと属性フィルタの評価に基づき、メッセージ20がフィルタの組の一部又は全体を充足していると判定された場合、例えばインテリジェントルータ12は、エッジルータ22及び可能であれば他の機器を介して、購読者にメッセージ20をルーティング(転送)し、又は、一致したフィルタについて規定されている全てのルーティング及び/又は動作規則に基づいて、インテリジェントルータ12内部でメッセージ20に対する他の機能を実行する。検索は、フィルタの組全体に対する処理が完了するまで、又は全ての規則に関する判定が得られるまで続けられ、この2つの条件のいずれかが満たされると終了する。
ネットワークコアにおける、このようなインテリジェントなコンテンツベースのルーティングは、例えば、警告及び更新のための実時間データ配信を実現する。警告のための実時間データ配信の具体例としては、以下に限定されるものではないが、例えば、株価、交通情報、ニュース、旅行、天気、不正検出、セキュリティ、テレマティックス、ファクトリオートメーション、サプライチェーン管理及びネットワークマネージメント等がある。更新のための実時間データ配信の具体例としては、以下に限定されるものではないが、例えば、ソフトウェア更新、アンチウイルス更新、映画及び音楽配信、ワークフロー、ストレージ管理及びキャッシュ一貫性(cache consistency)等がある。購読予約された情報を配信するシステムは、他の様々な分野に応用することができる。
表1は、フィルタリングのために保存される購読予約をサブジェクト及び述語(predicate)とともに示している。これらは、希望されれば、又は必要に応じて、ネットワークの如何なる部分に、如何なる種類のデータ構造を用いて保存してもよい。後述するように、述語は、購読予約の要素である。購読予約は、如何なる形式で表現してもよく、その具体例を以下に示す。
Figure 2005521950
表2は、クォートサーバ(quote server)のための発行及び購読予約の具体例を示している。これらは、説明を目的とする例示的な具体例に過ぎず、購読予約は、如何なる種類のデータ又はコンテンツについて、如何なる数及び種類のパラメータも含んでいてもよい。
Figure 2005521950
述語は、購読予約のための論理式を提供し、サブジェクトは、購読予約に関するチャンネルを示す。購読予約は、この他の様々な手法で表現することができる。論理式は、このような手法の一例であり、これを用いることにより、コンテンツベースのルーティングのために、購読予約をサブジェクトフィルタと属性フィルタに変換するための機能を容易に実現することができる。これに代えて、サブジェクトを参照することなく購読予約を表現することもできるが、サブジェクト又はチャンネル(後に詳細に説明する。)を用いることにより、属性を解釈し、フィルタを属性に適用するためのコンテキストが実現される。
ネットワークコアにおいて、経路決定を実行し、これをネットワークを介して配信することができ、これにより、発行者と購読者の装置における処理負担を軽減し、ネットワーク効率を著しく高めることができる。図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とを備えている。
チャンネルは、例えば、分散型方式によって実現された論理的なマルチキャスト接続の関連する組を含むことができる。この例示的な実施例におけるチャンネルとは、コンテンツを交換するために発行者と購読者に共用される論理的に関連するネットワーク資源の集合である。コンテンツは、チャンネルサブジェクトネームスペースに従って分類され、リソースは、チャンネルマネージャが提供するチャンネルサービスを介して管理され、制御され、供給される。複数のチャンネルが同じリソースを共有してもよい。チャンネルは、スケーラビリティが高いディレクトリサービスを提供でき、このサービスは、以下に限定されるものではないが、発行者及び購読者情報、認証及び認可情報メッセージの種類、管理情報、課金処理と支払い情報等が含まれる。また、例えば、チャンネルは、提供できる持続的なスルーキャッシング(persistence through caching)、高速データ配信メカニズム、セキュリティ、ユーザ及びネットワーク管理等を提供できる。また、チャンネルは、他の如何なる目的にも利用できる。
インテリジェントルータによるフィルタリングをネットワークコアで行い、経路決定をネットワーク内に配信してもよい。更に、インテリジェントルータは、発行者又は購読者等のユーザ機器をネットワークコアに接続するエッジルータとして機能できる。また、ネットワークに接続された同じ機器が、ネットワークにおける経路決定に基づいて購読者にコンテンツをプッシュする発行者及びプッシュされたコンテンツを受信する購読者の両方として機能することができる。インテリジェントルータ及びチャンネルは、特定の実施例における必要又は要望に応じて、如何なる構成で接続してもよく、図2の構成は例示的に示しているに過ぎない。
図3は、インテリジェントルータと従来のバックボーンルータのための例示的なネットワークインフラストラクチャの構成を示しており、この図面は、チャンネルの論理的接続も示している。この実施例におけるインテリジェントルータは、インターネットや他の分散型ネットワーク等のネットワークにおいて、既存のバックボーンルータを用いており、インテリジェントルータは、これにより、バックボーンルータ上に効果的に階層化されている。この実施例では、インターネットサービスプロバイダ(Internet Service Provider:以下、ISPという。)ネットワーク58、59、60は、メッセージ又はパケットの従来型のルーティングを行うために、それぞれ幾つかのバックボーンルータを備えている。ISPネットワーク58、59、60においては、複数のインテリジェントルータ61〜70が1つ以上のバックボーンルータに接続されている。また、インテリジェントルータ61〜70は、実際のリンクを例示的に示す複数のリンク73〜85によって相互接続され、またこれらのリンクを介して、エンドユーザ機器にも接続することができる。インテリジェントルータ61〜70は、例えばエンティティ71等の1つ以上の管理者装置(administrator machines)及び例えばエンティティ72等の1つ以上の仮想プライベートネットワーク(virtual private network:以下、VPNという。)コントローラによって制御される。ISPネットワーク58、59、60は、発行者装置及び購読者装置(図3には示していない。)に接続してもよい。ISP58、59、60内及びこれらの間のバックボーンルータは、既存のネットワークインフラストラクチャにおいて、従来の如何なる手法で相互接続してもよい。
図3に示すように、既存のネットワークインフラストラクチャを用いて、インテリジェントルータ61〜70とリンク73〜85を実現することができ、これらは、ネットワークコアにおけるコンテンツベースのルーティングを提供する。リンク73〜85は、インテリジェントルータ61〜70の間の論理的接続を表し、例えば、既存のネットワークインフラストラクチャ又は他の機器を用いて実現することができる。リンクは、例えば、トンネル(tunnel)と呼ばれる論理的接続を用いて実現してもよい。トンネルは、ハードウェアと、可能であればソフトウェアと、リンクを実現するためのネットワークインフラストラクチャとを含み、トンネルは、複数のチャンネルの一要素であってもよい。チャンネルは、特定の種類のコンテンツのための論理的な構成を提供することによって、インテリジェントルータにおけるコンテンツベースのルーティングを容易にし、これにより、チャンネルを介して送信される属性のためのコンテキストを提供する。インテリジェントルータは、チャンネルを用いることなく経路決定を行うこともできるが、チャンネルは、ネットワークコアにおけるインテリジェントルータによるコンテンツベースのルーティングの効率を向上させる。
この例示的な実施例は、チャンネルとリンクの使用を含んでいる。リンクは、例えばインテリジェントルータである2つのルータ間の接続を表す。チャンネルは、相互接続リンクによって静的又は動的に構成され、1対多又は多対多の論理的接続を実現する一群の(通常多数の)ルータを含むネットワークエンティティである。特に、チャンネルは、チャンネルの本質的な特徴を記述する最上位レベルの論理的エンティティである。1個のチャンネルには、多くのサブジェクトが存在していてもよい。各サブジェクトは、相互接続された一群のルータを含む(マルチキャストツリー等の)サブネットワークを形成する。これらのサブジェクトベースのサブネットワークは、様々な手法で、割当、適応化、構成を行うことができる。全てのサブネットワークの集合体であり、その下にサブジェクトを形成するチャンネルは、例えば、網状組織(mesh of networks)に例えることもできる。
図4は、インテリジェントルータ92の具体的な構成例を示しており、インテリジェントルータ92は、符号が付された他の如何なるインテリジェントルータに対応していてもよい。ネットワークノード90は、従来のバックボーンルータ95に接続されたインテリジェントルータ92を備えている。インテリジェントルータ92は、メモリ94と補助記憶装置97(例えば、独立した装置として実現してもよい。)とに接続されたプロセッサ93を備え、メモリ94及び補助記憶装置97は、いずれも、キャッシュデータを含むデータを保存し、及びプロセッサ93によって実行されるアプリケーションプログラムを保存する。補助記憶装置97は、不揮発性のデータ記憶装置である。後述するように、プロセッサ93は、ソフトウェアに制御されて、バックボーンルータ95に対して命令を発し、この命令に応じて、バックボーンルータ95は、購読予約に対するサブジェクトフィルタ及び属性フィルタから生成されたルーティング規則に基づいて、メッセージ又はパケットをルーティング(転送)し又はルーティングしない(削除する)。ここでは、インテリジェントルータ92をプロセッサに制御される独立した装置として示しているが、インテリジェントルータ92は、バックボーンルータ95内の特定用途向け集積回路(application specific integrated circuit: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は、上述したネットワーク120等のネットワークを介して購読者装置122、140に接続されるネットワーク120は、ネットワークコアにおいて、パケット又はメッセージを介して、データ又はコンテンツの分配型ルーティングを実現するためのインテリジェントルータを含んでいる。ここでは、それぞれ2つの発行者装置及び購読者装置のみを示しているが、より多くの発行者装置及び購読者装置を含むようにネットワーク120をスケーリングできる。発行者装置及び購読者装置は、プロセッサにより制御される如何なる装置として実現してもよく、これらの装置としては、以下に限定されるものではないが、例えば、サーバ、パーソナルコンピュータ、ノートブックコンピュータ、携帯情報端末、電話、携帯電話、ページャ、又はこの他の機器が含まれる。インテリジェントルータを含むネットワーク120は、有線機器、無線機器又はその両方を接続する如何なる有線又は無線の分散型ネットワークであってもよい。また、ネットワーク120としては、潜在的に既存の又は従来のネットワークインフラストラクチャを用いることができる。
図6は、インテリジェントルータのためのチャンネルマネージャ150の構成を示している。この実施例では、チャンネルマネージャ150は、複数のサーバ152、154、156によって実現されている。各サーバは、それぞれローカルのストレージ装置158、160、162を備えている。インテリジェントルータ164、166、168は、チャンネルマネージャから特定のチャンネルに関する情報を得る。また、チャンネルマネージャは、データ持続(data persistence)、障害迂回機能(fail over functions)及び他の機能を提供することができる。これにより、チャンネル管理プログラムは、ネットワークの任意の場所において、例えばチャンネル関連情報、データ持続のためのプロパティ、発行者及び購読者のためのユーザ情報、インフラストラクチャ情報等を特定するデータベース又はデータベースの組を含むチャンネルサービスを提供するインフラストラクチャ情報は、例えばインテリジェントルータ及びこれらを接続するトンネルの識別情報、チャンネルのサブジェクト、チャンネルの属性(各属性の名称と種類)等を含むことができる。また、パケット又はメッセージは、固定的な属性及び可変の属性の識別情報を含むチャンネル関連情報を伝送することができる。
ユーザは、オンライン状態で、チャンネル情報をダウンロードすることができる。例えば、ユーザは、ユーザ名とパスワードを用いて、自らを登録することができる。ユーザのログオンが認証されると、ユーザは、チャンネルを開き(呼び出し)、チャンネルマネージャからチャンネルに関する情報を検索できる。発行者は、コンテンツを発行する際にこの情報を用いることができ、購読者は、購読予約を入力及び登録する際にこの情報を用いることができる。
この実施例では、各チャンネルマネージャ152、154、156は、各インテリジェントルータのためのプライマリとして機能する。具体的には、この実施例では、各インテリジェントルータは、2つのインターネットプロトコル(IP)アドレスを有しており、一方のIPアドレスは、プライマリチャンネルマネージャ用であり、他方のIPアドレスは、バックアップチャンネルマネージャ用である。インテリジェントルータは、チャンネルマネージャと通信し、チャンネル情報を検索するためにこれらの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への接続を提供する。
Cプログラミング言語で書かれたメッセージングAPIの具体例を表5〜表9に示す。表5及び表6は、メッセージの送信及び検索のためのAPIの具体例を示している。表7及び表8は、通知の送信及び検索のためのAPIの具体例を示している。表9は、制御メッセージの送信及び検索のためのAPIの具体例を示している。ここに示す特定の機能又は特徴を実現するAPI及び他のAPI、プログラム及びデータ構造は、例示的に示しているに過ぎず、これらの機能は、如何なるプログラミング言語で書かれた如何なる種類のAPI又はこの他のソフトウェアエンティティとして実現してもよい。
Figure 2005521950
Figure 2005521950
Figure 2005521950
Figure 2005521950
Figure 2005521950
Figure 2005521950
Figure 2005521950
図8は、上述したようなインテリジェントルータ及び図4に示すインテリジェントルータ92等のインテリジェントルータのための例示的なソフトウェアコンポーネント210を示している。ソフトウェアコンポーネント210は、例えば、メモリ94に格納され、インテリジェントルータ92のプロセッサ93によって実行することができる。コンポーネント210は、例えばフィルタリングデーモン212、ディスパッチャ214、ルーティングデーモン216、キャッシュマネージャ218を備える。フィルタリングデーモン212は、後述するように、購読予約のためのコンテンツを処理するための、コンテンツベースのルーティングにおけるルーティング規則に基づくフィルタリング機能を提供する。ディスパッチャ214は、パス220を介してフィルタを伝播するために必要である制御メッセージの通信を担い、また、ディスパッチャ214は、ユーザのためのエントリの単一のポイント及びチャンネルマネージャを有する1個の安全なソケットを提供し、ネットワークのセキュリティを向上させる。換言すればこの具体例では、ユーザは、チャンネルマネージャと直接通信を行うことがない。但し、変形例として、ユーザは、チャンネルマネージャと直接通信を行ってもよい。ディスパッチャ214は、制御メッセージを用いて、チャンネルマネージャから属性(名称−値の組)を得る。
ルーティングデーモン216は、図4に示すような従来のバックボーンルータ又は他のルーティング機器を介して行われるデータパス222を経由する通信機能を提供する。キャッシュマネージャ218は、対応するインテリジェントルータを含むネットワークノードにおけるデータのローカルなキャッシング機能を提供する。キャッシュマネージャ218の動作は、後に詳細に説明するが、キャッシュマネージャ218は、ネットワークコアを介したデータの分散型キャッシング機能を提供する。
コンテンツベースのルーティングは、アプリケーションレベルではなく、カーネルレベルで実現してもよい。カーネルによってアクセス可能なメモリは、アプリケーション層におけるメモリから独立している。アプリケーションにおいて、コンテンツベースのルーティングを実行するためには、例えば、メッセージデータをカーネル記憶領域からアプリケーション領域にコピーし、アプリケーションのコンテキストをカーネルのコンテキストから、ルーティングアプリケーションのコンテキストに切り換える必要がある。これらの処理は、いずれもかなりのオーバーヘッドを引き起こす。ここで、コンテンツベースのルーティングをサポートするようにカーネルを変更すれば、上述したオーバヘッドが取り除かれ、ルーティングをより高速に行うことができるようになる。
このようなカーネルにおけるコンテンツベースのルーティング機能により、ルーティングデーモン216は、具体例に応じて、データパス222を介してデータを直接又は間接的に送信又は受信することができる。デーモンは、アプリケーション層において実行され、カーネルに挿入すべきコンテンツベースのルーティングテーブルを予め算出する処理である。但し、カーネルは、ルーティングテーブルが挿入された後は、ルーティングテーブルを用いて経路決定を行うことができる。同様に、フィルタリングデーモンは、フィルタリングテーブルを予め算出し、算出したフィルタリングテーブルをカーネルに挿入する。この具体例におけるカーネルでは、ルーティングデーモンもフィルタリングデーモンもデータパスとは直接インタラクトしない。
図9は、購読予約のコンテンツを含むことができるメッセージのためのパケット構造230の具体例を示している。コンテンツベースのルーティングに用いられるパケット又はメッセージは、例えば、ヘッダセクションとペイロードセクションを含んでいる。ヘッダセクションは、ルーティング又は他の情報を特定する。ペイロードセクションは、データ又はコンテンツを特定し、又は、データ又はコンテンツを指示する。パケット構造230は、IPヘッダ232、ユーザデータグラムプロトコル(User Datagram Protocol:以下、UDPという。)伝送制御プロトコル(Transmission Control Protocol:以下、TCPという。)ヘッダ234、レングス値238、1つ以上のサブジェクトフィールド240及び1つ以上の属性242を含んでいる。パケット構造230は、レングス値、サブジェクト及び属性のための基本構造を示している。また、コンテンツベースのルーティングで用いられるパケットは、例えば、後述する図18の実施例に示すように、他の又は異なる要素を含むことができ、コンテンツベースのルーティングのためのパケットは、如何なる手法で構成してもよい。また、属性は、例えば、メッセージの最後に追加される任意の属性を含むことができる。これらの任意の属性は、例えば発行者(又はルータ)によって追加される臨時の情報であり、必ずしもチャンネルについて定められているメッセージフォーマットを用いて伝送する必要はない情報である。
発行者と購読者における処理(Publisher and Subscriber Methodologies )
図10は、発行者によって、チャンネルをセットアップし、コンテンツを発行するための例示的な発行処理250のフローチャートである。処理250は、例えば、発行者装置100におけるプロセッサ114によって実行されるエージェント106を含むソフトウェアモジュールによって実現することができる。処理250において、発行者装置のエージェント106は、発行者が作成したチャンネルのプロキシを受け取る(ステップ252)。プロキシは、ネットワークとの通信に用いられる。エージェント106は、インタフェースを介してチャンネルにおいて用いるメッセージフォーマットを判定する(ステップ253)。フォーマット情報は、例えば、チャンネルマネージャ又はネットワークにおける他のエンティティから得ることができる。エージェント106は、受け取ったチャンネル情報を用いてチャンネルのプロキシをセットアップし(ステップ254)、この処理は、チャンネルの属性を受け取るステップ(ステップ256)と、チャンネルへの通知を作成するステップ(ステップ258)とを含む。この通知は、チャンネル上でコンテンツを「待機(listening)」している機器にコンテンツを提供する。属性は、通知のパラメータ及び特性を定義する。
エージェント106は、ネットワークコアにおいて又は他の場所において、購読予約を処理するためにチャンネル及びコンテンツ情報の識別子(ID)をインテリジェントルータに送信する(ステップ260)。発行者は、通知属性に適切な値を設定し(ステップ261)、これにより、発行者は、チャンネル属性に基づいて、通知に関するコンテンツを発行できる(ステップ262)。この実施例におけるステップ260〜262により、通知の発行が完了する。この処理は、実際の個々の実施例に応じて、この他の又は更なるステップを含んでいてもよい。ここで、この実施例における通知に関連する情報は、所定の順序に基づく一連の属性に区切られ、各属性は、名称と、通知内の位置(1から始まる)と、種類と、値とを有する。これに代えて、属性は、個々の実施例に応じて、異なる特徴を有していてもよい。例えば、属性は、予め定められた属性、任意の属性又はこれらの両方を含むことができる。
インテリジェントルータは、パケット内のチャンネルIDに基づいて、対応するチャンネルの属性を知ることができ、この属性により、チャンネルを介して送信されるパケットの構造又はフォーマットが決定されている。具体的には、各パケットは、例えば、チャンネルID及び発行者IDやサブジェクト等の他のヘッダ情報に関連するタグを含むことができる。このタグは、例えば図18に具体例を示すように、サブジェクトをメッセージフォーマットの番号にマッピングするために用いることができる。この番号には、小さい整数値、例えば、16ビット値を用いることができる。これに代えて、他の如何なる種類の番号又は情報を用いてサブジェクトをマッピングしてもよい。サブジェクトを番号にマッピングすることにより、例えば次のような利点が得られる。すなわち、これにより、メッセージフォーマットにおける空間を節約でき、メッセージにおいてサブジェクトを指定するための均一又は標準化された手法を提供でき、これにより、サブジェクトを速やかに特定し、識別できるようになる。インテリジェントルータは、マッピングをローカルに保存してもよく、これに代えて、番号を用いて、コマンドにより、リモートから対応するサブジェクトを入手してもよい。
表10は、サブジェクトを番号にマッピングするための構造を示しており、この具体例では、番号に整数値を用いている。表10におけるサブジェクトツリーパラメータは、サブジェクトが階層関係内に1つ以上のサブジェクトフィールドを含むことができることを示しており、例えばサブジェクトツリーは、特定のシンボルによって仕切られる一連のサブジェクトフィールドを含むことができる。サブジェクトツリーの具体例は、表2に示されている。例えば、サブジェクトツリーquotes.nyseは、サブジェクト「quote」とサブフィールド「nyse」を含んでおり、これらの2つの項は、URL又は他のネットワークアドレスと同様に、「.」(ピリオド)によって区切られている。ピリオド及びURL型の文字列を用いる代わりに、如何なる文字及び区切りのためのシンボルを用いて、如何なる手法でサブジェクトツリーを特定してもよい。
Figure 2005521950
特定のチャンネルのパケットフォーマット又は構造を知ることにより、インテリジェントルータは、パケット内におけるサブジェクトと属性又はコンテンツベースのルーティングのための他の情報の位置を速やかに特定することができる。例えば、チャンネルは、パケット内のバイトを数えることによって、チャンネルを介して伝送されたサブジェクト及び属性のバイト位置を容易に特定できる。これに代えて、インテリジェントルータは、パケットを解析してサブジェクト及び属性又は他の情報の位置を検出することもできる。表11は、C++プログラミング言語で書かれた発行者プログラムの具体例を示している。表12は、チャンネルを作成するためのAPIの具体例を示している。表13は、チャンネルマネージャによって維持されるチャンネル設定ファイルの具体例と(図6参照)、チャンネル関連情報を示している。これに代えて、システムは、処理負荷を分散させるために、ローカルチャンネルマネージャとして機能する地理的に分散しているサーバのIPアドレスを提供する包括的チャンネルマネージャを備えていてもよい。
Figure 2005521950
Figure 2005521950
Figure 2005521950
図11は、購読予約の受信及び処理のための購読処理264のフローチャートである。処理264は、例えば、購読者装置122におけるプロセッサ134によって実行されるエージェント128を含むソフトウェアモジュールによって実現することができる。処理264において、例えば、グラフィカルユーザインタフェース(graphical user interface;以下、GUIという。)は、利用可能なチャンネルを示す情報をユーザに表示する(ステップ266)。この処理は、アプリケーション126によって実現される。チャンネルを特定する情報は、例えば、チャンネル関連の情報を提供するチャンネルマネージャから受け取ることができる。如何なる種類のアプリケーション126を用いて、如何なる特定の手法又はフォーマットに基づいて、チャンネルを示す情報を表示してもよい。アプリケーションは、ユーザが選択したチャンネルを受信し(ステップ268)、選択されたチャンネルのためのAPI又は他のプログラムを呼び出す(ステップ270)。APIは、選択されたオプションに対するチャンネルの購読予約オプションをユーザに表示する(ステップ272)。APIは、購読予約に関する値をユーザから値を受け取り(ステップ274)、後述する処理のために、エージェント128に購読予約を供給する(ステップ276)。
購読予約のためのパラメータは、例えば表1に示すような述語を含むことができる。各チャンネルは、例えば、対応するチャンネルに関する特定の要求又はパラメータに従って購読予約を処理するために自らのAPIを用いることができる。これらのAPIは、例えば、購読予約を受け取るためのウェブベースの又はJavaベースのAPIを含んでいてもよく、如何なる種類のユーザインタフェース及び処理を用いて購読予約に関する情報を受け取り、この情報をエージェントアプリケーションに転送してもよい。
図12は、チャンネル及び購読者画面又はGUI278、284を概念的に示す図であり、これらは、購読予約を受け取るための処理264に関連して用いられる。画面278は、ユーザによって選択される利用可能なチャンネルを示す複数のセクション282を含んでいる。特定のチャンネルが選択されると、画面284に示すように、購読予約のためのユーザの値を受け取るためのセクション286が表示される。ユーザがセクション288を選択すると、購読予約が確定し、又は、ユーザがセクション290を選択すると、購読予約が中止される。例えば、画面278、284は、ハイパーテキストマークアップランゲージ(HyperText Markup Language:以下、HTMLという。)ウェブページとしてフォーマットしてもよく、又は他の如何なる他のフォーマットを用いてもよい。また、画面は、セクションとコンテンツの如何なる構成を含んでいてもよく、可能であれば、必要に応じて、例えばテキスト、図形、ピクチャ、様々な色又はマルチメディア情報を含み、購読者のために、ユーザフレンドリで視覚的に魅力的なインタフェースを提供する。また、画面は、例えば、従来と同様のブラウザ機能を提供するツールバー280を含んでいてもよい。
表14は、C++プログラミング言語で書かれた購読者プログラムの具体例を示している。
Figure 2005521950
Figure 2005521950
ペイロード検査及びチャンネルを介したコンテンツベースのルーティング
図13は、コンテンツベースのルーティングのためのペイロード検査処理300のフローチャートである。処理300は、例えば、フィルタリングデーモン212として表される、インテリジェントルータ92におけるプロセッサ93によって実行されるソフトウェアモジュールにおいて実現される。これに代えて、この処理をASICで実現してもよく、或いはハードウェアとソフトウェアの組合せによって実現してもよい。処理300として示すコンテンツベースのルーティングは、例えば、ネットワークコアやエッジルータ等ネットワーク内の任意の部分におけるインテリジェントルータにおいて実行できる。
包括的に言えば、コンテンツベースのルーティングは、パケットをどのように処理するかを決定するためにパケットのペイロードセクションを検査する処理を含む。このコンテンツベースのルーティング処理は、例えば、購読予約のリストを任意の順序で(例えば、フィルタを用いて)処理し、ルーティング規則に基づいて、メッセージをサブジェクト毎及び属性毎に比較し、メッセージのルーティングを決定し、ネットワークコアにおける処理を実行するステップを有する。この規則は、ルータにおける処理を支配する規則又はフィルタに関連する如何なる規則を含んでいてもよい。これにより、ネットワークコア内にこれらの経路決定を伝えることができる。サブジェクトをチャンネルとして表すことにより、メッセージフォーマットが決定され、これにより、インテリジェントルータは、例えば、特定のチャンネルのメッセージ又はパケットにおいて、属性のバイト位置を知ることによって、メッセージにおける属性の位置を速やかに検出できるようになる。
処理300において、インテリジェントルータ92は、メッセージに関するパケットを受け取る(ステップ302)。インテリジェントルータ92は、パケットから、対応するメッセージのチャンネルIDを判定し(ステップ304)、チャンネルIDを用いて、チャンネルの属性を読み出す(ステップ306)。この実施例では、チャンネル(チャンネルIDから判定される。)の種類は、パケットにおける属性の位置とデータタイプを決定する。チャンネルの属性は、ローカルに保存してもよく、例えばチャンネルマネージャを介してリモートから読み出してもよい。インテリジェントルータ92は、購読予約に対応するフィルタを検索する(ステップ308)。フィルタは、1つ以上の属性検査、多くの場合、購読予約のための属性検査のグループを含んでいる。インテリジェントルータ92は、フィルタ記述内の対応する属性検査をパケット内の属性に適用する(ステップ310)。
フィルタ記述における全ての属性検査の結果が肯定的である場合(ステップ312)、すなわち、属性が全ての属性検査の条件を満たしていれば、インテリジェントルータ92は、フィルタに関連する規則によって予め定められている一組の処理を実行する(ステップ314)。これらの処理としては、例えば、次のリンクにパケットをルーティングする処理及び/又は規則に基づき、ローカルルータにおいて、パケットのコンテンツに対して何らかの操作又は演算を実行する処理等が含まれる。この操作又は次のリンクは、例えば、対応する購読予約を指定するデータ構造において特定される。規則がリンクである場合、規則は、通常、パケットを受け取るための次のネットワークノードを指定し、このネットワークノードとしては、インテリジェントルータ、バックボーンルータ、ネットワークに接続された機器又は他のエンティティが含まれる。これに代えて、この他の手法で、次のリンクを特定し又は購読予約に関連付けてもよい。
フィルタ記述における全ての属性検査の結果が肯定的ではなかった場合(ステップ312)、すなわち、属性が全ての属性検査の条件を満たしていなければ、フィルタの不一致が宣言される(ステップ315)。インテリジェントルータは、フィルタ記述における全ての属性検査が完了するまで又は、最初の否定的結果が得られるまで上述した処理を繰り返し、この2つの条件のいずれかが満たされると処理を終了する。
インテリジェントルータは、このフィルタについて、全ての属性検査を行った後、更なるフィルタが存在するか否かを判定し(ステップ316)、更なるフィルタが存在する場合、処理は、ステップ308に戻り、次のフィルタに関する属性検査が読み出され、そのフィルタに関する検査を実行する。照合処理(ステップ308、310、312、314、315、316)は、フィルタの組全体に対する処理が完了するまで、又は全ての規則に関する判定が得られるまで続けられ、この2つの条件のいずれかが満たされると終了する。パケットがフィルタの条件を満たさない場合、そのフィルタは除外(削除)され、転送されない。
インテリジェントルータ92は、如何なる特定の順序でフィルタを用いた一連の処理を行ってもよい。例えば表15に示すように、インテリジェントルータ92は、ファイル又はルーティングテーブル内に購読予約のためのフィルタを保存でき、これらを順次読み出して、属性にフィルタを適用する(属性検査を行う)ことができる。これに代えて、ルーティングテーブルは、フィルタへのリンク又はポインタを含んでいてもよい。
コンテンツベースのルーティングでは、アプリケーション及び例えばトラヒック条件に基づくアルゴリズムの切換等性能向上ヒューリスティックスに基づいて、任意に2つ以上の手法を同時に用いてもよい。コンテンツベースのルーティングに関するペイロードセクションの検査において用いるために、処理に用いるフィルタは、ネットワーク内のルータにおいて任意に暗号化し、復号し、変形し、併合してもよい。例えば、アプリケーションにおける発行情報が小数点以下2桁より小さい通貨情報を含まない場合、>3.54122ドルの購読情報の端数を丸めて>3.54ドルにしてもよい。また、海外からの発行情報が米国内に存在する最初のルータに到達した時点で、外国通貨を米国の通貨に換算してもよい。
インテリジェントルータ92は、線形的な手法に代えて、処理の速度と効率を向上させることができる他の順序で又は様々なアルゴリズムに基づいて、処理に用いるフィルタを選択してもよい。表16は、購読予約と対応するリンクの具体例を示す。これらの具体例において、サブジェクトは、特定のチャンネルに関連し、サブジェクトに関する購読予約は、フィルタに関するルーティング規則によって表すことができる。サブジェクトは、例えば、ユニフォームリソースロケータ(Uniform Resource Locator:URL)等、コンテンツのソースを特定するためのネットワークアドレスを含むことができる。
Figure 2005521950
Figure 2005521950
図14は、キャッシング処理320のフローチャートである。処理320は、例えば、キャッシュマネージャ218として表される、インテリジェントルータ92におけるプロセッサ93によって実行されるソフトウェアモジュールにおいて実現される。これに代えて、この処理をASICで実現してもよく、或いはハードウェアとソフトウェアの組合せによって実現してもよい。これらは、対応するインテリジェントルータと同じ物理機器であっても異なる物理機器であってもよい。処理320において、インテリジェントルータ92は、データ又はコンテンツと、チャンネルIDと、サブジェクトとを含むメッセージを受け取る(ステップ322)。インテリジェントルータ92は、データに時刻を表すマークを付し(ステップ324)、メモリ94や補助記憶装置97等のローカルメモリにキャッシングする(ステップ326)。インテリジェントルータ92は、キャッシングされたデータにチャンネルID、サブジェクト及びタイムスタンプによりインデクスを付す(ステップ328)。
インテリジェントルータ92がデータの要求を受け取った場合、(ステップ330)インテリジェントルータ92は、その要求に基づき、インデクスを用いて、キャッシングされたデータを検索する(ステップ332)。インテリジェントルータ92は、バックボーンルータ95又は他のルーティングエンティティにキャッシングされたデータを転送し、このデータは最終的に要求者又は他のエンティティに送信される。処理320は、継続的にデータをキャッシングし、キャッシングされたデータを要求に応じて検索できるように、繰り返し実行してもよい。
図15は、処理320に用いられるキャッシュインデクス(336)の具体例を示している。キャッシュインデクス(336)は、データ(338)を受け取り、これをタイムスタンプ(340)とともに保存する。データを収集する際、各データにはΔtの各期間毎にマークが付される。ここで、Δtは、マーク間の時間、例えばt〜t間の期間を表す。時刻を表すマークのために他の如何なる種類のインデクスを用いてもよい。
表17は、キャッシングされたデータに用いられるインデクスを概念的に示している。表18は、キャッシングのための接続履歴を保存するためのデータを概念的に示している。表19は、インテリジェントルータを有するネットワークノードにおいて、ローカルにキャッシングされるデータに用いられるデータ構造の具体例を示している。
時刻を表すマークの付与は、固定された如何なる間隔で行ってもよく、可変の時間間隔で行ってもよい。例えば、データを5分毎にキャッシングしてインデクスを付してもよい。チャンネルマネージャ218は、時刻及びサブジェクトを指定した、キャッシングされたデータを読み出すコマンドを受け取ると(例えば、#.getCache)キャッシュインデクスを用いて、ステップ332における要求に対応するキャッシングされたデータを読み出すことができるか否かを判定する。
各サブジェクト又はチャンネルは、例えば、マルチキャストツリーにおけるそれ自身のIPアドレスと、1組のインテリジェントルータとを含むことができる。表18は、ユーザ装置にローカルに保存することができるこのようなルータ間の接続履歴を示している。エッジルータに障害が発生した場合、装置は、接続履歴にアクセスし、エッジルータがオンラインに戻った際にチャンネルのアップストリームのルータにどのように再接続できるかを調べる。また、装置は、自らが接続されていなかった期間について、キャッシュデータを取得するためのコマンド(get cache command)を実行して、購読予約に関するペンディング中のコンテンツを得ることができる。
Figure 2005521950
Figure 2005521950
Figure 2005521950
Figure 2005521950
これらの例示的なデータ構造は、以下の情報を含んでいる。サブジェクトノードは、サブジェクト識別子と、サブジェクトレベルと、親チャンネル又はサブジェクトノードへのポインタと、自らのディレクトリのためのファイル記述子と、次のレベルのサブジェクトノードを含むハッシュテーブルへのポインタと、データノードへのポインタとを含んでいる。データノードは、サブジェクト親ノードへのポインタと、データディレクトリのためのファイル記述子と、各ストレージデバイスに保存されたデータのためのデータ構造を含む循環型のバッファと、バッファのヘッド及びテールと、読出及びストレージの間にデータノードをロックするためのロックとを含んでいる。保存されたタイムグレインノード(time grain node)は、実際のデータファイルを表すノードであり、最後のグレインノードは、ストレージデバイスにはまだ保存されていないがメモリに保持されているバッファを表す。この実施例におけるキャッシング及びデータ格納スレッドは、最後のタイムグレインノードのミューテックスを用いて、最後のタイムグレインノードが同時にアクセスされることを防いでいる。
エージェントにおける処理
図16は、送信される購読予約メッセージのためのエージェント処理350のフローチャートである。処理350は、例えば、ユーザ(購読者)装置122におけるプロセッサ134によって実行されるエージェント128を含むソフトウェアモジュールによって実現することができる。処理350において、エージェント128は、例えば、図11及び図12を用いて上述した処理(ステップ352)によって生成された購読予約を受け取る。エージェント128は、購読予約のための論理式を特定するストリングを作成し(ステップ354)、ストリングを解析して、購読予約におけるエラーを検出する(ステップ356)。エラーが存在している場合、エージェント128は、ユーザにエラーメッセージを示し(ステップ360)、ユーザがエラーを修正し、購読予約を再入力するように促す。購読予約がエラーを全く含んでいない場合(ステップ358)、エージェント128は、後述するように、データ構造内の表現を保存する(ステップ362)。エージェント128は、データ構造に含まれる不等価演算子を正の形式に変換し(ステップ364)、更にデータ構造を対応する選言標準形(disjunctive normal form:以下、DNFという。)に変換する(ステップ366)。また、エージェント128は、範囲フィルタ及びメンバーシップ検査のみが含まれるように、DNF構造のAND式を簡約する(ステップ368)。
DNFは、論理式が1つ以上の部分式のOR(選言と呼ばれる)として表され、各部分式が1つ以上の属性検査のANDで表されるよく知られている標準形である。例えば、論理式(price >= 10 AND (symbol ="LU" OR symbol ="T"))に同等なDNF表現は、((price >= 10 AND symbol ="LU") OR (price >= 10 AND SYMBOL ="T"))である。
ステップ364における変換は、「不等価」演算子(例示的な構文では、!=と表す。)を有する表現を、許可されていない1つの値に代えて、許可されている全ての値を特定する同等な「正」の形式に変換する処理を含む。この実施例に用いるルータは、正の形式の式を要求するため、この変換は、DNFを生成する前に行われる。例えば、表現(price != 80)は、同等な正の表現(price<= 79 OR price >=81)に変換される。
ステップ368における変換は、DNFが作成された後に実行され、ここで生成されたAND式を更に簡約する処理を含み、これにより、この実施例におけるルータの処理が簡約される。具体的には、特に、同じ属性に関する複数の属性検査のANDは、1つの下限、1つの上限、下限及び上限の両方及び等価検査の場合、単一の値のいずれかを含む正準な「範囲フィルタ」に簡約できる。特定の種類の範囲フィルタは、例えば表22に基づいて符号化される。
例えば、表現(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」の値がないので、偽に簡約することができる。フィルタ表現全体が偽に簡約される特別な場合、エージェントは、メッセージを作成する必要がなく、これによりルータを不要な作業から解放することができる。
サブジェクトフィルタがワイルドカードを含んでいる場合、エージェント128は、後述するように、それらを任意に変換することができる(ステップ370)。これに代えて、如何なるワイルドカードもユーザ装置又は他の機器ではなく、ネットワークにおいて変換してもよい。この例示的な実施例では、サブジェクトフィルタのための構文は、ワイルドカードを用いる唯一の構文であり、属性フィルタのための構文は、論理式を用いる唯一の構文である。これに代えて、サブジェクトフィルタと属性フィルタについて、異なる又は可変の種類の構文を用いてもよい。
エージェント128は、生成されたDNF表現をメッセージに符号化し(ステップ372)、メッセージをインテリジェントルータに転送する(ステップ374)。この符号化は、購読予約のフラットなメッセージフォーマットへの変換処理を含み、これは、フラットなメッセージフォーマットとは、データのストリングから構成されるフォーマットを意味する。また、この転送の処理は、購読予約に関してサブジェクトフィルタと属性フィルタによって生成されたルーティング規則をネットワークにおける1つ以上のインテリジェントルータ又は他のルーティングエンティティに伝播させる処理を含む。この伝播のために、例えば、購読予約の表現を従来のパケット構造にマッピングすることができる。
ステップ372における符号化は、チャンネルを介した伝播のために、チャンネルに対応する購読予約をメッセージングAPIのメッセージングフォーマットに変換する処理を含む。例えば、購読予約は、サブジェクト#.SUBSCRIPTIONを含む通知として内部的にメッセージングされる。任意の個数のサブジェクトフィルタフィールドと任意の個数の属性検査の両方があるので、この実施例では、1組のバイトを用いてサブジェクトフィルタフィールドの個数を保存し、もう1組のバイトを用いて属性検査の個数を保存する。サブジェクトフィルタの個々のフィールドは、例えば元の購読予約で指定された順序に並べ替えられ、それぞれメッセージの2バイトの部分に格納される。ワイルドカードフィールドの整理については後述する。
属性検査の配列においては、検査のオペランドは、通知における属性値の配置と同様、メッセージの最後に配置される。属性検査とオペランドを配置する前に、これらは、所定の属性に対する位置順の検査と、これに続く任意の属性に対する名称順の検査によって、DNFの各選言肢内で属性順にソートされる。更に、各選言肢内のスカラ的に評価された属性に対する関係検査の組は、1つの極限を有する範囲フィルタ(右又は左が開いている範囲又は等価検査)又は、2つの極限(別個の極限の間の閉じられた範囲)として、標準形に簡約される。検査に関する残りの情報は、オペランドと同じ順序で例えば、2つのバイトの対に符号化される。この2つのバイトの対のシーケンスは、メッセージ内において、サブジェクトフィルタフィールドの2バイトの符号化データのシーケンスの直後に配置される。2つのバイトの対は、属性検査のビットストリング符号化データのシーケンスの1つの形式を構成でき、これは、2つのバイトの対とは別に、他の種類の符号化データを表すためにも用いることができる。属性検査の具体例については、後述する。
表20は、属性検査の符号化のための手法を示している。表21は、2つのバイトの対による符号化を示し表22は、2つのバイトの対における演算子IDの符号化を示している。
Figure 2005521950
Figure 2005521950
Figure 2005521950
検査のための2つのバイトの対が既に検査のオペランドの両方の種類を示しているので、検査が所定の属性に適用されるか任意の属性に適用されるか否かに関わらず、任意の属性又はそれらの種類に対して実行される複数の検査を個別に整理する必要はない。この手法では、通知における所定の属性の数が127個以下であると仮定している。これに代えて、この設計において、より多くのビットを用いて属性検査を符号化してもよい。
この配列の取り決めでは、属性フィルタのDNFに基づいて、属性検査の順序を決定し及びこれらをグループ化するが、インフラストラクチャ要素(例えば、ルータ)は、属性フィルタの包括的な評価をより効率的に行うために、検査を別の順序で(例えば、異なる検査の成功又は失敗の確率に関するローカルデータから動的に導出される順序で)選択して評価してもよい。メッセージの購読予約IDフィールドは、後続する要求において、エージェントのエッジルータへの購読予約を固有に識別し、購読予約を変更又は取り消すためにエージェントによって生成される値である。具体的には、購読予約の属性フィルタへの動的な変更は、サブジェクトが#.RESUBSCRIPTIONである点及び購読予約IDが事前に登録され、現在変更されている購読予約のIDである点を除いて、図18の実施例に示されるメッセージフォーマットを用いて伝播される。購読停止(unsubscription)は、例えば、サブジェクトを#.UNSUBSCRIPTIONとし、購読予約IDを先に登録され、購読停止処理が行われている購読予約のIDとして、購読予約IDフィールドを介して、図18に示すメッセージフォーマットを用いて伝播される。
以下、上述したエージェントによる変換及び符号化の具体例を説明する。まず、次のような属性フィルタ表現の具体例について考察する。すなわち、price>=10及び(symbol == "LU" 又は(volume >= 1000且つvolume <= 10000))。図19は、ステップ362において、表現を保存するためにエージェントによって用いられるオブジェクトを統一モデリング言語(UML)によって表したダイアグラム390を示している。このダイアグラム390は、変数、定数又はその両方を含むことができる購読予約を特定するための階層関係を示している。ダイアグラム390内のオブジェクトは、個々の実施例に応じて、フィルタクラスのインスタンスであってもよい。各SimpleFilterオブジェクトは、フィルタ表現の対応する属性検査に関する情報を保存するために用いられる属性の値を表している。図19に示す表現では、ORフィルタ396は、2つのANDフィルタ392、400を結合している。ANDフィルタ392は、購読予約のための属性を有するシンプルフィルタ(simple filter)394を含んでいる。同様に、ORフィルタ396は、シンプルフィルタ398を含み、ANDフィルタ400は、シンプルフィルタ402と404を含んでいる。
この実施例においては、関連するチャンネルの属性として、属性価格(price)、シンボル(symbol)及びボリューム(volume)が予め定義されているとし、これらの属性について、それぞれ位置0、1、2が定義されているものとする。更に、各属性の種類をそれぞれ、符号なし整数(タイプコード6)、文字アレー(タイプコード12)、符号なし整数(タイプコード6)とする。
次に、属性フィルタとして上述した属性フィルタ表現を含む購読予約について考察する。図18は、購読予約をメッセージに配列した具体例を示している。図18の左側のデータ構造386は、実際のメッセージのコンテンツを示しており、図18の右側のデータ構造388は、メッセージの各部分の説明を示している。この図面における各データ構造の幅は、4バイトに対応している。配列を行う前に、フィルタは、(price >= 10 and symbol == "LU")又は、(price >= 10 and volume >= 1000 and volume <= 10000)のような同等なDNFに変換される。
16ビットの属性検査符号化データは、異なる部分を分離するギャップを有するビットシーケンスとして示される。なお、この実施例においては、価格に対する2つの検査は、それぞれ別々の選言肢内に存在するので、結合することができず、したがって、これらは、右側の境界を有さない範囲(右側が開いた範囲)として個別に配列される。一方、ボリュームに対する2つの検査は、同じ選言肢内に存在するので、結合することができ、したがって、これらは、単一の「閉じた範囲」の検査として整理される。
また、あるフィールドは「仮定(assumed)」として特徴付けられ、これは、この具体例においては、これらのフィールドの値が、任意に選択され、通常、配列された購読予約から独立していることを意味する。更に、購読予約のためのサブジェクトフィルタは、「>」として任意に選択され、これは、関連するチャンネルによって定義された如何なるサブジェクトにも一致する。上述し、図18及び図19に示した具体例は例示的なものであり、この整理は、他の如何なる種類の購読予約とともに用いてもよい。また、処理350は、購読予約の整理の一例に過ぎず、購読予約は、他の如何なる方法によって整理してもよい。
図17は、送信されてきたメッセージのためのエージェント処理376のフローチャートである。処理376は、例えばユーザ装置122内のエージェント128及びアプリケーション126によって実現することができる。処理376において、エージェント128は、インテリジェントルータから購読予約に対応するメッセージを受け取る(ステップ378)。128エージェントは、例えば、メッセージのチャンネルIDによって購読予約に対応するチャンネルを判定し(ステップ380)、チャンネルのAPIを呼び出す(ステップ382)。APIは、ユーザ装置において、購読予約のためのデータをGUI又は他のフォーマットで表示する(ステップ384)。入力メッセージに対する処理としては、上述した符号化処理の逆のデータ復号処理を用いることができ、この復号(逆符号化)は、ルータ又は他のネットワークエンティティにおいて実行することができる。
ワイルドカード処理
図20は、ワイルドカード処理410のフローチャートである。処理410は、フィルタのルーティング規則の組を用いて、ワイルドカードを購読予約のための表現に変換する処理の一例である。処理410は、例えば、ユーザ装置122内のプロセッサ134によって実行されるエージェント128によって表されるソフトウェアモジュールとして実現してもよい。これに代えて、ネットワークにおいて、ソフトウェア制御の下で、インテリジェントルータ92又は対応する機能を有するASIC91内のプロセッサ93によりワイルドカードを処理してもよい。ワイルドカードは、開かれたフィールド又は可変長フィールドを含んでおり、表21はこのようなフィールドの具体例を示している。
処理410において、エージェント128又は他のエンティティは、ワイルドカードを含む購読予約を受け取る(ステップ412)。購読予約のサブジェクト長は、発行者がコンテンツを発行する際に指定でき、サブジェクトは、発行者装置において前処理してもよく、例えばサブジェクトのフィールドを数え、これによりフィールドカウント(長さ)を算出してもよい。128エージェントは、フィルタオペランド内のフィールドの数を数える(ステップ414)新たな規則(フィルタ)をフィールド長=Nとして初期化する(ステップ416)。エージェント128は、購読予約のサブフィールドを読み出し(ステップ418)、フィルタオペランドサブフィールド0[i]がワイルドカードであるか否かを判定する(ステップ420)。フィルタオペランドサブフィールドがワイルドカードでない場合、エージェント128は、連言項(conjunctive clause)を規則に追加し、フィールド[i]=0[i]とする(ステップ422)。フィルタオペランドが更なるサブフィールドを有している場合(ステップ424)、エージェント128は、ステップ418に戻り、この更なるサブフィールドを処理する。パラメータ「i」は、フィールドを表し、iは、この実施例においては、フィールド番号を表す整数である。
サブフィールドを処理した後にエージェント128は、最後のフィルタオペランドサブフィールドが「>」であるか否かを判定し(ステップ426)、最後のフィルタオペランドサブフィールドが「>」である場合、長さの制約条件をフィールド長>N−1に変更する(ステップ428)。ワイルドカード処理は、如何なる種類のシンボルを用いてもよく「>」は、その一例に過ぎない。この具体例においては、「a.>」により、a.b、a.c、a.d等及び全てのレベルにおけるこれらの全てのサブサブジェクト(例えば、a.b.x、a.c.x、a.b.x.y等)を表すことができる。また、他のシンボルをワイルドカードとして用いてもよい。
必要であれば、エージェント128は、変形した規則をインテリジェントルータ又はネットワークにおける他のエンティティに伝播する(ステップ430)。処理は、全てのサブフィールドについて繰り返され、これにより、ワイルドカードが非ワイルドカード規則に変換される。非ワイルドカード規則とは、ワイルドカードを含まない規則を意味する。ワイルドカードの変換は、ネットワーク内のどこで行ってもよく、例えば、購読者装置又はインテリジェントルータにおいて行ってもよい。したがって、この変換は、変形規則によって1つのエンティティで行い、他のエンティティに伝播させてもよく、又はこの変換を動的に行ってもよい。
表23は、ワイルドカードの処理のためのこれらの例示的なルーティング規則の概要をその具体例とともに示している。これらのルーティング規則は、例えば、インテリジェントルータで生成してもよく、又は他のネットワークエンティティで生成し、インテリジェントルータに伝播させてもよい。更に、表23のルーティング規則は、説明のために例示的に示しているに過ぎず、他のルーティング規則を用いてワイルドカードを変換してもよい。
Figure 2005521950
信頼性の低いネットワークにおける信頼性が高い発行−購読システム
ここに説明する発行−購読ネットワーク(例えば、図1〜図3に示す。)等の発行−購読ネットワークの主な目的は、購読者に対し効率的且つタイムリーに、購読予約に一致する通知を配信することである。発行−購読ネットワークを実現するためには、ネットワークパケットの形式で発行者から購読者に通知を伝送する必要がある。信頼性の低いネットワークとは、例えば、これらの幾つかのネットワークパケットが伝送中に失われる可能性があるネットワークを含んでいる。この実施例において克服すべき主要な技術的課題は、通知(すなわち,ネットワークパケット)が伝送エラーのために失われたのか、アップストリームのルータにおけるフィルタリングメカニズムによって除外されたのかを判定することである。
図21は、発行−購読ネットワークの信頼性を高める処理520のフローチャートである。この処理520では、信頼性が高い伝送プロトコルを使用している。具体的には、信頼性は、隣接する一対のルータ間で(又はルータとユーザ装置の間で)信頼できる伝達メカニズム(信頼できるトンネル)を用いることによって実現される。ルータが、送信されてきた通知を隣接するルータに転送する必要があると判断した場合、このルータは、信頼できる伝送プロトコル、望ましくはTCPを用いてメッセージを転送する。各ルータは、ダウンストリーム側に隣接するエンティティ(ホップ距離=1)への通知の配信のみを行う。したがって、発行者から購読者までの信頼できる通知の送達は、ホップバイホップ式に行われる。処理520は、ソフトウェア制御の下で、インテリジェントルータ92又は対応する機能を有するASIC91内のプロセッサ93により実行される。また、処理520は、例えば、ユーザ装置100のプロセッサ114によって実行されるエージェント105によって表されるようなソフトウェアモジュールにより実現してもよい。
TCPを用いることにより、ここに説明する発行−購読システムのコンテンツベースのルーティングに信頼できる伝送プロトコルを組み込むことができ、好ましいことが見出された。発行−購読システムにおいて用いることができる他の技術として、前方誤り訂正がある。前方誤り訂正では、複数の通知パケットを受信機に送信し、このうちの1つが良好に受信されることを期待する。これにより、使用される帯域幅を犠牲にして、パケットが受信される確率が高くなるが、配信が確実に保証されるわけではない。第3の技術として、高信頼性マルチキャストがあり、ここでは、一組のマルチキャスト受信機がマルチキャスト送信側から「同じ」パケットの組を受け取ることが約束される。この手法は、異なる受信機が、異なる購読予約に基づいて、異なる通知を受け取る必要があるCBR発行−購読システムでは用いることができない。
発行−購読ネットワークにおけるノードは、ネットワークを介して、コンテンツの購読予約を受け取る(ステップ522)。発行者から受け取られたコンテンツは、ネットワーク内のノードにおいて、コンテンツに関する通知を受け取ることによって、購読予約に基づくCBRを用いて、ネットワークを介して発行され(ステップ524)、この通知を隣接するノードに送信するべきか否かが判定され(ステップ526)、この判定に基づいて、信頼できる伝送プロトコルを用いて、この通知が隣接するノードに選択的に転送される(ステップ528)。これらのステップは、好ましくは、上述したCBR処理のいずれかに従って実行される。
ステップ528において用いられる信頼できる伝送プロトコルは、好ましくは、TCPである。TCPは、OSIモデルのトランスポート層の通信規約である。TCPは、送られたバイトの総量がもう一方の端末において正しく受け取られることを約束する転送機能を提供する。したがって、転送ステップ528は、単一のノードから単一のノードに対して実行され、伝送エラーが生じた場合、転送ステップ528は、通知の伝送における失敗を示す指示情報を受け取る処理(ステップ5281)及びこの指示情報に応じて通知を再送する処理(ステップ5282)を含む。このような伝送の失敗を示す情報の要求は、好ましくは、通知のパケット内にカプセル化される。
通知パケットは、再送する必要が生じた場合に備えて、好ましくは、バッファ内にバッファリングされる。特定の隣接するノードのためのバッファが一杯になった場合、そのノードへのデータの供給を停止してもよく、先入れ先出し式にパケットを削除してもよく、又は、補助記憶装置にパケットを保存してもよい。これに代えて、所定の発行者又は購読者に対してあるサービス品質(QoS)が保証されている場合、QoSに基づいて、バッファからパケットを選択的に削除してもよい(例えば、QoSによる制約に関係しないパケットから先に削除する)。
図21に示すように、隣接しているノードに対して更なるルーティングが必要である場合、隣接しているノードのための処理が繰り返される(ステップ530)。このように、処理520により、発行者から購読者にホップバイホップ方式で信頼できる通知の送達を実現できる。
フィルタ伝播
コンテンツベースのルーティング(Content-based routing:CBR)は、制約に基づくルーティング(constraint-driven routing)の一種である。上述した発行−購読ネットワーク等CBRの機能によって性能が向上された発行−購読ネットワーク(例えば、図1〜図3参)では、望ましくは、特定のコンテンツ(すなわち、購読予約)の発行における購読者の興味は、フィルタと呼ばれるエンティティ内にカプセル化される。ネットワークにおけるルータは、好ましくは、フィルタを用いてによって用いられて、経路決定を行う。エッジ又はユーザ端末においてのみ実行できる従来のフィルタリング法とは異なり、ネットワークコアで動作できるこのCBR法は、これらのフィルタの伝播を伴う。購読者が受け取るパケットのコンテンツに関して制約条件を課す能力を購読者に与える場合、及びこれらのコンテンツ制約条件がパケットをルーティングするためにネットワークのコアで用いられる場合、効率とネットワークの機能性の両方がCBRの恩恵を受ける。
この実施例では、スケーラビリティが高い幾つかのフィルタ伝播法を提供し、これにより、(1)発行者と購読者の間のデータパスに沿って、コアルータに、コアルータから及び/又はコアルータ間でフィルタを伝播でき、及び(2)必要であれば、ネットワークのエッジだけではなく、ネットワークコア内で、CBRをアップストリーム側に対して実行することができる。CBRを(例えば、ネットワークコア内、又は発行者装置までを含む)アップストリーム側に行うことにより、ダウンストリーム側に頻繁にルーティングする必要があるデータパケットの数を大幅に削減することができる。この結果、ネットワークのトラヒック負荷が削減される。
ここに説明するフィルタ伝搬処理は、如何なる名称及び如何なる形式コンテンツフィルタをネットワークのコアに、コアから及びコア間で伝播する側面も含む。フィルタの伝播は、多くの側面を有し、多くの問題を含んでいる。ここに説明するフィルタ伝播法によって解決すべき重要な課題は、フィルタが伝播ストリームの「上流(up)」、すなわち、膨大な数のフィルタソースから(例えば、購読者)少数のフィルタデスティネーション(例えばコアルータ、エッジルータ又は発行者)に移行する際、多数のフィルタが構築されることを回避することである。この問題は、「累算(accumulation)」問題とも呼ばれ、例えば、ツリー型のトポロジに縦列に接続されたノードから構成されるネットワークに発生する問題である。
この問題及び他の問題を解決するために設計されたソリューションは、規則、手続き、ポリシ、処理、メカニズム、プロトコル、メッセージフォーマット、データ構造及び/又はアルゴリズムのうちの1つ以上からなる組を含む。これらのソリューションにより、速やかで(例えば、簡素化、併合処理、効率的な整理等による。)、スケーラブルで(例えば、併合処理、概算処理等による。)、動的で(例えば、新規購読予約、購読停止、修復等による。)、安全で(例えば、認証による。)、個人的で(例えば、暗号化による。)、信頼性が高く(例えば、TCP接続、信頼できるトンネル、符号化、回復プロトコル等による)、柔軟で(例えば、消極的伝播(後述する)、様々なマルチキャストトポロジ又はプロトコルによる。)、ユーザの要求に適合した(例えば、購読者/発行者振る舞い符号化による。)フィルタ伝播を実現できる。ここに説明する伝播処理は、これらのソリューションを利用して、これらの及びこれらの利点を実現する。
A.ネットワークトポロジフィルタ伝播ストラテジ
発行−購読システムは、マルチキャスト、同報通信又はモバイル発行−購読ストラテジでによって実現することができる。フィルタ伝播は、ネットワークトポロジに埋め込んでもよく、又は発行者及び購読者をリンクするために選択されているストラテジによって強制されるネットワークトポロジの「上位に」又はネットワークトポロジに加えて実行してもよい。また、これに代えて、フィルタ伝播ストラテジは、フィルタが埋め込まれた購読予約を広告のデスティネーションに直接配信できる発行の広告を含む発行−購読スキーム等の発行者と購読者とをリンクするためのストラテジそのものであってもよい。
マルチキャストのカテゴリにおいて、フィルタ伝播は、マルチキャストに用いられるプロトコルに一致するプロトコル(例えば、プロトコル独立マルチキャスト−スパースモード(protocol independent multicast-sparse mode:PIMSM)、プロトコル独立マルチキャスト−デンスモード(protocol independent multicast-dense mode:PIMDM)、コアベースのツリー(Core-Based Tree:CBT)、距離ベクトルマルチキャスト経路選定プロトコル(distance vector multicast routing protocol:DVMRP)、マルチキャストオープン最短経路ファースト(multicast open shortest path first:MOSPF)等)を用いることができる。用いられるプロトコルに応じて、フィルタ伝播は、双方向であっても又は単方向であってもよく、多くのフィルタ伝播ストラテジが可能である。ストラテジとしては、1)フィルタが受け取られると、全てのフィルタが全ての可能なアップストリームのリンクに伝播される(積極的伝播スキーム)ストラテジ、2)受け取られた発行者のパケットに応じてフィルタ伝播を開始する(消極的伝播スキーム)ストラテジ、3)発行者による同報通信広告に応じて伝播を行うストラテジ、4)ネットワークトポロジ(例えば、MOSPF)の算出の後に伝播を行うストラテジ、5)周期的にフィルタ伝播を行う(例えば、フィルタタイムアウトをサポートするシステムにおけるリフレッシュ要求を満たす)ストラテジ、6)ネットワークにおける障害の修復の間にフィルタ再伝播を要求するストラテジ、7)ネットワークの再構築の間にフィルタ再伝播を要求するストラテジ、及び/又は8)これらの組合せがある。ストラテジは、好ましくは、ここに説明するフィルタ伝播法及び規則に従う。
B.フィルタ伝播のためのリンク−レベル接続メカニズム
フィルタ伝播処理にかかわるソースとデスティネーションを接続する手法としては様々な手法がある。例えば、フィルタ伝播処理に関わるソースとデスティネーションは、1)ホップバイホップ方式で(例えば、ルータからルータへ)、2)エンドツーエンド方式で(例えば、オフラインデータ検索においてユーザ装置からキャッシュへ)、3)トンネルを用いて、4)伝送制御プロトコル(TCP)を用いて、5)ユーザデータグラムプロトコル(UDP)(例えば、信頼できるデータ回復メカニズムに代わる)を用いて、6)セキュリティプロトコルを用いて、7)他のプロトコルを用いて、8)ルータ及び/又はユーザ装置のカーネル内のみにおいて、9)ルータ及び/又はユーザ装置において、ユーザレベルの処理だけに関して、10)ルータ及び/又はユーザ装置においてカーネルとユーザレベル処理の両方の全ての可能な組合せに関して(例えば、カーネルからアプリケーションへ、アプリケーションからカーネルを経てアプリケーションへ、等)、及び/又は11)上述の任意の組合せによって接続することができる。
C.フィルタ伝播のデスティネーション
以下に示すように、フィルタは、発行−購読ネットワーク内のどこに挿入してもよく、1)発行者と購読者の間でエンドツーエンド接続を形成する全てのルータとユーザ装置、2)エッジルータを含むネットワークにおけるあらゆるルータ、3)コアルータのみ、4)エッジルータのみ、5)購読者装置、6)発行者装置、7)管理者装置、キャッシュ、9)バックアップルータ、10)パケットを取り扱う任意のルータ、11)ネットワーク修復又は障害回復に関わる新しいルータ、及び/又は12)これらの如何なる組合せのうちのいずれに挿入してもよい。フィルタは、好ましくは、概算、併合処理及び他の処理で変更される。上述したデスティネーションの各カテゴリについて、伝播されるフィルタの形式を異ならせてもよい。
D.フィルタ伝播のソース
フィルタ伝播のソースは、発行−購読ネットワーク内のどの部分であってもよい。
フィルタソースの具体例としては、セクションCに列挙した部分がある。同様に、フィルタは、好ましくは、伝播の間に、概算、併合処理及び他の処理で変更され、したがって、異なるソースからのフィルタは異なる形式を有していることが多い。
E.潜在的フィルタ受信者の振る舞いの規則
また、フィルタ伝播は、潜在的受信者の振る舞いとニーズによっても異なるものとすることができる。例えば、1)永久的又は半永久的な位置に位置する発行者は、その位置にフィルタが伝播されることを望み、2)移動する発行者は、現在の位置からすぐに離れてしまうので、その位置にフィルタが伝播されることを望まず、3)ログオフする前に僅かなコンテンツのみ発行する予定の小規模な発行者は、フィルタを必要とせず、4)大規模の発行者は、ネットワーク帯域幅を節約するために最初のコンテンツの組を発行する前にフィルタが伝播されることを望む場合があり、5)アクセス許可を制限している発行者は、そのアプリケーションにおいて購読者のプライバシーと機密性を保護するために、フィルタの伝播を拒否することがあり、6)フィルタタイムアウトストラテジを実装するコアルータは、ダウンストリームのルータから周期的更新を必要とし、及び/又は7)購読者装置に常時接続されないエッジルータは、購読予約又は興味のフィルタが定期的に更新されることを望む場合がある。これらの全ての振る舞いの性質と他の性質は、例えば、発行者広告を用いること、第1の発行における発行者の振る舞いを符号化すること、フィルタ更新を周期的に送信すること、及びフィルタ受信者のニーズを伝える他の技術によって弁別することができる。
F.フィルタ送信者の振る舞いの規則
また、同様に、フィルタ伝播は、例えば以下のように、フィルタ送信者の振る舞いとニーズによって異なるものとすることもできる。1)購読者は、発行されたコンテンツのサンプリングを希望する場合、(システムにより定義された、又はユーザにより定義された)制限時間を有する一時的なフィルタのみを使用することを望む場合がある。2)購読者が移動可能であり、購読者が移動した後にフィルタを期限切れにする。3)エッジルータに常時接続されていない購読者は、CBRシステムにおいて、自動フィルタタイムアウトをサポートする定期的なフィルタ更新の送信を望む場合がある。4)幾つかのポリシでは、購読者は、フィルタを伝播する前に認証されることが必要であると定めることができる。5)自動フィルタタイムアウトをサポートするCBRシステムのルータは、定期的にフィルタ更新を送信する必要がある。6)所定の組のデータのみのための特定のクエリは、フィルタを含み又はフィルタによって実現することができる(例えば、クエリ又は購読予約に応答してキャッシュから読み出されたデータ、持続的なバックアップデータ、障害回復時に復元されたデータ等)。7)伝播のためにフィルタを変更したルータは、送信者のニーズに基づいき、伝播されたフィルタがどう変更されているかをアップストリームのルータに示すことができる。これらの全ての振る舞いの性質及び他の性質は、例えば、フィルタ伝播メッセージの振る舞いを符号化することによって又は特別なプロトコル(例えば、認証のためのプロトコル)を用いることによってサポートすることができる。
G.伝播されるフィルタの処理
フィルタの処理は、フィルタのコンテンツ又は表現及び/又は単にフィルタを組織化する管理機能を変更する変換処理を含んでいてもよい。購読予約における元のフィルタ表現は、データ配信通路の異なる部分における、異なる処理手順の組を引き継ぐことができ、受けることができ、これらには、次のような経路セクションが含まれる。1)購読者装置からエッジルータまで。2)エッジルータからコアルータまで。3)2つのコアルータの間。4)コアルータから発行者側のエッジルータまで。5)エッジルータから発行者装置まで。これらの変換処理の幾つかの具体例は、上述した通りである(例えば、エージェント処理及びワイルドカード処理参照)。これらの処理は、購読者装置、発行者装置、エッジルータ又はコアルータ等、発行−購読ネットワーク中のどこで実行してもよい。エージェント(購読者装置及び発行者装置上のエージェント)及びデーモン(ルータ上のデーモン)等のコンポーネントによってこれらの処理を実行してもよい。
処理の具体例としては、以下のような処理がある。1)属性コンテンツの変換(例えば、サブジェクト名からサブジェクトIDへの変換、ストリングからそれらの辞書的値への変換、ある通貨から他の通貨への変換等)。2)表現の拡張(例えば、ワイルドカードからそれらの成分への拡張)。3)表現の変換(例えば、>演算子から>=演算子への変換、!=演算子から>及び<演算子への変換等)。4)表示の変換(例えば、ストリング表現から数値の又はポーランド記法や括弧を含む記法等のシンボリックな表現への変換、又はツリー、基数トライ等のフィルタの保存又は照合のために用いられる特定のデータ構造に適切な表示への変換等)。5)符号化/復号(例えば、チェックサム)。6)暗号化/平文化。7)装置レベルの並べ替え及び逆並べ替え。8)プロトコルレベルの、所定のフィルタ伝播メッセージフォーマットへの及び所定の伝播メッセージからの並べ替え。9)分解(例えば選言標準形(DNF)への分解)。10)冗長な述語表現(例えば、$1>5&&$2>3&&$1>3)の簡約。11)2個以上のフィルタの包摂。12)併合処理の前及び併合処理の後のフィルタの概算。13)2個以上の異なるフィルタの併合処理
(例えば、概算に基づく)。14)2個以上の別個のフィルタのグループ化(例えば、異なるアップリンクへの伝播のための)。15)フィルタの購読停止又は除去。16)フィルタの期限終了。17)フィルタの差分更新(例えば、古いフィルタの組を何らかの表現でブックキーピングし、これから新しいフィルタの組を減算して、フィルタ構成における変更を得る、すなわち、差分更新する)。18)フィルタパターンの構成(例えば、フィルタ1が一致した場合、フィルタ2も一致するといったパターン)。上述した又は上述していないフィルタ伝播に関する如何なる処理もここに説明するフィルタ伝搬法において利用できる。
H.フィルタ伝播メッセージのコンテンツ及びフォーマット
フィルタの送信又は伝播のためにメッセージを用いることができる。伝播されるフィルタを含んでいるメッセージのコンテンツとフォーマットは、フィルタに施される変換処理及び、伝播の間に、フィルタ伝播をトリガする状況の影響を受けることがある。フォーマットの具体例を以下に示す。1)装置又はユーザレベルにおけるあらゆるメッセージレイアウト。2)フィルタは、固定された又はランダムの位置に属性を含むことがある(例えば、発行された情報の任意の部分に一致するストリング)。3)フィルタは、固定サイズ(例えば、整数、ブール等)を有していてもよく、又は可変サイズ属性(例えば、アレー、ストリング、c構造等)を有していてもよい。4)フィルタのデータ種類は、単純(例えば、整数、ブール等)であってもよく、又は複雑(例えば、アレー、ストリング、範囲変数等)であってもよい。5)フィルタは、単純な検査(例えば>、==、<=等)又は複雑な検査、又は演算子(例えばメンバシップ検査検査、正規表現、ストリング照合、インターセクションクエリ、エンクロージャクエリ、コンテインメントクエリ等の範囲演算子を含んでいてもよい。6)分解されたDNFフォーマット。7)フィルタの簡約された又は元の表現。8)コンパクトな又は拡張されたフォーマット(例えば、一方向のフィルタを2つの極限を用いて表現することができ、又は双方向のフィルタを2つの一方向のフィルタに書き換えることもできる)。9)フィルタの部分的な表現(例えば、ストリング述語の切捨て、データタイプ分解能の低減、属性数の低減)。10)フィルタの表現の変換(ポーランド記法、括弧、ツリー、トライ等)。11)サブジェクトフィールドの包含/除外(例えば、サブジェクトフィルタリングは、フィルタが伝播されるマルチキャストバックボーンによって既に実現されていてもよい)。12)ワイルドカードサブジェクト又は属性述語の拡張。13)コンテンツ又は表現の変換。14)符号化情報(例えば、エラー訂正チェックサム等)。15)暗号化。16)フィルタの完全な組(例えば、障害回復の間、システム内のフィルタ制限時間によって更新情報をリフレッシュする)。17)フィルタの部分的な組(例えば、包摂されたフィルタの組に新たなフィルタのみが挿入され、又は古いフィルタが除外される)。18)フィルタの変更された組(併合されたフィルタ、概算されたフィルタ)。19)フィルタに類さないフィルタ表現における差分の変更(例えば、フィルタの挿入及び削除の間の基数ツリーにおける変化)。20)座標に代わるフィルタの識別ラベル(例えば、購読停止の間)。21)フィルタの期限切れパラメータ。22)フィルタパターン化情報。23)セクションFに示したような、フィルタ送信側の振る舞いと要求を符号化する情報。これらは、ここに説明する処理において用いることができる、伝播されたフィルタの可能なコンテンツ及びフォーマットを例示的に示しているに過ぎない。
I.フィルタ伝播のための手続き及びポリシ
システムレベルにおいて、フィルタ伝播の側面の一部又は全てを支配するポリシ及び手続きを確立してもよい。これらの側面には、例えば、以下のような側面が含まれる。1)管理(例えば、全体的なシャットダウン及び再起動リスタート)。2)メインテナンス(例えば、障害回復)。3)フィルタ持続性(例えば、期限切れ、キャッシングされたデータに対する一回のフィルタリング)。4)性能向上ポリシ(例えば、平均化、エッジ選択、積極的伝播対消極的伝播等)。5)監視(例えば、故障報告)。6)会計(例えば、統計的なブックキーピング)。7)課金。8)規制(例えば、フィルタを伝播させるための認証、ネットワークにおいて許可されたフィルタの種類等)。9)ユーザ認証。10)ユーザ支援(例えば、サブジェクトフィルタリングためのディレクトリサービス)。10)購読者プライバシ(例えば、他の購読者からフィルタを隠す)。11)同期(例えばエッジルータでフィルタを受け取った際の購読者への承認、フィルタ伝播が終了した際の購読者への承認、回復等の間、ルータを修理することへの承認等)。12)優先順位付け。13)自動的なフィルタ挿入を決定及び規制する任意のポリシ(例えば消費者自身が挿入したフィルタの組において示されたで示された興味に基づき、この消費者の興味合ったフィルタを自動的に挿入する消費者に関連する管理)。
フィルタ伝播の多くの側面及び可能な特徴については、セクションのAからIにおいて上述した通りである。しかしながら、フィルタ伝播を現実的にするためには、上述した「累算」問題を解決するスケーラブルなソリューションを見出す必要がある。そこで、以下、スケーラブルなフィルタの伝播を実現する方法及び装置について説明する。
上述のように、フィルタ伝播における重要な課題は、フィルタが伝播ストリームの「上流(up)」、すなわち、膨大な数のフィルタソースから(例えば、購読者)少数のフィルタデスティネーション(例えばコアルータ、エッジルータ又は発行者)に移行する際、多数のフィルタが構築されることを回避することである。この問題は、「累算(accumulation)」問題とも呼ばれ、例えば、ツリー型のトポロジに縦列に接続されたノードから構成されるネットワークに発生する問題である。図22Aは、このようなフィルタ累算問題を解決するフィルタ伝搬処理450を示している。処理450は、上述したセクションA〜Iに示したソリューションの組を用いて、発行−購読ネットワークでフィルタを伝播する処理の具体例を示している。処理450は、例えば、購読者装置122におけるプロセッサ134によって実行されるエージェント128を含むソフトウェアモジュールによって実現することができる。これに代えて、処理450は、ソフトウェア制御の下で、インテリジェントルータ92又は対応する機能を有するASIC91内のプロセッサ93により実行してもよい。更に、処理450は、これらの組合せによって実行してもよい。
図22Aに示すように、まず、複数のフィルタが受け取られる(ステップ452)。セクションCにおいて説明したように、フィルタは、発行−購読ネットワーク内のどこに挿入してもよい。受け取られたフィルタは、フィルタの総数を削減するよう処理される(ステップ454)。この削減ステップでは、フィルタ累算問題を回避し、又は軽減するために伝播されるフィルタの数を減少させる。現在のノードに隣接する多数のダウンリンクノードがある場合や、現在のノードがフィルタ伝搬パスのかなりの後段にある場合等、この発行−購読ネットワーク内の1つのノードにあまりに多くのフィルタが累積すると、全てのフィルタを処理し、照合するための演算負荷が膨大になるため、発行者及びルータの正常な動作が困難になり、ネットワークの効率が低下する。
以下、フィルタ削減ステップ454の効果について更に説明する。伝搬パスの各段では、ダウンストリームノードは多くあるが、アップストリームノードは、1つ又は少数しかない。特定の段の各ダウンストリームノードがその段のダウンストリームノードの数に近い係数又はこれより大幅に小さくはない係数を用いて、アップストリームのノードに伝播されるフィルタの数を減少させると、アップストリームノードにおいて累算されるフィルタの総数は、それぞれのダウンストリームノードのフィルタの数と同規模の数となる。帰納法に基づき、この削減係数により、フィルタ伝播の各デスティネーションのフィルタの数が、伝播パスにおける段の数以上に急速に増加することはなく、この結果、累算問題が解決される。
図22Bは、削減ステップにおける好適なサブステップを示している。これらのサブステップは、好ましくは、フィルタを簡約し、冗長な述語表現を削除するステップ(ステップ4542)と、サブジェクトに関連するダウンリンクのみからのフィルタをグループ化するステップ(ステップ4544)と、このフィルタのグループ内でフィルタを概算するステップ(併合処理の前又は後に)(ステップ4546)と、フィルタの相対的な距離に基づいてフィルタをクラスタ化するステップ(ステップ4548)と、フィルタを包摂するステップ(ステップ4550)と、2個以上のフィルタを併合するステップ(ステップ4552)とを含む。これらのステップは、ここで説明した順序とは異なる順序で実行してもよく、これらのステップの幾つかを省略してもよい。簡約処理については、図16を用いて、エージェントの処理に関連して先に説明した通りである。
フィルタのグループ化ステップ4544は、正しいフィルタ情報をアップストリームに送るために重要である。以下、この重要性の幾つかの例について説明する。例えば、ルータは、多くのダウンリンクを有することができる(例えば、ダウンストリームのルータとのリンク)。全てのダウンリンクが購読予約又はフィルタをそれらに送る購読者を有するわけではない。他の具体例として、双方向のマルチキャストスキームにおいては、発行者と購読者が如何なる任意方向からもネットワーク参加できるため、ルータとの各リンクは、アップリンクとダウンリンクの両方として機能できる。リンクからフィルタ要求を受け取った際、このリンクは、現在のアップリンクと見なされ、このアップリンクにかかわらず、これらのダウンリンクから挿入された同じサブジェクトに属するフィルタのみを後の概算、クラスタリング、包摂及び併合演算のためにグループ化する必要がある。
また、グループ化4544は、課金処理やネットワークトラヒック制御等の他の目的でも必要とされる場合がある。この処理は、例えば、全てのリンクに由来するフィルタの包括的マップが何らかの理由で必要とされる場合等、幾つかの状況では、全体を行わなくてもよい。
概算ステップ4546は、フィルタが、より多くの購読予約を捕捉するようにフィルタを変更する。例えば、概算は、伝播されるフィルタの表現における述語の数を減少させ、又はフィルタ座標の分解能を低減させ、又は長いストリングを最初の12文字に縮減する等の処理を含む。更に、概算には、フィルタのフォーマットを揃える効果もあり、これにより、フィルタは、包摂と併合処理のための候補になりやすくなる(ステップ4550、4552)。また、概算ステップにより、フィルタを伝播するメッセージのサイズを小さくすることもできる。
包摂ステップ4550は、他のフィルタのサブセットであるフィルタを排除する処理である。例えば第1のフィルタが、敷地が1000平方フィート以上、1300平方フィート以下で、価格が20万ドル以上、30万ドル以下の全ての分譲住宅に関するフィルタであり、第2のフィルタが、敷地が1100平方フィート以上、1200平方フィート以下で、価格が22万5千ドル以上、37万5千ドル以下の全ての分譲住宅に関するフィルタである場合、第2のフィルタは第1のフィルタの部分集合であり、したがって、包摂によって排除される。
ステップ4542、4544、4546、4548、4550、4552は、選択された特定のフィルタ削減スキーム及び/又はアルゴリズムに応じて、如何なる順序で実行してもよい。例えば、ステップ4546及びステップ4550の位置は交換可能である。概算は、包摂の後に行ってもよい。更に、ステップ4550及びステップ4552を統合して、単一のステップとして実行してもよい。例えば、併合処理は、以下のグラフに示すように、包摂処理を含むことができる。
更に図22Bを参照して説明すると、併合ステップ4552は、2個以上のフィルタを結合するという点において包摂と同様である。但し、併合処理では、2個以上の部分的又は完全に異なるフィルタを結合するのに概算を用いることができる。
様々なフィルタを幾何学的に示してこの処理を説明する。例えば、以下にグラフ1〜4を示す。
Figure 2005521950
グラフ1は、2個のフィルタsl及びs2を幾何学的に示しており、フィルタs2は、上述したように、フィルタs1の部分集合であり、包摂処理によって消去できる。グラフ2では、フィルタs3もフィルタs4も互いの部分集合ではない。但し、フィルタのs3とフィルタs4は、互いに部分的に重複している。併合処理ステップ4552では、s3とs4の両方を含む最小のフィルタsAによる概算処理によってs3とs4を併合する。ここでは、s3とs4は、いずれもsAの部分集合であるので、s3とs4は、sAに包摂される。グラフ3は、併合処理の別の具体例を示している。グラフ3では、フィルタs5、s6は、完全に別個のフィルタである。併合処理ステップ4552では、これらのフィルタs5、s6及びこれらの間の領域を含むフィルタsAを概算する。これにより、フィルタのs5とs6は、sAに包摂される。グラフ4は、併合処理の更に他の具体例について示している。ここでは、フィルタs7、s8は、1つの属性についてのみ、部分的に異なる。s7とs8は、他の属性については重複し、同じ値を有するため、併合処理ステップ4552では、2つのフィルタをsAに併合し、重複する部分を包摂する。
このように、包摂(ステップ4550)及び併合(4552)は、フィルタが互いに近い場合に行われる。フィルタのリスト全体に対する線型探索の効率を向上させるために、オプションのステップとして、互いに近い又は重なる境界を有するフィルタを統合するクラスタリングアルゴリズムを用いることができる(ステップ4548)。クラスタリングアルゴリズムは、フィルタが追加又は削除されるのに応じて、実時間でインクリメンタルに実行することができる。また、フィルタ属性の属性空間において、任意の精度の固定サイズ又は可変サイズグリッドを用いて、グリッド座標に基づき、フィルタをグループ化してもよい。
s3又はs4又はs5及びs6のいずれにも含まれないsAの部分は、この部分がs3又はs4若しくはs5又はs6によって要求されていない発行情報を通過させるため、漏れ領域(又は、緩和領域、冗長領域)とも呼ばれる。したがって、併合処理ステップ4552は、フィルタ削減のために、トレードオフとしてこのような漏れを発生させる。ここで、大きな概算を行うと、漏れ領域が大きくなり過ぎ、フィルタ削減の利益が相殺されてしまう。そこで、処理450が実行される発行−購読ネットワークは、漏れ領域に関する閾値を定義し、併合処理ステップ4552において用いられる各概算に関する漏れ領域が大き過ぎるか否かを判定するようにする。併合処理ステップ4552は、統計的解析を実行し、漏れ領域に関して概算のために受け取られる余分なパケット(すなわち,漏れ領域に含まれるパケット)の割合を判定する。この統計的解析は、パケット分布プロファイルに基づき、(例えば処理450を実行するルータにおける)受け取られるパケット又は送り出されるパケットに関する履歴を用いて構築される。予期された割合が漏れ領域の閾値を超える場合、概算は、実行されない。
通常、漏れ領域の閾値は、多くの場合、割合を示す数値であり、併合処理の評価基準として2つ以上の閾値を用いてもよい。漏れ領域に関する閾値の具体例として、例えば、グラフ3において、漏れ領域の閾値#1が実際のフィルタs5、s6によって受け入れられるパケット数の10%と指定されている場合、併合処理ステップ4552に関するフィルタs5、s6を通過する漏れ領域が総パケットの20%を含むと推定されれば、併合演算を行わないようにすることができる。漏れ閾値の別の具体例として、同グラフにおいて、漏れ領域の閾値#2がルータを通過するパケットの総数の2%であり、フィルタs5、s6の間のギャップがルータを通過するパケットの総数の1%を構成するかもしれないと見積もられている場合、フィルタリングなしでルーティングを行った場合にダウンストリームの帯域幅を消費する漏れ領域に属するパケットの割合は僅かであるので、第1の漏れ領域の閾値(#1)を超えていても、併合演算を行うことができる。多数の及び様々に交錯する漏れ領域に関する閾値を設計し、指定することができる。
漏れ領域の閾値は、併合されるフィルタの数、フィルタ適用範囲の領域、又はフィルタ分布の任意の特性に基づいて決定することができる。例えばフィルタの総数が僅かである場合、累算問題は逼迫した問題とはならいので、フィルタの併合に関する制約条件を緩めてもよい。
グラフ4を用いて上述したように、全ての併合演算が概算を行うわけではない。例えば、2個以上の別個のフィルタで構成された併合されたフィルタsAは、ある状況では、漏れ領域を全く有さず、したがって、正確なフィルタである。例えば、二次元フィルタ(すなわち、グラフ4のs7、s8)について、フィルタを表す2つの長方形がその間に隙間を作ることなく互いに並べられ、隣接する場合、フィルタsAをもたらす併合ステップ4552は、正確な処理である。包括的に言えば、多次元において、2個以上のフィルタにおいて、1つの属性に関する断言された範囲及び他の属性に関する同じ断言された範囲が重複部分又は交差部分を有する場合にこのような状況が生じる可能性がある。同様に、フィルタについて断言された範囲が(例えば、整数のみの属性について)、別のフィルタのための断言された範囲が終わった後に、次の可能な値で始まる場合、これらのフィルタの他の任意の属性について同じ断言された範囲を仮定することにより、漏れ領域がない併合されたフィルタsAによってこれらのフィルタを概算できる。
図22Aに戻って説明を続けると、処理450は、(ステップ454に加えて)上のセクションGで説明したフィルタ処理等の更なるフィルタ処理を含むことができる。ここに示すように、処理450は、受信者の振る舞いの規則に基づき、フィルタを伝播するか否かを決定する(ステップ456)。この具体例は、先のセクションEで説明した通りである。判定ステップ456では、フィルタが(及び/又はどのフィルタが)潜在的受信者に伝播されることになっているかを判定する。例えば、潜在的受信者は、自らが接続しているノード(例えば、エッジルータ)にフィルタを伝播しないという要求を送った移動可能な発行者であってもよい。これに代えて、潜在的受信者は、膨大な量のコンテンツの発行を開始する前に、自らが接続しているノードに全てのフィルタを伝播するという要求を送った新たな発行者であってもよい。セクションEに示したこの他の潜在的受信者に関する振る舞いの規則を用いてもよい。ステップ458及びステップ456の順序は入替可能である。更に、例えば、購読予約(すなわち、フィルタ)の数が限られている場合又はネットワークが含む伝播の段の数が少ない場合、フィルタの累算が深刻な問題とはならないので、ステップ454(詳しくは、併合サブステップ4552)やステップ456等の幾つかのステップは行わなくてもよい。
セクションFにおいて例示的に示したように、送信側の振る舞いの規則に基づく、フィルタを伝播するか否かに関する判定(ステップ458)を行ってもよい。例えば、フィルタの送信側は、フィルタに有効期限を設けてもよい。この場合、判定ステップ458では、フィルタが期限切れであるか否かを検査する。また、フィルタ送信側がフィルタを次のノードに伝播するために、認証が必要である場合もある。この場合、判定ステップ458では、フィルタの供給元が認証されない場合、フィルタを拒絶できる。セクションFに示した他の規則等のフィルタ送信側の振る舞いに関する規則を用いてもよい。
セクションDで説明したように、このフィルタ伝播手続き450は、ネットワーク管理者を含む発行−購読ネットワークでどこからでも開始できる。次のノードには、全てのフィルタ又は削減されたフィルタの組が伝播される(ステップ460)。また、セクションCで説明したように、次のノード(フィルタ受信者)は、発行−購読ネットワークの如何なる部分であってもよい。フィルタの数は、ステップ454〜458のそれぞれによって削減することができる。実際には、フィルタの数は、ステップ456又はステップ458によって、(例えば、如何なるフィルタも伝播しないことを示す潜在的な受信者の規則に基づき)ゼロにできる場合もある。また、処理450は、セクションAにおいて説明したような、発行−購読ネットワークにおけるフィルタ伝播ストラテジの1つに基づいて、フィルタの伝播460を行うことができる。したがって、伝播ステップは、含むことができるフィルタ伝播ストラテジを決定するステップと、決定されたフィルタ伝播ストラテジの要求を満たすフィルタを伝播するステップとを含むことができる。例えば、伝播ステップ460は、フィルタの受信に応じて常に実行してもよく、又は発行者による同報通信の広告があった場合にのみ実行してもよい。同様に処理450は、セクションIに示したポリシと手続きのいずれに従って実行してもよい。また、処理450は、セクションHに基づいて、フィルタ伝播メッセージをフォーマットできる。伝播ステップ460に関するソースとデスティネーションを接続する手法は、セクションBで説明したように、様々な手法を用いることができる。
伝播ステップ460の後、処理450は、別の潜在的受信者(別のノード)が存在するか否かを判定してもよい(ステップ462)。別の潜在的受信者がいる場合、処理450は、この潜在的受信者のために手続きを繰り返す必要があるか否かを判定する。幾つかの発行−購読ネットワークストラテジ(例えばCBT)においては、フィルタが期限を全く有さず、一旦1つのノードに伝播されると、このフィルタに対する何らかの変更(例えばフィルタの追加、フィルタの除去等)が設定されるまで、このフィルタがリンク上に持続的なままで残る場合がある。このような場合、そのリンクへのフィルタ伝播は、不必要となる。このような例は、後述する消極的な伝播法にも見出すことができる。
フィルタを伝播する必要がある場合、処理450は、振る舞いの規則に基づいてフィルタを伝播するか否かを決定することができる(ステップ456、458)。処理450は、削減されたフィルタの潜在的な更なる受信者がいなくなるまで繰り返し実行してもよい。
図22Cは、他のフィルタ伝搬法470を示している。この処理は、セクションA〜Iで説明した発行−購読ネットワークでフィルタを伝播するためのソリューションの組を用いた他の実施例である。処理470は、ソフトウェア制御の下で、インテリジェントルータ92又は対応する機能を有するASIC91内のプロセッサ93により実行してもよい。これに代えて、処理470は、例えば、購読者装置122又は発行者装置100におけるプロセッサ134又はプロセッサ114によって実行されるエージェント128又はエージェント105を含むソフトウェアモジュールによって実現することができる。
この実施例におけるネットワークトポロジは、図22Dに示すように、一連の発行者Pがあらゆる任意の方向から、インテリジェントルータCのネットワークへのあらゆる任意のパスを介して接続される、双方向のトポロジである。このようなネットワークは、例えば、コアベースのツリーマルチキャストスキーム(Core-Based Tree multicast scheme)によって実現される。この実施例では、新たな発行者P及び新たなルータCは、ルータCを介してネットワークに接続されている。新たな発行者Pが特定の発行−購読ネットワークに接続する際、そのネットワークの拡張を形成する一連の新たなルータを介してコアに接続する必要がある場合があり、及び/又は既にそのネットワークの一部であるルータを介してネットワークに接続できる場合もある。説明のために、図22Dでは、新たなルータCを1つのみ示している。
フィルタ伝播処理は、2段階で行われる。図22Dに示す双方向ネットワークでは、如何なるリンクも、同時にアップリンク及びダウンリンクであることができる。ここでは、説明のため、アップリンク(1つのみ)を現在フィルタ要求を受け取っているリンクと定義し、ダウンリンク(多数)をアップリンクとは異なる、フィルタ要求の受信者のすぐ隣のダウンストリームへのリンクと定義する。ダウンストリーム及びアップストリームの方向は、アップリンクとダウンリンクと同様に定義される。
図22Cを参照して説明すると、最初の段階において、新たな発行者Pは、ダウンストリームのルータC(又は、全てのダウンストリームノード)に対し、フィルタを要求する通知を同報通信又はマルチキャストする(ステップ472)。ルータCがフィルタ要求を受け取った後(ステップ474)、ルータCは、同じフィルタの組が同じアップリンクに再度送信されないことを確実にするために、好ましくは、参照カウンタによってブックキーピングを更新する(ステップ476)。次に、ルータCは、好ましくは、このアップリンクのための参照カウンタを調べることにより、このアップリンクからのフィルタ要求が以前に処理されているものであるか否かを判定する(ステップ478)。これが、例えば、このアップリンクからネットワークに参加する最初の発行者の場合等、それまで一度も処理されていない新たなアップリンクである場合、ルータCは、要求を中継し(ステップ480)、ルータのダウンリンク(すなわち、ダウンストリームのルータ)からの応答を待つ(ステップ482)。続いて、これらのダウンストリームのルータは、更なるダウンストリームのルータに要求を送信し、これらのルータからの応答を待つ。この処理は、受信ノードによる応答の決定がなされるまで繰り返される。これにより、第1の段階が終了する。
第2の段階は、フィルタ要求を受け取ったいずれかのノードがそのノードのダウンストリームの全てのルータからの応答を得た場合、又は、そのノードがネットワークの最後のノードであり、ダウンストリームからの応答が期待されない場合に開始される(ステップ484)。送信するフィルタが全くなければ、否定応答(又は任意に表現されたフィルタの空集合)がアップストリームに送信される。全てのノードのダウンストリームのルータから全ての新たなフィルタを受け取った場合、任意の処理であるフィルタの削減(ステップ454)の後に、フィルタの組の全体又は一部(例えば、変更の差分)がアップストリームに送られる(ステップ486)。現在のアップリンクについて、ダウンリンクから集められたフィルタのみが処理450に従ってグループ化され、併合され、削減される。この応答収集−フィルタ伝播処理は、発行者又はフィルタ要求を送った最初のルータがその発行者又は初期のルータのダウンストリームの全てのルータからフィルタ又は否定応答を受け取るまで、アップストリーム側で繰り返される。上述したフィルタの実際の伝播又は空集合(否定応答)の伝播は、第2の段階を構成する。これら2つの段階は、伝播されるコンテンツと、これらの伝搬方向について異なっており、フィルタ要求は、ネットワークの幾つかのブランチのダウンストリーム側に、他のフィルタ要求より遠くに送られることがあるので、これらの2つの段階は、時間的に重複して実行してもよい。
このフィルタ伝播スキームは、アップリンクからのフィルタ要求を受け取った場合にのみフィルタ伝播処理を開始するため、すなわち、全てのアップリンクにフィルタを積極的に送るのではなく、フィルタの要求があった時に、フィルタを要求したアップストリームのルータだけにフィルタを供給するため、消極的な伝播スキームと呼ばれる。なお、フィルタ要求は、特別にフォーマットされた通知である必要はない。如何なる発行者からの最初の通知もその存在の広告と見なすことができ、データ通知に符号化され、埋め込まれたフィルタ受信者の振る舞いの規則を用いて、セクションEに基づき、フィルタが要求されているか否かを判定することができる。
各発行者Pのフィルタは、発行者ユーザ装置100又は発行者Pが接続しているルータCに保存してもよい。上述した処理450と同様に、処理470は、セクションA〜Iで説明したような、追加的なソリューションを用いることができる。
コンパクトなフィルタストレージとオフラインプリコンピュテーションを用いるCBRこのセクションで説明するCBRの実施例は、発行/購読ネットワークのコアにおいて、深いパケット検査及びフィルタ照合に基づいて、データパケットをルーティングする処理を含む。このCBR処理は、フィルタをよりコンパクトな形式に変換し、属性空間において、フィルタ適用範囲を予め計算(pre-computing:以下、プリコンピュート/プリコンピュテーションともいう。)することによって、属性空間座標の有限集合から命令(instructions)をルーティングするためのマップをオフラインで作成し、このマップを実時間で利用して経路決定を行う。このCBR処理は、非常に速く、従来のインターネットプロトコル(IP)ルーティングと同程度のデータ伝送速度が実現される。したがって、このCBR処理は、ネットワークのコアにおける、実際の商業的なコンテンツベースのルーティングの好適な候補となる。
上述したように、購読者は、ある範囲の属性値に対して述語を指定することによって、発行−購読ネットワークにおいて、1以上の発行者から送信されたパケットを選択する。各述語は、関係検査又はメンバシップ検査において、パケット内のある位置における属性に1つ又は2つのオペランド(オペランドは、正規表現等の複合オブジェクトであってもよい。)を関連付ける属性検査(また、属性検査は、サブジェクト検査を含んでいてもよい。)である。例えば、10<$1<20は、$1によって示された第1の属性位置の値が10より大で20より小であるか否かを調べる検査である(述語の定義は、検査を1つのオペランドだけ関係づけるように制限することによって、単純化でき、例えば、2方向の範囲を有する検査は、2つの一方向の検査の論理積として表すことができる)。購読者は、これらの検査の集合を提示し、1つ以上の購読予約において、各購読予約は、購読者の興味を表すサブジェクトフィールドを含むことができる。
ここに説明する実施例は、フィルタを用いたコンテンツベースのルーティングに関連し、これらのフィルタは、購読予約から得られたオブジェクトであり、その表現が購読予約と異なっているのみである。フィルタの1つのとして、後述する連言フィルタがある。購読予約は、指定され、パケットをフィルタリングするのに用いられ、及び/又は購読者がネットワークに直接送信した元のフィルタであるとも言える。ネットワーク内のルータにおける伝播とパケット照合を容易にするために、購読予約は、フィルタと呼ばれる他のフォーマットのオブジェクトに変換される。例えば、幾つかの実施例では、各サブジェクトは、マルチキャストネットワークを用いて実現される。同じサブジェクトを有し、特定のサブジェクトについて、マルチキャストネットワークの各ノードに挿入されるフィルタは、同じサブジェクトフィールドのみを有するパケットをフィルタリングし、事実上、サブジェクトフィールドフィルタリングを実行する。したがって、フィルタは、このネットワーク内の各ノードにおいて、それらのサブジェクトフィールドを設けることなく、そのサブジェクトヘッディングの下に保存できる。サブジェクトフィールドのないフィルタは、属性フィルタとも呼ばれる。以下の説明では、購読予約、フィルタ及び属性フィルタは、交換可能に用いられ、これらの意味は、文脈によってのみ明らかになる。
これらの購読予約を有する受信データパケットの照合を容易にするために、上述のように、各購読予約は、エッジルータに供給される前に、プロキシにより、同等な選言標準形(DNF)に処理され、分割される。DNFは、連言フィルタ呼ばれる1個以上のサブフィルタの論理和である。各連言フィルタは、同じ検査演算子を有する表現内で各属性が最大1回現れる1つ以上の属性検査の論理積である。例えば、連言フィルタは、以下のような表現(以下に示す例では、$1以外の属性も含まれている、)において、属性の一致を制約できる。
$1>10and$1<20and$2<4and$3==5and・・・
ルータに関する限り、プロキシ動作のため、属性フィルタは、全て連言フィルタである。連言フィルタは、均一なフォーマットを有するという利点のみではなく、ネットワークのコアにおいて、これらのフィルタの伝播を容易にするという利点を有し、また、フィルタ表現において、それぞれの属性の出現を一回に限定することにより、これらのフィルタを多次元の幾何学的オブジェクトとして解釈することができるようになり、ここで説明するCBRにおいて有利である。したがって、以下の実施例では、連言フィルタのみを用いる。
多数のフィルタを含む膨大な集合について、フィルタ毎に及び述語毎に照合するといった煩雑な処理を行うと、必要な演算量が膨大になり、DNFの使用にもかかわらず、CBRを用いることによって得られたダウンストリームの帯域幅利得の利益は、容易に相殺されてしまう。クリティカルなデータ転送パスにおけるこの膨大な量の演算は、発行−購読ネットワーク効率に関する深刻な障害となることがある。ここに説明するCBRの実施例では、この膨大な演算量を低減し、及び演算処理の大部分を、クリティカルなデータ転送パスから除外する。
具体的には、ここに説明する実施例では、フィルタ表現をよりコンパクトな形式に概算し、及びフィルタ適用範囲情報を予めオフラインで計算することによって、CBRにおいて、非常に効率的な処理を実現する。このCBR処理では、属性空間のあらゆる点の上のフィルタ適用範囲は、フィルタが挿入され又は削除された際に、オフラインで予め決定される。属性値がその点に含まれるパケットに対する正しい処理は、その点をカバーする全てのフィルタによって示される処理の統合である。これらの処理は、パケットに対する処理を含み、例えば、物理的なインタフェース又はカプセル化されたインタフェースへのパケット転送、ユーザレベル処理へのパケット転換、並列する装置(例えば、キャッシュ、バックアップルータ等)へのパケットの転送が含まれる。幾つかの処理は、パケットに関する処理を含まず、このような処理としては、例えば、特別に設計されたパケットの到着に応じて、ルータ上で動作する汎用アプリケーションをトリガする処理、アクティブな発行情報がフィルタに関連する領域にまだ残っているために、幾つかのフィルタの寿命を延長する処理、発行のコンテンツに基づき、新たなフィルタを自動的に挿入する処理等がある。実際には、各フィルタによって示された処理は、例えば、各ビット位置が個別の(転送)処理を表している処理ビットマスク(action bit mask:以下、ABMという。)又は処理の数がビットマスクとして表現するには多くなり過ぎた場合(例えば、エッジルータが膨大な数の購読者に接続している場合)は、個別の処理のリスト(個別処理リスト:Distinct Action List:以下、DALという。)等のデータ構造によって実現できる。以下の説明において、ABM又はDALを単独で明示している場合であっても、その文脈は、データ構造を具現化する処理の全ての形式を含むものとする。
したがって、プリコンピュテーションにより、属性空間内の所定数の座標から、同数の統合された処理又は処理のリストへのCBRマップが生成される。この簡単なマップは、サブジェクトグループマルチキャストで用いられたマルチキャストルーティングテーブルと同じであるので、これはCBRテーブルとして理解される。このように、重い演算負荷をクリティカルなデータ転送パスから、バックグラウンドで実行されるクリティカルではないフィルタのプリコンピュテーション処理に移すことにより、データは、クリティカルなデータ転送パスを介して非常に高速に伝送され、元のフィルタ表現を照合するために必要な処理の影響を殆ど受けない。
また、このCBR処理は、好ましくは、例えば、空間量子化及び述語削減によって、フィルタ表現をよりコンパクトな形式に概算する処理を含む。それぞれの属性次元において、膨大な数の座標があるので、属性空間を量子化し、グリッドを生成する必要がある。個々の座標の代わりに量子化された領域だけがCBRテーブルの構築に用いられる。空間量子化は、実際の属性空間内の個々の点を量子化された属性空間内の単一の点にグループ化する効果を有しているので、元の実際の属性空間のあらゆる点がCBRテーブルにおいて間接的に考慮され、同じ座標に量子化された隣接する点とともにこれらの量子化された座標について示された処理のリストを共有する。
この処理では、様々な空間量子化スキームを用いることができる。更に、フィルタ表現が多くの述語を含んでいる場合、この表現は、CBRテーブルに表されたサブセットのみに概算してもよい。
属性のための属性空間は、潜在的に無限である。したがって、属性空間は、グリッドを設けても、大き過ぎて扱いづらい場合がある。したがって、ここで説明するCBRの処理では、好ましくは、量子化される属性空間の領域を削減する。具体的には、一致するデータパケットが受け取られると予想される属性空間の領域だけを量子化することが好ましい。後述するように、一致するデータが受け取られる可能性があるこの領域は、発行者から受け取った情報及び/又は過去の(すなわち、以前に受信した)パケット及び/又はフィルタ分布の統計的解析から得られた情報に基づいて判定される。例えば、属性がある値より上のデータパケットは決して発行しないとの情報を発行者が提供した場合、そのある値を超える属性空間は、量子化しないことが望ましい。同様に、統計的解析により、属性値がある値より下のフィルタが受け取られることはないことがわかっている場合、そのある値を下回る属性空間は、量子化しないことが望ましい。
図23Aは、フィルタ表現をよりコンパクトな形式に概算し、フィルタ適用範囲情報をオフラインで予め算出するここに説明する実施例に基づくCBR処理480を示している。CBRのこの処理は、実時間における述語毎の照合を最少にする。処理480は、ソフトウェア制御の下で、インテリジェントルータ92又は対応する機能を有するASIC91内のプロセッサ93により実行してもよい。多くの場合、フィルタ管理機能を含むプリコンピュテーションステップは、演算的に高負荷であるので、ソフトウェアにおいてこれを実行することが望ましい。しかしながら、例えば、基数表現等の幾つかのフィルタ表現では、フィルタをハードウェアで実現することもできる。処理480は、例えば、ユーザ装置100のプロセッサ114によって実行されるエージェント106として表現されたソフトウェアモジュールにより実現してもよい。
図23Aに示すように処理480では、まず、空間(再)量子化を実行すべきであるか否かを判定する(ステップ482)。空間量子化は、定期的な又は不定期の期限によってトリガしてもよく、又は例えば、現在の量子化された属性空間におけるパケットが過度に不均一になったことが観察された場合等にトリガしてもよい。空間量子化は、必要に応じて、ルータの処理が比較的空いているときにオフラインで実行される(ステップ484)。空間量子化は、好ましくは、形成される量子化された属性空間に亘って均一なパケット分布又はフィルタ分布のいずれか(又はこれらの両方)をレンダリングする性質を有する新たなグリッドの算出を含む。空間量子化について、この他の処理及び評価基準を用いてもよい。
グリッド領域は、一致するパケットが受け取られると予想される属性空間の削減された領域のみをカバーするように構築することができる。例えば、第1の属性$1が米国のある工業部門における、株の数を表している場合、空間量子化は、0から米国証券取引所の株の総数までの範囲のみで行えばよい。収集されたパケット統計データからこの属性の統計的分布に関する情報を得た後、後述するような適応量子化を用いて、初期的には、全ての部門に関する株の数の最大値である非常に小さな数値に、及び将来的には、市場の成長に応じてより大きな数値に、動的にこの範囲を調整することができる。
ルータは、処理480が実行されているネットワーク位置(例えば、コア又はエッジインテリジェントルータ92、又は発行者装置100)に何らかのフィルタが挿入され、又は何らかのフィルタが削除されているか否かを判定する(ステップ486)。参照カウント処理は、新たに挿入されたフィルタが、既に挿入されているフィルタと同一の情報(例えば属性、一致する属性値及びフィルタ処理)を有しているか否かを監視する(ステップ488、ステップ494)。処理する必要があるのは、異なるフィルタだけである。説明のため、ネットワークにおける位置をインテリジェントルータ92と仮定する。例えば、新たなフィルタがアップストリーム側のインテリジェントルータ92に伝播される場合もあり、又は、古いフィルタについて設定されている有効期限が切れる場合もある。
フィルタを挿入する又は削除する要求が受け取られた場合(ステップ486)、(1)実際の属性空間内の正しいフィルタのための参照カウントを更新し(ステップ488)、及び(2)挿入/削除するべきフィルタが新規のフィルタであるか、以前に既に受け取ったことがあるフィルタであるかを判定する(ステップ490)ために、まず、実際の座標を用いて、フィルタと、ルータによって既に受け取られ、保存されている他のフィルタとを比較する。フィルタが新規のフィルタでない場合、実行フローは、パケット照合ルーチンに戻される。この他の場合、属性値の量子化された座標を得るために、パケットの属性値を量子化された空間にマッピングする(ステップ492)。そして、量子化された座標を用いて、同様のフィルタ識別手続きを実行して、(1)量子化された属性空間における正しいフィルタのための参照カウントを更新し(ステップ494)、(2)このフィルタがフィルタの量子化された座標における新規なフィルタであるか否かを判定する(ステップ496)。ステップ488とステップ494については、好ましくは、フィルタ座標からフィルタ参照値への2つのマップを用いるとよい。
フィルタが実際の属性空間と量子化された空間の両方において新規なものである場合、そのフィルタを概算し、削減することができる(ステップ498)。例えば、述語が過多であるフィルタの属性のサブセットのみを選択して、量子化及びマッピングを行ってもよい。同様に、より複雑な性質の述語を有する属性(例えば、ストリングの一致を要求する述語、正規表現、非ストリング(in-string)、非アレー(in-array)、範囲演算子等)又はより高い分解能を要求する属性は、個別に取り扱ってもよい。
本発明の実施例の主要な利点の1つとして、フィルタをコンパクトにできれば、パケットの照合と転送をスケーラブルな手法で効率的に行うことができるという点である。フィルタのコンパクト化は、フィルタを量子化された属性空間にマッピングする処理(ステップ492)と、フィルタ表現の概算及び削減(例えばステップ498)の処理の両方を含む。図23Aに示すように、圧縮ステップは、属性空間を空間的に量子化する処理を含んでいる(ステップ484)。このステップでは、上述し及び以下に示すように、属性空間においてグリッドを生成する。
Figure 2005521950
これにより、CBRテーブルを更新できる(ステップ500)。各フィルタは、そのフィルタに一致する発行情報に関する1以上の(ルーティング)処理を示す規則に関連付けられている。フィルタによって示される(ルーティング)処理は、以下のような手法によって、このCBRテーブル内のグリッドセルに挿入される。ステップ500では、フィルタ適用範囲情報の属性空間に生成されたグリッドを用いて、まず、フィルタの量子化された座標がカバーされ又は重複する全てのグリッドセル(すなわち量子化された領域)を特定する。次に、ステップ500は、このフィルタより示された(ルーティング)処理をこれらのグリッドセル内に挿入する。例えば、5個の可能なデスティネーションノードがあるとすると、それぞれノード2とノード3に接続されているユーザ装置にルーティングする必要がある2つのフィルタは、グリッドセル又は量子化された領域Xをカバーする(上述の説明参照)。この結果、ステップ500は、グリッドセル又は量子化された領域Xに対し、それぞれノード2とノード3へのルーティングを要求する規則を挿入又は宣言する。この処理は、フィルタの量子化された座標をカバーし又は重なる各グリッドセルについて繰り返される。好ましくは、ステップ500は、各グリッドセル又は量子化された領域対して、ABMを生成又は更新することによってマッピングを表す。この実施例では、グリッドセル又は量子化された領域Xに対するABMは、ノードの番号を0〜4として、以下のように表される。
Figure 2005521950
なお、フィルタ除去のために、好ましくは、ブックキーピングを行うとよい。例えば、2個のフィルタがグリッドセルをカバーしており、フィルタの1つを除外する処理を説明する。ABM内の対応するビットは、0にリセットするべきではない。各グリッドセルについて、セル領域をカバーするフィルタの参照カウントをブックキーピングすることによって、混乱を避けることができる。続いて、更新後の参照カウンタからFBMを生成する。これらの参照カウンタは、処理参照カウンタとも呼ばれる。このように、マッピングステップ500は、ブックキーピングステップを含んでいてもよい。
CBRテーブルは、各グリッドセル又は量子化領域から生成されたABMに基づいて構築/更新される(ステップ500)。この処理は、好ましくは、直接又は間接的に、空間的な再量子化及びCBRテーブルの更新と、全ての追加的なステップ482〜500とを含む。ステップ482〜500は、好ましくはオフラインで(すなわち、インテリジェントルータ92が発行されたパケットを受け取っていないときに)又は実時間のルーティング処理のバックグラウンドとして、実行され、フィルタが挿入され、保留され、停止され、又は削除される。したがって、発行された如何なるパケットも受け取られていない場合、又はステップ482〜500がバックグラウンドで実行されている場合、処理480は、再び、まず、属性空間を再量子化するべきか否かを判定し(ステップ482)、続いて、何らかのフィルタが挿入又は削除されているか否かを判定する(ステップ486)。そして、図23Bに示すように、データ転送パスにおいて、CBRテーブルを用いて、実時間のルーティング処理が実行される。
CBRテーブルのサイズは、属性の数が多い場合、又は各属性に関するグリッドの分割数が多い場合、大きくなる。原則として、CBRテーブルにおいて、処理規則含む(すなわち、フィルタによってカバーされている)グリッドセルのみを保存すればよい。CBRテーブルは、如何なる技術を用いて圧縮してもよい。
図23Aは、処理480のCBR管理の側面を示し、図23Bは、処理480のCBRによるデータ転送の側面を示している。処理480において、発行されたパケットが受信されたと判定された場合(ステップ502)、インテリジェントルータ92は、図23Bに示すように、発行されたパケットを受け取る(ステップ504)。受信されたパケットは、ポイントツーポイント接続(例えば、エッジルータへの無線接続)を介してネットワークに挿入することができる。受信されたパケットは、グリッドにマッピングされる(ステップ506)。ステップ506では、パケットの量子化された座標を判定し、これにより、CBRテーブルの正しいグリッドセルを参照し、そのグリッドセルに含まれている処理規則を抽出し、パケットを処理できる(ステップ508)。これらの処理は、ネットワーク内のどのノード又は他の位置にパケットをルーティングし、又はパケットを削除するかを判定する処理を含んでいてもよい。
漏れの削減
フィルタ概算の結果、これまで説明してきたCBR処理480では、パケット漏れのエラーが発生する虞がある(ステップ492参照)。元のフィルタ境界に代えてグリッドセルの境界を用いてパケットを照合するため、照合に用いられる実際の領域(例えば、2次元における面積と3次元における体積)は、拡大し、緩和領域とも呼ばれる実際のフィルタ境界とグリッドセル境界との間の領域に存在する属性値を有するパケットが誤ってフィルタを通過することがある。上述のように、フィルタ分解能の削減は、処理の高速性能とスケーラビリティが実現又は向上し、受信パケットの総数に比べて、漏れエラーが小さい場合に許容できる犠牲であると考えられる。
しかしながら、漏れエラーが小さくない場合もある。例えば、システムが、等価検査又は不等価検査(例えば、$1=4&$2=100&$3<30、又は$1=4&$2>3)であるCBRに対応する少なくとも1つの属性述語を有するフィルタを有する場合がある。これらの等価検査又は不等価検査された属性の次元において、フィルタは、点に類似する。グリッド境界がこれらの点を包摂するように課される場合(上述のステップ490)、緩和領域(例えば、面積、体積、超体積)は、実際のフィルタ自体の領域よりはるかに大きく拡大されてしまう場合がある。
この問題は、以下の図によって示される。この図は、2次元属性空間を表しており、各次元における等価検査によってそれぞれ定義された2つの点フィルタF1、F2を示している。数字は、グリッドセル座標を表し、アルファベットは、実際の座標を表している。属性がグリッドセル(4、1)内のどこに含まれるパケットも、FI及びF2の両方に一致するパケットとして受け入れられる。
Figure 2005521950
漏れ削減ステップ516において実行できる様々な処理によって、CBR処理480のこのような望ましくない性質を抑制することができ、このような処理の一具体例を以下に示す。
漏れ削減ステップ516のための手法の1つとして、一次元(1D)において正確な照合を行う手法がある。全ての属性について、同時に、パケットをフィルタに照合する処理は、スケーラブルなソリューションを有さない多次元問題である。一方、一次元での正確な照合は、効率的でスケーラブルな多くのソリューションを有することが知られている。これらのソリューションとしては、以下に限定されるものではないが、例えば、(1)フィルタ境界のアレーに対する関する2分探索、(2)全てのフィルタ境界を介したバイナリツリー探索、(3)フィルタ境界情報が埋め込まれたツリーの下方への基数検索、及び(4)インターバル2分探索ツリー等のより複雑なデータ構造を有する検索等がある。
漏れ削減ステップ516においては、何らかの一次元検索法を用いた一次元の正確な照合を全ての属性について行うことが望ましい。一次元の正確な照合による漏れ削減ステップ516の幾つかの具体例を以下に示す。
a.上述のように、漏れ削減のないCBR照合ステップ508を行う(一致が全くなければ、パケットを削除する)。
b.一致するパケットについて(ステップ508が上であることを見る)、1つの属性次元を選択し、何らかの一次元の正確な照合法及び対応するデータ構造を用いて、パケットのその属性値をその属性軸上の全てのフィルタ境界の射影に照合する。これにより、一致したフィルタが検出された全ての転送ノードのリストを得る。
c.一次元一致が全くなければ、その全ての属性検査において、そのパケットに一致するフィルタがないことが保証されるので、そのパケットを除外できる。
d.一致があった場合、他の次元を選択し、次のいずれかの条件が満たされるまで、ステップbを繰り返す。(1)いずれかの次元で不一致が検出された場合。(2)先に実行された全ての一次元探索によって生成された転送ノードのリストが共通のインタフェースを含んでいない場合(すなわち、一次元の一致が異なるインタフェースからのフィルタから生成された場合)。又は、(3)正確な照合検査がCBRについてディスエーブルにされた属性次元を含む全ての属性次元について実行された場合。
e.ステップdで説明した除外の条件がいずれも成立せず、及び全ての属性の検査において不一致が検出されない場合、パケットを除外しないという決定を下すことができる。
f.2つ以上のインタフェースが含まれている場合、パケットが除外されていないインタフェースのリストと、ステップaから得られたインタフェースのリストとを比較する必要がある。パケットは、これらの2つのリストにおいて重複するインタフェースにのみルーティングされる。
サブステップa〜fの順序は入れ替えてもよい。例えば、一次元漏れ削減ステップ(サブステップb〜e)を実行した後に、サブステップaを実行してもよい。幾つかのサブステップを1つのサブステップに統合してもよい。
なお、上述した一次元漏れ削減ステップ516は、全ての次元を考慮した場合、正確ではない。最後の実施例を用いて説明すると、属性値$1=a及び$2=dを有するパケットは、いずれの次元における正確な照合検査も通過するが、各次元における検査は、実際には異なるフィルタを照合する。正しい多次元の分析を行えば、このパケットは、除外されるべきものである。したがって、この漏れ削除処理は、パケットの除外については効果的であるが、パケットの受け入れについては正確ではない。このため、この処理は概算的であり、漏れエラーが残る可能性はある。但し、この漏れ削減ステップ516は、不正確ではあるが、フィルタリングにグリッドセル(4,1)の全体の領域を用いることによって生じてしまう漏れエラーを大幅に減少させることができる。
処理480が実行されるインテリジェントルータ92を介したデータ転送パストラヒックは、所定の閾値を超えているか否かを判定される(ステップ510)(例えば、インテリジェントルータ92は、パケットを転送するためのクリティカルなタスクに占有されている場合、「ビジー状態」となる)。インテリジェントルータ92がビジー状態である場合、カバーされたグリッドセルにマッピングされたパケットがルーティングされ(ステップ508)、ステップ508によって判定されたルーティング処理に基づき(ステップ512)、対応するパケット統計情報が更新される(ステップ514)。したがって、インテリジェントルータ92がビジー状態である場合、部分的にカバーされているグリッドセルにマッピングされるがそのグリッドセルの実際のフィルタ適用範囲の外側にあるパケットのルーティングによって生じる「漏れ」が、ルーティング速度を向上するための犠牲として受け入れられる。
一方、ステップ510において、インテリジェントルータ92がビジー状態ではないと判定された場合(すなわち、トラヒックが閾値を超えていない場合)、好ましくは漏れ削減処理を行う(ステップ503)。漏れ削減ステップ516は、先のパラグラフで説明した漏れを削減する。漏れ削減処理は、例えば、以下に説明する手法で実現できる。
ここでは、正確でない、述語毎のフィルタ照合を実時間で実行している。但し、処理480においては、最低レベルの正確なフィルタ照合は、トラヒックが閾値を超えていない場合にのみ許可される。このCBR処理は、本質的に、グリッドに対する位置に基づいて、フィルタをグループ化する。グリッドセルは、それらの幾何学的な位置に基づいてフィルタをグループ化するツールである。フィルタの如何なるグループ(或いは、フィルタバケツ(filter bucket)とも呼ばれる。)内においても、幾つかの状況では、より精度が高い詳細なフィルタリングを行うことができる場合がある。このような付加的な照合の要求は、フィルタバケツ内に保存できる。
幾つかの具体例を以下に示す。
1.CBRマップより高い分解能を必要とする属性検査は、CBRの第1のグリッド照合ステップからフィルタバケツが導出された後に行うことができる(ステップ508)。
2.より複雑な性質の述語を有する属性(例えば、ストリング照合、正規表現、非ストリング、非アレー、範囲演算子等)は、フィルタバケツ法(filter bucketing method)
によって処理することができる。
3.多くの属性検査を含むフィルタについては、属性を2つのグループに分け、一方のグループをCBRマップに含め、他方のグループをフィルタバケツに含めてもよい。
1〜3に説明した属性のためのフィルタ述語は、上述したステップ498によって削減できる。更にインテリジェントルータ92がビジー状態ではない場合(ステップ520参照)、述語毎の又はこの他の正確なフィルタ照合を用いて、CBRテーブルに基づいて、部分的にカバーされたグリッドセルによって判定されたフィルタバケツにこのようなパケットを照合する。そのグリッドセル又は量子化された領域に関するフィルタバケツは、(ステップ482〜500における)プリコンピュテーションによって(フィルタの総数から)既に削減されているので、この処理は、単純な述語毎のCBRを行うだけのより効率的な処理である。
(ステップ508で判定された)CBRテーブルに基づくパケットをルーティングする前に(ステップ512)処理は、グリッドセルへのマッピングによって判定されたフィルタバケツについて、部分的にカバーされたグリッドセルにマッピングされた削減されたフィルタ述語又はパケットがあるか否かを判定する(ステップ522)。このような削減されたフィルタ述語がある場合、(例えば、上述の具体例1〜3)又はこのようなマッピングされたパケットがある場合、述語毎の又はこの他の正確なフィルタ照合が実行される(ステップ524)。そして、照合されたパケットは、CBRテーブルと正確な照合によって、例えば、2つの処理から得られたインタフェースリストを照合することによって、決定されたルーティング処理に基づいて、ルーティングされ(ステップ512)、パケット統計情報が更新される(ステップ514)。
処理480の変形例では、トラヒック閾値検査ステップ510は、例えば、ステップ518及びステップ524等の演算的負荷が大きい幾つかのステップのみに先行して行われ、処理の無駄と演算負荷とのバランスが考慮される。更に、処理480は、完全にカバーされたグリッドセルにマッピングされたパケットと、部分的にカバーされたグリッドセルにマッピングされたパケットとについて、別々のパスを有していてもよい。この場合、トラヒックの閾値ステップ510は、部分的にカバーされたグリッドセルのパスのみにおいて実行してもよい。
処理480における漏れ削減ステップ516は、ここに説明するより高度な漏れ削減手続きに置き換えることができる。高度な漏れ削減手続きはとは、漏れエラーを更に削減できる処理である。例えば、グリッドテーブルの探索の後に外積を求めることによって、グリッドセル内で正確な多次元の照合を実行できる。外積演算は、以下のような処理を含む。
a.上述のように、何らかの一次元の正確な照合法を用いて、一次元の正確な照合を行う。この代替的のステップの主な特徴は、転送ノードのリストではなく、フィルタラベルのリストが作成されるという点である。
b.リストが空であるなら(すなわち一致がない)場合、パケットは、除外されている。
c.少なくとも1つの一致があれば、探索処理は、他の属性に進む。以下の短絡条件(short-circuiting conditions)のいずれかが満たされるまで、ステップa〜cを繰り返す。(1)いずれかの次元において、不一致が検出される。(2)先の一次元検査によって生成された全てのフィルタラベルリスト内において、共通のフィルタラベルが全くない。(3)全ての次元が検査された。
d.ステップcに示した除外条件のいずれも成立せず、及び全ての属性の検査において不一致がなかった場合、パケットを受け入れる決定が下される。
例えば上の図において、属性値(a,d)を有するパケットは、$1の検査についてF2を生成し、$2の検査についてF1を生成する。2つのフィルタラベルリストの間には、重複する部分が全くないので、パケットは、除外される。一方、属性値(a,c)を有するパケットは、$1及び$2の検査の両方でF2を生成し、このため、パケットは受け入れられる。この手続きは、最終的な多次元の分析においても略々正確であるので、これは、単にパケットを除外するための検査ではなく、パケットを受け入れるための検査であるとも言える。概算が行われるのは、フィルタの属性検査における切捨てのみである。この問題は、解決できない問題ではない。例えば、この問題は、以下の手続きによって回避できる。
1.完全なセットのサブセット順列に対応している属性のサブセットを含む複数のグリッド表を作成する(例えば、($1、$2、$3)を一方の組とし、($2、$4、$5)を他方の組として選択する)。述語に関する長いリストを有するフィルタは、少なくとも1個のこのようなグリッドテーブルによってカバーされる。
2.全ての属性について、外積検査を実行する多くの述語を有するフィルタは、本質的に選択的であり、ステップcに概説したパケット除外する条件(例えば、フィルタラベルリスト論理積)のいずれも、全ての属性が検査される前に生じる可能性があるので、短絡の確率(probability of short-circuiting)は、非常に高い。
多くの述語を含むフィルタは、非実用的であり、希であるので、フィルタ表現の切捨ては、必要ではあるが、実際には頻繁には行われない。
空間量子化及び外積を複合したハイブリッドな手法及びマルチテーブル探索法は、上述のように、本発明の更なる主要な要素を構成し、これらの処理は、後述するように、いずれも外積法を用いた従来の手法におけるスケーラビリティの欠如の問題を解決する。
点フィルタの場合、外積法は、正確である。しかしながら、範囲フィルタの場合、隣接するフィルタ境界の任意の対間で保存すべきフィルタラベルのリストとして外積を行う処理において、従来より2つの問題がある。第1の問題として、システムに、重複の度合いが高い範囲フィルタが挿入された場合保存される情報は、フィルタの数をNとして、Nのオーダとなる。第2に、リスト論理積ステップは、Nのオーダとなり、この処理は、Nが大きな場合、非常に遅い処理となる。グリッド検索と外積処理とを複合したハイブリッドな手法では、同じグリッドセルに含まれるフィルタのみを保存し、そのグリッドセルの境界に含まれるパケットを照合すればよいため、この問題を妥当なサイズに削減できる。グリッドセルは、ある意味、隣接しているフィルタ境界の間からのフィルタラベルリストを保存する役割を引き継いでおり、グリッドセルの数も削減されているので、フィルタラベルリストを保存する必要がある。
グリッドがフィルタ境界分布に基づいて構成される場合、偶数個のフィルタの偶数は、如何なる属性次元にも全ての属性次元における各グリッドセル間隔を生じる。Nが小さい場合、ストレージ問題(storage problem)Nは、大きな問題とはならない。例えば、32個の間隔を有するグリッドでは、(N/32)*=N/32によって、ストレージ問題が軽減される。また、リスト論理積処理の速度の問題についても同様に軽減される。
残りのグリッドセルの数が実際に小さければ、上述した外積処理は、良好に作用する。様々な順列の組に属性を分割し、各組につき1つのCBRテーブルを割り当てる処理により、各テーブル内のグリッドセルの数を妥当な数に制限できる。例えば、それぞれの属性軸の部門の数をLとすると、k個の属性のためのグリッドセルの総数は、Lとなる。マルチプルテーブル(サイズ=4)法を用いることによって、サイズは、MLまで削減される。ここで、Mは、順列K!/(K4!)4!の総数より小さい数である。なお、幾つかの順列は、大きく重なり合い、そのうちの1つを代表として選択してもよい(例えば、{$1,$2,$3}、{$1,$2,$4}、{$1,$2,$5})。
この実施例によるCBR処理(例えば処理480)(正確な述語毎のフィルタ照合ステップ516、524を除く。)は、少なくとも以下のような特徴を有している。1)パケット転送速度は、非常に速く、IPルーティングに匹敵し、O[k log(L)]回のステップのみを必要とする。ここで、Lは、何らかの属性軸における部門の数であり、kは、量子化され、マッピングされる属性の数である。4個の属性があり、各属性が32の領域に分割される場合、必要となるステップは、約22ステップである。2)パケット転送速度は、実時間において一定である。すなわち、これは、フィルタの数(N)に依存しない。この性質により、このCBR処理によって、維持可能な最大の帯域幅を見積もることができる。3)また、動的な更新も同様に早い。例えば、フィルタの挿入は、実施例に応じて、O(L)ステップで実現される。4)ストレージ要求は、小さくて、限定的であり、およそk(L−1)S+NrL/8である。ここで、Sは、バイトで表現される属性データタイプのサイズであり、Nrは、ルータにおいて転送されるインタフェースの数である。第1の項は、データ構造におけるk個のインデクス成分の総サイズであり、第2の項は、インデクスが付された実際の転送コンポーネント(すなわち、CBRテーブル)を表している。例えば、8個のインタフェースを備えるルータにおいて、4個の整数の属性と、32分割CBRを用いる場合、ストレージの量は、1MBに過ぎない。5)インデクス付与データ構造は、はるかに大きい転送成分から分離され、非常にキャッシングしやすい。例えば、上述の実施例では、インデクス構造のサイズは、4×31×4=496バイトのみである。6)また、グリッドは、フィルタをグループ化し、組織化するためのツールでもある。これは、特に、フィルタを伝播する前のフィルタの併合に有用であり、これにより、この処理は、多数の購読者を含むシステムにおいて非常にスケーラブルなものとなる。このように、CBR処理480は、高速で、予測可能で、動的で、スケーラブルで、大きなメモリを必要とせず、柔軟であり、したがって、発行−購読ネットワークのコアにおいて実用的に活用できる手法である。
適応グリッド
上述のように、グリッドは、属性空間を空間的に量子化することによって、形成される。属性空間は、通常は、均一に量子化される。ここで、属性空間に対し、例えば、過去のパケット分布に基づいて、適応的な空間量子化を行えば、グリッドの分解能と、したがって、CBR処理480の効率を高めることができる。適応型の量子化では、一致するパケットが最も多く受け取られると予想される属性空間の領域を判定する。例えば、適応型の量子化では、過去のパケット分布が最も集中している属性空間の領域を判定できる。そして、判定された1又は複数の領域は、属性空間内の他の量子化領域より高い精度で量子化される。換言すれば、判定された領域では、属性空間の他の量子化領域に比べて、グリッドセルの数がより大きくなり、グリッドセルのサイズがより小さくなる。これを以下の適応グリッドの2つの図に示す。
Figure 2005521950
Figure 2005521950
第1の図では、パケットトラヒックが混んでいる領域には、より高精度なグリッドが重ね合わされている。代替えとなる手法を示す第2の図では、例えば、量子化された座標(3,2)(4,2)(3,3)(4,3)によって取り囲まれている領域においては、グリッドセルがより高精度になり、集中するように、属性軸におけるグリッド間隔を変更している。
このような適応グリッドの利点は、非常に多い。この図からわかるように、領域Zは、適応的に量子化されている。領域Zでは、適応化を行わなければ4(4)グリッドセルの領域に、64(64)グリッドセルが設けられている。この図に示すように、フィルタ適用範囲情報sSは、処理前には部分的にカバーされた3つのグリッドセルを含むが、これが適応グリッドによって、1(1)個の部分的にカバーされたグリッドセルYのみになる。したがって、潜在的な漏れの可能性が著しく低減される。更に、領域Z内の64個のグリッドセルの1つ以上が部分的に覆われる場合、これらの各グリッドセルにおける潜在的な漏れの可能性は、部分的にカバーされたグリッドセルYより更に大幅に小さくなる。これは、領域Zにおいて、部分的にカバーされた各グリッドセルにおける緩和領域が、部分的にカバーされたグリッドセルYにおける緩和領域より大幅に小さくなるためである。したがって、適応グリッドを用いることによって、CBR処理480の効率を高めることができる。
第2の手法では、同数のグリッドセルを生成するので、第1の手法に比べて、ストレージ要求が高まらないという利点がある。但し、第2の手法は、第1の手法に比べて、精度の点で劣る。
発行−購読アーキテクチャを有するクエリ応答の実現
ここでは、クエリ応答型のインタラクションをサポートする発行−購読ネットワークを用いた一連の手法を説明する。この処理は、発行−購読スタイル、すなわち、発行(通知とも呼ばれる)及び購読予約の基本的な抽象概念とは異なるクエリ応答スタイル、すなわち、広告(オファーとも呼ばれる)、クエリ及び応答のマッピングを含む。更なる変更点として、ここでは、広告とクエリの単集合(単一のコンテンツアイテムを特徴付ける)と広告とクエリの集合(複数のコンテンツアイテムを特徴付ける)とを区別する。
上述のように、発行−購読ネットワークでは、発行者は、発行又は通知と呼ばれるコンテンツアイテムを作成し、配信する。多くのシステムにおいて、この情報は、種別化された属性のタプルとして構造化され、幾つかのシステムでは、サブジェクトと呼ばれる区別される属性を用いて、通知を初期的に分類する。購読者は、自らが興味を有する通知を特徴付ける購読予約を作成し、送信する。通知は、多くの場合、単集合のコンテンツアイテムであり、購読予約は、複雑な表現を用いて、興味ある通知の集合を特徴付ける。同じエンティティは、発行者と購読者の両方として機能できる。インタラクションは、発行者がコンテンツアイテムを購読者に発行することによって開始される。このプッシュ型配信は、購読予約及び通知間で、ある種の時間的順序を尊重する。具体的には、通知は、通知があった時点で有効な購読予約のみに対して照合され、将来の購読予約に対しては照合されない。
インタラクションの異なる形式であるクエリ応答スタイルは、インターネット検索エンジンやピアツーピアコンテンツコンテンツ共有システムを含む多くの一般的な分散アプリケーションの基礎となる。クエリ応答ソフトウェアアプリケーションでは、広告作成者(advertiser producer)と呼ばれるエンティティは、コンテンツを他のエンティティに提供し、広告作成者は、広告を介してコンテンツの存在を告知し、又は、提供できる単集合コンテンツアイテム又はコンテンツアイテムの集合を特徴付ける情報を提供する。要求者又は消費者と呼ばれる他方のエンティティは、興味がある単集合コンテンツアイテム又はコンテンツアイテムの集合を特徴付けるクエリ又は要求を同報通信する。アプリケーションは、消費者への応答として、一致する広告を特定し、これを消費者に配信する。このように、インタラクションは、消費者が広告及びコンテンツアイテム自体を作成者に求める(プルする)ことによって開始される。このプル型の送信は、広告とクエリの中で、ある種の時間的な順序を尊重する。具体的には、クエリは、クエリが発せられた時点において有効である広告だけに関して応答を得るが、将来の広告に関しては応答を得ない。
ここでは、発行−購読のプッシュ型インタラクションを用いて、クエリ−応答のプル型インタラクションをサポートするための一連の処理について説明する。以下では、これを実現するための5つの例示的な処理について説明する。
1.図24Aは、発行−購読システムを用いた第1のクエリ応答処理600を示すフローチャートである。処理600は、様々な発行−購読システムで実行できる。例えば、処理600は、ソフトウェア制御の下で、インテリジェントルータ92(又は対応する機能を有するASIC91)内のプロセッサ93により実行してもよく、例えば、ユーザ装置122、100内のプロセッサ134、114によって実行されるエージェント128、105として表現されるソフトウェアモジュールにおいて実現してもよい。
処理600では、発行−購読ネットワークを用いてクエリと広告とを照合し、広告主は、購読予約を用いて広告の単集合又は集合を登録し(ステップ602)、要求者は、発行/通知を用いて、単集合クエリを発行する(ステップ604)。換言すれば、広告の単集合又は集合は、購読予約にマッピングされ、単集合クエリは、通知にマッピングされるCBRを実行する発行−購読システムによって、購読予約(広告)を通知のためのフィルタ(クエリ)として用いて、一致する全ての通知が広告主にプッシュされる(ステップ606)。CBRは、上述したインフラストラクチャを用いて、上述した処理のいずれに従って実行してもよい。広告主は、何らかの非発行−購読手段(例えば要求者へのユニキャスト接続)を介して、又は発行−購読ネットワークを用いた同意に基づく取り決めを介して(例えば、通知として配信される要求を受け取るために、要求者に対し、個別の購読予約(要求者の通に対応している)を登録することを求める。)、通知を受け取り、要求者に応答を返す(ステップ608)。
図24Bは、処理600を更に説明するシーケンス図である。図24Bは、広告主(例えば、発行者装置100を使用する)と、CBRインフラストラクチャ(例えば、インテリジェントルータ92のネットワーク)と、要求者(例えば、購読者装置122を使用する)との間のインタラクションを表している。このシーケンス図は、好ましくは、処理600を実行する複数のプロセッサ(例えば、プロセッサ93、プロセッサ114及びプロセッサ132)の動作を示している。
2.図24Cは、発行−購読システムを用いる第2のクエリ応答処理610を示すフローチャートである。処理610は、様々な発行−購読システムで実行できる。例えば、処理610は、ソフトウェア制御の下で、インテリジェントルータ92(又は対応する機能を有するASIC91)内のプロセッサ93により実行してもよく、例えば、ユーザ装置122、100内のプロセッサ134、114によって実行されるエージェント128、105として表現されるソフトウェアモジュールにおいて実現してもよい。
処理610では、作成者は、関連する一対のサブジェクトを用いて、コンテンツアイテムを二重に配信する。作成者は、単集合コンテンツアイテムの初期の広告のために、初期サブジェクトと呼ばれる、この対の一方のサブジェクトを用いて、通知を発行する(ステップ616)。更に、作成者は、通知を発行する過去サブジェクト(past subject)と呼ばれる、対の他方のサブジェクトを用いて、先に初期サブジェクトによって発行された広告を定期的に再発行する(ステップ618)。消費者は、初期サブジェクトに関する1つの購読予約を提出して、新たな広告を受け取り(ステップ612)、及び過去サブジェクトに関する別の購読予約を提出して、以前に発行された広告を受け取る(ステップ614)。これに代えて、消費者は、以前に発行された広告のみ購読してもよい。これに一致する以前に発行された広告(及び、購読予約されている場合、新たな広告)は、CBRを用いて消費者にプッシュされる(ステップ620)。何らかの時点で、消費者は、過去サブジェクトのための購読を停止する(ステップ622)。
図24Dは、処理600を更に説明するシーケンス図である。図24Dは、広告主(例えば、発行者装置100を使用する)と、CBRインフラストラクチャ(例えば、インテリジェントルータ92のネットワーク)と、要求者(例えば、購読者装置122を使用する)との間のインタラクションを表している。このシーケンス図は、好ましくは、処理610を実行する複数のプロセッサ(例えば、プロセッサ93、プロセッサ114及びプロセッサ132)の動作を示している。
3.図24Eは、発行−購読システムを用いる第3のクエリ応答処理630を示すフローチャートである。処理630は、様々な発行−購読システムで実行できる。例えば、処理630は、ソフトウェア制御の下で、インテリジェントルータ92(又は対応する機能を有するASIC91)内のプロセッサ93により実行してもよく、例えば、ユーザ装置122、100内のプロセッサ134、114によって実行されるエージェント128、105として表現されるソフトウェアモジュールにおいて実現してもよい。
発行−購読ネットワークには、例えば上述したようなキャッシング機能が追加され、これにより、過去に発行された通知がキャッシングされ(ステップ632)将来の購読者がこれを利用することができる。作成者は、単集合コンテンツアイテムを広告するための通知を発行する(ステップ634)。消費者は、興味がある以前に広告されたコンテンツアイテムを要求するため(キャッシュから関連する通知を再生することによって提供される。)及び興味があるコンテンツアイテムの将来の広告を得るための両方の目的で単一の購読予約を提出する(ステップ636)。従来の発行−購読ネットワークと同様に、購読予約は、興味があるコンテンツアイテムの集合を特徴付ける。これに一致する、以前に発行された通知は、キャッシュから再生され(ステップ638)、CBRを用いて消費者にプッシュされる(ステップ640)。
図24Fは、処理630を更に説明するシーケンス図である。図24Fは、広告主(例えば、発行者装置100を使用する)と、CBRインフラストラクチャ(例えば、インテリジェントルータ92のネットワーク)と、要求者(例えば、購読者装置122を使用する)との間のインタラクションを表している。このシーケンス図は、好ましくは、処理630を実行する複数のプロセッサ(例えば、プロセッサ93、プロセッサ114及びプロセッサ132)の動作を示している。
4.図24G及び図24Hは、発行−購読システムを用いる第4のクエリ応答処理650を示すフローチャートである。処理650は、様々な発行−購読システムで実行できる。例えば、処理650は、ソフトウェア制御の下で、インテリジェントルータ92(又は対応する機能を有するASIC91)内のプロセッサ93により実行してもよく、例えば、ユーザ装置122、100内のプロセッサ134、114によって実行されるエージェント128、105として表現されるソフトウェアモジュールにおいて実現してもよい。
図24Gは、処理650のデータ広告フェーズを示している。まず、データ広告が受け取られる(ステップ652)。消費者が購読予約を用いて、クエリの組を特定し、作成者が通知を用いて、単集合コンテンツアイテムを広告できるようにするために、及び購読予約と通知のこのような用途に必要となる時間的な順序の逆転を実現するために、データ広告を同等な購読予約に変換する存在論的変換(ontology transformation)を実行する(ステップ654)。購読予約(変換の対象となるデータ広告)は、CBRネットワークに登録される(例えば、購読予約は、インテリジェントルータ92に保存される)(ステップ656)。
図24Hは、処理650のクエリ応答フェーズを示示している。まず、クエリが受け取られる(ステップ658)。上述したデータ広告と同様に、クエリは、存在論的変換によって、同等な通知に変換される(ステップ660)。ステップ654及びステップ660による古い空間(例えば、データ広告)から新たな空間(例えば、同等な購読予約)への変換は、まず、新たな空間において、古い空間からの属性と表現演算子の組合せを表す属性を定義する処理を含む。更にこの変換は、新たな空間において、古い空間におけるクエリと広告にそれぞれ等しい通知と購読予約を作成する処理を含む。変換は、変換されていないデータ広告が変換されていないクエリに一致する場合に且つこの場合のみに通知が購読予約に一致するという要求を満たさなければならない。
通知(変換されたクエリ)は、CBRを実行する発行−購読システムによって、通知に対するフィルタとして購読予約(変換されたデータ広告)を用いて、広告主にプッシュされる(ステップ662)。CBRは、上述したインフラストラクチャを用いて、上述した処理のいずれに従って実行してもよい。広告主は、何らかの非発行−購読手段(例えば要求者へのユニキャスト接続)を介して、又は発行−購読ネットワークを用いた同意に基づく取り決めを介して変換された通知を受け取り、要求者に応答データを返す(ステップ664)。
図24Iは、処理600を更に説明するシーケンス図である。図24Iは、広告主(例えば、発行者装置100を使用する)と、CBRインフラストラクチャ(例えば、インテリジェントルータ92のネットワーク)と、要求者(例えば、購読者装置122を使用する)との間のインタラクションを表している。このシーケンス図は、好ましくは、処理650を実行する複数のプロセッサ(例えば、プロセッサ93、プロセッサ114及びプロセッサ132)の動作を示している。
Figure 2005521950
Figure 2005521950
Figure 2005521950
Figure 2005521950
Figure 2005521950
Figure 2005521950
Figure 2005521950
5.第5の処理では、更なるインタフェース点及び/又はメッセージフォーマットにより、発行−購読ネットワークの機能が拡張され、これにより、作成者は、通知、広告及び応答を区別でき、消費者は、購読予約とクエリを区別できる。ネットワークにおいて、様々な基本的要素(primitives)を分離することにより、データ構造、アルゴリズム及びプロトコルの均一の組を用いると同時に、両方のスタイルのインタラクションが実現できる。
持続的で信頼性が高いメッセージ配信
以下、発行−購読ネットワークにおける、ネットワーク、リンク及び/又はノード故障に関連するメッセージの持続的な保存と再生、メッセージフローの再開及び/又は継続のための装置及び方法について説明する。メッセージの持続性とは、メッセージを保存し、後にこの保存されたメッセージを読み出すことができる性質を指す。例えば電子メールを始めとする多くの特定の用途では、通常、ネットワークを介して通信されるメッセージについて、長いメッセージ持続性が必要とされる。ネットワーク障害が発生しない理想的な条件では、常時接続された購読者は、これらの特定の用途において必要とされる以上の如何なる持続も求めない。しかしながら、現実には、メッセージは、ネットワークを介して伝送されている間に様々な理由のために「失われる」ことがある。この理由としては、例えば、(1)ネットワーク又はユーザ側における故障又はバッファオーバフローや(2)ユーザが自らネットワーク接続を切断した後、所定の期間経過後に再び接続する場合等がある。
この実施例におけるイベント通知プラットフォームの持続モデルは、短期持続と長期持続の2つのレベルに分割される。短期持続は、ネットワーク輻輳又は短期的なリンク障害のために失われたパケットを復元する。長期持続は、例えば、ユーザ接続の障害、ユーザ装置の障害、アプリケーションの障害及び/又はより長い期間ネットワーク内の障害等を含む他の障害に起因して失われたパケットを復元する。
チャンネル(例えば、上述のように、)は、持続的である場合もあり、実時間である場合もある。実時間チャンネルは、通常、実時間のみにおいて有用なデータを送信し、アプリケーション固有の如何なる持続要求も有さない。持続的なチャンネルは、持続タイムフレームTの間、ネットワークを伝送されるデータを保存する。換言すれば、持続的なチャンネルにおいては、持続性は、タイムフレームTの間保証されている。データのこの持続は、例えば次のように実現される。チャンネルの持続的な所要時間の間、各エッジノードでデータをキャッシングする。障害が発生した条件下で、ユーザにとってトランスペアレントなキャッシュからデータを読み出す。ユーザがキャッシュからデータを検索できるようにする。ルータ障害を防ぎ、ルータの間の信頼できるトンネルを設立することによってネットワークを介したデータのフローを持続的にする。そして、複製によって、チャンネル成分を障害から保護する。
A.キャッシングによる持続
時限式の持続(タイムフレームTによる)は、発行−購読ネットワークから、直前のタイムフレームTにおけるデータを検索する能力である。例えば、購読者がネットワーク接続を切断した場合、購読者が不在の間に受け取られる、持続的なチャンネルに関する如何なるデータも(データの受信から)タイムフレームTが経過するまでの間、ネットワークで保持される。ユーザがタイムフレームT内に戻れば、如何なるデータも失われない。
図25Aは、キャッシングによって持続性を実現する発行−購読ネットワークの一部を示すブロック図である。図25Aに示すように、ネットワークは、コアルーティングノードとエッジルーティングノードとを備える。各ルーティングノードは、図4を用いて上述したように、好ましくは、インテリジェントルータ92(エッジルーティングノードと共に示す)と、従来のバックボーンルータ(図示せず)とを備える。持続的なチャンネルのためのキャッシングを行う必要がある各インテリジェントルータ92は、図25Aに示すように、好ましくは同じ場所にキャッシュマネージャ218を備える。キャッシュマネージャ218については、図8を用いて上述した通りである。インテリジェントルータ92は、好ましくは、失われたデータを読み出し又はルータ故障から復元するための短期的な持続性を実現する。キャッシュマネージャ218は、チャンネルにおける長期的な持続を実現するために、データをキャッシングする。キャッシュマネージャ218は、好ましくは、キャッシュ540内にこのデータをキャッシングする。キャッシュ540は、好ましくは、メモリとディスク(図示せず)を含んでいる。また、図25Aに示すエージェント128は、図5を用いて上述したように、好ましくは、購読者装置122(図25Aでは示していない)内に設けられる。エージェント128は、キャッシュマネージャ218と通信し、キャッシュ540からデータを検索し、検索したデータを受け取り、検索したデータを組織化する。
図25Aに示していないが、エッジルーティングノードよりアップストリーム側の第1のレベルの各コアルーティングノードは、好ましくは、キャッシュマネージャ218を備える。第1のレベルのアップストリームコアルーティングノードとは、エッジルーティングノードよりアップストリーム側に隣接するルーティングノードを意味する。発行−購読ネットワークは、多くの場合、複数の第1のレベルのコアルーティングノードを含んでいるが、図25Aでは、1つの第1のレベルのコアルーティングノード、すなわちコアルーティングノード548のみを示している。上述のように、キャッシュマネージャ218は、自らが存在するネットワークノードにおいて、データのローカルなキャッシングを実現する。したがって、例えば、コアルーティングノード548を含む様々なコアルーティングノードに存在するキャッシュマネージャ218の動作は、ネットワークコア内のデータの分散型のキャッシングを実現する。この分配型のキャッシングは、エッジルーティングノードのキャッシングにバックアップを提供する。
キャッシュマネージャ218は、好ましくは、キャッシュ546を管理するルーチン又はサブルーチンを含む。これらのルーチンは、図25Bに示すように、好ましくはデータキャッシングルーチン545と、キャッシュデータ検索ルーチン547と、キャッシュデータパージルーチン549とを含んでいる。これらのルーチンは、それぞれ別々に動作でき、又は図25Bに示すように、互いに通信し及び/又は制御を渡すことができる。
図25Cは、単一のメッセージに含まれたデータのための持続的なキャッシング処理550のフローチャートである。図25Cに示すように、処理550は、図25Bに示す各ルーチンによって実行されるステップの具体例を示している。実際の動作では、これらのルーチンは、互いに独立して実行される。処理550は、キャッシングを提供するインテリジェントルータ92、エッジルーティングノード又はコアルーティングノードで実行できる。
処理550は、例えば、インテリジェントルータ92におけるプロセッサ93によって実行されるソフトウェアモジュール(例えば、キャッシュマネージャ218)によって実現できる。これに代えて、この処理をASICで実現してもよく、或いはハードウェアとソフトウェアの組合せによって実現してもよい。これらは、対応するインテリジェントルータ92と同じ物理機器であっても異なる物理機器であってもよい。インテリジェントルータ92は、キャッシュマネージャ218にキャッシングする必要があるメッセージを転送する。キャッシュマネージャ218は、データを含むメッセージを受け取り(ステップ552)、メッセージ内のデータに時刻を表すマークを付し(ステップ554)、キャッシュ546にデータをキャッシングする(ステップ556)(図14おけるステップ322〜326と同様(上述参照))。キャッシュマネージャ218は、上述のように、例えば、チャンネル識別子、サブジェクト、発行者識別子、タイムスタンプ等を含む様々な手法でキャッシングされたデータにインデクスを付す(ステップ558)。インデクス付与ステップは、キャッシングステップ556より先に行ってもよく、これと同時に行ってもよく、これの後に行ってもよい。キャッシングされたデータには、インデクスが付され、階層的なディレクトリ構造内に保存される(例えば、図15参照)。また、表17〜19もこの処理に関連する。
データは、メモリ(キャッシュ546)にキャッシングされ、定期的にディスクに移される(ステップ560)。特定のチャンネルのための持続タイムフレーム「T」は、それぞれがサイズGを有するN個のタイムグレイン(time grains)に分割される。メモリにおけるキャッシング(ステップ556)は、Gの期間だけ行われる。キャッシュマネージャが、期間Gが経過したと判定すると(ステップ559)、データは、ディスクに移される(ステップ560)。キャッシュマネージャ218は、持続タイムアウト期間Tの間、ディスク上にデータを保存する。
時間が持続タイムアウト(T)+期間の上限以上に経過すると(ステップ562)、期間Gに対応するデータは、ディスクから削除される(ステップ564)。説明のために、あるチャンネルについて、Tが2時間であるとする。更に、キャッシュマネージャ218は、15分のタイムグレインGを用いるとする。ディスクからデータを削除するために、好ましくは、期間G(15分)の間にキャッシングされた最後のデータがT(2時間)の間保存された場合、その15分の期間にキャッシングされた全体のデータを破棄するといったポリシを用いる。したがってその15分の期間の最初にキャッシングされたデータは、破棄されるまでに、2時間以上保存される。この実施例では、各15分間にキャッシングされるデータは、データのブロックである。持続タイムフレームTがN個の期間に分割される場合、如何なる時刻においても、各サブジェクトのためのキャッシュ540内にN+1個のデータブロック(ディスクにN個とメモリに1個)が存在する。
キャッシュマネージャ218がデータに関する要求を受け取ると(ステップ566)、キャッシュマネージャ218は、インデクスを用いて、その要求されたキャッシングされた(期間Tが経過していない)データを検索し(ステップ568)、要求した購読者装置122へのルーティングのために、検索されたデータをバックボーンルータに転送する(ステップ570)。図25Dを用いて後述するように、エッジルーティングノードにおいて、データがキャッシュ540にない場合、キャッシュマネージャ218は、アップストリームの第1のレベルのコアルーティングノード(例えば、コアルーティングノード548)におけるキャッシュを呼び出し、データを検索してもよい。キャッシュマネージャ218が要求を受け取らない場合、処理550は、ステップ552に戻る。
インテリジェントルータ92のキャッシュマネージャ218における障害の発生に備えて、キャッシュ546へのデータの保存に加えて、データは、第1のレベルのアップストリームコアルーティングノード(例えば、コアルーティングノード548)のキャッシュにも保存される。したがって、ステップ552〜564は、好ましくは、メッセージをルーティングする前に及びエッジルーティングノードで処理550を実行する前に第1のレベルのアップストリームコアルーティングノードにおいて実行される。
(例えば、エッジルーティングノード内の)キャッシュ546及び第1のレベルのアップストリームコアルーティングノード(例えば、第1のアップストリームのコアルータ548)におけるキャッシュの位置は、エージェント128にローカルに保存される。したがって購読者装置122が移動した場合(例えば、購読者が、異なるエッジルーティングノードを介してネットワークに再接続する携帯電話の契約者である場合)、エージェント128は、新たなエッジルーティングノードに対し、購読者装置122が移動する前に接続されていたエッジルーティングノードと第1のレベルのアップストリームコアルーティングノードのキャッシュの位置を知らせる。これにより、購読者装置122が移動しても、データの持続性を維持することができる。
持続的なメッセージ検索処理580のフローチャートである図25Dに示すように、購読者装置122のユーザアプリケーション182は、好ましくは、キャッシュからデータを要求するためにエージェント128を呼び出す(ステップ582)。エージェント128は、保存されたキャッシュ位置を用いて、適切なエッジルーティングノードにおけるキャッシュ546を呼び出し(例えばgetcacheコマンドを用いる)、データを取得する(ステップ584)。エージェント128により、どのタイムフレームのデータを読み出すかを指定してもよい。これに代えて、キャッシュマネージャ218は、購読者装置122に関する接続履歴を検査して(上述の表18参照)、キャッシングされたどのデータを読み出すかを判定してもよい。接続履歴により、購読者装置122が期間Xの間オフラインであったことがわかった場合、キャッシュマネージャ218は、期間Xについてキャッシングされている全てのデータを検索してもよい。更に、キャッシュマネージャ218は、単に持続タイムフレームT間にキャッシングされた全てのデータを検索してもよい。エッジルーティングノードのキャッシュ546にデータがある場合(ステップ585)、エージェント128は、キャッシュ546からのデータを読み出す(ステップ586)。
キャッシュ546がデータを有していない場合、キャッシュマネージャ218は、エージェント128によって提供される、第1のレベルのアップストリームルーティングノード(例えば、コアルーティングノード548)におけるキャッシュのリストを用いて、これらのアップストリームのキャッシュを呼び出し、データを検索する(ステップ588)。キャッシュマネージャ218がアップストリームのキャッシュ又はキャッシュ内のデータの位置を検出すると、キャッシュマネージャ218は、そのアップストリームのキャッシュからデータを読み出す(ステップ590)。キャッシュマネージャ218は、重複抑制処理(すなわち、重複データを排除する処理)を実行した後に(ステップ592)、エージェント128にデータを転送(ステップ594)してもよい。
B.障害保護による持続
本発明に基づくインフラストラクチャは、チャンネルマネージャと、イベントエージェントと、ルーティングノード及びキャッシュ、又はこれらと同等の構成要素を含んでいる。障害が発生している条件の間にメッセージが失われてしまうことを防ぐためには。これらの各構成要素を保護する必要がある。
1.チャンネルマネージャ障害の保護
チャンネルマネージャについては、図6を用いて上述した。チャンネルマネージャは、複製によって障害から保護される。チャンネルマネージャは、1つのプライマリモジュールと他のバックアップモジュールを含むプライマリバックアップグループ内で動作する。プライマリモジュールは、データに関する全ての更新を行い、及びクエリに応答する機能を担っている。バックアップモジュールは、クエリに応答するのみで、更新を実行する機能は有していない、すなわち、バックアップモジュールは、全ての更新をプライマリに送る。
チャンネルマネージャからチャンネル情報を検索する必要がある発行−購読ネットワークのコンポーネントは、チャンネルマネージャクライアントと呼ばれ、チャンネルマネージャクライアントには、チャンネルマネージャが割り当てられる。これらのクライアントには、インテリジェントルータ92及びそのキャッシュマネージャ218、購読者装置122及びそのエージェント128等が含まれる。クライアントに割り当てられたチャンネルマネージャに障害が発生すると、クライアントは、別のチャンネルマネージャにアクセスし、これに接続する。
2.ルータ及びキャッシュ障害の保護
ルーティングインフラストラクチャコンポーネントのための回復には、幾つかのレベル(レベル0、レベル1〜レベル3)がある。レベル0は、障害の影響をローカルに(すなわち、障害が発生したルータ内部で)制御し、回復は、障害が発生したルーティングノードに制限される。レベル0回復は、ハードウェア冗長性に依存して、ハードウェア障害からの回復を行う。すなわち、ルータのハードウェア資源は、複製される。レベルの0回復の主な利点は、短い回復時間とトランスペアレント性である。レベル1は、LAN内の障害の影響を制御する。レベル1回復は、クラスタ技術を用いたIP障害迂回によって実現される。しかしながら、障害が発生したルータから、これに隣接するルータへのトンネルは、回復の後に再構築する必要がある。したがって、レベル1回復は、レベル0回復に比べてトランスペアレント性が低く、実行に時間がかかる。
レベル2回復の目的は、複雑な再構成とデータ損失を引き起こすようなネットワークトポロジへの影響を生じることなくWANの上のリモートバックアップルータによって、ルータ障害を回復することである。レベル2回復は、ルータをグループ化することによって(例えば、プライマリとバックアップルータ)、一組の回復を実現する。1つのルータが1つのグループにおけるプライマリルータとして機能すると共に、別のグループにおけるバックアップルータとして機能することもできる。プライマリルータは、ルーティングとネットワーク構成に関する情報をバックアップルータと交換し、バックアップルータがプライマリルータにおける障害を検出した場合、バックアップルータは、プライマリルータの機能を引き継ぐ。バックアップは、障害が発生したと考えられるプライマリルータに隣接するプライマリルータの大多数に接続できることを確認することにより、障害が発生したのがプライマリルータとのリンクではなく、プライマリルータであることを確認する。障害が発生したと考えられるプライマリルータに隣接するプライマリルータの大多数に接続することができない場合、レベル3回復がトリガされる。
レベル回復3では、システム全体に亘る連携された回復を行う。レベル3回復は、他の全てに障害が発生している場合に実行される。このような障害を検出したルータは、ダウンストリームの全てのルータに再開通知(restart notice)を送信する。通知を受け取ったルータは、他の全ての回復を中断させ、全てのネットワークサービスを停止し、再開メッセージにおける全てのマルチキャスティング情報を削除する。全てのネットワークサービスが終了すると、ルータは、マルチキャスティングのためのツリー構築処理を含む全てのサービスを再開する。ネットワークにおける如何なる失敗もより低いレベルの回復手続きによって処理される。低いレベルの回復が適用できない場合、回復は、より高い次のレベルの回復を順次実行してもよい。低いレベルの回復のいずれも動作しない場合、レベル3回復が用いられる。
3.信頼できるトンネル
ネットワークに障害が発生している間、メッセージの損失を防ぐために、ルーティングノード間のトラヒックを伝送する信頼できるトンネルを用いる。トンネルは、図3を用いて上述した通りである。伝送期間中の如何なるメッセージ損失も受信端末によって検出され、受信端末は、失われたメッセージを再送処理するように送信側に依頼する。
以上、例示的な実施例を用いて本発明を説明してきたが、これらの実施例を様々に変形できることは当業者にとって明らかであり、本発明は、これらの如何なる適応化又は変形をも含む。例えば、本発明の範囲から逸脱することなく、様々な種類の発行者装置、ユーザ又は購読者装置、これらのチャンネル及び構成、コンテンツベースのルーティング及び他の機能のハードウェア及びソフトウェアによる実現が可能である。この発明は、特許請求の範囲及びその均等物によってのみ制限される。
ネットワークコアにおけるこのインテリジェントルーティングを概念的に示すブロック図である。 発行者及び購読者のためのインテリジェントルータを示すネットワーク図である。 インテリジェントルータとバックボーンルータのための例示的なネットワークインフラストラクチャの構成を示す図である。 インテリジェントルータのハードウェア構成を示す図である。 発行者装置及び購読者装置の構成を示す図である。 インテリジェントルータのチャンネルマネージャの構成を示す図である。 インテリジェントルータを有するネットワークに接続するためのユーザ装置のソフトウェアコンポーネントの構成を示す図である。 インテリジェントルータのためのソフトウェアコンポーネントの構成を示す図である。 メッセージのためのパケット構造を示す図である。 発行処理のフローチャートである。 購読処理のフローチャートである。 チャンネル及び購読者画面を示す図である。 コンテンツベースのルーティング処理のフローチャートである。 キャッシング処理のフローチャートである。 キャッシュインデクスを示す図である。 送信メッセージのためのエージェント処理のフローチャートである。 受信メッセージのためのエージェント処理のフローチャートである。 メッセージの符号化の具体例を説明する図である。 購読予約を保存するためのデータベース構造を示す図である。 ワイルドカード処理のフローチャートである。 発行−購読ネットワークにおける通知の信頼性を高める処理のフローチャートである。 フィルタ伝播処理のフローチャートである。 フィルタ削減処理のフローチャートである。 他のフィルタ伝播処理のフローチャートである。 発行−購読ネットワークトポロジを示す図である。 プリコンピュテーションを用いるコンテンツベースのルーティング処理のフローチャートである。 プリコンピュテーションを用いるコンテンツベースのルーティング処理のフローチャートである。 発行−購読ネットワークを用いたクエリ応答処理のフローチャートである。 図24Aの処理を更に説明するシーケンス図である。 発行−購読ネットワークを用いた他のクエリ応答処理のフローチャートである。 図24Cの処理を更に説明するシーケンス図である。 発行−購読ネットワークを用いた他のクエリ応答処理のフローチャートである。 図24Eの処理を更に説明するシーケンス図である。 発行−購読ネットワークを用いた他のクエリ応答処理のフローチャートである。 発行−購読ネットワークを用いた他のクエリ応答処理のフローチャートである。 図24G及び図24Hの処理を更に説明するシーケンス図である。 キャッシングによって持続性を実現する発行−購読ネットワークの一部を示すブロック図である。 キャッシュマネージャルーチンの具体例を示す図である。 持続的なキャッシング処理のフローチャートである。 持続的なメッセージ検索処理のフローチャートである。

Claims (193)

  1. 信頼性の低いネットワーク上で発行−購読処理を実行するための通信方法において、
    上記ネットワークを介して、コンテンツの購読予約を受信するステップと、
    上記コンテンツの購読予約に基づいて、上記ネットワークを介して上記コンテンツを発行するステップと、
    上記ネットワークにおけるノードにおいて、上記コンテンツに関する通知を受信するステップと、
    上記通知を隣接しているノードに転送すべきか否かを判定するステップと、
    上記判定に基づいて、信頼できる伝送プロトコルを用いて、上記隣接しているノードに通知を選択的に転送するステップとを有する通信方法。
  2. 上記通知を選択的に転送するステップは、該通知の転送の失敗を示す情報を示す指示情報を受け取り、該指示情報に応じて上記通知を再転送するステップを有することを特徴とする請求項1記載の通信方法。
  3. 上記転送するステップは、通知をカプセル化したパケットを転送するステップを有することを特徴とする請求項1記載の通信方法。
  4. 上記転送するステップは、通知の転送にインターネットプロトコルを用いることを特徴とする請求項1記載の通信方法。
  5. 上記転送するステップは、単一のノード毎に通知を転送するステップを有することを特徴とする請求項1記載の通信方法。
  6. 上記判定するステップは、コンテンツが上記コンテンツの購読予約における1つ以上の条件を満たすか否かを判定するステップを有することを特徴とする請求項1記載の通信方法。
  7. 上記転送するステップは、ルータを用いて、上記隣接しているノードに通知を転送するステップを有することを特徴とする請求項1記載の通信方法。
  8. 上記購読予約に対応している1又は複数の購読者に通知が配信されるまで、ネットワーク内のノード毎に上記発行ステップを繰り返すステップを更に有する請求項1記載の通信方法。
  9. 上記通知を選択的に転送するステップは、伝送制御プロトコルを用いることを特徴とする請求項1記載の通信方法。
  10. 信頼性の低いネットワーク上で発行−購読処理を実行するルータにおいて、請求項1記載の通信方法を実現するモジュールを備えるルータ。
  11. 発行−購読処理を実行するため広域ネットワークにおいて、
    1つ以上の購読者装置と、
    複数のルータとを備え、
    上記複数のルータのそれぞれは、
    上記広域ネットワークを介して、上記購読者装置の1つ以上に対応しているコンテンツの購読予約を受信する購読予約受信モジュールと、上記ネットワーク内のノードにおいて、コンテンツに関する通知を受信する通知受信モジュールと、上記通知を隣接しているノードに転送するべきか否かを判定するコンテンツベースルーティングモジュールと、上記判定に基づいて、信頼できる伝送プロトコルを用いて、上記隣接しているノードに通知を選択的に転送する高信頼性転送モジュールとを有する発行モジュールとを備え、
    上記複数のルータは、上記購読予約に対応している1又は複数の購読者に通知が配信されるまで、上記通知を高い信頼性で選択的に転送することを特徴とする広域ネットワーク。
  12. 信頼性の低いネットワーク上で発行−購読処理を実行するための通信方法において、
    上記ネットワーク内の第1のノードにおいて、上記ネットワークを介して、コンテンツの購読予約を受信するステップと、
    上記ネットワーク内の上記第1のノードにおいて、上記コンテンツに関する通知を受信するステップと、
    コンテンツベースのルーティング(content-based routing:CBR)に基づいて、上記コンテンツの購読予約を用いて、上記通知を隣接している第2のノードに転送するべきか否かを判定するステップと、
    上記判定に基づいて、信頼できる伝送プロトコルを用いて、上記隣接しているノードに通知を選択的に転送するステップとを有する通信方法。
  13. 上記第1のノードと上記第2のノードとの間の転送に失敗したとき、転送エラーを示す指示情報を受信するステップと、
    上記指示情報に応じて、上記第2のノードに上記通知を再転送するステップを有することを特徴とする請求項12記載の通信方法。
  14. 上記選択的な転送を行う前に、上記通知をバッファにバッファリングするステップを有する請求項12記載の通信方法。
  15. 所定の期間経過後に、上記バッファリングされた通知を補助記憶装置に移すステップを有する請求項14記載の通信方法。
  16. 上記バッファリングされた通知を先入れ先出し方式で削除するステップを有する請求項14記載の通信方法。
  17. 上記バッファリングされた通知をサービス品質基づいて削除するステップを有する請求項14記載の通信方法。
  18. 上記通知を上記第1のノードのキャッシュにキャッシングするステップを有する請求項12記載の通信方法。
  19. 上記高い信頼性で転送するステップは、伝送制御プロトコルを用いることを特徴とする請求項12記載の通信方法。
  20. 信頼性の低いネットワーク上で発行−購読処理を実行するルータにおいて、請求項12記載の通信方法を実現するモジュールを備えるルータ。
  21. 発行−購読処理を実行するため広域ネットワーク(WAN)において、
    1つ以上の購読者装置と、
    複数のルータとを備え、
    上記複数のルータのそれぞれは、
    上記WAN内の第1のノードにおいて、上記WANを介して、上記購読者装置の1つ以上に対応しているコンテンツの購読予約を受信する購読予約受信モジュールと、上記WAN内の第1のノードにおいて、コンテンツに関する通知を受信する通知受信モジュールと、上記通知を上記WAN内の第2のノードに転送するべきか否かを判定するコンテンツベースルーティングモジュールと、上記判定に基づいて、信頼できる伝送プロトコルを用いて、上記第2のノードに通知を選択的に転送する高信頼性転送モジュールとを有する発行モジュールとを備え、
    上記複数のルータは、上記購読予約に対応している1又は複数の購読者に通知が配信されるまで、上記通知を高い信頼性で選択的に転送することを特徴とする広域ネットワーク。
  22. 上記高信頼性転送モジュールは、伝送制御プロトコルを用いることを特徴とする請求項21記載の広域ネットワーク。
  23. 信頼性の低いネットワーク上で発行−購読処理を実行するための通信方法において、
    信頼できる伝送プロトコルを用いて、2つの隣接しているノード間に信頼できるトンネルを確立するステップと、
    上記隣接するノードのうちの第1のノードにおいて、上記ネットワークを介して、コンテンツの購読予約を受信するステップと、
    上記ネットワーク内の上記第1のノードにおいて、上記コンテンツに関する通知を受信するステップと、
    コンテンツベースのルーティング(content-based routing:CBR)に基づいて、上記コンテンツの購読予約を用いて、上記通知を隣接している第2のノードに転送するべきか否かを判定するステップと、
    上記判定に基づいて、上記信頼できるトンネルを用いて、上記隣接している第2のノードに通知を転送するステップとを有する通信方法。
  24. 信頼性の低いネットワーク上で発行−購読処理を実行するルータにおいて、請求項23記載の通信方法を実現するモジュールを備えるルータ。
  25. 請求項24記載のルータを複数備え、発行−購読処理を実現するネットワーク。
  26. 発行−購読ネットワークにおいて、フィルタを伝播するための通信方法において、
    ネットワークにおけるコンテンツの購読予約に関連する複数のフィルタを受信するステップと、
    特定の基準に基づいて、上記フィルタの数を減少させるステップと、
    上記ネットワークにおいて、上記コンテンツの購読予約を照合するために上記数が削減されたフィルタを伝播するステップとを有する通信方法。
  27. 上記削減するステップは、
    上記複数のフィルタの1つ以上に対する概算処理を実行するステップと、
    上記複数のフィルタの1つ以上に対する併合処理を実行するステップとのうちの少なくとも1つ以上を含んでいることを特徴とする請求項26記載の通信方法。
  28. 上記併合処理を実行するステップは、併合されたフィルタがパケット漏れ閾値を超えるか否かを決定するステップを有することを特徴とする請求項27記載の通信方法。
  29. 上記受信するステップは、コンテンツベースのルーティングネットワークを介して複数個のフィルタを受信するステップを有することを特徴とする請求項26記載の通信方法。
  30. 上記伝播するステップは、積極的伝播スキーム、消極的伝播スキーム、同報通信広告への応答スキーム、アフターネットワークトポロジ演算スキーム、定期的伝播スキーム、障害回復時にフィルタを再伝播するスキーム、ネットワーク再構成の間にフィルタを再伝播するスキームを含む複数の特定の手続きの1つ以上を用いることでフィルタを伝播するステップを有することを特徴とする請求項26記載の通信方法。
  31. 上記フィルタを伝播するためのソースノード及びデスティネーションノードは、ホップバイホップ方式、エンドツーエンド方式、トンネルを用いた方式、伝送制御プロトコルを用いた方式を含む複数の特定のメカニズムの1つ以上を用いて接続されている請求項26記載の通信方法。
  32. 上記ネットワーク内の複数の特定の位置のうちの1つ以上の位置にネットワークでフィルタを挿入するステップを有する請求項26記載の通信方法。
  33. 上記フィルタを伝播するステップは、移動する、持続的な及び一時的な振る舞いから選択される、意図する受信者の特定の振る舞いのうちの少なくとも1つに基づいてフィルタを伝播するステップを有することを特徴とする請求項26記載の通信方法。
  34. 上記フィルタを伝播するステップは、移動する、持続的な及び一時的な振る舞いから選択される、上記1以上のフィルタの送信者の特定の振る舞いのうちの少なくとも1つに基づいてフィルタを伝播するステップを有することを特徴とする請求項26記載の通信方法。
  35. 属性コンテンツの変換、表現の拡張、表現の変換、表示の変形、符号化/復号、暗号化/平文化を含む複数の特定の処理ステップのうちの1つ以上を実行するステップを有する請求項26記載の通信方法。
  36. 複数の特定のフォーマットのうちの1つ以上に基づいて、上記1つ以上のフィルタを含むメッセージをフォーマットするステップを有する請求項26記載の通信方法。
  37. 上記フィルタを伝播するステップは、管理、メインテナンス、フィルタ持続、ポリシを強調する性能、監視、課金を含む複数の特定のポリシ又は手続きのうちの1つ以上に従ってフィルタを伝播するステップを有することを特徴とする請求項26記載の通信方法。
  38. 上記フィルタを伝播ステップは、
    フィルタを伝播するために満たされなければならないフィルタ伝播のための複数の要求のうちの1つ以上を含む、フィルタ伝播ストラテジの基礎となるネットワークトポロジを判定するステップと、
    上記判定されたフィルタ伝播ストラテジの要求の満足に基づいて、フィルタの数を削減するステップとを有する請求項26記載の通信方法。
  39. 上記判定されるフィルタ伝播ストラテジは、積極的伝播スキーム、消極的伝播スキーム、同報通信広告への応答スキーム、アフターネットワークトポロジ演算スキーム、定期的伝播スキーム、障害回復時にフィルタを再伝播するスキーム、ネットワーク再構成の間にフィルタを再伝播するスキームのうちの1つであることを特徴とする請求項38記載の通信方法。
  40. 上記受信するステップは、ネットワーク内のコアルータにおいて、複数個のフィルタを受信するステップを有することを特徴とする請求項26記載の通信方法。
  41. 上記受信するステップは、ネットワーク内のエッジルータにおいて、複数個のフィルタを受信するステップを有することを特徴とする請求項26記載の通信方法。
  42. 上記受信するステップは、ネットワーク内の発行者装置において、複数個のフィルタを受信するステップを有することを特徴とする請求項26記載の通信方法。
  43. 発行−購読ネットワークに置いて、フィルタを伝播するルータにおいて、請求項26記載の通信方法を実現するモジュールを備えるルータ。
  44. 請求項26記載の通信方法を実現するモジュールを備える複数個のルータを備える発行−購読ネットワーク。
  45. 請求項26記載の通信方法を実現するモジュールを備えるユーザ装置を備える発行−購読ネットワーク。
  46. 発行−購読ネットワークにおいて、フィルタを伝播するための通信装置において、
    ネットワークにおけるコンテンツの購読予約に関連する複数のフィルタを受信するフィルタ受信モジュールと、
    特定の基準に基づいて、上記フィルタの数を減少させるフィルタ削減モジュールと、
    上記ネットワークにおいて、上記コンテンツの購読予約を照合するために上記数が削減されたフィルタを伝播するフィルタ伝播モジュールとを備える通信装置。
  47. 上記複数のフィルタの1つ以上に対する概算処理を実行するフィルタ概算モジュールと、
    上記複数のフィルタの1つ以上に対する併合処理を実行するフィルタ併合モジュールとを備える請求項46記載の通信装置。
  48. 上記1つ以上のフィルタを変形するフィルタ処理モジュールと、
    上記フィルタの相互の類似性に基づいて、フィルタをグループ化するフィルタグループ化モジュールとを備える請求項46記載の通信装置。
  49. 発行−購読ネットワークにおいて、フィルタを伝播するための通信方法において、
    (a)ネットワークのノードにおいて、複数のフィルタを受信するステップと、
    (b)上記受け取った1つ以上のフィルタを処理し、フィルタの数を削減するステップと、
    (c)受信者の振る舞いの規則に基づいて、フィルタを伝播するか否かを決定するステップと、
    (d)ネットワーク内の次のノードに、上記処理されたフィルタを伝播するステップとを有する通信方法。
  50. 送信者の振る舞いの規則に基づいて、フィルタを伝播するか否かを決定するステップを有する請求項49記載の通信方法。
  51. ネットワークにおいて、次のノードの後段に更なるノードがあるか否かを判定するステップを有する請求項49記載の通信方法。
  52. 上記次のノードの後段に更なるノードがあると判定された場合、上記ステップ(b)〜(d)を繰り返すステップを有する請求項49記載の通信方法。
  53. 上記ネットワークにおける次のノードに、受信すべき更なるフィルタがあるか否かを判定するステップを更に有する請求項49記載の通信方法。
  54. 上記ネットワークにおける次のノードに、受信すべき更なるフィルタがあると判定された場合、新たなノードにおいて、上記ステップ(a)〜(d)を繰り返すステップを更に有する請求項53記載の通信方法。
  55. 上記フィルタを処理するステップは、冗長な述語表現を取り除いてフィルタを簡約するステップ、フィルタを概算するステップ、フィルタをクラスタ化するステップ、フィルタを包摂するステップ、2個以上のフィルタを併合するステップのうちの1つ以上を含むことを特徴とする請求項49記載の通信方法。
  56. 上記フィルタを処理するステップは、フィルタをグループ化するステップを含み、
    上記フィルタを概算するステップは、上記グループ内のフィルタを概算し、上記フィルタをクラスタ化するステップは、フィルタの類似性に基づいて、上記グループ内のフィルタを特定及び収集し、上記フィルタを包摂するステップは、上記グループ内のフィルタを包摂し、上記フィルタを併合するステップは、上記グループ内のフィルタを併合することを特徴とする請求項55記載の通信方法。
  57. 上記フィルタをグループ化するステップは、サブジェクトに関連しているダウンリンクからのフィルタのみをグループ化するステップを有することを特徴とする請求項56記載の通信方法。
  58. 上記フィルタを併合するステップは、併合されたフィルタがパケット漏れ閾値を超えるか否かを判定するステップを有することを特徴とする請求項55記載の通信方法。
  59. 上記フィルタを処理するステップは、フィルタを概算するステップと、該概算されたフィルタを包摂及び併合するステップとを有することを特徴とする請求項49記載の通信方法。
  60. 上記ネットワーク内のノードは、保存されたフィルタを有し、上記フィルタを処理するステップは、受信したフィルタと保存されているフィルタとを処理して、これらのフィルタの数を削減することを特徴とする請求項49記載の通信方法。
  61. 上記保存されたフィルタは、以前に受け取られ、処理されたフィルタであることを特徴とする請求項60記載の通信方法。
  62. 上記受信ステップ(a)は、ネットワークのコア内のノードにおいて複数個のフィルタを受信することを特徴とする請求項49記載の通信方法。
  63. 発行−購読ネットワークにおいてフィルタを伝播するためのルータにおいて、請求項49記載通信方法を実現するモジュールを備えるルータ。
  64. 請求項49記載の通信方法を実現するモジュールを備える複数のルータを備える発行−購読ネットワーク。
  65. 請求項49記載の通信方法を実現するユーザ装置を備える複数のルータを備える発行−購読ネットワーク。
  66. 発行−購読ネットワークにおいて、フィルタを伝播するための通信装置において、
    ネットワーク内ノードにおいて、複数のフィルタを受信するフィルタ受信モジュールと、
    上記フィルタの数を減少させるフィルタ削減モジュールと、
    受信者の振る舞いの規則に基づいて、フィルタを伝播するか否かを決定し、フィルタを伝播すると決定した場合、数が削減されたフィルタを上記ネットワークにおける次のノードに伝播するフィルタ伝播モジュールとを備える通信装置。
  67. 冗長な述語表現を取り除くようフィルタを簡約する簡約モジュールを備える請求項66記載の通信装置。
  68. 上記フィルタ処理モジュールは、ダウンリンクの選択に基づいてフィルタをグループ化するグループ化モジュールを備えることを特徴とする請求項66記載の通信装置。
  69. 上記フィルタ処理モジュールは、フィルタを概算する概算モジュールを備えることを特徴とする請求項66記載の通信装置。
  70. 上記フィルタ処理モジュールは、フィルタを包摂する包摂モジュールを備えることを特徴とする請求項66記載の通信装置。
  71. 上記フィルタ処理モジュールは、フィルタの相互の類似性に基づき、フィルタを互いにクラスタ化するクラスタ化モジュールを備えることを特徴とする請求項66記載の通信装置。
  72. 上記フィルタ処理モジュールは、フィルタを併合する併合処理モジュールを備えることを特徴とする請求項66記載の通信装置。
  73. 発行−購読ネットワークにおいてフィルタを伝播させる通信方法において、
    ルータからフィルタを要求する通知を送信するステップと、
    1つ以上のダウンストリームのルータによって通知を受信するステップと
    上記フィルタ要求を更にダウンストリーム側に伝播するステップと、
    上記フィルタ要求が伝播されたダウンストリームのルータからの応答を待機するステップと、
    上記フィルタ要求が伝播されたダウンストリームのルータからフィルタを収集するステップと、
    上記伝播されたフィルタを処理し、上記フィルタの数を削減するステップと、
    上記数が削減されたフィルタを上記フィルタを要求したアップストリーム側のルータに送信するステップとを有する通信方法。
  74. 各ダウンストリームのルータにおいて、上記フィルタ要求がルータから受け取られたことを反映するようにブックキーピングデータベースを更新するステップと、
    上記フィルタ要求が受け取られたルータが動作していたか否かを判定するステップとを有する請求項73記載の通信方法。
  75. 複数のルータと、請求項73記載の通信方法を実現するモジュールを備える発行者装置とを備える発行−購読ネットワーク。
  76. 発行−購読ネットワークにおいて、パケットのコンテンツベースのルーティングを行う通信方法において、
    上記ネットワークにおいてパケットを受信するステップと、
    属性空間におけるフィルタ適用範囲を指定するマップにアクセスするステップと、
    上記パケットの経路決定のために、該パケットのコンテンツを検査するステップと、
    上記マップを用いて、上記パケットの経路決定を補助するステップと、
    上記検査されたパケットのコンテンツ及びマップに基づいて、経路決定を行うステップと、
    上記経路決定に基づいて、パケットをルーティングするステップとを有する通信方法。
  77. 上記経路決定を行うステップは、対応する購読予約にコンテンツを照合するステップを更に有することを特徴とする請求項76記載の通信方法。
  78. 上記照合するステップは、複数の連言フィルタを用いて、一致を特定するステップを有することを特徴とする請求項77記載の通信方法。
  79. 上記照合するステップは、属性検査を実行するステップを有することを特徴とする請求項77記載の通信方法。
  80. 上記経路決定を行うステップは、上記マップをオンラインで利用するステップを有することを特徴とする請求項76記載の通信方法。
  81. オフライン又はバックグラウンド処理で、上記フィルタ適用範囲を予め算出するステップを有する請求項76記載の通信方法。
  82. フィルタ適用範囲を予め算出するステップを有し、該予め算出するステップは、フィルタ表現を概算し、削減するステップを有することを特徴とする請求項76記載の通信方法。
  83. フィルタ適用範囲を予め算出するステップを有し、該予め算出するステップは、属性空間をグリッドセルを含むグリッドに空間的に量子化するステップを有することを特徴とする請求項76記載の通信方法。
  84. 上記フィルタ適用範囲を予め算出するステップは、
    フィルタ適用範囲情報とグリッドとを結合するステップと、
    それぞれのグリッドセル内においてフィルタ適用範囲情報によって記述された処理の統合に基づくマップを生成するステップとを有するステップとを有することを特徴とする請求項83記載の通信方法。
  85. 発行−購読ネットワークにおいて、パケットのコンテンツベースのルーティングを行うルータにおいて、請求項76記載の通信方法を実現するモジュールを備えるルータ。
  86. 請求項85記載の複数のルータを備えるネットワーク。
  87. 請求項76記載の通信方法を実現する命令を有するコンピュータにより読取可能な媒体。
  88. パケットのコンテンツベースのルーティングを行う通信方法において、
    (a)属性空間を空間量子化するステップと、
    (b)それぞれが少なくとも1つの記述された属性を有する複数のフィルタで覆われたグリッドセルを特定するステップと、
    (c)ステップ(b)において特定されたグリッドセルをカバーする複数個のフィルタによって記述される処理規則によって、コンテンツベースのルーティング(CBR)テーブルを更新するステップとを有する通信方法。
  89. 1つ以上の新たなフィルタがノードに挿入され又はノードから削除されたか否かを判定するステップと、
    1つ以上の新たなフィルタがノードに挿入され又はノードから削除されたと判定された場合に、上記ノードにおいてステップ(b)及び(c)を実行するステップとを有する請求項88記載の通信方法。
  90. 発行されたパケットを受信するステップと、
    上記受信したパケットを上記グリッドにプロットするステップとを有する請求項88記載の通信方法。
  91. 上記算出されたフィルタ適用範囲情報によって完全にカバーされているグリッドセルにプロットされたパケットついて、CBRテーブルを検査し、上記完全にカバーされているグリッドセルにプロットされたパケットに対する処理を判定するステップを有する請求項90記載の通信方法。
  92. ネットワークトラヒックが設定された閾値を超えているか否かを判定するステップと、
    上記ネットワークトラヒックが設定された閾値を超えている場合、上記発行されたパケットをルーティングするステップとを有する請求項91記載の通信方法。
  93. 上記ネットワークトラヒックが設定された閾値以下である場合、漏れ削減処理を実行するステップを有する請求項92記載の通信方法。
  94. 上記漏れ削減処理を実行するステップは、一次元の正確な照合を行うステップを有することを特徴とする請求項93記載の通信方法。
  95. 上記漏れ削減処理を実行するステップは、外積を算出する処理を含むことを特徴とする請求項93記載の通信方法。
  96. 上記漏れ削減処理を実行するステップは、制限された数の及び様々な属性の順列のサブセットの完全な組に基づく複数のグリッドとCBRテーブルの構成を含むことを特徴とする請求項93記載の通信方法。
  97. ネットワークトラヒックが設定された閾値以下である場合、部分的にカバーされたグリッドセルにプロットされた削減されたフィルタ述語又はパケットがあるか否かを判定するステップと、
    上記部分的にカバーされたグリッドセルにプロットされた削減されたフィルタ述語又はパケットがある場合、述語毎のフィルタ照合を実行し、部分的にカバーされたグリッドセルにプロットされたあらゆる削減されたフィルタ述語及びあらゆるパケットに関するルーティング処理を決定するステップと、
    上記決定されたルーティング処理に基づいて上記パケットをルーティングするステップとを有する請求項92記載の通信方法。
  98. フィルタ表現を削減するステップを有する請求項88記載の通信方法。
  99. 上記ステップ(a)は、属性空間を適応量子化するステップを有することを特徴とする請求項88記載の通信方法。
  100. 上記適応量子化するステップは、パケット分布情報に基づいて、上記属性空間を適応的に量子化するステップを有することを特徴とする請求項99記載の通信方法。
  101. 上記空間量子化するステップは、パケット分布情報に基づいて、上記属性空間を空間的に量子化するステップを有することを特徴とする請求項88記載の通信方法。
  102. 上記空間量子化するステップは、パケット分布情報に基づいて、グリッドを更新するステップを有することを特徴とする請求項88記載の通信方法。
  103. 上記ステップ(c)は、上記算出されたフィルタ適用範囲情報によってカバーされているグリッドセルについて、操作ビットマスクを生成又は更新するステップを有することを特徴とする請求項88記載の通信方法。
  104. 上記ステップ(c)は、上記算出されたフィルタ適用範囲情報によってカバーされているグリッドセルについて、リンクされた処理のリストを生成又は更新するステップを有することを特徴とする請求項88記載の通信方法。
  105. 上記CBRテーブルにおいてカバーされたセルの、フィルタ分布に関する統計情報を含んでいるパラメータを更新するステップを有する請求項88記載の通信方法。
  106. 上記ステップ(a)において用いられるパケット分布に関する統計情報を集めるステップを有する請求項88記載の通信方法。
  107. 上記ステップ(a)〜(c)は、オフラインで実行されることを特徴とする請求項88記載の通信方法。
  108. CBRテーブルと、CBRテーブルにおける規則のみを用いて、コンテンツベースのルーティング(CBR)を実行するステップを有する請求項88記載の通信方法。
  109. 発行−購読ネットワークにおいて、パケットのコンテンツベースのルーティングを行う通信装置において、請求項88記載の通信方法を実現するモジュールを備える通信装置。
  110. 当該通信装置は、ルータであることを特徴とする請求項109記載の通信装置。
  111. 請求項88記載の通信方法を実現するモジュールを備える複数のルータを備えるネットワーク。
  112. 請求項88記載の通信方法を実現する命令を有するコンピュータにより読取可能な媒体。
  113. 発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
    データセットに関連する広告を受信するステップと、
    論理式を表すクエリを受信するステップと、
    上記広告を対応する購読予約にマッピングするステップと、
    上記クエリを対応する通知にマッピングするステップと、
    上記対応する購読予約を用いて、広告を実現するステップと、
    上記対応する通知を用いて、ネットワークにおける、クエリを実現するステップとを有する通信方法。
  114. 上記広告をマッピングするステップは、該広告に対し、一般的マッピングを実行するステップを有することを特徴とする請求項113記載の通信方法。
  115. 上記クエリをマッピングするステップは、クエリに対し、選言的クエリマッピングを実行するステップを有することを特徴とする請求項113記載の通信方法。
  116. 発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
    広告を登録するための購読予約を作成するステップと、
    通知を発行し、クエリを配信するステップと、
    購読予約を用いてコンテンツベースのルーティング(CBR)を実行し、広告主に通知をプッシュするステップと、
    要求者に応答データを返すステップとを有する通信方法。
  117. 上記応答データを返すステップは、上記広告主と上記要求者の間のユニキャスト接続を用いて行われることを特徴とする請求項116記載の通信方法。
  118. 上記応答データを返すステップは、上記要求者により、上記応答データのための新たな購読予約を作成し、該新たな購読予約を用いてCBRを実行し、該応答データを該要求者にプッシュするステップを有することを特徴とする請求項116記載の通信方法。
  119. 上記作成するステップは、1組のデータに関する広告を登録するための購読予約を作成するステップを有することを特徴とする請求項116記載の通信方法。
  120. クエリ−応答インタラクションを実現する発行−購読ネットワークにおいて、請求項116記載の通信方法を実現するモジュールを備えるルータと、発行者装置と、購読者装置を備える発行−購読ネットワーク。
  121. 発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
    広告を登録する購読予約を受信するステップと、
    クエリを配信する通知を受信するステップと、
    購読予約を用いて、コンテンツベースのルーティングを実行し、隣接しているノードに通知を転送するか否かを判定するステップと、
    するステップと、
    上記判定に基づいて、通知を選択的に転送するステップとを有する通信方法。
  122. 発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信装置において、請求項121記載通信方法を実現するモジュールを備える通信装置。
  123. 上記通信装置は、ルータを含むことを特徴とする請求項122記載の通信装置。
  124. 発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
    初期サブジェクトを含む通知を発行するステップと、
    以前に発行された広告に関する過去サブジェクトを含む通知を発行するステップと、
    以前に発行された広告へのクエリである過去サブジェクトに対する購読予約を提出するステップと、
    過去サブジェクトに購読予約を用いてコンテンツベースのルーティングを実行し、以前に発行された広告を消費者にプッシュするステップとを有する通信方法。
  125. 過去サブジェクトに対する購読停止を提出するステップを有する請求項124記載の通信方法。
  126. 初期サブジェクトの購読予約を提出するステップを有する請求項124記載の通信方法。
  127. クエリ−応答インタラクションを実現する発行−購読ネットワークにおいて、請求項124記載の通信方法を実現するモジュールを備えるルータと、発行者装置と、購読者装置とを備える発行−購読ネットワーク。
  128. 発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
    初期サブジェクトを含む通知と、以前に発行された広告に関する過去サブジェクトを含む通知とを受信するステップと、
    初期サブジェクトに関する購読予約と、以前に発行された広告へのクエリである過去サブジェクトに関する購読予約とを受信するステップと、
    上記過去サブジェクトに購読予約を用いて、コンテンツベースのルーティングを実行し、上記以前に発行された広告を隣接しているノードに転送するか否か決定するステップと、
    上記判定に基づいて、上記以前に発行された広告を選択的に転送するステップとを有する通信方法。
  129. 発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信装置において、請求項128記載の通信方法を実現するモジュールを備える通信装置。
  130. 上記通信装置は、ルータを備えることを特徴とする請求項129記載の通信装置。
  131. 発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
    発行された通知をキャッシングするステップと、
    上記キャッシングされた、発行された通知内のコンテンツを広告する通知を発行するステップと、
    上記発行された通知へのクエリである購読予約を提出するステップと、
    上記キャッシュから、上記キャッシングされた、発行された通知を再生するステップと、
    上記購読予約に基づいて、コンテンツベースのルーティング(CBR)を実行し、上記再生された、発行された通知を消費者にプッシュするステップとを有する通信方法。
  132. クエリ−応答インタラクションを実現する発行−購読ネットワークにおいて、請求項131記載の通信方法を実現するモジュールを備えるルータと、発行者装置と、購読者装置を備える発行−購読ネットワーク。
  133. 発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
    発行された通知をキャッシングするステップと、
    上記発行された通知を要求する購読予約を受信するステップと、
    上記キャッシュから、上記キャッシングされた、発行された通知を再生するステップと、
    上記発行された通知へのクエリである購読予約を用いてコンテンツベースのルーティング(CBR)を実行し、上記キャッシングされた、発行された通知を隣接しているノードに転送するか否かを判定するステップと、
    上記判定に基づいて、信頼できる伝送プロトコルを用いて、上記隣接しているノードに通知を選択的に転送するステップとを有する通信方法。
  134. 発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信装置において、請求項133記載の通信方法を実現するモジュールを備える通信装置。
  135. 上記通信装置は、ルータを備えることを特徴とする請求項134記載の通信装置。
  136. 発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
    データ広告を受信するステップと、
    上記データ広告を購読予約に変換するステップと、
    クエリを受信するステップと、
    上記クエリを通知に変換するステップと、
    上記購読予約に基づいてコンテンツベースのルーティング(CBR)を実行し、広告主に通知をプッシュするステップと、
    上記通知に基づいて、要求者に応答データを返すステップとを有する通信方法。
  137. 変換するステップは、存在論的変換を実行するステップを有することを特徴とする請求項136記載の通信方法。
  138. 上記応答データを返すステップは、上記広告主と上記要求者の間のユニキャスト接続を用いて行われることを特徴とする請求項136記載の通信方法。
  139. 上記応答データを返すステップは、上記要求者により、上記応答データのための新たな購読予約を作成し、該新たな購読予約を用いてCBRを実行し、該応答データを該要求者にプッシュするステップを有することを特徴とする請求項136記載の通信方法。
  140. 上記クエリを受信するステップは、データの組に関するクエリを受信することを特徴とする請求項136記載の通信方法。
  141. 上記データ広告を受信するステップは、データの組に関するデータ広告を受信することを特徴とする請求項136記載の通信方法。
  142. 上記データ広告を変換するステップは、該広告に対し、一般的マッピングを実行するステップを有することを特徴とする請求項136記載の通信方法。
  143. 上記データ広告を変換するステップは、該広告に対し、選言的クエリマッピングを実行するステップを有することを特徴とする請求項136記載の通信方法。
  144. 上記データ広告を変換するステップは、上記購読予約において、上記データ広告における属性と表現演算子の組合せを表す属性を定義するステップを有することを特徴とする請求項136記載の通信方法。
  145. 上記クエリを変換するステップは、上記クエリにおける属性及び表現演算子の組合せを表す通知において、属性を定義するステップを有することを特徴とする請求項136記載の通信方法。
  146. クエリ−応答インタラクションを実現する発行−購読ネットワークにおいて、請求項136記載の通信方法を実現するモジュールを備えるルータと、発行者装置と、購読者装置を備える発行−購読ネットワーク。
  147. 発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
    クエリを受信するステップと、
    上記クエリを通知に変換するステップと、
    上記通知及び購読予約に変換されたデータ広告に対して実行されるコンテンツベースのルーティングに基づいて、応答データを受信するステップとを有する通信方法。
  148. 発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信装置において、請求項147記載の通信方法を実現するモジュールを備える通信装置。
  149. 上記通信装置は、購読者装置を含むことを特徴とする請求項148記載の通信装置。
  150. 発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
    データ広告を受信するステップと、
    上記データ広告を購読予約に変換するステップと、
    購読予約と通知に実行されたコンテンツベースのルーティングに基づいて通知に変形されたクエリを受信するステップと、
    上記通知に基づいて、応答データを要求者に転送するステップとを有する通信方法。
  151. 発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信装置において、請求項150記載の通信方法を実現するモジュールを備える通信装置。
  152. 上記通信装置は、発行者装置を含むことを特徴とする請求項151記載の通信装置。
  153. 発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
    クエリから変化されてた通知を受信するステップと、
    コンテンツベースのルーティング(CBR)し、隣接しているノードに通知を転送するか否かを判定するステップと、
    上記判定に基づいて、上記通知を選択的に転送するステップとを有する通信方法。
  154. データ広告から変換された購読予約を受信するステップを有し、
    上記CBRを実行するステップは、上記購読予約に基づいてCBRを実行することを特徴とする請求項153記載の通信方法。
  155. 発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信装置において、請求項153記載の通信方法を実現するモジュールを備える通信装置。
  156. 上記通信装置は、ルータを含むことを特徴とする請求項155記載の通信装置。
  157. 発行−購読ネットワークを介して提供されるメッセージの持続的なキャッシングを実現する通信方法において、
    (a)第1のノードにおいて、ネットワークを介して、データを含むメッセージを受信するステップと、
    (b)上記データに時刻を示すをマークを付与するステップと、
    (c)第1のノードのキャッシュメモリに、上記データをキャッシングするステップと、
    (d)コンテンツベースのルーティングを用いて、第2のノードに上記メッセージをルーティングするステップとを有する通信方法。
  158. (e)上記第2のノードのキャッシュメモリにデータをキャッシングする点を除いて、上記第2のノードでステップ(a)〜(d)を繰り返すステップを更に有する請求項157記載の通信方法。
  159. 上記データをキャッシングするステップ(c)からタイムグレイン期間Gが経過したか否かを判定するステップと、
    上記タイムグレイン期間Gが経過したと判定した場合、上記キャッシングしたデータをキャッシュメモリからディスクに移管するステップとを有する請求項157記載の通信方法。
  160. 上記キャッシングされたデータの最後のブロックについて、上記データをキャッシングするステップ(c)から持続タイムフレーム期間Tが経過した否かを判定するステップと、
    上記持続タイムフレーム期間Tが経過したと判定した場合、上記キャッシングされたデータを消去するステップとを有する請求項157記載の通信方法。
  161. 上記持続タイムフレーム期間Tは、データに関連するチャンネルに基づいて決定されることを特徴とする請求項160記載の通信方法。
  162. 上記第1のノードは、インテリジェントルータを含み上記受信するステップ(a)は、上記インテリジェントルータにおいてメッセージを受信するステップを有することを特徴とする請求項157記載の通信方法。
  163. 上記インテリジェントルータは、キャッシュマネージャを備え、上記キャッシュマネージャは、ステップ(b)及び(c)を実行することを特徴とする請求項162記載の通信方法。
  164. 上記第2のノードは、購読者装置を含むことを特徴とする請求項157記載の通信方法。
  165. 発行−購読ネットワークを介して配信されたメッセージの持続的なキャッシングを実現するルータにおいて、請求項157記載の通信方法を実現するモジュールを備えるルータ。
  166. メッセージの持続的なキャッシングを実現する発行−購読ネットワークにおいて、請求項158記載の通信方法を実現するモジュールを備えるノードを備える発行−購読ネットワーク。
  167. 請求項157記載の通信方法を実現する命令を有するコンピュータにより読取可能な媒体。
  168. 発行−購読ネットワークを介して配信されたメッセージの持続的なキャッシングを実現する通信方法において、
    発行−購読ネットワークを介して、データを含むメッセージを受信するステップと、
    上記データに時刻を示すをマークを付与するステップと、
    キャッシュメモリに、上記データをキャッシングするステップと、
    上記データをキャッシングするステップからタイムグレイン期間Gが経過したか否かを判定するステップと、
    上記タイムグレイン期間Gが経過したと判定した場合、上記キャッシングしたデータをキャッシュメモリからディスクに移管するステップと、
    上記キャッシングされたデータの最後のブロックについて、上記データをキャッシングするステップから持続タイムフレーム期間Tが経過した否かを判定するステップと、
    上記持続タイムフレーム期間Tが経過したと判定した場合、上記キャッシングされたデータを消去するステップとを有する通信方法。
  169. 上記キャッシングされたデータに関する要求が受信されたか否かを判定するステップを有する請求項168記載の通信方法。
  170. 上記キャッシングされたデータに関する要求は、ユーザ装置から受信されることを特徴とする請求項169記載の通信方法。
  171. 上記キャッシングされたデータに関する要求が受信された場合、上記キャッシングされたデータを読み出すステップを有する請求項169記載の通信方法。
  172. 上記キャッシングされたデータを読み出すステップは、アップストリームのキャッシュを呼び出すステップと、上記アップストリームのキャッシュから、上記キャッシングされたデータを読み出すステップとを有することを特徴とする請求項171記載の通信方法。
  173. 上記アップストリームのキャッシュから読み出されたキャッシングされたデータに対し、重複抑制処理を実行するステップを有する請求項172記載の通信方法。
  174. 上記キャッシングされたデータを読み出すステップは、ユーザ装置のエージェントからアップストリームのキャッシュのリストを取得するステップを有することを特徴とする請求項172記載の通信方法。
  175. ユーザ装置へのルーティングのために、上記キャッシングされたデータをバックボーンルータに転送するステップを有する請求項171記載の通信方法。
  176. 上記キャッシングされたデータにインデクスを付すステップを有する請求項168記載の通信方法。
  177. 上記キャッシングされたデータにインデクスを付すステップは、ID、サブジェクト及び/又はタイムスタンプによってデータにインデクスを付すステップを有することを特徴とする請求項176記載の通信方法。
  178. 上記受信、時刻情報の付与及びキャッシングのステップは、アップストリームのルーティングノードにおいて実行されることを特徴とする請求項168記載の通信方法。
  179. 上記受信のステップを繰り返すことを特徴とする請求項168記載の通信方法。
  180. 発行−購読ネットワークを介して配信されたメッセージの持続的なキャッシングを実現するルータにおいて、請求項168記載の通信方法を実現するモジュールを備えるルータ。
  181. メッセージの持続的なキャッシングを実現する発行−購読ネットワークにおいて、それぞれ、請求項168記載の通信方法を実行するモジュールを備える第1のノード及び該第1のノードのダウンストリーム側の第2のノードを備える発行−購読ネットワーク。
  182. 請求項168記載の通信方法を実現する命令を有するコンピュータにより読取可能な媒体。
  183. 発行−購読ネットワークを介して配信されたメッセージの持続的なキャッシングを実現する通信方法において、
    (a)
    複数のアップストリームノードにおいて、ネットワークを介して、データを有する複数のメッセージを受け取るステップと、
    (b)上記データに時刻情報を付与するステップと、
    (c)上記複数のアップストリームノードのうちの1つのアップストリームノードにおいて、キャッシュに上記データをキャッシングするステップと、
    (d)コンテンツベースのルーティングを用いて、エッジノードにメッセージをルーティングするステップと、
    (e)上記エッジノードのキャッシュメモリにデータをキャッシングする点を除いて、上記エッジノードにおいてステップ(a)〜(c)を繰り返すステップとを有するデータ通信方法。
  184. コンテンツベースのルーティングを用いて、エッジノードから購読者装置に上記メッセージの少なくとも1つをルーティングするステップを有する請求項183記載の通信方法。
  185. 上記エッジノードにおいて、上記購読者装置から、上記キャッシングされたデータの要求を受信するステップを有する請求項184記載の通信方法。
  186. 上記要求に応じて、上記キャッシングされたデータの時間量を判定するステップと、
    上記キャッシングされたデータに付された時刻情報に基づいて、上記判定された時間量に対応する上記キャッシングされたデータを読み出すステップとを有する請求項185記載の通信方法。
  187. 上記時間量は、読み出すべきキャッシングされたデータの時間量を含む要求に基づいて判定されることを特徴とする請求項186記載の通信方法。
  188. 上記時間量は、上記購読者装置が発行−購読ネットワークから切断ている時間である購読者装置の切断時間に基づいて判定されることを特徴とする請求項186記載の通信方法。
  189. 上記要求されたデータの少なくとも幾つかが上記複数アップストリームノードのうちの1つ以上のアップストリームに保存されていることを判定するステップを有する請求項185記載の通信方法。
  190. 上記エッジノードにおいて、上記購読者装置からアップストリームノードのリストを受け取るステップを有する請求項189記載の通信方法。
  191. 上記複数のアップストリームノードのうちの1つ以上のアップストリームノードに、上記キャッシングされたデータに関する要求を送信するステップと、
    上記複数のアップストリームノードのうちの1つ以上のアップストリームノードから、上記要求された、キャッシングされたデータを読み出すステップと、
    上記読み出したデータを上記購読者装置にルーティングするステップとを有する請求項189記載の通信方法。
  192. 上記読み出されたキャッシングされたデータに対し、重複抑制処理を実行するステップを有する請求項191記載の通信方法。
  193. メッセージの持続的なキャッシングを実現する発行−購読ネットワークにおいて、請求項183記載の通信方法を実現するモジュールを備える複数のアップストリームノード及びエッジノードを備える発行−購読ネットワーク。
JP2003581058A 2002-03-28 2003-03-28 発行−購読ネットワークにおける、信頼性が高く効率的なコンテンツに基づくルーティング、クエリ及び応答のための方法及び装置 Pending JP2005521950A (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US36910502P 2002-03-28 2002-03-28
US36887002P 2002-03-28 2002-03-28
US36883302P 2002-03-28 2002-03-28
US36883102P 2002-03-28 2002-03-28
US36983202P 2002-04-03 2002-04-03
US44778203P 2003-02-19 2003-02-19
PCT/US2003/009624 WO2003083703A1 (en) 2002-03-28 2003-03-28 Method and apparatus for reliable and efficient content-based routing and query and response in a publish-subscribe network

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2009031766A Division JP2009163753A (ja) 2002-03-28 2009-02-13 発行−購読ネットワークにおける、信頼性が高く効率的なコンテンツに基づくルーティング、クエリ及び応答のための方法及び装置

Publications (1)

Publication Number Publication Date
JP2005521950A true JP2005521950A (ja) 2005-07-21

Family

ID=28679208

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2003581058A Pending JP2005521950A (ja) 2002-03-28 2003-03-28 発行−購読ネットワークにおける、信頼性が高く効率的なコンテンツに基づくルーティング、クエリ及び応答のための方法及び装置
JP2009031766A Pending JP2009163753A (ja) 2002-03-28 2009-02-13 発行−購読ネットワークにおける、信頼性が高く効率的なコンテンツに基づくルーティング、クエリ及び応答のための方法及び装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2009031766A Pending JP2009163753A (ja) 2002-03-28 2009-02-13 発行−購読ネットワークにおける、信頼性が高く効率的なコンテンツに基づくルーティング、クエリ及び応答のための方法及び装置

Country Status (6)

Country Link
EP (1) EP1969480A4 (ja)
JP (2) JP2005521950A (ja)
KR (1) KR100971506B1 (ja)
CN (1) CN100458767C (ja)
AU (1) AU2003218455A1 (ja)
WO (1) WO2003083703A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4814374B2 (ja) * 2006-05-05 2011-11-16 マイクロソフト コーポレーション 発行者連合
JP2012511190A (ja) * 2008-09-02 2012-05-17 アリババ・グループ・ホールディング・リミテッド メッセージ処理のための方法及びシステム
JP2013500657A (ja) * 2009-08-25 2013-01-07 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 通信システムにおけるユーザデータの変更の購読を処理するための方法及び装置
JP2018525760A (ja) * 2015-08-07 2018-09-06 サトリ ワールドワイド リミテッド ライアビリティ カンパニー スケーラブルなリアルタイムメッセージングシステム
JPWO2017141807A1 (ja) * 2016-02-18 2018-11-22 日本電気株式会社 通信システム、エッジサーバ、方法およびプログラム
US10771940B2 (en) 2018-06-07 2020-09-08 Toyota Jidosha Kabushiki Kaisha In-vehicle device, information processing method and computer-readable medium

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110307603A1 (en) * 2009-02-05 2011-12-15 Nec Corporation Broker node and event topic control method in distributed event distribution system
US9720681B2 (en) * 2011-07-20 2017-08-01 Data I/O Corporation Device programming system with data broadcast and method of operation thereof
US8750309B2 (en) * 2012-02-29 2014-06-10 Telefonaktiebolaget L M Ericsson (Publ) Compound masking and entropy for data packet classification using tree-based binary pattern matching
US9886210B2 (en) * 2015-06-09 2018-02-06 Ultrata, Llc Infinite memory fabric hardware implementation with router
JP6547580B2 (ja) 2015-10-20 2019-07-24 富士通株式会社 分散制御方法、分散制御システム、および分散制御プログラム
US10129360B2 (en) * 2016-03-28 2018-11-13 The Boeing Company Unified data networking across heterogeneous networks
JP6665697B2 (ja) 2016-06-09 2020-03-13 富士通株式会社 過去情報提供プログラム、過去情報提供方法及び過去情報提供装置
US9608928B1 (en) * 2016-07-06 2017-03-28 Machine Zone, Inc. Multiple-speed message channel of messaging system
KR102031726B1 (ko) * 2017-11-16 2019-10-14 경북대학교 산학협력단 분산된 게시-구독 기법을 이용한 CoAP 기반 사물 인터넷 시스템의 작동 방법
KR102033500B1 (ko) * 2017-12-26 2019-11-08 경희대학교 산학협력단 분산 클라우드 시스템에서 에지 클라우드에 의한 패킷 라우팅 방법
KR102279601B1 (ko) * 2018-09-28 2021-07-19 (주)구름네트웍스 Dds를 위한 게이트웨이 구동 방법
KR102339661B1 (ko) * 2018-09-28 2021-12-14 (주)구름네트웍스 Dds를 위한 게이트웨이 장치
US11429669B2 (en) * 2019-08-06 2022-08-30 Twitter, Inc. Managing query subscription renewals in a messaging platform
US11714694B2 (en) * 2019-11-08 2023-08-01 Salesforce, Inc. Error notification mechanism for streaming events
KR102527601B1 (ko) 2021-04-02 2023-05-02 이상규 서버 및 사용자 단말에서의 구독 채널 참조 기반의 주제별 메시지 채팅 방법
CN113783838B (zh) * 2021-08-05 2024-02-06 山东有人物联网股份有限公司 一种订阅方法、订阅控制装置及计算机可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11328064A (ja) * 1998-05-08 1999-11-30 Nec Corp ミドルウェア蓄積データの更新方法と該方法を実行するサーバシステム
WO2001049817A2 (de) * 2000-01-05 2001-07-12 Basf Aktiengesellschaft Mikrokapselzubereitungen und mikrokapseln enthaltende wasch- und reinigungsmittel
JP2001285287A (ja) * 2000-02-18 2001-10-12 Agilent Technol Inc プレフィルタリング及びポストフィルタリングを利用したパブリッシュ/サブスクライブ装置及び方法
JP2001291044A (ja) * 2000-03-08 2001-10-19 Internatl Business Mach Corp <Ibm> ビジネス・コンセプトの変化に基づく、サブスクリプションを用いるパブリッシュ/サブスクライブ・データ処理

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08153054A (ja) * 1994-11-28 1996-06-11 Mitsubishi Electric Corp ファイル転送方式
US6065058A (en) * 1997-05-09 2000-05-16 International Business Machines Corp. Dynamic push filtering based on information exchanged among nodes in a proxy hierarchy
US20010052015A1 (en) * 1998-06-24 2001-12-13 Chueng-Hsien Lin Push-pull sevices for the internet
US6415027B1 (en) * 1998-08-12 2002-07-02 Bellsouth Intellectual Property Corporation Networks, systems and methods for intelligently routing traffic within a telephone network
US6262976B1 (en) * 1998-09-17 2001-07-17 Ordered Networks, Inc. System and method for network flow optimization using traffic classes
FI108195B (fi) * 1998-10-19 2001-11-30 Nokia Networks Oy Mekanismi verkon aloittamaa informaation siirtoa varten
US6252862B1 (en) * 1999-05-20 2001-06-26 Motorola, Inc. Method and apparatus for routing packet data in a communications system
JP4374094B2 (ja) * 1999-06-14 2009-12-02 株式会社ジャストシステム 情報処理装置、情報処理方法、およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
US6539396B1 (en) * 1999-08-31 2003-03-25 Accenture Llp Multi-object identifier system and method for information service pattern environment
JP3679289B2 (ja) * 1999-12-06 2005-08-03 株式会社日立製作所 ゲートウェイ装置によるデータ中継方法
JP2001256098A (ja) * 2000-03-09 2001-09-21 Hitachi Ltd プロキシサーバにおけるキャッシの制御方法
KR20010107151A (ko) * 2000-05-25 2001-12-07 반창모 컴퓨터 네트워크를 이용한 다목적 멀티미디어 가판대서비스 제공 방법 및 장치
US7216179B2 (en) * 2000-08-16 2007-05-08 Semandex Networks Inc. High-performance addressing and routing of data packets with semantically descriptive labels in a computer network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11328064A (ja) * 1998-05-08 1999-11-30 Nec Corp ミドルウェア蓄積データの更新方法と該方法を実行するサーバシステム
WO2001049817A2 (de) * 2000-01-05 2001-07-12 Basf Aktiengesellschaft Mikrokapselzubereitungen und mikrokapseln enthaltende wasch- und reinigungsmittel
JP2001285287A (ja) * 2000-02-18 2001-10-12 Agilent Technol Inc プレフィルタリング及びポストフィルタリングを利用したパブリッシュ/サブスクライブ装置及び方法
JP2001291044A (ja) * 2000-03-08 2001-10-19 Internatl Business Mach Corp <Ibm> ビジネス・コンセプトの変化に基づく、サブスクリプションを用いるパブリッシュ/サブスクライブ・データ処理

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4814374B2 (ja) * 2006-05-05 2011-11-16 マイクロソフト コーポレーション 発行者連合
JP2012511190A (ja) * 2008-09-02 2012-05-17 アリババ・グループ・ホールディング・リミテッド メッセージ処理のための方法及びシステム
US8838703B2 (en) 2008-09-02 2014-09-16 Alibaba Group Holding Limited Method and system for message processing
JP2013500657A (ja) * 2009-08-25 2013-01-07 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 通信システムにおけるユーザデータの変更の購読を処理するための方法及び装置
US8516066B2 (en) 2009-08-25 2013-08-20 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for handling subscriptions to changes in user data in a telecommunications system
JP2018525760A (ja) * 2015-08-07 2018-09-06 サトリ ワールドワイド リミテッド ライアビリティ カンパニー スケーラブルなリアルタイムメッセージングシステム
JPWO2017141807A1 (ja) * 2016-02-18 2018-11-22 日本電気株式会社 通信システム、エッジサーバ、方法およびプログラム
US10771940B2 (en) 2018-06-07 2020-09-08 Toyota Jidosha Kabushiki Kaisha In-vehicle device, information processing method and computer-readable medium

Also Published As

Publication number Publication date
JP2009163753A (ja) 2009-07-23
KR20040102061A (ko) 2004-12-03
KR100971506B1 (ko) 2010-07-21
CN100458767C (zh) 2009-02-04
AU2003218455A1 (en) 2003-10-13
EP1969480A1 (en) 2008-09-17
EP1969480A4 (en) 2008-12-03
CN1656474A (zh) 2005-08-17
WO2003083703A1 (en) 2003-10-09

Similar Documents

Publication Publication Date Title
JP2009163753A (ja) 発行−購読ネットワークにおける、信頼性が高く効率的なコンテンツに基づくルーティング、クエリ及び応答のための方法及び装置
US7551629B2 (en) Method and apparatus for propagating content filters for a publish-subscribe network
Carzaniga et al. Achieving scalability and expressiveness in an internet-scale event notification service
US20030189946A1 (en) Method and apparatus for implementing persistent and reliable message delivery
US7653753B2 (en) Method and apparatus for content-based packet routing using compact filter storage and off-line pre-computation
US20040076155A1 (en) Caching with selective multicasting in a publish-subscribe network
US7676601B2 (en) Method and system for processing financial data objects carried on broadcast data streams and delivering information to subscribing clients
US8069264B2 (en) 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
US7545805B2 (en) Method and apparatus for content-based routing and filtering at routers using channels
KR100985237B1 (ko) 패킷 라우팅을 위한 방법, 장치 및 시스템, 메시지 라우팅을 위한 방법 및 장치, 디지탈 컨텐트 분배를 위한 네트워크 및 방법, 및 라우팅 및 캐싱을 위한 방법, 네트워크 및 장치
US20030195946A1 (en) Method and apparatus for reliable publishing and subscribing in an unreliable network
US6910033B2 (en) Method for storing Boolean functions to enable evaluation, modification, reuse, and delivery over a network
TW200425692A (en) Methods, apparatus and computer programs for processing alerts and auditing in a publish/subscribe system
JP2008211835A (ja) ペイロード検査を介したパケット・ルーティング、及びパブリッシュ/サブスクライブ型ネットワークにおけるサブスクリプション処理
US20040083305A1 (en) Packet routing via payload inspection for alert services
CN101312457A (zh) 在发行-预订网络中使用的方法、路由器、设备和该网络
US20030165139A1 (en) Packet routing via payload inspection
JP2004506272A (ja) 未加工金融データを処理して、妥当性検査した商品案内情報を加入者に対して生成するシステム
US7117270B2 (en) Method for sending and receiving a Boolean function over a network
Tarkoma et al. Filter merging for efficient information dissemination

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090213

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090324

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090722

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090817

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090820

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20091211