(57)【特許請求の範囲】
【請求項１】
ネットワークノードによりネットワークにおいてコンテンツ要求を経路指定する方法であって、
ネットワークノードにおいて、コンテンツアイテムを要求する要求メッセージを受信するステップ（８２０）であって、要求メッセージがコンテンツアイテムのポインタを含む、受信するステップと、
ネットワークノードがポインタに関連付けられているかどうかを判定するステップ（８３０）と、
ネットワークノードがポインタに関連付けられている場合は、
ポインタに関連付けられたラベルを決定し（１０６０）、
ラベルを含む変更されたメッセージを生成するように要求メッセージを変更し（１０７０）、
変更されたメッセージを少なくとも１つの他のネットワークノードに送信する（１０８０）ステップと
を含み、
ラベルは、コンテンツアイテムのポインタと、コンテンツアイテムに関連するネットワークノードに関係付けられたプレフィックスとに基づいて生成される、方法。
【請求項２】
ネットワークノードがポインタに関連付けられているかどうかを判定するステップ（８３０）が、
ネットワークノードに関連付けられたプレフィックスを決定するステップと、
プレフィックスがポインタの少なくとも一部分と一致するかどうかを判定するステップと
を含む、請求項１に記載の方法。
【請求項３】
ネットワークノードがポインタに関連付けられているかどうかを判定するステップ（８３０）が、プレフィックスがネットワーク内においてポインタに対する最長の一致するプレフィックスであるかどうかを判定するステップをさらに含む、請求項２に記載の方法。
【請求項４】
ポインタが要求メッセージのアドレスフィールドに含まれ、ラベルが変更されたメッセージのアドレスフィールドに含まれる、請求項１から３のいずれか一項に記載の方法。
【請求項５】
要求メッセージおよび変更されたメッセージの少なくとも１つがネットワーク層パケットである、請求項１から４のいずれか一項に記載の方法。
【請求項６】
変更されたメッセージを少なくとも１つの他のネットワークノードに送信するステップ（１０８０）が、変更されたメッセージを異なるプレフィックスに関連付けられた異なるノードに向けて送信するステップを含み、異なるプレフィックスがラベルの少なくとも一部分と一致する、請求項１から５のいずれか一項に記載の方法。
【請求項７】
ポインタが複数のラベルに関連付けられ、
ポインタに関連付けられたラベルを決定するステップ（１０６０）が、複数のラベルからラベルを選択するステップを含む、
請求項１から６のいずれか一項に記載の方法。
【請求項８】
ネットワークノードにおいて発行メッセージを受信するステップ（８２０）であって、発行メッセージがポインタおよびラベルを含む、受信するステップと、
発行メッセージからポインタおよびラベルを抽出するステップ（１０３０）と、
ポインタおよびラベルを一緒にメモリに保持するステップ（１０４０）と
をさらに含み、
ポインタに関連付けられたラベルを決定するステップ（１０６０）が、ポインタおよびラベルをメモリから読み出すステップを含む、
請求項１から７のいずれか一項に記載の方法。
【請求項９】
ポインタがコンテンツアイテムに対する名前のハッシュである、請求項１から８のいずれか一項に記載の方法。
【請求項１０】
ネットワーク内でコンテンツ要求を経路指定するための解決システムであって、
ルーティング情報を記憶するためのルーティングテーブル（５３０）と、
複数の相関関係レコードを記憶するための相関関係記憶装置（７４０）であって、各相関関係レコードがポインタおよび少なくとも１つのラベルを識別する、相関関係記憶装置と、
コンテンツアイテムを要求する要求メッセージを受信する（８２０）ための受信器インターフェース（５１０）であって、要求メッセージがコンテンツアイテムの要求されたポインタを含む、受信器インターフェースと、
メッセージを送信するための送信器インターフェース（５７０）と、
検索メッセージ変更部（７５０）であって、
要求されたポインタを識別する相関関係レコードの位置を特定し（１０６０）、
相関関係レコードによって識別された少なくとも１つのラベルの選択されたラベルを選択し（１０６０）、
選択されたラベルを含む変更されたメッセージを生成するように要求メッセージを変更する（１０７０）
ための、検索メッセージ変更部と、
メッセージルータ（５６０）であって、
ルーティング情報および変更されたメッセージに基づいてネットワークノードを決定し、
変更されたメッセージを送信器インターフェースを通じてネットワークノードに転送する（１０８０）ための、メッセージルータと
を備え、
ラベルは、コンテンツアイテムのポインタと、コンテンツアイテムに関連するネットワークノードに関係付けられたプレフィックスとに基づいて生成される、解決システム。
【請求項１１】
解決システムに関連付けられたプレフィックスを決定し、
プレフィックスが要求されたポインタの少なくとも一部分と一致するかどうかを判定する
ように構成された、メッセージインタープリタ（５２０）をさらに備える、請求項１０に記載の解決システム。
【請求項１２】
要求されたポインタが要求メッセージのアドレスフィールドに含まれ、ラベルが変更されたメッセージのアドレスフィールドに含まれる、請求項１０または１１に記載の解決システム。
【請求項１３】
変更されたメッセージをネットワークノードに転送するステップ（１０８０）において、メッセージルータ（５６０）が変更されたメッセージを異なるプレフィックスに関連付けられた異なるノードに向けて送信するように構成され、異なるプレフィックスが選択されたラベルの少なくとも一部分と一致する、請求項１０から１２のいずれか一項に記載の解決システム。
【請求項１４】
受信器インターフェース（５１０）が発行メッセージを受信する（８２０）ようにさらになされ、発行メッセージがポインタおよびラベルを含み、
解決システムが、
発行メッセージからポインタおよびラベルを抽出（１０３０）し、
ポインタおよびラベルを一緒に相関関係記憶装置に記憶（１０４０）する
ように構成された解決モジュール（５５０）をさらに備える、請求項１０から１３のいずれか一項に記載の解決システム。
【請求項１５】
要求されたポインタがコンテンツアイテムに対する名前のハッシュである、請求項１０から１４のいずれか一項に記載の解決システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書において開示される様々な例示的実施形態は、一般にネットワークルーティングに関する。
【背景技術】
【０００２】
インターネットはその創造以来、一般のコンピュータ対コンピュータの通信を可能にするシステムから、無数のサービスおよびコンテンツを世界中のユーザに提供するための機能へと徐々に拡大してきている。この進化の一部として、サポートサービスおよびコンテンツ中心の用途を向上するために高度なインフラストラクチャが追加された。
【０００３】
今日ではドメインネームシステム（ＤＮＳ）は、要求されたコンテンツの場所を決定するためのディレクトリサービスとして働く。様々なホストがＤＮＳによって別名として「ドメイン名」を確立する。次いでユーザは様々なＤＮＳサーバにコンタクトし、要求されたコンテンツが記憶されサービスされる、ドメイン名によって識別される、ホストのアドレスを取り出す。その後にユーザは、コンテンツを取り込むまたは消費するために、取り出されたアドレスを通じてホストにコンタクトする。
【発明の概要】
【課題を解決するための手段】
【０００４】
様々な例示的実施形態はコンピュータによってネットワーク内のコンテンツを要求するための命令で符号化された機械可読記憶媒体に関し、機械可読記憶媒体は以下の１つまたは複数を含む：要求するコンテンツアイテムを決定するための命令、コンテンツアイテムに関連付けられたポインタを決定するための命令、ポインタを含む要求メッセージを生成するための命令、要求メッセージを少なくとも１つのネットワークノードに送信するための命令、および少なくとも１つのネットワークノードからコンテンツアイテムを受信するための命令。
【０００５】
コンテンツアイテムに関連付けられたポインタを決定するための命令が、コンテンツアイテムに基づいてポインタを生成するための命令を含む、様々な代替実施形態が述べられる。コンテンツアイテムに基づいてポインタを生成するための命令が、コンテンツアイテムに基づいてハッシュ値を生成するための命令を含む、様々な代替実施形態が述べられる。コンテンツアイテムに基づいてハッシュ値を生成するための命令が、コンテンツアイテムの名前に基づいてハッシュ値を生成するための命令を含む、様々な代替実施形態が述べられる。ポインタを含む要求メッセージを生成するための命令が、宛先アドレスとしてメッセージにポインタを挿入するための命令を含む、様々な代替実施形態が述べられる。
【０００６】
様々な例示的実施形態は、コンピュータによってネットワーク内のコンテンツを発行するための命令で符号化された機械可読記憶媒体に関し、機械可読記憶媒体は以下の１つまたは複数を含む：発行するコンテンツアイテムを決定するための命令、コンテンツアイテムに基づいてポインタを生成するための命令、ポインタを含む発行メッセージを生成するための命令、および発行メッセージを少なくとも１つのネットワークノードに送信するための命令。
【０００７】
様々な代替実施形態はさらに以下の１つまたは複数を含む：少なくとも１つのネットワークノードから要求メッセージを受信するための命令であって、要求メッセージがポインタを含み、要求元装置を示す、受信するための命令、ポインタがコンテンツアイテムに関連付けられていることを判定するための命令、およびコンテンツアイテムを要求元装置に送信するための命令。
【０００８】
ポインタが要求メッセージのアドレスフィールドに含まれる、様々な代替実施形態が述べられる。コンテンツアイテムに基づいてポインタを生成するための命令が、コンテンツアイテムに基づいてハッシュ値を生成するための命令を含む、様々な代替実施形態が述べられる。コンテンツアイテムに基づいてハッシュ値を生成するための命令が、コンテンツアイテムの名前に基づいてハッシュ値を生成するための命令を含む、様々な代替実施形態が述べられる。
【０００９】
様々な例示的実施形態は、ネットワークノードによりネットワークにおいてコンテンツ要求を経路指定する方法に関し、方法は以下の１つまたは複数を含む：ネットワークノードにおいて要求メッセージを受信するステップであって、要求メッセージがポインタを含む、受信するステップ、ネットワークノードがポインタに関連付けられているかどうかを判定するステップ、およびネットワークノードがポインタに関連付けられている場合は、ポインタに関連付けられたラベルを決定し、ポインタを含む変更されたメッセージを生成するように要求メッセージを変更し、変更されたメッセージを少なくとも１つの他のネットワークノードに送信するステップ。
【００１０】
様々な例示的実施形態は、ネットワーク内でコンテンツ要求を経路指定するための解決システムに関し、解決システムは以下の１つまたは複数を含む：ルーティング情報を記憶するためのルーティングテーブルと、複数の相関関係レコードを記憶するための相関関係記憶装置であって、各相関関係レコードがポインタおよび少なくとも１つのラベルを識別する、相関関係記憶装置と、要求メッセージを受信するための受信器インターフェースであって、要求メッセージが要求されたポインタを含む、受信器インターフェースと、メッセージを送信するための送信器インターフェースと、検索メッセージ変更部であって、要求されたポインタを識別する相関関係レコードの位置を特定し、相関関係レコードによって識別された少なくとも１つのラベルの選択されたラベルを選択し、選択されたラベルを含む変更されたメッセージを生成するように要求メッセージを変更するための、検索メッセージ変更部と、メッセージルータであって、ルーティング情報および変更されたメッセージに基づいてネットワークノードを決定し、変更されたメッセージを送信器インターフェースを通じてネットワークノードに転送するための、メッセージルータ。
【００１１】
様々な例示的実施形態は、ネットワークノードによりネットワークにおいてコンテンツ要求を経路指定するための命令で符号化された機械可読記憶媒体に関し、機械可読記憶媒体は以下の１つまたは複数を含む：ネットワークノードにおいて要求メッセージを受信するための命令であって、要求メッセージがポインタを含む、受信するための命令、ネットワークノードがポインタに関連付けられているかどうかを判定するための命令、およびネットワークノードがポインタに関連付けられている場合は、ポインタに関連付けられたラベルを決定し、ラベルを含む変更されたメッセージを生成するように要求メッセージを変更し、変更されたメッセージを少なくとも１つの他のネットワークノードに送信するための命令。
【００１２】
ネットワークノードがポインタに関連付けられているかどうかを判定するステップが以下の１つまたは複数を含む、様々な代替実施形態が述べられる：ネットワークノードに関連付けられたプレフィックスを決定するステップ、およびプレフィックスがポインタの少なくとも一部分と一致するかどうかを判定するステップ。ネットワークノードがポインタに関連付けられているかどうかを判定するステップが、プレフィックスがネットワーク内においてポインタに対する最長の一致するプレフィックスであるかどうかを判定するステップをさらに含む、様々な代替実施形態が述べられる。ポインタが要求メッセージのアドレスフィールドに含まれ、ラベルが変更されたメッセージのアドレスフィールドに含まれる、様々な代替実施形態が述べられる。要求メッセージおよび変更されたメッセージの少なくとも１つがネットワーク層パケットである、様々な代替実施形態が述べられる。変更されたメッセージを少なくとも１つの他のネットワークノードに送信するステップが、変更されたメッセージを異なるプレフィックスに関連付けられた異なるノードに向けて送信するステップを含み、異なるプレフィックスがラベルの少なくとも一部分と一致する、様々な代替実施形態が述べられる。ポインタが複数のラベルに関連付けられ、ポインタに関連付けられラベルを決定するステップが、複数のラベルからラベルを選択するステップを含む、様々な代替実施形態が述べられる。ポインタがコンテンツアイテムに対する名前のハッシュである、様々な代替実施形態が述べられる。
【００１３】
様々な代替実施形態は以下の１つまたは複数を含む：ネットワークノードにおいて発行メッセージを受信するステップであって、発行メッセージがポインタおよびラベルを含む、受信するステップと、発行メッセージからポインタおよびラベルを抽出するステップと、ポインタおよびラベルを一緒にメモリに保持するステップ。ここで、ポインタに関連付けられたラベルを決定するステップはメモリからポインタおよびラベルを読み出すステップを含む。
【００１４】
様々な例示的実施形態は、ネットワークノードによりネットワークにおいてコンテンツを発行する方法に関し、方法は以下の１つまたは複数を含む：ネットワークノードにおいて発行メッセージを受信するステップであって、発行メッセージがポインタを含む、受信するステップと、ポインタに関連付けられるようにラベルを生成するステップと、変更されたメッセージを生成するように発行メッセージを変更するステップであって、変更されたメッセージがラベルを含む、変更するステップと、変更されたメッセージを少なくとも１つの他のネットワークノードに送信するステップ。
【００１５】
様々な例示的実施形態は、ネットワーク内でコンテンツを発行するための発行システムに関し、発行システムは以下の１つまたは複数を含む：ルーティング情報を記憶するためのルーティングテーブルと、発行メッセージを受信するための受信器インターフェースであって、発行メッセージがポインタを含む、受信器インターフェースと、メッセージを送信するための送信器インターフェースと、ポインタに関連付けるためのラベルを生成するためのラベル計算器と、変更されたメッセージを生成するように発行メッセージを変更するための発行メッセージ変更部であって、変更されたメッセージがラベルを含む、発行メッセージ変更部と、メッセージルータであって、ルーティング情報および変更されたメッセージに基づいてネットワークノードを決定し、変更されたメッセージを送信器インターフェースを通じてネットワークノードに転送するための、メッセージルータ。
【００１６】
様々な例示的実施形態は、ネットワークノードによりネットワークにおいてコンテンツを発行するための命令で符号化された機械可読記憶媒体に関し、機械可読記憶媒体は以下の１つまたは複数を含む：ネットワークノードにおいて発行メッセージを受信するための命令であって、発行メッセージがポインタを含む、受信するための命令、ポインタに関連付けられるラベルを生成するための命令、変更されたメッセージを生成するように発行メッセージを変更するための命令であって、変更されたメッセージがラベルを含む、変更するための命令、および変更されたメッセージを少なくとも１つの他のネットワークノードに送信するための命令。
【００１７】
ポインタに関連付けられるべきラベルを生成するステップが以下の１つまたは複数を含む様々な代替実施形態が述べられる：ネットワークノードに関連付けられたプレフィックスを決定するステップ、およびラベル内にポインタの少なくとも一部分およびプレフィックスの少なくとも一部分を含めるステップ。ポインタが発行メッセージおよび変更されたメッセージの少なくとも１つのアドレスフィールドに含まれる、様々な代替実施形態が述べられる。変更されたメッセージを少なくとも１つの他のネットワークノードに送信するステップが、ポインタに基づいて少なくとも１つの他のネットワークノードを選択するステップを含む、様々な代替実施形態が述べられる。ポインタに基づいて少なくとも１つの他のネットワークノードを選択するステップが、以下の１つまたは複数を含む様々な代替実施形態が述べられる：少なくとも１つの他のノードに関連付けられたプレフィックスを決定するステップ、およびプレフィックスがポインタの少なくとも一部分と一致することを判定するステップ。ポインタがコンテンツアイテムに対する名前のハッシュである、様々な代替実施形態が述べられる。発行メッセージおよび変更されたメッセージの少なくとも１つがネットワーク層パケットである、様々な代替実施形態が述べられる。
【００１８】
様々な例示的実施形態をより良く理解するために添付の図面を参照する。
【図面の簡単な説明】
【００１９】
【図１】コンテンツを分配するための例示のネットワークを示す図である。
【図２】コンテンツを発行するための例示のメッセージ交換を示す図である。
【図３】コンテンツを要求するための例示のメッセージ交換を示す図である。
【図４】コンテンツを届けるための例示のメッセージ交換を示す図である。
【図５】コンテンツ経路指定されたメッセージを処理するための例示のネットワークノードを示す図である。
【図６】発行メッセージを処理し送信するための例示のシステムを示す図である。
【図７】受信した発行メッセージを処理し、検索メッセージを解決するための例示のシステムを示す図である。
【図８】コンテンツ経路指定されたメッセージを処理するための例示の方法を示す図である。
【図９】発行メッセージを処理し送信するための例示の方法を示す図である。
【図１０】受信した発行メッセージを処理し、検索メッセージを解決するための例示の方法を示す図である。
【発明を実施するための形態】
【００２０】
ドメインネームシステム（ＤＮＳ）サーバの使用は、データのレプリケーションおよび移動を不便にし、コンテンツが異なるホストにおいてアクセスされる場合は、ユーザに異なるドメイン名を通信しなければならず、またはＤＮＳレコードは代わりに新しいホストを指し示すように更新されなければならない。ＤＮＳパラダイムにおいては様々な他の制限が本質的にある。
【００２１】
一方、コンテンツを中心とするネットワーク（ＣＣＮ）は、ＤＮＳパラダイムにおける多くの問題を解決する。ＣＣＮパラダイムの下ではコンテンツは、その名前に基づいてネットワークから要求することができる。しかしＣＣＮは、実用的な応用を可能にするには対処しなければならないいくつかの問題を呈する。例えばＣＣＮパラダイムはしばしばスケーラビリティが乏しいことによる影響を受ける。したがって、コンテンツが存在するホストによってではなく、その名前または他の規定する特性によってコンテンツを要求できる、スケーラブルなシステムの必要性がある。
【００２２】
次に図面を参照すると、同様な番号は同様な構成要素またはステップを指し、様々な例示的実施形態の広範な態様が開示される。
【００２３】
図１は、コンテンツを分配するための例示のネットワーク１００を示す。例えばネットワーク１００は、インターネットなどのコンピュータのパケット交換型ネットワークとすることができる。したがってネットワーク１００は、ＩＳＰ  Ａ１１０、ＩＳＰ  Ｂ１２０、およびＩＳＰ  Ｃなどの複数のインターネットサービスプロバイダ（ＩＳＰ）を含むことができる。ネットワーク１００はまた、サーバ１４０などのいくつかのコンテンツサーバ、およびシステム１５０などのエンドユーザシステムを含むことができる。
【００２４】
ＩＳＰ１１０、１２０、１３０は、ネットワーク１００内でメッセージを経路指定するための１つまたは複数の装置を含むことができる。さらにＩＳＰ１１０、１２０、１３０は直接に、または１つまたは複数の中間ノードを通して、互いに通信することができる。ネットワーク１００の構成は簡略化された例であり、ネットワーク１００は数多くの他のＩＳＰ（図示せず）を含み得ることが明らかであろう。さらに示される接続は例示であり、他のトポロジーが可能である。例えばＩＳＰ  Ａ１１０およびＩＳＰ  Ｂ１２０は、ＩＳＰ  Ｃ１３０を通じてのみ通信してもよい。
【００２５】
ＩＳＰ１１０、１２０、１３０内の１つまたは複数の装置は、記憶装置１３５などの１つまたは複数の記憶装置へのアクセスを有することができる。記憶装置１３５は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置、および／または同様な記憶媒体などの、機械可読記憶媒体を含むことができる。記憶装置１３５の動作については、図２−４に関連して以下でさらに詳しく述べる。
【００２６】
サーバ１４０は、コンテンツに対する要求を受信し、その後に要求されたコンテンツを要求元装置に転送するように構成された装置とすることができる。したがってサーバ１４０は、パーソナルコンピュータ、ラップトップ、タブレット、サーバ、ブレード、携帯電話、および／またはネットワークを通してコンテンツを供給できる他の装置とすることができる。
【００２７】
サーバ１４０は、記憶装置１４５を含むかあるいはそれへのアクセスを有することができる。記憶装置１４５は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置、および／または同様な記憶媒体などの、機械可読記憶媒体を含むことができる。記憶装置１４５は、コンテンツアイテム１４７などの１つまたは複数のコンテンツアイテムを記憶することができる。コンテンツアイテム１４７は、例えばテキストファイル、ｈｔｍｌファイル、音声ファイル、動画ファイルなどの任意のデータとすることができる。
【００２８】
装置１５０は、ネットワーク１００に対してコンテンツアイテムを要求し受信するように構成された装置とすることができる。したがって装置１５０は、パーソナルコンピュータ、ラップトップ、タブレット、サーバ、ブレード、携帯電話、および／またはネットワークを通してコンテンツを消費し得る任意の他の装置とすることができる。
【００２９】
各ＩＳＰは１つまたは複数のアドレスプレフィックスに関連付けることができ、各プレフィックスはＩＳＰにアタッチされた１つまたは複数の装置のデバイスアドレスの一部分を表す。例えばＩＳＰ  Ａ１１０はアドレスプレフィックス０ｘ６８ｘｘに関連付けられる。したがってＩＳＰ  Ａにアタッチされた１つまたは複数の装置は、０ｘ６８で始まるアドレスをもつことができる。例としてサーバ１４０のアドレスは０ｘ６８７ｃであり、アドレス０ｘ６８７ｃはプレフィックス０ｘ６８ｘｘをもつ。同様に装置１５０はアドレス０ｘ１０８８を有し、これは装置１５０がアタッチされたＩＳＰ  Ｂ１２０の０ｘ１０ｘｘというプレフィックスと一致する。さらにＩＳＰ  Ｃ１３０は、ＩＳＰ  Ｃ１３０に関連付けられた、０ｘ２０ｘｘというプレフィックスと一致する１つまたは複数の装置に接続することができる。
【００３０】
加入者ネットワーク１００の構成要素について述べたので、次に図２−４を参照してネットワーク１００の動作について述べる。
【００３１】
図２は、コンテンツを発行するための例示のメッセージ交換２００を示す。サーバ１４０は、コンテンツアイテム１４７を発行すべきであることを決定することによって開始する。例えばユーザは、コンテンツアイテム１４７がネットワーク１００を通して利用可能にされるべきであることを示すことができる。次いでサーバは、コンテンツアイテム１４７に対する「ポインタ」の計算に進むことができる。本明細書で用いられるポインタという用語は、コンテンツアイテムの場所に基づかない、コンテンツアイテムに対する永続的な識別子を指す。様々な実施形態ではサーバ１４０は、コンテンツアイテム１４５の名前または他の特性に対してハッシュ機能を行ってポインタを生成することができる。例えばサーバは、ＳＨＡ−１アルゴリズムを用いて、コンテンツアイテム１４７の名前「ＸＹＺ」を処理してハッシュ値「０ｘ２０７７」を生成することができる。
【００３２】
サーバ１４０は、「発行メッセージ」を構築することによって先に進むことができる。本明細書で用いられる発行メッセージとは、識別されたコンテンツアイテムを発行したいとの要望を示す、他の装置に送信するための任意のメッセージとすることができる。様々な実施形態によれば発行メッセージは、パケットを発行メッセージとして識別するヘッダを含む、ネットワーク層（または「レイヤ３」）パケットとして実現することができる。サーバ１４０は、ポインタ「０ｘ２０７７」を含む発行メッセージ２１０を構築することができる。様々な実施形態ではポインタは、パケットヘッダの宛先アドレスフィールドおよび／または専用ポインタフィールド内に含めることができる。サーバ１４０は、発行メッセージ２１０が構築された後に、さらなる処理のために発行メッセージ２１０をＩＳＰ  Ａ１１０に転送することができる。
【００３３】
ＩＳＰ  Ａ１１０（またはその中の装置）は、発行メッセージ２１０を受信した後に、データを発行する要求として発行メッセージ２１０を識別することができる。次いでＩＳＰ  Ａ１１０はデータに対する「ラベル」を計算する。本明細書で用いられるラベルという用語は、コンテンツアイテムに対する場所に依存する識別子を指す。様々な実施形態ではＩＳＰ  Ａ１１０は、コンテンツアイテムのポインタ、およびＩＳＰ１１０のアドレスプレフィックスに基づいてラベルを生成することができる。例えばＩＳＰ  Ａ１１０は、単にポインタ内のいくつかの上位ビットをそれ自体のプレフィックスで置き換えることができる。それによりＩＳＰ  Ａ１１０は、そのプレフィックス（「０ｘ６８ｘｘ」）の上位ビットと、ポインタ（「０ｘ２０７７」）の残りのビットとに基づいて、ラベル「０ｘ６８７７」を生成することができる。
【００３４】
ＩＳＰ  Ａ１１０は、コンテンツアイテムに対するラベルを生成した後に、ラベルを含むように発行メッセージ２１０を変更することができる。例えばＩＳＰ  Ａ１１０は、パケットヘッダの専用ラベルフィールド内にラベルを挿入することができる。次いでＩＳＰ  Ａ１１０は、ポインタに基づいて発行メッセージ２２０を経路指定することができる。様々な実施形態では、ルーティングテーブルまたは同様なデータ構造体を用いて、ＩＳＰ  Ａ１１０は、ポインタ「０ｘ２０７７」に対する最長の知られているプレフィックス一致に基づいて次のホップの位置を特定することができる。例えばＩＳＰ  Ａ１１０は、ＩＳＰ  Ｃ１３０が、ポインタ「０ｘ２０７７」に対する最長の知られているプレフィックス一致であると判定することができる。したがってＩＳＰ  Ａ１１０は、発行メッセージ２２０をＩＳＰ  Ｃ１３０に転送することができる。
【００３５】
様々な代替実施形態ではサーバ１４０は、代わりにポインタおよびラベルを生成することができる。サーバ１４０は、ＩＳＰ  Ａ１１０に関して述べたのと同様なやり方で、サーバ１４０および／またはＩＳＰ  Ａ１１０のプレフィックスに基づいてラベルを生成することができる。これらの実施形態ではＩＳＰ  Ａ１１０は単に、発行メッセージをＩＳＰ  Ｃ１３０に向けて転送するだけでよい。当業者には、サーバ１４０がポインタを計算できるようにするための、例示のネットワーク１００の構成要素および動作に対する様々な他の変更が明らかであろう。
【００３６】
ＩＳＰ  Ｃ１３０（またはその中の装置）は、発行メッセージ２２０を受信するとすぐに、それがポインタ「０ｘ２０７７」に対する最長のプレフィックス一致であることを判定することができる。例えばＩＳＰ  Ｃ１３０は、より長い一致するプレフィックスに関連付けられた他の知られている装置はないことを判定することができる。したがってＩＳＰ  Ｃ１３０は、コンテンツアイテム１４７に対するリゾルバであると見なすことができる。次いでＩＳＰ  Ｃ１３０は、ポインタとラベルの間の相関関係を記憶装置１３５に記憶（２３０）することができる。この時点でコンテンツアイテム１４７は発行され、ネットワーク１００に参加する他の装置から要求することができる。
【００３７】
図３は、コンテンツを要求するための例示のメッセージ交換３００を示す。コンテンツアイテム１４７が発行された後のある時点で、装置１５０はそれがコンテンツアイテム１４７を要求すべきであることを決定することができる。例えばユーザは、特定のファイルがダウンロードされるべきであることを示すことができる。装置１５０は、コンテンツアイテム１４７に対するポインタを判定することによって開始することができる。様々な実施形態ではポインタは、例えばＷｅｂページまたは他の装置（図示せず）によって装置１５０に供給することができる。様々な実施形態では装置１５０は、追加としてまたは代替としてポインタを算出することができる。例えば装置１５０は、ＳＨＡ−１アルゴリズムを用いてコンテンツアイテム１４７の名前「ＸＹＺ」を処理して、コンテンツアイテム１４７に対するポインタである、ハッシュ値「０ｘ２０７７」を生成することができる。
【００３８】
装置１５０は、「検索メッセージ」を生成することによって先に進む。本明細書で用いられる検索メッセージとは、識別されたコンテンツアイテムを受信したいとの要望を示す、他の装置に送信するための任意のメッセージとすることができる。様々な実施形態によれば検索メッセージは、パケットを検索メッセージとして識別するヘッダを含む、ネットワーク層（または「レイヤ３」）パケットとして実現することができる。装置１５０はポインタ「０ｘ２０７７」を含む検索メッセージ３１０を構築する。様々な実施形態ではポインタは、パケットヘッダの宛先アドレスフィールドおよび／または専用ポインタフィールド内に含むことができる。装置１５０は、検索メッセージ３１０が構築された後に、さらなる処理のために検索メッセージ３１０をＩＳＰ  Ａ１１０に転送することができる。
【００３９】
ＩＳＰ  Ｂ１２０（またはその中の装置）は、検索メッセージ３１０を受信するとすぐに、それが検索メッセージであり、ポインタに対する最長のプレフィックス一致に関連付けられた装置に経路指定されるべきであると判定することができる。様々な実施形態ではＩＳＰ  Ｂ１２０は、ルーティングテーブルまたは同様なデータ構造体を用いて、ポインタ「０ｘ２０７７」に対する最長の知られているプレフィックス一致に基づいて、次のホップの位置を特定することができる。例えばＩＳＰ  Ｂ１２０は、ＩＳＰ  Ｃ１３０がポインタ「０ｘ２０７７」に対する最長の知られているプレフィックス一致であると判定することができる。したがってＩＳＰ  Ｂ１２０は、検索メッセージ３２０をＩＳＰ  Ｃ１３０に転送することができる。
【００４０】
ＩＳＰ  Ｃ１３０（またはその中の装置）は、検索メッセージ３２０を受信するとすぐに、それがポインタ「０ｘ２０７７」に対する最長のプレフィックス一致であると判定することができる。例えばＩＳＰ  Ｃ１３０は、より長い一致するプレフィックスに関連付けられた他の知られている装置はないと判定することができる。したがってＩＳＰ  Ｃ１３０は、ポインタ「０ｘ２０７７」に対するリゾルバである。ＩＳＰ  Ｃ１３０は、記憶装置１３５内でポインタ「０ｘ２０７７」を探索し（３３０）、ラベル「０ｘ６８７７」が用いられるべきであることを示す結果３４０を取り出す。その後にＩＳＰ  Ｃ１３０は、ラベルを含むように検索メッセージ３２０を変更する。例えばＩＳＰ  Ｃ１１０はラベルを、パケットヘッダの専用ラベルフィールドに挿入する、かつ／または（もしあれば）アドレスフィールド内のポインタを置き換えることができる。次いでＩＳＰ  Ｃ１３０は、今度はポインタの代わりにラベルに基づいて、検索メッセージ３５０を転送することができる。したがってＩＳＰ  Ｃ１３０は、ＩＳＰ  Ａ１１０がラベル「０ｘ６８７７」に対する最長の知られているプレフィックス一致であると判定し、それにしたがって検索メッセージ３５０を転送することができる。
【００４１】
ＩＳＰ  Ａ１１０（またはその中の装置）は、検索メッセージ３５０を受信するとすぐに、やはりポインタとの最長の知られているプレフィックス一致に基づいて、検索メッセージ３６０をサーバ１４０に転送することができる。代替としてＩＳＰ  Ａ１１０は、サーバ１４０と、ポインタ「０ｘ６８７７」および／またはラベル「０ｘ２０７７」との対応を記憶することができる。このような場合はＩＳＰ  Ａ１１０は、ラベルの最長のプレフィックス一致ではなく、この対応に基づいてメッセージを転送することができる。様々な実施形態ではサーバ１４０は、コンテンツアイテム１４７に対するラベルについての知識をもたなくてもよい。これらの実施形態ではＩＳＰ  Ａ１１０は、サーバ１４０に転送する前に検索メッセージ３６０からラベルを除去することができる。
【００４２】
サーバ１４０が検索メッセージ３６０を受信した後に、サーバ１４０はメッセージ３６０を処理し、要求されたコンテンツアイテム１４５を届けることができる。
【００４３】
図４は、コンテンツを届けるための例示のメッセージ交換４００を示す。サーバ１４０がメッセージ３６０などのコンテンツアイテムに対する要求を受信した後に、サーバ１４０は、例えば要求メッセージに含まれるファイル名、ポインタ、またはラベルを用いることによって、要求されたファイルを識別することができる。ポインタの場合はサーバ１４０は、それが前に発行したポインタとコンテンツアイテムの間の対応を記憶することができる。ラベルの場合はサーバ１４０は、下位ビット（例えば、ＩＳＰ  Ａ１１０によって変更されなかったビット）を用いて、要求されたコンテンツアイテムを識別することができる。用いられる方法に関わらずサーバ１４０は、記憶装置１４５からコンテンツアイテム１４７を取り出す（４１０）。
【００４４】
サーバ１４０がコンテンツアイテム１４７を受信した（４２０）後に、サーバ１４０は、コンテンツアイテム１４７を装置１５０に届けるための「応答メッセージ」４３０を構築することができる。本明細書で用いられる応答メッセージは、要求されたコンテンツアイテムを含む、他の装置に送信するための任意のメッセージとすることができる。様々な実施形態によれば検索メッセージは、パケットを応答メッセージとして識別するヘッダを含む、ネットワーク層（または「レイヤ３」）パケットとして実現することができる。応答メッセージ４３０は、要求元装置１５０のアドレスすなわち「０ｘ１０８８」を含むことができる。このようなアドレスは、要求メッセージに含めておくことができる。応答メッセージ４３０が構築された後に、サーバ１４０はメッセージ４３０をＩＳＰ  Ａ１１０に送信することができる。
【００４５】
ＩＳＰ  Ａ１１０（またはその中の装置）は、メッセージ４３０を受信するとすぐに、そのメッセージが応答メッセージであり、ポインタに対する最長のプレフィックス一致に関連付けられた装置に経路指定されるべきであると判定することができる。様々な実施形態ではＩＳＰ  Ａ１１０は、ルーティングテーブルまたは同様なデータ構造体を用いて、アドレス「０ｘ１０８８」に対する最長の知られているプレフィックス一致に基づいて次のホップの位置を特定することができる。例えばＩＳＰ  Ａ１１０は、ＩＳＰ  Ｂ１２０がアドレス「０ｘ１０８８」に対する最長の知られているプレフィックス一致であると判定することができる。したがってＩＳＰ  Ａ１１０は、応答メッセージ４４０をＩＳＰ  Ｂ１２０に転送することができる。
【００４６】
同様にＩＳＰ  Ｂ１２０（またはその中の装置）は、メッセージ４４０を受信するとすぐに、そのメッセージが応答メッセージであり、ポインタに対する最長のプレフィックス一致に関連付けられた装置に経路指定されるべきであると判定することができる。それにしたがってＩＳＰ  Ｂ１２０は、応答メッセージ４５０を装置１５０に転送することができる。その後に装置１５０は、応答４５０からコンテンツアイテム１４７を抽出し、コンテンツアイテム１４７を表示あるいは使用することができる。
【００４７】
本明細書の例はＩＳＰによって行われる機能について述べているが、これらの機能はＩＳＰの制御下あるいはＩＳＰに関連付けられた１つまたは複数のコンピュータ、および／または他の装置によって行い得ることが明らかであろう。さらにこのような機能をもたらすために、各ＩＳＰ内で様々な構成を利用できる。例えばポインタおよび／またはラベルは、ＩＳＰの１つまたは複数の境界ルータに、ＩＳＰの集中型データベースに、および／または内部ルータによって形成された分散型ハッシュテーブルに記憶することができる。このような実装形態の詳細は当業者には明らかであろう。
【００４８】
またネットワーク１００のＩＳＰ１１０、１２０、１３０はそれぞれ特定の機能を行うものとして述べられたが、様々な実施形態ではＩＳＰのそれぞれはまた他のＩＳＰ１１０、１２０、１３０に関連して述べられた機能を行い得ることが明らかであろう。例えばＩＳＰ  Ａ１１０は他に、プレフィックス「０ｘ６８ｘｘ」に一致するポインタに対するリゾルバとして働くことができ、またはＩＳＰ  Ｂ１２０は他に、装置１５０によって発行されたコンテンツアイテムに対する発行者として働くことができる。様々な実施形態では各ＩＳＰ１１０、１２０、１３０は、本明細書で述べられるいずれ機能を行うことも可能となり得る。
【００４９】
図５は、コンテンツ経路指定されたメッセージを処理するための例示のネットワークノード５００を示す。ノード５００は、ＩＳＰ１１０、１２０、１３０などのＩＳＰ、またはそれらの１つまたは複数のノードに対応することができる。様々な実施形態ではノード５００は、ルータまたは他のネットワーク装置とすることができる。ノード５００は、受信器５１０、メッセージインタープリタ５２０、ルーティングテーブル５３０、発行モジュール５４０、解決モジュール５５０、メッセージルータ５６０、および送信器５７０を含むことができる。
【００５０】
受信器５１０は、他のノードからメッセージを受信するように構成された、ハードウェアおよび／または機械可読記憶媒体上に符号化された実行可能命令を備える、インターフェースとすることができる。例えば受信器５１０は、ネットワークインターフェース、または例えばイーサネット（登録商標）および／またはＷｉＦｉインターフェースなどのネットワークインターフェースの一部とすることができる。このような他のノードは、ノード５００と同様な装置を含むことができる。さらに受信器５１０は、ノード５００の単一の構成要素として示されるが、ノード５００は複数の異なる装置からメッセージを受信するためのいくつかのインターフェースを含み得ることが理解されるべきである。
【００５１】
メッセージインタープリタ５２０は、受信器５１０を通じてメッセージを受け取り、メッセージの内容を解釈するように構成された、ハードウェアおよび／または機械可読記憶媒体上の実行可能命令を含むことができる。まずメッセージインタープリタ５２０は、ノード５００がメッセージの受信者であるかどうかを判定することができる。メッセージインタープリタ５２０は、メッセージの受信者を調べる、またはルーティングテーブル５３０を用いてノード５００がメッセージに含まれるポインタまたはラベルに対する最長のプレフィックス一致であるかどうかを判定することができる。例えばメッセージがアドレスフィールド内にポインタ「０ｘ２０７７」を含む、あるいはメッセージがポインタ「０ｘ２０７７」に基づいて経路指定されるべきであることを示す場合は、メッセージインタープリタはルーティングテーブル５３０を参照し、他のノードがポインタに対するより長いプレフィックス一致を有すると判定することができる。
【００５２】
メッセージに対するより長いプレフィックス一致がノード５００に知られている場合は、メッセージインタープリタ５２０はさらに、例えばメッセージに対する適切なヘッダフィールドを調べることによって、メッセージが発行メッセージであるか他のメッセージであるかを判定することができる。メッセージが発行メッセージの場合は、メッセージインタープリタ５２０はさらなる処理のためにメッセージを発行モジュール５４０に渡すことができる。そうでない場合はメッセージインタープリタ５２０は、適切なノードに転送できるようにメッセージを直接、メッセージルータ５６０に渡す。一方、メッセージインタープリタ５２０が、ノード５００がメッセージに対する最長のプレフィックス一致であると判定した場合は、メッセージインタープリタ５２０はさらなる処理のためにメッセージを解決モジュール５５０に渡すことができる。
【００５３】
ルーティングテーブル５３０は、メッセージの経路指定に関するデータを記憶することができる任意の機械可読媒体とすることができる。したがってルーティングテーブル５３０は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置、および／または同様な記憶媒体などの、機械可読記憶媒体を含むことができる。様々な実施形態ではルーティングテーブルは、いくつかのプレフィックス、および関連する次のホップ装置またはポートを含むことができる。
【００５４】
発行モジュール５４０は、適切なときに発行メッセージに対して発行動作を行うように構成された、ハードウェアおよび／または機械可読記憶媒体上の実行可能命令を含むことができる。例えば発行モジュール５４０は、発行されたコンテンツアイテムに対するラベルを計算し、ラベルを発行メッセージに挿入し、変更されたメッセージを転送することができる。例示の発行モジュールについては、図６に関連して以下でより詳しく述べる。
【００５５】
解決モジュール５５０は、ポインタとラベルの間の相関関係を記憶し、記憶された相関関係に基づいて適切な検索メッセージを再経路指定するように構成された、ハードウェアおよび／または機械可読記憶媒体上の実行可能命令を含むことができる。例示の解決モジュールについては、以下で図７に関連してより詳しく述べる。
【００５６】
メッセージルータ５６０は、様々なメッセージに対して適切な次のホップを決定し、それにしたがってこれらのメッセージを送信器５７０を通じて送信するように構成された、ハードウェアおよび／または機械可読記憶媒体上の実行可能命令を含むことができる。したがってメッセージルータは、各メッセージのアドレスフィールド、または様々な実施形態ではパケットがそれらの値の１つに基づいて経路指定されるべきことを示す場合はポインタまたはラベルフィールドを、調べることができる。次いでメッセージルータ５６０は、ルーティングテーブル５３０に基づいて各メッセージの次のホップを決定することができる。例えば様々な実施形態ではメッセージルータ５６０は、ルーティングテーブル５３０を読み出して、メッセージを経路指定するために用いられるアドレス、ラベル、および／またはポインタに対する最長の知られているプレフィックス一致である次のホップを決定することができる。最後にメッセージルータ５６０は、メッセージを送信器５７０を通じて適切な次のホップに転送することができる。
【００５７】
送信器５７０は、他のノードからメッセージを送信するように構成された、ハードウェアおよび／または機械可読記憶媒体上に符号化された実行可能命令を備える、インターフェースとすることができる。例えば送信器５７０は、ネットワークインターフェース、または例えばイーサネットおよび／またはＷｉＦｉインターフェースなどのネットワークインターフェースの一部とすることができる。このような他のノードは、ノード５００と同様な装置を含むことができる。さらに、受信器５１０はノード５００の単一の構成要素として示されるが、ノード５００は複数の異なる装置からメッセージを送信するためのいくつかのインターフェースを含み得ることが理解されるべきである。さらに、受信器５１０および送信器５７０は同じインターフェース装置の一部であってもよいことが理解されるべきである。
【００５８】
図６は、発行メッセージを処理し送信するための例示のシステム６００を示す。システム６００はノード５００の発行モジュール５４０に対応することができ、異なるノード内に配備することができ、または独立のノードとして配備することができる。システム６００は、ポインタ抽出部６１０、ラベル計算器６２０、発行コンテンツ記憶装置６３０、および発行メッセージ変更部６４０を含むことができる。
【００５９】
ポインタ抽出部６１０は、発行メッセージからポインタを抽出するように構成された、ハードウェアおよび／または機械可読記憶媒体上の実行可能命令を含むことができる。このようなポインタはメッセージの専用ポインタフィールドまたは他のフィールドに配置することができる。ポインタ抽出部６１０は、このような発行メッセージを、他の装置から、またはシステム６００が配備されているノードの他の構成要素から受信することができる。システム６００がノード５００の発行モジュール５４０に対応する様々な実施形態では、ポインタ抽出部６１０は発行メッセージをメッセージインタープリタ５２０から受け取ることができる。
【００６０】
ラベル計算器６２０は、ポインタ抽出部６１０によって位置を特定されたポインタと関連して用いられるラベルを決定するように構成された、ハードウェアおよび／または機械可読記憶媒体上の実行可能命令を含むことができる。例えばラベル計算器は、ポインタ、およびシステム６００および／またはシステム６００が配備されたノードに関連付けられたプレフィックスに基づいて、ラベルを生成することができる。様々な実施形態ではラベル計算器は、ポインタの上位ビットを適切なプレフィックスで置き換えることによってラベルを生成することができる。したがってラベルは後に、システム６００および／またはシステム６００が配備されたノードの位置を特定するために用いることができる。様々な実施形態ではラベル計算器は、後で用いるためにラベル、ポインタ、および／または発行元装置を一緒に発行コンテンツ記憶装置に記憶することができる。
【００６１】
発行コンテンツ記憶装置６３０は、ラベル、ポインタ、および／または発行元装置の間の関連を記憶することができる任意の機械可読媒体とすることができる。したがって発行コンテンツ記憶装置６３０は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置、および／または同様な記憶媒体などの、機械可読記憶媒体を含むことができる。
【００６２】
発行メッセージ変更部６４０は、発行メッセージにラベルを挿入するように構成された、ハードウェアおよび／または機械可読記憶媒体上の実行可能命令を含むことができる。例えば発行メッセージ変更部６４０は、ラベル計算器６２０によって生成されたラベルを、メッセージヘッダ内の専用ラベルフィールドに挿入することができる。発行メッセージ変更部６４０は、メッセージを変更した後に、他の装置またはシステム６００が配備されたノード内の他の構成要素にメッセージを転送することができる。システム６００がノード５００の発行モジュール５４０に対応する様々な実施形態では、発行メッセージ変更部６４０は変更されたメッセージをメッセージルータ５６０に渡すことができる。
【００６３】
図７は、受信した発行メッセージを処理し、検索メッセージを解決するための例示のシステム７００を示す。システム７００は、ノード５００の解決モジュール５５０に対応することができ、異なるノード内に配備することができ、または独立のノードとして配備することができる。システム７００は、メッセージ分類部７１０、ラベルおよびポインタ抽出部７２０、相関関係マネージャ７３０、相関関係記憶装置７４０、および検索メッセージ変更部７５０を含むことができる。
【００６４】
メッセージ分類部７１０は、受け取ったメッセージのメッセージタイプを判定するように構成された、ハードウェアおよび／または機械可読記憶媒体上の実行可能命令を含むことができる。メッセージ分類部は、他の装置から、またはシステム７００が配備されたノードの他の構成要素からメッセージを受け取ることができる。システム７００がノード５００の解決モジュール５５０に対応する様々な実施形態では、メッセージ分類部７１０は、メッセージインタープリタ５２０から発行メッセージを受け取ることができる。メッセージ分類部７１０は、メッセージの少なくとも一部分を読み出して、それが発行メッセージであるか検索メッセージであるかを判定することができる。例えばメッセージ分類部７１０は、メッセージからメッセージタイプフィールドを読み出すことができる。メッセージが発行メッセージの場合は、メッセージ分類部７２０はメッセージをラベルおよびポインタ抽出部７２０に渡すことができる。一方、メッセージが検索メッセージの場合は、メッセージ分類部はメッセージを検索メッセージ変更部７５０に渡すことができる。
【００６５】
ラベルおよびポインタ抽出部７２０は、発行メッセージからラベルおよびポインタの対を抽出するように構成された、ハードウェアおよび／または機械可読記憶媒体上の実行可能命令を含むことができる。例えばラベルおよびポインタ抽出部７２０は、発行メッセージの専用ラベルおよびポインタフィールドからデータを読み出すことができる。次いでラベルおよびポインタ抽出部は、この情報を相関関係マネージャ７３０に渡すことができる。
【００６６】
相関関係マネージャ７３０は、後で用いるためにラベルおよびポインタを相関関係記憶装置に記憶するように構成された、ハードウェアおよび／または機械可読記憶媒体上の実行可能命令を含むことができる。様々な実施形態では相関関係マネージャ７３０は単に、ラベルおよびポインタを一緒に相関関係レコードに記憶することができる。様々な代替実施形態では、ポインタは複数のラベルに関係付けることができ（コンテンツアイテムに対する複数の場所を示す）、相関関係マネージャは各相関関係レコードにいくつかのラベルを記憶することができる。
【００６７】
相関関係記憶装置７４０は、ラベルとポインタの間の関連を記憶することができる任意の機械可読媒体とすることができる。したがって相関関係記憶装置７４０は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置、および／または同様な記憶媒体などの、機械可読記憶媒体を含むことができる。このようなポインタとラベルの間の関連は、例えば１対１の関係、または１対多数の関係とすることができる。
【００６８】
検索メッセージ変更部７５０は、ポインタに対する適切なラベルを決定し、その後にラベル含むように検索メッセージを変更するように構成された、ハードウェアおよび／または機械可読記憶媒体上の実行可能命令を含むことができる。まず検索メッセージ変更部７５０は検索メッセージによって運ばれるポインタに関連付けられた、相関関係記憶装置７４０内の相関関係レコードの位置を特定することができる。次に検索メッセージ変更部７５０は、相関関係レコードからラベルを読み出すことができる。相関関係レコードが複数のラベルを含んでいる場合は、検索メッセージ変更部は、例えばそれぞれのラベルに関連付けられたサーバまでの距離、またはそのサーバ上の現在のロードに基づいて適切なラベルを選択することができる。使用するラベルを検索メッセージ変更部７５０が決定した後に、検索メッセージ変更部はラベルをメッセージに挿入し、メッセージがラベルに基づいて経路指定されるべきであることを示す。例えば検索メッセージ変更部７５０は、メッセージのアドレスフィールドにラベルを挿入することができ、またはメッセージの専用ラベルフィールドにラベルを挿入し、メッセージを経路指定するためにラベルが用いられるべきであることを別のフィールドにおいて示すことができる。
【００６９】
メッセージを変更した後に検索メッセージ変更部７５０は、他の装置またはシステム７００が配備されたノード内の他の構成要素にメッセージを転送することができる。システム７００がノード５００の解決モジュール５５０に対応する様々な実施形態では、検索メッセージ変更部７５０は変更されたメッセージをメッセージルータ５６０に渡すことができる。
【００７０】
図８は、コンテンツ経路指定されたメッセージを処理するための例示の方法８００を示す。方法８００は例えば、メッセージインタープリタ５２０、発行モジュール５４０、解決モジュール５５０、および／またはメッセージルータ５６０などのネットワークノード５００の構成要素によって行うことができる。
【００７１】
方法８００は、ステップ８１０で開始しステップ８２０に進むことができ、ノード５００はメッセージを受信することができる。次いでステップ８３０ではノード５００は、受信したメッセージが転送されるべきかどうかを判定することができる。様々な実施形態ではノード５００は、メッセージが応答メッセージである場合、またはより長いプレフィックス一致が別の知られているノードにおいて存在する場合は、メッセージを転送するべきであると判定する。メッセージが転送されるべきである場合は、方法８００はステップ８４０に進む。
【００７２】
ステップ８４０ではノード５００は、例えばメッセージヘッダのメッセージタイプフィールドを調べることによって、メッセージが発行メッセージであるかどうかを判定する。メッセージが発行メッセージの場合は、方法８００はステップ８５０に進む。ステップ８５０ではノード５００は、メッセージに対して発行処理を行うことができる。例えばノード５００は、ラベルを計算し、ラベルを発行メッセージに挿入し、メッセージを他の装置に転送することができる。発行処理のための例示の方法については、図９に関連して以下でより詳しく述べる。次いで方法８００はステップ８８０で終了する。
【００７３】
一方、ノード５００がステップ８４０で、メッセージが発行メッセージではないと判定した場合は、方法はステップ８６０に進むことができる。ステップ８６０ではノード５００は単に、経路指定目的のために用いられるべきであることをメッセージが示す、ポインタ、ラベル、またはアドレスに対する最長のプレフィックス一致に基づいて、メッセージを他の装置に転送することができる。次いで方法８００はステップ８８０に進んで終了する。
【００７４】
ステップ８３０においてノード５００が、メッセージはそのまま転送されるべきでないと判定した場合は、方法８００はステップ８７０に進む。例えばノード５００が、ノード５００はメッセージを経路指定するために用いられているポインタに対する最長のプレフィックス一致であると判定した場合は、ノード５００はメッセージはその現在の状態で転送されるべきでないと判定することができる。ステップ８７０ではノード５００は、メッセージに対して追加の解決処理を行うことができる。例えばメッセージが発行メッセージの場合は、ノード５００は将来の使用のためにメッセージによって運ばれるポインタおよびラベルを記憶することができる。他の例としてメッセージが検索メッセージの場合は、ノード５００はラベルを探索し、ラベルをメッセージに挿入し、ラベルに基づいてメッセージを転送することができる。解決処理のための例示の方法については、図１０に関連して以下でより詳しく述べる。次いで方法８００はステップ８８０で終了する。
【００７５】
図９は、発行メッセージを処理し送信するための例示の方法９００を示す。方法９００は方法８００のステップ８５０に対応することができる。方法９００は、ポインタ抽出部６１０、ラベル計算器６２０、および／または発行メッセージ変更部６４０などのシステム６００の構成要素によって行うことができる。
【００７６】
方法９００はステップ９１０で開始しステップ９２０に進むことができ、システム６００は、発行メッセージがすでにラベルを含むかどうかを判定することができる。発行メッセージがラベルを含む場合は、他のシステムがすでに発行者機能を行っている。この場合は方法９００はステップ９７０にスキップすることができる。そうでない場合は方法９００はステップ９３０に進むことができる。
【００７７】
ステップ９３０でシステム６００は、発行メッセージからポインタを抽出する。次いでステップ９４０でシステム６００は、ラベルを生成することができる。例えばシステム６００は、システム６００に関連付けられたポインタおよびプレフィックスを組み合わせてラベルを生成することができる。次にステップ９５０では、任意選択でシステム６００は、後で用いるためにラベルおよびポインタを一緒に記憶装置に記憶することができる。様々な実施形態では方法９００はステップ９５０を含まなくてもよい。
【００７８】
ステップ９６０ではシステム６００は、例えばラベルをメッセージに挿入することによって発行メッセージを変更することができる。次いでシステム６００はステップ９７０で、ポインタに対する最長の知られているプレフィックスに基づいて、別の装置にメッセージを転送することができる。様々な実施形態ではステップ９７０は、例えばノード５００のメッセージルータ５６０などの、システム６００の外部の構成要素によって行うことができる。次いで方法９００はステップ９８０で終了することができる。
【００７９】
図１０は、受信した発行メッセージを処理し、検索メッセージを解決するための例示の方法１０００を示す。方法１０００は、方法８００のステップ８７０に対応することができる。方法１０００は、メッセージ分類部７１０、ラベルおよびポインタ抽出部７２０、相関関係マネージャ７３０、および／または検索メッセージ変更部７５０などのシステム７００の構成要素によって行うことができる。
【００８０】
方法１０００はステップ１０１０で開始しステップ１０２０に進み、システム７００は受け取ったメッセージが発行メッセージかどうかを判定する。メッセージが発行メッセージである場合は、方法１０００はステップ１０３０に進み、システム７００はメッセージからポインタおよびラベルを抽出する。その後にステップ１０４０でシステム７００は、後で用いるためにポインタおよびラベルを一緒に記憶装置に記憶する。次いで方法１０００はステップ１０９０に進んで終了する。
【００８１】
しかしステップ１０５０でシステム７００が、受け取ったメッセージは発行メッセージではないと判定した場合は、方法１０００は代わりにステップ１０５０に進む。代替としてシステム７００は、ステップ１０５０に進む前に、受け取ったメッセージが検索メッセージであることを確実にすることができる。ステップ１０５０でシステム７００は、受け取ったメッセージからポインタを抽出する。次にステップ１０６０でシステム７００は、抽出したポインタに対して、前に記憶したラベルを探索する。そのようなラベルの位置を一度特定すると、方法１０００はステップ１０７０に進み、システム７００は受け取ったメッセージを変更する。例えばシステム７００は、メッセージにラベルを挿入し、メッセージは、これから先はポインタではなくラベルに基づいて経路指定されるべきであることを示すことができる。次いでステップ１０８０でシステム７００は、ラベルに対する最長の知られているプレフィックスに基づいて、別の装置にメッセージを転送することができる。様々な実施形態ではステップ１０８０は、例えばノード５００のメッセージルータ５６０などの、システム７００の外部の構成要素によって行うことができる。次いで方法１０００はステップ１０９０で終了することができる。
【００８２】
上記の説明から本発明の様々な例示的実施形態は、ハードウェアおよび／またはファームウェアにおいて実現できることが明らかであろう。さらに様々な例示的実施形態は、少なくとも１つのプロセッサによって読み出され実行されて本明細書で詳しく述べられた動作を行うことができる、機械可読記憶媒体上に記憶された命令として実施することができる。機械可読記憶媒体は、パーソナルまたはラップトップコンピュータ、サーバ、または他のコンピューティングデバイスなどの機械によって読み出しが可能な形にて情報を記憶するための、任意の機構を含むことができる。したがって機械可読記憶媒体は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置、および同様な記憶媒体を含むことができる。
【００８３】
当業者には、本明細書のいずれのブロック図も、本発明の原理を具体化する例示の回路の概念図を表すことが理解されるべきである。同様にいずれのフローチャート、フロー図、状態遷移図、擬似コードなどは、機械可読媒体内に実質的に表すことができる様々な処理を表し、コンピュータまたはプロセッサが明示的に示されていても示されていなくても、コンピュータまたはプロセッサによってそのように実行されることが理解されよう。
【００８４】
様々な例示的実施形態について、それらのいくつかの例示の態様を具体的に参照して詳しく述べてきたが、本発明は他の実施形態も可能であり、その詳細は様々な明らかな点において変更が可能であることが理解されるべきである。当業者には容易に明らかなように、本発明の趣旨および範囲内のままで、変形および変更を行うことができる。したがって上記の開示、説明、および図は説明のためのみであり、いかなる形においても、特許請求の範囲によって規定される本発明を限定するものではない。
【図１】
0005918361.tif 000002
【図２】
0005918361.tif 000003
【図３】
0005918361.tif 000004
【図４】
0005918361.tif 000005
【図５】
0005918361.tif 000006
【図６】
0005918361.tif 000007
【図７】
0005918361.tif 000008
【図８】
0005918361.tif 000009
【図９】
0005918361.tif 000010
【図１０】
0005918361.tif 000011