(57)【要約】パケットをフィルタリングし且つパケットを落とす（１０）パケット・フィルタ（１０）ネットワーク（図１）である。
2005500741.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークにおいてパケットを処理する方法であって、
ヘッダ・セクション及びペイロード・セクションを有するパケットを受信するステップと、
パケットの処理の仕方を決定するに使用のためパケットのペイロード・セクションをネットワーク・コアにおいて検査するステップと、
前記検査に基づいて前記パケットを選択的に処理するステップと
を備える方法。
【請求項２】
前記検査をするステップは、前記ペイロード・セクション内の情報がコンテンツ述部情報を対応のネットワーク宛先、又はルータ内処理を支配する対応の規則と関連付ける構造における前記コンテンツ述部情報と整合するか否かを決定するステップを含む請求項１記載の方法。
【請求項３】
前記ネットワーク・コア内のルータで前記検査するステップを実行するステップを更に含む請求項１記載の方法。
【請求項４】
前記検査するステップが、フィルタを前記ペイロード・セクション内の情報に適用するステップを含む請求項１記載の方法。
【請求項５】
前記検査するステップを実行するに使用のため前記フィルタを前記ネットワーク内のルータに伝搬させるステップを更に含む請求項４記載の方法。
【請求項６】
前記受信するステップ、前記検査するステップ及び前記処理するステップを実行するためルータを前記ネットワークにおいてプログラミングするステップを更に含む請求項１記載の方法。
【請求項７】
前記検査するステップが、パケットをルート付けする仕方を決定するに使用のため属性を検査するステップを含む請求項１記載の方法。
【請求項８】
ネットワークにおいてメッセージを処理する方法であって、
ヘッダ・セクション、少なくとも１つの主題及び少なくとも１つの属性を有するメッセージを受信するステップと、
前記メッセージから主題及び属性を検索するステップと、
申し込みを前記主題に基づいて検索するステップと、
前記メッセージをルート付けする仕方を決定するためネットワーク・コアにおいて前記属性を前記申し込みに適用するステップと
を備える方法。
【請求項９】
前記申し込みを検索するステップが、前記申し込みと一致するフィルタを検索するステップを含む請求項８記載の方法。
【請求項１０】
前記属性が前記申し込みを満足させる場合前記メッセージをルート付けするステップを更に含む請求項８記載の方法。
【請求項１１】
前記属性がいずれか又は全ての申し込みを満足させない場合前記メッセージを廃棄するステップを更に含む請求項８記載の方法。
【請求項１２】
複数の申し込みと一致する複数のフィルタを検索するステップと、
複数のメッセージから複数の属性を検索するステップと、
属性のそれぞれをフィルタのそれぞれに適用して、対応の申し込みのうちのいずれかが満足されるかどうかを決定するステップと、
前記申し込みのうちのいずれかが満足されるか否かに基づいて前記メッセージを選択的にルート付けするステップと
を更に備える請求項８記載の方法。
【請求項１３】
前記適用するステップを前記ネットワーク・コア内のルータで実行するステップを更に含む請求項８記載の方法。
【請求項１４】
コンテンツ・ベースのルート付けを容易にするようチャネルを構成する方法であって、
発行−申し込みネットワーク内の複数のノード間に論理通信経路を与えるチャネルを確立するステップと、
前記通信経路にわたって情報のコンテンツ・ベースのルート付けするに使用のため前記チャネルを構成するステップと、
前記通信経路を介した送信のためのメッセージ・フォーマットを前記チャネルに基づいて選択するステップと
を備える方法。
【請求項１５】
主題を前記メッセージ・フォーマットにおける数字にマッピングするステップを更に含み、
前記主題が、前記チャネルを介して発行されるべきコンテンツと一致する
請求項１４記載の方法。
【請求項１６】
前記構成するステップが、パケットをフィルタリングするのを実行するためのチャネルを申し込みに基づいて構成するステップを含む請求項１４記載の方法。
【請求項１７】
前記確立するステップが、前記ネットワーク内の複数のルータの間に前記チャネルを分散させるステップを含む請求項１４記載の方法。
【請求項１８】
前記確立するステップが、前記チャネルを介して発行されるべきコンテンツに基づいて前記チャネルを設定するステップを含む請求項１４記載の方法。
【請求項１９】
前記確立するステップが、
前記チャネルに関するメッセージ・フォーマットを決定するステップと、
前記チャネルに関するプロキシを設定するステップと、
通知を前記メッセージ・フォーマットに基づいて生成するステップと、
前記通知を発行するステップと
を備える請求項１８記載の方法。
【請求項２０】
前記チャネルを介して発行されたコンテンツに関する申し込みをユーザから受信するステップを更に含む請求項１４記載の方法。
【請求項２１】
前記申し込みを受信するステップが、
前記チャネルの選択を受信するステップと、
前記チャネルについてのユーザの申し込みに関するパラメータを受信するステップと
を含む請求項２０記載の方法。
【請求項２２】
ユーザの申し込みを前記チャネルを介してネットワーク・コア内のルータに伝搬させるステップを更に含む請求項２０記載の方法。
【請求項２３】
コンテンツを前記チャネルを介して受信するステップと、
前記コンテンツを前記ネットワーク内ルータでローカルにキャッシュするステップと、
前記のキャッシュされたコンテンツをタイム・マーキングするステップと
を更に含む請求項１４記載の方法。
【請求項２４】
前記のキャッシュされたコンテンツを、前記チャネルの識別、前記チャネルと一致する主題の識別、及び前記タイム・マーキングにより索引付けするステップを更に含む請求項２３記載の方法。
【請求項２５】
前記ルータで、前記のキャッシュされたコンテンツと関連する要求を受信するステップと、
前記のキャッシュされたコンテンツの少なくとも一部を前記要求及び前記タイム・マーキングに基づいて検索し且つ送信するステップと
を更に備える請求項２３記載の方法。
【請求項２６】
コンテンツ・ベースのルート付けを容易にするようチャネルを構成する方法であって、
ネットワーク内のルータ間に論理接続を確立するステップと、
前記論理接続を、少なくとも１つの主題と関連するコンテンツの送信のためのチャネルとして構成するステップと、
前記チャネルを介したコンテンツ・ベースのルート付けに使用のため属性を与えるステップと
を備える方法。
【請求項２７】
前記チャネル及び属性の識別を前記ネットワーク内ルータに送信するステップを更に含む請求項２６記載の方法。
【請求項２８】
発行−申し込みネットワークにおいて述部を送信する方法であって、
申し込みと関連するブール値化された述部を含む表現を受信するステップと、
前記表現を、コンテンツ・ベースのルート付けに使用のため前記ネットワークにおける送信のためメッセージに符号化するステップと、
コンテンツ・ベースのルート付けを前記申し込みに与えるためネットワーク・コア内の少なくとも１つのルータに前記メッセージを送信するステップと
を備える方法。
【請求項２９】
前記符号化するステップが、前記表現を平坦なメッセージ・フォーマットに変換するステップを含む請求項２８記載の方法。
【請求項３０】
前記受信するステップが、前記述部に関して論理積、論理和又は否定の項を受信するステップを含む請求項２８記載の方法。
【請求項３１】
前記符号化するステップが、前記表現を対応の論理和標準形に変換するステップを含む請求項２８記載の方法。
【請求項３２】
前記符号化するステップが、前記論理和標準形を、属性試験のビットストリング符号化の対応シークエンスに変換するステップを含む請求項３１記載の方法。
【請求項３３】
前記符号化するステップが、前記表現内の不同等パラメータを肯定的形式に変換するステップを含む請求項２８記載の方法。
【請求項３４】
前記符号化するステップが、レンジ・フィルタ及びメンバーシップ試験を含むようＡＮＤ表現を論理和標準形に単純化するステップを含む請求項３１記載の方法。
【請求項３５】
前記申し込みを受信するステップと、
前記表現を前記申し込みから生成するステップと
を更に含む請求項２８記載の方法。
【請求項３６】
前記申し込みの中の間違いを検出するため前記表現をパーズするステップを更に含む請求項２８記載の方法。
【請求項３７】
前記表現をデータ構造体に格納するステップを更に含む請求項２８記載の方法。
【請求項３８】
発行−申し込みネットワークに関する申し込みを格納する方法であって、
構造を指定して、前記ネットワークにおける申し込みを格納するステップと、
前記構造を複数の副表現に分割するステップと、
前記副表現を用いて、特定の申し込みを集約的に指定するステップと、
特定の申し込みに関して、ブール値化された述部を前記副表現のうちの少なくとも１つと関連付けするステップであって、前記ブール値化された述部が、コンテンツ・ベースのルート付けを前記申し込みに与えるため、前記特定の申し込みに関する通知要素の指示を与える、前記関連付けするステップと
を備える方法。
【請求項３９】
前記の用いるステップが、１個の特定の副表現を複数の申し込みにおいて用いるステップを含む請求項３８記載の方法。
【請求項４０】
前記関連付けするステップが、前記特定の申し込みに関して、論理積、論理和又は否定の述部を前記副表現と関連付けするステップを含む請求項３８記載の方法。
【請求項４１】
前記特定の申し込みについて前記副表現のうちの少なくとも１つに関する一定値を指定するステップを更に含む請求項３８記載の方法。
【請求項４２】
前記特定の申し込みに関する複数の通知要素間の関係を指定するステップを更に含む請求項３８記載の方法。
【請求項４３】
前記指定するステップが、前記副表現を指定するための複数のレベルを有する階層構造を指定するステップを含む請求項３８記載の方法。
【請求項４４】
前記分割するステップが、前記副表現を用いて、前記申し込みを論理和標準形で格納するステップを含む請求項３８記載の方法。
【請求項４５】
前記分割するステップが、前記申し込みの中の不同等パラメータを前記副表現の中の肯定的形式に変換するステップを含む請求項３８記載の方法。
【請求項４６】
前記分割するステップが、レンジ・フィルタ及びメンバーシップ試験を前記副表現の中に含むようＡＮＤ表現を論理和標準形に単純化するステップを含む請求項４４記載の方法。
【請求項４７】
前記申し込みを受信するステップと、
前記副表現を前記申し込みから生成するステップと
を更に含む請求項３８記載の方法。
【請求項４８】
前記申し込みの中の間違いを検出するため前記副表現をパーズするステップを更に含む請求項３８記載の方法。
【請求項４９】
パケットをネットワークにおいてルート付けする方法であって、
ヘッダ・セクション及びペイロード・セクションを有するパケットを受信するステップと、
ワイルドカードを有する申し込みの中のフィールドの大きさを制約するルート付け規則を用いることにより、前記パケットをルート付けする仕方を決定するに使用のための前記パケットのペイロード・セクションを検査するステップと、
前記パケットを前記の検査に基づいて選択的にルート付けするステップと
を備える方法。
【請求項５０】
前記検査するステップをネットワーク・コア内のルータで実行するステップを更に含む請求項４９記載の方法。
【請求項５１】
前記検査するステップが、フィルタから発生されたルート付け規則を用いるステップを含む請求項４９記載の方法。
【請求項５２】
前記検査するステップが、
前記ペイロード・セクション内のフィルタ・オペランドの中のフィールド数を計数するステップと、
前記フィルタ・オペランドについてのフィールド長規則を前記フィルタ・オペランドに関するフィールド数に基づいて発生するステップと、
前記フィルタ・オペランドのサブフィールドを通じて繰り返し、且つワイルドカードを含むサブフィールドを検出すると、当該サブフィールドを前記フィールド長規則に基づいて変換するステップと
を含む請求項５１記載の方法。
【請求項５３】
前記検査するステップが、前記ペイロード・セクションの中のサブフィールドの大きさを制約するフィルタリング規則を用いるステップを含む請求項５２記載の方法。
【請求項５４】
メッセージをネットワークにおいてルート付けする方法であって、
ヘッダ・セクション、少なくとも１つの主題及び少なくとも１つの属性を有するメッセージを受信するステップと、
前記主題及び属性を前記メッセージから検索するステップであって、前記属性が少なくとも１つのワイルドカード・オペランドを含む、前記検索するステップと、
前記ワイルドカード・オペランドを対応の非ワイルドカード・ルート付け規則に変換するステップと、
申し込みを前記主題に基づいて検索するステップと、
前記メッセージをルート付けする仕方を決定するため前記属性を前記申し込みに適用するステップと
を備える方法。
【請求項５５】
前記適用するステップをネットワーク・コア内のルータで実行するステップを更に含む請求項５４記載の方法。
【請求項５６】
フィルタを用いて、前記属性を前記申し込みに適用するステップを更に含む請求項５４記載の方法。
【請求項５７】
前記変換するステップが、
前記申し込みのためオペランドの中のフィールド数を計数するステップと、
前記オペランドについてのフィールド長規則を前記オペランドに関するフィールド数に基づいて発生するステップと、
前記オペランドのサブフィールドを通じて繰り返し、且つワイルドカードとの整合を検出すると、前記サブフィールドを前記フィールド長規則に基づいて変換するステップと
を含む請求項５４記載の方法。
【請求項５８】
前記変換するステップが、前記ペイロード・セクションの中のサブフィールドの大きさを制約するフィルタリング規則を用いるステップを含む請求項５７記載の方法。
【請求項５９】
発行−申し込みネットワークにおいてパケット及び申し込みを処理する装置であって、
請求項１から５８に記載の方法のうちのいずれかを実行する１つ又はそれより多いモジュールを備える装置。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の参照］
本出願は以下の出願と関連し、それらの全てがあたかも完全に記載されているかのように本明細書に援用されている。
【０００２】
米国仮出願Ｓｅｒｉａｌ  Ｎｏ．６０／３１２，０７４、発明の名称「ペイロード検査を介したパケット・ルート付け（Ｐａｃｋｅｔ  Ｒｏｕｔｉｎｇ  Ｖｉａ  Ｐａｙｌｏａｄ  Ｉｎｓｐｅｃｔｉｏｎ）」、２００１年８月１５日出願；
米国仮出願Ｓｅｒｉａｌ  Ｎｏ．６０／３１２，０７７、発明の名称「チャネルを用いた、ルータでのコンテンツ・ベースのルート付け及びフィルタリング方法及び装置（Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｃｏｎｔｅｎｔ−Ｂａｓｅｄ  Ｒｏｕｔｉｎｇ  ａｎｄ  Ｆｉｌｔｅｒｉｎｇ  ａｔ  Ｒｏｕｔｅｒｓ  Ｕｓｉｎｇ  Ｃｈａｎｎｎｅｌｓ）」、２００１年８月１日出願；
米国仮出願Ｓｅｒｉａｌ  Ｎｏ．６０／３１２，０７６、発明の名称「ブール関数をネットワークを介して送信及び受信する方法（Ｍｅｔｈｏｄ  ｆｏｒ  Ｓｅｎｄｉｎｇ  ａｎｄ  Ｒｅｃｅｉｖｉｎｇ  ａ  Ｂｏｏｌｅａｎ  Ｆｕｎｃｔｉｏｎ  Ｏｖｅｒ  ａ  Ｎｅｔｗｏｒｋ）」、２００１年８月１５日に出願；
米国仮出願Ｓｅｒｉａｌ  Ｎｏ．６０／３１２，０７５、発明の名称「ブール関数を格納して、ネットワークを介して評価、変更、再使用及び配信を可能にする方法（Ｍｅｔｈｏｄ  ｆｏｒ  Ｓｔｏｒｉｎｇ  Ｂｏｏｌｅａｎ  Ｆｕｎｃｔｉｏｎｓ  ｔｏ  Ｅｎａｂｌｅ  Ｅｖａｌｕａｔｉｏｎ，  Ｍｏｄｕｌａｔｉｏｎ，  Ｒｅｕｓｅ，  ａｎｄ  Ｄｅｌｉｖｅｒｙ  Ｏｖｅｒ  ａ  Ｎｅｔｗｏｒｋ）」、２００１年８月１５日出願；
米国仮出願Ｓｅｒｉａｌ  Ｎｏ．６０／３２９，５２６、発明の名称「コンテンツ・ベースのルート付けにおいてサイズ可変のフィールドについてワイルドカード整合の効率的実装（Ｅｆｆｉｃｉｅｎｔ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  Ｗｉｌｄｃａｒｄ  Ｍａｔｃｈｉｎｇ  ｏｎ  Ｖａｒｉａｂｌｅ−Ｓｉｚｅｄ  Ｆｉｅｌｄｓ  ｉｎ  Ｃｏｎｔｅｎｔ  Ｂａｓｅｄ  Ｒｏｕｔｉｎｇ）」、２００１年１０月１７日出願。
【０００３】
［発明の分野］
本発明は、パケット内のペイロードの検査に基づいて、ネットワーク・コア内でパケットをルート付けする方法及び、申し込みを発行−申し込みネットワーク（ｐｕｂｌｉｓｈ−ｓｕｂｓｃｒｉｂｅ  ｎｅｔｗｏｒｋ）において処理する方法及び装置に関する。
【０００４】
［発明の背景］
ネットワーク帯域幅が指数関数的に増大しつつある。しかしながら、ネットワーク・インフラストラクチャ（ルータ、サーバ、デーモン、プロトコル等を含む。）は、依然比較的古い技術を用いている。その結果、インターネット・アプリケーション及びネットワーク・ルータは、帯域幅の増大速度に遅れずについていくことができない。同時に、更に一層多くの装置及びアプリケーションがネットワーク化可能になりつつある。これらの装置及びアプリケーションがネットワーク・ノードにかける負荷は、途方もなく増大した。また、ネットワーク負荷及びアプリケーションの数の増大により、ネットワーク・アプリケーションの実装及び維持が極めて高度に複雑になった。その結果、ネットワーク帯域幅の増大、及びネットワーク装置及びアプリケーションの偏在した使用により、古いネットワーク・インフラストラクチャで、特にコンテンツをサブスクライバ（ｓｕｂｓｃｒｉｂｅｒ）に発行（ｐｕｂｌｉｓｈ）するとき、データのルート付け及び送信の問題が生じる可能性がある。
【０００５】
ネットワークに情報をサーバからクライアントに押し込ませるモデルが発行−申し込み型（ｐｕｂｌｉｓｈ−ｓｕｂｓｃｒｉｂｅ  ｓｔｙｌｅ）である。このモデルでは、サーバは、どのクライアントがその情報に関心があるか又はそれらがネットワーク内のどこに配置されているかに関係無く、その情報の単純化されたパブリッシャ（ｐｕｂｌｉｓｈｅｒ）となる。クライアントは、情報のためのサブスクライバ（ｓｕｂｓｃｒｉｂｅｒ）となり、ネットワーク内のどこで情報が発行されたかについての詳細に潜在的に関係無く、情報が入手可能となるにつれ情報は配信される。次いで、ネットワークは、発行された情報をサブスクライバへ効率的にルート付けし、情報をアクティブ状態の申し込みに対して整合させ、そしてこれの全てを、パブリッシャ及びサブスクライバに対してトランスペアレントであるやり方で行うのを担う。
【０００６】
サーバの複雑さが発行−申し込みモデルで著しく低減されるので、重量型サーバと軽量型クライアントとの区別が無くなる、又はむしろパブリッシャ又はサブスクライバあるいはこれら両方のいずれかである場合があるピア（ｐｅｅｒ）の概念に併合し始める可能性がある。多数の種類のアプリケーションは、ピア間での発行−申し込み型対話に対して生来の親和性を有する。これらのアプリケーションの多くの根底にある共通のテーマは、発行されて且つ申し込まれた情報がイベントの形式であることである。例えば、投資家は株を売買し、株の価格を変えさせる。交通未遂事故が高速自動車道で生じ、高速自動車道上で交通を渋滞させる。ソフトウエア・システムにおけるセキュリティ・ホールが発見され、ソフトウエアのユーザのためパッチを開発させる。プレーヤがインターネット・ゲームで武器を発砲して、別のプレーヤのアバターを死なせる。これらの例示的現象の全ては、非常に多くのサブスクライバにとって潜在的に興味があり且つネットワークを介して伝搬されて、サブスクライバにイベントがたまたま起こったことを通知することができる当該イベントである。こうして、イベントは単純に、ネットワーク上のある場所で適時にある地点でたまたま起こった潜在的に興味のある何かについての自己完結型の簡潔な情報である。
【０００７】
別の事例はスケジュール設定されたブロードキャストに関係し、そのスケジュール設定されたブロードキャストは、イベントの時間が予測不能で且つランダムである場合非同期のイベントのみに関係するアプリケーションから異なった特性を有する。第１に、イベントは、既知の時間に起こるようスケジュール設定される。第２に、イベントは簡潔な情報である必要がない。代わりに、それは、大量のデータであることができるであろう。興味のあるサブスクライバを見つけた場合ネットワークの構成要素にデータの大量の負荷を指向させることは、かなりのサーバ処理を必要とする。
【０００８】
典型的には、サーバ又はパブリッシャは、発行−申し込みモデル（ｐｕｂｌｉｓｈ−ｓｕｂｓｃｒｉｂｅ  ｍｏｄｅｌ）において発行されたコンテンツを送るべき場所についてネットワークに命令するためネットワークに対してルート付け判断を実行する。パブリッシャは、それが発行するコンテンツの申し込みを格納する。新しいコンテンツを受信し又は発生すると、パブリッシャは、そのコンテンツを申し込みのそれぞれと比較して、いずれかの整合を識別する。コンテンツ（イベント）がいずれかの申し込みを満足させる場合、パブリッシャは、そのコンテンツを対応のサブスクライバにネットワークを介して押し込む。この従来の発行−申し込みモデルは、特により多くの装置がネットワーク化可能になるにつれ、そして申し込みの数が増大するにつれ、極めて大きい負担をパブリッシャにかける。相補的アプローチはまさに気に入らない場合があり、即ち、サブスクライバはそれ自身の申し込みを全ての発行されたイベントについて評価する。
【０００９】
インターネット中の無数のアプリケーションの非常に大きな集中により、イベント通知のエクスプロイト（弱点を利用する）を行う可能性は際限無しになる。しかしながら、これらの可能性は、ルート付け判断を行い且つイベントが申し込みを満足させるときを決定して、パブリッシャへの負担を軽減する一層効率的な方法を必要とする。従って、普及した辛抱強いイベント通知サービスは、インターネット・アプリケーション、並びに他のアプリケーション及び実行にとって極めて大きい付加価値のある恩恵を提供することができるであろう。
【００１０】
［発明の概要］
本発明と一致している第１の方法及び装置は、ネットワークにおいてパケットを処理することを提供する。ヘッダ・セクション及びペイロード・セクションを有するパケットが受信される。パケットのペイロード・セクションが、パケットの処理の仕方を決定するのに使用のためネットワーク・コアにおいて検査され、そして当該パケットが、当該検査に基づいて選択的に処理される。
【００１１】
本発明と一致している第２の方法及び装置は、コンテンツ・ベースのルート付けを容易にするようチャネルを構成することを提供する。チャネルは、発行−申し込みネットワーク内の複数のノード間に論理通信経路を与える。当該チャネルは、通信経路にわたり情報のコンテンツ・ベースのルート付けするのに使用されるよう構成され、そしてメッセージ・フォーマットが、通信経路を介した送信のため上記チャネルに基づいて選択される。
【００１２】
本発明と一致している第３の方法及び装置は、発行−申し込みネットワークにおいて述部（ｐｒｅｄｉｃａｔｅｓ）を送信することを提供する。申し込みと関連するブール値化された述部を含む表現（ｅｘｐｒｅｓｓｉｏｎ）が受信される。当該表現が、コンテンツ・ベースのルート付けに使用のためネットワークにおける送信のためメッセージに符号化され、そして当該メッセージが、コンテンツ・ベースのルート付けを申し込みに与えるため、ネットワーク・コア内の少なくとも１つのルータに送信される。
【００１３】
本発明と一致している第４の方法及び装置は、発行−申し込みネットワークに関する申し込みを格納することを提供する。構造（ｓｔｒｕｃｕｒｅ）が、ネットワークにおける申し込みを格納するため指定される。当該構造は、複数の副表現（ｓｕｂ−ｅｘｐｒｅｓｓｉｏｎ）に分割され、当該副表現は、特定の申し込みを集約的に指定するため用いられる。ブール値化された述部が、特定の申し込みに関して、副表現のうちの少なくとも１つと関連付けられ、そして当該ブール値化された述部が、コンテンツ・ベースのルート付けを申し込みに与えるため、特定の申し込みに関する通知要素の指示を与える。
【００１４】
本発明と一致している第５の方法及び装置は、パケットをネットワークの中でルート付けすることを提供する。ヘッダ・セクション及びペイロード・セクションを有するパケットが受信される。パケットのペイロード・セクションが、ワイルドカードを有するペイロード・セクションの中のフィールドの大きさを制約するルート付け規則を用いることにより、パケットをルート付けする仕方を決定するのに使用のため検査され、そして当該パケットは、当該検査に基づいて選択的にルート付けされる。
添付図面は、この明細書に組み込まれ、その一部を構成し、そして明細書の説明と共に、本発明の利点及び原理を説明する。
【００１５】
［詳細な説明］
概観
インターネット規模の又は他の分散ネットワーク規模のイベント通知システムは、アプリケーションに、発行−申し込みネットワーク化の強力で柔軟な実現を与える。このシステムにおいては、アプリケーション・プログラムは、イベント通知アプリケーション・プログラム・インターフェース（ＡＰＩ）を用いて、通知を発行し及び／又はネットワーク内で生じるイベントについての通知に対して申し込み且つその通知を受信する。
【００１６】
システム内の通知は主題（ｓｕｂｊｅｃｔ）を与えられ、当該主題は、通知がカプセル化する情報の種類を分類するストリング又は他の構造である。また、通知は、当該通知に特有の情報を含む１組の属性が備わっている。例えば、アプリケーションは、主題のニューヨーク証券取引所相場（ｓｕｂｊｅｃｔ  ｑｕｏｔｅｓ．ｎｙｓｅ）及び属性シンボル及び価格を用いてニューヨーク証券取引所上での取引業務についての通知を発行し得るであろう。アプリケーションは、特有の属性値を有する、例えば、ＳＮＥ（ソニー・コーポレーション（Ｓｏｎｙ  Ｃｏｒｐｏｒａｔｉｏｎ）に対する株チッカー・シンボル）に等しいシンボル及び８５．２５に等しい価格を付した個々の通知を発行し得るであろう。属性の全部ではないが大部分は、属性が主題の同じファミリに対して全ての通知の中に見つけられるという意味において、事前定義される。しかしながら、パブリッシャは、追加のイベント特有情報を与えるため自由裁量の属性を１通知あたりの又は他のベースで追加することができる。従って、全ての又は更にいずれの属性が事前定義されることが必要なわけではない。
【００１７】
このシステムにおいては、サブスクライバは、主題又は全体のチャネルのみを申し込むよう限定されない。チャネルを更に以下で説明し定義する。チャネルは、例えば、主題フィールド、及び１つ又はそれより多いレベルの関連サブフィールド（副主題）を指定する階層構造を含むことができる。従って、サブスクライバは、通知の属性を介してコンテンツ・ベースのフィルタを指定することにより関心の非常に多く精密に定義された表現を与えることができる。例えば、サブスクライバは、ＳＮＥに等しいシンボル、及び９０．００より大きい価格（多分、サブスクライバが所有する一塊りの株券に対する売りの機会を指示する）を有する主題ニューヨーク証券取引所相場のための全ての通知を申し込む場合がある。申し込みを整合させる全ての通知は、サブスクライバに、サブスクライバがその申し込みを登録する時間又は他の時間に与えるコールバック又は他のタイプの機能を介してサブスクライバに配信されることができる。１つの申し込みは、多くのフィルタに細分されることができる。
【００１８】
コールバックは、メッセージを端末装置に書き込むこと、又はＥメールを送ること程単純なあるものを含む多くの計算を、一塊りの株券の販売を開始することのようなより複雑なあるものに、及び新しい発行申し込み活動（例えば、既存の申し込みを、７５．００の価格での購入機会のための新しい申し込みに置換すること、又はサブスクライバのポートフォリオが変更されたことの新しい通知を発行すること）を開始する更に一層複雑なあるものに対して実行することができる。
【００１９】
アプリケーションは、例えば、エージェントによるそれらの発行及び申し込み活動を支援する。エージェントは、多分プロキシを利用する又はそれを用いて実行されることができる。エージェントは、それが用いられるとき、通知及び申し込みを送出するためのネットワーク接続性、及び到来する整合通知のサブスクライバへの配信を与える。一度通知がネットワークに入ると、ルータのシステム・ネットワークは、当該通知を、サブスクライバの申し込みがその通知と整合する全てのサブスクライバに伝搬させる。これを達成する一つの方法は、通知をネットワークの全ての点にブロードキャストし、次いでアプリケーション・エージェントに当該通知がそれらのサブスクライバと関連しているかどうかを判断させる方法であろう。しかしながら、これは、必ずしも拡張可能なアプローチではなく、即ち、ネットワークは、通常、特に、非常に多数のアクティブで且つ冗長なパブリッシャが存在する場合に、メッセージ・トラフィックの負荷により速やかに圧倒されるであろう。そして、たとえ十分な帯域幅が問題でない場合ですら、サブスクライバは、そのような多くの通知を処理しなければならないことにより圧倒されるであろう。
【００２０】
システムの例示的ネットワークは、それが通知をルート付けする方法において極めて効率的である。第１に、それは、マルチキャスト・ルート付けを用いて、通知が、例えば、せいぜい一度ネットワーク内の任意のリンクを介して伝搬されることを保証することができる。第２に、それは、フィルタに関して非常に多数の高度な最適化を採用して、通知の伝搬を出来るだけ低減することができる。
【００２１】
図１は、ネットワーク・コアにおいてこのインテリジェントなルート付けを概念的に説明する図である。パブリッシャ１４は、メッセージ内のコンテンツをエッジ・ルータ１６を介してネットワーク・コア１０に送信し、それは発行−申し込みネットワークにおいて用いられる。発行−申し込みネットワークは、データ又はコンテンツをパブリッシャからサブスクライバへルート付けする任意のタイプのネットワークを含む。コンテンツは、ルータ又は他の装置間の論理的接続を表す１つ又はそれより多いチャネル１８を介して送信される。ネットワーク・コア１０内のインテリジェント・ルータ１２は、メッセージをルート付け又は送るべきかどうかを決定する。特に、インテリジェント・ルータ１２は、メッセージがサブスクライバ２４により申し込まれたようなコンテンツを含むかどうかを決定することができる。
【００２２】
各申し込みは、主題フィルタ及び属性フィルタをカプセル化する。ルータは、多分、主題フィルタを整合主題の組に拡張し、そして属性フィルタを１主題当たりベースで併合することができる。インテリジェント・ルータは、主題フィルタを通知の主題に対して評価し、そして属性フィルタを当該通知の中の属性値に対して評価する。主題フィルタのためのシンタックスは、多分ワイルドカードを用いることができ、そして属性フィルタのためのシンタックスは、ブール代数表現を用いることができ、それら両方について以下で更に説明する。用語「フィルタ」は、サブスクライバがパブリッシャから受信することに興味がある１組のイベントを記述するため用いられる。ルート付け規則は、当該フィルタから発生され、そしてインテリジェント・ルータによりルート付けを判断するため用いられる。
【００２３】
従って、フィルタの組の全体が例えばメッセージ２６により満足されない場合、インテリジェント・ルータ１２は、メッセージ２６を落とし（廃棄し）、そのことは、メッセージが送られないことを意味する。フィルタの組全体の中の任意のフィルタがメッセージ２０により、例えば、主題及び属性フィルタの評価に従って満足される場合、インテリジェント・ルータ１２は、メッセージ２０をエッジ・ルータ２２及びおそらく他の装置を介してサブスクライバ２４にルート付けし（送り）、又はメッセージ２０を用いてインテリジェント・ルータ１２の内部で他の機能を、整合フィルタに対して規定された全てのルート付け及び／又は活動規則に従って実行する。検索は、フィルタの組全体を使い果たすまで、又は全ての規則についての判断を獲得するまでのうちのいずれかが最初に来るときまで継続する。
【００２４】
ネットワーク・コアにおけるこのタイプのインテリジェントなコンテンツ・ベースのルート付けは、例えば、警告及び更新のリアルタイムのデータ配信を提供する。警告のためのリアルタイムのデータ配信の例には、それに限定されないが、以下のこと、即ち、株式相場（ｓｔｏｃｋ  ｑｕｏｔｅｓ）、交通、ニュース、旅行、天候、詐欺行為検出、セキュリティ、テレマティーク（ｔｅｌｅｍａｔｉｃｓ）、工場自動化、サプライ・チェーン・マネジメント、及びネットワーク管理が含まれる。更新のためのリアルタイムのデータ配信の例には、それに限定されないが、以下のこと、即ち、ソフトウエア更新、アンチウィルス更新、映画及び音楽配信、ワークフロー、記憶管理、及びキャッシュ整合性が含まれる。多くの他のアプリケーションが、申し込みのための情報の配信のため可能である。
【００２５】
表１は、フィルタリングのための主題及び述部を備える申し込みを格納することを説明する。それらは、所望により又は必要に応じて、ネットワーク内の任意の場所に任意のタイプのデータ構造で格納されることができる。以下で説明されるように、述部は申し込みの構成要素である。申し込みは、以下で与えられる例のいずれの方法で表現されることができる。
【００２６】
【表１】
2005500741.tif 000003
【００２７】
表２は、相場サーバ（ｑｕｏｔｅ  ｓｅｒｖｅｒ）に関する発行及び申し込みの一例を与える。この例は、例示の目的のためのみに提供されており、そして申し込みは、任意のタイプのデータ又はコンテンツに関する任意の数及び任意のタイプのパラメータを含むことができる。
【００２８】
【表２】
2005500741.tif 000004
【００２９】
述部は、申し込みのためのブール代数表現（ブール代数式）を与え、そして主題は、申し込みのためのチャネルの指示を与える。申し込みは、多くの異なる方法で表現することができる。ブール代数表現の使用は、１つのそのような例であり、そしてその申し込みを、コンテンツ・ベースのルート付けのための主題フィルタ及び属性フィルタに容易に変換する能力を与える。申し込みは、代替として、主題に関係無しに表現されることができるが、しかし主題又はチャネルの使用（以下で更に説明する。）は、フィルタを解釈してそれを属性に適用するコンテキストを与える。
【００３０】
ルート付けの判断は、ネットワーク・コアの中で達成され、そしてネットワーク全体にわたり分散されることができ、その結果、パブリッシャ・マシン及びサブスクライバ・マシンへの処理負担が軽減され、そしてネットワークの効率を著しく向上させることができる。図１は、例示の目的のためのみに、１つのパブリッシャ、１つのサブスクライバ、及び１つのインテリジェント・ルータを図示するが、実行においては、多くのパブリッシャ、サブスクライバ及びインテリジェント・ルータを含めることができる。用語「インテリジェント・ルータ」は、ネットワーク・コア内又は他の位置でパケット又はメッセージのペイロードを検査することによりルート付け判断を行う能力を有するルータ又は他のエンティテイのことを言う。
【００３１】
ネットワーク・インフラストラクチャ
図２は、パブリッシャ及びサブスクライバのためのインテリジェント・ルータを図示するネットワーク図である。チャネル・サービスを与えるルート付けエンティテイ３０は、例えば、以下で説明されるように、メッセージをインテリジェント・ルータ間でルート付けするためネットワーク・インフラストラクチャ上に効果的に階層化されている。パブリッシャ３２は、概念的に、例えば、コンテンツを検索するためのポインタのような、発行されたコンテンツの指示を受信するためのアプリケーション３４と、チャネル・サービス３０を介したネットワーク送信のためのコンテンツを符号化するためのエージェント３６とを含む。論理的に相互接続されたインテリジェント・ルータ３８、４０、４２、４４、４６及び４８の集合は、申し込みのための主題フィルタ及び属性フィルタから発生されたルート付け規則を用いて、コンテンツをパブリッシャからルート付けする。複数のリンク３９、４１、４３及び４５は、インテリジェント・ルータ３８、４０、４２、４４、４６及び４８間の論理的接続を与える。他のリンク３７及び４７は、パブリッシャ３２とインテリジェント・ルータ３８との間の論理的接続と、サブスクライバ５４とインテリジェント・ルータ４６との間の論理的接続とをそれぞれ与える。サブスクライバ５４は、申し込まれたコンテンツを検出して受信するためのエージェント５０と、当該コンテンツを与えるためのアプリケーション５２とを含む。
【００３２】
チャネルは、例えば、分散した状態で実現される１つの関連した組の論理的マルチキャスト接続を含むことができる。この例示的実施形態におけるチャネルは、コンテンツを交換するパブリッシャ及びサブスクライバのコミュニティにサービスを行うため用いられるネットワーク資源の論理的に関連した集合である。コンテンツは、チャネル主題の名前空間に従って分類され、そして当該資源は、チャネル・マネジャにより与えられるチャネル・サービスを介して管理され、制御され、そして供給される。複数チャネルが同じ資源を共用し得る。チャネルは、それに限定されないが、以下の例、即ち、パブリッシャ及びサブスクライバ情報、認証及び権限付与情報、メッセージのタイプ、管理情報、及び課金及び料金請求情報のような高度に拡張可能なディレクトリ・サービスを与えることができる。チャネルはまた、例えば、キャッシング、高速データ配信機構、セキュリティ、及びユーザ及びネットワーク管理を介した持続性を与えることができる。チャネルは、同様に任意の他の目的のため用いることができる。
【００３３】
インテリジェント・ルータによるフィルタリングは、ルート付け判断を分散するためネットワーク・コア内に生じることができる。その上、インテリジェント・ルータはまた、パブリッシャ又はサブスクライバのようなユーザ装置をネットワーク・コアと接続するエッジ・ルータとして機能することができる。また、ネットワークに接続された同じ装置は、コンテンツをサブスクライバにネットワーク・コア内のルート付け判断を介して押し込むためのパブリッシャと、受信され押し込まれたコンテンツに対するサブスクライバとの両方として、機能することができる。インテリジェント・ルータ及びチャネルは、必要に応じて又は特定の実現を所望されるように、任意の構成で接続されることができ、図２に示される構成は例示的目的のためにのみ提供されている。
【００３４】
図３は、インテリジェント・ルータ及び通常のバックボーン・ルータのための例示的ネットワーク・インフラストラクチャの図であり、且つチャネルのための論理的接続を説明している。この事例におけるインテリジェント・ルータは、インターネット又は他の分散型ネットワークのようなネットワークにおける既存のバックボーン・ルータを用いており、従ってインテリジェント・ルータは、バックボーン・ルータ上に効果的に階層化されて置かれている。この例においては、インターネット・サービス・プロバイダ（ＩＳＰ）・ネットワーク５８、５９及び６０のそれぞれは、メッセージ又はパケットの従来のルート付けのための幾つかのバックボーン・ルータを含む。複数のインテリジェント・ルータ６１−７０は、ＩＳＰネットワーク５８、５９及び６０内の１つ又はそれより多いバックボーン・ルータと接続される。インテリジェント・ルータ６１−７０はまた、リンクの例を表す複数のリンク７３−８５により相互接続され、そして同様にエンド・ユーザ装置にリンクにより接続されることができる。インテリジェント・ルータ６１−７０は、エンティテイ７１のような１つ又はそれより多いアドミニストレータ・マシン、及びエンティテイ７２のような１つ又はそれより多い仮想私設ネットワーク（ＶＰＮ）・コントローラにより制御されることができる。ＩＳＰネットワーク５８、５９及び６０はまた、パブリッシャ・マシン及びサブスクライバ・マシン（図３に図示されてない）に接続されるであろう。ＩＳＰネットワーク５８、５９及び６０の中の及びそれらの間のバックボーン・ルータは、任意の従来の方法で既存のネットワーク・インフラストラクチャ内で相互接続される。
【００３５】
インテリジェント・ルータ６１−７０及びリンク７３−８５は、図示されているように、既存のネットワーク・インフラストラクチャを用いて実現されることができ、そしてそれらは、ネットワーク・コア内でコンテンツ・ベースのルート付けを与える。リンク７３−８５は、インテリジェント・ルータ６１−７０間の論理的接続を表し、そして例えば、既存のネットワーク・インフラストラクチャ又は他の装置を用いて実現されることができる。リンクは、例えば、トンネルと呼ばれる論理的接続を用いて実現されることができる。トンネルは、ハードウエアを、そして多分、ソフトウエアと、リンクを実現するためのネットワーク・インフラストラクチャとを含み、そして１つのトンネルは、複数チャネルの構成要素であることができる。当該チャネルは、論理的構成を特定のタイプのコンテンツに与え、従って当該チャネルを介して送信される属性にコンテキストを与えることによりインテリジェント・ルータにおけるコンテンツ・ベースのルート付けを容易にする。インテリジェント・ルータがチャネル無しでルート付け判断を実行することができるにも拘わらず、チャネルは、ネットワーク・コア内のインテリジェント・ルータによりコンテンツ・ベースのルート付けの効率を向上させる。
【００３６】
この例示的実施形態は、チャネル及びリンクの使用を含む。リンクは、インテリジェント・ルータとはいえ２つのルータ間の接続である。チャネルは、１対多又は多対多の論理的接続を達成するため相互接続リンクにより静的又は動的に構成されたルータの（典型的には大きな）集合を包含するネットワーク・エンティテイである。特に、チャネルは、当該チャネルの本質的特性を記述するトップレベルの論理的エンティテイである。１つのチャネルの下に、多くの主題があることができるであろう。各主題は、相互接続されたルータの集合を含む（マルチキャスト・トリーのような）サブネットワークを形成するであろう。これらの主題ベースのサブネットワークは、異なる要領で割り当てられ、指向（ｏｒｉｅｎｔ）させられ、そして構成されることができる。チャネルは、それの下で主題のため形成された全てのサブネットワークの集合であるが、そのチャネルは、例えば、ネットワークのメッシュに似ていてよい。
【００３７】
図４は、インテリジェント・ルータ９２の例示的ハードウエア構成要素の図であり、そのインテリジェント・ルータ９２は、他の参照されたインテリジェント・ルータのいずれかと一致することができる。ネットワーク・ノード９０は、従来のバックボーン・ルータ９５と接続されたインテリジェント・ルータ９２を含むことができる。インテリジェント・ルータ９２は、メモリ９４及び二次記憶装置９７（多分、例えば分離したマシンを用いて実現される。）に接続されたプロセッサ９３を含み、これらメモリ９４及び二次記憶装置９７のいずれも、データを格納し、並びにデータをキャッシュすることができ、そしてプロセッサ９３による実行のためのアプリケーションを格納することができる。二次記憶装置９７はデータの不揮発性記憶を与える。以下で説明されるようなソフトウエア制御の下で、プロセッサ９３は、命令をバックボーン・ルータ９５に与え、そのバックボーン・ルータ９５は、メッセージ又はパケットを、申し込みに関する主題フィルタ及び属性フィルタから発生されたルート付け規則に基づいてルート付けし（送り）又はルート付けしない（廃棄する）。別個のプロセッサ制御された装置で実行されるように示されているが、インテリジェント・ルータ９２は、代替として、バックボーン・ルータ９５内の特定用途向け集積回路（ＡＳＩＣ）で実行されて、多分埋め込み型ソフトウエアを備えるハードウエア内のインテリジェントなルート付け機能を与えることができる。インテリジェントなルート付け機能はまた、代替として、１つ又は複数のルート付け装置内のソフトウエア及びハードウエアの組み合わせで実行されることができる。
【００３８】
図５は、例示的パブリッシャ・マシン及びサブスクライバ・マシンの図である。パブリッシャ・マシン１００又は１１８は、以下の構成要素、即ち、１つ又はそれより多いパブリッシャ・アプリケーション１０４及びエージェント・アプリケーション１０６を格納するメモリ１０２と、データの不揮発性記憶を与える二次記憶装置１１２と、情報又は指令を入力するための入力装置１０８と、メモリ１０２に格納された又は他の記憶装置から受け取られたアプリケーションを実行するプロセッサ１１４と、情報を出力するための出力装置１１０と、情報の可視表示を与える表示装置１１６とを含むことができる。
【００３９】
サブスクライバ・マシン１２２又は１４０は、以下の構成要素、即ち、１つ又はそれより多いアプリケーション１２６及びエージェント・アプリケーション１２８を格納するメモリ１２４と、データの不揮発性記憶を与える二次記憶装置１３０と、情報又は指令を入力するための入力装置１３２と、メモリ１２４に格納され又は他の記憶装置から受け取られたアプリケーションを実行するプロセッサ１３４と、情報を出力するための出力装置１３６と、情報の可視表示を与える表示装置１３８とを含むことができる。パブリッシャ・マシン及びサブスクライバ・マシンは、代替として、より多くの又はより少ない構成要素、又は異なる構成要素を任意の構成で含むことができる。
【００４０】
パブリッシャ・マシン１００又は１１８は、サブスクライバ・マシン１２２又は１４０と、前述したネットワークのようなネットワーク１２０を介して接続される。ネットワーク１２０は、ネットワーク・コアにおいてパケット又はメッセージを介してデータ又はコンテンツの分散型ルート付けを与えるためのインテリジェント・ルータを含む。それぞれたった２つのパブリッシャ・マシン及びサブスクライバ・マシンが示されているが、ネットワーク１２０は、それより多いパブリッシャ・マシン及びサブスクライバ・マシンを含むよう規模を拡大することができる。パブリッシャ・マシン及びサブスクライバ・マシンは、それに限定されないが、以下の例、即ち、サーバ、パーソナル・コンピュータ、ノートブック・コンピュータ、携帯情報端末（ＰＤＡ）、電話機、セルラ電話機、ページャ、又は他の装置のような任意のプロセッサ制御された装置を用いて実現されることができる。インテリジェント・ルータを備えるネットワーク１２０は、任意の有線又は無線の分散型ネットワーク、ワイヤ接続型装置、無線装置、又はそれら両方を含むことができる。ネットワーク１２０はまた、潜在的に既存又は従来のネットワーク・インフラストラクチャを用いることができる。
【００４１】
図６は、インテリジェント・ルータのためのチャネル・マネジャ１５０を図示する図である。この例においては、チャネル・マネジャ１５０は、複数のサーバ１５２、１５４及び１５６を用いて実現される。各サーバは、それ自身の局部記憶装置１５８、１６０及び１６２を含む。インテリジェント・ルータ１６４、１６６及び１６８は、特定のチャネルについての情報のためチャネル・マネジャと接触する。チャネル・マネジャはまた、データ持続性（ｄａｔａ  ｐｅｒｓｉｔｅｎｃｅ）、フェイルオーバー機能、又は他の機能を与えることができる。従って、チャネル・マネジャはチャネル・サービスを提供し、それは、例えば、チャネルと関連の情報、データ持続性についての特性、パブリッシャ及びサブスクライバに関するユーザ情報及びインフラストラクチャ情報を指定するデータベース又はデータベースの組をネットワーク内の任意の場所に含む。インフラストラクチャ情報は、例えば、インテリジェント・ルータの識別と、それらを接続する対応のトンネルと、チャネルに関する主題と、チャネルに関する属性（各属性についての名前及びタイプ）を含むことができる。パケット又はメッセージはまた、固定の属性及び可変の属性の識別を含むチャネルと関連の情報を搬送することができる。
【００４２】
ユーザは、オンラインのとき、チャネル情報をダウンロードすることができる。例えば、ユーザは、ユーザ名及びパスワードを用いることにより登録することができる。ユーザのログオンを認証すると、ユーザは、チャネルを開き（呼び出し）、そしてチャネルについての情報をチャネル・マネジャから検索することができる。パブリッシャは、その情報をコンテンツの発行において用いることができ、そしてサブスクライバは、その情報を申し込みに入り且つ登録するため用いることができる。
【００４３】
各チャネル・マネジャ１５２、１５４及び１５６は、この例においては、各インテリジェント・ルータのための第１のものとして動作する。特に、各インテリジェント・ルータには、この例においては、２つのインターネット・プロトコル（ＩＰ）アドレスが与えられ、１つは主チャネル・マネジャ用であり、別のはバックアップ・チャネル・マネジャ用である。インテリジェント・ルータは、それらのＩＰアドレスを用いて、チャネル・マネジャに接触して、チャネル情報を検索する。主チャネル・マネジャが故障した場合、インテリジェント・ルータは、バックアップ・チャネル・マネジャに接触することができる。従って、チャネル・マネジャ１５２、１５４及び１５６は、それらを接続する線により示されるように、チャネル特性及び他の情報に関してデータを共有する。各チャネル・マネジャはまた指定されたバックアップを有し、それによりチャネル・マネジャが故障した場合別のチャネル・マネジャがそのため処理を引き継ぐことができる。ネットワーク内の装置は、例えば、指令を用いて、チャネル情報を検索することができ、その指令の例が表３に与えられている。インテリジェント・ルータは、代替として、主チャネル・マネジャのみ、又は３以上のチャネル・マネジャを有することができる。
【００４４】
図７は、ユーザ・マシン又は装置をインテリジェント・ルータを有するネットワークと接続するため当該ユーザ・マシン又は装置の中のスタック１８０内の例示的ソフトウエア構成要素の図である。ユーザ・マシンをパブリッシャ、サブスクライバ又はそれら両方として用いることができ、そしてユーザ・マシンは、上記で特定した例示的装置を含むことができる。スタック１８０は、１つ又はそれより多いユーザ・アプリケーション１８２を含むことができ、それらアプリケーション１８２は、申し込みをユーザから受け取ること、又はチャネル情報をパブリッシャから受け取ること、あるいは発行されるべきコンテンツ又はデータを受け取ることを提供することができる。ユーザ・アプリケーション１８２はまた、ユーザ・マシン又は装置による実行のための任意の他のタイプのアプリケーションを含むことができる。
【００４５】
スタック１８０はまた、例えば、エージェント１８４、イベント・ライブラリ１８６、キャッシュ・ライブラリ１８８、チャネル・ライブラリ１９０、メッセージング・ライブラリ１９２、及びディスパッチャ・ライブラリ１９４を含むことができる。エージェント１８４は、ネットワーク接続又は他の機能を確立することを提供し、そして表３は、エージェント１８４により実行される指令の例を与え、その指令は、プロキシ指令又は他のタイプの指令を用いることができる。イベント・ライブラリ１８６は、ユーザ・マシンに関するイベント又は他のイベント又は情報をログする。キャッシュ・ライブラリ１８８は、データのローカル・キャッシングを与える。チャネル・ライブラリ１９０は、チャネルの識別及びそれらのための情報を格納する。ディスパッチャ・ライブラリ１９４は、制御経路１９６、チャネル・マネジャ１９８、及び１つ又はそれより多いインテリジェント・ルータ２００との接続を与え、そしてそれは、表４で特定される例示的機能を含むことができる。メッセージング・ライブラリ１９２は、データ経路２０４との接続を与える。
【００４６】
表５から表９は、Ｃプログラミング言語でのメッセージングＡＰＩの例を与える。表５及び表６は、ＡＰＩがメッセージを送り且つ検索する例を与える。表７及び表８は、ＡＰＩが通知を送り且つ検索する例を与える。表９は、ＡＰＩが制御メッセージを送り且つ検索する例を与える。この記述におけるこれらのＡＰＩ及び他のＡＰＩ、プログラム、及びデータ構造は、特定の機能又は特徴を実現するための例としてのみ与えられており、そしてその実現には、任意のプログラミング言語での任意のタイプのＡＰＩ又は他のソフトウエア・エンティテイが含められることができる。
【００４７】
【表３】
2005500741.tif 000005
【００４８】
【表４】
2005500741.tif 000006
【００４９】
【表５】
2005500741.tif 000007
【００５０】
【表６】
2005500741.tif 000008
【００５１】
【表７】
2005500741.tif 000009
【００５２】
【表８】
2005500741.tif 000010
【００５３】
【表９】
2005500741.tif 000011
【００５４】
【表１０】
2005500741.tif 000012
【００５５】
図８は、上記で特定されたインテリジェント・ルータ及び図４に示されるインテリジェント・ルータ９２のようなインテリジェント・ルータのための例示的ソフトウエア構成要素２１０の図である。ソフトウエア構成要素２１０は、例えば、インテリジェント・ルータ９２内のプロセッサ９３による実行のためメモリ９４に格納されることができる。ソフトウエア構成要素２１０は、例えば、フィルタリング・デーモン２１２、ディスパッチャ２１４、ルート付けデーモン２１６、及びキャッシュ・マネジャ２１８を含む。フィルタリング・デーモン２１２は、以下で説明されるように、コンテンツを処理するためコンテンツ・ベースのルート付けのためフィルタリングを与えて、申し込みのためのコンテンツをルート付け規則に従って処理する。ディスパッチャ２１４は、フィルタを経路２２０を介して伝搬させるため要求される制御メッセージのような制御メッセージの通信を与え、そして当該ディスパッチャ２１４はまた、ユーザのための単一のエントリ点と、チャネル・マネジャとの１個の安全なソケットとを与え、ネットワークの安全性を増強する。換言すると、ユーザは、この例においてはチャネル・マネジャに直接接触しないが、ユーザは代替実行形態においては接触し得る。ディスパッチャ２１４は、制御メッセージを用いて、属性（名前−値対）をチャネル・マネジャから獲得する。
【００５６】
ルート付けデーモン２１６はデータ経路２２２との通信を与え、それは、図４に図示されている従来のバックボーン・ルータ又は他のルート付け装置を介して行われることができる。キャッシュ・マネジャ２１８は、対応のインテリジェント・ルータを含むネットワーク・ノードにおいてデータのローカル・キャッシングを与える。キャッシュ・マネジャ２１８の動作は更に以下で説明され、そしてそれは、ネットワーク・コア全体にわたりデータの分散されたキャッシングを与える。
【００５７】
コンテンツ・ベースのルート付けは、アプリケーション・レベルに対する代替として、カーネル・レベルで実行されることができる。カーネルによりアクセス可能であるメモリは、アプリケーション層におけるそれから分離している。アプリケーションでコンテンツ・ベースのルート付けの動作をさせるには、例えば、メッセージ・データがカーネル・メモリ・エリアからアプリケーション・エリアへコピーされること、及びアプリケーションのコンテキストをカーネルのそれからルート付けアプリケーションのそれへ切り換えることが必要である。両方とも実質的なオーバヘッドを含むことができる。代わりにカーネルがコンテンツ・ベースのルート付けをサポートするため修正される場合、ルート付けは、前述したオーバヘッドが無い状態であれば極めて早く行われることができるであろう。
【００５８】
カーネルにおけるコンテンツ・ベースのルート付けのこの特徴により、ルート付けデーモン２１６は、データをデータ経路２２２を介して、実行に依存して直接送り又は受け取り得るし、又はそうし得ない。デーモンは、アプリケーション層で動作するプロセスであり、カーネルの中に注入されるべきコンテンツ・ベースのルート付けテーブルを事前計算する。しかしながら、一度注入されると、ルート付けテーブルがカーネルにより用いられて、ルート付け判断を行うことができる。同様に、フィルタリング・デーモンは、フィルタリング・テーブルを事前計算し、そしてそれをカーネルの中に注入する。このカーネルの実行において、ルート付けデーモンもフィルタリング・デーモンも直接データ経路と対話をしないであろう。
【００５９】
図９は、多分申し込みに関するコンテンツを含むメッセージに関するパケット構造２３０の一例の図である。コンテンツ・ベースのルート付けに使用のためのパケット又はメッセージは、例えば、ヘッダ・セクション及びペイロード・セクションを含む。ヘッダ・セクションは、ルート付け又は他の情報を指定する。ペイロード・セクションは、データ又はコンテンツ、又はデータ又はコンテンツの指示を指定する。パケット構造２３０は、ＩＰヘッダ２３２、ユーザ・データグラム・プロトコル（ＵＤＰ）伝送制御プロトコル（ＴＣＰ）ヘッダ２３４、長さ値２３８、１つ又はそれより多い主題フィールド２４０、及び１つ又はそれより多い属性２４２を含む。パケット構造２３０は、長さ値と主題及び属性とに関する基本構造を示す。コンテンツ・ベースのルート付けで用いられるパケットはまた、以下で説明される図１８の例で図示される構成要素のような他の又は異なる構成要素を含むことができ、そしてコンテンツ・ベースのルート付けのためのパケットは、任意の要領で構成されることができる。また、属性は、例えば、メッセージの終わりに付けられた自由裁量の属性を含むことができる。これら自由裁量の属性は、例えば、チャネルに対して規定されたメッセージ・フォーマットを用いて必ずしも搬送されることができるものではないパブリッシャ（又は更にルータ）により追加されたアドホック（その場限りの）情報である。
【００６０】
パブリッシャ及びサブスクライバ方法論
図１０は、チャネルを設定し且つコンテンツを発行するためパブリッシャにより使用される例示的パブリッシャ方法２５０のフロー・チャートである。パブリッシャ方法２５０は、例えば、パブリッシャ・マシン１００内のプロセッサ１１４による実行のためのエージェント１０６を含むソフトウエア・モジュールで実行されることができる。パブリッシャ方法２５０において、パブリッシャ・マシン１００内のエージェント１０６は、パブリッシャがチャネルに関して生成したプロキシを受け取る（ステップ２５２）。プロキシは、ネットワークとの通信を与える。エージェント１０６は、インターフェースを介してチャネルに関するメッセージ・フォーマットを決定し（ステップ２５３）、そしてそのフォーマット情報は、例えば、ネットワーク内のチャネル・マネジャ又は他のエンティテイから獲得されることができる。エージェント１０６は、受け取られたチャネル情報を用いてチャネルに関するプロキシを設定し（ステップ２５４）、それはチャネルに関する属性を受け取ること（ステップ２５６）、及びチャネルについての通知を生成すること（ステップ２５８）を含む。当該通知は、チャネルについてのコンテンツを「聴く」装置にコンテンツを与える。属性は、通知に関するパラメータ及び特性を定義する。
【００６１】
エージェント１０６は、申し込みを処理するに使用のため、チャネルの識別子（ＩＤ）及びコンテンツ情報をネットワーク・コア内のインテリジェント・ルータ又は他の場所に送信する（ステップ２６０）。パブリッシャは、通知属性に適切な値をポピュレート（ｐｏｐｕｌａｔｅ）し（ステップ２６１）、そしてパブリッシャは次いで、通知についてのコンテンツをチャネル属性に従って発行することができる（ステップ２６２）。この例におけるステップ２６０−２６２は、通知を発行することを達成し、それは、代替として、異なる又は追加のステップを特定の実行に依存して含むことができる。従って、この例において通知と関連した情報は、属性の順序付けされたシーケンスに仕切られ、当該属性のそれぞれは、名前、通知内の位置（１で開始）、タイプ及び値を有する。代替として、属性は、異なる特性を特定の実行に依存して有することができる。属性は、例えば、事前定義された属性、自由裁量の属性、又はそれら両方を含むことができる。
【００６２】
インテリジェント・ルータは、パケットの中のチャネルＩＤを用いて、対応のチャネルに関する属性を獲得することができ、それは、チャネルを介して送信されるパケットのための構造又はフォーマットを決定する。特に、各パケットは、例えば、チャネルＩＤと、パブリッシャＩＤ及び主題のような他のヘッダ情報とに関連したタグを含むことができる。タグを用いて、主題をメッセージ・フォーマット内の数字（ｎｕｍｂｅｒ）とマッピングさせることができ、その一例が図１８に示されている。小さい整数値、例えば、１６ビット値を上記数字のため用いることができる。代替として、任意の他のタイプの数字又は情報を用いて、主題をマッピングすることができる。主題を数字にマッピングすることは、特定の利点を与え、例えば、それは、メッセージ内のスペースを節約し、そして一様な又は標準の方法を与えて、メッセージ内の主題の指示を指定し、それによりそれらは迅速に場所を特定され且つ識別されることができる。インテリジェント・ルータは、そのマッピングをローカルに格納し、又は代替として、数字を用いて、対応の主題を指令を介して遠隔で獲得することができる。
【００６３】
表１０は、この例において、整数値を用いて、数字を主題にマッピングするための構造を説明する。表１０の中の主題トリー・パラメータは、主題が１つ又はそれより多い主題フィールドを階層関係で含むことができることを示し、例えば、主題トリーは、特定のシンボルにより境界を定められた主題のストリングを含むことができる。主題トリーの例は表２に与えられている。一例として、主題トリー（ｓｕｂｊｅｃｔ  ｔｒｅｅ）「ｑｕｏｔｅｓ．ｎｙｓｅ（ニューヨーク証券取引所相場）」は、主題「ｑｕｏｔｅｓ（相場）」及びサブフィールド「ｎｙｓｅ（ニューヨーク証券取引所）」を含み、これら２つの用語は、ＵＲＬ又は他のネットワーク・アドレスに見られるように「．」により境界を定められている。ピリオッドを用い且つＵＲＬ型のストリングを指定することの他に、主題トリーは、境界決定のための任意のキャラクタ及びシンボルを用いたいずれの方法で指定されることができる。
【００６４】
【表１１】
2005500741.tif 000013
【００６５】
従って、特定のチャネルのためのパケット・フォーマット又は構造を知って、インテリジェント・ルータは、コンテンツ・ベースのルート付けのためパケットの中の主題及び属性又は他の情報の位置を迅速に特定することができる。例えば、チャネルは、当該チャネルを介して送信された主題及び属性のバイト位置を指定することができ、パケットの中のバイトを計数することによりそれらの位置を容易に特定する。代替として、インテリジェント・ルータは、パケットをパーズして、主題及び属性又は他の情報の位置を特定することができる。
【００６６】
表１１は、Ｃ＋＋プログラミング言語でのパブリッシャ・プログラムの一例を与える。表１２は、チャネルを生成するＡＰＩの一例を与える。表１３は、チャネル・マネジャ（図６参照）により維持され、且つ図示のように、チャネルと関連した情報を与えるチャネル構成ファイルの一例を与える。システムは、代替として、処理負荷を分散するためローカル・チャネル・マネジャとして機能する地理的に分散したサーバのＩＰアドレスを与えるグローバル・チャネル・マネジャを有するこことができる。
【００６７】
【表１２】
2005500741.tif 000014
【００６８】
【表１３】
2005500741.tif 000015
【００６９】
（注釈文の訳：
＃”PC_evn_Notification.h”を含む。
＃”PC_evn_Proxy.h”を含む。）
【００７０】
【表１４】
2005500741.tif 000016
【００７１】
（注釈文の訳：
／＊第１の１つの主チャネル・マネジャ＊／
／＊第２のチャネル・マネジャ＊／
／＊rc=PC_chn_setAttributeType(hChannel, name, position,attributeType)を用いることによりメッセージ・タイプ（メッセージの固定部分のみ）を設定する。＊／
／＊チャネル生成を終了＊／）
【００７２】
【表１５】
2005500741.tif 000017
【００７３】
【表１６】
2005500741.tif 000018
【００７４】
（注釈文の訳：
＃チャネル設定−チャネルＡＰＩによるイベント及びメッセージングの読み出し。
＃各チャネル・エントリ情報が情報のタイプのタグを付される。例えば、
＃チャネル５通信と関連した情報のための[ChannelComm 5]
＃チャネル５における主題と関連した情報のための[ChannelSubjects 5]
＃チャネル５における属性情報のための[ChannelAttributes 5]
＃
＃チャネルＩＤは、当該情報が属するチャネルを指示するためタグに添付される。
＃例えば、[ChannelComm 5]は、チャネル５に関するルート付け情報を指示する。
＃
＃全てのフィールドが設定される必要はない。例えば、中央サーバを用いて動作する場合、MulticastIPは必要でない。）
【００７５】
図１１は、申し込みを検索し処理するのに用いるサブスクライバ方法２６４のフローチャートである。方法２６４は、例えば、サブスクライバ・マシン１２２内のプロセッサ１３４による実行のためのエージェント１２８を含むソフトウエア・モジュールで実行されることができる。方法２６４において、グラフィカル・ユーザ・インターフェース（ＧＵＩ）は、例えば、使用可能なチャネルの指示をユーザに与え（ステップ２６６）、それは、アプリケーション１２６により達成されることができる。チャネルを識別する情報は、例えば、チャネルと関連した情報を与えるチャネル・マネジャから受信されることができる。いずれの特定の方法又はフォーマットでチャネルの識別を与えるため、任意のタイプのアプリケーション１２６を用いることができる。当該アプリケーションは、ユーザのチャネル選択を受信し（ステップ２６８）、そして当該選択されたチャネルのためＡＰＩ又は他のプログラムを呼び出す（ステップ２７０）。ＡＰＩは、上記選択されたオプションと一致するチャネルに関する申し込みオプションをユーザに与える。ＡＰＩは、申し込みに関する値をユーザから受信し（ステップ２７４）、そして以下で説明されるように、処理のため当該申し込みをエージェント１２８に送る（ステップ２７６）。
【００７６】
申し込みに関するパラメータは、例えば、表１に図示されるように述部を含むことができる。各チャネルは、例えば、対応するチャネルについての特定の要件又はパラメータに従って申し込みを処理するため、それ自身のＡＰＩを用いることができる。これらのＡＰＩは、例えば、申し込みを受信するためのウェブ・ベースの又はＪａｖａベースのＡＰＩを含むことができ、そして申し込みに関する情報を受信し且つそれをエージェント・アプリケーションに伝えるため任意のタイプのインターフェース及び処理を用いることができる。
【００７７】
図１２は、チャネル及びサブスクライバ・スクリーン又はＧＵＩ２７８及び２８４を概念的に図示する図であり、それは、申し込みを受信する方法２６４と組み合わせて用いることができる。スクリーン２７８は、ユーザによる選択のため使用可能なチャネルを識別する複数のセクション２８２を含む。特定のチャネルを選択すると、セクション２８６における申し込みのためのユーザの値を受信するためのスクリーン２８４を表示することができる。ユーザは、申し込みを送出するためセクション２８８を選択し、又は申し込みを取り消すためセクション２９０を選択することができる。スクリーン２７８及び２８４は、例えば、ハイパテキスト・マークアップ言語（ＨＴＭＬ）ウェブ・ページとして、又は任意の他のフォーマットでフォーマット化されることができる。また、スクリーンは、希望される場合、申し込みのためのユーザ・フレンドリで視覚的に訴えるインターフェースを提供するため、例えば、テキスト、グラフィックス、画像、様々な色、又はマルチメディア情報を多分含む、セクション及びコンテンツの任意の構成を含むことができる。スクリーンはまた、例えば、従来のブラウザ機能を与えるツールバー２８０を含むことができる。
【００７８】
表１４は、Ｃ＋＋プログラミング言語でのサブスクライバ・プログラムの一例を与える。
【００７９】
【表１７】
2005500741.tif 000019
【００８０】
【表１８】
2005500741.tif 000020
【００８１】
【表１９】
2005500741.tif 000021
【００８２】
（注釈文の訳：
＃<unistd.h>を含む。
＃<iostream>を含む。
＃kc.jde”PC_evn_Filter.h”
＃” PC_evn_Subscription.h”を含む。
＃”PC_evn_Proxy.h”を含む。）
【００８３】
ペイロード検査及びチャネルを介したコンテンツ・ベースのルート付け
図１３は、ペイロード検査を介したコンテンツ・ベースのルート付け方法３００のフローチャートである。方法３００は、例えば、フィルタリング・デーモン２１２により表されるように、インテリジェント・ルータ９２内のプロセッサ９３による実行のためのソフトウエア・モジュールで実行されることができる。代替として、それは、ＡＳＩＣ、又はハードウエア及びソフトウエアの組み合わせで実行されることができる。方法３００で図示されるようなコンテンツ・ベースのルート付けは、ネットワーク・コア、又はエッジ・ルータのようなネットワーク内の任意の場所においてインテリジェント・ルータで実行されることができる。
【００８４】
一般的な意味において、コンテンツ・ベースのルート付けは、パケットを処理する仕方を決定するためパケットのペイロード・セクションを検査することを含む。このコンテンツ・ベースのルート付け方法は、例えば、申し込みのリストを（例えばフィルタを用いて）任意の順序で処理すること、ルート付け規則を用いてメッセージを主題毎に及び属性毎に比較して、メッセージのためのルート付けを決定すること、及び当該処理をネットワーク・コアにおいて実行することを含むことができる。当該規則は、ルータ内処理を支配する規則、又はファイルと関連した任意の規則を含むことができる。従って、これらのルート付け判断は、ネットワーク・コア全体にわたって分散されることができる。チャネルにより表されるような主題の使用は、メッセージ・フォーマットを決定し、従って、例えば特定のチャネルのためメッセージ又はパケット内のそれらのバイト位置を知ることにより属性の位置をメッセージ内で迅速に特定する方法をインテリジェント・ルータに与える。
【００８５】
方法３００において、インテリジェント・ルータ９２は、メッセージについてのパケットを受信する（ステップ３０２）。それは、パケットから、対応のメッセージに関するチャネルＩＤを決定し（ステップ３０４）、そしてそのチャネルＩＤを用いてチャネルに関する属性を検索する（ステップ３０６）。この例においては、チャネルのタイプ（チャネルＩＤから決定される。）は、パケット内での属性の位置を決定する。チャネルに関する属性は、チャネル・マネジャを介するように、ローカルに格納され、又は遠隔で検索されることができる。インテリジェント・ルータ９２が、申し込みと一致するフィルタを検索する（ステップ３０８）。フィルタは、１つ又はそれより多い属性試験、通常申し込みに関する１群の属性を含む。インテリジェント・ルータ９２は、パケット内の属性を、フィルタ記述（ｄｅｓｃｒｉｐｔｉｏｎ）内の対応の１つ又は複数の属性試験に適用する（ステップ３１０）。
【００８６】
フィルタ記述における全ての属性試験は、当該属性が全ての属性試験を満足させることを意味する肯定的結果を生成する場合（ステップ３１２）、インテリジェント・ルータは、フィルタと関連した規則により規定された１組の機能を実行する（ステップ３１４）。これらの機能は、例えば、パケットを次のリンクにルート付けすること、及び／又は上記規則により規定されるようにローカル・ルータでパケットのコンテンツを用いたある動作又は計算を実行することを含むことができる。当該動作又は次のリンクは、例えば、対応の申し込みを指定するデータ構造において識別されることができる。上記規則がリンクであるとき、それは、典型的には、次のネットワーク・ノードを識別してパケットを受信し、それは、インテリジェント・ルータ、バックボーン・ルータ、ネットワークに接続された装置、又は他のエンティティを含むことができる。代替として、次のリンクは、他の方法で指定される、又は申し込みと関連付けられることができる。
【００８７】
フィルタ記述における全ての属性試験が肯定的結果を生成しない、即ち属性が全ての属性試験を満足させないことを意味する場合（ステップ３１２）、フィルタは、不整合と宣言される（ステップ３１５）。インテリジェント・ルータは、フィルタ記述における全ての属性試験が使い尽くされるか、又は最初の否定的結果に遭遇するかのうちのいずれかが先に来るまで、上記の手順に再帰的に追従する。
【００８８】
一度全ての属性試験がこのフィルタに対して処理されてしまうと、インテリジェント・ルータは、もっと多くのフィルタが存在するかどうかを決定し（ステップ３１６）、そして、そうである場合には、それは、ステップ３０８に戻って、次のフィルタに関する属性試験を検索して、その次のフィルタに関して当該属性を処理する。整合手順（ステップ３０８、３１０、３１２、３１４、３１５及び３１６）は、フィルタの全部の組が使い尽くされるか、又は全ての上記の動作又はルート付け規則に対する結果が決定されることができるかの何れかが最初に来るまで継続する。パケットがいずれのフィルタも満足させない場合、それは、落とされ（廃棄され）、そして送られないであろう。
【００８９】
インテリジェント・ルータ９２は、任意の特定の順序でフィルタに対して順に行うことができる。例えば、表１５に図示されるように、インテリジェント・ルータは、申し込みのためのフィルタをファイル又はルート付けテーブルの中に格納し、そしてそれらに対して直接的に順に行って、属性をフィルタに適用（属性試験）することができる。代替として、ルート付けテーブルは、フィルタへのリンク又はポインタを含むことができる。
【００９０】
コンテンツ・ベースのルート付けは、随意に、例えば、トラフィック条件に基づくアルゴリズムの切り換えのような、アプリケーション及び性能を増強する発見的方法に依存して、２以上の方法を同時に使用することができる。処理のためのフィルタは、随意に、コンテンツ・ベースのルート付けのためペイロード・セクションの検査を実行するに使用のためネットワーク内のルータで、暗号化され、暗号解読され、変換され、そして併合されることができる。例えば、価格＞３．５４１２２ドルのような申し込みが、価格＞３．５４ドルに切り捨てられ得る。それは、アプリケーション内の発行が、小数第２位より下の通貨属性を含まないことが知られているからである。また、外国通貨は、海外から送られた発行物が例えば米国に配置された最初のルータに到着するとき、同様に米国通貨に変換され得る。
【００９１】
線形アプローチの代替として、インテリジェント・ルータ９２は、他の順序、又は多分処理の速度及び効率を増強させることができる様々なアルゴリズムに従って、処理のためのフィルタを選択することができる。表１６は、申し込み及びそれらのための対応のリンクの例を与える。これらの例においては、主題は、特定のチャネルと関連し、そして主題に関する申し込みは、フィルタに関するルート付け規則により表されることができる。主題は、例えば、コンテンツのソースを識別するユニフォーム・リソース・ロケータ（ＵＲＬ）のようなネットワーク・アドレスを含むことができる。
【００９２】
【表２０】
2005500741.tif 000022
【００９３】
【表２１】
2005500741.tif 000023
【００９４】
ネットワーク・ノードでのキャッシング
図１４はキャッシング方法３２０のフロー・チャートである。当該方法３２０は、例えば、キャッシュ・マネジャ２１８により表されるように、インテリジェント・ルータ９２内のプロセッサ９３による実行のためのソフトウエア・モジュールで実行されることができる。代替として、それは、対応のインテリジェント・ルータと同じ装置か又は異なる装置のいずれかにおいて、ＡＳＩＣ、又はハードウエア及びソフトウエアの組み合わせにおいて実行されることができる。方法３２０においては、インテリジェント・ルータ９２は、データ又はコンテンツ、チャネルＩＤ及び主題を有するメッセージを受信する（ステップ３２２）。インテリジェント・ルータ９２は、データをタイムマークし（ステップ３２４）、そしてそれを、メモリ９４又は二次記憶装置９７のようなものにローカルにキャッシュする（ステップ３２６）。それは、キャッシュされたデータを、例えば、チャネルＩＤ、主題、及びタイム・スタンプにより索引付けする（ステップ３２８）。
【００９５】
インテリジェント・ルータ９２がデータの要求を受信する場合（ステップ３３０）、それは、キャッシュされたデータを、インデックスを用いて、当該要求に従って検索する（ステップ３３２）。インテリジェント・ルータ９２が、要求者又は他の者に最終的に送信するため、キャッシュされたデータをバックボーン・ルータ９５又は他のルート付けエンティテイに転送する。方法３２０は、データを連続的にキャッシュし且つ要求に応答してキャッシュ・データを検索するため繰り返し実行されることができる。
【００９６】
図１５は、方法３２０と使用のためのキャッシュ・インデックス（３３６）を図示する図である。キャッシュ・インデックス（３３６）は、データ（３３８）を受信し、そしてそれにタイム・スタンプ（３４０）を付して格納する。データが収集されるにつれ、それは、Δｔの持続時間毎にマークアップされる。なお、Δｔは、マーク間の時間、例えばｔ２−ｔ１を表す。いずれの方法でのタイム・マーキングするための他のタイプのインデックスを代替として用いることができる。
【００９７】
表１７は、キャッシュ・データを索引付けすることを概念的に説明している。表１８は、キャッシングのための接続履歴を格納するためのデータ構造を概念的に図示する。表１９は、インテリジェント・ルータを有するネットワーク・ノードにおいてデータをローカルにキャッシングするに使用のデータ構造の例を与える。
【００９８】
タイム・マーキングは、任意の固定又は可変の間隔で生じることが可能である。例えば、データは、５分毎にキャッシュされ且つ索引付けされる。指令を受信して、時間及び主題を指定するキャッシュされたデータを検索する（＃．ｇｅｔＣａｃｈｅのようなもの）と、チャネル・マネジャ２１８は、キャッシュ・インデックスを用いて、それがステップ３３２の要求と一致するキャッシュされたデータを検索することができるかどうかを決定する。
【００９９】
各主題又はチャネルは、例えば、それ自身のＩＰアドレスをマルチキャスト・トリー及び１組のインテリジェント・ルータ内に含むことができる。従って、表１８は、ユーザ・マシンにローカルに格納されることができるそのようなルータ間の接続履歴を表す。エッジ・ルータが故障の場合、当該マシンは、接続履歴にアクセスして、エッジ・ルータがオンラインに戻るときチャネルのためのアップストリーム・ルータと再接続する仕方を決定することができる。それはまた、例えば、申し込みのための任意の未決のコンテンツを獲得するため、それが接続を切られた持続時間の間キャッシュ獲得指令を実行することができる。
【０１００】
【表２２】
2005500741.tif 000024
【０１０１】
【表２３】
2005500741.tif 000025
【０１０２】
【表２４】
2005500741.tif 000026
【０１０３】
【表２５】
2005500741.tif 000027
【０１０４】
これらの例示的データ構造は、以下の情報を含む。主題ノードは、主題識別子、主題レベル、親チャネル又は主題ノードへのポインタ、それ自身のディレクトリのためのファイル記述子、その次のレベル主題ノードを含むハッシュ・テーブルへのポインタ、及びデータ・ノードへのポインタを含む。データ・ノードは、その主題親ノードへのポインタ、データ・ディレクトリのためのファイル記述子、各記憶装置に格納されるデータのためのデータ構造を含むサーキュラー・バッファ、当該バッファのヘッド及びテール、及びデータ・ノードを検索及び格納中にロックするための錠（ロック）を含む。格納された時間粒ノード（ｓｔｏｒｅｄ  ｔｉｍｅ  ｇｒａｉｎ  ｎｏｄｅ）は、実際のデータ・ファイルを表すノードであり、そして最後の時間粒ノードは、未だ記憶装置に格納されていないがしかしメモリに維持されている最後のバッファを表す。この例におけるキャッシング及びデータ格納スレッドは、最後の時間粒ノードへの同時発生アクセスを防ぐため最後の時間粒ノードのミューテック（ｍｕｔｅｘ）を使用する。
【０１０５】
エージェント処理
図１６は、送出申し込みメッセージのためのエージェント方法３５０のフローチャートである。エージェント方法３５０は、例えば、ユーザ（サブスクライバ）・マシン１２２内のプロセッサ１３４による実行のためのエージェント１２８により表されるようにソフトウエア・モジュールで実行されることができる。エージェント方法３５０においては、エージェント１２８は、図１１及び図１２において前述した方法のような方法を介して申し込みを受信する（ステップ３５２）。エージェント１２８は、申し込みに関するブール代数表現を指定するストリングを生成し（ステップ３５４）、そして当該ストリングをパーズして、申し込みの中のエラーを検出する（ステップ３５６）。エラーが存在する場合、エージェント１２８は、ユーザがエラーを訂正し且つ申し込みを再び入れるためエラー・メッセージをユーザに与えることができる（ステップ３６０）。申し込みがエラーを含まない場合（ステップ３５８）、エージェント１２８は、上記表現をデータ構造体の中に格納し（ステップ３６２）、その一例が以下で与えられる。エージェント１２８は、データ構造体の中の構成要素の不同等表現（ｃｏｎｓｔｉｔｕｅｎｔ  ｎｏｔ−ｅｑｕａｌ  ｅｘｐｒｅｓｓｉｏｎｓ）を肯定的形式に変換し（ステップ３６４）、そして当該データ構造を対応の論理和標準形（ＤＮＦ）構造に変換する（ステップ３６６）。エージェント１２８はまた、レンジ・フィルタ及びメンバーシップ試験のみを含むようＤＮＦ構造のＡＮＤ表現を単純化する（ステップ３６８）。
【０１０６】
ＤＮＦは周知の正規化形式であり、その正規化形式においては、ブール代数表現は、論理和（ｄｉｓｊｕｎｃｔ）と呼ばれる１つ又はそれより多い副表現のＯＲとして表され、各副表現は、１つ又はそれより多い属性試験のＡＮＤである。例えば、ブール代数表現（価格≧１０ＡＮＤ （シンボル＝“ＬＵ” ＯＲ シンボル＝“Ｔ”））は、（（価格≧１０ ＡＮＤ （シンボル＝“ＬＵ”） ＯＲ （価格≧１０ ＡＮＤ シンボル＝“Ｔ”））の等価ＤＮＦ表現を有する。
【０１０７】
ステップ３６４における変換は、「不同等（ｎｏｔ−ｅｑｕａｌ）」オペレータ（例示的シンタクス（構文）で！＝と表される。）を有する表現を、１個の許可されない値よりむしろ全ての許可される値を指定する等価な「肯定的」形式に変換することを含む。この変換は、ＤＮＦの生成前に実行され、そしてそれは、この例におけるルータが肯定的形式であるべき公式を要求するので、必要である。例えば、表現（価格！＝８０）は、等価な肯定的表現（価格≦７９ＯＲ 価格≧８１）に変換されることができる。
【０１０８】
ステップ３６８における変換は、ＤＮＦが生成された後で実行され、そしてその結果生じるＡＮＤ表現の余分の単純化を含み、そしてそれはまた、この例におけるルータの作業を単純化するため実行される。特に、同じ属性に関する複数の属性試験のＡＮＤは、１つの下限、１つの上限、下限と上限の両方、及び相等性試験の場合の単一の値のうちのいずれかを有する正規化の「レンジ・フィルタ」に単純化されることができる。従って、特定の種類のレンジ・フィルタが、表２２に従って符号化される。
【０１０９】
例えば、表現（価格≧１０ ＡＮＤ 価格≦８０ＡＮＤ 価格≧２０ ＡＮＤ価格≦１００）は、表現（価格≧２０ ＡＮＤ 価格≦８０）に単純化されることができ、それは、下限及び上限の両方を備えるレンジ・フィルタの一例である。単純化後の他の種類の例は、次のもの、即ち、（価格≧２０）（下限のみ）；（価格≦８０）（上限のみ）；（価格＝５０）（単一値）である。これらのレンジ・フィルタを生成するに、一部の副表現が真に又は偽に単純化することが可能であり、その場合副表現は、ブール代数の法則に従って排除されることができ、それにより更に、メッセージ内の表現を符号化することを最適化する。例えば、表現（価格≧５０ＡＮＤ 価格≦２０）は、「価格」に対するいずれの値も上記表現を満足させることができないので、偽に単純化する。フィルタ表現の全体が偽に単純化する特別の場合は、エージェントは、メッセージを全く生成する必要がなく、それによりルータから不必要な作業を免じる。
【０１１０】
主題フィルタがワイルドカードを含む場合、エージェント１２８は、随意にそれらを以下で説明するように変換することができる（ステップ３７０）。その他の場合、いずれのワイルドカードも、ユーザ・マシン又は他の装置よりむしろネットワーク内で変換されることができる。この例示的実施形態においては、主題フィルタのためのシンタクスは、ワイルドカードを用いる唯一のシンタクスであり、そして属性フィルタのためのシンタクスは、ブール代数表現を用いる唯一のシンタクスである。代替として、実行は、主題フィルタ及び属性フィルタのための異なる又は様々なタイプのシンタクスを用いることができる。
【０１１１】
エージェント１２８は、その結果生じたＤＮＦ表現をメッセージの中に符号化し（ステップ３７２）、そして当該メッセージをインテリジェント・ルータに転送する（ステップ３７４）。上記符号化は、申し込みを平坦なメッセージ・フォーマットに変換することを含み、それは、その平坦なメッセージ・フォーマットがデータのストリングを構成することを意味する。この変換は、申し込みのための主題フィルタ及び属性フィルタから発生されたルート付け規則をネットワーク内の１つ又はそれより多いインテリジェント・ルータ又は他のルート付けエンティティに伝搬させることを含むことができる。その伝搬のため、申し込み表現は、例えば、従来のパケット構造にマッピングされることができる。
【０１１２】
ステップ３７２に関する符号化は、チャネルの申し込みを、チャネル全体にわたり伝搬させるためメッセージＡＰＩのメッセージング・フォーマットにマーシャリング（ｍａｒｓｈａｌｌｉｎｇ）することを含む。申し込みは、例えば、主題＃．ＳＵＢＳＣＲＩＰＴＩＯＮを備える通知として内部でメッセージされる。可変数個の主題フィルタ・フィールド及び可変数個の属性試験の両方が存在するので、この例においては、１対のバイトを用いて、その可変数個の主題フィルタ・フィールドを格納し、そして別の１対のバイトを用いて、その可変数個の属性試験を格納する。主題フィルタの個々のフィールドは、例えば、それらが元の申し込みにおいて指定された順序で順次マーシャリングされ、そして各々メッセージの２バイト部分にマーシャリングされる。ワイルドカード・フィールドは、以下で説明するようにマーシャリングされることができる。
【０１１３】
属性試験をマーシャリングするに、当該属性試験のオペランドは、通知の属性値のマーシャリングに似た要領で、メッセージの終わりでマーシャリングされる。属性試験及びオペランドをマーシャリングする前に、それらは、ＤＮＦの各論理和内の属性順で、位置の順に事前定義された属性について試験を用いてソートされ、その試験には名前順の自由裁量の属性についての試験が続く。更に、各論理和内のスカラー値化された属性についてのリレーショナル試験の組が、正規化形式に、１つの限界（左オープン範囲又は右オープン範囲、又は相等性試験に対して）、及び２つの限界（別個の限界間の閉じた範囲に対して）のうちのいずれかを有するレンジ・フィルタとして単純化される。上記試験についての残りの情報は、例えば、オペランドと同じ順序で２バイト対の中に符号化され、この２バイト対のシークエンスは、主題フィルタ・フィールドの２バイト符号化のシークエンスに直ぐ続くメッセージの中に置かれる。当該２バイト対は、属性試験のビット・ストリング符号化のシークエンスの１つの形式を構成することができ、またそれは用いて、２バイト対とは別の他のタイプの符号化を表すことができる。属性試験の例が以下に与えられる。
【０１１４】
属性試験の符号化のためのスキーマが表２０に示されている。表２１は２バイト対のための符号化を示し、そして表２２は２バイト対の中のオペレータＩＤの符号化を示す。
【０１１５】
【表２６】
2005500741.tif 000028
【０１１６】
【表２７】
2005500741.tif 000029
【０１１７】
【表２８】
2005500741.tif 000030
【０１１８】
試験のための２バイト対が既に当該試験のオペランドのタイプと、当該試験が事前定義された又は自由裁量の属性に適用されるか否かとの両方を指示するので、自由裁量の属性又はそれらのタイプについて実行される試験の数を別々にマーシャリングする必要性が無い。このスキームは、通知内に１２７個以下の個数の事前定義された属性があることを保証する。代替として、この設計は、より多くのビットを用いて、属性試験を符号化し得る。
【０１１９】
このマーシャリング規約が属性フィルタのＤＮＦに従って属性試験を順序付け且つグループに分ける一方、インフラストラクチャ構成要素（例えば、ルータのようなもの）は、属性フィルタの全体評価をより効率的にするため、上記試験をある他の順序で（多分、異なる試験の成功又は失敗の確率について動的に導出されたローカル・データに従って）評価することを選定し得る。メッセージの申し込みＩＤフィールドは、後続の要求においてエージェントのエッジ・ルータに対して当該申し込みを一義的に識別して当該申し込みを修正又はその登録を取り消す（ｕｎｓｕｂｓｃｒｉｂｅ）当該エージェントにより発生された値である。特に、申し込みの属性フィルタに対する動的修正は、主題が＃．ＲＥＳＵＢＳＣＲＩＰＴＩＯＮであり且つ申し込みＩＤが修正されつつある以前登録された申し込みのそれであることを除いて、図１８の例で示されるメッセージ・フォーマットを用いて、伝搬される。そして、申し込み登録の取り消しは、例えば、申し込みＩＤフィールドを通して、図１８のメッセージ・フォーマットを用いて伝搬され、主題が＃．ＲＥＳＵＢＳＣＲＩＰＴＩＯＮであり且つ申し込みＩＤが申し込み登録の取消をされつつある以前登録された申し込みのそれである。
【０１２０】
次ぎのことは、前述したようにエージェントによる変換及び符号化を説明するための例を与える。次の例示的属性フィルタ表現、即ち、価格≧１０ＡＮＤ （シンボル＝“ＬＵ” ＯＲ （ボリューム≧１０００ ＡＮＤボリューム≦１００００））を考えてみる。図１９は、上記表現を格納するため、ステップ３６２においてエージェントにより用いられたオブジェクトを図示する統一モデリング言語（ＵＭＬ）図３９０を提供する。この図は、申し込みを指定するための階層関係を図示し、それは、変数、定数値、又はそれら両方を含むことができる。図におけるオブジェクトは、特定の実行に依存したフィルタ・クラスのインスタンスであることができる。各ＳｉｍｐｌｅＦｉｌｔｅｒオブジェクト（単純フィルタ・オブジェクト）は、フィルタ表現の対応の属性試験についての情報を格納するため用いられる属性値を表す。図１９の表現において、ＯｒＦｉｌｔｅｒ（ＯＲフィルタ）３９６は、２つのＡｎｄＦｉｌｔｅｒ（ＡＮＤフィルタ）３９２と４００とを接続する。ＡＮＤフィルタ３９２は、申し込みに関する属性を備えるＳｉｍｐｌｅＦｉｌｔｅｒ（単純フィルタ）３９４を含む。同様に、ＯｒＦｉｌｔｅｒ（ＯＲフィルタ）３９６はＳｉｍｐｌｅＦｉｌｔｅｒ（単純フィルタ）３９８を含み、そしてＡｎｄＦｉｌｔｅｒ（ＡＮＤフィルタ）４００はＳｉｍｐｌｅＦｉｌｔｅｒ（単純フィルタ）４０２及び４０４を含む。
【０１２１】
この例のために、属性価格、シンボル及びボリュームを、関連のチャネルの事前定義された属性であると仮定し、そして位置０、１及び２のそれぞれにおいて定義されると仮定する。更に、属性のタイプを、符号無しの整数（タイプコード（ｔｙｐｅｃｏｄｅ）６）、キャラクタ・アレイ（タイプコード１２）、及び符号無しの整数（タイプコード６）のそれぞれであると仮定する。
【０１２２】
次ぎに、上記の例示的属性フィルタ表現をその属性フィルタとして含む申し込みを考えてみる。図１８は、申し込みをメッセージの中にマーシャリングすることを与える。図１８の左側の図表３８６は実際のメッセージ・コンテンツを示し、一方右側の図表３８８はメッセージの異なる構成要素（パーツ）のための凡例を与える。この例における各図表の幅は４バイトである。マーシャリングする前に、フィルタは、その等価なＤＮＦ、即ち、（価格≧１０ＡＮＤ シンボル＝“ＬＵ”） ＯＲ （価格≧１０ ＡＮＤ ボリューム≧１０００ ＡＮＤ ボリューム≦１００００）に変換され済みである。
【０１２３】
１６ビット属性試験符号化がビット・シークエンスとして示され、間隙は、異なるパーツの中への分離を示す。この例における価格についての２つの試験は、それらが別々の論理和であるので組み合わされることができなく、従ってそれらは、右限界を持たない範囲（「右オープン範囲」）として別々にマーシャリングされることに留意されたい。他方、ボリュームについての２つの試験は、それらが同じ論理和にあるので組み合わされることができ、従ってそれらは一緒に、単一の「閉じた範囲」試験として一緒にマーシャリングされる。
【０１２４】
最後に、また、ある一定のフィールドが、「仮定されている」として特徴付けられており、これは、これらのフィールドのための値がこの例のため任意に選定され、そしてマーシャリングされた申し込みから一般的に独立していることを意味することに留意されたい。その上、申し込みのための主題フィルタは、「＞」であるよう任意に選定され、それは、関連のチャネルにより定義されたいずれの主題と整合する。前述しそして図１８及び図１９に示される例は、例証の目的のみのため与えられ、そしてマーシャリングは、任意の他のタイプの申し込みと共に用いることができる。また、方法３５０は、単に申し込みをマーシャリングする一例を与え、そしてそれらは、任意の他の方法でマーシャリングされることができる。
【０１２５】
図１７は、到来メッセージのためのエージェント方法３７６のフロー・チャートである。エージェント方法３７６は、例えば、ユーザ・マシン１２２内のエージェント１２８及びアプリケーション１２６により実行されることができる。エージェント方法３７６においては、エージェント１２８は、申し込みと一致するメッセージをインテリジェント・ルータから受信する（ステップ３７８）。エージェント１２８は、例えば、メッセージ内のチャネルＩＤにより申し込みと一致するチャネルを決定し（ステップ３８０）、そして当該チャネルのためのＡＰＩを呼び出す（ステップ３８２）。ＡＰＩは、ユーザ・マシンでのＧＵＩ又は他のフォーマットにおける申し込みに関するデータを与える（ステップ３８４）。到来メッセージの処理は、前述した符号化プロセスとは逆にデータを復号するプロセスを用いることができ、そしてこの復号（逆符号化）は、ルータ又は他のネットワーク・エンティテイで実行されることができる。
【０１２６】
ワイルドカード処理
図２０は、ワイルドカード方法４１０のフロー・チャートである。この方法は、フィルタのための１組のルート付け規則を用いて、申し込みに関する表現の中のワイルドカードを変換する一例を例証する。方法４１０は、例えば、ユーザ・マシン１２２内のプロセッサ１３４による実行のためのエージェント１２８により表されるようにソフトウエア・モジュールで実行されることができる。代替として、ワイルドカードは、ネットワークにおいてプロセッサ９３により、インテリジェント・ルータ９２内のソフトウエア制御下で、又はＡＳＩＣ９１に含まれる対応の機能で処理されることができる。ワイルドカードは、オープン・フィールド又は可変長フィールドを含み、それらの例が、表２１に与えられている。
【０１２７】
方法４１０においては、エージェント１２８又は他のエンティテイは、ワイルドカードを有する申し込みを受信する（ステップ４１２）。申し込みのための主題長（ｓｕｂｊｅｃｔ  ｌｅｎｇｔｈ）は、コンテンツを発行するときパブリッシャにより指定されることができ、そして主題（ｓｕｂｊｅｃｔ）は、例えば、パブリッシャ・マシン上で事前処理されて、主題のフィールドを計数し、従ってその主題のフィールドに関するフィールド計数（長さ）を獲得することができる。エージェント１２８は、フィルタ・オペランドの中のフィールド数を計数し（ステップ４１４）、そしてフィールド長＝Ｎの新しい規則（フィルタ）を初期化する（ステップ４１６）。エージェント１２８は、申し込みのサブフィールドを検索し（ステップ４１８）、そしてフィルタ・オペランド・サブフィールドＯ［ｉ］がワイルドカードであるか否かを決定する（ステップ４２０）。フィルタ・オペランド・サブフィールドがワイルドカードでない場合、エージェント１２８は、論理積節（ｃｏｎｊｕｎｃｔｉｖｅ  ｃｌａｕｓｅ）を規則、フィールド［ｉ］＝Ｏ［ｉ］に加える（ステップ４２２）。フィルタ・オペランドがより多くのサブフィールドを有する場合（ステップ４２４）、エージェント１２８は、ステップ４１８に戻って、追加のサブフィールドを処理する。パラメータ「ｉ」はフィールド値を表し、ここで、ｉは、この例においてはフィールド数を表す整数である。
【０１２８】
サブフィールドを処理した後で、エージェント１２８は、最後のオペランド・サブフィールドが「＞」であるか否かを決定し（ステップ４２６）、そしてそうである場合、それは、長さ制約をフィールド長＞Ｎ−１に変える（ステップ４２８）。ワイルドカード処理は、任意のタイプのシンボルを用いることができ、そして「＞」はそのようなほんの一例である。この例においては、「ａ．＞」は、ａ．ｂ、ａ．ｃ、ａ．ｄ等、及び（例えば、ａ．ｂ．ｘ、ａ．ｃ．ｘ、ａ．ｂ．ｘ．ｙ等に関して）全てのレベルでの全てのそれらの副主題を意味することができる。他のシンボルが、ワイルドカードの他の実行のため用いられることができる。
【０１２９】
必要ならば、エージェント１２８は、変換された規則を、ネットワーク内のインテリジェント・ルータ又は他のエンティテイへ伝搬させる（ステップ４３０）。従って、上記方法は、サブフィールドを処理してワイルドカードを非ワイルドカード規則（ワイルドカードを含まない規則を意味する。）に変換するため、当該サブフィールドを通して反復する。ワイルドカードの変換は、ネットワーク内の任意の場所で、例えば、サブスクライバ・マシン上又はインテリジェント・ルータの中で生じることができる。従って、当該変換は、１個のエンティテイにおいて、他のエンティテイへ伝搬された変換済みの規則を用いて生じることができ、又はそれは動的に生じることができる。
【０１３０】
表２３は、複数の例と共に、ワイルドカードを処理するためこれらの例示的ルート付け規則の要約を与える。これらのルート付け規則は、例えば、インテリジェント・ルータの中で発生され、又は他のネットワーク・エンティテイ内で発生され且つインテリジェント・ルータに伝搬されることができる。その上、表２３内のルート付け規則は、例証的目的のみのため与えられ、そして他のルート付け規則が、ワイルドカードを変換するため可能である。
【０１３１】
【表２９】
2005500741.tif 000031
【０１３２】
本発明が、例示的実施形態と関連して説明されたが、多くの変更が当業者にとって容易に明らかであり、そして本出願が、本発明の任意の適応又は変形に及ぶことを意図している。例えば、様々なタイプのパブリッシャ・マシン、ユーザ又はサブスクライバ・マシン、チャネル、及びそれらの構成、及びコンテンツ・ベースのルート付けのハードウエア及びソフトウエア実行、及び他の機能が、本発明の範囲から離れること無しに用いられ得る。本発明は、特許請求の範囲及びその均等物によってのみ限定されるべきである。
【図面の簡単な説明】
【０１３３】
【図１】図１は、ネットワーク・コアにおけるインテリジェントなルート付けを説明する図である。
【図２】図２は、パブリッシャ及びサブスクライバのためのインテリジェント・ルータを説明するネットワーク図である。
【図３】図３は、インテリジェント・ルータ及びバックボーン・ルータのためのネットワーク・インフラストラクチャを説明する図である。
【図４】図４は、インテリジェント・ルータのハードウエア構成要素の図である。
【図５】図５は、パブリッシャ・マシン及びサブスクライバ・マシンの図である。
【図６】図６は、インテリジェント・ルータのためのチャネル・マネジャの図である。
【図７】図７は、ユーザ・マシンをインテリジェント・ルータとインターフェースするための当該ユーザ・マシン内のソフトウエア構成要素の図である。
【図８】図８は、インテリジェント・ルータのためのソフトウエア構成要素の図である。
【図９】図９は、メッセージのためのパケット構造の図である。
【図１０】図１０は、パブリッシャ方法のフロー・チャートである。
【図１１】図１１は、サブスクライバ方法のフロー・チャートである。
【図１２】図１２は、チャネル・スクリーン及びサブスクライバ・スクリーンの図である。
【図１３】図１３は、コンテンツ・ベースのルート付け方法のフロー・チャートである。
【図１４】図１４は、キャッシング方法のフロー・チャートである。
【図１５】図１５は、キャッシュ・インデックスを説明する図である。
【図１６】図１６は、送出メッセージのためのエージェント方法のフロー・チャートである。
【図１７】図１７は、到来メッセージのためのエージェント方法のフロー・チャートである。
【図１８】図１８は、メッセージを符号化する一例を説明する図である。
【図１９】図１９は、申し込みを格納するためのデータベース構造の図である。
【図２０】図２０は、ワイルドカード方法のフロー・チャートである。
【図１】
2005500741.tif 000032
【図２】
2005500741.tif 000033
【図３】
2005500741.tif 000034
【図４】
2005500741.tif 000035
【図５】
2005500741.tif 000036
【図６】
2005500741.tif 000037
【図７】
2005500741.tif 000038
【図８】
2005500741.tif 000039
【図９】
2005500741.tif 000040
【図１０】
2005500741.tif 000041
【図１１】
2005500741.tif 000042
【図１２】
2005500741.tif 000043
【図１３】
2005500741.tif 000044
【図１４】
2005500741.tif 000045
【図１５】
2005500741.tif 000046
【図１６】
2005500741.tif 000047
【図１７】
2005500741.tif 000048
【図１８】
2005500741.tif 000049
【図１９】
2005500741.tif 000050
【図２０】
2005500741.tif 000051
【国際公開パンフレット】
2005500741.tif 000052
2005500741.tif 000053
【国際公開パンフレット（コレクトバージョン）】
2005500741.tif 000054
2005500741.tif 000055
2005500741.tif 000056
2005500741.tif 000057
2005500741.tif 000058
2005500741.tif 000059
2005500741.tif 000060
2005500741.tif 000061
2005500741.tif 000062
2005500741.tif 000063
2005500741.tif 000064
2005500741.tif 000065
2005500741.tif 000066
2005500741.tif 000067
2005500741.tif 000068
2005500741.tif 000069
2005500741.tif 000070
2005500741.tif 000071
2005500741.tif 000072
2005500741.tif 000073
2005500741.tif 000074
2005500741.tif 000075
2005500741.tif 000076
2005500741.tif 000077
2005500741.tif 000078
2005500741.tif 000079
2005500741.tif 000080
2005500741.tif 000081
2005500741.tif 000082
2005500741.tif 000083
2005500741.tif 000084
2005500741.tif 000085
2005500741.tif 000086
2005500741.tif 000087
2005500741.tif 000088
2005500741.tif 000089
2005500741.tif 000090
2005500741.tif 000091
2005500741.tif 000092
2005500741.tif 000093
2005500741.tif 000094
2005500741.tif 000095
2005500741.tif 000096
2005500741.tif 000097
2005500741.tif 000098
2005500741.tif 000099
2005500741.tif 000100
2005500741.tif 000101
2005500741.tif 000102
2005500741.tif 000103
2005500741.tif 000104
2005500741.tif 000105
2005500741.tif 000106
2005500741.tif 000107
2005500741.tif 000108
2005500741.tif 000109
2005500741.tif 000110
2005500741.tif 000111
2005500741.tif 000112
2005500741.tif 000113
2005500741.tif 000114
2005500741.tif 000115
2005500741.tif 000116
2005500741.tif 000117
2005500741.tif 000118
2005500741.tif 000119
2005500741.tif 000120
2005500741.tif 000121
【国際調査報告】
2005500741.tif 000122