(57)【要約】【解決手段】  本発明は、信頼性の低いネットワーク上で発行−購読処理を実行するための通信方法及び装置を提供する（１０）。また、発行−購読ネットワークにおいて、フィルタを伝播するための通信方法及び通信装置を提供する（１１８、１４０）。また、発行−購読ネットワークにおいて、パケットのコンテンツベースのルーティングを行う通信方法及び通信装置を提供する（１１８、１４０）。また、発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法及び通信装置を提供する（１１８、１４０）。発行−購読ネットワークを介して提供されるメッセージの持続的なキャッシングを実現する通信方法及び通信装置を提供する（１１８、１４０）。
2005521950.tif 000002
【特許請求の範囲】
【請求項１】
信頼性の低いネットワーク上で発行−購読処理を実行するための通信方法において、
上記ネットワークを介して、コンテンツの購読予約を受信するステップと、
上記コンテンツの購読予約に基づいて、上記ネットワークを介して上記コンテンツを発行するステップと、
上記ネットワークにおけるノードにおいて、上記コンテンツに関する通知を受信するステップと、
上記通知を隣接しているノードに転送すべきか否かを判定するステップと、
上記判定に基づいて、信頼できる伝送プロトコルを用いて、上記隣接しているノードに通知を選択的に転送するステップとを有する通信方法。
【請求項２】
上記通知を選択的に転送するステップは、該通知の転送の失敗を示す情報を示す指示情報を受け取り、該指示情報に応じて上記通知を再転送するステップを有することを特徴とする請求項１記載の通信方法。
【請求項３】
上記転送するステップは、通知をカプセル化したパケットを転送するステップを有することを特徴とする請求項１記載の通信方法。
【請求項４】
上記転送するステップは、通知の転送にインターネットプロトコルを用いることを特徴とする請求項１記載の通信方法。
【請求項５】
上記転送するステップは、単一のノード毎に通知を転送するステップを有することを特徴とする請求項１記載の通信方法。
【請求項６】
上記判定するステップは、コンテンツが上記コンテンツの購読予約における１つ以上の条件を満たすか否かを判定するステップを有することを特徴とする請求項１記載の通信方法。
【請求項７】
上記転送するステップは、ルータを用いて、上記隣接しているノードに通知を転送するステップを有することを特徴とする請求項１記載の通信方法。
【請求項８】
上記購読予約に対応している１又は複数の購読者に通知が配信されるまで、ネットワーク内のノード毎に上記発行ステップを繰り返すステップを更に有する請求項１記載の通信方法。
【請求項９】
上記通知を選択的に転送するステップは、伝送制御プロトコルを用いることを特徴とする請求項１記載の通信方法。
【請求項１０】
信頼性の低いネットワーク上で発行−購読処理を実行するルータにおいて、請求項１記載の通信方法を実現するモジュールを備えるルータ。
【請求項１１】
発行−購読処理を実行するため広域ネットワークにおいて、
１つ以上の購読者装置と、
複数のルータとを備え、
上記複数のルータのそれぞれは、
上記広域ネットワークを介して、上記購読者装置の１つ以上に対応しているコンテンツの購読予約を受信する購読予約受信モジュールと、上記ネットワーク内のノードにおいて、コンテンツに関する通知を受信する通知受信モジュールと、上記通知を隣接しているノードに転送するべきか否かを判定するコンテンツベースルーティングモジュールと、上記判定に基づいて、信頼できる伝送プロトコルを用いて、上記隣接しているノードに通知を選択的に転送する高信頼性転送モジュールとを有する発行モジュールとを備え、
上記複数のルータは、上記購読予約に対応している１又は複数の購読者に通知が配信されるまで、上記通知を高い信頼性で選択的に転送することを特徴とする広域ネットワーク。
【請求項１２】
信頼性の低いネットワーク上で発行−購読処理を実行するための通信方法において、
上記ネットワーク内の第１のノードにおいて、上記ネットワークを介して、コンテンツの購読予約を受信するステップと、
上記ネットワーク内の上記第１のノードにおいて、上記コンテンツに関する通知を受信するステップと、
コンテンツベースのルーティング（content-based routing：ＣＢＲ）に基づいて、上記コンテンツの購読予約を用いて、上記通知を隣接している第２のノードに転送するべきか否かを判定するステップと、
上記判定に基づいて、信頼できる伝送プロトコルを用いて、上記隣接しているノードに通知を選択的に転送するステップとを有する通信方法。
【請求項１３】
上記第１のノードと上記第２のノードとの間の転送に失敗したとき、転送エラーを示す指示情報を受信するステップと、
上記指示情報に応じて、上記第２のノードに上記通知を再転送するステップを有することを特徴とする請求項１２記載の通信方法。
【請求項１４】
上記選択的な転送を行う前に、上記通知をバッファにバッファリングするステップを有する請求項１２記載の通信方法。
【請求項１５】
所定の期間経過後に、上記バッファリングされた通知を補助記憶装置に移すステップを有する請求項１４記載の通信方法。
【請求項１６】
上記バッファリングされた通知を先入れ先出し方式で削除するステップを有する請求項１４記載の通信方法。
【請求項１７】
上記バッファリングされた通知をサービス品質基づいて削除するステップを有する請求項１４記載の通信方法。
【請求項１８】
上記通知を上記第１のノードのキャッシュにキャッシングするステップを有する請求項１２記載の通信方法。
【請求項１９】
上記高い信頼性で転送するステップは、伝送制御プロトコルを用いることを特徴とする請求項１２記載の通信方法。
【請求項２０】
信頼性の低いネットワーク上で発行−購読処理を実行するルータにおいて、請求項１２記載の通信方法を実現するモジュールを備えるルータ。
【請求項２１】
発行−購読処理を実行するため広域ネットワーク（ＷＡＮ）において、
１つ以上の購読者装置と、
複数のルータとを備え、
上記複数のルータのそれぞれは、
上記ＷＡＮ内の第１のノードにおいて、上記ＷＡＮを介して、上記購読者装置の１つ以上に対応しているコンテンツの購読予約を受信する購読予約受信モジュールと、上記ＷＡＮ内の第１のノードにおいて、コンテンツに関する通知を受信する通知受信モジュールと、上記通知を上記ＷＡＮ内の第２のノードに転送するべきか否かを判定するコンテンツベースルーティングモジュールと、上記判定に基づいて、信頼できる伝送プロトコルを用いて、上記第２のノードに通知を選択的に転送する高信頼性転送モジュールとを有する発行モジュールとを備え、
上記複数のルータは、上記購読予約に対応している１又は複数の購読者に通知が配信されるまで、上記通知を高い信頼性で選択的に転送することを特徴とする広域ネットワーク。
【請求項２２】
上記高信頼性転送モジュールは、伝送制御プロトコルを用いることを特徴とする請求項２１記載の広域ネットワーク。
【請求項２３】
信頼性の低いネットワーク上で発行−購読処理を実行するための通信方法において、
信頼できる伝送プロトコルを用いて、２つの隣接しているノード間に信頼できるトンネルを確立するステップと、
上記隣接するノードのうちの第１のノードにおいて、上記ネットワークを介して、コンテンツの購読予約を受信するステップと、
上記ネットワーク内の上記第１のノードにおいて、上記コンテンツに関する通知を受信するステップと、
コンテンツベースのルーティング（content-based routing：ＣＢＲ）に基づいて、上記コンテンツの購読予約を用いて、上記通知を隣接している第２のノードに転送するべきか否かを判定するステップと、
上記判定に基づいて、上記信頼できるトンネルを用いて、上記隣接している第２のノードに通知を転送するステップとを有する通信方法。
【請求項２４】
信頼性の低いネットワーク上で発行−購読処理を実行するルータにおいて、請求項２３記載の通信方法を実現するモジュールを備えるルータ。
【請求項２５】
請求項２４記載のルータを複数備え、発行−購読処理を実現するネットワーク。
【請求項２６】
発行−購読ネットワークにおいて、フィルタを伝播するための通信方法において、
ネットワークにおけるコンテンツの購読予約に関連する複数のフィルタを受信するステップと、
特定の基準に基づいて、上記フィルタの数を減少させるステップと、
上記ネットワークにおいて、上記コンテンツの購読予約を照合するために上記数が削減されたフィルタを伝播するステップとを有する通信方法。
【請求項２７】
上記削減するステップは、
上記複数のフィルタの１つ以上に対する概算処理を実行するステップと、
上記複数のフィルタの１つ以上に対する併合処理を実行するステップとのうちの少なくとも１つ以上を含んでいることを特徴とする請求項２６記載の通信方法。
【請求項２８】
上記併合処理を実行するステップは、併合されたフィルタがパケット漏れ閾値を超えるか否かを決定するステップを有することを特徴とする請求項２７記載の通信方法。
【請求項２９】
上記受信するステップは、コンテンツベースのルーティングネットワークを介して複数個のフィルタを受信するステップを有することを特徴とする請求項２６記載の通信方法。
【請求項３０】
上記伝播するステップは、積極的伝播スキーム、消極的伝播スキーム、同報通信広告への応答スキーム、アフターネットワークトポロジ演算スキーム、定期的伝播スキーム、障害回復時にフィルタを再伝播するスキーム、ネットワーク再構成の間にフィルタを再伝播するスキームを含む複数の特定の手続きの１つ以上を用いることでフィルタを伝播するステップを有することを特徴とする請求項２６記載の通信方法。
【請求項３１】
上記フィルタを伝播するためのソースノード及びデスティネーションノードは、ホップバイホップ方式、エンドツーエンド方式、トンネルを用いた方式、伝送制御プロトコルを用いた方式を含む複数の特定のメカニズムの１つ以上を用いて接続されている請求項２６記載の通信方法。
【請求項３２】
上記ネットワーク内の複数の特定の位置のうちの１つ以上の位置にネットワークでフィルタを挿入するステップを有する請求項２６記載の通信方法。
【請求項３３】
上記フィルタを伝播するステップは、移動する、持続的な及び一時的な振る舞いから選択される、意図する受信者の特定の振る舞いのうちの少なくとも１つに基づいてフィルタを伝播するステップを有することを特徴とする請求項２６記載の通信方法。
【請求項３４】
上記フィルタを伝播するステップは、移動する、持続的な及び一時的な振る舞いから選択される、上記１以上のフィルタの送信者の特定の振る舞いのうちの少なくとも１つに基づいてフィルタを伝播するステップを有することを特徴とする請求項２６記載の通信方法。
【請求項３５】
属性コンテンツの変換、表現の拡張、表現の変換、表示の変形、符号化／復号、暗号化／平文化を含む複数の特定の処理ステップのうちの１つ以上を実行するステップを有する請求項２６記載の通信方法。
【請求項３６】
複数の特定のフォーマットのうちの１つ以上に基づいて、上記１つ以上のフィルタを含むメッセージをフォーマットするステップを有する請求項２６記載の通信方法。
【請求項３７】
上記フィルタを伝播するステップは、管理、メインテナンス、フィルタ持続、ポリシを強調する性能、監視、課金を含む複数の特定のポリシ又は手続きのうちの１つ以上に従ってフィルタを伝播するステップを有することを特徴とする請求項２６記載の通信方法。
【請求項３８】
上記フィルタを伝播ステップは、
フィルタを伝播するために満たされなければならないフィルタ伝播のための複数の要求のうちの１つ以上を含む、フィルタ伝播ストラテジの基礎となるネットワークトポロジを判定するステップと、
上記判定されたフィルタ伝播ストラテジの要求の満足に基づいて、フィルタの数を削減するステップとを有する請求項２６記載の通信方法。
【請求項３９】
上記判定されるフィルタ伝播ストラテジは、積極的伝播スキーム、消極的伝播スキーム、同報通信広告への応答スキーム、アフターネットワークトポロジ演算スキーム、定期的伝播スキーム、障害回復時にフィルタを再伝播するスキーム、ネットワーク再構成の間にフィルタを再伝播するスキームのうちの１つであることを特徴とする請求項３８記載の通信方法。
【請求項４０】
上記受信するステップは、ネットワーク内のコアルータにおいて、複数個のフィルタを受信するステップを有することを特徴とする請求項２６記載の通信方法。
【請求項４１】
上記受信するステップは、ネットワーク内のエッジルータにおいて、複数個のフィルタを受信するステップを有することを特徴とする請求項２６記載の通信方法。
【請求項４２】
上記受信するステップは、ネットワーク内の発行者装置において、複数個のフィルタを受信するステップを有することを特徴とする請求項２６記載の通信方法。
【請求項４３】
発行−購読ネットワークに置いて、フィルタを伝播するルータにおいて、請求項２６記載の通信方法を実現するモジュールを備えるルータ。
【請求項４４】
請求項２６記載の通信方法を実現するモジュールを備える複数個のルータを備える発行−購読ネットワーク。
【請求項４５】
請求項２６記載の通信方法を実現するモジュールを備えるユーザ装置を備える発行−購読ネットワーク。
【請求項４６】
発行−購読ネットワークにおいて、フィルタを伝播するための通信装置において、
ネットワークにおけるコンテンツの購読予約に関連する複数のフィルタを受信するフィルタ受信モジュールと、
特定の基準に基づいて、上記フィルタの数を減少させるフィルタ削減モジュールと、
上記ネットワークにおいて、上記コンテンツの購読予約を照合するために上記数が削減されたフィルタを伝播するフィルタ伝播モジュールとを備える通信装置。
【請求項４７】
上記複数のフィルタの１つ以上に対する概算処理を実行するフィルタ概算モジュールと、
上記複数のフィルタの１つ以上に対する併合処理を実行するフィルタ併合モジュールとを備える請求項４６記載の通信装置。
【請求項４８】
上記１つ以上のフィルタを変形するフィルタ処理モジュールと、
上記フィルタの相互の類似性に基づいて、フィルタをグループ化するフィルタグループ化モジュールとを備える請求項４６記載の通信装置。
【請求項４９】
発行−購読ネットワークにおいて、フィルタを伝播するための通信方法において、
（ａ）ネットワークのノードにおいて、複数のフィルタを受信するステップと、
（ｂ）上記受け取った１つ以上のフィルタを処理し、フィルタの数を削減するステップと、
（ｃ）受信者の振る舞いの規則に基づいて、フィルタを伝播するか否かを決定するステップと、
（ｄ）ネットワーク内の次のノードに、上記処理されたフィルタを伝播するステップとを有する通信方法。
【請求項５０】
送信者の振る舞いの規則に基づいて、フィルタを伝播するか否かを決定するステップを有する請求項４９記載の通信方法。
【請求項５１】
ネットワークにおいて、次のノードの後段に更なるノードがあるか否かを判定するステップを有する請求項４９記載の通信方法。
【請求項５２】
上記次のノードの後段に更なるノードがあると判定された場合、上記ステップ（ｂ）〜（ｄ）を繰り返すステップを有する請求項４９記載の通信方法。
【請求項５３】
上記ネットワークにおける次のノードに、受信すべき更なるフィルタがあるか否かを判定するステップを更に有する請求項４９記載の通信方法。
【請求項５４】
上記ネットワークにおける次のノードに、受信すべき更なるフィルタがあると判定された場合、新たなノードにおいて、上記ステップ（ａ）〜（ｄ）を繰り返すステップを更に有する請求項５３記載の通信方法。
【請求項５５】
上記フィルタを処理するステップは、冗長な述語表現を取り除いてフィルタを簡約するステップ、フィルタを概算するステップ、フィルタをクラスタ化するステップ、フィルタを包摂するステップ、２個以上のフィルタを併合するステップのうちの１つ以上を含むことを特徴とする請求項４９記載の通信方法。
【請求項５６】
上記フィルタを処理するステップは、フィルタをグループ化するステップを含み、
上記フィルタを概算するステップは、上記グループ内のフィルタを概算し、上記フィルタをクラスタ化するステップは、フィルタの類似性に基づいて、上記グループ内のフィルタを特定及び収集し、上記フィルタを包摂するステップは、上記グループ内のフィルタを包摂し、上記フィルタを併合するステップは、上記グループ内のフィルタを併合することを特徴とする請求項５５記載の通信方法。
【請求項５７】
上記フィルタをグループ化するステップは、サブジェクトに関連しているダウンリンクからのフィルタのみをグループ化するステップを有することを特徴とする請求項５６記載の通信方法。
【請求項５８】
上記フィルタを併合するステップは、併合されたフィルタがパケット漏れ閾値を超えるか否かを判定するステップを有することを特徴とする請求項５５記載の通信方法。
【請求項５９】
上記フィルタを処理するステップは、フィルタを概算するステップと、該概算されたフィルタを包摂及び併合するステップとを有することを特徴とする請求項４９記載の通信方法。
【請求項６０】
上記ネットワーク内のノードは、保存されたフィルタを有し、上記フィルタを処理するステップは、受信したフィルタと保存されているフィルタとを処理して、これらのフィルタの数を削減することを特徴とする請求項４９記載の通信方法。
【請求項６１】
上記保存されたフィルタは、以前に受け取られ、処理されたフィルタであることを特徴とする請求項６０記載の通信方法。
【請求項６２】
上記受信ステップ（ａ）は、ネットワークのコア内のノードにおいて複数個のフィルタを受信することを特徴とする請求項４９記載の通信方法。
【請求項６３】
発行−購読ネットワークにおいてフィルタを伝播するためのルータにおいて、請求項４９記載通信方法を実現するモジュールを備えるルータ。
【請求項６４】
請求項４９記載の通信方法を実現するモジュールを備える複数のルータを備える発行−購読ネットワーク。
【請求項６５】
請求項４９記載の通信方法を実現するユーザ装置を備える複数のルータを備える発行−購読ネットワーク。
【請求項６６】
発行−購読ネットワークにおいて、フィルタを伝播するための通信装置において、
ネットワーク内ノードにおいて、複数のフィルタを受信するフィルタ受信モジュールと、
上記フィルタの数を減少させるフィルタ削減モジュールと、
受信者の振る舞いの規則に基づいて、フィルタを伝播するか否かを決定し、フィルタを伝播すると決定した場合、数が削減されたフィルタを上記ネットワークにおける次のノードに伝播するフィルタ伝播モジュールとを備える通信装置。
【請求項６７】
冗長な述語表現を取り除くようフィルタを簡約する簡約モジュールを備える請求項６６記載の通信装置。
【請求項６８】
上記フィルタ処理モジュールは、ダウンリンクの選択に基づいてフィルタをグループ化するグループ化モジュールを備えることを特徴とする請求項６６記載の通信装置。
【請求項６９】
上記フィルタ処理モジュールは、フィルタを概算する概算モジュールを備えることを特徴とする請求項６６記載の通信装置。
【請求項７０】
上記フィルタ処理モジュールは、フィルタを包摂する包摂モジュールを備えることを特徴とする請求項６６記載の通信装置。
【請求項７１】
上記フィルタ処理モジュールは、フィルタの相互の類似性に基づき、フィルタを互いにクラスタ化するクラスタ化モジュールを備えることを特徴とする請求項６６記載の通信装置。
【請求項７２】
上記フィルタ処理モジュールは、フィルタを併合する併合処理モジュールを備えることを特徴とする請求項６６記載の通信装置。
【請求項７３】
発行−購読ネットワークにおいてフィルタを伝播させる通信方法において、
ルータからフィルタを要求する通知を送信するステップと、
１つ以上のダウンストリームのルータによって通知を受信するステップと
上記フィルタ要求を更にダウンストリーム側に伝播するステップと、
上記フィルタ要求が伝播されたダウンストリームのルータからの応答を待機するステップと、
上記フィルタ要求が伝播されたダウンストリームのルータからフィルタを収集するステップと、
上記伝播されたフィルタを処理し、上記フィルタの数を削減するステップと、
上記数が削減されたフィルタを上記フィルタを要求したアップストリーム側のルータに送信するステップとを有する通信方法。
【請求項７４】
各ダウンストリームのルータにおいて、上記フィルタ要求がルータから受け取られたことを反映するようにブックキーピングデータベースを更新するステップと、
上記フィルタ要求が受け取られたルータが動作していたか否かを判定するステップとを有する請求項７３記載の通信方法。
【請求項７５】
複数のルータと、請求項７３記載の通信方法を実現するモジュールを備える発行者装置とを備える発行−購読ネットワーク。
【請求項７６】
発行−購読ネットワークにおいて、パケットのコンテンツベースのルーティングを行う通信方法において、
上記ネットワークにおいてパケットを受信するステップと、
属性空間におけるフィルタ適用範囲を指定するマップにアクセスするステップと、
上記パケットの経路決定のために、該パケットのコンテンツを検査するステップと、
上記マップを用いて、上記パケットの経路決定を補助するステップと、
上記検査されたパケットのコンテンツ及びマップに基づいて、経路決定を行うステップと、
上記経路決定に基づいて、パケットをルーティングするステップとを有する通信方法。
【請求項７７】
上記経路決定を行うステップは、対応する購読予約にコンテンツを照合するステップを更に有することを特徴とする請求項７６記載の通信方法。
【請求項７８】
上記照合するステップは、複数の連言フィルタを用いて、一致を特定するステップを有することを特徴とする請求項７７記載の通信方法。
【請求項７９】
上記照合するステップは、属性検査を実行するステップを有することを特徴とする請求項７７記載の通信方法。
【請求項８０】
上記経路決定を行うステップは、上記マップをオンラインで利用するステップを有することを特徴とする請求項７６記載の通信方法。
【請求項８１】
オフライン又はバックグラウンド処理で、上記フィルタ適用範囲を予め算出するステップを有する請求項７６記載の通信方法。
【請求項８２】
フィルタ適用範囲を予め算出するステップを有し、該予め算出するステップは、フィルタ表現を概算し、削減するステップを有することを特徴とする請求項７６記載の通信方法。
【請求項８３】
フィルタ適用範囲を予め算出するステップを有し、該予め算出するステップは、属性空間をグリッドセルを含むグリッドに空間的に量子化するステップを有することを特徴とする請求項７６記載の通信方法。
【請求項８４】
上記フィルタ適用範囲を予め算出するステップは、
フィルタ適用範囲情報とグリッドとを結合するステップと、
それぞれのグリッドセル内においてフィルタ適用範囲情報によって記述された処理の統合に基づくマップを生成するステップとを有するステップとを有することを特徴とする請求項８３記載の通信方法。
【請求項８５】
発行−購読ネットワークにおいて、パケットのコンテンツベースのルーティングを行うルータにおいて、請求項７６記載の通信方法を実現するモジュールを備えるルータ。
【請求項８６】
請求項８５記載の複数のルータを備えるネットワーク。
【請求項８７】
請求項７６記載の通信方法を実現する命令を有するコンピュータにより読取可能な媒体。
【請求項８８】
パケットのコンテンツベースのルーティングを行う通信方法において、
（ａ）属性空間を空間量子化するステップと、
（ｂ）それぞれが少なくとも１つの記述された属性を有する複数のフィルタで覆われたグリッドセルを特定するステップと、
（ｃ）ステップ（ｂ）において特定されたグリッドセルをカバーする複数個のフィルタによって記述される処理規則によって、コンテンツベースのルーティング（ＣＢＲ）テーブルを更新するステップとを有する通信方法。
【請求項８９】
１つ以上の新たなフィルタがノードに挿入され又はノードから削除されたか否かを判定するステップと、
１つ以上の新たなフィルタがノードに挿入され又はノードから削除されたと判定された場合に、上記ノードにおいてステップ（ｂ）及び（ｃ）を実行するステップとを有する請求項８８記載の通信方法。
【請求項９０】
発行されたパケットを受信するステップと、
上記受信したパケットを上記グリッドにプロットするステップとを有する請求項８８記載の通信方法。
【請求項９１】
上記算出されたフィルタ適用範囲情報によって完全にカバーされているグリッドセルにプロットされたパケットついて、ＣＢＲテーブルを検査し、上記完全にカバーされているグリッドセルにプロットされたパケットに対する処理を判定するステップを有する請求項９０記載の通信方法。
【請求項９２】
ネットワークトラヒックが設定された閾値を超えているか否かを判定するステップと、
上記ネットワークトラヒックが設定された閾値を超えている場合、上記発行されたパケットをルーティングするステップとを有する請求項９１記載の通信方法。
【請求項９３】
上記ネットワークトラヒックが設定された閾値以下である場合、漏れ削減処理を実行するステップを有する請求項９２記載の通信方法。
【請求項９４】
上記漏れ削減処理を実行するステップは、一次元の正確な照合を行うステップを有することを特徴とする請求項９３記載の通信方法。
【請求項９５】
上記漏れ削減処理を実行するステップは、外積を算出する処理を含むことを特徴とする請求項９３記載の通信方法。
【請求項９６】
上記漏れ削減処理を実行するステップは、制限された数の及び様々な属性の順列のサブセットの完全な組に基づく複数のグリッドとＣＢＲテーブルの構成を含むことを特徴とする請求項９３記載の通信方法。
【請求項９７】
ネットワークトラヒックが設定された閾値以下である場合、部分的にカバーされたグリッドセルにプロットされた削減されたフィルタ述語又はパケットがあるか否かを判定するステップと、
上記部分的にカバーされたグリッドセルにプロットされた削減されたフィルタ述語又はパケットがある場合、述語毎のフィルタ照合を実行し、部分的にカバーされたグリッドセルにプロットされたあらゆる削減されたフィルタ述語及びあらゆるパケットに関するルーティング処理を決定するステップと、
上記決定されたルーティング処理に基づいて上記パケットをルーティングするステップとを有する請求項９２記載の通信方法。
【請求項９８】
フィルタ表現を削減するステップを有する請求項８８記載の通信方法。
【請求項９９】
上記ステップ（ａ）は、属性空間を適応量子化するステップを有することを特徴とする請求項８８記載の通信方法。
【請求項１００】
上記適応量子化するステップは、パケット分布情報に基づいて、上記属性空間を適応的に量子化するステップを有することを特徴とする請求項９９記載の通信方法。
【請求項１０１】
上記空間量子化するステップは、パケット分布情報に基づいて、上記属性空間を空間的に量子化するステップを有することを特徴とする請求項８８記載の通信方法。
【請求項１０２】
上記空間量子化するステップは、パケット分布情報に基づいて、グリッドを更新するステップを有することを特徴とする請求項８８記載の通信方法。
【請求項１０３】
上記ステップ（ｃ）は、上記算出されたフィルタ適用範囲情報によってカバーされているグリッドセルについて、操作ビットマスクを生成又は更新するステップを有することを特徴とする請求項８８記載の通信方法。
【請求項１０４】
上記ステップ（ｃ）は、上記算出されたフィルタ適用範囲情報によってカバーされているグリッドセルについて、リンクされた処理のリストを生成又は更新するステップを有することを特徴とする請求項８８記載の通信方法。
【請求項１０５】
上記ＣＢＲテーブルにおいてカバーされたセルの、フィルタ分布に関する統計情報を含んでいるパラメータを更新するステップを有する請求項８８記載の通信方法。
【請求項１０６】
上記ステップ（ａ）において用いられるパケット分布に関する統計情報を集めるステップを有する請求項８８記載の通信方法。
【請求項１０７】
上記ステップ（ａ）〜（ｃ）は、オフラインで実行されることを特徴とする請求項８８記載の通信方法。
【請求項１０８】
ＣＢＲテーブルと、ＣＢＲテーブルにおける規則のみを用いて、コンテンツベースのルーティング（ＣＢＲ）を実行するステップを有する請求項８８記載の通信方法。
【請求項１０９】
発行−購読ネットワークにおいて、パケットのコンテンツベースのルーティングを行う通信装置において、請求項８８記載の通信方法を実現するモジュールを備える通信装置。
【請求項１１０】
当該通信装置は、ルータであることを特徴とする請求項１０９記載の通信装置。
【請求項１１１】
請求項８８記載の通信方法を実現するモジュールを備える複数のルータを備えるネットワーク。
【請求項１１２】
請求項８８記載の通信方法を実現する命令を有するコンピュータにより読取可能な媒体。
【請求項１１３】
発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
データセットに関連する広告を受信するステップと、
論理式を表すクエリを受信するステップと、
上記広告を対応する購読予約にマッピングするステップと、
上記クエリを対応する通知にマッピングするステップと、
上記対応する購読予約を用いて、広告を実現するステップと、
上記対応する通知を用いて、ネットワークにおける、クエリを実現するステップとを有する通信方法。
【請求項１１４】
上記広告をマッピングするステップは、該広告に対し、一般的マッピングを実行するステップを有することを特徴とする請求項１１３記載の通信方法。
【請求項１１５】
上記クエリをマッピングするステップは、クエリに対し、選言的クエリマッピングを実行するステップを有することを特徴とする請求項１１３記載の通信方法。
【請求項１１６】
発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
広告を登録するための購読予約を作成するステップと、
通知を発行し、クエリを配信するステップと、
購読予約を用いてコンテンツベースのルーティング（ＣＢＲ）を実行し、広告主に通知をプッシュするステップと、
要求者に応答データを返すステップとを有する通信方法。
【請求項１１７】
上記応答データを返すステップは、上記広告主と上記要求者の間のユニキャスト接続を用いて行われることを特徴とする請求項１１６記載の通信方法。
【請求項１１８】
上記応答データを返すステップは、上記要求者により、上記応答データのための新たな購読予約を作成し、該新たな購読予約を用いてＣＢＲを実行し、該応答データを該要求者にプッシュするステップを有することを特徴とする請求項１１６記載の通信方法。
【請求項１１９】
上記作成するステップは、１組のデータに関する広告を登録するための購読予約を作成するステップを有することを特徴とする請求項１１６記載の通信方法。
【請求項１２０】
クエリ−応答インタラクションを実現する発行−購読ネットワークにおいて、請求項１１６記載の通信方法を実現するモジュールを備えるルータと、発行者装置と、購読者装置を備える発行−購読ネットワーク。
【請求項１２１】
発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
広告を登録する購読予約を受信するステップと、
クエリを配信する通知を受信するステップと、
購読予約を用いて、コンテンツベースのルーティングを実行し、隣接しているノードに通知を転送するか否かを判定するステップと、
するステップと、
上記判定に基づいて、通知を選択的に転送するステップとを有する通信方法。
【請求項１２２】
発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信装置において、請求項１２１記載通信方法を実現するモジュールを備える通信装置。
【請求項１２３】
上記通信装置は、ルータを含むことを特徴とする請求項１２２記載の通信装置。
【請求項１２４】
発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
初期サブジェクトを含む通知を発行するステップと、
以前に発行された広告に関する過去サブジェクトを含む通知を発行するステップと、
以前に発行された広告へのクエリである過去サブジェクトに対する購読予約を提出するステップと、
過去サブジェクトに購読予約を用いてコンテンツベースのルーティングを実行し、以前に発行された広告を消費者にプッシュするステップとを有する通信方法。
【請求項１２５】
過去サブジェクトに対する購読停止を提出するステップを有する請求項１２４記載の通信方法。
【請求項１２６】
初期サブジェクトの購読予約を提出するステップを有する請求項１２４記載の通信方法。
【請求項１２７】
クエリ−応答インタラクションを実現する発行−購読ネットワークにおいて、請求項１２４記載の通信方法を実現するモジュールを備えるルータと、発行者装置と、購読者装置とを備える発行−購読ネットワーク。
【請求項１２８】
発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
初期サブジェクトを含む通知と、以前に発行された広告に関する過去サブジェクトを含む通知とを受信するステップと、
初期サブジェクトに関する購読予約と、以前に発行された広告へのクエリである過去サブジェクトに関する購読予約とを受信するステップと、
上記過去サブジェクトに購読予約を用いて、コンテンツベースのルーティングを実行し、上記以前に発行された広告を隣接しているノードに転送するか否か決定するステップと、
上記判定に基づいて、上記以前に発行された広告を選択的に転送するステップとを有する通信方法。
【請求項１２９】
発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信装置において、請求項１２８記載の通信方法を実現するモジュールを備える通信装置。
【請求項１３０】
上記通信装置は、ルータを備えることを特徴とする請求項１２９記載の通信装置。
【請求項１３１】
発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
発行された通知をキャッシングするステップと、
上記キャッシングされた、発行された通知内のコンテンツを広告する通知を発行するステップと、
上記発行された通知へのクエリである購読予約を提出するステップと、
上記キャッシュから、上記キャッシングされた、発行された通知を再生するステップと、
上記購読予約に基づいて、コンテンツベースのルーティング（ＣＢＲ）を実行し、上記再生された、発行された通知を消費者にプッシュするステップとを有する通信方法。
【請求項１３２】
クエリ−応答インタラクションを実現する発行−購読ネットワークにおいて、請求項１３１記載の通信方法を実現するモジュールを備えるルータと、発行者装置と、購読者装置を備える発行−購読ネットワーク。
【請求項１３３】
発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
発行された通知をキャッシングするステップと、
上記発行された通知を要求する購読予約を受信するステップと、
上記キャッシュから、上記キャッシングされた、発行された通知を再生するステップと、
上記発行された通知へのクエリである購読予約を用いてコンテンツベースのルーティング（ＣＢＲ）を実行し、上記キャッシングされた、発行された通知を隣接しているノードに転送するか否かを判定するステップと、
上記判定に基づいて、信頼できる伝送プロトコルを用いて、上記隣接しているノードに通知を選択的に転送するステップとを有する通信方法。
【請求項１３４】
発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信装置において、請求項１３３記載の通信方法を実現するモジュールを備える通信装置。
【請求項１３５】
上記通信装置は、ルータを備えることを特徴とする請求項１３４記載の通信装置。
【請求項１３６】
発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
データ広告を受信するステップと、
上記データ広告を購読予約に変換するステップと、
クエリを受信するステップと、
上記クエリを通知に変換するステップと、
上記購読予約に基づいてコンテンツベースのルーティング（ＣＢＲ）を実行し、広告主に通知をプッシュするステップと、
上記通知に基づいて、要求者に応答データを返すステップとを有する通信方法。
【請求項１３７】
変換するステップは、存在論的変換を実行するステップを有することを特徴とする請求項１３６記載の通信方法。
【請求項１３８】
上記応答データを返すステップは、上記広告主と上記要求者の間のユニキャスト接続を用いて行われることを特徴とする請求項１３６記載の通信方法。
【請求項１３９】
上記応答データを返すステップは、上記要求者により、上記応答データのための新たな購読予約を作成し、該新たな購読予約を用いてＣＢＲを実行し、該応答データを該要求者にプッシュするステップを有することを特徴とする請求項１３６記載の通信方法。
【請求項１４０】
上記クエリを受信するステップは、データの組に関するクエリを受信することを特徴とする請求項１３６記載の通信方法。
【請求項１４１】
上記データ広告を受信するステップは、データの組に関するデータ広告を受信することを特徴とする請求項１３６記載の通信方法。
【請求項１４２】
上記データ広告を変換するステップは、該広告に対し、一般的マッピングを実行するステップを有することを特徴とする請求項１３６記載の通信方法。
【請求項１４３】
上記データ広告を変換するステップは、該広告に対し、選言的クエリマッピングを実行するステップを有することを特徴とする請求項１３６記載の通信方法。
【請求項１４４】
上記データ広告を変換するステップは、上記購読予約において、上記データ広告における属性と表現演算子の組合せを表す属性を定義するステップを有することを特徴とする請求項１３６記載の通信方法。
【請求項１４５】
上記クエリを変換するステップは、上記クエリにおける属性及び表現演算子の組合せを表す通知において、属性を定義するステップを有することを特徴とする請求項１３６記載の通信方法。
【請求項１４６】
クエリ−応答インタラクションを実現する発行−購読ネットワークにおいて、請求項１３６記載の通信方法を実現するモジュールを備えるルータと、発行者装置と、購読者装置を備える発行−購読ネットワーク。
【請求項１４７】
発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
クエリを受信するステップと、
上記クエリを通知に変換するステップと、
上記通知及び購読予約に変換されたデータ広告に対して実行されるコンテンツベースのルーティングに基づいて、応答データを受信するステップとを有する通信方法。
【請求項１４８】
発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信装置において、請求項１４７記載の通信方法を実現するモジュールを備える通信装置。
【請求項１４９】
上記通信装置は、購読者装置を含むことを特徴とする請求項１４８記載の通信装置。
【請求項１５０】
発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
データ広告を受信するステップと、
上記データ広告を購読予約に変換するステップと、
購読予約と通知に実行されたコンテンツベースのルーティングに基づいて通知に変形されたクエリを受信するステップと、
上記通知に基づいて、応答データを要求者に転送するステップとを有する通信方法。
【請求項１５１】
発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信装置において、請求項１５０記載の通信方法を実現するモジュールを備える通信装置。
【請求項１５２】
上記通信装置は、発行者装置を含むことを特徴とする請求項１５１記載の通信装置。
【請求項１５３】
発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信方法において、
クエリから変化されてた通知を受信するステップと、
コンテンツベースのルーティング（ＣＢＲ）し、隣接しているノードに通知を転送するか否かを判定するステップと、
上記判定に基づいて、上記通知を選択的に転送するステップとを有する通信方法。
【請求項１５４】
データ広告から変換された購読予約を受信するステップを有し、
上記ＣＢＲを実行するステップは、上記購読予約に基づいてＣＢＲを実行することを特徴とする請求項１５３記載の通信方法。
【請求項１５５】
発行−購読ネットワークにおいて、クエリ−応答インタラクションを実現する通信装置において、請求項１５３記載の通信方法を実現するモジュールを備える通信装置。
【請求項１５６】
上記通信装置は、ルータを含むことを特徴とする請求項１５５記載の通信装置。
【請求項１５７】
発行−購読ネットワークを介して提供されるメッセージの持続的なキャッシングを実現する通信方法において、
（ａ）第１のノードにおいて、ネットワークを介して、データを含むメッセージを受信するステップと、
（ｂ）上記データに時刻を示すをマークを付与するステップと、
（ｃ）第１のノードのキャッシュメモリに、上記データをキャッシングするステップと、
（ｄ）コンテンツベースのルーティングを用いて、第２のノードに上記メッセージをルーティングするステップとを有する通信方法。
【請求項１５８】
（ｅ）上記第２のノードのキャッシュメモリにデータをキャッシングする点を除いて、上記第２のノードでステップ（ａ）〜（ｄ）を繰り返すステップを更に有する請求項１５７記載の通信方法。
【請求項１５９】
上記データをキャッシングするステップ（ｃ）からタイムグレイン期間Ｇが経過したか否かを判定するステップと、
上記タイムグレイン期間Ｇが経過したと判定した場合、上記キャッシングしたデータをキャッシュメモリからディスクに移管するステップとを有する請求項１５７記載の通信方法。
【請求項１６０】
上記キャッシングされたデータの最後のブロックについて、上記データをキャッシングするステップ（ｃ）から持続タイムフレーム期間Ｔが経過した否かを判定するステップと、
上記持続タイムフレーム期間Ｔが経過したと判定した場合、上記キャッシングされたデータを消去するステップとを有する請求項１５７記載の通信方法。
【請求項１６１】
上記持続タイムフレーム期間Ｔは、データに関連するチャンネルに基づいて決定されることを特徴とする請求項１６０記載の通信方法。
【請求項１６２】
上記第１のノードは、インテリジェントルータを含み上記受信するステップ（ａ）は、上記インテリジェントルータにおいてメッセージを受信するステップを有することを特徴とする請求項１５７記載の通信方法。
【請求項１６３】
上記インテリジェントルータは、キャッシュマネージャを備え、上記キャッシュマネージャは、ステップ（ｂ）及び（ｃ）を実行することを特徴とする請求項１６２記載の通信方法。
【請求項１６４】
上記第２のノードは、購読者装置を含むことを特徴とする請求項１５７記載の通信方法。
【請求項１６５】
発行−購読ネットワークを介して配信されたメッセージの持続的なキャッシングを実現するルータにおいて、請求項１５７記載の通信方法を実現するモジュールを備えるルータ。
【請求項１６６】
メッセージの持続的なキャッシングを実現する発行−購読ネットワークにおいて、請求項１５８記載の通信方法を実現するモジュールを備えるノードを備える発行−購読ネットワーク。
【請求項１６７】
請求項１５７記載の通信方法を実現する命令を有するコンピュータにより読取可能な媒体。
【請求項１６８】
発行−購読ネットワークを介して配信されたメッセージの持続的なキャッシングを実現する通信方法において、
発行−購読ネットワークを介して、データを含むメッセージを受信するステップと、
上記データに時刻を示すをマークを付与するステップと、
キャッシュメモリに、上記データをキャッシングするステップと、
上記データをキャッシングするステップからタイムグレイン期間Ｇが経過したか否かを判定するステップと、
上記タイムグレイン期間Ｇが経過したと判定した場合、上記キャッシングしたデータをキャッシュメモリからディスクに移管するステップと、
上記キャッシングされたデータの最後のブロックについて、上記データをキャッシングするステップから持続タイムフレーム期間Ｔが経過した否かを判定するステップと、
上記持続タイムフレーム期間Ｔが経過したと判定した場合、上記キャッシングされたデータを消去するステップとを有する通信方法。
【請求項１６９】
上記キャッシングされたデータに関する要求が受信されたか否かを判定するステップを有する請求項１６８記載の通信方法。
【請求項１７０】
上記キャッシングされたデータに関する要求は、ユーザ装置から受信されることを特徴とする請求項１６９記載の通信方法。
【請求項１７１】
上記キャッシングされたデータに関する要求が受信された場合、上記キャッシングされたデータを読み出すステップを有する請求項１６９記載の通信方法。
【請求項１７２】
上記キャッシングされたデータを読み出すステップは、アップストリームのキャッシュを呼び出すステップと、上記アップストリームのキャッシュから、上記キャッシングされたデータを読み出すステップとを有することを特徴とする請求項１７１記載の通信方法。
【請求項１７３】
上記アップストリームのキャッシュから読み出されたキャッシングされたデータに対し、重複抑制処理を実行するステップを有する請求項１７２記載の通信方法。
【請求項１７４】
上記キャッシングされたデータを読み出すステップは、ユーザ装置のエージェントからアップストリームのキャッシュのリストを取得するステップを有することを特徴とする請求項１７２記載の通信方法。
【請求項１７５】
ユーザ装置へのルーティングのために、上記キャッシングされたデータをバックボーンルータに転送するステップを有する請求項１７１記載の通信方法。
【請求項１７６】
上記キャッシングされたデータにインデクスを付すステップを有する請求項１６８記載の通信方法。
【請求項１７７】
上記キャッシングされたデータにインデクスを付すステップは、ＩＤ、サブジェクト及び／又はタイムスタンプによってデータにインデクスを付すステップを有することを特徴とする請求項１７６記載の通信方法。
【請求項１７８】
上記受信、時刻情報の付与及びキャッシングのステップは、アップストリームのルーティングノードにおいて実行されることを特徴とする請求項１６８記載の通信方法。
【請求項１７９】
上記受信のステップを繰り返すことを特徴とする請求項１６８記載の通信方法。
【請求項１８０】
発行−購読ネットワークを介して配信されたメッセージの持続的なキャッシングを実現するルータにおいて、請求項１６８記載の通信方法を実現するモジュールを備えるルータ。
【請求項１８１】
メッセージの持続的なキャッシングを実現する発行−購読ネットワークにおいて、それぞれ、請求項１６８記載の通信方法を実行するモジュールを備える第１のノード及び該第１のノードのダウンストリーム側の第２のノードを備える発行−購読ネットワーク。
【請求項１８２】
請求項１６８記載の通信方法を実現する命令を有するコンピュータにより読取可能な媒体。
【請求項１８３】
発行−購読ネットワークを介して配信されたメッセージの持続的なキャッシングを実現する通信方法において、
（ａ）
複数のアップストリームノードにおいて、ネットワークを介して、データを有する複数のメッセージを受け取るステップと、
（ｂ）上記データに時刻情報を付与するステップと、
（ｃ）上記複数のアップストリームノードのうちの１つのアップストリームノードにおいて、キャッシュに上記データをキャッシングするステップと、
（ｄ）コンテンツベースのルーティングを用いて、エッジノードにメッセージをルーティングするステップと、
（ｅ）上記エッジノードのキャッシュメモリにデータをキャッシングする点を除いて、上記エッジノードにおいてステップ（ａ）〜（ｃ）を繰り返すステップとを有するデータ通信方法。
【請求項１８４】
コンテンツベースのルーティングを用いて、エッジノードから購読者装置に上記メッセージの少なくとも１つをルーティングするステップを有する請求項１８３記載の通信方法。
【請求項１８５】
上記エッジノードにおいて、上記購読者装置から、上記キャッシングされたデータの要求を受信するステップを有する請求項１８４記載の通信方法。
【請求項１８６】
上記要求に応じて、上記キャッシングされたデータの時間量を判定するステップと、
上記キャッシングされたデータに付された時刻情報に基づいて、上記判定された時間量に対応する上記キャッシングされたデータを読み出すステップとを有する請求項１８５記載の通信方法。
【請求項１８７】
上記時間量は、読み出すべきキャッシングされたデータの時間量を含む要求に基づいて判定されることを特徴とする請求項１８６記載の通信方法。
【請求項１８８】
上記時間量は、上記購読者装置が発行−購読ネットワークから切断ている時間である購読者装置の切断時間に基づいて判定されることを特徴とする請求項１８６記載の通信方法。
【請求項１８９】
上記要求されたデータの少なくとも幾つかが上記複数アップストリームノードのうちの１つ以上のアップストリームに保存されていることを判定するステップを有する請求項１８５記載の通信方法。
【請求項１９０】
上記エッジノードにおいて、上記購読者装置からアップストリームノードのリストを受け取るステップを有する請求項１８９記載の通信方法。
【請求項１９１】
上記複数のアップストリームノードのうちの１つ以上のアップストリームノードに、上記キャッシングされたデータに関する要求を送信するステップと、
上記複数のアップストリームノードのうちの１つ以上のアップストリームノードから、上記要求された、キャッシングされたデータを読み出すステップと、
上記読み出したデータを上記購読者装置にルーティングするステップとを有する請求項１８９記載の通信方法。
【請求項１９２】
上記読み出されたキャッシングされたデータに対し、重複抑制処理を実行するステップを有する請求項１９１記載の通信方法。
【請求項１９３】
メッセージの持続的なキャッシングを実現する発行−購読ネットワークにおいて、請求項１８３記載の通信方法を実現するモジュールを備える複数のアップストリームノード及びエッジノードを備える発行−購読ネットワーク。
【発明の詳細な説明】
【関連出願】
【０００１】
本出願は、２００２年３月２８日に出願された、米国仮出願番号６０／３６８，８３３号、発明の名称「信頼性が低いネットワークにおける信頼性が高い発行／購読システムアーキテクチャ（Reliable Publish/Subscribe System Architecture over Unreliable Networks）」、２００２年３月２８日に出願された、米国仮出願番号６０／３６９，１０５号、発明の名称「発行／購読ネットワークのためのコンテンツフィルタの伝播方法（Methods for Propagating Content Filters for a Publish/Subscribe Network）」、２００２年３月２８日に出願された、米国仮出願番号６０／３６８，８３１号、発明の名称「発行／購読ネットワークにおけるコンテンツに基づくパケットルーティングの実際的な方法（Practical Method for Content-Based Packet Routing in a Publish/Subscribe Network）」、２００２年３月２８日に出願された、米国仮出願番号６０／３６８，８７０号、発明の名称「データ広告を購読としてマッピングし、クエリを通知としてマッピングすることにより、発行−購読インフラストラクチャにおいてクエリ−応答インタラクションを実現する方法（Implementing Query-Response Interactions On a Publish- Subscribe Infrastructure By Mapping Data Advertisements as Subscriptions and Queries as notifications）」、２００２年４月３日に出願された、米国仮出願番号６０／３６９，８３２号、発明の名称「持続的で信頼性が高いメッセージ配信を実現するための方法及び装置（Method and Apparatus for Implementing Persistent and Reliable Message Delivery）」、２００３年２月１９日に出願された、米国仮出願番号６０／４４７，７８２号、発明の名称「コンテンツフィルタの伝播、コンパクトフィルタストレージ及びオフラインプリコンピュテーション、信頼性が高い発行及び購読、持続的で信頼性が高いメッセージ配信の実現、データ広告を購読としてマッピングし、クエリを通知としてマッピングすることにより、発行−購読インフラストラクチャにおいてクエリ−応答インタラクションを実現する方法（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）」に対する優先権を主張し、これらの特許文献は、参照により本願に援用されるものとする。
【０００２】
更に、米国特許出願第１０／１９９，３５６号、発明の名称「ペイロード検査によるパケットのルーティング（Packet Routing Via Payload Inspection）」、米国特許出願第１０／１９９，３６８号、発明の名称「ルータにおけるチャンネルを用いたコンテンツに基づくルーティング及びフィルタリングのための方法及び装置（Method And Apparatus For Content-Based Routing And Filtering At Routers Using Channels）」、米国特許出願第１０／１９９，４３９号、発明の名称「ネットワークを介してブール関数を送信及び受信する方法（Method For Sending And Receiving A Boolean Function Over A Network）」、米国特許出願第１０／１９９，３６９号、発明の名称「ネットワークを介する評価、修正、再使用及び配信のためにブール関数を保存する方法（Method For Storing Boolean Functions To Enable Evaluation, Modification, Reuse, And Delivery Over A Network）」、米国特許出願第１０／１９９，３８８号、発明の名称「コンテンツに基づくルーティングにおける可変長フィールドにおけるワイルドカード照合を効率的に実現する方法（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：以下、ＡＰＩという。）を用いて、ネットワーク内部で発生するイベントに関する通知を発行し及び／又は通知を購読又は受信する。
【００１３】
このシステムにおける通知には、サブジェクトが与えられ、サブジェクトは、通知がカプセル化している情報の種類を分類するための文字列又はこの他のデータ構造として示される。また、通知は、その通知に特有の情報を含む属性の組によって完結されている。例えば、アプリケーションは、サブジェクトクォート．ｎｙｓｅ（subject quotes.nyse）と、属性シンボル及び価格とを用いて、ニューヨーク証券取引所における取引に関する通知を発行してもよい。例えば、アプリケーションは、ＳＮＥ（ソニー株式会社の相場受信機のシンボル）及び８５．２５ドルの株価を含む特定の属性値を有する個々の通知を発行する。全てではなくとも、殆どの通知の属性は、同じサブジェクトのファミリーに関する全ての通知において見出されるという意味で、予め定められている。なお、発行者は、イベント固有の情報を追加するために、通知毎に又は他の単位で、通知に任意の属性を加えることができる。したがって、一部又は全ての属性は、予め定義されたものではなくてもよい。
【００１４】
このシステムでは、購読者は、サブジェクト又はチャンネル全体の購読のみに制限されるわけではない。チャンネルついては、後に説明し、定義する。チャンネルは、例えばサブジェクトフィールド及び関連するサブフィールド（サブサブジェクト）の１つ以上のレベルを指定する階層構造を含むことができる。したがって、購読者は、通知の属性に対して、コンテンツ毎のフィルタを指定することによって、興味に応じてより精密に調整された表現を特定することができる。例えば、購読者は、ＳＮＥのシンボルを有し、価格が９０．００ドル以上であるサブジェクトクォート．ｎｙｓｅ（例えば、購読者が所有している株の売りの好機を示している）について、全ての通知を購読予約してもよい。購読予約に一致する全ての通知は、コールバック又は購読者が購読予約を登録したとき、又は他の時点で特定した他の種類の機能を介して、購読者に配信される。１つの購読予約は、複数のフィルタに分割することもできる。
【００１５】
コールバックは、多くの処理を実行することができ、これらには、例えば、端末機器にメッセージを送信し又は電子メールを送信する等の単純な処理から、株の一部を売却する等のより複雑な処理や、新たな発行−購読アクティビティを開始する（例えば、既存の購読予約を７５．００ドルの株価を買いの好機とする新たな購読予約に置き換え、又は購読者のポートフォリオが修正された新たな通知を発行する等）等の更に複雑な処理が含まれる。
【００１６】
アプリケーションにおける発行及び購読アクティビティは、例えば、エージェントによって支援してもよい。エージェントは、プロキシを利用してもよく又はプロキシとして実現してもよい。エージェントは、送信される通知及び購読予約、及び購読者に受信される照合通知の配信のための接続を提供する。通知がネットワークに出されると、このシステムのルータのネットワークは、その通知に購読予約が一致する全ての購読者に通知を伝播（propagate）する。この処理を実現する一手法は、ネットワーク内の全ての点の通知を同報通信し、アプリケーションエージェントにより、対応する購読者にその通知が関連するか否かを判断させる手法がある。しかしながら、これは必ずしもスケーラブルな手法であるというわけではない。通常、ネットワークは、特に膨大な数のアクティブな購読者がいる場合、メッセージトラヒックの負荷によって正常に機能できなくなる。更に、帯域幅が十分に確保された場合でも、購読者は、膨大な量の通知を処理しきれなくなると考えられる。
【００１７】
本発明に基づくシステムの一例として示すネットワークは、非常に効率的に通知をルーティングする。まず、このネットワークは、マルチキャストルーティングを用いて、例えば、ネットワーク内の全てのリンクにおいて最大で１回、通知を伝播させることができる。次に、このネットワークは、フィルタに対する多数の高度な最適化処理を採用でき、これにより、通知の伝播の回数を可能な限り削減することができる。
【００１８】
図１は、ネットワークコアにおけるこのインテリジェントルーティングを概念的に示す図である。発行者１４は、エッジルータ１６を介して、発行−購読ネットワークにおいて用いられているネットワークコア１０にメッセージのコンテンツを送信する。発行−購読ネットワークは、発行者から購読者にデータ又はコンテンツをルーティングするための如何なる種類のネットワークであってもよい。コンテンツは、ルータ間又は他の機器間の論理的接続を表す１個以上のチャンネル１８を介して伝送される。ネットワークコア１０におけるインテリジェントルータ１２は、メッセージをルーティング又は転送するか否かを決定する。具体的には、インテリジェントルータ１２は、メッセージが購読者２４によって購読予約されているコンテンツを含んでいるか否かを判定することができる。
【００１９】
各購読予約は、サブジェクトフィルタと属性フィルタとをカプセル化している。ルータは、サブジェクトフィルタを一致するサブジェクトの組に拡張し、又はサブジェクト毎に属性フィルタを併合することができる。インテリジェントルータは、通知のサブジェクトに対してサブジェクトフィルタを評価し、及び通知における属性値に対して属性フィルタを評価する。サブジェクトフィルタのための構文では、ワイルドカードを用いることができ、属性フィルタのための構文では、論理式（Boolean expression）を用いることができ、これらについては、後に更に詳細に説明する。「フィルタ」という用語は、購読者が発行者から受信を望んでいる１組のイベントを意味する。ルーティング規則は、フィルタから生成され、インテリジェントルータは、この規則を用いて経路決定を行う。
【００２０】
したがって、メッセージ２６が全体のフィルタセットを充足していない場合、例えばインテリジェントルータ１２は、メッセージ２６を除外（削除）し、これは、メッセージが転送されないことを意味する。サブジェクトと属性フィルタの評価に基づき、メッセージ２０がフィルタの組の一部又は全体を充足していると判定された場合、例えばインテリジェントルータ１２は、エッジルータ２２及び可能であれば他の機器を介して、購読者にメッセージ２０をルーティング（転送）し、又は、一致したフィルタについて規定されている全てのルーティング及び／又は動作規則に基づいて、インテリジェントルータ１２内部でメッセージ２０に対する他の機能を実行する。検索は、フィルタの組全体に対する処理が完了するまで、又は全ての規則に関する判定が得られるまで続けられ、この２つの条件のいずれかが満たされると終了する。
【００２１】
ネットワークコアにおける、このようなインテリジェントなコンテンツベースのルーティングは、例えば、警告及び更新のための実時間データ配信を実現する。警告のための実時間データ配信の具体例としては、以下に限定されるものではないが、例えば、株価、交通情報、ニュース、旅行、天気、不正検出、セキュリティ、テレマティックス、ファクトリオートメーション、サプライチェーン管理及びネットワークマネージメント等がある。更新のための実時間データ配信の具体例としては、以下に限定されるものではないが、例えば、ソフトウェア更新、アンチウイルス更新、映画及び音楽配信、ワークフロー、ストレージ管理及びキャッシュ一貫性（cache consistency）等がある。購読予約された情報を配信するシステムは、他の様々な分野に応用することができる。
【００２２】
表１は、フィルタリングのために保存される購読予約をサブジェクト及び述語（predicate）とともに示している。これらは、希望されれば、又は必要に応じて、ネットワークの如何なる部分に、如何なる種類のデータ構造を用いて保存してもよい。後述するように、述語は、購読予約の要素である。購読予約は、如何なる形式で表現してもよく、その具体例を以下に示す。
【００２３】
【表１】
2005521950.tif 000003
【００２４】
表２は、クォートサーバ（quote server）のための発行及び購読予約の具体例を示している。これらは、説明を目的とする例示的な具体例に過ぎず、購読予約は、如何なる種類のデータ又はコンテンツについて、如何なる数及び種類のパラメータも含んでいてもよい。
【００２５】
【表２】
2005521950.tif 000004
【００２６】
述語は、購読予約のための論理式を提供し、サブジェクトは、購読予約に関するチャンネルを示す。購読予約は、この他の様々な手法で表現することができる。論理式は、このような手法の一例であり、これを用いることにより、コンテンツベースのルーティングのために、購読予約をサブジェクトフィルタと属性フィルタに変換するための機能を容易に実現することができる。これに代えて、サブジェクトを参照することなく購読予約を表現することもできるが、サブジェクト又はチャンネル（後に詳細に説明する。）を用いることにより、属性を解釈し、フィルタを属性に適用するためのコンテキストが実現される。
【００２７】
ネットワークコアにおいて、経路決定を実行し、これをネットワークを介して配信することができ、これにより、発行者と購読者の装置における処理負担を軽減し、ネットワーク効率を著しく高めることができる。図１では、説明を目的として、単一の発行者、単一の購読者及び単一のインテリジェントルータのみを示しているが、実際には、発行者、購読者及びインテリジェントルータをそれぞれ複数設けてもよい。インテリジェントルータという用語は、ネットワークコア又はこの他の位置において、パケット又はメッセージのペイロードを検査することによって経路を決定する能力を有するルータ又は他のエンティティを意味する。
【００２８】
ネットワークインフラストラクチャ
図２は、発行者及び購読者のためのインテリジェントルータを示すネットワーク図である。例えば、サービスをチャンネルに供給するルーティングエンティティ３０は、後述するように、インテリジェントルータ間でメッセージをルーティングするために、ネットワークインフラストラクチャ内に効果的に階層化される。例えば、発行者３２は、概念的に、発行されたコンテンツの指示情報、例えばコンテンツを検索するためのポインタを受け取るためのアプリケーション３４と、チャンネルサービス３０を介したネットワーク伝送のためにコンテンツを符号化するためのエージェント３６とを含む。論理的に相互接続された一群のインテリジェントルータ３８、４０、４２、４４、４６、４８は、購読予約のためのサブジェクトフィルタ及び属性フィルタから生成されたルーティング規則を用いて、発行者からのコンテンツをルーティングする。複数のリンク３９、４１、４３、４５は、インテリジェントルータ３８、４０、４２、４４、４６、４８間を論理的に接続する。他のリンク３７、４７は、それぞれ、発行者３２とインテリジェントルータ３８の間及び購読者５４とインテリジェントルータ４６の間を論理的に接続する。購読者５４は、購読されたコンテンツを検出し、受け取るためのエージェント５０と、コンテンツを表現するためのアプリケーション５２とを備えている。
【００２９】
チャンネルは、例えば、分散型方式によって実現された論理的なマルチキャスト接続の関連する組を含むことができる。この例示的な実施例におけるチャンネルとは、コンテンツを交換するために発行者と購読者に共用される論理的に関連するネットワーク資源の集合である。コンテンツは、チャンネルサブジェクトネームスペースに従って分類され、リソースは、チャンネルマネージャが提供するチャンネルサービスを介して管理され、制御され、供給される。複数のチャンネルが同じリソースを共有してもよい。チャンネルは、スケーラビリティが高いディレクトリサービスを提供でき、このサービスは、以下に限定されるものではないが、発行者及び購読者情報、認証及び認可情報メッセージの種類、管理情報、課金処理と支払い情報等が含まれる。また、例えば、チャンネルは、提供できる持続的なスルーキャッシング（persistence through caching）、高速データ配信メカニズム、セキュリティ、ユーザ及びネットワーク管理等を提供できる。また、チャンネルは、他の如何なる目的にも利用できる。
【００３０】
インテリジェントルータによるフィルタリングをネットワークコアで行い、経路決定をネットワーク内に配信してもよい。更に、インテリジェントルータは、発行者又は購読者等のユーザ機器をネットワークコアに接続するエッジルータとして機能できる。また、ネットワークに接続された同じ機器が、ネットワークにおける経路決定に基づいて購読者にコンテンツをプッシュする発行者及びプッシュされたコンテンツを受信する購読者の両方として機能することができる。インテリジェントルータ及びチャンネルは、特定の実施例における必要又は要望に応じて、如何なる構成で接続してもよく、図２の構成は例示的に示しているに過ぎない。
【００３１】
図３は、インテリジェントルータと従来のバックボーンルータのための例示的なネットワークインフラストラクチャの構成を示しており、この図面は、チャンネルの論理的接続も示している。この実施例におけるインテリジェントルータは、インターネットや他の分散型ネットワーク等のネットワークにおいて、既存のバックボーンルータを用いており、インテリジェントルータは、これにより、バックボーンルータ上に効果的に階層化されている。この実施例では、インターネットサービスプロバイダ（Internet Service Provider：以下、ＩＳＰという。）ネットワーク５８、５９、６０は、メッセージ又はパケットの従来型のルーティングを行うために、それぞれ幾つかのバックボーンルータを備えている。ＩＳＰネットワーク５８、５９、６０においては、複数のインテリジェントルータ６１〜７０が１つ以上のバックボーンルータに接続されている。また、インテリジェントルータ６１〜７０は、実際のリンクを例示的に示す複数のリンク７３〜８５によって相互接続され、またこれらのリンクを介して、エンドユーザ機器にも接続することができる。インテリジェントルータ６１〜７０は、例えばエンティティ７１等の１つ以上の管理者装置（administrator machines）及び例えばエンティティ７２等の１つ以上の仮想プライベートネットワーク（virtual private network：以下、ＶＰＮという。）コントローラによって制御される。ＩＳＰネットワーク５８、５９、６０は、発行者装置及び購読者装置（図３には示していない。）に接続してもよい。ＩＳＰ５８、５９、６０内及びこれらの間のバックボーンルータは、既存のネットワークインフラストラクチャにおいて、従来の如何なる手法で相互接続してもよい。
【００３２】
図３に示すように、既存のネットワークインフラストラクチャを用いて、インテリジェントルータ６１〜７０とリンク７３〜８５を実現することができ、これらは、ネットワークコアにおけるコンテンツベースのルーティングを提供する。リンク７３〜８５は、インテリジェントルータ６１〜７０の間の論理的接続を表し、例えば、既存のネットワークインフラストラクチャ又は他の機器を用いて実現することができる。リンクは、例えば、トンネル（tunnel）と呼ばれる論理的接続を用いて実現してもよい。トンネルは、ハードウェアと、可能であればソフトウェアと、リンクを実現するためのネットワークインフラストラクチャとを含み、トンネルは、複数のチャンネルの一要素であってもよい。チャンネルは、特定の種類のコンテンツのための論理的な構成を提供することによって、インテリジェントルータにおけるコンテンツベースのルーティングを容易にし、これにより、チャンネルを介して送信される属性のためのコンテキストを提供する。インテリジェントルータは、チャンネルを用いることなく経路決定を行うこともできるが、チャンネルは、ネットワークコアにおけるインテリジェントルータによるコンテンツベースのルーティングの効率を向上させる。
【００３３】
この例示的な実施例は、チャンネルとリンクの使用を含んでいる。リンクは、例えばインテリジェントルータである２つのルータ間の接続を表す。チャンネルは、相互接続リンクによって静的又は動的に構成され、１対多又は多対多の論理的接続を実現する一群の（通常多数の）ルータを含むネットワークエンティティである。特に、チャンネルは、チャンネルの本質的な特徴を記述する最上位レベルの論理的エンティティである。１個のチャンネルには、多くのサブジェクトが存在していてもよい。各サブジェクトは、相互接続された一群のルータを含む（マルチキャストツリー等の）サブネットワークを形成する。これらのサブジェクトベースのサブネットワークは、様々な手法で、割当、適応化、構成を行うことができる。全てのサブネットワークの集合体であり、その下にサブジェクトを形成するチャンネルは、例えば、網状組織（mesh of networks）に例えることもできる。
【００３４】
図４は、インテリジェントルータ９２の具体的な構成例を示しており、インテリジェントルータ９２は、符号が付された他の如何なるインテリジェントルータに対応していてもよい。ネットワークノード９０は、従来のバックボーンルータ９５に接続されたインテリジェントルータ９２を備えている。インテリジェントルータ９２は、メモリ９４と補助記憶装置９７（例えば、独立した装置として実現してもよい。）とに接続されたプロセッサ９３を備え、メモリ９４及び補助記憶装置９７は、いずれも、キャッシュデータを含むデータを保存し、及びプロセッサ９３によって実行されるアプリケーションプログラムを保存する。補助記憶装置９７は、不揮発性のデータ記憶装置である。後述するように、プロセッサ９３は、ソフトウェアに制御されて、バックボーンルータ９５に対して命令を発し、この命令に応じて、バックボーンルータ９５は、購読予約に対するサブジェクトフィルタ及び属性フィルタから生成されたルーティング規則に基づいて、メッセージ又はパケットをルーティング（転送）し又はルーティングしない（削除する）。ここでは、インテリジェントルータ９２をプロセッサに制御される独立した装置として示しているが、インテリジェントルータ９２は、バックボーンルータ９５内の特定用途向け集積回路（application specific integrated circuit：ＡＳＩＣ）として実現し、ハードウェアにおいて、インテリジェントルーティング機能を提供してもよく、また、このハードウェアにソフトウェアを組み込んでもよい。また、これに代えて、インテリジェントルーティング機能は、１つ又は複数のルーティング装置において、ソフトウェアとハードウェアの組合せとして実現してもよい。
【００３５】
図５は、発行者装置及び購読者装置の具体的構成例を示している。発行者装置１００又は１１８は、例えば、１つ以上の発行者アプリケーション１０４とエージェントアプリケーション１０６を保存するメモリ１０２と、不揮発性記憶装置である補助記憶装置機器１１２と、情報又はコマンドを入力するためのための入力装置１０８と、メモリ１０２に保存されている又は他のストレージ装置から受け取ったアプリケーションを実行するためのプロセッサ１１４と、情報を出力するための出力装置１１０と、情報を視覚的に表示する表示装置１１６とを備えている。
【００３６】
購読者装置１２２又は購読者装置１４０は、例えば、１つ以上のアプリケーション１２６とエージェントアプリケーション１２８を保存するメモリ１２４と、不揮発性記憶装置である補助記憶装置機器１３０と、情報又はコマンドを入力するための入力装置１３２と、メモリ１２４に保存されている又は他のストレージ装置から受け取ったアプリケーションを実行するためのプロセッサ１３４と、情報を出力するための出力装置１３６と、情報を視覚的に表示するための表示装置１３８とを備えている。発行者装置及び購読者装置は、如何なる構成であってもよく、上述したものとは異なる構成要素を備えていてもよく、構成要素は、上述したものより多くても少なくてもよい。
【００３７】
発行者装置１００、１１８は、上述したネットワーク１２０等のネットワークを介して購読者装置１２２、１４０に接続されるネットワーク１２０は、ネットワークコアにおいて、パケット又はメッセージを介して、データ又はコンテンツの分配型ルーティングを実現するためのインテリジェントルータを含んでいる。ここでは、それぞれ２つの発行者装置及び購読者装置のみを示しているが、より多くの発行者装置及び購読者装置を含むようにネットワーク１２０をスケーリングできる。発行者装置及び購読者装置は、プロセッサにより制御される如何なる装置として実現してもよく、これらの装置としては、以下に限定されるものではないが、例えば、サーバ、パーソナルコンピュータ、ノートブックコンピュータ、携帯情報端末、電話、携帯電話、ページャ、又はこの他の機器が含まれる。インテリジェントルータを含むネットワーク１２０は、有線機器、無線機器又はその両方を接続する如何なる有線又は無線の分散型ネットワークであってもよい。また、ネットワーク１２０としては、潜在的に既存の又は従来のネットワークインフラストラクチャを用いることができる。
【００３８】
図６は、インテリジェントルータのためのチャンネルマネージャ１５０の構成を示している。この実施例では、チャンネルマネージャ１５０は、複数のサーバ１５２、１５４、１５６によって実現されている。各サーバは、それぞれローカルのストレージ装置１５８、１６０、１６２を備えている。インテリジェントルータ１６４、１６６、１６８は、チャンネルマネージャから特定のチャンネルに関する情報を得る。また、チャンネルマネージャは、データ持続（data persistence）、障害迂回機能（fail over functions）及び他の機能を提供することができる。これにより、チャンネル管理プログラムは、ネットワークの任意の場所において、例えばチャンネル関連情報、データ持続のためのプロパティ、発行者及び購読者のためのユーザ情報、インフラストラクチャ情報等を特定するデータベース又はデータベースの組を含むチャンネルサービスを提供するインフラストラクチャ情報は、例えばインテリジェントルータ及びこれらを接続するトンネルの識別情報、チャンネルのサブジェクト、チャンネルの属性（各属性の名称と種類）等を含むことができる。また、パケット又はメッセージは、固定的な属性及び可変の属性の識別情報を含むチャンネル関連情報を伝送することができる。
【００３９】
ユーザは、オンライン状態で、チャンネル情報をダウンロードすることができる。例えば、ユーザは、ユーザ名とパスワードを用いて、自らを登録することができる。ユーザのログオンが認証されると、ユーザは、チャンネルを開き（呼び出し）、チャンネルマネージャからチャンネルに関する情報を検索できる。発行者は、コンテンツを発行する際にこの情報を用いることができ、購読者は、購読予約を入力及び登録する際にこの情報を用いることができる。
【００４０】
この実施例では、各チャンネルマネージャ１５２、１５４、１５６は、各インテリジェントルータのためのプライマリとして機能する。具体的には、この実施例では、各インテリジェントルータは、２つのインターネットプロトコル（ＩＰ）アドレスを有しており、一方のＩＰアドレスは、プライマリチャンネルマネージャ用であり、他方のＩＰアドレスは、バックアップチャンネルマネージャ用である。インテリジェントルータは、チャンネルマネージャと通信し、チャンネル情報を検索するためにこれらのＩＰアドレスを用いる。プライマリチャンネルマネージャに障害が発生すると、インテリジェントルータは、バックアップチャンネルマネージャと通信を行うことができる。これにより、チャンネルマネージャ１５２、１５４、１５６は、これらを繋ぐ線によって示すように、チャンネルプロパティ及び他の情報に関するデータを共有する。また、各チャンネルマネージャは、指定されたバックアップチャンネルマネージャを有し、チャンネルマネージャの動作に障害が生じた場合、他のバックアップチャンネルマネージャに処理を引き継がせることができる。ネットワーク内の機器は、コマンドを用いて、例えばチャンネル情報を検索することができ、表３は、この情報の具体例を示している。これに代えて、インテリジェントルータは、プライマリチャンネルマネージャのみを備えていてもよく、或いは３つ以上のチャンネルマネージャを備えていてもよい。
【００４１】
図７は、インテリジェントルータを有するネットワークに接続するためのユーザ装置又は機器におけるソフトウェアコンポーネントのスタック１８０の具体例を示している。ユーザ装置は、発行者、購読者又はこれらの両方として用いることができ、ユーザ装置は、具体例として先に例示した様々な機器を含むことができる。スタック１８０は、１つ以上のユーザアプリケーション１８２を含むことができ、ユーザアプリケーション１８２は、ユーザからの購読予約の受信、発行者からのチャンネル情報の受信又は発行すべきコンテンツ又はデータの受信に用いることができる。また、ユーザアプリケーション１８２は、ユーザ装置又は機器によって実行される他の如何なる種類のアプリケーションを含んでいてもよい。
【００４２】
またスタック１８０は、エージェント１８４、イベントライブラリ１８６、キャッシュライブラリ１８８、チャンネルライブラリ１９０、メッセージングライブラリ１９２、ディスパッチャライブラリ１９４を含んでいてもよい。エージェント１８４は、ネットワーク接続の確立又はこの他の機能を提供し、表３は、エージェント１８４によって実現されるコマンドの具体例を示しており、これらは、プロキシコマンド又は他の種類のコマンドとして用いることができる。イベントライブラリ１８６は、ユーザ装置に関するイベント又はこの他のイベント又は情報のログを記録する。キャッシュライブラリ１８８は、データのローカルなキャッシング機能を提供する。チャンネルライブラリ１９０は、チャンネルの識別情報と、そのチャンネルに関する情報とを保存する。ディスパッチャライブラリ１９４は、制御パス１９６、チャンネルマネージャ１９８、１つ以上のインテリジェントルータ２００への接続を提供し、及び表４に例示的に示す機能を含むことができる。メッセージングライブラリ１９２は、データパス２０４への接続を提供する。
【００４３】
Ｃプログラミング言語で書かれたメッセージングＡＰＩの具体例を表５〜表９に示す。表５及び表６は、メッセージの送信及び検索のためのＡＰＩの具体例を示している。表７及び表８は、通知の送信及び検索のためのＡＰＩの具体例を示している。表９は、制御メッセージの送信及び検索のためのＡＰＩの具体例を示している。ここに示す特定の機能又は特徴を実現するＡＰＩ及び他のＡＰＩ、プログラム及びデータ構造は、例示的に示しているに過ぎず、これらの機能は、如何なるプログラミング言語で書かれた如何なる種類のＡＰＩ又はこの他のソフトウェアエンティティとして実現してもよい。
【００４４】
【表３】
2005521950.tif 000005
【００４５】
【表４】
2005521950.tif 000006
【００４６】
【表５】
2005521950.tif 000007
【００４７】
【表６】
2005521950.tif 000008
【００４８】
【表７】
2005521950.tif 000009
【００４９】
【表８】
2005521950.tif 000010
【００５０】
【表９】
2005521950.tif 000011
【００５１】
図８は、上述したようなインテリジェントルータ及び図４に示すインテリジェントルータ９２等のインテリジェントルータのための例示的なソフトウェアコンポーネント２１０を示している。ソフトウェアコンポーネント２１０は、例えば、メモリ９４に格納され、インテリジェントルータ９２のプロセッサ９３によって実行することができる。コンポーネント２１０は、例えばフィルタリングデーモン２１２、ディスパッチャ２１４、ルーティングデーモン２１６、キャッシュマネージャ２１８を備える。フィルタリングデーモン２１２は、後述するように、購読予約のためのコンテンツを処理するための、コンテンツベースのルーティングにおけるルーティング規則に基づくフィルタリング機能を提供する。ディスパッチャ２１４は、パス２２０を介してフィルタを伝播するために必要である制御メッセージの通信を担い、また、ディスパッチャ２１４は、ユーザのためのエントリの単一のポイント及びチャンネルマネージャを有する１個の安全なソケットを提供し、ネットワークのセキュリティを向上させる。換言すればこの具体例では、ユーザは、チャンネルマネージャと直接通信を行うことがない。但し、変形例として、ユーザは、チャンネルマネージャと直接通信を行ってもよい。ディスパッチャ２１４は、制御メッセージを用いて、チャンネルマネージャから属性（名称−値の組）を得る。
【００５２】
ルーティングデーモン２１６は、図４に示すような従来のバックボーンルータ又は他のルーティング機器を介して行われるデータパス２２２を経由する通信機能を提供する。キャッシュマネージャ２１８は、対応するインテリジェントルータを含むネットワークノードにおけるデータのローカルなキャッシング機能を提供する。キャッシュマネージャ２１８の動作は、後に詳細に説明するが、キャッシュマネージャ２１８は、ネットワークコアを介したデータの分散型キャッシング機能を提供する。
【００５３】
コンテンツベースのルーティングは、アプリケーションレベルではなく、カーネルレベルで実現してもよい。カーネルによってアクセス可能なメモリは、アプリケーション層におけるメモリから独立している。アプリケーションにおいて、コンテンツベースのルーティングを実行するためには、例えば、メッセージデータをカーネル記憶領域からアプリケーション領域にコピーし、アプリケーションのコンテキストをカーネルのコンテキストから、ルーティングアプリケーションのコンテキストに切り換える必要がある。これらの処理は、いずれもかなりのオーバーヘッドを引き起こす。ここで、コンテンツベースのルーティングをサポートするようにカーネルを変更すれば、上述したオーバヘッドが取り除かれ、ルーティングをより高速に行うことができるようになる。
【００５４】
このようなカーネルにおけるコンテンツベースのルーティング機能により、ルーティングデーモン２１６は、具体例に応じて、データパス２２２を介してデータを直接又は間接的に送信又は受信することができる。デーモンは、アプリケーション層において実行され、カーネルに挿入すべきコンテンツベースのルーティングテーブルを予め算出する処理である。但し、カーネルは、ルーティングテーブルが挿入された後は、ルーティングテーブルを用いて経路決定を行うことができる。同様に、フィルタリングデーモンは、フィルタリングテーブルを予め算出し、算出したフィルタリングテーブルをカーネルに挿入する。この具体例におけるカーネルでは、ルーティングデーモンもフィルタリングデーモンもデータパスとは直接インタラクトしない。
【００５５】
図９は、購読予約のコンテンツを含むことができるメッセージのためのパケット構造２３０の具体例を示している。コンテンツベースのルーティングに用いられるパケット又はメッセージは、例えば、ヘッダセクションとペイロードセクションを含んでいる。ヘッダセクションは、ルーティング又は他の情報を特定する。ペイロードセクションは、データ又はコンテンツを特定し、又は、データ又はコンテンツを指示する。パケット構造２３０は、ＩＰヘッダ２３２、ユーザデータグラムプロトコル（User Datagram Protocol：以下、ＵＤＰという。）伝送制御プロトコル（Transmission Control Protocol：以下、ＴＣＰという。）ヘッダ２３４、レングス値２３８、１つ以上のサブジェクトフィールド２４０及び１つ以上の属性２４２を含んでいる。パケット構造２３０は、レングス値、サブジェクト及び属性のための基本構造を示している。また、コンテンツベースのルーティングで用いられるパケットは、例えば、後述する図１８の実施例に示すように、他の又は異なる要素を含むことができ、コンテンツベースのルーティングのためのパケットは、如何なる手法で構成してもよい。また、属性は、例えば、メッセージの最後に追加される任意の属性を含むことができる。これらの任意の属性は、例えば発行者（又はルータ）によって追加される臨時の情報であり、必ずしもチャンネルについて定められているメッセージフォーマットを用いて伝送する必要はない情報である。
【００５６】
発行者と購読者における処理（Publisher and Subscriber Methodologies ）
図１０は、発行者によって、チャンネルをセットアップし、コンテンツを発行するための例示的な発行処理２５０のフローチャートである。処理２５０は、例えば、発行者装置１００におけるプロセッサ１１４によって実行されるエージェント１０６を含むソフトウェアモジュールによって実現することができる。処理２５０において、発行者装置のエージェント１０６は、発行者が作成したチャンネルのプロキシを受け取る（ステップ２５２）。プロキシは、ネットワークとの通信に用いられる。エージェント１０６は、インタフェースを介してチャンネルにおいて用いるメッセージフォーマットを判定する（ステップ２５３）。フォーマット情報は、例えば、チャンネルマネージャ又はネットワークにおける他のエンティティから得ることができる。エージェント１０６は、受け取ったチャンネル情報を用いてチャンネルのプロキシをセットアップし（ステップ２５４）、この処理は、チャンネルの属性を受け取るステップ（ステップ２５６）と、チャンネルへの通知を作成するステップ（ステップ２５８）とを含む。この通知は、チャンネル上でコンテンツを「待機（listening）」している機器にコンテンツを提供する。属性は、通知のパラメータ及び特性を定義する。
【００５７】
エージェント１０６は、ネットワークコアにおいて又は他の場所において、購読予約を処理するためにチャンネル及びコンテンツ情報の識別子（ＩＤ）をインテリジェントルータに送信する（ステップ２６０）。発行者は、通知属性に適切な値を設定し（ステップ２６１）、これにより、発行者は、チャンネル属性に基づいて、通知に関するコンテンツを発行できる（ステップ２６２）。この実施例におけるステップ２６０〜２６２により、通知の発行が完了する。この処理は、実際の個々の実施例に応じて、この他の又は更なるステップを含んでいてもよい。ここで、この実施例における通知に関連する情報は、所定の順序に基づく一連の属性に区切られ、各属性は、名称と、通知内の位置（１から始まる）と、種類と、値とを有する。これに代えて、属性は、個々の実施例に応じて、異なる特徴を有していてもよい。例えば、属性は、予め定められた属性、任意の属性又はこれらの両方を含むことができる。
【００５８】
インテリジェントルータは、パケット内のチャンネルＩＤに基づいて、対応するチャンネルの属性を知ることができ、この属性により、チャンネルを介して送信されるパケットの構造又はフォーマットが決定されている。具体的には、各パケットは、例えば、チャンネルＩＤ及び発行者ＩＤやサブジェクト等の他のヘッダ情報に関連するタグを含むことができる。このタグは、例えば図１８に具体例を示すように、サブジェクトをメッセージフォーマットの番号にマッピングするために用いることができる。この番号には、小さい整数値、例えば、１６ビット値を用いることができる。これに代えて、他の如何なる種類の番号又は情報を用いてサブジェクトをマッピングしてもよい。サブジェクトを番号にマッピングすることにより、例えば次のような利点が得られる。すなわち、これにより、メッセージフォーマットにおける空間を節約でき、メッセージにおいてサブジェクトを指定するための均一又は標準化された手法を提供でき、これにより、サブジェクトを速やかに特定し、識別できるようになる。インテリジェントルータは、マッピングをローカルに保存してもよく、これに代えて、番号を用いて、コマンドにより、リモートから対応するサブジェクトを入手してもよい。
【００５９】
表１０は、サブジェクトを番号にマッピングするための構造を示しており、この具体例では、番号に整数値を用いている。表１０におけるサブジェクトツリーパラメータは、サブジェクトが階層関係内に１つ以上のサブジェクトフィールドを含むことができることを示しており、例えばサブジェクトツリーは、特定のシンボルによって仕切られる一連のサブジェクトフィールドを含むことができる。サブジェクトツリーの具体例は、表２に示されている。例えば、サブジェクトツリーｑｕｏｔｅｓ．ｎｙｓｅは、サブジェクト「ｑｕｏｔｅ」とサブフィールド「ｎｙｓｅ」を含んでおり、これらの２つの項は、ＵＲＬ又は他のネットワークアドレスと同様に、「．」（ピリオド）によって区切られている。ピリオド及びＵＲＬ型の文字列を用いる代わりに、如何なる文字及び区切りのためのシンボルを用いて、如何なる手法でサブジェクトツリーを特定してもよい。
【００６０】
【表１０】
2005521950.tif 000012
【００６１】
特定のチャンネルのパケットフォーマット又は構造を知ることにより、インテリジェントルータは、パケット内におけるサブジェクトと属性又はコンテンツベースのルーティングのための他の情報の位置を速やかに特定することができる。例えば、チャンネルは、パケット内のバイトを数えることによって、チャンネルを介して伝送されたサブジェクト及び属性のバイト位置を容易に特定できる。これに代えて、インテリジェントルータは、パケットを解析してサブジェクト及び属性又は他の情報の位置を検出することもできる。表１１は、Ｃ＋＋プログラミング言語で書かれた発行者プログラムの具体例を示している。表１２は、チャンネルを作成するためのＡＰＩの具体例を示している。表１３は、チャンネルマネージャによって維持されるチャンネル設定ファイルの具体例と（図６参照）、チャンネル関連情報を示している。これに代えて、システムは、処理負荷を分散させるために、ローカルチャンネルマネージャとして機能する地理的に分散しているサーバのＩＰアドレスを提供する包括的チャンネルマネージャを備えていてもよい。
【００６２】
【表１１】
2005521950.tif 000013
【００６３】
【表１２】
2005521950.tif 000014
【００６４】
【表１３】
2005521950.tif 000015
【００６５】
図１１は、購読予約の受信及び処理のための購読処理２６４のフローチャートである。処理２６４は、例えば、購読者装置１２２におけるプロセッサ１３４によって実行されるエージェント１２８を含むソフトウェアモジュールによって実現することができる。処理２６４において、例えば、グラフィカルユーザインタフェース（graphical user interface；以下、ＧＵＩという。）は、利用可能なチャンネルを示す情報をユーザに表示する（ステップ２６６）。この処理は、アプリケーション１２６によって実現される。チャンネルを特定する情報は、例えば、チャンネル関連の情報を提供するチャンネルマネージャから受け取ることができる。如何なる種類のアプリケーション１２６を用いて、如何なる特定の手法又はフォーマットに基づいて、チャンネルを示す情報を表示してもよい。アプリケーションは、ユーザが選択したチャンネルを受信し（ステップ２６８）、選択されたチャンネルのためのＡＰＩ又は他のプログラムを呼び出す（ステップ２７０）。ＡＰＩは、選択されたオプションに対するチャンネルの購読予約オプションをユーザに表示する（ステップ２７２）。ＡＰＩは、購読予約に関する値をユーザから値を受け取り（ステップ２７４）、後述する処理のために、エージェント１２８に購読予約を供給する（ステップ２７６）。
【００６６】
購読予約のためのパラメータは、例えば表１に示すような述語を含むことができる。各チャンネルは、例えば、対応するチャンネルに関する特定の要求又はパラメータに従って購読予約を処理するために自らのＡＰＩを用いることができる。これらのＡＰＩは、例えば、購読予約を受け取るためのウェブベースの又はＪａｖａベースのＡＰＩを含んでいてもよく、如何なる種類のユーザインタフェース及び処理を用いて購読予約に関する情報を受け取り、この情報をエージェントアプリケーションに転送してもよい。
【００６７】
図１２は、チャンネル及び購読者画面又はＧＵＩ２７８、２８４を概念的に示す図であり、これらは、購読予約を受け取るための処理２６４に関連して用いられる。画面２７８は、ユーザによって選択される利用可能なチャンネルを示す複数のセクション２８２を含んでいる。特定のチャンネルが選択されると、画面２８４に示すように、購読予約のためのユーザの値を受け取るためのセクション２８６が表示される。ユーザがセクション２８８を選択すると、購読予約が確定し、又は、ユーザがセクション２９０を選択すると、購読予約が中止される。例えば、画面２７８、２８４は、ハイパーテキストマークアップランゲージ（HyperText Markup Language：以下、ＨＴＭＬという。）ウェブページとしてフォーマットしてもよく、又は他の如何なる他のフォーマットを用いてもよい。また、画面は、セクションとコンテンツの如何なる構成を含んでいてもよく、可能であれば、必要に応じて、例えばテキスト、図形、ピクチャ、様々な色又はマルチメディア情報を含み、購読者のために、ユーザフレンドリで視覚的に魅力的なインタフェースを提供する。また、画面は、例えば、従来と同様のブラウザ機能を提供するツールバー２８０を含んでいてもよい。
【００６８】
表１４は、Ｃ＋＋プログラミング言語で書かれた購読者プログラムの具体例を示している。
【００６９】
【表１４Ａ】
2005521950.tif 000016
【００７０】
【表１４Ｂ】
2005521950.tif 000017
【００７１】
ペイロード検査及びチャンネルを介したコンテンツベースのルーティング
図１３は、コンテンツベースのルーティングのためのペイロード検査処理３００のフローチャートである。処理３００は、例えば、フィルタリングデーモン２１２として表される、インテリジェントルータ９２におけるプロセッサ９３によって実行されるソフトウェアモジュールにおいて実現される。これに代えて、この処理をＡＳＩＣで実現してもよく、或いはハードウェアとソフトウェアの組合せによって実現してもよい。処理３００として示すコンテンツベースのルーティングは、例えば、ネットワークコアやエッジルータ等ネットワーク内の任意の部分におけるインテリジェントルータにおいて実行できる。
【００７２】
包括的に言えば、コンテンツベースのルーティングは、パケットをどのように処理するかを決定するためにパケットのペイロードセクションを検査する処理を含む。このコンテンツベースのルーティング処理は、例えば、購読予約のリストを任意の順序で（例えば、フィルタを用いて）処理し、ルーティング規則に基づいて、メッセージをサブジェクト毎及び属性毎に比較し、メッセージのルーティングを決定し、ネットワークコアにおける処理を実行するステップを有する。この規則は、ルータにおける処理を支配する規則又はフィルタに関連する如何なる規則を含んでいてもよい。これにより、ネットワークコア内にこれらの経路決定を伝えることができる。サブジェクトをチャンネルとして表すことにより、メッセージフォーマットが決定され、これにより、インテリジェントルータは、例えば、特定のチャンネルのメッセージ又はパケットにおいて、属性のバイト位置を知ることによって、メッセージにおける属性の位置を速やかに検出できるようになる。
【００７３】
処理３００において、インテリジェントルータ９２は、メッセージに関するパケットを受け取る（ステップ３０２）。インテリジェントルータ９２は、パケットから、対応するメッセージのチャンネルＩＤを判定し（ステップ３０４）、チャンネルＩＤを用いて、チャンネルの属性を読み出す（ステップ３０６）。この実施例では、チャンネル（チャンネルＩＤから判定される。）の種類は、パケットにおける属性の位置とデータタイプを決定する。チャンネルの属性は、ローカルに保存してもよく、例えばチャンネルマネージャを介してリモートから読み出してもよい。インテリジェントルータ９２は、購読予約に対応するフィルタを検索する（ステップ３０８）。フィルタは、１つ以上の属性検査、多くの場合、購読予約のための属性検査のグループを含んでいる。インテリジェントルータ９２は、フィルタ記述内の対応する属性検査をパケット内の属性に適用する（ステップ３１０）。
【００７４】
フィルタ記述における全ての属性検査の結果が肯定的である場合（ステップ３１２）、すなわち、属性が全ての属性検査の条件を満たしていれば、インテリジェントルータ９２は、フィルタに関連する規則によって予め定められている一組の処理を実行する（ステップ３１４）。これらの処理としては、例えば、次のリンクにパケットをルーティングする処理及び／又は規則に基づき、ローカルルータにおいて、パケットのコンテンツに対して何らかの操作又は演算を実行する処理等が含まれる。この操作又は次のリンクは、例えば、対応する購読予約を指定するデータ構造において特定される。規則がリンクである場合、規則は、通常、パケットを受け取るための次のネットワークノードを指定し、このネットワークノードとしては、インテリジェントルータ、バックボーンルータ、ネットワークに接続された機器又は他のエンティティが含まれる。これに代えて、この他の手法で、次のリンクを特定し又は購読予約に関連付けてもよい。
【００７５】
フィルタ記述における全ての属性検査の結果が肯定的ではなかった場合（ステップ３１２）、すなわち、属性が全ての属性検査の条件を満たしていなければ、フィルタの不一致が宣言される（ステップ３１５）。インテリジェントルータは、フィルタ記述における全ての属性検査が完了するまで又は、最初の否定的結果が得られるまで上述した処理を繰り返し、この２つの条件のいずれかが満たされると処理を終了する。
【００７６】
インテリジェントルータは、このフィルタについて、全ての属性検査を行った後、更なるフィルタが存在するか否かを判定し（ステップ３１６）、更なるフィルタが存在する場合、処理は、ステップ３０８に戻り、次のフィルタに関する属性検査が読み出され、そのフィルタに関する検査を実行する。照合処理（ステップ３０８、３１０、３１２、３１４、３１５、３１６）は、フィルタの組全体に対する処理が完了するまで、又は全ての規則に関する判定が得られるまで続けられ、この２つの条件のいずれかが満たされると終了する。パケットがフィルタの条件を満たさない場合、そのフィルタは除外（削除）され、転送されない。
【００７７】
インテリジェントルータ９２は、如何なる特定の順序でフィルタを用いた一連の処理を行ってもよい。例えば表１５に示すように、インテリジェントルータ９２は、ファイル又はルーティングテーブル内に購読予約のためのフィルタを保存でき、これらを順次読み出して、属性にフィルタを適用する（属性検査を行う）ことができる。これに代えて、ルーティングテーブルは、フィルタへのリンク又はポインタを含んでいてもよい。
【００７８】
コンテンツベースのルーティングでは、アプリケーション及び例えばトラヒック条件に基づくアルゴリズムの切換等性能向上ヒューリスティックスに基づいて、任意に２つ以上の手法を同時に用いてもよい。コンテンツベースのルーティングに関するペイロードセクションの検査において用いるために、処理に用いるフィルタは、ネットワーク内のルータにおいて任意に暗号化し、復号し、変形し、併合してもよい。例えば、アプリケーションにおける発行情報が小数点以下２桁より小さい通貨情報を含まない場合、＞３．５４１２２ドルの購読情報の端数を丸めて＞３．５４ドルにしてもよい。また、海外からの発行情報が米国内に存在する最初のルータに到達した時点で、外国通貨を米国の通貨に換算してもよい。
【００７９】
インテリジェントルータ９２は、線形的な手法に代えて、処理の速度と効率を向上させることができる他の順序で又は様々なアルゴリズムに基づいて、処理に用いるフィルタを選択してもよい。表１６は、購読予約と対応するリンクの具体例を示す。これらの具体例において、サブジェクトは、特定のチャンネルに関連し、サブジェクトに関する購読予約は、フィルタに関するルーティング規則によって表すことができる。サブジェクトは、例えば、ユニフォームリソースロケータ（Uniform Resource Locator：ＵＲＬ）等、コンテンツのソースを特定するためのネットワークアドレスを含むことができる。
【００８０】
【表１５】
2005521950.tif 000018
【００８１】
【表１６】
2005521950.tif 000019
【００８２】
図１４は、キャッシング処理３２０のフローチャートである。処理３２０は、例えば、キャッシュマネージャ２１８として表される、インテリジェントルータ９２におけるプロセッサ９３によって実行されるソフトウェアモジュールにおいて実現される。これに代えて、この処理をＡＳＩＣで実現してもよく、或いはハードウェアとソフトウェアの組合せによって実現してもよい。これらは、対応するインテリジェントルータと同じ物理機器であっても異なる物理機器であってもよい。処理３２０において、インテリジェントルータ９２は、データ又はコンテンツと、チャンネルＩＤと、サブジェクトとを含むメッセージを受け取る（ステップ３２２）。インテリジェントルータ９２は、データに時刻を表すマークを付し（ステップ３２４）、メモリ９４や補助記憶装置９７等のローカルメモリにキャッシングする（ステップ３２６）。インテリジェントルータ９２は、キャッシングされたデータにチャンネルＩＤ、サブジェクト及びタイムスタンプによりインデクスを付す（ステップ３２８）。
【００８３】
インテリジェントルータ９２がデータの要求を受け取った場合、（ステップ３３０）インテリジェントルータ９２は、その要求に基づき、インデクスを用いて、キャッシングされたデータを検索する（ステップ３３２）。インテリジェントルータ９２は、バックボーンルータ９５又は他のルーティングエンティティにキャッシングされたデータを転送し、このデータは最終的に要求者又は他のエンティティに送信される。処理３２０は、継続的にデータをキャッシングし、キャッシングされたデータを要求に応じて検索できるように、繰り返し実行してもよい。
【００８４】
図１５は、処理３２０に用いられるキャッシュインデクス（３３６）の具体例を示している。キャッシュインデクス（３３６）は、データ（３３８）を受け取り、これをタイムスタンプ（３４０）とともに保存する。データを収集する際、各データにはΔｔの各期間毎にマークが付される。ここで、Δｔは、マーク間の時間、例えばｔ２〜ｔ１間の期間を表す。時刻を表すマークのために他の如何なる種類のインデクスを用いてもよい。
【００８５】
表１７は、キャッシングされたデータに用いられるインデクスを概念的に示している。表１８は、キャッシングのための接続履歴を保存するためのデータを概念的に示している。表１９は、インテリジェントルータを有するネットワークノードにおいて、ローカルにキャッシングされるデータに用いられるデータ構造の具体例を示している。
【００８６】
時刻を表すマークの付与は、固定された如何なる間隔で行ってもよく、可変の時間間隔で行ってもよい。例えば、データを５分毎にキャッシングしてインデクスを付してもよい。チャンネルマネージャ２１８は、時刻及びサブジェクトを指定した、キャッシングされたデータを読み出すコマンドを受け取ると（例えば、＃．ｇｅｔＣａｃｈｅ）キャッシュインデクスを用いて、ステップ３３２における要求に対応するキャッシングされたデータを読み出すことができるか否かを判定する。
【００８７】
各サブジェクト又はチャンネルは、例えば、マルチキャストツリーにおけるそれ自身のＩＰアドレスと、１組のインテリジェントルータとを含むことができる。表１８は、ユーザ装置にローカルに保存することができるこのようなルータ間の接続履歴を示している。エッジルータに障害が発生した場合、装置は、接続履歴にアクセスし、エッジルータがオンラインに戻った際にチャンネルのアップストリームのルータにどのように再接続できるかを調べる。また、装置は、自らが接続されていなかった期間について、キャッシュデータを取得するためのコマンド（get cache command）を実行して、購読予約に関するペンディング中のコンテンツを得ることができる。
【００８８】
【表１７】
2005521950.tif 000020
【００８９】
【表１８】
2005521950.tif 000021
【００９０】
【表１９Ａ】
2005521950.tif 000022
【００９１】
【表１９Ｂ】
2005521950.tif 000023
【００９２】
これらの例示的なデータ構造は、以下の情報を含んでいる。サブジェクトノードは、サブジェクト識別子と、サブジェクトレベルと、親チャンネル又はサブジェクトノードへのポインタと、自らのディレクトリのためのファイル記述子と、次のレベルのサブジェクトノードを含むハッシュテーブルへのポインタと、データノードへのポインタとを含んでいる。データノードは、サブジェクト親ノードへのポインタと、データディレクトリのためのファイル記述子と、各ストレージデバイスに保存されたデータのためのデータ構造を含む循環型のバッファと、バッファのヘッド及びテールと、読出及びストレージの間にデータノードをロックするためのロックとを含んでいる。保存されたタイムグレインノード（time grain node）は、実際のデータファイルを表すノードであり、最後のグレインノードは、ストレージデバイスにはまだ保存されていないがメモリに保持されているバッファを表す。この実施例におけるキャッシング及びデータ格納スレッドは、最後のタイムグレインノードのミューテックスを用いて、最後のタイムグレインノードが同時にアクセスされることを防いでいる。
【００９３】
エージェントにおける処理
図１６は、送信される購読予約メッセージのためのエージェント処理３５０のフローチャートである。処理３５０は、例えば、ユーザ（購読者）装置１２２におけるプロセッサ１３４によって実行されるエージェント１２８を含むソフトウェアモジュールによって実現することができる。処理３５０において、エージェント１２８は、例えば、図１１及び図１２を用いて上述した処理（ステップ３５２）によって生成された購読予約を受け取る。エージェント１２８は、購読予約のための論理式を特定するストリングを作成し（ステップ３５４）、ストリングを解析して、購読予約におけるエラーを検出する（ステップ３５６）。エラーが存在している場合、エージェント１２８は、ユーザにエラーメッセージを示し（ステップ３６０）、ユーザがエラーを修正し、購読予約を再入力するように促す。購読予約がエラーを全く含んでいない場合（ステップ３５８）、エージェント１２８は、後述するように、データ構造内の表現を保存する（ステップ３６２）。エージェント１２８は、データ構造に含まれる不等価演算子を正の形式に変換し（ステップ３６４）、更にデータ構造を対応する選言標準形（disjunctive normal form：以下、ＤＮＦという。）に変換する（ステップ３６６）。また、エージェント１２８は、範囲フィルタ及びメンバーシップ検査のみが含まれるように、ＤＮＦ構造のＡＮＤ式を簡約する（ステップ３６８）。
【００９４】
ＤＮＦは、論理式が１つ以上の部分式のＯＲ（選言と呼ばれる）として表され、各部分式が１つ以上の属性検査のＡＮＤで表されるよく知られている標準形である。例えば、論理式（price >= 10 AND (symbol ="LU" OR symbol ="T")）に同等なＤＮＦ表現は、（(price >= 10 AND symbol ="LU") OR (price >= 10 AND SYMBOL ="T")）である。
【００９５】
ステップ３６４における変換は、「不等価」演算子（例示的な構文では、！＝と表す。）を有する表現を、許可されていない１つの値に代えて、許可されている全ての値を特定する同等な「正」の形式に変換する処理を含む。この実施例に用いるルータは、正の形式の式を要求するため、この変換は、ＤＮＦを生成する前に行われる。例えば、表現（price != 80）は、同等な正の表現（price<= 79 OR price >=81）に変換される。
【００９６】
ステップ３６８における変換は、ＤＮＦが作成された後に実行され、ここで生成されたＡＮＤ式を更に簡約する処理を含み、これにより、この実施例におけるルータの処理が簡約される。具体的には、特に、同じ属性に関する複数の属性検査のＡＮＤは、１つの下限、１つの上限、下限及び上限の両方及び等価検査の場合、単一の値のいずれかを含む正準な「範囲フィルタ」に簡約できる。特定の種類の範囲フィルタは、例えば表２２に基づいて符号化される。
【００９７】
例えば、表現（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）は、表現を満足させる「ｐｒｉｃｅ」の値がないので、偽に簡約することができる。フィルタ表現全体が偽に簡約される特別な場合、エージェントは、メッセージを作成する必要がなく、これによりルータを不要な作業から解放することができる。
【００９８】
サブジェクトフィルタがワイルドカードを含んでいる場合、エージェント１２８は、後述するように、それらを任意に変換することができる（ステップ３７０）。これに代えて、如何なるワイルドカードもユーザ装置又は他の機器ではなく、ネットワークにおいて変換してもよい。この例示的な実施例では、サブジェクトフィルタのための構文は、ワイルドカードを用いる唯一の構文であり、属性フィルタのための構文は、論理式を用いる唯一の構文である。これに代えて、サブジェクトフィルタと属性フィルタについて、異なる又は可変の種類の構文を用いてもよい。
【００９９】
エージェント１２８は、生成されたＤＮＦ表現をメッセージに符号化し（ステップ３７２）、メッセージをインテリジェントルータに転送する（ステップ３７４）。この符号化は、購読予約のフラットなメッセージフォーマットへの変換処理を含み、これは、フラットなメッセージフォーマットとは、データのストリングから構成されるフォーマットを意味する。また、この転送の処理は、購読予約に関してサブジェクトフィルタと属性フィルタによって生成されたルーティング規則をネットワークにおける１つ以上のインテリジェントルータ又は他のルーティングエンティティに伝播させる処理を含む。この伝播のために、例えば、購読予約の表現を従来のパケット構造にマッピングすることができる。
【０１００】
ステップ３７２における符号化は、チャンネルを介した伝播のために、チャンネルに対応する購読予約をメッセージングＡＰＩのメッセージングフォーマットに変換する処理を含む。例えば、購読予約は、サブジェクト＃．ＳＵＢＳＣＲＩＰＴＩＯＮを含む通知として内部的にメッセージングされる。任意の個数のサブジェクトフィルタフィールドと任意の個数の属性検査の両方があるので、この実施例では、１組のバイトを用いてサブジェクトフィルタフィールドの個数を保存し、もう１組のバイトを用いて属性検査の個数を保存する。サブジェクトフィルタの個々のフィールドは、例えば元の購読予約で指定された順序に並べ替えられ、それぞれメッセージの２バイトの部分に格納される。ワイルドカードフィールドの整理については後述する。
【０１０１】
属性検査の配列においては、検査のオペランドは、通知における属性値の配置と同様、メッセージの最後に配置される。属性検査とオペランドを配置する前に、これらは、所定の属性に対する位置順の検査と、これに続く任意の属性に対する名称順の検査によって、ＤＮＦの各選言肢内で属性順にソートされる。更に、各選言肢内のスカラ的に評価された属性に対する関係検査の組は、１つの極限を有する範囲フィルタ（右又は左が開いている範囲又は等価検査）又は、２つの極限（別個の極限の間の閉じられた範囲）として、標準形に簡約される。検査に関する残りの情報は、オペランドと同じ順序で例えば、２つのバイトの対に符号化される。この２つのバイトの対のシーケンスは、メッセージ内において、サブジェクトフィルタフィールドの２バイトの符号化データのシーケンスの直後に配置される。２つのバイトの対は、属性検査のビットストリング符号化データのシーケンスの１つの形式を構成でき、これは、２つのバイトの対とは別に、他の種類の符号化データを表すためにも用いることができる。属性検査の具体例については、後述する。
【０１０２】
表２０は、属性検査の符号化のための手法を示している。表２１は、２つのバイトの対による符号化を示し表２２は、２つのバイトの対における演算子ＩＤの符号化を示している。
【０１０３】
【表２０】
2005521950.tif 000024
【０１０４】
【表２１】
2005521950.tif 000025
【０１０５】
【表２２】
2005521950.tif 000026
【０１０６】
検査のための２つのバイトの対が既に検査のオペランドの両方の種類を示しているので、検査が所定の属性に適用されるか任意の属性に適用されるか否かに関わらず、任意の属性又はそれらの種類に対して実行される複数の検査を個別に整理する必要はない。この手法では、通知における所定の属性の数が１２７個以下であると仮定している。これに代えて、この設計において、より多くのビットを用いて属性検査を符号化してもよい。
【０１０７】
この配列の取り決めでは、属性フィルタのＤＮＦに基づいて、属性検査の順序を決定し及びこれらをグループ化するが、インフラストラクチャ要素（例えば、ルータ）は、属性フィルタの包括的な評価をより効率的に行うために、検査を別の順序で（例えば、異なる検査の成功又は失敗の確率に関するローカルデータから動的に導出される順序で）選択して評価してもよい。メッセージの購読予約ＩＤフィールドは、後続する要求において、エージェントのエッジルータへの購読予約を固有に識別し、購読予約を変更又は取り消すためにエージェントによって生成される値である。具体的には、購読予約の属性フィルタへの動的な変更は、サブジェクトが＃．ＲＥＳＵＢＳＣＲＩＰＴＩＯＮである点及び購読予約ＩＤが事前に登録され、現在変更されている購読予約のＩＤである点を除いて、図１８の実施例に示されるメッセージフォーマットを用いて伝播される。購読停止（unsubscription）は、例えば、サブジェクトを＃．ＵＮＳＵＢＳＣＲＩＰＴＩＯＮとし、購読予約ＩＤを先に登録され、購読停止処理が行われている購読予約のＩＤとして、購読予約ＩＤフィールドを介して、図１８に示すメッセージフォーマットを用いて伝播される。
【０１０８】
以下、上述したエージェントによる変換及び符号化の具体例を説明する。まず、次のような属性フィルタ表現の具体例について考察する。すなわち、ｐｒｉｃｅ＞＝１０及び（symbol == "LU" 又は(volume >= 1000且つvolume <= 10000)）。図１９は、ステップ３６２において、表現を保存するためにエージェントによって用いられるオブジェクトを統一モデリング言語（ＵＭＬ）によって表したダイアグラム３９０を示している。このダイアグラム３９０は、変数、定数又はその両方を含むことができる購読予約を特定するための階層関係を示している。ダイアグラム３９０内のオブジェクトは、個々の実施例に応じて、フィルタクラスのインスタンスであってもよい。各ＳｉｍｐｌｅＦｉｌｔｅｒオブジェクトは、フィルタ表現の対応する属性検査に関する情報を保存するために用いられる属性の値を表している。図１９に示す表現では、ＯＲフィルタ３９６は、２つのＡＮＤフィルタ３９２、４００を結合している。ＡＮＤフィルタ３９２は、購読予約のための属性を有するシンプルフィルタ（simple filter）３９４を含んでいる。同様に、ＯＲフィルタ３９６は、シンプルフィルタ３９８を含み、ＡＮＤフィルタ４００は、シンプルフィルタ４０２と４０４を含んでいる。
【０１０９】
この実施例においては、関連するチャンネルの属性として、属性価格（price）、シンボル（symbol）及びボリューム（volume）が予め定義されているとし、これらの属性について、それぞれ位置０、１、２が定義されているものとする。更に、各属性の種類をそれぞれ、符号なし整数（タイプコード６）、文字アレー（タイプコード１２）、符号なし整数（タイプコード６）とする。
【０１１０】
次に、属性フィルタとして上述した属性フィルタ表現を含む購読予約について考察する。図１８は、購読予約をメッセージに配列した具体例を示している。図１８の左側のデータ構造３８６は、実際のメッセージのコンテンツを示しており、図１８の右側のデータ構造３８８は、メッセージの各部分の説明を示している。この図面における各データ構造の幅は、４バイトに対応している。配列を行う前に、フィルタは、（price >= 10 and symbol == "LU"）又は、（price >= 10 and volume >= 1000 and volume <= 10000）のような同等なＤＮＦに変換される。
【０１１１】
１６ビットの属性検査符号化データは、異なる部分を分離するギャップを有するビットシーケンスとして示される。なお、この実施例においては、価格に対する２つの検査は、それぞれ別々の選言肢内に存在するので、結合することができず、したがって、これらは、右側の境界を有さない範囲（右側が開いた範囲）として個別に配列される。一方、ボリュームに対する２つの検査は、同じ選言肢内に存在するので、結合することができ、したがって、これらは、単一の「閉じた範囲」の検査として整理される。
【０１１２】
また、あるフィールドは「仮定（assumed）」として特徴付けられ、これは、この具体例においては、これらのフィールドの値が、任意に選択され、通常、配列された購読予約から独立していることを意味する。更に、購読予約のためのサブジェクトフィルタは、「＞」として任意に選択され、これは、関連するチャンネルによって定義された如何なるサブジェクトにも一致する。上述し、図１８及び図１９に示した具体例は例示的なものであり、この整理は、他の如何なる種類の購読予約とともに用いてもよい。また、処理３５０は、購読予約の整理の一例に過ぎず、購読予約は、他の如何なる方法によって整理してもよい。
【０１１３】
図１７は、送信されてきたメッセージのためのエージェント処理３７６のフローチャートである。処理３７６は、例えばユーザ装置１２２内のエージェント１２８及びアプリケーション１２６によって実現することができる。処理３７６において、エージェント１２８は、インテリジェントルータから購読予約に対応するメッセージを受け取る（ステップ３７８）。１２８エージェントは、例えば、メッセージのチャンネルＩＤによって購読予約に対応するチャンネルを判定し（ステップ３８０）、チャンネルのＡＰＩを呼び出す（ステップ３８２）。ＡＰＩは、ユーザ装置において、購読予約のためのデータをＧＵＩ又は他のフォーマットで表示する（ステップ３８４）。入力メッセージに対する処理としては、上述した符号化処理の逆のデータ復号処理を用いることができ、この復号（逆符号化）は、ルータ又は他のネットワークエンティティにおいて実行することができる。
【０１１４】
ワイルドカード処理
図２０は、ワイルドカード処理４１０のフローチャートである。処理４１０は、フィルタのルーティング規則の組を用いて、ワイルドカードを購読予約のための表現に変換する処理の一例である。処理４１０は、例えば、ユーザ装置１２２内のプロセッサ１３４によって実行されるエージェント１２８によって表されるソフトウェアモジュールとして実現してもよい。これに代えて、ネットワークにおいて、ソフトウェア制御の下で、インテリジェントルータ９２又は対応する機能を有するＡＳＩＣ９１内のプロセッサ９３によりワイルドカードを処理してもよい。ワイルドカードは、開かれたフィールド又は可変長フィールドを含んでおり、表２１はこのようなフィールドの具体例を示している。
【０１１５】
処理４１０において、エージェント１２８又は他のエンティティは、ワイルドカードを含む購読予約を受け取る（ステップ４１２）。購読予約のサブジェクト長は、発行者がコンテンツを発行する際に指定でき、サブジェクトは、発行者装置において前処理してもよく、例えばサブジェクトのフィールドを数え、これによりフィールドカウント（長さ）を算出してもよい。１２８エージェントは、フィルタオペランド内のフィールドの数を数える（ステップ４１４）新たな規則（フィルタ）をフィールド長＝Ｎとして初期化する（ステップ４１６）。エージェント１２８は、購読予約のサブフィールドを読み出し（ステップ４１８）、フィルタオペランドサブフィールド０［ｉ］がワイルドカードであるか否かを判定する（ステップ４２０）。フィルタオペランドサブフィールドがワイルドカードでない場合、エージェント１２８は、連言項（conjunctive clause）を規則に追加し、フィールド［ｉ］＝０［ｉ］とする（ステップ４２２）。フィルタオペランドが更なるサブフィールドを有している場合（ステップ４２４）、エージェント１２８は、ステップ４１８に戻り、この更なるサブフィールドを処理する。パラメータ「ｉ」は、フィールドを表し、ｉは、この実施例においては、フィールド番号を表す整数である。
【０１１６】
サブフィールドを処理した後にエージェント１２８は、最後のフィルタオペランドサブフィールドが「＞」であるか否かを判定し（ステップ４２６）、最後のフィルタオペランドサブフィールドが「＞」である場合、長さの制約条件をフィールド長＞Ｎ−１に変更する（ステップ４２８）。ワイルドカード処理は、如何なる種類のシンボルを用いてもよく「＞」は、その一例に過ぎない。この具体例においては、「ａ．＞」により、ａ．ｂ、ａ．ｃ、ａ．ｄ等及び全てのレベルにおけるこれらの全てのサブサブジェクト（例えば、ａ．ｂ．ｘ、ａ．ｃ．ｘ、ａ．ｂ．ｘ．ｙ等）を表すことができる。また、他のシンボルをワイルドカードとして用いてもよい。
【０１１７】
必要であれば、エージェント１２８は、変形した規則をインテリジェントルータ又はネットワークにおける他のエンティティに伝播する（ステップ４３０）。処理は、全てのサブフィールドについて繰り返され、これにより、ワイルドカードが非ワイルドカード規則に変換される。非ワイルドカード規則とは、ワイルドカードを含まない規則を意味する。ワイルドカードの変換は、ネットワーク内のどこで行ってもよく、例えば、購読者装置又はインテリジェントルータにおいて行ってもよい。したがって、この変換は、変形規則によって１つのエンティティで行い、他のエンティティに伝播させてもよく、又はこの変換を動的に行ってもよい。
【０１１８】
表２３は、ワイルドカードの処理のためのこれらの例示的なルーティング規則の概要をその具体例とともに示している。これらのルーティング規則は、例えば、インテリジェントルータで生成してもよく、又は他のネットワークエンティティで生成し、インテリジェントルータに伝播させてもよい。更に、表２３のルーティング規則は、説明のために例示的に示しているに過ぎず、他のルーティング規則を用いてワイルドカードを変換してもよい。
【０１１９】
【表２３】
2005521950.tif 000027
【０１２０】
信頼性の低いネットワークにおける信頼性が高い発行−購読システム
ここに説明する発行−購読ネットワーク（例えば、図１〜図３に示す。）等の発行−購読ネットワークの主な目的は、購読者に対し効率的且つタイムリーに、購読予約に一致する通知を配信することである。発行−購読ネットワークを実現するためには、ネットワークパケットの形式で発行者から購読者に通知を伝送する必要がある。信頼性の低いネットワークとは、例えば、これらの幾つかのネットワークパケットが伝送中に失われる可能性があるネットワークを含んでいる。この実施例において克服すべき主要な技術的課題は、通知（すなわち，ネットワークパケット）が伝送エラーのために失われたのか、アップストリームのルータにおけるフィルタリングメカニズムによって除外されたのかを判定することである。
【０１２１】
図２１は、発行−購読ネットワークの信頼性を高める処理５２０のフローチャートである。この処理５２０では、信頼性が高い伝送プロトコルを使用している。具体的には、信頼性は、隣接する一対のルータ間で（又はルータとユーザ装置の間で）信頼できる伝達メカニズム（信頼できるトンネル）を用いることによって実現される。ルータが、送信されてきた通知を隣接するルータに転送する必要があると判断した場合、このルータは、信頼できる伝送プロトコル、望ましくはＴＣＰを用いてメッセージを転送する。各ルータは、ダウンストリーム側に隣接するエンティティ（ホップ距離＝１）への通知の配信のみを行う。したがって、発行者から購読者までの信頼できる通知の送達は、ホップバイホップ式に行われる。処理５２０は、ソフトウェア制御の下で、インテリジェントルータ９２又は対応する機能を有するＡＳＩＣ９１内のプロセッサ９３により実行される。また、処理５２０は、例えば、ユーザ装置１００のプロセッサ１１４によって実行されるエージェント１０５によって表されるようなソフトウェアモジュールにより実現してもよい。
【０１２２】
ＴＣＰを用いることにより、ここに説明する発行−購読システムのコンテンツベースのルーティングに信頼できる伝送プロトコルを組み込むことができ、好ましいことが見出された。発行−購読システムにおいて用いることができる他の技術として、前方誤り訂正がある。前方誤り訂正では、複数の通知パケットを受信機に送信し、このうちの１つが良好に受信されることを期待する。これにより、使用される帯域幅を犠牲にして、パケットが受信される確率が高くなるが、配信が確実に保証されるわけではない。第３の技術として、高信頼性マルチキャストがあり、ここでは、一組のマルチキャスト受信機がマルチキャスト送信側から「同じ」パケットの組を受け取ることが約束される。この手法は、異なる受信機が、異なる購読予約に基づいて、異なる通知を受け取る必要があるＣＢＲ発行−購読システムでは用いることができない。
【０１２３】
発行−購読ネットワークにおけるノードは、ネットワークを介して、コンテンツの購読予約を受け取る（ステップ５２２）。発行者から受け取られたコンテンツは、ネットワーク内のノードにおいて、コンテンツに関する通知を受け取ることによって、購読予約に基づくＣＢＲを用いて、ネットワークを介して発行され（ステップ５２４）、この通知を隣接するノードに送信するべきか否かが判定され（ステップ５２６）、この判定に基づいて、信頼できる伝送プロトコルを用いて、この通知が隣接するノードに選択的に転送される（ステップ５２８）。これらのステップは、好ましくは、上述したＣＢＲ処理のいずれかに従って実行される。
【０１２４】
ステップ５２８において用いられる信頼できる伝送プロトコルは、好ましくは、ＴＣＰである。ＴＣＰは、ＯＳＩモデルのトランスポート層の通信規約である。ＴＣＰは、送られたバイトの総量がもう一方の端末において正しく受け取られることを約束する転送機能を提供する。したがって、転送ステップ５２８は、単一のノードから単一のノードに対して実行され、伝送エラーが生じた場合、転送ステップ５２８は、通知の伝送における失敗を示す指示情報を受け取る処理（ステップ５２８１）及びこの指示情報に応じて通知を再送する処理（ステップ５２８２）を含む。このような伝送の失敗を示す情報の要求は、好ましくは、通知のパケット内にカプセル化される。
【０１２５】
通知パケットは、再送する必要が生じた場合に備えて、好ましくは、バッファ内にバッファリングされる。特定の隣接するノードのためのバッファが一杯になった場合、そのノードへのデータの供給を停止してもよく、先入れ先出し式にパケットを削除してもよく、又は、補助記憶装置にパケットを保存してもよい。これに代えて、所定の発行者又は購読者に対してあるサービス品質（ＱｏＳ）が保証されている場合、ＱｏＳに基づいて、バッファからパケットを選択的に削除してもよい（例えば、ＱｏＳによる制約に関係しないパケットから先に削除する）。
【０１２６】
図２１に示すように、隣接しているノードに対して更なるルーティングが必要である場合、隣接しているノードのための処理が繰り返される（ステップ５３０）。このように、処理５２０により、発行者から購読者にホップバイホップ方式で信頼できる通知の送達を実現できる。
【０１２７】
フィルタ伝播
コンテンツベースのルーティング（Content-based routing：ＣＢＲ）は、制約に基づくルーティング（constraint-driven routing）の一種である。上述した発行−購読ネットワーク等ＣＢＲの機能によって性能が向上された発行−購読ネットワーク（例えば、図１〜図３参）では、望ましくは、特定のコンテンツ（すなわち、購読予約）の発行における購読者の興味は、フィルタと呼ばれるエンティティ内にカプセル化される。ネットワークにおけるルータは、好ましくは、フィルタを用いてによって用いられて、経路決定を行う。エッジ又はユーザ端末においてのみ実行できる従来のフィルタリング法とは異なり、ネットワークコアで動作できるこのＣＢＲ法は、これらのフィルタの伝播を伴う。購読者が受け取るパケットのコンテンツに関して制約条件を課す能力を購読者に与える場合、及びこれらのコンテンツ制約条件がパケットをルーティングするためにネットワークのコアで用いられる場合、効率とネットワークの機能性の両方がＣＢＲの恩恵を受ける。
【０１２８】
この実施例では、スケーラビリティが高い幾つかのフィルタ伝播法を提供し、これにより、（１）発行者と購読者の間のデータパスに沿って、コアルータに、コアルータから及び／又はコアルータ間でフィルタを伝播でき、及び（２）必要であれば、ネットワークのエッジだけではなく、ネットワークコア内で、ＣＢＲをアップストリーム側に対して実行することができる。ＣＢＲを（例えば、ネットワークコア内、又は発行者装置までを含む）アップストリーム側に行うことにより、ダウンストリーム側に頻繁にルーティングする必要があるデータパケットの数を大幅に削減することができる。この結果、ネットワークのトラヒック負荷が削減される。
【０１２９】
ここに説明するフィルタ伝搬処理は、如何なる名称及び如何なる形式コンテンツフィルタをネットワークのコアに、コアから及びコア間で伝播する側面も含む。フィルタの伝播は、多くの側面を有し、多くの問題を含んでいる。ここに説明するフィルタ伝播法によって解決すべき重要な課題は、フィルタが伝播ストリームの「上流（up）」、すなわち、膨大な数のフィルタソースから（例えば、購読者）少数のフィルタデスティネーション（例えばコアルータ、エッジルータ又は発行者）に移行する際、多数のフィルタが構築されることを回避することである。この問題は、「累算（accumulation）」問題とも呼ばれ、例えば、ツリー型のトポロジに縦列に接続されたノードから構成されるネットワークに発生する問題である。
【０１３０】
この問題及び他の問題を解決するために設計されたソリューションは、規則、手続き、ポリシ、処理、メカニズム、プロトコル、メッセージフォーマット、データ構造及び／又はアルゴリズムのうちの１つ以上からなる組を含む。これらのソリューションにより、速やかで（例えば、簡素化、併合処理、効率的な整理等による。）、スケーラブルで（例えば、併合処理、概算処理等による。）、動的で（例えば、新規購読予約、購読停止、修復等による。）、安全で（例えば、認証による。）、個人的で（例えば、暗号化による。）、信頼性が高く（例えば、ＴＣＰ接続、信頼できるトンネル、符号化、回復プロトコル等による）、柔軟で（例えば、消極的伝播（後述する）、様々なマルチキャストトポロジ又はプロトコルによる。）、ユーザの要求に適合した（例えば、購読者／発行者振る舞い符号化による。）フィルタ伝播を実現できる。ここに説明する伝播処理は、これらのソリューションを利用して、これらの及びこれらの利点を実現する。
【０１３１】
Ａ．ネットワークトポロジフィルタ伝播ストラテジ
発行−購読システムは、マルチキャスト、同報通信又はモバイル発行−購読ストラテジでによって実現することができる。フィルタ伝播は、ネットワークトポロジに埋め込んでもよく、又は発行者及び購読者をリンクするために選択されているストラテジによって強制されるネットワークトポロジの「上位に」又はネットワークトポロジに加えて実行してもよい。また、これに代えて、フィルタ伝播ストラテジは、フィルタが埋め込まれた購読予約を広告のデスティネーションに直接配信できる発行の広告を含む発行−購読スキーム等の発行者と購読者とをリンクするためのストラテジそのものであってもよい。
【０１３２】
マルチキャストのカテゴリにおいて、フィルタ伝播は、マルチキャストに用いられるプロトコルに一致するプロトコル（例えば、プロトコル独立マルチキャスト−スパースモード（protocol independent multicast-sparse mode：ＰＩＭＳＭ）、プロトコル独立マルチキャスト−デンスモード（protocol independent multicast-dense mode：ＰＩＭＤＭ）、コアベースのツリー（Core-Based Tree：ＣＢＴ）、距離ベクトルマルチキャスト経路選定プロトコル（distance vector multicast routing protocol：ＤＶＭＲＰ）、マルチキャストオープン最短経路ファースト（multicast open shortest path first：ＭＯＳＰＦ）等）を用いることができる。用いられるプロトコルに応じて、フィルタ伝播は、双方向であっても又は単方向であってもよく、多くのフィルタ伝播ストラテジが可能である。ストラテジとしては、１）フィルタが受け取られると、全てのフィルタが全ての可能なアップストリームのリンクに伝播される（積極的伝播スキーム）ストラテジ、２）受け取られた発行者のパケットに応じてフィルタ伝播を開始する（消極的伝播スキーム）ストラテジ、３）発行者による同報通信広告に応じて伝播を行うストラテジ、４）ネットワークトポロジ（例えば、ＭＯＳＰＦ）の算出の後に伝播を行うストラテジ、５）周期的にフィルタ伝播を行う（例えば、フィルタタイムアウトをサポートするシステムにおけるリフレッシュ要求を満たす）ストラテジ、６）ネットワークにおける障害の修復の間にフィルタ再伝播を要求するストラテジ、７）ネットワークの再構築の間にフィルタ再伝播を要求するストラテジ、及び／又は８）これらの組合せがある。ストラテジは、好ましくは、ここに説明するフィルタ伝播法及び規則に従う。
【０１３３】
Ｂ．フィルタ伝播のためのリンク−レベル接続メカニズム
フィルタ伝播処理にかかわるソースとデスティネーションを接続する手法としては様々な手法がある。例えば、フィルタ伝播処理に関わるソースとデスティネーションは、１）ホップバイホップ方式で（例えば、ルータからルータへ）、２）エンドツーエンド方式で（例えば、オフラインデータ検索においてユーザ装置からキャッシュへ）、３）トンネルを用いて、４）伝送制御プロトコル（ＴＣＰ）を用いて、５）ユーザデータグラムプロトコル（ＵＤＰ）（例えば、信頼できるデータ回復メカニズムに代わる）を用いて、６）セキュリティプロトコルを用いて、７）他のプロトコルを用いて、８）ルータ及び／又はユーザ装置のカーネル内のみにおいて、９）ルータ及び／又はユーザ装置において、ユーザレベルの処理だけに関して、１０）ルータ及び／又はユーザ装置においてカーネルとユーザレベル処理の両方の全ての可能な組合せに関して（例えば、カーネルからアプリケーションへ、アプリケーションからカーネルを経てアプリケーションへ、等）、及び／又は１１）上述の任意の組合せによって接続することができる。
【０１３４】
Ｃ．フィルタ伝播のデスティネーション
以下に示すように、フィルタは、発行−購読ネットワーク内のどこに挿入してもよく、１）発行者と購読者の間でエンドツーエンド接続を形成する全てのルータとユーザ装置、２）エッジルータを含むネットワークにおけるあらゆるルータ、３）コアルータのみ、４）エッジルータのみ、５）購読者装置、６）発行者装置、７）管理者装置、キャッシュ、９）バックアップルータ、１０）パケットを取り扱う任意のルータ、１１）ネットワーク修復又は障害回復に関わる新しいルータ、及び／又は１２）これらの如何なる組合せのうちのいずれに挿入してもよい。フィルタは、好ましくは、概算、併合処理及び他の処理で変更される。上述したデスティネーションの各カテゴリについて、伝播されるフィルタの形式を異ならせてもよい。
【０１３５】
Ｄ．フィルタ伝播のソース
フィルタ伝播のソースは、発行−購読ネットワーク内のどの部分であってもよい。
【０１３６】
フィルタソースの具体例としては、セクションＣに列挙した部分がある。同様に、フィルタは、好ましくは、伝播の間に、概算、併合処理及び他の処理で変更され、したがって、異なるソースからのフィルタは異なる形式を有していることが多い。
【０１３７】
Ｅ．潜在的フィルタ受信者の振る舞いの規則
また、フィルタ伝播は、潜在的受信者の振る舞いとニーズによっても異なるものとすることができる。例えば、１）永久的又は半永久的な位置に位置する発行者は、その位置にフィルタが伝播されることを望み、２）移動する発行者は、現在の位置からすぐに離れてしまうので、その位置にフィルタが伝播されることを望まず、３）ログオフする前に僅かなコンテンツのみ発行する予定の小規模な発行者は、フィルタを必要とせず、４）大規模の発行者は、ネットワーク帯域幅を節約するために最初のコンテンツの組を発行する前にフィルタが伝播されることを望む場合があり、５）アクセス許可を制限している発行者は、そのアプリケーションにおいて購読者のプライバシーと機密性を保護するために、フィルタの伝播を拒否することがあり、６）フィルタタイムアウトストラテジを実装するコアルータは、ダウンストリームのルータから周期的更新を必要とし、及び／又は７）購読者装置に常時接続されないエッジルータは、購読予約又は興味のフィルタが定期的に更新されることを望む場合がある。これらの全ての振る舞いの性質と他の性質は、例えば、発行者広告を用いること、第１の発行における発行者の振る舞いを符号化すること、フィルタ更新を周期的に送信すること、及びフィルタ受信者のニーズを伝える他の技術によって弁別することができる。
【０１３８】
Ｆ．フィルタ送信者の振る舞いの規則
また、同様に、フィルタ伝播は、例えば以下のように、フィルタ送信者の振る舞いとニーズによって異なるものとすることもできる。１）購読者は、発行されたコンテンツのサンプリングを希望する場合、（システムにより定義された、又はユーザにより定義された）制限時間を有する一時的なフィルタのみを使用することを望む場合がある。２）購読者が移動可能であり、購読者が移動した後にフィルタを期限切れにする。３）エッジルータに常時接続されていない購読者は、ＣＢＲシステムにおいて、自動フィルタタイムアウトをサポートする定期的なフィルタ更新の送信を望む場合がある。４）幾つかのポリシでは、購読者は、フィルタを伝播する前に認証されることが必要であると定めることができる。５）自動フィルタタイムアウトをサポートするＣＢＲシステムのルータは、定期的にフィルタ更新を送信する必要がある。６）所定の組のデータのみのための特定のクエリは、フィルタを含み又はフィルタによって実現することができる（例えば、クエリ又は購読予約に応答してキャッシュから読み出されたデータ、持続的なバックアップデータ、障害回復時に復元されたデータ等）。７）伝播のためにフィルタを変更したルータは、送信者のニーズに基づいき、伝播されたフィルタがどう変更されているかをアップストリームのルータに示すことができる。これらの全ての振る舞いの性質及び他の性質は、例えば、フィルタ伝播メッセージの振る舞いを符号化することによって又は特別なプロトコル（例えば、認証のためのプロトコル）を用いることによってサポートすることができる。
【０１３９】
Ｇ．伝播されるフィルタの処理
フィルタの処理は、フィルタのコンテンツ又は表現及び／又は単にフィルタを組織化する管理機能を変更する変換処理を含んでいてもよい。購読予約における元のフィルタ表現は、データ配信通路の異なる部分における、異なる処理手順の組を引き継ぐことができ、受けることができ、これらには、次のような経路セクションが含まれる。１）購読者装置からエッジルータまで。２）エッジルータからコアルータまで。３）２つのコアルータの間。４）コアルータから発行者側のエッジルータまで。５）エッジルータから発行者装置まで。これらの変換処理の幾つかの具体例は、上述した通りである（例えば、エージェント処理及びワイルドカード処理参照）。これらの処理は、購読者装置、発行者装置、エッジルータ又はコアルータ等、発行−購読ネットワーク中のどこで実行してもよい。エージェント（購読者装置及び発行者装置上のエージェント）及びデーモン（ルータ上のデーモン）等のコンポーネントによってこれらの処理を実行してもよい。
【０１４０】
処理の具体例としては、以下のような処理がある。１）属性コンテンツの変換（例えば、サブジェクト名からサブジェクトＩＤへの変換、ストリングからそれらの辞書的値への変換、ある通貨から他の通貨への変換等）。２）表現の拡張（例えば、ワイルドカードからそれらの成分への拡張）。３）表現の変換（例えば、＞演算子から＞＝演算子への変換、！＝演算子から＞及び＜演算子への変換等）。４）表示の変換（例えば、ストリング表現から数値の又はポーランド記法や括弧を含む記法等のシンボリックな表現への変換、又はツリー、基数トライ等のフィルタの保存又は照合のために用いられる特定のデータ構造に適切な表示への変換等)。５）符号化／復号（例えば、チェックサム）。６）暗号化／平文化。７）装置レベルの並べ替え及び逆並べ替え。８）プロトコルレベルの、所定のフィルタ伝播メッセージフォーマットへの及び所定の伝播メッセージからの並べ替え。９）分解（例えば選言標準形（ＤＮＦ）への分解）。１０）冗長な述語表現（例えば、＄１＞５＆＆＄２＞３＆＆＄１＞３）の簡約。１１）２個以上のフィルタの包摂。１２）併合処理の前及び併合処理の後のフィルタの概算。１３）２個以上の異なるフィルタの併合処理
（例えば、概算に基づく）。１４）２個以上の別個のフィルタのグループ化（例えば、異なるアップリンクへの伝播のための）。１５）フィルタの購読停止又は除去。１６）フィルタの期限終了。１７）フィルタの差分更新（例えば、古いフィルタの組を何らかの表現でブックキーピングし、これから新しいフィルタの組を減算して、フィルタ構成における変更を得る、すなわち、差分更新する）。１８）フィルタパターンの構成（例えば、フィルタ１が一致した場合、フィルタ２も一致するといったパターン）。上述した又は上述していないフィルタ伝播に関する如何なる処理もここに説明するフィルタ伝搬法において利用できる。
【０１４１】
Ｈ．フィルタ伝播メッセージのコンテンツ及びフォーマット
フィルタの送信又は伝播のためにメッセージを用いることができる。伝播されるフィルタを含んでいるメッセージのコンテンツとフォーマットは、フィルタに施される変換処理及び、伝播の間に、フィルタ伝播をトリガする状況の影響を受けることがある。フォーマットの具体例を以下に示す。１）装置又はユーザレベルにおけるあらゆるメッセージレイアウト。２）フィルタは、固定された又はランダムの位置に属性を含むことがある（例えば、発行された情報の任意の部分に一致するストリング）。３）フィルタは、固定サイズ（例えば、整数、ブール等）を有していてもよく、又は可変サイズ属性（例えば、アレー、ストリング、ｃ構造等）を有していてもよい。４）フィルタのデータ種類は、単純（例えば、整数、ブール等）であってもよく、又は複雑（例えば、アレー、ストリング、範囲変数等）であってもよい。５）フィルタは、単純な検査（例えば＞、＝＝、＜＝等）又は複雑な検査、又は演算子（例えばメンバシップ検査検査、正規表現、ストリング照合、インターセクションクエリ、エンクロージャクエリ、コンテインメントクエリ等の範囲演算子を含んでいてもよい。６）分解されたＤＮＦフォーマット。７）フィルタの簡約された又は元の表現。８）コンパクトな又は拡張されたフォーマット（例えば、一方向のフィルタを２つの極限を用いて表現することができ、又は双方向のフィルタを２つの一方向のフィルタに書き換えることもできる）。９）フィルタの部分的な表現（例えば、ストリング述語の切捨て、データタイプ分解能の低減、属性数の低減）。１０）フィルタの表現の変換（ポーランド記法、括弧、ツリー、トライ等）。１１）サブジェクトフィールドの包含／除外（例えば、サブジェクトフィルタリングは、フィルタが伝播されるマルチキャストバックボーンによって既に実現されていてもよい）。１２）ワイルドカードサブジェクト又は属性述語の拡張。１３）コンテンツ又は表現の変換。１４）符号化情報（例えば、エラー訂正チェックサム等）。１５）暗号化。１６）フィルタの完全な組（例えば、障害回復の間、システム内のフィルタ制限時間によって更新情報をリフレッシュする）。１７）フィルタの部分的な組（例えば、包摂されたフィルタの組に新たなフィルタのみが挿入され、又は古いフィルタが除外される）。１８）フィルタの変更された組（併合されたフィルタ、概算されたフィルタ）。１９）フィルタに類さないフィルタ表現における差分の変更（例えば、フィルタの挿入及び削除の間の基数ツリーにおける変化）。２０）座標に代わるフィルタの識別ラベル（例えば、購読停止の間）。２１）フィルタの期限切れパラメータ。２２）フィルタパターン化情報。２３）セクションＦに示したような、フィルタ送信側の振る舞いと要求を符号化する情報。これらは、ここに説明する処理において用いることができる、伝播されたフィルタの可能なコンテンツ及びフォーマットを例示的に示しているに過ぎない。
【０１４２】
Ｉ．フィルタ伝播のための手続き及びポリシ
システムレベルにおいて、フィルタ伝播の側面の一部又は全てを支配するポリシ及び手続きを確立してもよい。これらの側面には、例えば、以下のような側面が含まれる。１）管理（例えば、全体的なシャットダウン及び再起動リスタート）。２）メインテナンス（例えば、障害回復）。３）フィルタ持続性（例えば、期限切れ、キャッシングされたデータに対する一回のフィルタリング）。４）性能向上ポリシ（例えば、平均化、エッジ選択、積極的伝播対消極的伝播等）。５）監視（例えば、故障報告）。６）会計（例えば、統計的なブックキーピング）。７）課金。８）規制（例えば、フィルタを伝播させるための認証、ネットワークにおいて許可されたフィルタの種類等）。９）ユーザ認証。１０）ユーザ支援（例えば、サブジェクトフィルタリングためのディレクトリサービス）。１０）購読者プライバシ（例えば、他の購読者からフィルタを隠す）。１１）同期（例えばエッジルータでフィルタを受け取った際の購読者への承認、フィルタ伝播が終了した際の購読者への承認、回復等の間、ルータを修理することへの承認等）。１２）優先順位付け。１３）自動的なフィルタ挿入を決定及び規制する任意のポリシ（例えば消費者自身が挿入したフィルタの組において示されたで示された興味に基づき、この消費者の興味合ったフィルタを自動的に挿入する消費者に関連する管理）。
【０１４３】
フィルタ伝播の多くの側面及び可能な特徴については、セクションのＡからＩにおいて上述した通りである。しかしながら、フィルタ伝播を現実的にするためには、上述した「累算」問題を解決するスケーラブルなソリューションを見出す必要がある。そこで、以下、スケーラブルなフィルタの伝播を実現する方法及び装置について説明する。
【０１４４】
上述のように、フィルタ伝播における重要な課題は、フィルタが伝播ストリームの「上流（up）」、すなわち、膨大な数のフィルタソースから（例えば、購読者）少数のフィルタデスティネーション（例えばコアルータ、エッジルータ又は発行者）に移行する際、多数のフィルタが構築されることを回避することである。この問題は、「累算（accumulation）」問題とも呼ばれ、例えば、ツリー型のトポロジに縦列に接続されたノードから構成されるネットワークに発生する問題である。図２２Ａは、このようなフィルタ累算問題を解決するフィルタ伝搬処理４５０を示している。処理４５０は、上述したセクションＡ〜Ｉに示したソリューションの組を用いて、発行−購読ネットワークでフィルタを伝播する処理の具体例を示している。処理４５０は、例えば、購読者装置１２２におけるプロセッサ１３４によって実行されるエージェント１２８を含むソフトウェアモジュールによって実現することができる。これに代えて、処理４５０は、ソフトウェア制御の下で、インテリジェントルータ９２又は対応する機能を有するＡＳＩＣ９１内のプロセッサ９３により実行してもよい。更に、処理４５０は、これらの組合せによって実行してもよい。
【０１４５】
図２２Ａに示すように、まず、複数のフィルタが受け取られる（ステップ４５２）。セクションＣにおいて説明したように、フィルタは、発行−購読ネットワーク内のどこに挿入してもよい。受け取られたフィルタは、フィルタの総数を削減するよう処理される（ステップ４５４）。この削減ステップでは、フィルタ累算問題を回避し、又は軽減するために伝播されるフィルタの数を減少させる。現在のノードに隣接する多数のダウンリンクノードがある場合や、現在のノードがフィルタ伝搬パスのかなりの後段にある場合等、この発行−購読ネットワーク内の１つのノードにあまりに多くのフィルタが累積すると、全てのフィルタを処理し、照合するための演算負荷が膨大になるため、発行者及びルータの正常な動作が困難になり、ネットワークの効率が低下する。
【０１４６】
以下、フィルタ削減ステップ４５４の効果について更に説明する。伝搬パスの各段では、ダウンストリームノードは多くあるが、アップストリームノードは、１つ又は少数しかない。特定の段の各ダウンストリームノードがその段のダウンストリームノードの数に近い係数又はこれより大幅に小さくはない係数を用いて、アップストリームのノードに伝播されるフィルタの数を減少させると、アップストリームノードにおいて累算されるフィルタの総数は、それぞれのダウンストリームノードのフィルタの数と同規模の数となる。帰納法に基づき、この削減係数により、フィルタ伝播の各デスティネーションのフィルタの数が、伝播パスにおける段の数以上に急速に増加することはなく、この結果、累算問題が解決される。
【０１４７】
図２２Ｂは、削減ステップにおける好適なサブステップを示している。これらのサブステップは、好ましくは、フィルタを簡約し、冗長な述語表現を削除するステップ（ステップ４５４２）と、サブジェクトに関連するダウンリンクのみからのフィルタをグループ化するステップ（ステップ４５４４）と、このフィルタのグループ内でフィルタを概算するステップ（併合処理の前又は後に）（ステップ４５４６）と、フィルタの相対的な距離に基づいてフィルタをクラスタ化するステップ（ステップ４５４８）と、フィルタを包摂するステップ（ステップ４５５０）と、２個以上のフィルタを併合するステップ（ステップ４５５２）とを含む。これらのステップは、ここで説明した順序とは異なる順序で実行してもよく、これらのステップの幾つかを省略してもよい。簡約処理については、図１６を用いて、エージェントの処理に関連して先に説明した通りである。
【０１４８】
フィルタのグループ化ステップ４５４４は、正しいフィルタ情報をアップストリームに送るために重要である。以下、この重要性の幾つかの例について説明する。例えば、ルータは、多くのダウンリンクを有することができる（例えば、ダウンストリームのルータとのリンク）。全てのダウンリンクが購読予約又はフィルタをそれらに送る購読者を有するわけではない。他の具体例として、双方向のマルチキャストスキームにおいては、発行者と購読者が如何なる任意方向からもネットワーク参加できるため、ルータとの各リンクは、アップリンクとダウンリンクの両方として機能できる。リンクからフィルタ要求を受け取った際、このリンクは、現在のアップリンクと見なされ、このアップリンクにかかわらず、これらのダウンリンクから挿入された同じサブジェクトに属するフィルタのみを後の概算、クラスタリング、包摂及び併合演算のためにグループ化する必要がある。
【０１４９】
また、グループ化４５４４は、課金処理やネットワークトラヒック制御等の他の目的でも必要とされる場合がある。この処理は、例えば、全てのリンクに由来するフィルタの包括的マップが何らかの理由で必要とされる場合等、幾つかの状況では、全体を行わなくてもよい。
【０１５０】
概算ステップ４５４６は、フィルタが、より多くの購読予約を捕捉するようにフィルタを変更する。例えば、概算は、伝播されるフィルタの表現における述語の数を減少させ、又はフィルタ座標の分解能を低減させ、又は長いストリングを最初の１２文字に縮減する等の処理を含む。更に、概算には、フィルタのフォーマットを揃える効果もあり、これにより、フィルタは、包摂と併合処理のための候補になりやすくなる（ステップ４５５０、４５５２）。また、概算ステップにより、フィルタを伝播するメッセージのサイズを小さくすることもできる。
【０１５１】
包摂ステップ４５５０は、他のフィルタのサブセットであるフィルタを排除する処理である。例えば第１のフィルタが、敷地が１０００平方フィート以上、１３００平方フィート以下で、価格が２０万ドル以上、３０万ドル以下の全ての分譲住宅に関するフィルタであり、第２のフィルタが、敷地が１１００平方フィート以上、１２００平方フィート以下で、価格が２２万５千ドル以上、３７万５千ドル以下の全ての分譲住宅に関するフィルタである場合、第２のフィルタは第１のフィルタの部分集合であり、したがって、包摂によって排除される。
【０１５２】
ステップ４５４２、４５４４、４５４６、４５４８、４５５０、４５５２は、選択された特定のフィルタ削減スキーム及び／又はアルゴリズムに応じて、如何なる順序で実行してもよい。例えば、ステップ４５４６及びステップ４５５０の位置は交換可能である。概算は、包摂の後に行ってもよい。更に、ステップ４５５０及びステップ４５５２を統合して、単一のステップとして実行してもよい。例えば、併合処理は、以下のグラフに示すように、包摂処理を含むことができる。
【０１５３】
更に図２２Ｂを参照して説明すると、併合ステップ４５５２は、２個以上のフィルタを結合するという点において包摂と同様である。但し、併合処理では、２個以上の部分的又は完全に異なるフィルタを結合するのに概算を用いることができる。
【０１５４】
様々なフィルタを幾何学的に示してこの処理を説明する。例えば、以下にグラフ１〜４を示す。
【０１５５】
【表２４】
2005521950.tif 000028
【０１５６】
グラフ１は、２個のフィルタｓｌ及びｓ２を幾何学的に示しており、フィルタｓ２は、上述したように、フィルタｓ１の部分集合であり、包摂処理によって消去できる。グラフ２では、フィルタｓ３もフィルタｓ４も互いの部分集合ではない。但し、フィルタのｓ３とフィルタｓ４は、互いに部分的に重複している。併合処理ステップ４５５２では、ｓ３とｓ４の両方を含む最小のフィルタｓＡによる概算処理によってｓ３とｓ４を併合する。ここでは、ｓ３とｓ４は、いずれもｓＡの部分集合であるので、ｓ３とｓ４は、ｓＡに包摂される。グラフ３は、併合処理の別の具体例を示している。グラフ３では、フィルタｓ５、ｓ６は、完全に別個のフィルタである。併合処理ステップ４５５２では、これらのフィルタｓ５、ｓ６及びこれらの間の領域を含むフィルタｓＡを概算する。これにより、フィルタのｓ５とｓ６は、ｓＡに包摂される。グラフ４は、併合処理の更に他の具体例について示している。ここでは、フィルタｓ７、ｓ８は、１つの属性についてのみ、部分的に異なる。ｓ７とｓ８は、他の属性については重複し、同じ値を有するため、併合処理ステップ４５５２では、２つのフィルタをｓＡに併合し、重複する部分を包摂する。
【０１５７】
このように、包摂（ステップ４５５０）及び併合（４５５２）は、フィルタが互いに近い場合に行われる。フィルタのリスト全体に対する線型探索の効率を向上させるために、オプションのステップとして、互いに近い又は重なる境界を有するフィルタを統合するクラスタリングアルゴリズムを用いることができる（ステップ４５４８）。クラスタリングアルゴリズムは、フィルタが追加又は削除されるのに応じて、実時間でインクリメンタルに実行することができる。また、フィルタ属性の属性空間において、任意の精度の固定サイズ又は可変サイズグリッドを用いて、グリッド座標に基づき、フィルタをグループ化してもよい。
【０１５８】
ｓ３又はｓ４又はｓ５及びｓ６のいずれにも含まれないｓＡの部分は、この部分がｓ３又はｓ４若しくはｓ５又はｓ６によって要求されていない発行情報を通過させるため、漏れ領域（又は、緩和領域、冗長領域）とも呼ばれる。したがって、併合処理ステップ４５５２は、フィルタ削減のために、トレードオフとしてこのような漏れを発生させる。ここで、大きな概算を行うと、漏れ領域が大きくなり過ぎ、フィルタ削減の利益が相殺されてしまう。そこで、処理４５０が実行される発行−購読ネットワークは、漏れ領域に関する閾値を定義し、併合処理ステップ４５５２において用いられる各概算に関する漏れ領域が大き過ぎるか否かを判定するようにする。併合処理ステップ４５５２は、統計的解析を実行し、漏れ領域に関して概算のために受け取られる余分なパケット（すなわち，漏れ領域に含まれるパケット）の割合を判定する。この統計的解析は、パケット分布プロファイルに基づき、（例えば処理４５０を実行するルータにおける）受け取られるパケット又は送り出されるパケットに関する履歴を用いて構築される。予期された割合が漏れ領域の閾値を超える場合、概算は、実行されない。
【０１５９】
通常、漏れ領域の閾値は、多くの場合、割合を示す数値であり、併合処理の評価基準として２つ以上の閾値を用いてもよい。漏れ領域に関する閾値の具体例として、例えば、グラフ３において、漏れ領域の閾値＃１が実際のフィルタｓ５、ｓ６によって受け入れられるパケット数の１０％と指定されている場合、併合処理ステップ４５５２に関するフィルタｓ５、ｓ６を通過する漏れ領域が総パケットの２０％を含むと推定されれば、併合演算を行わないようにすることができる。漏れ閾値の別の具体例として、同グラフにおいて、漏れ領域の閾値＃２がルータを通過するパケットの総数の２％であり、フィルタｓ５、ｓ６の間のギャップがルータを通過するパケットの総数の１％を構成するかもしれないと見積もられている場合、フィルタリングなしでルーティングを行った場合にダウンストリームの帯域幅を消費する漏れ領域に属するパケットの割合は僅かであるので、第１の漏れ領域の閾値（＃１）を超えていても、併合演算を行うことができる。多数の及び様々に交錯する漏れ領域に関する閾値を設計し、指定することができる。
【０１６０】
漏れ領域の閾値は、併合されるフィルタの数、フィルタ適用範囲の領域、又はフィルタ分布の任意の特性に基づいて決定することができる。例えばフィルタの総数が僅かである場合、累算問題は逼迫した問題とはならいので、フィルタの併合に関する制約条件を緩めてもよい。
【０１６１】
グラフ４を用いて上述したように、全ての併合演算が概算を行うわけではない。例えば、２個以上の別個のフィルタで構成された併合されたフィルタｓＡは、ある状況では、漏れ領域を全く有さず、したがって、正確なフィルタである。例えば、二次元フィルタ（すなわち、グラフ４のｓ７、ｓ８）について、フィルタを表す２つの長方形がその間に隙間を作ることなく互いに並べられ、隣接する場合、フィルタｓＡをもたらす併合ステップ４５５２は、正確な処理である。包括的に言えば、多次元において、２個以上のフィルタにおいて、１つの属性に関する断言された範囲及び他の属性に関する同じ断言された範囲が重複部分又は交差部分を有する場合にこのような状況が生じる可能性がある。同様に、フィルタについて断言された範囲が（例えば、整数のみの属性について）、別のフィルタのための断言された範囲が終わった後に、次の可能な値で始まる場合、これらのフィルタの他の任意の属性について同じ断言された範囲を仮定することにより、漏れ領域がない併合されたフィルタｓＡによってこれらのフィルタを概算できる。
【０１６２】
図２２Ａに戻って説明を続けると、処理４５０は、（ステップ４５４に加えて）上のセクションＧで説明したフィルタ処理等の更なるフィルタ処理を含むことができる。ここに示すように、処理４５０は、受信者の振る舞いの規則に基づき、フィルタを伝播するか否かを決定する（ステップ４５６）。この具体例は、先のセクションＥで説明した通りである。判定ステップ４５６では、フィルタが（及び／又はどのフィルタが）潜在的受信者に伝播されることになっているかを判定する。例えば、潜在的受信者は、自らが接続しているノード（例えば、エッジルータ）にフィルタを伝播しないという要求を送った移動可能な発行者であってもよい。これに代えて、潜在的受信者は、膨大な量のコンテンツの発行を開始する前に、自らが接続しているノードに全てのフィルタを伝播するという要求を送った新たな発行者であってもよい。セクションＥに示したこの他の潜在的受信者に関する振る舞いの規則を用いてもよい。ステップ４５８及びステップ４５６の順序は入替可能である。更に、例えば、購読予約（すなわち、フィルタ）の数が限られている場合又はネットワークが含む伝播の段の数が少ない場合、フィルタの累算が深刻な問題とはならないので、ステップ４５４（詳しくは、併合サブステップ４５５２）やステップ４５６等の幾つかのステップは行わなくてもよい。
【０１６３】
セクションＦにおいて例示的に示したように、送信側の振る舞いの規則に基づく、フィルタを伝播するか否かに関する判定（ステップ４５８）を行ってもよい。例えば、フィルタの送信側は、フィルタに有効期限を設けてもよい。この場合、判定ステップ４５８では、フィルタが期限切れであるか否かを検査する。また、フィルタ送信側がフィルタを次のノードに伝播するために、認証が必要である場合もある。この場合、判定ステップ４５８では、フィルタの供給元が認証されない場合、フィルタを拒絶できる。セクションＦに示した他の規則等のフィルタ送信側の振る舞いに関する規則を用いてもよい。
【０１６４】
セクションＤで説明したように、このフィルタ伝播手続き４５０は、ネットワーク管理者を含む発行−購読ネットワークでどこからでも開始できる。次のノードには、全てのフィルタ又は削減されたフィルタの組が伝播される（ステップ４６０）。また、セクションＣで説明したように、次のノード（フィルタ受信者）は、発行−購読ネットワークの如何なる部分であってもよい。フィルタの数は、ステップ４５４〜４５８のそれぞれによって削減することができる。実際には、フィルタの数は、ステップ４５６又はステップ４５８によって、（例えば、如何なるフィルタも伝播しないことを示す潜在的な受信者の規則に基づき）ゼロにできる場合もある。また、処理４５０は、セクションＡにおいて説明したような、発行−購読ネットワークにおけるフィルタ伝播ストラテジの１つに基づいて、フィルタの伝播４６０を行うことができる。したがって、伝播ステップは、含むことができるフィルタ伝播ストラテジを決定するステップと、決定されたフィルタ伝播ストラテジの要求を満たすフィルタを伝播するステップとを含むことができる。例えば、伝播ステップ４６０は、フィルタの受信に応じて常に実行してもよく、又は発行者による同報通信の広告があった場合にのみ実行してもよい。同様に処理４５０は、セクションＩに示したポリシと手続きのいずれに従って実行してもよい。また、処理４５０は、セクションＨに基づいて、フィルタ伝播メッセージをフォーマットできる。伝播ステップ４６０に関するソースとデスティネーションを接続する手法は、セクションＢで説明したように、様々な手法を用いることができる。
【０１６５】
伝播ステップ４６０の後、処理４５０は、別の潜在的受信者（別のノード）が存在するか否かを判定してもよい（ステップ４６２）。別の潜在的受信者がいる場合、処理４５０は、この潜在的受信者のために手続きを繰り返す必要があるか否かを判定する。幾つかの発行−購読ネットワークストラテジ（例えばＣＢＴ）においては、フィルタが期限を全く有さず、一旦１つのノードに伝播されると、このフィルタに対する何らかの変更（例えばフィルタの追加、フィルタの除去等）が設定されるまで、このフィルタがリンク上に持続的なままで残る場合がある。このような場合、そのリンクへのフィルタ伝播は、不必要となる。このような例は、後述する消極的な伝播法にも見出すことができる。
【０１６６】
フィルタを伝播する必要がある場合、処理４５０は、振る舞いの規則に基づいてフィルタを伝播するか否かを決定することができる（ステップ４５６、４５８）。処理４５０は、削減されたフィルタの潜在的な更なる受信者がいなくなるまで繰り返し実行してもよい。
【０１６７】
図２２Ｃは、他のフィルタ伝搬法４７０を示している。この処理は、セクションＡ〜Ｉで説明した発行−購読ネットワークでフィルタを伝播するためのソリューションの組を用いた他の実施例である。処理４７０は、ソフトウェア制御の下で、インテリジェントルータ９２又は対応する機能を有するＡＳＩＣ９１内のプロセッサ９３により実行してもよい。これに代えて、処理４７０は、例えば、購読者装置１２２又は発行者装置１００におけるプロセッサ１３４又はプロセッサ１１４によって実行されるエージェント１２８又はエージェント１０５を含むソフトウェアモジュールによって実現することができる。
【０１６８】
この実施例におけるネットワークトポロジは、図２２Ｄに示すように、一連の発行者Ｐがあらゆる任意の方向から、インテリジェントルータＣのネットワークへのあらゆる任意のパスを介して接続される、双方向のトポロジである。このようなネットワークは、例えば、コアベースのツリーマルチキャストスキーム（Core-Based Tree multicast scheme）によって実現される。この実施例では、新たな発行者ＰＮ及び新たなルータＣＮは、ルータＣを介してネットワークに接続されている。新たな発行者ＰＮが特定の発行−購読ネットワークに接続する際、そのネットワークの拡張を形成する一連の新たなルータを介してコアに接続する必要がある場合があり、及び／又は既にそのネットワークの一部であるルータを介してネットワークに接続できる場合もある。説明のために、図２２Ｄでは、新たなルータＣＮを１つのみ示している。
【０１６９】
フィルタ伝播処理は、２段階で行われる。図２２Ｄに示す双方向ネットワークでは、如何なるリンクも、同時にアップリンク及びダウンリンクであることができる。ここでは、説明のため、アップリンク（１つのみ）を現在フィルタ要求を受け取っているリンクと定義し、ダウンリンク（多数）をアップリンクとは異なる、フィルタ要求の受信者のすぐ隣のダウンストリームへのリンクと定義する。ダウンストリーム及びアップストリームの方向は、アップリンクとダウンリンクと同様に定義される。
【０１７０】
図２２Ｃを参照して説明すると、最初の段階において、新たな発行者ＰＮは、ダウンストリームのルータＣ（又は、全てのダウンストリームノード）に対し、フィルタを要求する通知を同報通信又はマルチキャストする（ステップ４７２）。ルータＣがフィルタ要求を受け取った後（ステップ４７４）、ルータＣは、同じフィルタの組が同じアップリンクに再度送信されないことを確実にするために、好ましくは、参照カウンタによってブックキーピングを更新する（ステップ４７６）。次に、ルータＣは、好ましくは、このアップリンクのための参照カウンタを調べることにより、このアップリンクからのフィルタ要求が以前に処理されているものであるか否かを判定する（ステップ４７８）。これが、例えば、このアップリンクからネットワークに参加する最初の発行者の場合等、それまで一度も処理されていない新たなアップリンクである場合、ルータＣは、要求を中継し（ステップ４８０）、ルータのダウンリンク（すなわち、ダウンストリームのルータ）からの応答を待つ（ステップ４８２）。続いて、これらのダウンストリームのルータは、更なるダウンストリームのルータに要求を送信し、これらのルータからの応答を待つ。この処理は、受信ノードによる応答の決定がなされるまで繰り返される。これにより、第１の段階が終了する。
【０１７１】
第２の段階は、フィルタ要求を受け取ったいずれかのノードがそのノードのダウンストリームの全てのルータからの応答を得た場合、又は、そのノードがネットワークの最後のノードであり、ダウンストリームからの応答が期待されない場合に開始される（ステップ４８４）。送信するフィルタが全くなければ、否定応答（又は任意に表現されたフィルタの空集合）がアップストリームに送信される。全てのノードのダウンストリームのルータから全ての新たなフィルタを受け取った場合、任意の処理であるフィルタの削減（ステップ４５４）の後に、フィルタの組の全体又は一部（例えば、変更の差分）がアップストリームに送られる（ステップ４８６）。現在のアップリンクについて、ダウンリンクから集められたフィルタのみが処理４５０に従ってグループ化され、併合され、削減される。この応答収集−フィルタ伝播処理は、発行者又はフィルタ要求を送った最初のルータがその発行者又は初期のルータのダウンストリームの全てのルータからフィルタ又は否定応答を受け取るまで、アップストリーム側で繰り返される。上述したフィルタの実際の伝播又は空集合（否定応答）の伝播は、第２の段階を構成する。これら２つの段階は、伝播されるコンテンツと、これらの伝搬方向について異なっており、フィルタ要求は、ネットワークの幾つかのブランチのダウンストリーム側に、他のフィルタ要求より遠くに送られることがあるので、これらの２つの段階は、時間的に重複して実行してもよい。
【０１７２】
このフィルタ伝播スキームは、アップリンクからのフィルタ要求を受け取った場合にのみフィルタ伝播処理を開始するため、すなわち、全てのアップリンクにフィルタを積極的に送るのではなく、フィルタの要求があった時に、フィルタを要求したアップストリームのルータだけにフィルタを供給するため、消極的な伝播スキームと呼ばれる。なお、フィルタ要求は、特別にフォーマットされた通知である必要はない。如何なる発行者からの最初の通知もその存在の広告と見なすことができ、データ通知に符号化され、埋め込まれたフィルタ受信者の振る舞いの規則を用いて、セクションＥに基づき、フィルタが要求されているか否かを判定することができる。
【０１７３】
各発行者Ｐのフィルタは、発行者ユーザ装置１００又は発行者Ｐが接続しているルータＣに保存してもよい。上述した処理４５０と同様に、処理４７０は、セクションＡ〜Ｉで説明したような、追加的なソリューションを用いることができる。
【０１７４】
コンパクトなフィルタストレージとオフラインプリコンピュテーションを用いるＣＢＲこのセクションで説明するＣＢＲの実施例は、発行／購読ネットワークのコアにおいて、深いパケット検査及びフィルタ照合に基づいて、データパケットをルーティングする処理を含む。このＣＢＲ処理は、フィルタをよりコンパクトな形式に変換し、属性空間において、フィルタ適用範囲を予め計算（pre-computing：以下、プリコンピュート／プリコンピュテーションともいう。）することによって、属性空間座標の有限集合から命令（instructions）をルーティングするためのマップをオフラインで作成し、このマップを実時間で利用して経路決定を行う。このＣＢＲ処理は、非常に速く、従来のインターネットプロトコル（ＩＰ）ルーティングと同程度のデータ伝送速度が実現される。したがって、このＣＢＲ処理は、ネットワークのコアにおける、実際の商業的なコンテンツベースのルーティングの好適な候補となる。
【０１７５】
上述したように、購読者は、ある範囲の属性値に対して述語を指定することによって、発行−購読ネットワークにおいて、１以上の発行者から送信されたパケットを選択する。各述語は、関係検査又はメンバシップ検査において、パケット内のある位置における属性に１つ又は２つのオペランド（オペランドは、正規表現等の複合オブジェクトであってもよい。）を関連付ける属性検査（また、属性検査は、サブジェクト検査を含んでいてもよい。）である。例えば、１０＜＄１＜２０は、＄１によって示された第１の属性位置の値が１０より大で２０より小であるか否かを調べる検査である（述語の定義は、検査を１つのオペランドだけ関係づけるように制限することによって、単純化でき、例えば、２方向の範囲を有する検査は、２つの一方向の検査の論理積として表すことができる）。購読者は、これらの検査の集合を提示し、１つ以上の購読予約において、各購読予約は、購読者の興味を表すサブジェクトフィールドを含むことができる。
【０１７６】
ここに説明する実施例は、フィルタを用いたコンテンツベースのルーティングに関連し、これらのフィルタは、購読予約から得られたオブジェクトであり、その表現が購読予約と異なっているのみである。フィルタの１つのとして、後述する連言フィルタがある。購読予約は、指定され、パケットをフィルタリングするのに用いられ、及び／又は購読者がネットワークに直接送信した元のフィルタであるとも言える。ネットワーク内のルータにおける伝播とパケット照合を容易にするために、購読予約は、フィルタと呼ばれる他のフォーマットのオブジェクトに変換される。例えば、幾つかの実施例では、各サブジェクトは、マルチキャストネットワークを用いて実現される。同じサブジェクトを有し、特定のサブジェクトについて、マルチキャストネットワークの各ノードに挿入されるフィルタは、同じサブジェクトフィールドのみを有するパケットをフィルタリングし、事実上、サブジェクトフィールドフィルタリングを実行する。したがって、フィルタは、このネットワーク内の各ノードにおいて、それらのサブジェクトフィールドを設けることなく、そのサブジェクトヘッディングの下に保存できる。サブジェクトフィールドのないフィルタは、属性フィルタとも呼ばれる。以下の説明では、購読予約、フィルタ及び属性フィルタは、交換可能に用いられ、これらの意味は、文脈によってのみ明らかになる。
【０１７７】
これらの購読予約を有する受信データパケットの照合を容易にするために、上述のように、各購読予約は、エッジルータに供給される前に、プロキシにより、同等な選言標準形（ＤＮＦ）に処理され、分割される。ＤＮＦは、連言フィルタ呼ばれる１個以上のサブフィルタの論理和である。各連言フィルタは、同じ検査演算子を有する表現内で各属性が最大１回現れる１つ以上の属性検査の論理積である。例えば、連言フィルタは、以下のような表現（以下に示す例では、＄１以外の属性も含まれている、）において、属性の一致を制約できる。
＄１＞１０ａｎｄ＄１＜２０ａｎｄ＄２＜４ａｎｄ＄３＝＝５ａｎｄ・・・
【０１７８】
ルータに関する限り、プロキシ動作のため、属性フィルタは、全て連言フィルタである。連言フィルタは、均一なフォーマットを有するという利点のみではなく、ネットワークのコアにおいて、これらのフィルタの伝播を容易にするという利点を有し、また、フィルタ表現において、それぞれの属性の出現を一回に限定することにより、これらのフィルタを多次元の幾何学的オブジェクトとして解釈することができるようになり、ここで説明するＣＢＲにおいて有利である。したがって、以下の実施例では、連言フィルタのみを用いる。
【０１７９】
多数のフィルタを含む膨大な集合について、フィルタ毎に及び述語毎に照合するといった煩雑な処理を行うと、必要な演算量が膨大になり、ＤＮＦの使用にもかかわらず、ＣＢＲを用いることによって得られたダウンストリームの帯域幅利得の利益は、容易に相殺されてしまう。クリティカルなデータ転送パスにおけるこの膨大な量の演算は、発行−購読ネットワーク効率に関する深刻な障害となることがある。ここに説明するＣＢＲの実施例では、この膨大な演算量を低減し、及び演算処理の大部分を、クリティカルなデータ転送パスから除外する。
【０１８０】
具体的には、ここに説明する実施例では、フィルタ表現をよりコンパクトな形式に概算し、及びフィルタ適用範囲情報を予めオフラインで計算することによって、ＣＢＲにおいて、非常に効率的な処理を実現する。このＣＢＲ処理では、属性空間のあらゆる点の上のフィルタ適用範囲は、フィルタが挿入され又は削除された際に、オフラインで予め決定される。属性値がその点に含まれるパケットに対する正しい処理は、その点をカバーする全てのフィルタによって示される処理の統合である。これらの処理は、パケットに対する処理を含み、例えば、物理的なインタフェース又はカプセル化されたインタフェースへのパケット転送、ユーザレベル処理へのパケット転換、並列する装置（例えば、キャッシュ、バックアップルータ等）へのパケットの転送が含まれる。幾つかの処理は、パケットに関する処理を含まず、このような処理としては、例えば、特別に設計されたパケットの到着に応じて、ルータ上で動作する汎用アプリケーションをトリガする処理、アクティブな発行情報がフィルタに関連する領域にまだ残っているために、幾つかのフィルタの寿命を延長する処理、発行のコンテンツに基づき、新たなフィルタを自動的に挿入する処理等がある。実際には、各フィルタによって示された処理は、例えば、各ビット位置が個別の（転送）処理を表している処理ビットマスク（action bit mask：以下、ＡＢＭという。）又は処理の数がビットマスクとして表現するには多くなり過ぎた場合（例えば、エッジルータが膨大な数の購読者に接続している場合）は、個別の処理のリスト（個別処理リスト：Distinct Action List：以下、ＤＡＬという。）等のデータ構造によって実現できる。以下の説明において、ＡＢＭ又はＤＡＬを単独で明示している場合であっても、その文脈は、データ構造を具現化する処理の全ての形式を含むものとする。
【０１８１】
したがって、プリコンピュテーションにより、属性空間内の所定数の座標から、同数の統合された処理又は処理のリストへのＣＢＲマップが生成される。この簡単なマップは、サブジェクトグループマルチキャストで用いられたマルチキャストルーティングテーブルと同じであるので、これはＣＢＲテーブルとして理解される。このように、重い演算負荷をクリティカルなデータ転送パスから、バックグラウンドで実行されるクリティカルではないフィルタのプリコンピュテーション処理に移すことにより、データは、クリティカルなデータ転送パスを介して非常に高速に伝送され、元のフィルタ表現を照合するために必要な処理の影響を殆ど受けない。
【０１８２】
また、このＣＢＲ処理は、好ましくは、例えば、空間量子化及び述語削減によって、フィルタ表現をよりコンパクトな形式に概算する処理を含む。それぞれの属性次元において、膨大な数の座標があるので、属性空間を量子化し、グリッドを生成する必要がある。個々の座標の代わりに量子化された領域だけがＣＢＲテーブルの構築に用いられる。空間量子化は、実際の属性空間内の個々の点を量子化された属性空間内の単一の点にグループ化する効果を有しているので、元の実際の属性空間のあらゆる点がＣＢＲテーブルにおいて間接的に考慮され、同じ座標に量子化された隣接する点とともにこれらの量子化された座標について示された処理のリストを共有する。
【０１８３】
この処理では、様々な空間量子化スキームを用いることができる。更に、フィルタ表現が多くの述語を含んでいる場合、この表現は、ＣＢＲテーブルに表されたサブセットのみに概算してもよい。
【０１８４】
属性のための属性空間は、潜在的に無限である。したがって、属性空間は、グリッドを設けても、大き過ぎて扱いづらい場合がある。したがって、ここで説明するＣＢＲの処理では、好ましくは、量子化される属性空間の領域を削減する。具体的には、一致するデータパケットが受け取られると予想される属性空間の領域だけを量子化することが好ましい。後述するように、一致するデータが受け取られる可能性があるこの領域は、発行者から受け取った情報及び／又は過去の（すなわち、以前に受信した）パケット及び／又はフィルタ分布の統計的解析から得られた情報に基づいて判定される。例えば、属性がある値より上のデータパケットは決して発行しないとの情報を発行者が提供した場合、そのある値を超える属性空間は、量子化しないことが望ましい。同様に、統計的解析により、属性値がある値より下のフィルタが受け取られることはないことがわかっている場合、そのある値を下回る属性空間は、量子化しないことが望ましい。
【０１８５】
図２３Ａは、フィルタ表現をよりコンパクトな形式に概算し、フィルタ適用範囲情報をオフラインで予め算出するここに説明する実施例に基づくＣＢＲ処理４８０を示している。ＣＢＲのこの処理は、実時間における述語毎の照合を最少にする。処理４８０は、ソフトウェア制御の下で、インテリジェントルータ９２又は対応する機能を有するＡＳＩＣ９１内のプロセッサ９３により実行してもよい。多くの場合、フィルタ管理機能を含むプリコンピュテーションステップは、演算的に高負荷であるので、ソフトウェアにおいてこれを実行することが望ましい。しかしながら、例えば、基数表現等の幾つかのフィルタ表現では、フィルタをハードウェアで実現することもできる。処理４８０は、例えば、ユーザ装置１００のプロセッサ１１４によって実行されるエージェント１０６として表現されたソフトウェアモジュールにより実現してもよい。
【０１８６】
図２３Ａに示すように処理４８０では、まず、空間（再）量子化を実行すべきであるか否かを判定する（ステップ４８２）。空間量子化は、定期的な又は不定期の期限によってトリガしてもよく、又は例えば、現在の量子化された属性空間におけるパケットが過度に不均一になったことが観察された場合等にトリガしてもよい。空間量子化は、必要に応じて、ルータの処理が比較的空いているときにオフラインで実行される（ステップ４８４）。空間量子化は、好ましくは、形成される量子化された属性空間に亘って均一なパケット分布又はフィルタ分布のいずれか（又はこれらの両方）をレンダリングする性質を有する新たなグリッドの算出を含む。空間量子化について、この他の処理及び評価基準を用いてもよい。
【０１８７】
グリッド領域は、一致するパケットが受け取られると予想される属性空間の削減された領域のみをカバーするように構築することができる。例えば、第１の属性＄１が米国のある工業部門における、株の数を表している場合、空間量子化は、０から米国証券取引所の株の総数までの範囲のみで行えばよい。収集されたパケット統計データからこの属性の統計的分布に関する情報を得た後、後述するような適応量子化を用いて、初期的には、全ての部門に関する株の数の最大値である非常に小さな数値に、及び将来的には、市場の成長に応じてより大きな数値に、動的にこの範囲を調整することができる。
【０１８８】
ルータは、処理４８０が実行されているネットワーク位置（例えば、コア又はエッジインテリジェントルータ９２、又は発行者装置１００）に何らかのフィルタが挿入され、又は何らかのフィルタが削除されているか否かを判定する（ステップ４８６）。参照カウント処理は、新たに挿入されたフィルタが、既に挿入されているフィルタと同一の情報（例えば属性、一致する属性値及びフィルタ処理）を有しているか否かを監視する（ステップ４８８、ステップ４９４）。処理する必要があるのは、異なるフィルタだけである。説明のため、ネットワークにおける位置をインテリジェントルータ９２と仮定する。例えば、新たなフィルタがアップストリーム側のインテリジェントルータ９２に伝播される場合もあり、又は、古いフィルタについて設定されている有効期限が切れる場合もある。
【０１８９】
フィルタを挿入する又は削除する要求が受け取られた場合（ステップ４８６）、（１）実際の属性空間内の正しいフィルタのための参照カウントを更新し（ステップ４８８）、及び（２）挿入／削除するべきフィルタが新規のフィルタであるか、以前に既に受け取ったことがあるフィルタであるかを判定する（ステップ４９０）ために、まず、実際の座標を用いて、フィルタと、ルータによって既に受け取られ、保存されている他のフィルタとを比較する。フィルタが新規のフィルタでない場合、実行フローは、パケット照合ルーチンに戻される。この他の場合、属性値の量子化された座標を得るために、パケットの属性値を量子化された空間にマッピングする（ステップ４９２）。そして、量子化された座標を用いて、同様のフィルタ識別手続きを実行して、（１）量子化された属性空間における正しいフィルタのための参照カウントを更新し（ステップ４９４）、（２）このフィルタがフィルタの量子化された座標における新規なフィルタであるか否かを判定する（ステップ４９６）。ステップ４８８とステップ４９４については、好ましくは、フィルタ座標からフィルタ参照値への２つのマップを用いるとよい。
【０１９０】
フィルタが実際の属性空間と量子化された空間の両方において新規なものである場合、そのフィルタを概算し、削減することができる（ステップ４９８）。例えば、述語が過多であるフィルタの属性のサブセットのみを選択して、量子化及びマッピングを行ってもよい。同様に、より複雑な性質の述語を有する属性（例えば、ストリングの一致を要求する述語、正規表現、非ストリング（in-string）、非アレー（in-array）、範囲演算子等）又はより高い分解能を要求する属性は、個別に取り扱ってもよい。
【０１９１】
本発明の実施例の主要な利点の１つとして、フィルタをコンパクトにできれば、パケットの照合と転送をスケーラブルな手法で効率的に行うことができるという点である。フィルタのコンパクト化は、フィルタを量子化された属性空間にマッピングする処理（ステップ４９２）と、フィルタ表現の概算及び削減（例えばステップ４９８）の処理の両方を含む。図２３Ａに示すように、圧縮ステップは、属性空間を空間的に量子化する処理を含んでいる（ステップ４８４）。このステップでは、上述し及び以下に示すように、属性空間においてグリッドを生成する。
【０１９２】
【表２５】
2005521950.tif 000029
【０１９３】
これにより、ＣＢＲテーブルを更新できる（ステップ５００）。各フィルタは、そのフィルタに一致する発行情報に関する１以上の（ルーティング）処理を示す規則に関連付けられている。フィルタによって示される（ルーティング）処理は、以下のような手法によって、このＣＢＲテーブル内のグリッドセルに挿入される。ステップ５００では、フィルタ適用範囲情報の属性空間に生成されたグリッドを用いて、まず、フィルタの量子化された座標がカバーされ又は重複する全てのグリッドセル（すなわち量子化された領域）を特定する。次に、ステップ５００は、このフィルタより示された（ルーティング）処理をこれらのグリッドセル内に挿入する。例えば、５個の可能なデスティネーションノードがあるとすると、それぞれノード２とノード３に接続されているユーザ装置にルーティングする必要がある２つのフィルタは、グリッドセル又は量子化された領域Ｘをカバーする（上述の説明参照）。この結果、ステップ５００は、グリッドセル又は量子化された領域Ｘに対し、それぞれノード２とノード３へのルーティングを要求する規則を挿入又は宣言する。この処理は、フィルタの量子化された座標をカバーし又は重なる各グリッドセルについて繰り返される。好ましくは、ステップ５００は、各グリッドセル又は量子化された領域対して、ＡＢＭを生成又は更新することによってマッピングを表す。この実施例では、グリッドセル又は量子化された領域Ｘに対するＡＢＭは、ノードの番号を０〜４として、以下のように表される。
【０１９４】
【表２６】
2005521950.tif 000030
【０１９５】
なお、フィルタ除去のために、好ましくは、ブックキーピングを行うとよい。例えば、２個のフィルタがグリッドセルをカバーしており、フィルタの１つを除外する処理を説明する。ＡＢＭ内の対応するビットは、０にリセットするべきではない。各グリッドセルについて、セル領域をカバーするフィルタの参照カウントをブックキーピングすることによって、混乱を避けることができる。続いて、更新後の参照カウンタからＦＢＭを生成する。これらの参照カウンタは、処理参照カウンタとも呼ばれる。このように、マッピングステップ５００は、ブックキーピングステップを含んでいてもよい。
【０１９６】
ＣＢＲテーブルは、各グリッドセル又は量子化領域から生成されたＡＢＭに基づいて構築／更新される（ステップ５００）。この処理は、好ましくは、直接又は間接的に、空間的な再量子化及びＣＢＲテーブルの更新と、全ての追加的なステップ４８２〜５００とを含む。ステップ４８２〜５００は、好ましくはオフラインで（すなわち、インテリジェントルータ９２が発行されたパケットを受け取っていないときに）又は実時間のルーティング処理のバックグラウンドとして、実行され、フィルタが挿入され、保留され、停止され、又は削除される。したがって、発行された如何なるパケットも受け取られていない場合、又はステップ４８２〜５００がバックグラウンドで実行されている場合、処理４８０は、再び、まず、属性空間を再量子化するべきか否かを判定し（ステップ４８２）、続いて、何らかのフィルタが挿入又は削除されているか否かを判定する（ステップ４８６）。そして、図２３Ｂに示すように、データ転送パスにおいて、ＣＢＲテーブルを用いて、実時間のルーティング処理が実行される。
【０１９７】
ＣＢＲテーブルのサイズは、属性の数が多い場合、又は各属性に関するグリッドの分割数が多い場合、大きくなる。原則として、ＣＢＲテーブルにおいて、処理規則含む（すなわち、フィルタによってカバーされている）グリッドセルのみを保存すればよい。ＣＢＲテーブルは、如何なる技術を用いて圧縮してもよい。
【０１９８】
図２３Ａは、処理４８０のＣＢＲ管理の側面を示し、図２３Ｂは、処理４８０のＣＢＲによるデータ転送の側面を示している。処理４８０において、発行されたパケットが受信されたと判定された場合（ステップ５０２）、インテリジェントルータ９２は、図２３Ｂに示すように、発行されたパケットを受け取る（ステップ５０４）。受信されたパケットは、ポイントツーポイント接続（例えば、エッジルータへの無線接続）を介してネットワークに挿入することができる。受信されたパケットは、グリッドにマッピングされる（ステップ５０６）。ステップ５０６では、パケットの量子化された座標を判定し、これにより、ＣＢＲテーブルの正しいグリッドセルを参照し、そのグリッドセルに含まれている処理規則を抽出し、パケットを処理できる（ステップ５０８）。これらの処理は、ネットワーク内のどのノード又は他の位置にパケットをルーティングし、又はパケットを削除するかを判定する処理を含んでいてもよい。
【０１９９】
漏れの削減
フィルタ概算の結果、これまで説明してきたＣＢＲ処理４８０では、パケット漏れのエラーが発生する虞がある（ステップ４９２参照）。元のフィルタ境界に代えてグリッドセルの境界を用いてパケットを照合するため、照合に用いられる実際の領域（例えば、２次元における面積と３次元における体積）は、拡大し、緩和領域とも呼ばれる実際のフィルタ境界とグリッドセル境界との間の領域に存在する属性値を有するパケットが誤ってフィルタを通過することがある。上述のように、フィルタ分解能の削減は、処理の高速性能とスケーラビリティが実現又は向上し、受信パケットの総数に比べて、漏れエラーが小さい場合に許容できる犠牲であると考えられる。
【０２００】
しかしながら、漏れエラーが小さくない場合もある。例えば、システムが、等価検査又は不等価検査（例えば、＄１＝４＆＄２＝１００＆＄３＜３０、又は＄１＝４＆＄２＞３）であるＣＢＲに対応する少なくとも１つの属性述語を有するフィルタを有する場合がある。これらの等価検査又は不等価検査された属性の次元において、フィルタは、点に類似する。グリッド境界がこれらの点を包摂するように課される場合（上述のステップ４９０）、緩和領域（例えば、面積、体積、超体積）は、実際のフィルタ自体の領域よりはるかに大きく拡大されてしまう場合がある。
【０２０１】
この問題は、以下の図によって示される。この図は、２次元属性空間を表しており、各次元における等価検査によってそれぞれ定義された２つの点フィルタＦ１、Ｆ２を示している。数字は、グリッドセル座標を表し、アルファベットは、実際の座標を表している。属性がグリッドセル（４、１）内のどこに含まれるパケットも、ＦＩ及びＦ２の両方に一致するパケットとして受け入れられる。
【０２０２】
【表２７】
2005521950.tif 000031
【０２０３】
漏れ削減ステップ５１６において実行できる様々な処理によって、ＣＢＲ処理４８０のこのような望ましくない性質を抑制することができ、このような処理の一具体例を以下に示す。
【０２０４】
漏れ削減ステップ５１６のための手法の１つとして、一次元（１Ｄ）において正確な照合を行う手法がある。全ての属性について、同時に、パケットをフィルタに照合する処理は、スケーラブルなソリューションを有さない多次元問題である。一方、一次元での正確な照合は、効率的でスケーラブルな多くのソリューションを有することが知られている。これらのソリューションとしては、以下に限定されるものではないが、例えば、（１）フィルタ境界のアレーに対する関する２分探索、（２）全てのフィルタ境界を介したバイナリツリー探索、（３）フィルタ境界情報が埋め込まれたツリーの下方への基数検索、及び（４）インターバル２分探索ツリー等のより複雑なデータ構造を有する検索等がある。
【０２０５】
漏れ削減ステップ５１６においては、何らかの一次元検索法を用いた一次元の正確な照合を全ての属性について行うことが望ましい。一次元の正確な照合による漏れ削減ステップ５１６の幾つかの具体例を以下に示す。
ａ．上述のように、漏れ削減のないＣＢＲ照合ステップ５０８を行う（一致が全くなければ、パケットを削除する）。
ｂ．一致するパケットについて（ステップ５０８が上であることを見る）、１つの属性次元を選択し、何らかの一次元の正確な照合法及び対応するデータ構造を用いて、パケットのその属性値をその属性軸上の全てのフィルタ境界の射影に照合する。これにより、一致したフィルタが検出された全ての転送ノードのリストを得る。
ｃ．一次元一致が全くなければ、その全ての属性検査において、そのパケットに一致するフィルタがないことが保証されるので、そのパケットを除外できる。
ｄ．一致があった場合、他の次元を選択し、次のいずれかの条件が満たされるまで、ステップｂを繰り返す。（１）いずれかの次元で不一致が検出された場合。（２）先に実行された全ての一次元探索によって生成された転送ノードのリストが共通のインタフェースを含んでいない場合（すなわち、一次元の一致が異なるインタフェースからのフィルタから生成された場合）。又は、（３）正確な照合検査がＣＢＲについてディスエーブルにされた属性次元を含む全ての属性次元について実行された場合。
ｅ．ステップｄで説明した除外の条件がいずれも成立せず、及び全ての属性の検査において不一致が検出されない場合、パケットを除外しないという決定を下すことができる。
ｆ．２つ以上のインタフェースが含まれている場合、パケットが除外されていないインタフェースのリストと、ステップａから得られたインタフェースのリストとを比較する必要がある。パケットは、これらの２つのリストにおいて重複するインタフェースにのみルーティングされる。
【０２０６】
サブステップａ〜ｆの順序は入れ替えてもよい。例えば、一次元漏れ削減ステップ（サブステップｂ〜ｅ）を実行した後に、サブステップａを実行してもよい。幾つかのサブステップを１つのサブステップに統合してもよい。
【０２０７】
なお、上述した一次元漏れ削減ステップ５１６は、全ての次元を考慮した場合、正確ではない。最後の実施例を用いて説明すると、属性値＄１＝ａ及び＄２＝ｄを有するパケットは、いずれの次元における正確な照合検査も通過するが、各次元における検査は、実際には異なるフィルタを照合する。正しい多次元の分析を行えば、このパケットは、除外されるべきものである。したがって、この漏れ削除処理は、パケットの除外については効果的であるが、パケットの受け入れについては正確ではない。このため、この処理は概算的であり、漏れエラーが残る可能性はある。但し、この漏れ削減ステップ５１６は、不正確ではあるが、フィルタリングにグリッドセル（４，１）の全体の領域を用いることによって生じてしまう漏れエラーを大幅に減少させることができる。
【０２０８】
処理４８０が実行されるインテリジェントルータ９２を介したデータ転送パストラヒックは、所定の閾値を超えているか否かを判定される（ステップ５１０）（例えば、インテリジェントルータ９２は、パケットを転送するためのクリティカルなタスクに占有されている場合、「ビジー状態」となる）。インテリジェントルータ９２がビジー状態である場合、カバーされたグリッドセルにマッピングされたパケットがルーティングされ（ステップ５０８）、ステップ５０８によって判定されたルーティング処理に基づき（ステップ５１２）、対応するパケット統計情報が更新される（ステップ５１４）。したがって、インテリジェントルータ９２がビジー状態である場合、部分的にカバーされているグリッドセルにマッピングされるがそのグリッドセルの実際のフィルタ適用範囲の外側にあるパケットのルーティングによって生じる「漏れ」が、ルーティング速度を向上するための犠牲として受け入れられる。
【０２０９】
一方、ステップ５１０において、インテリジェントルータ９２がビジー状態ではないと判定された場合（すなわち、トラヒックが閾値を超えていない場合）、好ましくは漏れ削減処理を行う（ステップ５０３）。漏れ削減ステップ５１６は、先のパラグラフで説明した漏れを削減する。漏れ削減処理は、例えば、以下に説明する手法で実現できる。
【０２１０】
ここでは、正確でない、述語毎のフィルタ照合を実時間で実行している。但し、処理４８０においては、最低レベルの正確なフィルタ照合は、トラヒックが閾値を超えていない場合にのみ許可される。このＣＢＲ処理は、本質的に、グリッドに対する位置に基づいて、フィルタをグループ化する。グリッドセルは、それらの幾何学的な位置に基づいてフィルタをグループ化するツールである。フィルタの如何なるグループ（或いは、フィルタバケツ（filter bucket）とも呼ばれる。）内においても、幾つかの状況では、より精度が高い詳細なフィルタリングを行うことができる場合がある。このような付加的な照合の要求は、フィルタバケツ内に保存できる。
【０２１１】
幾つかの具体例を以下に示す。
１．ＣＢＲマップより高い分解能を必要とする属性検査は、ＣＢＲの第１のグリッド照合ステップからフィルタバケツが導出された後に行うことができる（ステップ５０８）。
２．より複雑な性質の述語を有する属性（例えば、ストリング照合、正規表現、非ストリング、非アレー、範囲演算子等）は、フィルタバケツ法（filter bucketing method）
によって処理することができる。
３．多くの属性検査を含むフィルタについては、属性を２つのグループに分け、一方のグループをＣＢＲマップに含め、他方のグループをフィルタバケツに含めてもよい。
【０２１２】
１〜３に説明した属性のためのフィルタ述語は、上述したステップ４９８によって削減できる。更にインテリジェントルータ９２がビジー状態ではない場合（ステップ５２０参照）、述語毎の又はこの他の正確なフィルタ照合を用いて、ＣＢＲテーブルに基づいて、部分的にカバーされたグリッドセルによって判定されたフィルタバケツにこのようなパケットを照合する。そのグリッドセル又は量子化された領域に関するフィルタバケツは、（ステップ４８２〜５００における）プリコンピュテーションによって（フィルタの総数から）既に削減されているので、この処理は、単純な述語毎のＣＢＲを行うだけのより効率的な処理である。
【０２１３】
（ステップ５０８で判定された）ＣＢＲテーブルに基づくパケットをルーティングする前に（ステップ５１２）処理は、グリッドセルへのマッピングによって判定されたフィルタバケツについて、部分的にカバーされたグリッドセルにマッピングされた削減されたフィルタ述語又はパケットがあるか否かを判定する（ステップ５２２）。このような削減されたフィルタ述語がある場合、（例えば、上述の具体例１〜３）又はこのようなマッピングされたパケットがある場合、述語毎の又はこの他の正確なフィルタ照合が実行される（ステップ５２４）。そして、照合されたパケットは、ＣＢＲテーブルと正確な照合によって、例えば、２つの処理から得られたインタフェースリストを照合することによって、決定されたルーティング処理に基づいて、ルーティングされ（ステップ５１２）、パケット統計情報が更新される（ステップ５１４）。
【０２１４】
処理４８０の変形例では、トラヒック閾値検査ステップ５１０は、例えば、ステップ５１８及びステップ５２４等の演算的負荷が大きい幾つかのステップのみに先行して行われ、処理の無駄と演算負荷とのバランスが考慮される。更に、処理４８０は、完全にカバーされたグリッドセルにマッピングされたパケットと、部分的にカバーされたグリッドセルにマッピングされたパケットとについて、別々のパスを有していてもよい。この場合、トラヒックの閾値ステップ５１０は、部分的にカバーされたグリッドセルのパスのみにおいて実行してもよい。
【０２１５】
処理４８０における漏れ削減ステップ５１６は、ここに説明するより高度な漏れ削減手続きに置き換えることができる。高度な漏れ削減手続きはとは、漏れエラーを更に削減できる処理である。例えば、グリッドテーブルの探索の後に外積を求めることによって、グリッドセル内で正確な多次元の照合を実行できる。外積演算は、以下のような処理を含む。
ａ．上述のように、何らかの一次元の正確な照合法を用いて、一次元の正確な照合を行う。この代替的のステップの主な特徴は、転送ノードのリストではなく、フィルタラベルのリストが作成されるという点である。
ｂ．リストが空であるなら（すなわち一致がない）場合、パケットは、除外されている。
ｃ．少なくとも１つの一致があれば、探索処理は、他の属性に進む。以下の短絡条件（short-circuiting conditions）のいずれかが満たされるまで、ステップａ〜ｃを繰り返す。（１）いずれかの次元において、不一致が検出される。（２）先の一次元検査によって生成された全てのフィルタラベルリスト内において、共通のフィルタラベルが全くない。（３）全ての次元が検査された。
ｄ．ステップｃに示した除外条件のいずれも成立せず、及び全ての属性の検査において不一致がなかった場合、パケットを受け入れる決定が下される。
【０２１６】
例えば上の図において、属性値（ａ，ｄ）を有するパケットは、＄１の検査についてＦ２を生成し、＄２の検査についてＦ１を生成する。２つのフィルタラベルリストの間には、重複する部分が全くないので、パケットは、除外される。一方、属性値（ａ，ｃ）を有するパケットは、＄１及び＄２の検査の両方でＦ２を生成し、このため、パケットは受け入れられる。この手続きは、最終的な多次元の分析においても略々正確であるので、これは、単にパケットを除外するための検査ではなく、パケットを受け入れるための検査であるとも言える。概算が行われるのは、フィルタの属性検査における切捨てのみである。この問題は、解決できない問題ではない。例えば、この問題は、以下の手続きによって回避できる。
１．完全なセットのサブセット順列に対応している属性のサブセットを含む複数のグリッド表を作成する（例えば、（＄１、＄２、＄３）を一方の組とし、（＄２、＄４、＄５）を他方の組として選択する）。述語に関する長いリストを有するフィルタは、少なくとも１個のこのようなグリッドテーブルによってカバーされる。
２．全ての属性について、外積検査を実行する多くの述語を有するフィルタは、本質的に選択的であり、ステップｃに概説したパケット除外する条件（例えば、フィルタラベルリスト論理積）のいずれも、全ての属性が検査される前に生じる可能性があるので、短絡の確率（probability of short-circuiting）は、非常に高い。
【０２１７】
多くの述語を含むフィルタは、非実用的であり、希であるので、フィルタ表現の切捨ては、必要ではあるが、実際には頻繁には行われない。
【０２１８】
空間量子化及び外積を複合したハイブリッドな手法及びマルチテーブル探索法は、上述のように、本発明の更なる主要な要素を構成し、これらの処理は、後述するように、いずれも外積法を用いた従来の手法におけるスケーラビリティの欠如の問題を解決する。
【０２１９】
点フィルタの場合、外積法は、正確である。しかしながら、範囲フィルタの場合、隣接するフィルタ境界の任意の対間で保存すべきフィルタラベルのリストとして外積を行う処理において、従来より２つの問題がある。第１の問題として、システムに、重複の度合いが高い範囲フィルタが挿入された場合保存される情報は、フィルタの数をＮとして、Ｎ２のオーダとなる。第２に、リスト論理積ステップは、Ｎのオーダとなり、この処理は、Ｎが大きな場合、非常に遅い処理となる。グリッド検索と外積処理とを複合したハイブリッドな手法では、同じグリッドセルに含まれるフィルタのみを保存し、そのグリッドセルの境界に含まれるパケットを照合すればよいため、この問題を妥当なサイズに削減できる。グリッドセルは、ある意味、隣接しているフィルタ境界の間からのフィルタラベルリストを保存する役割を引き継いでおり、グリッドセルの数も削減されているので、フィルタラベルリストを保存する必要がある。
【０２２０】
グリッドがフィルタ境界分布に基づいて構成される場合、偶数個のフィルタの偶数は、如何なる属性次元にも全ての属性次元における各グリッドセル間隔を生じる。Ｎが小さい場合、ストレージ問題（storage problem）Ｎ２は、大きな問題とはならない。例えば、３２個の間隔を有するグリッドでは、（Ｎ／３２）２＊＝Ｎ／３２によって、ストレージ問題が軽減される。また、リスト論理積処理の速度の問題についても同様に軽減される。
【０２２１】
残りのグリッドセルの数が実際に小さければ、上述した外積処理は、良好に作用する。様々な順列の組に属性を分割し、各組につき１つのＣＢＲテーブルを割り当てる処理により、各テーブル内のグリッドセルの数を妥当な数に制限できる。例えば、それぞれの属性軸の部門の数をＬとすると、ｋ個の属性のためのグリッドセルの総数は、ＬＫとなる。マルチプルテーブル（サイズ＝４）法を用いることによって、サイズは、ＭＬ４まで削減される。ここで、Ｍは、順列Ｋ！／（Ｋ４！）４！の総数より小さい数である。なお、幾つかの順列は、大きく重なり合い、そのうちの１つを代表として選択してもよい（例えば、｛＄１，＄２，＄３｝、｛＄１，＄２，＄４｝、｛＄１，＄２，＄５｝）。
【０２２２】
この実施例によるＣＢＲ処理（例えば処理４８０）（正確な述語毎のフィルタ照合ステップ５１６、５２４を除く。）は、少なくとも以下のような特徴を有している。１）パケット転送速度は、非常に速く、ＩＰルーティングに匹敵し、Ｏ［ｋ  ｌｏｇ（Ｌ）］回のステップのみを必要とする。ここで、Ｌは、何らかの属性軸における部門の数であり、ｋは、量子化され、マッピングされる属性の数である。４個の属性があり、各属性が３２の領域に分割される場合、必要となるステップは、約２２ステップである。２）パケット転送速度は、実時間において一定である。すなわち、これは、フィルタの数（Ｎ）に依存しない。この性質により、このＣＢＲ処理によって、維持可能な最大の帯域幅を見積もることができる。３）また、動的な更新も同様に早い。例えば、フィルタの挿入は、実施例に応じて、Ｏ（Ｌｋ）ステップで実現される。４）ストレージ要求は、小さくて、限定的であり、およそｋ（Ｌ−１）ＳＡ＋ＮｒＬＫ／８である。ここで、ＳＡは、バイトで表現される属性データタイプのサイズであり、Ｎｒは、ルータにおいて転送されるインタフェースの数である。第１の項は、データ構造におけるｋ個のインデクス成分の総サイズであり、第２の項は、インデクスが付された実際の転送コンポーネント（すなわち、ＣＢＲテーブル）を表している。例えば、８個のインタフェースを備えるルータにおいて、４個の整数の属性と、３２分割ＣＢＲを用いる場合、ストレージの量は、１ＭＢに過ぎない。５）インデクス付与データ構造は、はるかに大きい転送成分から分離され、非常にキャッシングしやすい。例えば、上述の実施例では、インデクス構造のサイズは、４×３１×４＝４９６バイトのみである。６）また、グリッドは、フィルタをグループ化し、組織化するためのツールでもある。これは、特に、フィルタを伝播する前のフィルタの併合に有用であり、これにより、この処理は、多数の購読者を含むシステムにおいて非常にスケーラブルなものとなる。このように、ＣＢＲ処理４８０は、高速で、予測可能で、動的で、スケーラブルで、大きなメモリを必要とせず、柔軟であり、したがって、発行−購読ネットワークのコアにおいて実用的に活用できる手法である。
【０２２３】
適応グリッド
上述のように、グリッドは、属性空間を空間的に量子化することによって、形成される。属性空間は、通常は、均一に量子化される。ここで、属性空間に対し、例えば、過去のパケット分布に基づいて、適応的な空間量子化を行えば、グリッドの分解能と、したがって、ＣＢＲ処理４８０の効率を高めることができる。適応型の量子化では、一致するパケットが最も多く受け取られると予想される属性空間の領域を判定する。例えば、適応型の量子化では、過去のパケット分布が最も集中している属性空間の領域を判定できる。そして、判定された１又は複数の領域は、属性空間内の他の量子化領域より高い精度で量子化される。換言すれば、判定された領域では、属性空間の他の量子化領域に比べて、グリッドセルの数がより大きくなり、グリッドセルのサイズがより小さくなる。これを以下の適応グリッドの２つの図に示す。
【０２２４】
【表２８】
2005521950.tif 000032
【０２２５】
【表２９】
2005521950.tif 000033
【０２２６】
第１の図では、パケットトラヒックが混んでいる領域には、より高精度なグリッドが重ね合わされている。代替えとなる手法を示す第２の図では、例えば、量子化された座標（３，２）（４，２）（３，３）（４，３）によって取り囲まれている領域においては、グリッドセルがより高精度になり、集中するように、属性軸におけるグリッド間隔を変更している。
【０２２７】
このような適応グリッドの利点は、非常に多い。この図からわかるように、領域Ｚは、適応的に量子化されている。領域Ｚでは、適応化を行わなければ４（４）グリッドセルの領域に、６４（６４）グリッドセルが設けられている。この図に示すように、フィルタ適用範囲情報ｓＳは、処理前には部分的にカバーされた３つのグリッドセルを含むが、これが適応グリッドによって、１（１）個の部分的にカバーされたグリッドセルＹのみになる。したがって、潜在的な漏れの可能性が著しく低減される。更に、領域Ｚ内の６４個のグリッドセルの１つ以上が部分的に覆われる場合、これらの各グリッドセルにおける潜在的な漏れの可能性は、部分的にカバーされたグリッドセルＹより更に大幅に小さくなる。これは、領域Ｚにおいて、部分的にカバーされた各グリッドセルにおける緩和領域が、部分的にカバーされたグリッドセルＹにおける緩和領域より大幅に小さくなるためである。したがって、適応グリッドを用いることによって、ＣＢＲ処理４８０の効率を高めることができる。
【０２２８】
第２の手法では、同数のグリッドセルを生成するので、第１の手法に比べて、ストレージ要求が高まらないという利点がある。但し、第２の手法は、第１の手法に比べて、精度の点で劣る。
【０２２９】
発行−購読アーキテクチャを有するクエリ応答の実現
ここでは、クエリ応答型のインタラクションをサポートする発行−購読ネットワークを用いた一連の手法を説明する。この処理は、発行−購読スタイル、すなわち、発行（通知とも呼ばれる）及び購読予約の基本的な抽象概念とは異なるクエリ応答スタイル、すなわち、広告（オファーとも呼ばれる）、クエリ及び応答のマッピングを含む。更なる変更点として、ここでは、広告とクエリの単集合（単一のコンテンツアイテムを特徴付ける）と広告とクエリの集合（複数のコンテンツアイテムを特徴付ける）とを区別する。
【０２３０】
上述のように、発行−購読ネットワークでは、発行者は、発行又は通知と呼ばれるコンテンツアイテムを作成し、配信する。多くのシステムにおいて、この情報は、種別化された属性のタプルとして構造化され、幾つかのシステムでは、サブジェクトと呼ばれる区別される属性を用いて、通知を初期的に分類する。購読者は、自らが興味を有する通知を特徴付ける購読予約を作成し、送信する。通知は、多くの場合、単集合のコンテンツアイテムであり、購読予約は、複雑な表現を用いて、興味ある通知の集合を特徴付ける。同じエンティティは、発行者と購読者の両方として機能できる。インタラクションは、発行者がコンテンツアイテムを購読者に発行することによって開始される。このプッシュ型配信は、購読予約及び通知間で、ある種の時間的順序を尊重する。具体的には、通知は、通知があった時点で有効な購読予約のみに対して照合され、将来の購読予約に対しては照合されない。
【０２３１】
インタラクションの異なる形式であるクエリ応答スタイルは、インターネット検索エンジンやピアツーピアコンテンツコンテンツ共有システムを含む多くの一般的な分散アプリケーションの基礎となる。クエリ応答ソフトウェアアプリケーションでは、広告作成者（advertiser producer）と呼ばれるエンティティは、コンテンツを他のエンティティに提供し、広告作成者は、広告を介してコンテンツの存在を告知し、又は、提供できる単集合コンテンツアイテム又はコンテンツアイテムの集合を特徴付ける情報を提供する。要求者又は消費者と呼ばれる他方のエンティティは、興味がある単集合コンテンツアイテム又はコンテンツアイテムの集合を特徴付けるクエリ又は要求を同報通信する。アプリケーションは、消費者への応答として、一致する広告を特定し、これを消費者に配信する。このように、インタラクションは、消費者が広告及びコンテンツアイテム自体を作成者に求める（プルする）ことによって開始される。このプル型の送信は、広告とクエリの中で、ある種の時間的な順序を尊重する。具体的には、クエリは、クエリが発せられた時点において有効である広告だけに関して応答を得るが、将来の広告に関しては応答を得ない。
【０２３２】
ここでは、発行−購読のプッシュ型インタラクションを用いて、クエリ−応答のプル型インタラクションをサポートするための一連の処理について説明する。以下では、これを実現するための５つの例示的な処理について説明する。
【０２３３】
１．図２４Ａは、発行−購読システムを用いた第１のクエリ応答処理６００を示すフローチャートである。処理６００は、様々な発行−購読システムで実行できる。例えば、処理６００は、ソフトウェア制御の下で、インテリジェントルータ９２（又は対応する機能を有するＡＳＩＣ９１）内のプロセッサ９３により実行してもよく、例えば、ユーザ装置１２２、１００内のプロセッサ１３４、１１４によって実行されるエージェント１２８、１０５として表現されるソフトウェアモジュールにおいて実現してもよい。
【０２３４】
処理６００では、発行−購読ネットワークを用いてクエリと広告とを照合し、広告主は、購読予約を用いて広告の単集合又は集合を登録し（ステップ６０２）、要求者は、発行／通知を用いて、単集合クエリを発行する（ステップ６０４）。換言すれば、広告の単集合又は集合は、購読予約にマッピングされ、単集合クエリは、通知にマッピングされるＣＢＲを実行する発行−購読システムによって、購読予約（広告）を通知のためのフィルタ（クエリ）として用いて、一致する全ての通知が広告主にプッシュされる（ステップ６０６）。ＣＢＲは、上述したインフラストラクチャを用いて、上述した処理のいずれに従って実行してもよい。広告主は、何らかの非発行−購読手段（例えば要求者へのユニキャスト接続）を介して、又は発行−購読ネットワークを用いた同意に基づく取り決めを介して（例えば、通知として配信される要求を受け取るために、要求者に対し、個別の購読予約（要求者の通に対応している）を登録することを求める。）、通知を受け取り、要求者に応答を返す（ステップ６０８）。
【０２３５】
図２４Ｂは、処理６００を更に説明するシーケンス図である。図２４Ｂは、広告主（例えば、発行者装置１００を使用する）と、ＣＢＲインフラストラクチャ（例えば、インテリジェントルータ９２のネットワーク）と、要求者（例えば、購読者装置１２２を使用する）との間のインタラクションを表している。このシーケンス図は、好ましくは、処理６００を実行する複数のプロセッサ（例えば、プロセッサ９３、プロセッサ１１４及びプロセッサ１３２）の動作を示している。
【０２３６】
２．図２４Ｃは、発行−購読システムを用いる第２のクエリ応答処理６１０を示すフローチャートである。処理６１０は、様々な発行−購読システムで実行できる。例えば、処理６１０は、ソフトウェア制御の下で、インテリジェントルータ９２（又は対応する機能を有するＡＳＩＣ９１）内のプロセッサ９３により実行してもよく、例えば、ユーザ装置１２２、１００内のプロセッサ１３４、１１４によって実行されるエージェント１２８、１０５として表現されるソフトウェアモジュールにおいて実現してもよい。
【０２３７】
処理６１０では、作成者は、関連する一対のサブジェクトを用いて、コンテンツアイテムを二重に配信する。作成者は、単集合コンテンツアイテムの初期の広告のために、初期サブジェクトと呼ばれる、この対の一方のサブジェクトを用いて、通知を発行する（ステップ６１６）。更に、作成者は、通知を発行する過去サブジェクト（past subject）と呼ばれる、対の他方のサブジェクトを用いて、先に初期サブジェクトによって発行された広告を定期的に再発行する（ステップ６１８）。消費者は、初期サブジェクトに関する１つの購読予約を提出して、新たな広告を受け取り（ステップ６１２）、及び過去サブジェクトに関する別の購読予約を提出して、以前に発行された広告を受け取る（ステップ６１４）。これに代えて、消費者は、以前に発行された広告のみ購読してもよい。これに一致する以前に発行された広告（及び、購読予約されている場合、新たな広告）は、ＣＢＲを用いて消費者にプッシュされる（ステップ６２０）。何らかの時点で、消費者は、過去サブジェクトのための購読を停止する（ステップ６２２）。
【０２３８】
図２４Ｄは、処理６００を更に説明するシーケンス図である。図２４Ｄは、広告主（例えば、発行者装置１００を使用する）と、ＣＢＲインフラストラクチャ（例えば、インテリジェントルータ９２のネットワーク）と、要求者（例えば、購読者装置１２２を使用する）との間のインタラクションを表している。このシーケンス図は、好ましくは、処理６１０を実行する複数のプロセッサ（例えば、プロセッサ９３、プロセッサ１１４及びプロセッサ１３２）の動作を示している。
【０２３９】
３．図２４Ｅは、発行−購読システムを用いる第３のクエリ応答処理６３０を示すフローチャートである。処理６３０は、様々な発行−購読システムで実行できる。例えば、処理６３０は、ソフトウェア制御の下で、インテリジェントルータ９２（又は対応する機能を有するＡＳＩＣ９１）内のプロセッサ９３により実行してもよく、例えば、ユーザ装置１２２、１００内のプロセッサ１３４、１１４によって実行されるエージェント１２８、１０５として表現されるソフトウェアモジュールにおいて実現してもよい。
【０２４０】
発行−購読ネットワークには、例えば上述したようなキャッシング機能が追加され、これにより、過去に発行された通知がキャッシングされ（ステップ６３２）将来の購読者がこれを利用することができる。作成者は、単集合コンテンツアイテムを広告するための通知を発行する（ステップ６３４）。消費者は、興味がある以前に広告されたコンテンツアイテムを要求するため（キャッシュから関連する通知を再生することによって提供される。）及び興味があるコンテンツアイテムの将来の広告を得るための両方の目的で単一の購読予約を提出する（ステップ６３６）。従来の発行−購読ネットワークと同様に、購読予約は、興味があるコンテンツアイテムの集合を特徴付ける。これに一致する、以前に発行された通知は、キャッシュから再生され（ステップ６３８）、ＣＢＲを用いて消費者にプッシュされる（ステップ６４０）。
【０２４１】
図２４Ｆは、処理６３０を更に説明するシーケンス図である。図２４Ｆは、広告主（例えば、発行者装置１００を使用する）と、ＣＢＲインフラストラクチャ（例えば、インテリジェントルータ９２のネットワーク）と、要求者（例えば、購読者装置１２２を使用する）との間のインタラクションを表している。このシーケンス図は、好ましくは、処理６３０を実行する複数のプロセッサ（例えば、プロセッサ９３、プロセッサ１１４及びプロセッサ１３２）の動作を示している。
【０２４２】
４．図２４Ｇ及び図２４Ｈは、発行−購読システムを用いる第４のクエリ応答処理６５０を示すフローチャートである。処理６５０は、様々な発行−購読システムで実行できる。例えば、処理６５０は、ソフトウェア制御の下で、インテリジェントルータ９２（又は対応する機能を有するＡＳＩＣ９１）内のプロセッサ９３により実行してもよく、例えば、ユーザ装置１２２、１００内のプロセッサ１３４、１１４によって実行されるエージェント１２８、１０５として表現されるソフトウェアモジュールにおいて実現してもよい。
【０２４３】
図２４Ｇは、処理６５０のデータ広告フェーズを示している。まず、データ広告が受け取られる（ステップ６５２）。消費者が購読予約を用いて、クエリの組を特定し、作成者が通知を用いて、単集合コンテンツアイテムを広告できるようにするために、及び購読予約と通知のこのような用途に必要となる時間的な順序の逆転を実現するために、データ広告を同等な購読予約に変換する存在論的変換（ontology transformation）を実行する（ステップ６５４）。購読予約（変換の対象となるデータ広告）は、ＣＢＲネットワークに登録される（例えば、購読予約は、インテリジェントルータ９２に保存される）（ステップ６５６）。
【０２４４】
図２４Ｈは、処理６５０のクエリ応答フェーズを示示している。まず、クエリが受け取られる（ステップ６５８）。上述したデータ広告と同様に、クエリは、存在論的変換によって、同等な通知に変換される（ステップ６６０）。ステップ６５４及びステップ６６０による古い空間（例えば、データ広告）から新たな空間（例えば、同等な購読予約）への変換は、まず、新たな空間において、古い空間からの属性と表現演算子の組合せを表す属性を定義する処理を含む。更にこの変換は、新たな空間において、古い空間におけるクエリと広告にそれぞれ等しい通知と購読予約を作成する処理を含む。変換は、変換されていないデータ広告が変換されていないクエリに一致する場合に且つこの場合のみに通知が購読予約に一致するという要求を満たさなければならない。
【０２４５】
通知（変換されたクエリ）は、ＣＢＲを実行する発行−購読システムによって、通知に対するフィルタとして購読予約（変換されたデータ広告）を用いて、広告主にプッシュされる（ステップ６６２）。ＣＢＲは、上述したインフラストラクチャを用いて、上述した処理のいずれに従って実行してもよい。広告主は、何らかの非発行−購読手段（例えば要求者へのユニキャスト接続）を介して、又は発行−購読ネットワークを用いた同意に基づく取り決めを介して変換された通知を受け取り、要求者に応答データを返す（ステップ６６４）。
【０２４６】
図２４Ｉは、処理６００を更に説明するシーケンス図である。図２４Ｉは、広告主（例えば、発行者装置１００を使用する）と、ＣＢＲインフラストラクチャ（例えば、インテリジェントルータ９２のネットワーク）と、要求者（例えば、購読者装置１２２を使用する）との間のインタラクションを表している。このシーケンス図は、好ましくは、処理６５０を実行する複数のプロセッサ（例えば、プロセッサ９３、プロセッサ１１４及びプロセッサ１３２）の動作を示している。
【０２４７】
【表３０】
2005521950.tif 000034
【０２４８】
【表３１】
2005521950.tif 000035
【０２４９】
【表３２】
2005521950.tif 000036
【０２５０】
【表３３Ａ】
2005521950.tif 000037
【０２５１】
【表３３Ｂ】
2005521950.tif 000038
【０２５２】
【表３３Ｃ】
2005521950.tif 000039
【０２５３】
【表３３Ｄ】
2005521950.tif 000040
【０２５４】
５．第５の処理では、更なるインタフェース点及び／又はメッセージフォーマットにより、発行−購読ネットワークの機能が拡張され、これにより、作成者は、通知、広告及び応答を区別でき、消費者は、購読予約とクエリを区別できる。ネットワークにおいて、様々な基本的要素（primitives）を分離することにより、データ構造、アルゴリズム及びプロトコルの均一の組を用いると同時に、両方のスタイルのインタラクションが実現できる。
【０２５５】
持続的で信頼性が高いメッセージ配信
以下、発行−購読ネットワークにおける、ネットワーク、リンク及び／又はノード故障に関連するメッセージの持続的な保存と再生、メッセージフローの再開及び／又は継続のための装置及び方法について説明する。メッセージの持続性とは、メッセージを保存し、後にこの保存されたメッセージを読み出すことができる性質を指す。例えば電子メールを始めとする多くの特定の用途では、通常、ネットワークを介して通信されるメッセージについて、長いメッセージ持続性が必要とされる。ネットワーク障害が発生しない理想的な条件では、常時接続された購読者は、これらの特定の用途において必要とされる以上の如何なる持続も求めない。しかしながら、現実には、メッセージは、ネットワークを介して伝送されている間に様々な理由のために「失われる」ことがある。この理由としては、例えば、（１）ネットワーク又はユーザ側における故障又はバッファオーバフローや（２）ユーザが自らネットワーク接続を切断した後、所定の期間経過後に再び接続する場合等がある。
【０２５６】
この実施例におけるイベント通知プラットフォームの持続モデルは、短期持続と長期持続の２つのレベルに分割される。短期持続は、ネットワーク輻輳又は短期的なリンク障害のために失われたパケットを復元する。長期持続は、例えば、ユーザ接続の障害、ユーザ装置の障害、アプリケーションの障害及び／又はより長い期間ネットワーク内の障害等を含む他の障害に起因して失われたパケットを復元する。
【０２５７】
チャンネル（例えば、上述のように、）は、持続的である場合もあり、実時間である場合もある。実時間チャンネルは、通常、実時間のみにおいて有用なデータを送信し、アプリケーション固有の如何なる持続要求も有さない。持続的なチャンネルは、持続タイムフレームＴの間、ネットワークを伝送されるデータを保存する。換言すれば、持続的なチャンネルにおいては、持続性は、タイムフレームＴの間保証されている。データのこの持続は、例えば次のように実現される。チャンネルの持続的な所要時間の間、各エッジノードでデータをキャッシングする。障害が発生した条件下で、ユーザにとってトランスペアレントなキャッシュからデータを読み出す。ユーザがキャッシュからデータを検索できるようにする。ルータ障害を防ぎ、ルータの間の信頼できるトンネルを設立することによってネットワークを介したデータのフローを持続的にする。そして、複製によって、チャンネル成分を障害から保護する。
【０２５８】
Ａ．キャッシングによる持続
時限式の持続（タイムフレームＴによる）は、発行−購読ネットワークから、直前のタイムフレームＴにおけるデータを検索する能力である。例えば、購読者がネットワーク接続を切断した場合、購読者が不在の間に受け取られる、持続的なチャンネルに関する如何なるデータも（データの受信から）タイムフレームＴが経過するまでの間、ネットワークで保持される。ユーザがタイムフレームＴ内に戻れば、如何なるデータも失われない。
【０２５９】
図２５Ａは、キャッシングによって持続性を実現する発行−購読ネットワークの一部を示すブロック図である。図２５Ａに示すように、ネットワークは、コアルーティングノードとエッジルーティングノードとを備える。各ルーティングノードは、図４を用いて上述したように、好ましくは、インテリジェントルータ９２（エッジルーティングノードと共に示す）と、従来のバックボーンルータ（図示せず）とを備える。持続的なチャンネルのためのキャッシングを行う必要がある各インテリジェントルータ９２は、図２５Ａに示すように、好ましくは同じ場所にキャッシュマネージャ２１８を備える。キャッシュマネージャ２１８については、図８を用いて上述した通りである。インテリジェントルータ９２は、好ましくは、失われたデータを読み出し又はルータ故障から復元するための短期的な持続性を実現する。キャッシュマネージャ２１８は、チャンネルにおける長期的な持続を実現するために、データをキャッシングする。キャッシュマネージャ２１８は、好ましくは、キャッシュ５４０内にこのデータをキャッシングする。キャッシュ５４０は、好ましくは、メモリとディスク（図示せず）を含んでいる。また、図２５Ａに示すエージェント１２８は、図５を用いて上述したように、好ましくは、購読者装置１２２（図２５Ａでは示していない）内に設けられる。エージェント１２８は、キャッシュマネージャ２１８と通信し、キャッシュ５４０からデータを検索し、検索したデータを受け取り、検索したデータを組織化する。
【０２６０】
図２５Ａに示していないが、エッジルーティングノードよりアップストリーム側の第１のレベルの各コアルーティングノードは、好ましくは、キャッシュマネージャ２１８を備える。第１のレベルのアップストリームコアルーティングノードとは、エッジルーティングノードよりアップストリーム側に隣接するルーティングノードを意味する。発行−購読ネットワークは、多くの場合、複数の第１のレベルのコアルーティングノードを含んでいるが、図２５Ａでは、１つの第１のレベルのコアルーティングノード、すなわちコアルーティングノード５４８のみを示している。上述のように、キャッシュマネージャ２１８は、自らが存在するネットワークノードにおいて、データのローカルなキャッシングを実現する。したがって、例えば、コアルーティングノード５４８を含む様々なコアルーティングノードに存在するキャッシュマネージャ２１８の動作は、ネットワークコア内のデータの分散型のキャッシングを実現する。この分配型のキャッシングは、エッジルーティングノードのキャッシングにバックアップを提供する。
【０２６１】
キャッシュマネージャ２１８は、好ましくは、キャッシュ５４６を管理するルーチン又はサブルーチンを含む。これらのルーチンは、図２５Ｂに示すように、好ましくはデータキャッシングルーチン５４５と、キャッシュデータ検索ルーチン５４７と、キャッシュデータパージルーチン５４９とを含んでいる。これらのルーチンは、それぞれ別々に動作でき、又は図２５Ｂに示すように、互いに通信し及び／又は制御を渡すことができる。
【０２６２】
図２５Ｃは、単一のメッセージに含まれたデータのための持続的なキャッシング処理５５０のフローチャートである。図２５Ｃに示すように、処理５５０は、図２５Ｂに示す各ルーチンによって実行されるステップの具体例を示している。実際の動作では、これらのルーチンは、互いに独立して実行される。処理５５０は、キャッシングを提供するインテリジェントルータ９２、エッジルーティングノード又はコアルーティングノードで実行できる。
【０２６３】
処理５５０は、例えば、インテリジェントルータ９２におけるプロセッサ９３によって実行されるソフトウェアモジュール（例えば、キャッシュマネージャ２１８）によって実現できる。これに代えて、この処理をＡＳＩＣで実現してもよく、或いはハードウェアとソフトウェアの組合せによって実現してもよい。これらは、対応するインテリジェントルータ９２と同じ物理機器であっても異なる物理機器であってもよい。インテリジェントルータ９２は、キャッシュマネージャ２１８にキャッシングする必要があるメッセージを転送する。キャッシュマネージャ２１８は、データを含むメッセージを受け取り（ステップ５５２）、メッセージ内のデータに時刻を表すマークを付し（ステップ５５４）、キャッシュ５４６にデータをキャッシングする（ステップ５５６）（図１４おけるステップ３２２〜３２６と同様（上述参照））。キャッシュマネージャ２１８は、上述のように、例えば、チャンネル識別子、サブジェクト、発行者識別子、タイムスタンプ等を含む様々な手法でキャッシングされたデータにインデクスを付す（ステップ５５８）。インデクス付与ステップは、キャッシングステップ５５６より先に行ってもよく、これと同時に行ってもよく、これの後に行ってもよい。キャッシングされたデータには、インデクスが付され、階層的なディレクトリ構造内に保存される（例えば、図１５参照）。また、表１７〜１９もこの処理に関連する。
【０２６４】
データは、メモリ（キャッシュ５４６）にキャッシングされ、定期的にディスクに移される（ステップ５６０）。特定のチャンネルのための持続タイムフレーム「Ｔ」は、それぞれがサイズＧを有するＮ個のタイムグレイン（time grains）に分割される。メモリにおけるキャッシング（ステップ５５６）は、Ｇの期間だけ行われる。キャッシュマネージャが、期間Ｇが経過したと判定すると（ステップ５５９）、データは、ディスクに移される（ステップ５６０）。キャッシュマネージャ２１８は、持続タイムアウト期間Ｔの間、ディスク上にデータを保存する。
【０２６５】
時間が持続タイムアウト（Ｔ）＋期間の上限以上に経過すると（ステップ５６２）、期間Ｇに対応するデータは、ディスクから削除される（ステップ５６４）。説明のために、あるチャンネルについて、Ｔが２時間であるとする。更に、キャッシュマネージャ２１８は、１５分のタイムグレインＧを用いるとする。ディスクからデータを削除するために、好ましくは、期間Ｇ（１５分）の間にキャッシングされた最後のデータがＴ（２時間）の間保存された場合、その１５分の期間にキャッシングされた全体のデータを破棄するといったポリシを用いる。したがってその１５分の期間の最初にキャッシングされたデータは、破棄されるまでに、２時間以上保存される。この実施例では、各１５分間にキャッシングされるデータは、データのブロックである。持続タイムフレームＴがＮ個の期間に分割される場合、如何なる時刻においても、各サブジェクトのためのキャッシュ５４０内にＮ＋１個のデータブロック（ディスクにＮ個とメモリに１個）が存在する。
【０２６６】
キャッシュマネージャ２１８がデータに関する要求を受け取ると（ステップ５６６）、キャッシュマネージャ２１８は、インデクスを用いて、その要求されたキャッシングされた（期間Ｔが経過していない）データを検索し（ステップ５６８）、要求した購読者装置１２２へのルーティングのために、検索されたデータをバックボーンルータに転送する（ステップ５７０）。図２５Ｄを用いて後述するように、エッジルーティングノードにおいて、データがキャッシュ５４０にない場合、キャッシュマネージャ２１８は、アップストリームの第１のレベルのコアルーティングノード（例えば、コアルーティングノード５４８）におけるキャッシュを呼び出し、データを検索してもよい。キャッシュマネージャ２１８が要求を受け取らない場合、処理５５０は、ステップ５５２に戻る。
【０２６７】
インテリジェントルータ９２のキャッシュマネージャ２１８における障害の発生に備えて、キャッシュ５４６へのデータの保存に加えて、データは、第１のレベルのアップストリームコアルーティングノード（例えば、コアルーティングノード５４８）のキャッシュにも保存される。したがって、ステップ５５２〜５６４は、好ましくは、メッセージをルーティングする前に及びエッジルーティングノードで処理５５０を実行する前に第１のレベルのアップストリームコアルーティングノードにおいて実行される。
【０２６８】
（例えば、エッジルーティングノード内の）キャッシュ５４６及び第１のレベルのアップストリームコアルーティングノード（例えば、第１のアップストリームのコアルータ５４８）におけるキャッシュの位置は、エージェント１２８にローカルに保存される。したがって購読者装置１２２が移動した場合（例えば、購読者が、異なるエッジルーティングノードを介してネットワークに再接続する携帯電話の契約者である場合）、エージェント１２８は、新たなエッジルーティングノードに対し、購読者装置１２２が移動する前に接続されていたエッジルーティングノードと第１のレベルのアップストリームコアルーティングノードのキャッシュの位置を知らせる。これにより、購読者装置１２２が移動しても、データの持続性を維持することができる。
【０２６９】
持続的なメッセージ検索処理５８０のフローチャートである図２５Ｄに示すように、購読者装置１２２のユーザアプリケーション１８２は、好ましくは、キャッシュからデータを要求するためにエージェント１２８を呼び出す（ステップ５８２）。エージェント１２８は、保存されたキャッシュ位置を用いて、適切なエッジルーティングノードにおけるキャッシュ５４６を呼び出し（例えばｇｅｔｃａｃｈｅコマンドを用いる）、データを取得する（ステップ５８４）。エージェント１２８により、どのタイムフレームのデータを読み出すかを指定してもよい。これに代えて、キャッシュマネージャ２１８は、購読者装置１２２に関する接続履歴を検査して（上述の表１８参照）、キャッシングされたどのデータを読み出すかを判定してもよい。接続履歴により、購読者装置１２２が期間Ｘの間オフラインであったことがわかった場合、キャッシュマネージャ２１８は、期間Ｘについてキャッシングされている全てのデータを検索してもよい。更に、キャッシュマネージャ２１８は、単に持続タイムフレームＴ間にキャッシングされた全てのデータを検索してもよい。エッジルーティングノードのキャッシュ５４６にデータがある場合（ステップ５８５）、エージェント１２８は、キャッシュ５４６からのデータを読み出す（ステップ５８６）。
【０２７０】
キャッシュ５４６がデータを有していない場合、キャッシュマネージャ２１８は、エージェント１２８によって提供される、第１のレベルのアップストリームルーティングノード（例えば、コアルーティングノード５４８）におけるキャッシュのリストを用いて、これらのアップストリームのキャッシュを呼び出し、データを検索する（ステップ５８８）。キャッシュマネージャ２１８がアップストリームのキャッシュ又はキャッシュ内のデータの位置を検出すると、キャッシュマネージャ２１８は、そのアップストリームのキャッシュからデータを読み出す（ステップ５９０）。キャッシュマネージャ２１８は、重複抑制処理（すなわち、重複データを排除する処理）を実行した後に（ステップ５９２）、エージェント１２８にデータを転送（ステップ５９４）してもよい。
【０２７１】
Ｂ．障害保護による持続
本発明に基づくインフラストラクチャは、チャンネルマネージャと、イベントエージェントと、ルーティングノード及びキャッシュ、又はこれらと同等の構成要素を含んでいる。障害が発生している条件の間にメッセージが失われてしまうことを防ぐためには。これらの各構成要素を保護する必要がある。
【０２７２】
１．チャンネルマネージャ障害の保護
チャンネルマネージャについては、図６を用いて上述した。チャンネルマネージャは、複製によって障害から保護される。チャンネルマネージャは、１つのプライマリモジュールと他のバックアップモジュールを含むプライマリバックアップグループ内で動作する。プライマリモジュールは、データに関する全ての更新を行い、及びクエリに応答する機能を担っている。バックアップモジュールは、クエリに応答するのみで、更新を実行する機能は有していない、すなわち、バックアップモジュールは、全ての更新をプライマリに送る。
【０２７３】
チャンネルマネージャからチャンネル情報を検索する必要がある発行−購読ネットワークのコンポーネントは、チャンネルマネージャクライアントと呼ばれ、チャンネルマネージャクライアントには、チャンネルマネージャが割り当てられる。これらのクライアントには、インテリジェントルータ９２及びそのキャッシュマネージャ２１８、購読者装置１２２及びそのエージェント１２８等が含まれる。クライアントに割り当てられたチャンネルマネージャに障害が発生すると、クライアントは、別のチャンネルマネージャにアクセスし、これに接続する。
【０２７４】
２．ルータ及びキャッシュ障害の保護
ルーティングインフラストラクチャコンポーネントのための回復には、幾つかのレベル（レベル０、レベル１〜レベル３）がある。レベル０は、障害の影響をローカルに（すなわち、障害が発生したルータ内部で）制御し、回復は、障害が発生したルーティングノードに制限される。レベル０回復は、ハードウェア冗長性に依存して、ハードウェア障害からの回復を行う。すなわち、ルータのハードウェア資源は、複製される。レベルの０回復の主な利点は、短い回復時間とトランスペアレント性である。レベル１は、ＬＡＮ内の障害の影響を制御する。レベル１回復は、クラスタ技術を用いたＩＰ障害迂回によって実現される。しかしながら、障害が発生したルータから、これに隣接するルータへのトンネルは、回復の後に再構築する必要がある。したがって、レベル１回復は、レベル０回復に比べてトランスペアレント性が低く、実行に時間がかかる。
【０２７５】
レベル２回復の目的は、複雑な再構成とデータ損失を引き起こすようなネットワークトポロジへの影響を生じることなくＷＡＮの上のリモートバックアップルータによって、ルータ障害を回復することである。レベル２回復は、ルータをグループ化することによって（例えば、プライマリとバックアップルータ）、一組の回復を実現する。１つのルータが１つのグループにおけるプライマリルータとして機能すると共に、別のグループにおけるバックアップルータとして機能することもできる。プライマリルータは、ルーティングとネットワーク構成に関する情報をバックアップルータと交換し、バックアップルータがプライマリルータにおける障害を検出した場合、バックアップルータは、プライマリルータの機能を引き継ぐ。バックアップは、障害が発生したと考えられるプライマリルータに隣接するプライマリルータの大多数に接続できることを確認することにより、障害が発生したのがプライマリルータとのリンクではなく、プライマリルータであることを確認する。障害が発生したと考えられるプライマリルータに隣接するプライマリルータの大多数に接続することができない場合、レベル３回復がトリガされる。
【０２７６】
レベル回復３では、システム全体に亘る連携された回復を行う。レベル３回復は、他の全てに障害が発生している場合に実行される。このような障害を検出したルータは、ダウンストリームの全てのルータに再開通知（restart notice）を送信する。通知を受け取ったルータは、他の全ての回復を中断させ、全てのネットワークサービスを停止し、再開メッセージにおける全てのマルチキャスティング情報を削除する。全てのネットワークサービスが終了すると、ルータは、マルチキャスティングのためのツリー構築処理を含む全てのサービスを再開する。ネットワークにおける如何なる失敗もより低いレベルの回復手続きによって処理される。低いレベルの回復が適用できない場合、回復は、より高い次のレベルの回復を順次実行してもよい。低いレベルの回復のいずれも動作しない場合、レベル３回復が用いられる。
【０２７７】
３．信頼できるトンネル
ネットワークに障害が発生している間、メッセージの損失を防ぐために、ルーティングノード間のトラヒックを伝送する信頼できるトンネルを用いる。トンネルは、図３を用いて上述した通りである。伝送期間中の如何なるメッセージ損失も受信端末によって検出され、受信端末は、失われたメッセージを再送処理するように送信側に依頼する。
【０２７８】
以上、例示的な実施例を用いて本発明を説明してきたが、これらの実施例を様々に変形できることは当業者にとって明らかであり、本発明は、これらの如何なる適応化又は変形をも含む。例えば、本発明の範囲から逸脱することなく、様々な種類の発行者装置、ユーザ又は購読者装置、これらのチャンネル及び構成、コンテンツベースのルーティング及び他の機能のハードウェア及びソフトウェアによる実現が可能である。この発明は、特許請求の範囲及びその均等物によってのみ制限される。
【図面の簡単な説明】
【０２７９】
【図１】ネットワークコアにおけるこのインテリジェントルーティングを概念的に示すブロック図である。
【図２】発行者及び購読者のためのインテリジェントルータを示すネットワーク図である。
【図３】インテリジェントルータとバックボーンルータのための例示的なネットワークインフラストラクチャの構成を示す図である。
【図４】インテリジェントルータのハードウェア構成を示す図である。
【図５】発行者装置及び購読者装置の構成を示す図である。
【図６】インテリジェントルータのチャンネルマネージャの構成を示す図である。
【図７】インテリジェントルータを有するネットワークに接続するためのユーザ装置のソフトウェアコンポーネントの構成を示す図である。
【図８】インテリジェントルータのためのソフトウェアコンポーネントの構成を示す図である。
【図９】メッセージのためのパケット構造を示す図である。
【図１０】発行処理のフローチャートである。
【図１１】購読処理のフローチャートである。
【図１２】チャンネル及び購読者画面を示す図である。
【図１３】コンテンツベースのルーティング処理のフローチャートである。
【図１４】キャッシング処理のフローチャートである。
【図１５】キャッシュインデクスを示す図である。
【図１６】送信メッセージのためのエージェント処理のフローチャートである。
【図１７】受信メッセージのためのエージェント処理のフローチャートである。
【図１８】メッセージの符号化の具体例を説明する図である。
【図１９】購読予約を保存するためのデータベース構造を示す図である。
【図２０】ワイルドカード処理のフローチャートである。
【図２１】発行−購読ネットワークにおける通知の信頼性を高める処理のフローチャートである。
【図２２Ａ】フィルタ伝播処理のフローチャートである。
【図２２Ｂ】フィルタ削減処理のフローチャートである。
【図２２Ｃ】他のフィルタ伝播処理のフローチャートである。
【図２２Ｄ】発行−購読ネットワークトポロジを示す図である。
【図２３Ａ】プリコンピュテーションを用いるコンテンツベースのルーティング処理のフローチャートである。
【図２３Ｂ】プリコンピュテーションを用いるコンテンツベースのルーティング処理のフローチャートである。
【図２４Ａ】発行−購読ネットワークを用いたクエリ応答処理のフローチャートである。
【図２４Ｂ】図２４Ａの処理を更に説明するシーケンス図である。
【図２４Ｃ】発行−購読ネットワークを用いた他のクエリ応答処理のフローチャートである。
【図２４Ｄ】図２４Ｃの処理を更に説明するシーケンス図である。
【図２４Ｅ】発行−購読ネットワークを用いた他のクエリ応答処理のフローチャートである。
【図２４Ｆ】図２４Ｅの処理を更に説明するシーケンス図である。
【図２４Ｇ】発行−購読ネットワークを用いた他のクエリ応答処理のフローチャートである。
【図２４Ｈ】発行−購読ネットワークを用いた他のクエリ応答処理のフローチャートである。
【図２４Ｉ】図２４Ｇ及び図２４Ｈの処理を更に説明するシーケンス図である。
【図２５Ａ】キャッシングによって持続性を実現する発行−購読ネットワークの一部を示すブロック図である。
【図２５Ｂ】キャッシュマネージャルーチンの具体例を示す図である。
【図２５Ｃ】持続的なキャッシング処理のフローチャートである。
【図２５Ｄ】持続的なメッセージ検索処理のフローチャートである。
【図１】
2005521950.tif 000041
【図２】
2005521950.tif 000042
【図３】
2005521950.tif 000043
【図４】
2005521950.tif 000044
【図５】
2005521950.tif 000045
【図６】
2005521950.tif 000046
【図７】
2005521950.tif 000047
【図８】
2005521950.tif 000048
【図９】
2005521950.tif 000049
【図１０】
2005521950.tif 000050
【図１１】
2005521950.tif 000051
【図１２】
2005521950.tif 000052
【図１３】
2005521950.tif 000053
【図１４】
2005521950.tif 000054
【図１５】
2005521950.tif 000055
【図１６】
2005521950.tif 000056
【図１７】
2005521950.tif 000057
【図１８】
2005521950.tif 000058
【図１９】
2005521950.tif 000059
【図２０】
2005521950.tif 000060
【図２１】
2005521950.tif 000061
【図２２Ａ】
2005521950.tif 000062
【図２２Ｂ】
2005521950.tif 000063
【図２２Ｃ】
2005521950.tif 000064
【図２２Ｄ】
2005521950.tif 000065
【図２３Ａ】
2005521950.tif 000066
【図２３Ｂ】
2005521950.tif 000067
【図２４Ａ】
2005521950.tif 000068
【図２４Ｂ】
2005521950.tif 000069
【図２４Ｃ】
2005521950.tif 000070
【図２４Ｄ】
2005521950.tif 000071
【図２４Ｅ】
2005521950.tif 000072
【図２４Ｆ】
2005521950.tif 000073
【図２４Ｇ】
2005521950.tif 000074
【図２４Ｈ】
2005521950.tif 000075
【図２４Ｉ】
2005521950.tif 000076
【図２５Ａ】
2005521950.tif 000077
【図２５Ｂ】
2005521950.tif 000078
【図２５Ｃ】
2005521950.tif 000079
【図２５Ｄ】
2005521950.tif 000080
【国際調査報告】
2005521950.tif 000081