(57)【要約】      （修正有）【課題】  多数のユーザに対して容易かつ効率的に適応できるコンテンツベースルータのための改善された技術を提供する。【解決手段】  入口ルータ１０２でデータパケットを受信すると、入口ルータ１０２はデータパケットのコンテンツを、格納されているサブスクリプションとマッチングする。コンテンツはＸＭＬデータを使用して記述されており、ユーザサブスクリプションはＸＭＬクエリーで規定される。ルータはマッチした場合、マッチしたサブスクリプションのサブスクライバーに対応した出口ルータを表すルーティングラベルをデータパケットに割り当て、転送すべきコンテンツベースルータにデータパケットを送信する。【選択図】    図１
2006203904.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツベースルータにおいて実行される、コンテンツベースルーティングのための方法であって、
コンテンツを有するデータパケットを受信するステップと、
前記受信したデータパケットのコンテンツを、格納されているサブスクリプションに対してマッチングするマッチングステップと、
前記マッチングステップにおいて前記データパケットのコンテンツが前記格納されているサブスクリプションにマッチした場合、マッチしたサブスクリプションのサブスクライバーに対応した出口ルータを表すルーティングラベルを、前記データパケットに割り当てる割り当てステップと、
前記ルーティングラベルを割り当てられ、前記ルーティングラベルを付加された前記データパケットを、次に転送すべきコンテンツベースルータに送信する送信ステップとを有することを特徴とする方法。
【請求項２】
請求項１に記載の方法において、
前記割り当てステップは、前記マッチングステップにおいて前記データパケットのコンテンツが前記格納されている複数のサブスクリプションにマッチした場合、マッチした複数のサブスクリプションのサブスクライバーに対応した複数の出口ルータをそれぞれ表す複数のルーティングラベルを、前記データパケットに割り当てるステップであり、
前記送信ステップは、前記複数のルーティングラベルを割り当てられ、前記複数のルーティングラベルを付加された前記データパケットを、次に転送すべきコンテンツベースルータに送信するステップであることを特徴とする方法。
【請求項３】
請求項１に記載の方法において、
前記割り当てステップは、前記マッチングステップにおいて前記データパケットのコンテンツが前記格納されている複数のサブスクリプションにマッチした場合、マッチした複数のサブスクリプションのサブスクライバーに対応した複数の出口ルータをそれぞれ表す複数のルーティングラベルを、前記データパケットを複製して得られた複数のデータパケットにそれぞれ割り当てるステップであり、
前記送信ステップは、前記複数のルーティングラベルをそれぞれ割り当てられ、前記複数のルーティングラベルをそれぞれ付加された前記複数のデータパケットを、次に転送すべきコンテンツベースルータに送信するステップであることを特徴とする方法。
【請求項４】
請求項１に記載の方法において、
前記割り当てステップは、前記マッチングステップにおいて前記データパケットのコンテンツが前記格納されている複数のサブスクリプションにマッチした場合、マッチした複数のサブスクリプションのサブスクライバーに対応した複数の出口ルータを表す一つのルーティングラベルを、前記データパケットに割り当てるステップであり、
前記送信ステップは、前記１つのルーティングラベルを割り当てられ、前記１つのルーティングラベルを付加された前記データパケットを、次に転送すべきコンテンツベースルータに送信するステップであることを特徴とする方法。
【請求項５】
請求項１に記載の方法において、前記データパケットは前記コンテンツを記述しているＸＭＬデータを有し、前記サブスクリプションはＸＭＬクエリーによって規定されることを特徴とする方法。
【請求項６】
請求項５に記載の方法において、前記マッチングステップは、前記ＸＭＬデータを前記ＸＭＬクエリーに対してマッチングするステップであることを特徴とする方法。
【請求項７】
請求項１に記載の方法において、前記ルーティングラベルは、ルーティングツリーを規定することを特徴とする方法。
【請求項８】
請求項１に記載の方法において、前記ルーティングラベルは、ルーティングパスを規定することを特徴とする方法。
【請求項９】
請求項１に記載の方法において、
前記割り当てステップにおいて割り当てられるルーティングラベルを決めてから、前記データパケットの前記コンテンツを圧縮するステップを、さらに有し、
前記送信ステップは、圧縮されたコンテンツに、決められたルーティングラベルが付加された状態で、前記データパケットを、次に転送すべきコンテンツベースルータに送信するステップであることを特徴とする方法。
【請求項１０】
コンテンツを有するデータパケットを受信する手段と、
前記受信したデータパケットのコンテンツを、格納されているサブスクリプションに対してマッチングするマッチング手段と、
前記マッチングステップにおいて前記データパケットのコンテンツが前記格納されているサブスクリプションにマッチした場合、マッチしたサブスクリプションのサブスクライバーに対応した出口ルータを表すルーティングラベルを、前記データパケットに割り当てる割り当て手段と、
前記ルーティングラベルを割り当てられ、前記ルーティングラベルを付加された前記データパケットを、次に転送すべきコンテンツベースルータに送信する送信手段とを有することを特徴とするコンテンツベースルータ。
【請求項１１】
請求項１０に記載のコンテンツベースルータにおいて、
前記割り当て手段は、前記マッチングステップにおいて前記データパケットのコンテンツが前記格納されている複数のサブスクリプションにマッチした場合、マッチした複数のサブスクリプションのサブスクライバーに対応した複数の出口ルータをそれぞれ表す複数のルーティングラベルを、前記データパケットに割り当てる手段であり、
前記送信手段は、前記複数のルーティングラベルを割り当てられ、前記複数のルーティングラベルを付加された前記データパケットを、次に転送すべきコンテンツベースルータに送信する手段であることを特徴とするコンテンツベースルータ。
【請求項１２】
請求項１０に記載のコンテンツベースルータにおいて、
前記割り当て手段は、前記マッチング手段において前記データパケットのコンテンツが前記格納されている複数のサブスクリプションにマッチした場合、マッチした複数のサブスクリプションのサブスクライバーに対応した複数の出口ルータをそれぞれ表す複数のルーティングラベルを、前記データパケットを複製して得られた複数のデータパケットにそれぞれ割り当てる手段であり、
前記送信手段は、前記複数のルーティングラベルをそれぞれ割り当てられ、前記複数のルーティングラベルをそれぞれ付加された前記複数のデータパケットを、次に転送すべきコンテンツベースルータに送信する手段であることを特徴とするコンテンツベースルータ。
【請求項１３】
請求項１０に記載のコンテンツベースルータにおいて、
前記割り当て手段は、前記マッチングステップにおいて前記データパケットのコンテンツが前記格納されている複数のサブスクリプションにマッチした場合、マッチした複数のサブスクリプションのサブスクライバーに対応した複数の出口ルータを表す一つのルーティングラベルを、前記データパケットに割り当てる手段であり、
前記送信手段は、前記１つのルーティングラベルを割り当てられ、前記１つのルーティングラベルを付加された前記データパケットを、次に転送すべきコンテンツベースルータに送信する手段であることを特徴とするコンテンツベースルータ。
【請求項１４】
請求項１０に記載のコンテンツベースルータにおいて、前記データパケットは前記コンテンツを記述しているＸＭＬデータを有し、前記サブスクリプションはＸＭＬクエリーによって規定されることを特徴とするコンテンツベースルータ。
【請求項１５】
請求項１４に記載のコンテンツベースルータにおいて、前記マッチング手段は、前記ＸＭＬデータを前記ＸＭＬクエリーに対してマッチングするステップであることを特徴とするコンテンツベースルータ。
【請求項１６】
請求項１０に記載のコンテンツベースルータにおいて、前記ルーティングラベルは、ルーティングツリーを規定することを特徴とするコンテンツベースルータ。
【請求項１７】
請求項１０に記載のコンテンツベースルータにおいて、前記ルーティングラベルは、ルーティングパスを規定することを特徴とするコンテンツベースルータ。
【請求項１８】
請求項１０に記載のコンテンツベースルータにおいて、
前記割り当て手段において割り当てられるルーティングラベルを決めてから、前記データパケットの前記コンテンツを圧縮する手段を、さらに有し、
前記送信手段は、圧縮されたコンテンツに、決められたルーティングラベルが付加された状態で、前記データパケットを、次に転送すべきコンテンツベースルータに送信する手段であることを特徴とするコンテンツベースルータ。
【請求項１９】
コンテンツを有するデータパケットを受信するインタフェイスと、
前記受信したデータパケットの前記コンテンツを、格納されているサブスクリプションに対してマッチングし、前記データパケットのコンテンツが前記格納されているサブスクリプションにマッチした場合、マッチしたサブスクリプションのサブスクライバーに対応した出口ルータを表すルーティングラベルを、前記データパケットに割り当てるプロセッサと、
前記ルーティングラベルを割り当てられ、前記ルーティングラベルを付加された前記データパケットを、次に転送すべきコンテンツベースルータに送信するインタフェイスとを有することを特徴とするコンテンツベースルータ。
【請求項２０】
請求項１９に記載のコンテンツベースルータにおいて、前記受信したデータパケットは前記コンテンツを記述しているＸＭＬデータを有し、前記サブスクリプションはＸＭＬクエリーによって規定されることを特徴とするコンテンツベースルータ。
【請求項２１】
請求項１９に記載のコンテンツベースルータにおいて、前記ルーティングラベルはルーティングツリーを規定することを特徴とするコンテンツベースルータ。
【請求項２２】
請求項１９に記載のコンテンツベースルータにおいて、前記ルーティングラベルはルーティングパスを規定することを特徴とするコンテンツベースルータ。
【請求項２３】
入口ルータと中継ルータとを有するコンテンツベースネットワークであって、
前記入口ルータは、
コンテンツを有するデータパケットを受信するインタフェイスと、
前記受信したデータパケットの前記コンテンツを、格納されているサブスクリプションに対してマッチングし、前記データパケットのコンテンツが前記格納されているサブスクリプションにマッチした場合、マッチしたサブスクリプションのサブスクライバーに対応した出口ルータを表すルーティングラベルを、前記データパケットに割り当てる手段と、
前記ルーティングラベルを割り当てられ、前記ルーティングラベルを付加された前記データパケットを、前記中継ルータに送信するインタフェイスとを有し、
前記中継ルータは、
前記ルーティングラベルを付加された前記データパケットを受信するインタフェイスと、
格納されているラベルベースルーティングテーブルと、
前記ラベルベースルーティングテーブル及び前記ルーティングラベルに基づいて、前記ルーティングラベルを付加された前記データパケットを別のコンテンツベースルータに送信するインタフェイスを有することを特徴とするコンテンツベースネットワーク。
【請求項２４】
請求項２３に記載のコンテンツベースネットワークにおいて、
出口ルータを更に有し、
前記出口ルータは、
前記中継ルータから、前記ルーティングラベルを付加された前記データパケットを受信するインタフェイスと、
前記受信した、前記ルーティングラベルを付加された前記データパケットの前記コンテンツを、格納されているサブスクリプションに対してマッチングし、前記受信した、前記ルーティングラベルを付加された前記データパケットのコンテンツが前記格納されているサブスクリプションにマッチした場合、前記ルーティングラベルを除去して前記データパケットを送信するインタフェイスとを有することを特徴とするコンテンツベースネットワーク。
【請求項２５】
請求項２３に記載のコンテンツベースネットワークにおいて、前記データパケットは前記コンテンツを記述しているＸＭＬデータを有し、前記サブスクリプションはＸＭＬクエリーによって規定されることを特徴とするコンテンツベースネットワーク。
【請求項２６】
請求項２３に記載のコンテンツベースネットワークにおいて、前記ルーティングラベルは、ルーティングツリーを規定することを特徴とするコンテンツベースネットワーク。
【請求項２７】
請求項２３に記載のコンテンツベースネットワークにおいて、前記ルーティングラベルは、ルーティングパスを規定することを特徴とするコンテンツベースネットワーク。
【請求項２８】
プロセッサと、該プロセッサに所定の処理を実行させるためのプログラムを格納すると共に前記プロセッサが前記プログラムを実行する際に一時記憶としても動作する記憶手段とを備えたコンテンツベースルータにおける前記プログラムであって、
前記所定の処理は、
サブスクリプションと、該サブスクリプションのサブスクライバーに対応した出口ルータを表すルーティングラベルとを、前記記憶手段に格納しておくステップと、
コンテンツを有するデータパケットを受信するステップと、
前記受信したデータパケットのコンテンツを、前記記憶手段に格納されているサブスクリプションに対してマッチングするマッチングステップと、
前記マッチングステップにおいて前記データパケットのコンテンツが前記格納されているサブスクリプションにマッチした場合、マッチしたサブスクリプションのサブスクライバーに対応した出口ルータを表すルーティングラベルを、前記データパケットに割り当てる割り当てステップと、
前記ルーティングラベルを割り当てられ、前記ルーティングラベルを付加された前記データパケットを、次に転送すべきコンテンツベースルータに送信するステップとを有することを特徴とするコンテンツベースルータ用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータネットワーク構築に関し、特に、コンテンツベースデータパケットルーティングに関する。
【背景技術】
【０００２】
従来、インターネットプロトコル（ＩＰ）ネットワークにおけるデータパケットのルーティングは周知である。基本的なＩＰルーティングにおいて、データパケットはデータパケットの最終宛先とされるＩＰアドレスである宛先アドレスを含む。データパケットがルータに到達すると、ルータはパケットの宛先アドレスに基づいて経路上の次のルータ（即ち、ネクストホップ）を決定し、次のルータにパケットを送信する。ある特殊なタイプのIPルーティングはルーティングテーブルを用いてパケットのネクストホップを決定する。ルーティングテーブルはIPアドレスのリスト（というより、IPアドレスレンジ）と、それぞれのIPアドレスレンジに関連したネクストホップを含む。データパケットが受信されると、ルーティングテーブルは宛先アドレスをルーティングテーブル内の適切なIPアドレスレンジにマッチングさせ、ルーティングテーブルにおいて識別されたネクストホップにデータパケットを送信する。ルーティングテーブルアドレスレンジは、しばしばIPアドレスプレフィックスとして表され、IPパケット宛先アドレスをこれらのIPアドレスプレフィックスにマッチングさせる技術を、ロンゲスト・プレフィックス・マッチングという。一般的には宛先アドレスへのデータパケットのルーティング、特にロンゲスト・プレフィックス・マッチングは、データネットワーク技術においてはよく知られている。
【０００３】
別のタイプのルーティングとして、コンテンツベースルーティングが挙げられるが、これはデータパケットが、予め特定されている宛先アドレスというよりはむしろ、コンテンツに基づいてルーティングされるものである。この種のルーティングは、パブリッシュ(publish)／サブスクライブ(subscribe)システムにおいて有用であり、これは、コンテンツプロバイダがネットワークにその情報をパブリッシュ（発行）している間、ユーザ（サブスクライバー）がその情報にサブスクライブすることが可能であるというものである。この種のシステムでは、特定のコンテンツにサブスクライブすることによって、興味のある情報をユーザが選択的に決定できる。コンテンツプロバイダはそれから、どのユーザがコンテンツを受信するべきかという特別な情報無しでコンテンツをネットワークにパブリッシュする。ユーザ（サブスクライバー）のサブスクリプション（サブスクリプションはクエリーによって規定される。サブスクリプションは、選択条件を表している）をコンテンツプロバイダのパブリッシュにマッチングさせることによって、コンテンツはネットワークを介して普及し、ユーザ（サブスクライバー）はサブスクライブしたコンテンツだけを受信する。
【０００４】
適切なユーザへコンテンツをフィルタリングしルーティングすることは複雑なタスクであり、それは、例えば、オーバーレイ(overlay)ネットワークに組織化されるアプリケーションレベルコンテンツベースルータによって実行される。オーバーレイネットワークは仮想ネットワーク構造をしており、互いに通信するアプリケーションレベルルータと、既存の根本的なIPネットワークインフラを利用するエンドユーザクライエントによって実行される。オーバーレイネットワークは基本的に、基本的なネットワークの信用できるポイントツーポイント通信プロトコル（即ち、TCP）を利用して、なんらかの付加的な特徴あるいはサービスを実施している。オーバーレイネットワークサービスには、独立した基本ネットワークが与えられる。コンテンツベースオーバーレイネットワークにおいては、基本的ネットワークが標準のポイントツーポイントデータ通信に使用される間、コンテンツベースのサービスがオーバーレイネットワークに与えられる。
【０００５】
コンテンツベースオーバーレイネットワークにおいて、コンテンツベースのサービスはコンテンツベースルータによって実行される。ユーザ（サブスクライバー）があるコンテンツにサブスクライブすると、そのサブスクリプションはコンテンツベースルータのルーティングテーブルに格納される。ルーティングテーブルはまた、格納されている様々なサブスクリプションに対して次に転送すべきコンテンツベースルータを識別する。パブリッシュされたコンテンツがルータに到達すると、コンテンツはルータに格納されているサブスクリプションとマッチングされ、コンテンツは適切なネクストホップコンテンツベースルータに送信される。パブリッシュされたコンテンツが最初にオーバーレイネットワークに入るコンテンツベースルータは、入口ルータと呼ばれる。
【０００６】
コンテンツベースルーティングを実現するためには、サブスクリプションを規定してコンテンツをそれらの記述にマッチングすることができるように、コンテンツを記述するためのなんらかの技術を使用する必要がある。このような技術の一つが、XML（Extensible Markup Language）であり、これはタグやタグに関する数値を使用した電子文書を記述するための言語として知られている。正確には、XMLは実際のところメタ言語、すなわち他の言語を記述するための言語であり、様々な異なったタイプの文書に対してカスタマイズされたマークアップ言語のデザインが可能である。XMLは、いかなる種類の構造化された情報を格納するため、および、通信が不可能な異なったコンピューターシステム間を通過させるために情報を同封したりカプセル化するために使用されることもある。XMLは、非特許文献１においてさらに詳しく規定されており、参照として、本明細書に組み込まれる。
【０００７】
コンテンツベースオーバーレイネットワークにおいてＸＭＬを実行する際、ルータはＸＭＬルータと呼ばれることがある。このような実行において、各ＸＭＬルータはＸＭＬクエリーとしてサブスクリプションを格納する。コンテンツが各ＸＭＬルータに到着すると、ルータは到着したコンテンツのＸＭＬ記述（即ち、メタデータ）を、格納されているＸＭＬクエリーと比較しなければならない。この場合、まず異なったタグとそれらの値を決定するためにＸＭＬ記述を構文解析し、その後そのタグと値を格納されているＸＭＬクエリー（即ち、サブスクリプション）とマッチングすることが必要となる。到着したコンテンツがサブスクリプションと一致すると判断された場合、ＸＭＬルータはコンテンツを、ルーティングテーブルに基づきオーバーレイネットワーク上のネクストホップＸＭＬルータに送信する。コンテンツを受信し、ＸＭＬ記述を構文解析し、格納されているＸＭＬクエリーにマッチングさせ、ネクストホップＸＭＬルータにコンテンツを送信するという一連のプロセスは、最終的にコンテンツが、ラストホップ（即ち出口）ＸＭＬルータによってサブスクライバーに運ばれるまで、オーバーレイネットワークの各ＸＭＬルータで遂行される。
【０００８】
【非特許文献１】Ｆ．Ｙｅｒｇｅａｕ，Ｔ．Ｂｒａｙ，Ｊ．Ｐａｏｌｉ，Ｃ．Ｍ．Ｓｐｅｒｂｅｒｇ−ＭｃＱｕｅｅｎ，Ｅ．Ｍａｌｅｒ，  Extensible Markup Language（XML）１．０（第３版）、W３Ｃ  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  ２００４年２月４日
【非特許文献２】Ｅ．Ｒｏｓｅｎ，Ａ．Ｖｉｓｗａｎａｔｈａｎ，Ｒ．Ｃａｌｌｏｎ，  マルチプロトコル・ラベル・スイッチング・アーキテクチュア、インターネット・エンジニアリング・タスク・フォース（ＩＥＴＦ）、リクエストフォ−コメント（ＲＦＣ）３０３１、Ｊａｎｕａｒｙ  ２００１
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記ＸＭＬによるコンテンツベースオーバーレイネットワークの問題点は、ユーザが多数の時やトラフィックが相当な量の時には適切でないことである。ＸＭＬ記述の構文解析やそれに関するコンテンツのユーザのＸＭＬクエリーに対するマッチングが遅くなり、計算負荷が高くなるからである。このため、ユーザやコンテンツトラフィックが増えれば、コンテンツベースオーバーレイネットワークに負荷がかかりすぎ、深刻な実行遅延をおこしかねない。
【００１０】
従って、多数のユーザに対して容易かつ効率的に適応できるコンテンツベースルータのための改善された技術が必要となる。
【課題を解決するための手段】
【００１１】
本発明の第１の態様によれば、
コンテンツベースルータにおいて実行される、コンテンツベースルーティングのための方法であって、
コンテンツを有するデータパケットを受信するステップと、
前記受信したデータパケットのコンテンツを、格納されているサブスクリプションに対してマッチングするマッチングステップと、
前記マッチングステップにおいて前記データパケットのコンテンツが前記格納されているサブスクリプションにマッチした場合、マッチしたサブスクリプションのサブスクライバーに対応した出口ルータを表すルーティングラベルを、前記データパケットに割り当てる割り当てステップと、
前記ルーティングラベルを割り当てられ、前記ルーティングラベルを付加された前記データパケットを、次に転送すべきコンテンツベースルータに送信する送信ステップとを有することを特徴とする方法が得られる。
【００１２】
本発明の第２の態様によれば、
コンテンツを有するデータパケットを受信する手段と、
前記受信したデータパケットのコンテンツを、格納されているサブスクリプションに対してマッチングするマッチング手段と、
前記マッチングステップにおいて前記データパケットのコンテンツが前記格納されているサブスクリプションにマッチした場合、マッチしたサブスクリプションのサブスクライバーに対応した出口ルータを表すルーティングラベルを、前記データパケットに割り当てる割り当て手段と、
前記ルーティングラベルを割り当てられ、前記ルーティングラベルを付加された前記データパケットを、次に転送すべきコンテンツベースルータに送信する送信手段とを有することを特徴とするコンテンツベースルータが得られる。
【００１３】
本発明の第３の態様によれば、
コンテンツを有するデータパケットを受信するインタフェイスと、
前記受信したデータパケットの前記コンテンツを、格納されているサブスクリプションに対してマッチングし、前記データパケットのコンテンツが前記格納されているサブスクリプションにマッチした場合、マッチしたサブスクリプションのサブスクライバーに対応した出口ルータを表すルーティングラベルを、前記データパケットに割り当てるプロセッサと、
前記ルーティングラベルを割り当てられ、前記ルーティングラベルを付加された前記データパケットを、次に転送すべきコンテンツベースルータに送信するインタフェイスとを有することを特徴とするコンテンツベースルータが得られる。
【００１４】
本発明の第４の態様によれば、
入口ルータと中継ルータとを有するコンテンツベースネットワークであって、
前記入口ルータは、
コンテンツを有するデータパケットを受信するインタフェイスと、
前記受信したデータパケットの前記コンテンツを、格納されているサブスクリプションに対してマッチングし、前記データパケットのコンテンツが前記格納されているサブスクリプションにマッチした場合、マッチしたサブスクリプションのサブスクライバーに対応した出口ルータを表すルーティングラベルを、前記データパケットに割り当てる手段と、
前記ルーティングラベルを割り当てられ、前記ルーティングラベルを付加された前記データパケットを、前記中継ルータに送信するインタフェイスとを有し、
前記中継ルータは、
前記ルーティングラベルを付加された前記データパケットを受信するインタフェイスと、
格納されているラベルベースルーティングテーブルと、
前記ラベルベースルーティングテーブル及び前記ルーティングラベルに基づいて、前記ルーティングラベルを付加された前記データパケットを別のコンテンツベースルータに送信するインタフェイスを有することを特徴とするコンテンツベースネットワークが得られる。
【００１５】
本発明の第５の態様によれば、
プロセッサと、該プロセッサに所定の処理を実行させるためのプログラムを格納すると共に前記プロセッサが前記プログラムを実行する際に一時記憶としても動作する記憶手段とを備えたコンテンツベースルータにおける前記プログラムであって、
前記所定の処理は、
サブスクリプションと、該サブスクリプションのサブスクライバーに対応した出口ルータを表すルーティングラベルとを、前記記憶手段に格納しておくステップと、
コンテンツを有するデータパケットを受信するステップと、
前記受信したデータパケットのコンテンツを、前記記憶手段に格納されているサブスクリプションに対してマッチングするマッチングステップと、
前記マッチングステップにおいて前記データパケットのコンテンツが前記格納されているサブスクリプションにマッチした場合、マッチしたサブスクリプションのサブスクライバーに対応した出口ルータを表すルーティングラベルを、前記データパケットに割り当てる割り当てステップと、
前記ルーティングラベルを割り当てられ、前記ルーティングラベルを付加された前記データパケットを、次に転送すべきコンテンツベースルータに送信するステップとを有することを特徴とするコンテンツベースルータ用プログラムが得られる。
【発明の効果】
【００１６】
本発明によれば、コンテンツベースルーティングを、従来の技術より早くより効率的に行うことができる。
【発明を実施するための最良の形態】
【００１７】
次に本発明の実施例について図面を参照して説明する。
【００１８】
本発明は、ラベルベースルーティングをコンテンツベースルーティングと組み合わせて使用することにより、従来のコンテンツベースルーティングシステムをより効果的なものにしようとするものである。
【００１９】
以下に述べる本発明の一実施例において、コンテンツベースルータ（入口ルータ）でデータパケットを受信すると、当該ルータはデータパケットのコンテンツを、格納されているサブスクリプションにマッチングさせる。ルータはマッチングに基づきデータパケットにルーティングラベルを割り当て、データパケットを第２のコンテンツベースルータ（中継ルータ）に送信する。パケット経路に沿って配置されている中継ルータは、付加的なコンテンツマッチングを実行するのではなく、格納されているルーティングテーブルと割り当てられたラベルを用いて、次に転送すべきコンテンツルータを決定する。出口ルータで受信されると、メッセージのコンテンツは、出口ルータによってサービスをうけるユーザのサブスクリプションとマッチングされ、出口ルータは、サブスクリプションとコンテンツが一致したエンドユーザにデータパケットを提供する。中継ルータが、メッセージのルーティングのためのコンテンツマッチングを実行する必要がないので、本発明によるコンテンツベースルーティングは、従来の技術より速くより効率的である。
【００２０】
一実施例において、データパケットはデータパケットのコンテンツを記述したＸＭＬデータを含み、サブスクリプションはＸＭＬクエリーによって規定される。データパケットコンテンツをサブスクリプションにマッチングする際、まずＸＭＬデータを構文解析し、その後にＸＭＬデータをＸＭＬクエリーにマッチングさせる。
【００２１】
本発明の原理に従えば、ルーティングラベルを使用した様々な変形例が考えられる。メッセージに割り当てられたルーティングラベルは、入口ルータから出口ルータへの単一経路を規定することができ、この時一つ以上の中継ルータを含むことが可能である。ルーティングラベルはまた、一つの入口ルータから複数の出口ルータへの転送経路（ルーティングパス）を規定することもでき、この場合、中継ルータを通る一つ以上の経路を含むことが可能である。さらに、複数のラベルを単一のメッセージに割り当てることも可能であり、その複数のラベルは各々単一経路あるいはルーティングツリーのいずれかを規定する。
【００２２】
時間がかかる上に高価なＸＭＬ構文解析やクエリー評価が中継ルータで実行されないため、コンテンツベースルーティングと組み合わせたラベルベースルーティングは改良されたパフォーマンスを提供できる。コンテンツベースルーティングと組み合わせたラベルベースルーティングにはまた、他の利点もある。例えば、データパケットコンテンツは入口ルータで、割り当てられるラベルを決めてから、圧縮され、その圧縮フォームに、決められたラベルが付加された状態で、中継ルータを通って送信されるかもしれない。ルーティングがラベルによって予め規定されているので、コンテンツそれ自体は中継ルータで必要ではなく、コンテンツにとって必要なことは単に、適切なサブスクライバーに送信されるために、出口ルータで解凍されることだけである。
【００２３】
本発明のこれら及びそれ以外の利点は、以下の詳細な説明と添付図面を言及することによって、当業者にとって明白となるであろう。
【００２４】
図１は本発明のコンテンツベースルーティングの原理が実行されるオーバーレイネットワークを示している。図１は、コンテンツベースルータとして、オーバーレイルータ（Ａ）１０２、オーバーレイルータ（Ｂ）１０４、オーバーレイルータ（Ｃ）１０６、オーバーレイルータ（Ｄ）１０８、オーバーレイルータ（Ｅ）１１０、オーバーレイルータ（Ｆ）１１２、及びオーバーレイルータ（Ｇ）１１４を有するオーバーレイネットワークを示している。オーバーレイルータ（Ａ）１０２は入口ルータとして作用し、オーバーレイルータ（Ｂ）１０４、オーバーレイルータ（Ｃ）１０６、及びオーバーレイルータ（Ｄ）１０８は中継ルータとして作用し、オーバーレイルータ（Ｅ）１１０、オーバーレイルータ（Ｆ）１１２、及びオーバーレイルータ（Ｇ）１１４は出口ルータとして作用する。これらのルータは、例えばプログラム可能なコンピュータを使用して実施されてもよい。
【００２５】
図２を参照すると、コンテンツベースルータ１０２のハイレベルブロック図が示されている。なお、他のコンテンツベースルータ１０４、１０６、１０８、１１０、１１２、及び１１４も、図２のコンテンツベースルータ１０２と同様のハードウエアを有するが、ソフトウエア及び動作においては図２のコンテンツベースルータ１０２とは異なることは、説明が進めば、明らかになろう。
【００２６】
図２において、コンテンツベースルータ１０２の機能は、プロセッサ２０４によって制御される。プロセッサ２０４は、ルータ１０２全体の操作を規定する、メモリ２０９に格納されたコンピュータプログラム２０８を実行する。ルータ１０２は、また、データや様々なルーティングテーブル情報（これらについては以下詳細に説明する）を格納するためのメモリ２１０を含む。すなわち、メモリ２１０は、プロセッサ２０４がコンピュータプログラム２０８を実行する際に一時記憶として動作するものである。メモリ２１０は、コンピュータの読み取り可能な格納媒体であれば、磁気、光学、その他いかなるタイプの格納媒体でもよい。図２ではメモリ２１０が単一ユニットとして示されているが、メモリ２１０は複数のメモリユニットであってもよく、この場合各メモリユニットは適切なタイプの格納媒体であってもよい。さらに、コンピュータプログラム２０８は別個のメモリ２０９に格納されているが、コンピュータプログラム２０８は、メモリ２１０の一部である、１つ以上のメモリユニットに格納することも可能である。概念的には、メモリ２０９とメモリ２１０とを一つの記憶手段として捉えることも可能である。
【００２７】
ルータ１０２は、また、データネットワークとの通信を可能にするネットワークインタフェイス２０６を含む。特別な実行においては、ネットワークインタフェイス２０６は、ルータ１０２が複数のポートでデータの受信、送信ができるようにするための複数のネットワークインタフェイスを有している。
【００２８】
ルータ１０２は、また、入出力装置２１２を含み、これは、例えばキーボード、マウス、ディスプレイ、ボタン、スピーカー等を含み、ルータ１０２とユーザ対話を可能にするものである。
【００２９】
基本的なコンテンツベースルータはまた他の公知要素を含み、図２はルータ１０２のハイレベル機能の説明のために使用されていることを、当業者なら気づくであろう。さらに、上述の説明では、ルータ１０２の全体の機能は、コンピュータプログラムを実行するプロセッサ２０４によって制御されるようになっているが、このような機能は、ソフトウェアやハードウェア、あるいはソフトウェアとハードウェアのいかなる組み合わせによっても制御されることは理解されるべきである。
【００３０】
図１に戻って、各コンテンツベースルータ間のリンクが論理結合で示されることで、コンテンツベースルータとリンクによって規定されるオーバーレイネットワークが表されている。これらの論理結合は必ずしも物理的結合でなくてよく、結合されているコンテンツベースルータの間に他のルータ（例えば、ＩＰルータ）や、他のノードがあってもよい。このように図１に示されるように、リンクは単に、結合された２つのコンテンツベースルータが直接あるいは何らかのネットワーク接続を使用して互いに通信可能であることを示しているのみである。また図１に示されているように、エンドユーザサブスクライバーのコンピューターは、ＳＵＢ−１  １１６、ＳＵＢ−２  １１８、ＳＵＢ−３  １２０である。これらのエンドユーザとしてのサブスクライバーは、図１に示されているコンテンツベースオーバーレイネットワークによって提供されるコンテンツベースルーティングサービスへのサブスクライバーである。このように、各サブスクライバーは興味があって、サブスクライバーのコンピュータで受信を希望するコンテンツにサブスクライブすることが可能である。
【００３１】
本発明の１実施例によると、すべてのサブスクリプションはルータＡ１０２に格納され、全てのパブリッシュされたコンテンツが処理のためにルータＡ１０２を介してルートされる。ルータＡ１０２はコンテンツがオーバーレイネットワークに入るルータであるため、ルータＡ１０２はパブリッシュされたコンテンツに対しては入口ルータと考えることができる。サブスクライバーがなんらかのコンテンツに対してサブスクライブしたい場合、これらのサブスクリプション（すなわち、サブスクライバーがサブスクライブしようとするコンテンツの定義（あるいは選択条件））がルータＡ１０２に送られ、格納される。このようなサブスクリプションはルータＡ１０２のメモリ２１０内のサブスクリプションテーブルに格納される。
【００３２】
図１は本発明の原理を示すために使用され、オーバーレイネットワークの基本的な実際の実行を示すものではない。オーバーレイネットワークの本質が与えられているが、例えば、様々なルータ間（例えばルータＡ１０２とルータＧ１１４）には付加的なネットワークの接続性があるかもしれない。さらに、様々なルータに関連したエンドユーザサブスクライバーがいるかもしれない。しかしながら、参照を簡略化するために、このような付加的な接続性及びサブスクライバーは図１には示されていない。以下の説明に使用されるリンクやサブスクライバーのみが図１に示されている。
【００３３】
図３には、具体的なサブスクリプションテーブルが示されている。図３はフィールド３０４、３０６を含むサブスクリプションテーブル３０２を示している。サブスクリプションテーブル３０２の各レコードはサブスクリプションを示し、フィールド３０４はコンテンツへのサブスクリプションの記述を含み、フィールド３０６はサブスクリプションに関するサブスクライバーを識別する。レコード３０８はサブスクライバーＳＵＢ−１のサブスクリプションを示し、サブスクライバーＳＵＢ−１は金融に関するコンテンツにサブスクライブしていて、このコンテンツはＮＹＳＥ（ニューヨーク証券取引所）におけるＡＢＣ社の株取引についてであり、株価指数が５０以上であることを意味する。これは図３において、
ＳＴＯＣＫ＝ＡＢＣ  ＣＯ．
ＥＸＣＨＡＮＧＥ＝ＮＹＳＥ
ＰＲＩＣＥ＞５０
のように記される。サブスクライバーＳＵＢ−２（レコード３１０）、ＳＵＢ−３（レコード３１２）についての同様のサブスクリプションが図３に記されている。好ましい実施例において、コンテンツルーティングはＸＭＬ処理に基づいて実行される。テーブル３０２のフィールド３０４に示されているサブスクリプションは、ＸＭＬクエリーによって記述される。上述のようにＸＭＬは公知であるが、様々なコンテンツサブスクリプションを示すＸＭＬクエリーは、すでに当業者によって開発されている。ＸＭＬ実施例は好ましいが、サブスクリプションを記述するための使用可能な技術が他にもいろいろ存在する。記述を簡略化するために、テーブル３０２に記述されているサブスクリプションは、図示されているような、より一般的な概念を使用するであろう。
【００３４】
図１において、上述のように、全てのパブリッシュされたコンテンツは、初期処理として入口ルータＡ１０２を介してルートされる。例えばＰＵＢ−１  １２２のようなパブリッシャーがあるコンテンツをパブリッシュしたい場合、コンテンツはまずルータＡ１０２に送られて、ネットワークに挿入されることになる。さらに、パブリッシャーＰＵＢ−１のコンピュータ１２２とルータＡ１０２のリンクは論理結合を示しており、必ずしも物理的結合ではない。このように、ＰＵＢ−１  １２２からパブリッシュされたコンテンツはルータＡ１０２に到着する前に付加的なネットワークノードを介してルートされることもある。
【００３５】
具体例として操作において、ＰＵＢ−１  １２２が以下のようなコンテンツをパブリッシュしたと仮定する：
ＳＴＯＣＫ＝ＡＢＣ  ＣＯ．
ＥＸＣＨＡＮＧＥ＝ＮＹＳＥ
ＰＲＩＣＥ＝２０
【００３６】
ＸＭＬ実施例においては、パブリッシュされたコンテンツが標準ＸＭＬタグ及び特性によって記述されるかもしれないが、ここでは、説明の簡易化のために、記述されているような、より一般的な概念を使用するものとする。図１及び図３において、ルータＡ１０２でコンテンツが受信されると、コンテンツは構文解析され、サブスクリプションテーブル３０２にあるサブスクリプションとマッチングされる。ＸＭＬの構文解析及びマッチング技術は公知であるが、このような処理は時間がかかり負荷も集中することになる。従来の技術では、ルータＡ１０２が構文解析してコンテンツをサブスクリプションにマッチングさせた後、ルータＡ１０２はコンテンツをオーバーレイネットワーク上の一つ以上の付加的なルータに送信し、ここで各付加的ルータは同じ構文解析とマッチングを行い、このような構文解析及びマッチングは、コンテンツが適切なサブスクライバーへ配信されるまで、各コンテンツベースルータで行われる。このような従来の処理は非常に時間を消費し、それゆえこのような従来のコンテンツベースルータは多数のサブスクライバーや顕著なトラフィック負荷に対して対応できない。本発明によれば、以下に詳細に記述されるように構文解析及びマッチングのステップは、ある特定のルータ（例えば入り口、出口ルータ）でのみ行われるので、コンテンツベースルーティングの効果がかなり改善される。
【００３７】
図１及び図３に加えて図４をも参照して、本発明の一実施例によると、ルータＡ１０２は構文解析を行って、入力されたコンテンツをサブスクリプションテーブル３０２（これは、上述のように、ルータＡ１０２のメモリ２１０（図２）に設けられる）にあるサブスクリプションとマッチングさせる。上記具体例を続けると、ルータＡ１０２において、ＰＵＢ−１  １２２から受信された上述のコンテンツは、サブスクリプションテーブル３０２のレコード３１０のサブスクリプションにのみ一致する。レコード３１０のフィールド３０６に示されているように、コンテンツはサブスクライバーＳＵＢ−２  １１８に送信されるのみでよい。ルータＡ１０２はまた、各サブスクライバーに関連したコンテンツベース出口ルータのリストをテーブル３１４（これも、ルータＡ１０２のメモリ２１０（図２）に設けられる）に格納する。コンテンツベース出口ルータは、サブスクライバーに配信される前にコンテンツが送信されるオーバーレイネットワークのラストコンテンツベースルータとも呼ばれる。サブスクライバーＳＵＢ−２  １１８に対するコンテンツベース出口ルータは、ルータＦ１１２となる。
【００３８】
ルータＡ１０２は、また、ルータＡ１０２からコンテンツベース出口ルータＥ、Ｆ、及びＧまでの予め決められた経路に関連したラベル（すなわち、ルーティングラベル）のリストをテーブル３１６（これも、ルータＡ１０２のメモリ２１０（図２）に設けられる）に格納する。上記具体例において出口ルータＦ１１２が認識されると、ルータＡ１０２は、テーブル３１６を参照して、ルータＡ１０２からルータＦ１１２までの経路に関連したラベル２を選択し、ラベル２を付加したコンテンツを含むメッセージ（図５に示す）を作る。
【００３９】
本発明はオーバーレイネットワーク内でラベルベースルーティングを使用することで、パフォーマンスを改善し、入口ルータから出口ルータまでの経路上にある各コンテンツベースルータ（中継ルータ）でのＸＭＬの構文解析及びマッチングの必要性を除去する。ラベルベースルーティングは標準ＩＰルーティング、例えばマルチプロトコルラベルスイッチング（ＭＰＬＳ）のコンテクストでも知られており、これは、非特許文献２に記述されており、参照することにより、本書に組み込まれる。ＭＰＬＳにおいて、短い固定長ラベルが生成され、ＩＰパケットヘッダの略記表示のような役割を果たす。次のルーティングの決定（ラベルスイッチルータによってなされる）はオリジナルのＩＰアドレスの代わりにＭＰＬＳラベルに基づいてなされる。ＭＰＬＳラベルであるラベル（ルーティングラベル）に関しては、中継ルータの各々において、受信ラベルのラベル値に応じて送信ラベルのラベル値を付替えるラベル付替えを行う場合を行う場合と、中継ルータの各々において、ラベル付替えを行わない場合とがある。以下の説明では、中継ルータの各々において、ラベル付替えを行わない場合を説明するが、本発明は、それに限定されず、中継ルータの各々において、ラベル付替えを行っても良いことは言うまでもない。
【００４０】
ラベルは予め規定されており、ルータ間の様々な経路を規定する。具体的なラベルと関連した経路が図６（Ａ）〜（Ｅ）に図示されている。図６（Ａ）において、ラベル１は、ルータＢ１０４とＣ１０６を介してルータＡ１０２からルータＥ１１０までの経路を規定する。図６（Ｂ）において、ラベル２はルータＢ１０４とルータＤ１０８を介してルータＡ１０２からルータＦ１１２までの経路を規定する。図６（Ｃ）において、ラベル３はルータＢ１０４とルータＤ１０８を介してルータＡ１０２からルータＧ１１４までの経路を規定する。経路に加えて、本発明の一実施例によると、ラベルはまた、マルチプルパスあるいはルーティングツリーをも規定可能である。例えば、図６（Ｄ）において、ラベル４は、ルータＢ１０４とルータＣ１０６を介して、ルータＡ１０２からルータＥ１１０までの一経路と、ルータＢ１０４とルータＤ１０８を介してルータＡ１０２からルータＦ１１２までの別の経路を有するツリーを示している。図６（Ｅ）において、ラベル５はルータＢ１０４とルータＣ１０６を介してルータＡ１０２からルータＥ１１０に至る一つの経路と、ルータＢ１０４とルータＤ１０８を介してルータＡ１０２からルータＦ１１２に至る別の経路と、ルータＢ１０４とルータＤ１０８を介してルータＡ１０２からルータＧ１１４に至るもう一つ別の経路を有するツリーを表示している。このように規定された経路とツリーに関して、例えば、ルータＡ１０２からルータＥ１１０間の直接接続も可能である。たとえ可能であったとしても、諸々の理由により、図６（Ａ）に記述されているような経路で、メッセージがルータＡ１０２からルータＥ１１０にルートされることが望ましい。理由の一つは、負荷のバランスである。もう一つの理由は（図１には記述されていないが）、経路上にメッセージを受け取るべき別のサブスクライバーがいることが考えられるためである（例えば、コンテンツベースオーバーレイネットワークに関して、ルータＣ１０６が出口ルータとして機能するサブスクライバーがいる場合が想定される）。
【００４１】
図６（Ａ）〜（Ｄ）に図示された経路は、図７（Ａ）〜（Ｃ）に図示されている各オーバーレイルータに格納されている適切なラベルベースルーティングテーブルによって実施される。図７（Ａ）はルータＢ１０４に格納されているルーティングテーブルである。図７（Ｂ）は、ルータＣ１０６に格納されているルーティングテーブルである。図７（Ｃ）はルータＤ１０８に格納されているルーティングテーブルである。これらルータＢ１０４、ルータＣ１０６、及びルータＤ１０８も、図２の入口ルータ１０２と同様の構成を有しており、この場合、各ルーティングテーブルはルータＢ１０４、ルータＣ１０６、及びルータＤ１０８の各々のメモリ（図２の２１０）に格納される。各ルーティングテーブルは、各ラベルに関する一つ以上の転送先ルータに沿ったラベルのリストを含んでいる。ラベルを含んだメッセージを受信すると、ルータはルーティングテーブル内で識別されたラベルに関する転送先ルータにメッセージを送信する。当業者にはお分かりのように、図７（Ａ）〜（Ｃ）に図示されているルーティングテーブルは、図６（Ａ）〜（Ｅ）の転送経路（ルーティングパス）及びルーティングツリーを実施する。
【００４２】
図１において、上述の説明を続けると、ＰＵＢ−１  １２２が以下のコンテンツをパブリッシュしていた。
【００４３】
ＳＴＯＣＫ＝ＡＢＣ  ＣＯ．
ＥＸＣＨＡＮＧＥ＝ＮＹＳＥ
ＰＲＩＣＥ＝２０
【００４４】
既述のように、このコンテンツはルータＦ１１２へ送信されなければならないので、これはサブスクライバーＳＵＢ−２  １１８に配信される。宛先として出口ルータＦ１１２が決定されると、入口ルータＡ１０２は図６（Ｂ）の経路を示しているラベル２を付加した、パブリッシュされたコンテンツを含んだメッセージを生成する。ルータＡ１０２はこのメッセージをルータＢ１０４に送信する。ラベル２を伴ったメッセージを受信すると、ルータＢ１０４はルーティングテーブル（図７（Ａ））のラベル２を見に行って、このメッセージがルータＤ１０８に送信されるべきものであると決定し、メッセージをルータＤ１０８に送信する。ラベル２を伴ったメッセージ２を受信すると、ルータＤ１０８はルーティングテーブル（図７（Ｃ））のラベル２を見に行って、このメッセージがルータＦ１１２に送信されるべきであると決定し、メッセージをルータＦ１１２に送信する。
【００４５】
メッセージが出口ルータＦ１１２で受信されると、ルータＦ１１２は構文解析をして、コンテンツを格納されているサブスクリプションに対してマッチングさせなければならない。出口ルータは、その出口ルータによって提供されるサブスクライバーのサブスクリプションを格納しさえすればよい。従って、図１に示されている例において、出口ルータＦ１１２は、サブスクライバーＳＵＢ−２  １１８のサブスクリプションを格納しさえすればよい。また、出口ルータＦ１１２はサブスクリプションテーブル３０２（図３）のレコード３１０に示されているサブスクリプションを格納する。メッセージを受信したら、出口ルータＦ１１２はコンテンツがサブスクライバーＳＵＢ−２の１１８サブスクリプション内容とマッチ一致していることを決定し、ルータＦ１１２はサブスクライバーＳＵＢ−２  １１８へ、ラベルを除去したコンテンツを送信する。実際は、出口ルータは多くのサブスクライバーをサポートするため、メモリ内には多数のサブスクリプション内容が格納されている。
【００４６】
図１において、もう一つの例として、ＰＵＢ−１  １２２が以下のようなコンテンツをパブリッシュすると仮定する。
【００４７】
ＳＴＯＣＫ＝ＡＢＣ  ＣＯ．
ＥＸＣＨＡＮＧＥ＝ＮＹＳＥ
ＰＲＩＣＥ＝５５
【００４８】
図３及び図４において、このコンテンツは入口ルータＡ１０２におけるサブスクリプションテーブル３０２のレコード３０８と３１０の両方のサブスクリプション内容に一致している。レコード３０８及び３１０のフィールド３０６に示されているように、このコンテンツはサブスクライバーＳＵＢ−１  １１６とＳＵＢ−２  １１８に送信されなければならない。図４のテーブル３１４に示されているように、サブスクライバーＳＵＢ−１  １１６用の出口ルータはルータＥ１１０、サブスクライバーＳＵＢ−２  １１８の出口ルータはルータＦ１１２となっている。
【００４９】
図４において、出口ルータＥ１１０とルータＦ１１２が宛先として決定されると、入口ルータＡ１０２は２つのラベルを伴った（付加された）パブリッシュされたコンテンツを含んだメッセージ（図８に示す）を生成する。そのメッセージは、図６（Ａ）に示されている出口ルータＥ１１０への経路を示すラベル１を含み、メッセージはまた、図６（Ｂ）に示される出口ルータＦ１１２への経路を示すラベル２をも含んでいる。
【００５０】
図１において、ルータＡ１０２はこのメッセージをルータＢ１０４に送信する。ラベル１及び２を付加されたメッセージを受信すると、ルータＢ１０４はルーティングテーブル（図７（Ａ））のラベルを見に行き、このメッセージがルータＣ１０６及びＤ１０８に送信されるべきであると決定し、そしてルータＣ１０６及びＤ１０８にメッセージを送信する。ラベル１及び２を伴ったメッセージを受信すると、ルータＣ１０６は、受信したラベル１に応答して、ルーティングラベル(図７(Ｂ))のラベル１を見に行って、このメッセージがルータＥ１１０に送信されるべきであると決定し、そしてルータＥ１１０にメッセージを送信する。ラベル１及び２を伴ったメッセージを受信すると、ルータＤ１０８は、受信したラベル２に応答して、ルーティングテーブル（図７（Ｃ））のラベル２を見に行って、このメッセージがルータＦ１１２に送信されるべきであると決定し、それからメッセージをルータＦ１１２に送信する。
【００５１】
出口ルータＥ１１０でメッセージを受信すると、ルータＥ１１０は、上述のように、構文解析をし、格納されているサブスクリプション内容にコンテンツをマッチングさせ、このメッセージがサブスクライバーＳＵＢ−１  １１６へ送信されるべきであると決定する。出口ルータＦ１１２でメッセージを受信すると、ルータＦ１１２は、上述のように、構文解析を行い、格納されているサブスクリプション内容とコンテンツをマッチングさせ、このメッセージをサブスクライバーＳＵＢ−２  １１８に送信するべきであると決定する。
【００５２】
上述のように、本発明を実施する際に、一つのメッセージに複数のラベルを使用するため、メッセージのコンテンツを複数の出口ルータにルーティングし、ゆえに複数サブスクライバーにルーティングすることができる。
【００５３】
ここで本発明の変形例を説明する。
【００５４】
図１において、入口ルータＡ１０２は、２つのラベル１及び２を付加されたコンテンツを含んだ図８のメッセージの代りに、図９に示すように、コンテンツを複製して、ラベル１を付加されたコンテンツを含んだ第１のメッセージと、ラベル２を付加されたコンテンツを含んだ第２のメッセージとを生成しても良い。
【００５５】
この場合、図１において、ルータＡ１０２は、第１のメッセージと第２のメッセージとをルータＢ１０４に送信する。第１及び第２のメッセージを受信すると、ルータＢ１０４はルーティングテーブル（図７（Ａ））のラベルを見に行き、第１及び第２のメッセージがルータＣ１０６及びＤ１０８に送信されるべきであると決定し、そしてルータＣ１０６及びＤ１０８に第１及び第２のメッセージを送信する。ラベル１を伴った第１のメッセージを受信すると、ルータＣ１０６は、受信したラベル１に応答して、ルーティングラベル(図７(Ｂ))のラベル１を見に行って、このメッセージがルータＥ１１０に送信されるべきであると決定し、そしてルータＥ１１０にメッセージを送信する。ラベル２を伴った第２のメッセージを受信すると、ルータＤ１０８は、受信したラベル２に応答して、ルーティングテーブル（図７（Ｃ））のラベル２を見に行って、このメッセージがルータＦ１１２に送信されるべきであると決定し、それからメッセージをルータＦ１１２に送信する。
【００５６】
次に本発明の他の変形例を説明する。
【００５７】
この変形例は、単一メッセージに関して複数のラベルを使用するのではなく、一つのラベルを使用し、単一のラベルが単一の経路ではなくルーティングツリーを規定する場合を説明する。
【００５８】
図１において、例えば、ＰＵＢ−１  １２２が以下のコンテンツをパブリッシュする例に戻ってみる。
【００５９】
ＳＴＯＣＫ＝ＡＢＣ  ＣＯ．
ＥＸＣＨＡＮＧＥ＝ＮＹＳＥ
ＰＲＩＣＥ＝５５
【００６０】
図３及び図４において、上述のように、このコンテンツは、入口ルータＡ１０２におけるサブスクリプションテーブル３０２のレコード３０８及び３１０の両方のサブスクリプション内容に一致し、出口ルータＥ１１０及びＦ１１２をそれぞれ介してサブスクライバーＳＵＢ−１  １１６及びＳＵＢ−２  １１８に送信されなければならない。
【００６１】
２つのラベル１及び２を伴ったパブリッシュされたコンテンツを含むメッセージ（図８）を生成する代わりに、入口ルータＡ１０２は、図４のテーブル３１６を参照して、出口ルータＥ及びＦの両方を表すラベル４を付加したコンテンツを含むメッセージ（図１０に示す）を生成する。すなわち、入口ルータＡ１０２は、図６（Ｄ）に図示されているルーティングツリーを規定する単一のラベル（ラベル４）を伴ったパブリッシュされたコンテンツを生成する。
【００６２】
図１において、ルータＡ１０２は、この図１０のメッセージをルータＢ１０４に送信する。ラベル４を伴ったメッセージを受信すると、ルータＢ１０４は、ルーティングテーブル（図７（Ａ））のラベルを見に行き、このメッセージがルータＣ１０６及びルータＤ１０８に送信されるべきであると決定し、その後このメッセージをルータＣ１０６とルータＤ１０８に送信する。ラベル４を伴ったメッセージを受信すると、ルータＣ１０６は、ルーティングテーブル（図７（Ｂ））のラベル４を見に行き、このメッセージがルータＥ１１０に送信されるべきであると決定し、その後メッセージをルータＥ１１０に送信する。ラベル４を伴ったメッセージを受信すると、ルータＤ１０８は、ルーティングテーブル（図７（Ｃ））のラベル４を見に行き、このメッセージがルータＦ１１２に送信されるべきであると決定し、その後メッセージをルータＦ１１２に送信する。出口ルータＥ１１０及びＦ１１２における処理はこのように進められる。
【００６３】
図１において、更にもう一つの例として、ＰＵＢ−１  １１２２が以下のような記述を有するコンテンツをパブリッシュした場合について説明する。
【００６４】
ＳＴＯＣＫ＝ＡＢＣ  ＣＯ．
ＥＸＣＨＡＮＧＥ＝ＮＹＳＥ
ＰＲＩＣＥ＝６５
【００６５】
図３及び図４において、このコンテンツは、入口ルータＡ１０２におけるサブスクリプションテーブル３０２の全てのレコード３０８、３１０、３１２にあるサブスクリプションとマッチングする。レコード３０８、３１０、及び３１２のフィールド３０６に示されているように、このコンテンツはサブスクライバーＳＵＢ−１  １１６、ＳＵＢ−２  １１８、ＳＵＢ−３  １２０  に送信されなければならない。図４のテーブル３１４に示されているように、サブスクライバーＳＵＢ−１  １１６の出口ルータはルータＥ１１０であり、サブスクライバーＳＵＢ−２  １１８の出口ルータはルータＦ１１２であり、サブスクライバーＳＵＢ−３  １２０の出口ルータはルータＧ１１４である。
【００６６】
図４において、宛先として出口ルータＥ１１０、Ｆ１１２、及びＧ１１４が決定された場合に、入口ルータＡ１０２が図４のテーブル３１６を参照して、メッセージを送信するための技術が２つある。そのうちの１つの技術では、入口ルータＡ１０２が、ラベル１、ラベル２、ラベル３という３つのラベルを伴ったパブリッシュされたコンテンツを含むメッセージを生成する。ラベル１は、図６（Ａ）に示されるような出口ルータＥ１１０への経路を示し、ラベル２は、図６（Ｂ）に示されるような出口ルータＦ１１２への経路を示し、ラベル３は、図６（Ｃ）に示されるような出口ルータ１１４への経路を示している。もう一つの技術では、入口ルータＡ１０２は、ラベル５という単一ラベルを伴ったパブリッシュされたコンテンツを含んだメッセージを生成する。ラベル５は、図６（Ｅ）に示されるようなルーティングツリーを規定し、ラベル５が付加したメッセージは出口ルータＥ１１０、Ｆ１１２、Ｇ１２０へと経路付けされる。出口ルータでの処理は上述したとおりに進められる。
【００６７】
図１及び図４に加えて図１１を参照して、本発明の別の実施例によるオーバーレイネットワークについて説明する。
【００６８】
まず構成について説明する。図１において、入口ルータＡ１０２は、図４における、テーブル３０２と、各出口ルータが収容するサブスクライバーのリストを有するテーブル３１４とに代えて、図１１に示すような、各出口ルータをサブスクライバーと見立てたサブスクリプションをレコード６０８、６１０、６１２として格納するテーブル６０２を保持する。すなわち、入口ルータＡ１０２は、図１１のテーブル６０２と、図４のテーブル３１６とを、ルータＡ１０２のメモリ２１０（図２）に有する。
【００６９】
次に動作について説明する。例えば、出口ルータＥ１１０は、あるユーザからサブスクリプションのメッセージを受信するごとに、出口ルータＥ１１０が保持するサブスクリプションの内容を参照して、上記メッセージに対応する登録内容があるかどうか調べる。そして、上記メッセージに対応する登録内容がない場合に限り、出口ルータＥ１１０は、出口ルータＥ１１０に上記メッセージを新たなメッセージとして登録すると共に、出口ルータＥ自身をサブスクライバーとしたサブスクリプションメッセージを入口ルータＡ１０２に送る。出口ルータＥ自身をサブスクライバーとしたメッセージを受信した入口ルータＡ１０２は、出口ルータＥ自身をサブスクライバーとしたメッセージを有するレコード６１４をテーブル６０２に加える。
【００７０】
以上により、入口ルータＡ１０２は各ユーザのサブスクリプションメッセージ毎にレコードを持つ必要がなくなる。また入口ルータＡ１０２はデータパケットを転送するための出口ルータを６０２の表から直接決定することができる。
【００７１】
本発明は、従来のコンテンツベースルーティングスキーム以上の利点を提供するものである。コンテンツベースルーティングを組み合わせてラベルベースルーティングを使用することにより、本発明は、改良されたコンテンツベースルーティングシステムを提供する。本発明の利点によれば、コンテンツの構文解析及び、コンテンツとサブスクリプションのマッチングのみが入り口及び出口ルータにおいて実行される。中継ルータは割り当てられたラベルに基づいて、ルーティグによって時間を節約する。
【００７２】
本発明の原理に従って実現されたシステムはまた、さらなる利点を可能にする。例えば、中継ルータはコンテンツではなくラベルに基づいて経路を決定するので、コンテンツは入口ルータで、割り当てられるラベルを決めてから、圧縮され、その圧縮フォームに、決められたラベルが付加された状態で、送信され、出口ルータで圧縮フォームを解凍することが可能となり、メッセージの経路決定に必要となる処理能力を削減することができる。メッセージコンテンツを解析し、中継コンテンツベースルータでサブスクリプションマッチングを行うような従来の技術で圧縮を行うことは、非常に非効率的である。従来の技術で圧縮を行うために、経路上にある各ルータはメッセージを解凍し、解析し、格納されているサブスクリプションとメッセージのコンテンツをマッチングさせ、興味のある宛先を識別するためにルーティングテーブルを見に行き、そして識別された宛先へ送信するまえにメッセージを圧縮しなければならない。
【００７３】
当業者であれば理解可能であろうが、ここに記載されている本発明の実施例には様々な変更が可能である。例えば、単一のメッセージに割り当てられた複数のラベルを、それぞれ単一の経路、ツリー、あるいば経路とツリーの組み合わせに関連付けることが可能である。
【００７４】
上述の説明は全ての具体例や図示によって表されているが、これに限定されるものではなく、また、ここに開示されている本発明の範囲は上述の説明によって決められるものではなく、むしろ許可される特許請求の範囲において解釈される請求項によって決定されるものである。ここに図示され、記載されている実施例は本発明の原理を単に図示しているのみであり、当業者は、本発明の範囲と精神を逸脱することなく様々な変形を実行することが可能である。また、当業者は、本発明の範囲及び精神を逸脱することなく、他の特徴との組み合わせを実行することが可能である。例えば、上記の実施例がオーバーレイネットワークに関するものであったとしても、本発明の原理は他のタイプのネットワークにおいても実施可能であるということである。また、例えば、本発明の原理は、オーバーレイネットワークのような設計ではなく、コンテンツベースルータ同士が直接通信を行うような従来のネットワークにおいても実施が可能である。
【図面の簡単な説明】
【００７５】
【図１】本発明のコンテンツベースルーティングの原理が実行されるオーバーレイネットワークを示すブロック図である。
【図２】本発明によるコンテンツベースルータ（入口ルータ）を示すブロック図である。
【図３】本発明によるコンテンツベースルータ（入口ルータ）で用いるサブスクリプションテーブルを説明するための図である。
【図４】本発明によるコンテンツベースルータ（入口ルータ）で用いる３つのテーブルを説明するための図である。
【図５】本発明によるコンテンツベースルータ（入口ルータ）で生成したラベル２を付加したコンテンツを含むメッセージを示す図である。
【図６】（Ａ）〜（Ｅ）は本発明の動作を説明するための転送経路（ルーティングパス）及びルーティングツリーを示す図である。
【図７】（Ａ）〜（Ｃ）は本発明によるコンテンツベースルータ（中継ルータ）Ｂ、Ｃ、Ｄで用いるルーティングテーブルを示す図である。
【図８】本発明によるコンテンツベースルータ（入口ルータ）で生成したラベル１及び２を付加したコンテンツを含むメッセージを示す図である。
【図９】本発明によるコンテンツベースルータ（入口ルータ）で生成したラベル１を付加したコンテンツを含むメッセージと、ラベル２を付加したコンテンツを含むメッセージとを示す図である。
【図１０】本発明によるコンテンツベースルータ（入口ルータ）で生成した、複数の出口ルータを表すラベル４を付加したコンテンツを含むメッセージを示す図である。
【図１１】本発明の別の実施例によるオーバーレイネットワークにおけるテンツベースルータ（入口ルータ）で用いられる別のテーブルを説明するための図である。
【符号の説明】
【００７６】
１０２    コンテンツベースルータ（入口ルータＡ）
１０４    コンテンツベースルータ（中継ルータＢ）
１０６    コンテンツベースルータ（中継ルータＣ）
１０８    コンテンツベースルータ（中継ルータＤ）
１１０    コンテンツベースルータ（出口ルータＥ）
１１２    コンテンツベースルータ（出口ルータＦ）
１１４    コンテンツベースルータ（出口ルータＧ）
１１６    サブスクライバーのコンピュータ（ＳＵＢ−１）
１１８    サブスクライバーのコンピュータ（ＳＵＢ−２）
１２０    サブスクライバーのコンピュータ（ＳＵＢ−３）
１２２    パブリッシャー（ＰＵＢ−１）
２０４    プロセッサ
２０６    ネットワークインタフェイス
２０８    コンピュータプログラム
２０９    メモリ
２１０    メモリ
２１２    入出力装置
３０２    スブスクリプションテーブル
３１４    テーブル
３１６    テーブル
【図１】
2006203904.tif 000003
【図２】
2006203904.tif 000004
【図３】
2006203904.tif 000005
【図４】
2006203904.tif 000006
【図５】
2006203904.tif 000007
【図６】
2006203904.tif 000008
【図７】
2006203904.tif 000009
【図８】
2006203904.tif 000010
【図９】
2006203904.tif 000011
【図１０】
2006203904.tif 000012
【図１１】
2006203904.tif 000013