(57)【要約】【課題】  開示の実施形態は、階層的キャッシュネットワークにおけるコンテンツ配置を提供する。【解決手段】  一実装の一態様によると、方法は、３以上のレベルを有するネットワークの中の最適化問題を、２以上の２層最適化問題に分解するステップ、を有する。方法は、前記２層最適化問題のうちの上位又は下位２層最適化問題から得た記憶値及び１又は複数のコスト値を、それぞれ、前記２層最適化問題のうちの上位又は下位２層最適化問題に渡すステップ、も有する。【選択図】  図４
2016110628.tif 000002
【特許請求の範囲】
【請求項１】
３以上のレベルを有するネットワークの中の最適化問題を、２以上の２層最適化問題に分解するステップと、
前記２層最適化問題のうちの上位又は下位２層最適化問題から得た記憶値と１又は複数のコスト値とを、それぞれ、前記２層最適化問題の下位又は上位２層最適化問題に渡すステップと、
を有する方法。
【請求項２】
前記２以上の２層最適化問題の各々は、線形計画最適化問題を有する、請求項１に記載の方法。
【請求項３】
前記２層最適化問題のうちの前記上位又は下位２層最適化問題から得た前記記憶値は、合計記憶制約値を有する、請求項１に記載の方法。
【請求項４】
前記２層最適化問題のうちの少なくとも１つは、前記ネットワークの中の各ノードにおける前記ネットワークの各コンテンツの人気に基づくパラメータを有する、請求項１に記載の方法。
【請求項５】
前記２層最適化問題のうちの少なくとも１つは、コンテンツカタログの中に列挙された各コンテンツの人気に基づくパラメータを有し、前記コンテンツカタログは、前の最適化問題の解に従って格納されるべきであると決定されたコンテンツを削除するために更新される、請求項１に記載の方法。
【請求項６】
前記２層最適化問題のうちの前記上位又は下位２層最適化問題から得た前記記憶値及び前記１又は複数のコスト値を、それぞれ、前記２層最適化問題のうちの上位又は下位２層最適化問題に渡すステップは、前記記憶値及び前記コスト値を前記ネットワークの中のノードに転送するステップであって、前記記憶値及び前記コスト値を渡された該ノードが前記２層最適化問題を解くことができるようにする、ステップを有する、請求項１に記載の方法。
【請求項７】
トップダウンアルゴリズムで及び前記２層最適化問題のうちの１つの２層最適化問題の第２層が１又は複数のエッジノードのみを有することに応答して、前記２層最適化問題のうちの前記１つの２層最適化問題を解くステップであって、前記１又は複数のエッジノードに対する記憶サイズ割り当てと、前記１又は複数のエッジノードにコンテンツを格納するよう指示するために該コンテンツのＤａｔａパケットの中のキャッシュフラグを設定する確率と、を得る、ステップ、を更に有する請求項１に記載の方法。
【請求項８】
ボトムアップアルゴリズムで及び前記２層最適化問題のうちの１つの２層最適化問題の第１層が第１のルートノードのみを有することに応答して、前記２層最適化問題のうちの前記１つの２層最適化問題を解くステップであって、前記第１のルートノードに対する記憶サイズ割り当てと、前記第１のルートノードにコンテンツを格納するよう指示するために該コンテンツのＤａｔａパケットの中のキャッシュフラグを設定する確率と、を得る、ステップ、を更に有する請求項１に記載の方法。
【請求項９】
前記ネットワークは、第１及び第２のサブネットワークを有し、前記ネットワークの中の前記最適化問題を２以上の２層最適化問題に分解するステップは、前記第１のサブネットワークの中でトップダウンアルゴリズムに従って、及び前記第２のサブネットワークの中でボトムアップアルゴリズムに従って、実行され、前記方法は、対応するサブネットワークのレベルにあるノードの各々における要求統計の類似性に基づき、前記トップダウンアルゴリズム又は前記ボトムアップアルゴリズムを前記サブネットワークの各々で用いるか否かを決定するステップ、を更に有する請求項１に記載の方法。
【請求項１０】
３以上のレベルを有するネットワークの複数のノード、
を有し、第１のルートノードは、
前記ネットワークの中の線形計画最適化問題を、２以上の２層線形計画最適化問題に分解し、
前記２層線形計画最適化問題のうちの上位又は下位２層線形計画最適化問題から得た合計記憶制約値と１又は複数のコスト値とを、それぞれ、前記２層線形計画最適化問題の下位又は上位２層線形計画最適化問題に渡す、
よう構成される、システム。
【請求項１１】
前記２層線形計画最適化問題のうちの少なくとも１つは、前記ネットワークの中の各ノードにおける前記ネットワークの各コンテンツの人気に基づくパラメータを有する、請求項１０に記載のシステム。
【請求項１２】
前記２層線形計画最適化問題のうちの少なくとも１つは、コンテンツカタログの中に列挙された各コンテンツの人気に基づくパラメータを有し、前記コンテンツカタログは、前の線形計画最適化の解に従って格納されるべきであると決定されたコンテンツを削除するために更新される、請求項１０に記載のシステム。
【請求項１３】
前記第１のルートノードは、前記合計記憶制約値及び前記コスト値を渡されたノードが前記２層線形計画最適化問題を解くことができるようにするために、前記合計記憶制約値及び前記コスト値を前記ネットワークの中の該ノードに転送するよう構成されることにより、前記２層線形計画最適化問題のうちの前記上位又は下位２層線形計画最適化問題から得た前記合計記憶制約値及び前記１又は複数のコスト値を、それぞれ、前記２層線形計画最適化問題のうちの上位又は下位２層線形計画最適化問題に渡すよう構成される、請求項１０に記載のシステム。
【請求項１４】
トップダウンアルゴリズムで及び前記２層線形計画最適化問題のうちの１つの２層線形計画最適化問題の第２層が１又は複数のエッジノードのみを有することに応答して、前記第１のルートノードは、前記２層線形計画最適化問題のうちの前記１つの２層線形計画最適化問題を解いて、前記１又は複数のエッジノードに対する記憶サイズ割り当てと、前記１又は複数のエッジノードにコンテンツを格納するよう指示するために該コンテンツのＤａｔａパケットの中のキャッシュフラグを設定する確率と、を得る、よう更に構成される、請求項１０に記載のシステム。
【請求項１５】
ボトムアップアルゴリズムで及び前記２層線形最適化問題のうちの１つの２層線形最適化問題の第１層が前記第１のルートノードのみを有することに応答して、前記第１のルートノードは、前記２層最適化問題のうちの前記１つの２層最適化問題を解いて、前記第１のルートノードに対する記憶サイズ割り当てと、前記第１のルートノードにコンテンツを格納するよう指示するために該コンテンツのＤａｔａパケットの中のキャッシュフラグを設定する確率と、を決定するよう更に構成される、請求項１０に記載のシステム。
【請求項１６】
前記第１のルートノードは、
第１のサブネットワークの中でトップダウンアルゴリズムに従って、及び第２のサブネットワークの中でボトムアップアルゴリズムに従って、前記ネットワークの中の前記線形計画最適化問題を２以上の２層線形計画最適化問題に分解し、
対応するサブネットワークのレベルにあるノードの各々における要求統計の類似性に基づき、前記トップダウンアルゴリズム又は前記ボトムアップアルゴリズムを前記サブネットワークの各々で用いるか否かを決定する、
ようさらに構成される、請求項１０に記載のシステム。
【請求項１７】
動作を実行する又はその性能を制御するためにプロセッサにより実行可能なコンピュータ可読命令を格納された非一時的コンピュータ可読媒体であって、前記動作は、
３以上のレベルを有するネットワークの中の線形計画最適化問題を２以上の２層線形計画最適化問題に分解するステップであって、前記２層線形計画最適化問題のうちの少なくとも１つの２層線形計画最適化問題は、前記ネットワークの中の各ノードにおける前記ネットワークの各コンテンツの人気に基づくパラメータを有する、ステップと、
前記２層線形計画最適化問題のうちの上位又は下位２層線形計画最適化問題から得た合計記憶制約値及び１又は複数のコスト値を、それぞれ、前記２層線形計画最適化問題のうちの下位又は上位２層線形計画最適化問題に渡すステップと、
を有する、非一時的コンピュータ可読媒体。
【請求項１８】
前記２層線形計画最適化問題のうちの少なくとも１つは、コンテンツカタログの中に列挙された各コンテンツの人気に基づくパラメータを有し、前記コンテンツカタログは、前の線形計画最適化の解に従って格納されるべきであると決定されたコンテンツを削除するために更新される、請求項１７に記載の非一時的コンピュータ可読媒体。
【請求項１９】
前記２層線形計画最適化問題のうちの前記上位又は下位２層線形計画最適化問題から得た前記合計記憶制約値及び前記１又は複数のコスト値を、それぞれ、前記２層線形計画最適化問題のうちの上位又は下位２層線形計画最適化問題に渡すステップは、前記合計記憶制約値及び前記コスト値を前記ネットワークの中のノードに転送するステップであって、前記合計記憶制約値及び前記コスト値を渡された該ノードが前記２層線形計画最適化問題を解くことができるようにする、ステップを有する、請求項１７に記載の非一時的コンピュータ可読媒体。
【請求項２０】
前記動作は、トップダウンアルゴリズムで及び前記２層線形計画最適化問題のうちの１つの２層線形計画最適化問題の第２層が１又は複数のエッジノードのみを有することに応答して、前記２層線形計画最適化問題を解くステップであって、要求ノードに対する記憶サイズ割り当てと、前記１又は複数のエッジノードにコンテンツを格納するよう指示するために該コンテンツのＤａｔａパケットの中のキャッシュフラグを設定する確率と、を得る、ステップ、を更に有する、請求項１７に記載の非一時的コンピュータ可読媒体。
【請求項２１】
前記動作は、ボトムアップアルゴリズムで及び前記２層線形計画最適化問題のうちの１つの２層線形計画最適化問題の第１層が第１のルートノードのみを有することに応答して、前記２層線形計画最適化問題のうちの前記１つの２層線形計画最適化問題を解くステップであって、前記第１のルートノードに対する記憶サイズ割り当てと、前記第１のルートノードにコンテンツを格納するよう指示するために該コンテンツのＤａｔａパケットの中のキャッシュフラグを設定する確率と、を決定する、ステップ、を更に有する、請求項１７に記載の非一時的コンピュータ可読媒体。
【請求項２２】
前記動作は、
第１のサブネットワークの中でトップダウンアルゴリズムに従って、及び第２のサブネットワークの中でボトムアップアルゴリズムに従って、前記ネットワークの中の前記線形計画最適化問題を２以上の２層線形計画最適化問題に分解するステップと、
対応するサブネットワークのレベルにあるノードの各々における要求統計の類似性に基づき、前記トップダウンアルゴリズム又は前記ボトムアップアルゴリズムを前記サブネットワークの各々で用いるか否かを決定するステップと、
を更に有する、請求項１７に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書で議論する実装は、階層的キャッシュネットワークにおけるコンテンツ配置に関する。
【背景技術】
【０００２】
本願明細書に特に示されない限り、本願明細書に記載される構成要素は、本願の請求項に対する従来技術ではなく、この章に含まれることにより従来技術と見なされるものではない。
【０００３】
現在のインターネット構造はホスト指向であり且つ１対１パラダイムに基づくが、ビデオ、音楽、写真、文書等を閲覧する及び共有するような現在のインターネットの使用の大部分は、ホスト指向の態様とは異なるデータ又はコンテンツ指向の態様を有する場合が多い。エンドポイントがインターネットプロトコル（ＩＰ）アドレスの代わりに名前付きデータに基づき通信する情報指向ネットワーク（Information  centric  network：ＩＣＮ）は、ホスト指向インターネットアーキテクチャの代替として発展してきた。ＩＣＮは、スケーラブル且つコスト効率の良いコンテンツ配信を提供しようとしている。
【０００４】
本願明細書で請求される主題は、上述のような欠点を解決する実装や上述のような環境でのみ機能する実装に限定されない。むしろ、この背景技術は、単に、本願明細書に記載される複数の実装が実施される技術分野の一例を説明するために提供される。
【発明の概要】
【課題を解決するための手段】
【０００５】
一実装の一態様によると、方法は、３以上のレベルを有するネットワークの中の最適化問題を、２以上の２層最適化問題に分解するステップ、を有する。方法は、前記２層最適化問題のうちの上位又は下位２層最適化問題から得た記憶値及び１又は複数のコスト値を、それぞれ、前記２層最適化問題のうちの上位又は下位２層最適化問題に渡すステップ、も有する。
【０００６】
実施形態の目的及び利点が理解され、少なくとも特に特許請求の範囲で指摘された要素、特徴及び組合せを用いて達成されるだろう。
【０００７】
上述の全体的説明及び以下の詳細な説明の両方は、例示及び説明のためであり、本発明の範囲を限定しないことが理解される。
【図面の簡単な説明】
【０００８】
例示的な実装は、添付の図面を用いて、更なる特異性及び詳細事項と共に記載され説明される。
【図１Ａ】例示的なＩＣＮを説明する概略図である。
【図１Ｂ】１又は複数のスーパーリーフを含む、図１Ａの例示的なＩＣＮを説明する概略図である。
【図１Ｃ】１又は複数のスーパーペアレントを含む、図１Ａの例示的なＩＣＮを説明する概略図である。
【図２Ａ】標準的なＩＣＮルータの３つの例示的なデータ構造の概略図である。
【図２Ｂ】第１のルートノードにおける例示的な解テーブル及びアクセス履歴テーブルの概略図である。
【図３】例示的なＩＣＮルータシステムを説明するブロック図である。
【図４】トップダウンアルゴリズムにおけるコンテンツ配置及び記憶割り当て方法を説明する例示的なフロー図である。
【図５】ボトムアップアルゴリズムにおけるコンテンツ配置及び記憶割り当て方法を説明する例示的なフロー図である。
【発明を実施するための形態】
【０００９】
インターネットでビデオ及びオーディオをストリーミングする要求は、近年増大しており、インターネットトラフィックを増大させている。情報指向ネットワーク（ＩＣＮ）及び他の階層的キャッシュネットワークは、コンテンツ配信を増強するためにネットワーク内のキャッシングのためのアーキテクチャを提供する。ＩＣＮは、１又は複数の下位ネットワークを有し得る。下位ネットワークの中では、ルータはコンテンツを共有するために互いに接続されても良い。ＩＣＮの各ルータは、要求されるコンテンツを格納するために、記憶空間も有し得る。ＩＣＮでは、全体の記憶及びリンク能力が限られているとき、コンテンツが格納される場所と各ルータにおける記憶サイズ割り当てとの両者の最適化は、ＩＣＮのデータ配信の全体コストを削減し得る。したがって、本願明細書に記載の幾つかの実装は、例えばＩＣＮのような階層的キャッシュネットワークのアーキテクチャ、及び最適化を通じてネットワーク又はコンテンツプロバイダへのデータ配信の全体コストを削減できる通信プロトコルをサポートすることに関する。本願明細書で言及される「最適化」は、実関数を最大化すること又は最小化することを含み得る。ここで、「最大化」又は「最小化」は、必ずしも絶対的な最大又は最小ではなく、他の値と比べたとき想定的な最大又は最小を達成することを意味する。
【００１０】
本願明細書に記載の幾つかの実装では、線形計画最適化問題（linear  program  optimization  problem：ＬＰＯＰ）は、トップダウン又はボトムアップアルゴリズムに従って２以上の２層（tier）ＬＰＯＰに分けられる。記憶値及び１又は複数のコスト値は、上位又は下位の２層ＬＰＯＰから、それぞれ下位又は上位の２層ＬＰＯＰに渡されても良い。各ＬＰＯＰは、ネットワーク内の各ノードで各々の要求されたコンテンツの人気、又はコンテンツカタログに列挙された各々の要求されたコンテンツの人気に基づくパラメータを有しても良い。２以上のＬＰＯＰは、ネットワークの中の１又は複数のノードに対するコンテンツ配置及び記憶サイズ割り当てを決定するために、実行され又は解かれても良い。さらに、ネットワークが２以上の下位ネットワークを含む場合、下位ネットワークの中のノード間の要求統計の類似性に依存して、トップダウンアルゴリズムがある下位ネットワークで用いられても良く、一方で、ボトムアップアルゴリズムが別の下位ネットワークで用いられても良い。
【００１１】
本発明の実装を、添付の図面を参照して以下に説明する。
【００１２】
図１Ａは、本願明細書に記載の少なくとも１つの実装に従って配置される例示的なＩＣＮを説明する概略図である。ＩＣＮ１００は、Ｄａｔａパケットを配信するための「Ｉｎｔｅｒｅｓｔパケット」とも称されるメッセージをルーティングするよう構成されるノードのネットワークを有しても良い。用語「Ｉｎｔｅｒｅｓｔパケット」は、特定のコンテンツのための要求を表しても良い。用語「Ｄａｔａパケット」は、Ｉｎｔｅｒｅｓｔパケットに適応するコンテンツを表しても良い。各Ｉｎｔｅｒｅｓｔパケットは、１つのＤａｔａパケットに対応しても良い。
【００１３】
種々の実装では、ＩＣＮ１００は、インターネット又はその部分を含んでも良く、又はその中に含まれても良い。図１Ａに示すように、ＩＣＮ１００は、サーバ１０２と、第１のルートノード１０４、２個の第２のルートノード１０６ａ、１０６ｂ（総称的に「第２のルートノード１０６」又は「複数の第２のルートノード１０６」）、２個の第３のルートノード１０８ａ、１０８ｂ（総称的に「第３のルートノード１０８」又は「複数の第３のルートノード１０８」）及び６個のエッジノード１１０ａ−１１０ｆ（総称的に「エッジノード１１０」又は「複数のエッジノード１１０」）を含む多数のネットワークノードと、を有しても良い。
【００１４】
本開示の利益により、図１Ａに示すＩＣＮ１００は幾つかの点で簡素化されていることが明らかである。例えば、ＩＣＮ１００は、図１Ａに示されたのと異なる数の第１のルートノード１０４、第２のルートノード１０６、第３のルートノード１０８、及び／又はエッジノード１１０を有しても良い。ＩＣＮ１００は、第１のルートノード１０４とサーバ１０２との間にアップストリームノードを有しても良い。ＩＣＮ１００は、第１のルートノード１０４と第２のルートノード１０６との間、第２のルートノード１０６と第３のルートノード１０８との間、及び／又はエッジノード１１０の間に、中間ノード及び／又は追加ルートノードを有しても良い。さらに、第１のルートノード１０４、第２のルートノード１０６、第３のルートノード１０８、及び／又はエッジノード１１０の各々は、１又は複数の中間ノード及び／又は追加ルートノードを有しても良い。ＩＣＮ１００は、クライアント、サーバ、ルータ、スイッチ、及び／又は他のネットワーク装置のような様々な追加ネットワークノードを有しても良い。
【００１５】
ＩＣＮ１００のネットワークトポロジは、階層的構造を有しても良い。ネットワークトポロジは、ツリー構造又はツリー構造のセットを有しても良い。図１Ａに示した階層的ツリー構造トポロジでは、第２のルートノード１０６は、第１のルートノード１０４及び第３のルートノード１０８を相互接続して、Ｉｎｔｅｒｅｓｔパケット及びＤａｔａパケットがこれらのノード間で交換できるようにしても良い。第３のルートノード１０８は、第２のルートノード１０６及びエッジノード１１０を相互接続して、Ｉｎｔｅｒｅｓｔパケット及びＤａｔａパケットがこれらのノード間で交換できるようにしても良い。同様に、第１のルートノード１０４は、サーバ１０２及び第２のルートノード１０６を相互接続して、Ｉｎｔｅｒｅｓｔパケット及びＤａｔａパケットがこれらのノード間で交換できるようにしても良い。エッジノード１１０ａ−１１０ｄは、第３のルートノード１０８の下流であると考えられる。第３のルートノード１０８は、第２のルートノード１０６ａの下流であると考えられる。第２のルートノード１０６ａは、第１のルートノード１０４の下流であると考えられる。第１のルートノード１０４は、サーバ１０２の下流であると考えられる。同様に、エッジノード１１０ｅ−１１０ｆは、第２のルートノード１０６ｂの下流であると考えられる。第２のルートノード１０６ｂは、第１のルートノード１０４の下流であると考えられる。第１のルートノード１０４は、サーバ１０２の下流であると考えられる。
【００１６】
ＩＣＮ１００のネットワークトポロジは、３個以上レベルを有しても良い。ＩＣＮ１００の中のノードのレベルは、ノードと第１のルートノード１０４との間、又はノードとサーバ１０２との間、又はノードと特定の他の基準点との間のホップ数により決定されても良い。第２のルートノード１０６は、ＩＣＮ１００の同じレベルにあると考えられ、４個のエッジノード１１０ａ−１１０ｄはＩＣＮ１００の同じレベルにあると考えられる。第３のルートノード１０８は、ＩＣＮ１００の、エッジノード１１０ｅ−１１０ｆと同じレベルにあると考えられる。
【００１７】
ネットワークの第１のルートノード１０４、第２のルートノード１０６、第３のルートノード１０８、及びエッジノード１１０の各々は、ルータを有しても良い。用語「ルータ」は、Ｉｎｔｅｒｅｓｔパケットを受信し及び転送し、及び／又はＤａｔａパケットを受信し及び転送することが可能な任意のネットワーク装置を表しても良い。用語「サーバ」は、Ｉｎｔｅｒｅｓｔパケットを受信し、及びＤａｔａパケットを供給することが可能な任意の装置を表しても良い。第１のルートノード１０４、第２のルートノード１０６、第３のルートノード１０８、エッジノード１１０、及びサーバ１０２は、コンテンツを、又はより一般的には、それぞれ少なくとも１つのコンテンツ名により識別される１又は複数の異なるコンテンツをホスティングしても良い。
【００１８】
エッジノード１１０の各々は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、携帯電話機、スマートフォン、パーソナルデジタルアシスタント（ＰＤＡ）、ウエアラブル装置、又は他のクライアント装置のようなクライアント装置を有しても良く、又はそれに結合されても良い。
【００１９】
ＩＣＮ１００の中で第１のルートノード１０４の下流にあるノードであって、該ノードからコンテンツのＩｎｔｅｒｅｓｔパケットが生じるノードは、本願明細書では「要求ノード」と呼ばれる。エッジノード１１０のうちのいずれも、該ノードからＩｎｔｅｒｅｓｔパケットが発生するとき、要求ノードと呼ばれても良い。Ｉｎｔｅｒｅｓｔパケットが要求ノード１１０から生じると、次に、Ｉｎｔｅｒｅｓｔパケットが、例えば第２のルートノード１０６又は第３のルートノード１０８のような第１のルートノード１０４の下流にあり第１のルートノード１０４への経路上にあるＩＣＮ１００の中のノードからの既に対応するＤａｔａパケットの配信により満たされている場合でも、Ｉｎｔｅｒｅｓｔパケットは、第１のルートノード１０４へルーティングされても良く、第１のルートノード１０４により受信されても良い。Ｉｎｔｅｒｅｓｔパケットは、要求ノード１１０と共に要求されたコンテンツ名を、並びに、例えば第２のルートノード１０６及び／又は第３のルートノード１０８のようなＩｎｔｅｒｅｓｔパケットを第１のルートノード１０４へ転送するいかなるノードを識別し得る。したがって、第１のルートノード１０４は、ＩＣＮ１００のデータコレクタとして動作し、コンテンツがＩＣＮ１００の中の各ノードにより何回要求されているかをアクセス履歴テーブルの中で追跡し続ける。第１のルートノード１０４は、ＩＣＮ１００の中の各ノードにおけるコンテンツの人気を決定するために、アクセス履歴テーブルを用いても良い。幾つかの実施形態では、第２のルートノード１０６及び／又は第３のルートノード１０８を含むＩＣＮ１００の中のノードは、コンテンツが該ノードの下流のノードにより何回要求されたかを、第２のルートノード１０６及び／又は第３のルートノード１０８のうちの対応する１つのアクセス履歴テーブルの中で追跡し続けても良い。
【００２０】
第１のルートノード１０４は、ネットワークの中のＬＰＯＰを２以上の２層ＬＰＯＰに分けても良い。各２層ＬＰＯＰの目的は、ＩＣＮ１００の中の全体のデータダウンロードコストを最小化することであっても良い。各２層ＬＰＯＰは、全体の記憶能力及びリンク能力が限られているとき役に立ち、第１のルートノード１０４と要求ノード１１０との間のダウンリンクの輻輳を回避するよう設計された１又は複数の制約を有しても良い。各２層ＬＰＯＰは、内点又片方向（Interior  Point  or  Simplex）方法を用いて実行されても良い。２層ＬＰＯＰの例示的な実装は、本願と同時に出願された米国特許出願番号第ＸＸ／ＸＸＸ，ＸＸＸ、名称「CONTENT  PLACEMENT  IN  AN  INFORMATION  CENTRIC  NETWORK」に開示される。前述の出願は、参照により本願明細書に組み込まれる。
【００２１】
第１のルートノード１０４は、トップダウンアルゴリズム又はボトムアップアルゴリズムに従って、ネットワークの中のＬＰＯＰを２以上の２層ＬＰＯＰに分けても良い。幾つかの実施形態では、ネットワークは、２以上の下位ネットワークを有しても良く、各下位ネットワークはそれ自身の第１のルートノード１０４を有する。ネットワークの中のＬＰＯＰを２以上の２層最適化問題に分解することは、第１の下位ネットワークにおいてトップダウンアルゴリズムに従って、及び第２の下位ネットワークにおいてボトムアップアルゴリズムに従って、実行されても良い。第１のルートノード１０４は、下位ネットワークのうちの１つにおいて、トップダウンアルゴリズム又はボトムアップアルゴリズムを用いるかを、下位ネットワークの１又は複数のレベルにあるノードの各々における要求統計の類似性に基づき、及び／又は１又は複数の他の基準に基づき、決定しても良い。
【００２２】
図１Ｂは、図１Ａの例示的なＩＣＮを説明する概略図であり、本願明細書に記載の少なくとも１つの実装に従って配置される１又は複数のスーパーリーフ１１２ａ−１１２ｄ（総称的に「スーパーリーフ１１２」又は「複数のスーパーリーフ１１２」）を有する。トップダウンアルゴリズムでは、２層ＬＰＯＰの第１層はルートノードを有しても良く、２層ＬＰＯＰの第２層はスーパーリーフ１１２を有しても良い。各スーパーリーフ１１２は、要求ノード１１０を有しても良い。１つの２層ＬＰＯＰのスーパーリーフ１１２は、ノードのサイズ及び数が、別の２層ＬＰＯＰのスーパーリーフ１１２と異なっても良い。スーパーリーフ１１２は複数のノードを有し、該複数のノードは、先祖として第１のルートノード１０４を有するツリーを形成しても良い。
【００２３】
例えば、スーパーリーフ１１２ａは、第２のルートノード１０６ａ、エッジノード１１０ａ−１１０ｄ、及び第３のルートノード１０８のような、第２のルートノード１０６ａとエッジノード１１０ａ−１１０dとの間にある任意のノードを有しても良い。スーパーリーフ１１２ｂは、第３のルートノード１０８ａ、及びエッジノード１１０ａ−１１０ｂを有しても良い。スーパーリーフ１１２ｃは、第２のルートノード１０６ｂ、及びエッジノード１１０ｅ−１１０ｆを有しても良い。スーパーリーフ１１２ｄは、第３のルートノード１０８ｂ、及びエッジノード１１０ｃ及び１１０ｄを有しても良い。スーパーリーフ１１２ａはＩＣＮ１００の３つのレベルからのノードを有するが、スーパーリーフ１１２ｂ−１１２ｄは、ＩＣＮ１００の２つのレベルからのノードを有する。より一般的には、スーパーリーフ１１２の各々は、ＩＣＮ１００のの２以上のレベルからのノードを有しても良い。
【００２４】
トップダウンアルゴリズムの場合には、各２層ＬＰＯＰの第１層は、ＩＣＮ１００の１つのレベルからのノードを有しても良い。これら及び他の実装では、下位の２層ＬＰＯＰの第１層は、上位の２層ＬＰＯＰの第１層より、ＩＣＮ１００の低いレベルに位置しても良い。例えば、上位の２層ＬＰＯＰの第１層は第１のルートノード１０４を有しても良く、一方で、下位の２層ＬＰＯＰの第１層は第２のルートノード１０６を有しても良い。
【００２５】
第１のルートノード１０４は、例えば要求ノード１１０ａから生じたＩｎｔｅｒｅｓｔパケットを受信しても良い。Ｉｎｔｅｒｅｓｔパケットは、コンテンツ及び要求ノード１１０ａを、並びに、例えば第３のルートノード１０８ａ及び第２のルートノード１０６ａのようなＩｎｔｅｒｅｓｔパケットを第１のルートノード１０４へ転送するいかなるノードを識別し得る。第１のルートノード１０４は、受信したＩｎｔｅｒｅｓｔパケットに従って第１のルートノード１０４のアクセス履歴テーブルを更新しても良い。第１のルートノード１０４は、上位２層ＬＰＯＰを実行しても良い。上位２層ＬＰＯＰは、ＩＣＮ１００の中の各ノードにおけるＩＣＮ１００の各コンテンツの人気に基づくパラメータを有しても良い。
【００２６】
上位２層ＬＰＯＰの第１層、例えば第１のルートノード１０４、及び上位２層ＬＰＯＰの第２層が、スーパーリーフ１１２ａ及びスーパーリーフ１１２ｃを有する場合、上位２層ＬＰＯＰのパラメータは、サーバ１０２からコンテンツを得るためのコスト、第１のルートノード１０４からコンテンツを得るためのコスト、及びスーパーリーフ１１２ａ及び／又はスーパーリーフ１１２ｃからコンテンツを得るためのコスト、も有しても良い。上位２層ＬＰＯＰは、第１のルートノード１０４及びスーパーリーフ１１２ａ及び１１２ｃについての結合記憶限度を示す合計記憶制約値を更に有しても良い。上位２層ＬＰＯＰの解は、第１のルートノード１０４に対する記憶サイズ割り当て、及び第１のルートノード１０４にコンテンツを格納する確率、並びにスーパーリーフ１１２ａ及びスーパーリーフ１１２ｃの各々に対する記憶サイズ割り当て、を有しても良い。上位２層ＬＰＯＰから得られるスーパーリーフ１１２ａ又はスーパーリーフ１１２ｃのための任意のコンテンツ配置解は、無視されても良い。
【００２７】
トップダウン集中型アルゴリズムでは、第１のルートノード１０４は、１又は複数の下位２層ＬＰＯＰを実行しても良い。下位２層ＬＰＯＰは、ＩＣＮ１００の中の各ノードにおけるＩＣＮ１００の各コンテンツの人気に基づくパラメータを有しても良い。下位２層ＬＰＯＰは、合計記憶制約値を更に有しても良い。下位２層ＬＰＯＰの第１層、例えば第２のルートノード１０６ａ、及び下位２層ＬＰＯＰの第２層が、スーパーリーフ１１２ａ及びスーパーリーフ１１２ｄを有する場合、合計記憶制約値は、第２のルートノード１０６、スーパーリーフ１１２ｂ、及びスーパーリーフ１１２ｄの結合に対する記憶限度を示しても良い。上位２層ＬＰＯＰから得られたスーパーリーフ１１２ａに対する記憶サイズ割り当ては、合計記憶制約値として下位２層ＬＰＯＰに渡されても良い。下位２層ＬＰＯＰのパラメータは、スーパーリーフ１１２ｂからコンテンツを得るためのコスト、スーパーリーフ１１２ｄからコンテンツを得るためのコスト、第２のルートノード１０６ａからコンテンツを得るためのコスト、並びに、サーバ１０２及び第１のノード１０４からコンテンツを得るためのコストに基づいても良い、スーパーリーフ１１２ａの外部からコンテンツを得るためのコスト、も有しても良い。上位２層ＬＰＯＰから得た第１のルートノード１０４及びサーバ１０２からコンテンツを得るためのコストは、スーパーリーフ１１２ａからコンテンツを得るためのコストとして、下位２層ＬＰＯＰに渡されても良い。
【００２８】
２以上のノードが、コンテンツの配信経路にあるスーパーリーフ１１２の内部に置かれる場合、スーパーリーフ１１２からコンテンツを得るためのコストは、２以上のノードの各々からコンテンツを得るためのコストを平均化することにより決定されても良い。例えば、要求ノード１１０ａからコンテンツを得るためのコスト及び第３のルートノード１０８ａからコンテンツを得るためのコストは、スーパーリーフ１１２ｂからコンテンツを得るためのコストを決定するために平均化されても良い。
【００２９】
２以上のノードが、コンテンツの配信経路にある、ＩＣＮ１００の中のスーパーリーフ１１２の外部に置かれる場合、スーパーリーフ１１２の外部からコンテンツを得るためのコストは、２以上のノードの各々からコンテンツを得るためのコストを平均化することにより決定されても良い。例えば、スーパーリーフ１１２ａの外部からコンテンツを得るためのコストは、サーバ１０２からコンテンツを得るためのコスト及び第１のルートノード１０４からコンテンツを得るためのコストを平均化することにより決定されても良い。サーバ１０２からコンテンツを得るためのコスト及び第１のルートノード１０４からコンテンツを得るためのコストの両者は、下位２層ＬＰＯＰに渡されても良い。
【００３０】
下位２層ＬＰＯＰの解は、第２のルートノード１０６ａに対する記憶サイズ割り当て、並びに、コンテンツを格納するよう第２のルートノード１０６ａに示すためにコンテンツのＤａｔａパケットの中のキャッシュフラグを設定する確率、を有しても良い。下位２層ＬＰＯＰの解は、スーパーリーフ１１２ｂのための記憶サイズ割り当て、及びスーパーリーフ１１２ｄのための記憶サイズ割り当て、も有しても良い。下位２層ＬＰＯＰから得られるスーパーリーフ１１２ｂ又はスーパーリーフ１１２ｄのための任意のコンテンツ配置解は、無視されても良い。
【００３１】
トップダウン分散型アルゴリズムでは、第１のノード１０４が下位２層ＬＰＯＰを実行する代わりに、第１のノード１０４は、上位２層ＬＰＯＰから得られた記憶及び１又は複数のコスト値を、ＩＣＮ１００の中の別のルートノードへ転送して、ルートノードが、記憶及びコスト値が渡される下位２層最適化を解決できるようにしても良い。ルートノードは、第１のルートノード１０４の下流にあっても良い。ルートノードは、ルートノードの下流の各ノードにおけるネットワークの各コンテンツの人気に基づきＬＰＯＰを実行するために、コンテンツがノードの下流にあるノードにより何回要求されたかを、ルートノードのアクセス履歴テーブルの中で追跡しても良い。
【００３２】
集中型及び分散型トップダウンアルゴリズムの両者で、下位２層ＬＰＯＰがスーパーリーフ１１２ａを有するとき、スーパーリーフ１１２が２以上のレベルを有する場合、下位２層ＬＰＯＰは、上位２層ＬＰＯＰになっても良く、合計記憶制約値及び１又は複数のコスト値を別の下位２層ＬＰＯＰに渡す。記憶値は、合計記憶制約値を有しても良く、コスト値のうちの１つは、他の下位２層ＬＰＯＰのスーパーリーフの外部からコンテンツを得るコストを有しても良い。第１のノード１０４は、２層ＬＰＯＰの第１層のルートノードを前に実行した２層ＬＰＯＰの第１層のルートノードより低いＩＣＮ１００のレベルに移動することにより、ＩＣＮ１００の中の最適化問題を、次第に小さくなるスーパーリーフ１１２を有する２層ＬＰＯＰに分解しても良い。前に実行した２層ＬＰＯＰから得た記憶値及び１又は複数のコスト値は、より小さなスーパーリーフ１１２を有する下位２層ＬＰＯＰに渡されても良い。
【００３３】
２層ＬＰＯＰの第２層は、１又は複数のエッジノード１１０のみを有しても良い。２層ＬＰＯＰの第２層が１又は複数のエッジノード１１０のみを有することに応答して、第１のルートノード１０４は、１又は複数のエッジノード１１０及び２層ＬＰＯＰのルートノードに対する記憶サイズ割り当て、並びに１又は複数のエッジノード１１０及びルートノードにコンテンツを格納するよう示すためにコンテンツのＤａｔａパケットの中のキャッシュフラグを設定する確率を得るために、２層ＬＰＯＰを解いても良い。
【００３４】
図１Ｃは、本願明細書に記載の少なくとも１つの実装に従って配置される、１又は複数のスーパーペアレントを含む、図１Ａの例示的なＩＣＮを説明する概略図である。ボトムアップアルゴリズムでは、２層ＬＰＯＰの第１層は、スーパーペアレント１１６ａ−１１６ｂ（総称的に「スーパーペアレント１１６」又は「複数のスーパーペアレント」）を有しても良く、２層ＬＰＯＰの第２層は、スーパーペアレント１１６より低い、ＩＣＮ１００の１つのレベルのノードを有しても良い。例えば、２層ＬＰＯＰの第１層は、スーパーペアレント１１６ａを有しても良く、２層ＬＰＯＰの第２層はエッジノード１１０ａ−１１０ｄを有しても良い。各スーパーペアレント１１６は、第１のルートノード１０４を有しても良い。１つの２層ＬＰＯＰのスーパーペアレント１１６は、サイズ及びレベルの数が、別の２層ＬＰＯＰのスーパーペアレント１１６と異なっても良い。スーパーペアレント１１６は、ツリーを形成する複数のノードを有しても良い。スーパーペアレント１１６ａは、第１のルートノード１０４、第２のルートノード１０６、及び第３のルートノード１０８を含む、ＩＣＮ１００の３つのレベルを有しても良い。一方、スーパーペアレント１１６ｂは、図１に示すように、第１のルートノード１０４及び第２のルートノード１０６を含む、ＩＣＮ１００の２つのレベルのみを有しても良い。エッジノード１１０ｅ−１１０ｆのうちの１つは、要求ノードであっても良い。
【００３５】
下位の２層ＬＰＯＰの第２層は、上位の２層ＬＰＯＰの第２層より、ＩＣＮ１００の低いレベルに位置しても良い。例えば、下位２層ＬＰＯＰの第２層はエッジノード１１０ａ−１１０ｆを有しても良く、一方、上位２層ＬＰＯＰの第２層は、エッジノード１１０ａ−１１０ｆより高いレベルに位置する第３のルートノード１０８ａ−１０８ｂを有しても良い。
【００３６】
第１のルートノード１０４は、例えば要求ノード１１０ａから生じたＩｎｔｅｒｅｓｔパケットを受信しても良い。Ｉｎｔｅｒｅｓｔパケットは、コンテンツ及び要求ノード１１０ａを、並びに、例えば第３のルートノード１０８ａ及び第２のルートノード１０６ａのようなＩｎｔｅｒｅｓｔパケットを第１のルートノード１０４へ転送するいかなるノードを識別し得る。第１のルートノード１０４は、受信したＩｎｔｅｒｅｓｔパケットに従って第１のルートノード１０４のアクセス履歴テーブルを更新しても良い。第１のルートノード１０４は、下位２層ＬＰＯＰを実行しても良い。下位２層ＬＰＯＰは、ＩＣＮ１００の中の各ノードにおけるＩＣＮ１００の各コンテンツの人気に基づくパラメータを有しても良い。
【００３７】
下位２層ＬＰＯＰの第１層、例えばスーパーペアレント１１６ａ、及び下位２層ＬＰＯＰの第２層が、エッジノード１１０ａ−１１０ｄを有する場合、下位２層ＬＰＯＰのパラメータは、サーバ１０２からコンテンツを得るためのコスト、スーパーペアレント１１６ａからコンテンツを得るためのコスト、及びエッジノード１１０ａ−１１０ｆからコンテンツを得るためのコスト、も有しても良い。下位２層ＬＰＯＰは、エッジノード１１０ａ−１１０ｆ及びスーパーペアレント１１６ａの結合についての記憶限度を示す合計記憶制約値を更に有しても良い。下位２層ＬＰＯＰの解は、スーパーペアレント１１６ａの外側エッジに位置するエッジノード１１０ａ−１１０ｆに対する記憶サイズ割り当て、及びエッジノード１１０ａ−１１０ｆにコンテンツを格納するよう指示するためにコンテンツのＤａｔａパケットの中のキャッシュフラグを設定する確率、並びに、スーパーペアレント１１６ａに対する記憶サイズ割り当て、を有しても良い。下位２層ＬＰＯＰから得られるスーパーペアレント１１６ａのための任意のコンテンツ配置解は、無視されても良い。
【００３８】
第１のルートノード１０４は、上位２層ＬＰＯＰを実行しても良い。上位２層ＬＰＯＰは、ＩＣＮ１００の中の各ノードにおけるＩＣＮ１００の各コンテンツの人気に基づくパラメータを有しても良い。代替で、上位２層ＬＰＯＰは、コンテンツカタログに列挙された要求されたコンテンツの各々の人気に基づくパラメータを有しても良い。コンテンツカタログは、ＩＣＮ１００の中のコンテンツを複製するのを回避するために、前の下位２層ＬＰＯＰの解に従って、格納されるべきであると決定されたコンテンツを削除するよう更新されても良い。
【００３９】
上位２層ＬＰＯＰは、合計記憶制約値を更に有しても良い。上位２層ＬＰＯＰの第１層は、例えばスーパーペアレント１１６ｂを有し、上位２層ＬＰＯＰの第２層は、第３のルートノード１０８ａ−１０８ｂを含むＩＣＮ１００の第３レベルのノードを有し、合計記憶制約値は、スーパーペアレント１１６ｂ及び第３のルートノードの結合記憶限度を示しても良い。下位２層ＬＰＯＰから得られたスーパーペアレント１１６ａに対する記憶割り当ては、合計記憶制約値として上位２層ＬＰＯＰに渡されても良い。上位２層ＬＰＯＰのパラメータは、スーパーペアレント１１６ｂからコンテンツを得るためのコスト、サーバ１０２からコンテンツを得るためのコスト、並びに、第３のルートノード１０８ａ−１０８ｂ及びエッジノード１１０ａ−１１０ｆからコンテンツを得るためのコストを含み得る、スーパーペアレント１１６ｂの下流及び外部からコンテンツを得るためのコスト、を有しても良い。サーバ１０２からコンテンツを得るためのコスト及び第３のルートノード１０８ａ−１０８ｂ及びエッジノード１１０ａ−１１０ｆからコンテンツを得るためのコストは、下位レベルの２層ＬＰＯＰから上位２層ＬＰＯＰに渡されても良い。
【００４０】
上位２層ＬＰＯＰの解は、第３のルートノード１０８ａ−１０８ｂに対する記憶サイズ割り当て、並びに、コンテンツを格納するよう第３のルートノード１０８ａ−１０８ｂに示すためにコンテンツのＤａｔａパケットの中のキャッシュフラグを設定する確率、を有しても良い。上位２層ＬＰＯＰの解は、スーパーペアレント１１６ｂに対する記憶サイズ割り当ても有しても良い。上位２層ＬＰＯＰから得られるスーパーリーフ１１６ｂのための任意のコンテンツ配置解は、無視されても良い。
【００４１】
上位２層ＬＰＯＰがスーパーペアレント１１６を有するとき、スーパーペアレント１１６が２以上のレベルを有する場合、上位２層ＬＰＯＰは、下位２層ＬＰＯＰになっても良く、合計記憶制約値及び１又は複数のコスト値を別の上位２層ＬＰＯＰに渡す。第１のノード１０４は、２層ＬＰＯの第２層を前に実行した２層ＬＰＯの第２層より高いＩＣＮ１００のレベルに移動することにより、ＩＣＮ１００の中の最適化問題を、次第に小さくなるスーパーペアレント１１６を有する２層ＬＰＯに分解しても良い。前に実行した２層ＬＰＯから得た記憶値及び１又は複数のコスト値は、より小さなスーパーペアレント１１６を有する上位２層ＬＰＯに渡されても良い。
【００４２】
２層ＬＰＯＰの第１層は、２以上のレベルを有するスーパーペアレントの代わりに、第１のルートノード１０４を有しても良い。２層ＬＰＯＰの第１層が第１のルートノード１０４のみを有することに応答して、第１のルートノード１０４は、２層ＬＰＯＰを解いて、第１のルートノード１０４及び第２のルートノード１０６ａ−１０６ｂに対する記憶サイズ割り当て、並びに、第１のルートノード１０４及び第２のルートノード１０６ａ−１０６ｂにコンテンツを格納するよう指示するためにコンテンツのＤａｔａパケットの中のキャッシュフラグを設定する確率、を得ても良い。
【００４３】
トップダウン及びボトムアップアルゴリズムの両方を用いて、ネットワークの中で要求されたコンテンツは、ネットワーク内に配置されても良く、記憶サイズは、ネットワークの中の要求ノードへのよりコスト効率の良いコンテンツ配信を提供するために割り当てられても良い。
【００４４】
前述の実装のために、ＩＣＮ１００のノードの各々は、ＰＩＴ（pending  interest  table、未解決Ｉｎｔｅｒｅｓｔテーブル）、ＦＩＢ（forwarding  information  base、情報転送ベース）、及びＣＣ（content  cache、コンテンツキャッシュ）を備えるルータを有し、転送、配信、及びＩｎｔｅｒｅｓｔパケットの記録を含む記憶タスクを実行しても良い。図２Ａは、本願明細書に記載の少なくとも１つの実装に従って配置される標準的なＩＣＮの３つの例示的なデータ構造の概略図である。３つのデータ構造は、ＣＣ２００、ＰＩＴ２０１、及びＦＩＢ２０２を有する。
【００４５】
ＣＣ２００は、Ｉｎｔｅｒｅｓｔパケットを対応するＤａｔａパケットに関連付けても良い。例えば、ＣＣ２００は、各々の受信したＩｎｔｅｒｅｓｔパケットを示す「Name（名前）」欄と、ルータにおいて受信されキャッシュされ得る対応するＤａｔａパケットを示す「Data（データ）」欄と、を有しても良い。
【００４６】
ＰＩＴ２０１は、各々のＩｎｔｅｒｅｓｔパケットを１又は複数の要求側インタフェースに関連付けることにより、（対応する要求されたＤａｔａパケットが受信されるまで）供給され又は保留されている各々の受信したＩｎｔｅｒｅｓｔパケットを記録し追跡しても良い。要求側インタフェースは、例えば、要求ノード１１０、第３のルートノード１０８、及び／又は第２のルートノード１０６のうちの１又は複数に、固定（有線）リンク、無線リンク、ネットワーク、インターネット、及び／又は他のコンポーネント若しくはシステムを介して結合されても良い。例えば、ＰＩＴ２０１は、各々のＩｎｔｅｒｅｓｔパケットを示す「Prefix（プレフィックス）」欄と、Ｉｎｔｅｒｅｓｔパケットの１又は複数の要求側インタフェース、例えば図２Ａの「要求側フェース０」を示す「Requesting  Face（要求側フェース）」欄と、を有しても良い。
【００４７】
ＦＩＢ２０２は、各々のＩｎｔｅｒｅｓｔパケットを、Ｉｎｔｅｒｅｓｔパケットが転送され得る対応する転送インタフェースに関連付けても良い。転送インタフェースは、例えば、第３のルートノード１０８、第２のルートノード１０６、及び／又は第１のルートノード１０４のうちの１又は複数に、固定（有線）リンク、無線リンク、ネットワーク、インターネット、及び／又は他のコンポーネント若しくはシステムを介して結合されても良い。例えば、ＦＩＢ２０２は、各々のＩｎｔｅｒｅｓｔパケットを示す「Name（名前）」欄と、対応する転送インタフェースを示す「Face（フェース）」欄と、を有しても良い。要求側インタフェースは、本願明細書では、「第１のインタフェース」と称されても良く、転送インタフェースは、本願明細書では、「第２のインタフェース」と称されても良い。ＣＣ２００、ＰＩＴ２０１、及びＦＩＢ２０２は、図３に関して更に詳細に説明される。
【００４８】
ＣＣ２００、ＰＩＴ２０１、及びＦＩＢ２０２に加えて、ＩＣＮ１００の第１、第２、及び第３のルートノード１０４、１０６、１０８の各々は、アクセス履歴テーブル、解テーブル、及びコンテンツカタログを備えるルータを有しても良い。アクセス履歴テーブルは、ＩＣＮ１００の中の１又は複数のノードにより、コンテンツが何回アクセスされたかを追跡するために用いられても良い。解テーブルは、線形計画最適化を実行することから得られたコンテンツ配置解を有しても良く、ＩＣＮ１００の中のどこにコンテンツが格納されたかを追跡するために用いられても良い。図２Ｂは、本願明細書に記載の少なくとも１つの実装に従って配置される、図１Ａ〜１Ｃの第１のルートノード１０４にある例示的な解テーブル（Solution  Table）２０３及びアクセス履歴テーブル（Access  History  Table）２０４の概略図である。ＩＣＮ１００の中の１又は複数のルータの名称は、「Router  ID（ルータＩＤ）」欄の下で、解テーブル２０３の１つの行に入力されても良い。線形計画最適化から得られた、ルータの各々においてキャッシュされるべきコンテンツのリストは、「Content  Placement  Solution（コンテンツ配置解）」欄の下で、解テーブル２０３の同じ行に入力されても良い。解テーブル２０３は、ＩＣＮ１００の中のルータの各々のルータＩＤを有しても良い。アクセス履歴テーブル２０４は、ＩＣＮ１００の中の１又は複数のルータの名称を示す「Client（クライアント）（Router  ID）」欄と、１又は複数のルータの各々が要求したコンテンツを示す「Access  History（アクセス履歴）」欄と、を有しても良い。
【００４９】
第１のルートノード以外のＩＣＮ１００の中のルートノードは、トップダウン分散型アルゴリズムが用いられるとき、アクセス履歴テーブル２０４及び解テーブル２０３を有しても良い。アクセス履歴テーブルは、ネットワークの各コンテンツがルートノードの下流の各ノードにおいて何回アクセスされたかを追跡するために用いられても良い。解テーブルは、線形計画最適化を実行することから得られたコンテンツ配置解を有しても良く、ルートノードの下流にあるノードのうちのどこにコンテンツが格納されたかを追跡するために用いられても良い。
【００５０】
図１及び２Ａを合わせて参照すると、上述及び他の実装では、第１のルートノードの下流のノードが要求ノード１１０からＩｎｔｅｒｅｓｔパケットを受信するが、対応するＤａｔａパケットが該ノードのＣＣ２００に無い場合、要求ノード１１０から第１のルートノード１０４への経路にある次のノードがそのノードのＣＣ２００を調べても良い。Ｄａｔａパケットが、要求ノード１１０からの経路にあるいずれのノードのＣＣ２００の中にも存在しない場合、第１のルートノード１０４は、Ｉｎｔｅｒｅｓｔパケットをサーバ１０２へ転送する前に、自身のＣＣ２００を調べても良い。要求ノード１１０から第１のルートノード１０４への経路でのデータの検索し、自身のＣＣ２００の中にデータパケットを有する第１のノードからＤａｔａパケットを返す処理は、「経路検索」と称されても良い。トップダウン及びボトムアップアルゴリズムは、経路検索と互換性がある。
【００５１】
図３は、本願明細書に記載の少なくとも１つの実装に従って配置される例示的なＩＣＮルータシステム（以後、「システム３００」）を説明するブロック図である。システム３００は、ノードのネットワークの配信経路に沿ったコンテンツ配置のために構成されても良く、コンピューティング装置又はシステムとして実装されても良い。
【００５２】
システム３００は、図１の要求ノード１１０、第３のルートノード１０８、第２のルートノード１０６、及び／又は第１のルートノード１０４のうちの任意の１つを有し又はそれに対応しても良い。例えば、要求ノード１１０、第３のルートノード１０８、第２のルートノード１０６、及び／又は第１のルートノード１０４のうちの１又は複数はシステム３００として実装されても良い。システム３００は、本願明細書に記載のような、ルータ又はルーティング装置又はルーティングの可能な他の装置として実装されても良い。
【００５３】
システム３００は、幾つかの例に応じて、キャッシュマネジャアプリケーション３０１、プロセッサ装置３０７、第１のインタフェース３１０、第２のインタフェース３１３、記憶装置３１５、及びメモリ３０８を有しても良い。システム３００のコンポーネントは、バス３１７により通信可能に結合されても良い。バス３１７は、メモリバス、記憶装置インタフェースバス、バス／インタフェース制御部、インタフェースバス、等、又はそれらの任意の組み合わせを含み得るが、これらに限定されない。
【００５４】
プロセッサ装置３０７は、本願明細書に記載の動作を実行する又はその性能を制御するためのＡＬＵ（arithmetic  logic  unit）、マイクロプロセッサ、汎用制御部、又は何らかの他のプロセッサアレイを有する。プロセッサ装置３０７は、データ信号を処理し、ＣＩＳＣ（complex  instruction  set  computer）アーキテクチャ、ＲＩＳＣ（reduced  instruction  set  computer）アーキテクチャ、又は命令セットの組合せを実施するアーキテクチャを含む種々のコンピューティングアーキテクチャを有しても良い。図３は単一プロセッサ装置３０７を有するが、複数のプロセッサ装置が含まれても良い。他のプロセッサ、オペレーティングシステム、及び物理構成も可能であり得る。
【００５５】
メモリ３０８は、プロセッサ装置３０７により実行され及び／又はそれにより操作され得る命令及び／又はデータを格納する。命令又はデータは、本願明細書に記載の動作を実行する又はその性能を制御するために、プロセッサ装置３０７により実行され得るプログラミングコードを有しても良い。命令又はデータは、図２ＡのＣＣ２００、ＰＩＴ２０１、及び／又はＦＩＢ２０２、及び／又は図２Ｂのアクセス履歴テーブル２０４及び／又は解テーブル２０３、及び／又はコンテンツカタログ３１８を有しても良い。命令又はデータは、システム３００が図１の第１のルートノード１０４を有するとき、又はシステム３００がトップダウン分散型アルゴリズムで用いられる別のルートノードを有するとき、アクセス履歴テーブル２０４及び／又は解テーブル２０３を有しても良い。メモリ３０８は、ＤＲＡＭ（dynamic  random  access  memory）素子、ＳＲＡＭ（static  random  access  memory）素子、フラッシュメモリ又は何らかの他のメモリ素子を有しても良い。幾つかの実装では、メモリ３０８は、不揮発性メモリ、又はハードディスクドライブ、フロッピディスクドライブ、ＣＤ−ＲＯＭ装置、ＤＶＤ−ＲＯＭ装置、ＤＶＤ−ＲＡＭ装置、ＤＶＤ−ＲＷ装置、フラッシュメモリ装置又は従来知られているより永久的に情報を格納する特定の他の大容量記憶装置を含む同様の永久記憶装置及び媒体も有しても良い。
【００５６】
第１のインタフェース３１０は、図２Ａに関して説明したように、少なくとも１つの要求ノード、第３のルートノード、及び／又は第２のルートノードからＩｎｔｅｒｅｓｔパケットを受信し及びそれらへＤａｔａパケットを送信するよう構成される。例えば、第１のインタフェース３１０は、図１の要求ノード１１０、第３のルートノード１０８、第２のルートノード１０６、及び／又は第１のルートノード１０４からＩｎｔｅｒｅｓｔパケットを受信し及びそれらへＤａｔａパケットを送信するよう構成されても良い。
【００５７】
第２のインタフェース３１３は、図２Ａに関して説明したように、少なくとも１つの第３のルートノード、第２のルートノード、及び／又は第１のルートノードへＩｎｔｅｒｅｓｔパケットを転送し及びそれらからＤａｔａパケットを受信するよう構成される。例えば、第２のインタフェース３１３は、図１の第３のルートノード１０８、第２のルートノード１０６、及び／又は第１のルートノード１０４へＩｎｔｅｒｅｓｔパケットを転送し及びそれらからＤａｔａパケットを受信するよう構成されても良い。
【００５８】
幾つかの実装では、第１及び第２のインタフェース３１０、３１３は、図１のＩＣＮ１００の中の他のノード又は別の通信チャネルへの直接物理接続のためのポートを有する。例えば、第１及び第２のインタフェース３１０、３１３は、ＵＳＢ（universal  serial  bus）ポート、ＳＤ（secure  digital）ポート、ＣＡＴ−５（category  ５）ポート、又は図１Ａ〜１Ｃのコンポーネント１０２、１０４、１０６、１０８、１１０のうちの少なくとも１つとの有線通信のための類似のポートを有しても良い。幾つかの実装では、第１及び第２のインタフェース３１０、３１３は、図１Ａ〜１Ｃのコンポーネント１０２、１０４、１０６、１０８、１１０のうちの少なくとも１つとデータを交換する無線トランシーバ、又はＩＥＥＥ８０２．１１、ＩＥＥＥ８０２．１６、Ｂｌｕｅｔｏｏｔｈ（登録商標）、若しくは別の適切な無線通信方法を含む１又は複数の無線通信方法を用いる他の通信チャネルを有する。
【００５９】
幾つかの実装では、第１及び第２のインタフェース３１０、３１３は、ＳＭＳ（short  messaging  service）、ＭＭＳ（multimedia  messaging  service）、ＨＴＴＰ（hypertext  transfer  protocol）、直接データ接続、ＷＡＰ（wireless  application  protocol）、電子メール又は他の適切な種類の電子通信を介することを含むセルラネットワークでデータを送信及び受信するセルラ通信トランシーバを有する。幾つかの実装では、第１及び第２のインタフェース３１０、３１３は、有線ポート及び無線トランシーバを有しても良い。第１及び第２のインタフェース３１０、３１３は、ＴＣＰ／ＩＰ（transmission  control  protocol/internet  protocol）、ＨＴＴＰ、ＨＴＴＰセキュア（ＨＴＴＰＳ）、及びＳＭＴＰ（simple  mail  transfer  protocol）等を含む標準ネットワークプロトコルを用いてファイル又はメディアオブジェクトの配信のためにＩＣＮ１００又はそのコンポーネントへの他の接続を提供しても良い。
【００６０】
記憶装置３１５は、本願明細書に記載の機能を提供するために命令及び／又はデータを格納する非一時的記憶媒体を有しても良い。記憶装置３１５は、ＤＲＡＭ（dynamic  random  access  memory）素子、ＳＲＡＭ（static  random  access  memory）素子、フラッシュメモリ又は何らかの他のメモリ素子を有しても良い。幾つかの実装では、記憶装置３１５は、不揮発性メモリ、又はハードディスクドライブ、フロッピディスクドライブ、ＣＤ−ＲＯＭ装置、ＤＶＤ−ＲＯＭ装置、ＤＶＤ−ＲＡＭ装置、ＤＶＤ−ＲＷ装置、フラッシュメモリ装置又は従来知られているより永久的に情報を格納する特定の他の大容量記憶装置を含む同様の永久記憶装置及び媒体も有しても良い。記憶装置３１５は、メモリ３０８に一時的に格納される又はロードされる命令及び／又はデータを格納しても良い。
【００６１】
図３に示すように、キャッシュマネジャアプリケーション３０１は、コンテンツキャッシュモジュール３０３（以後「ＣＣ（Content  Cache）モジュール３０3」）、未解決Ｉｎｔｅｒｅｓｔテーブルモジュール（以後「ＰＩＴ（Pending  Interest  Table）モジュール３０５」）、転送情報ベースモジュール３０２（以後「ＦＩＢ（forwarding  information  base）モジュール３０２」）、意志決定モジュール３０４（以後「ＤＭ（decision  maker）モジュール３０４」）、及び通信モジュール３０６、本願明細書ではこれらを総称して「モジュール３０９」と表す、のうちの少なくとも１つを有しても良い。モジュール３０２〜３０６を含むキャッシュマネジャアプリケーション３０１は、通常、本願明細書に記載の機能及び動作を実行し又はその性能を制御するために、プロセッサ装置３０７により実行可能なプログラミングコード及び／又はコンピュータ可読命令を有するソフトウェアを含み得る。モジュール３０２〜３０６のうちの１又は複数を含むキャッシュマネジャアプリケーション３０１は、システム３００のコンポーネントのうちの１又は複数からデータを受信しても良く、及び／又は記憶装置３１５及びメモリ３０８のうちの一方又は両方にデータを格納しても良い。
【００６２】
ＣＣモジュール３０３は、通常、ここで詳述されるように、図１の要求ノード１１０、第３のルートノード１０８、第２のルートノード１０６及び／又は第１のルートノード１０４のような要求ノード及びルートノードに格納され得る対応するＤａｔａパケットに、Ｉｎｔｅｒｅｓｔパケットを関連付けるよう構成されても良い。この及び他の実装では、ＣＣモジュール３０３は、ＣＣ２００からデータを読み出し及び／又はそれにデータを書き込んでも良い。
【００６３】
ＰＩＴモジュール３０５は、ここで詳述するように、各々のＩｎｔｅｒｅｓｔパケットを１又は複数の受信インタフェースに関連付けることにより、（対応する要求されたＤａｔａパケットが受信されるまで）供給され又は保留されている各々の受信したＩｎｔｅｒｅｓｔパケットを記録し追跡するよう構成されても良い。上述の及び他の実装では、ＰＩＴモジュール３０５は、ＰＩＴ２０１からデータを読み出し及び／又はそれにデータを書き込んでも良い。
【００６４】
ここで詳述されるように、ＦＩＢモジュール３０２は、Ｉｎｔｅｒｅｓｔパケットが転送される１又は複数の対応するインタフェースに、Ｉｎｔｅｒｅｓｔパケットを関連付けるよう構成されても良い。ＦＩＢモジュール３０２は、ＦＩＢ２０２からデータを読み出し及び／又はそれにデータを書き込んでも良い。
【００６５】
システム３００がトップダウン若しくはボトムアップアルゴリズムで使用される第１のルートノード又はトップダウン分散型アルゴリズムで使用される別のルートノードを有するとき存在し得るＤＭモジュール３０４は、１又は複数のＬＰＯＰを実行して、サブネットワークの中でデータダウンロードの合計コストを最小化するために、ネットワークの１又は複数のノードにおいて記憶サイズをどのように割り当てるか及び／又はネットワークの中のコンテンツの各々をどこに配置するかを決定するよう構成されても良い。１又は複数のＬＰＯＰの解に基づき、ＤＭモジュール４０４は、ネットワークの中の１又は複数のノードにコンテンツをキャッシュすることを知らせるために、コンテンツのＤａｔａパケットの中の１又は複数のキャッシュフラグを設定するよう構成されても良い。さらに、ＤＭモジュール４０４は、前の最適化の解に従って格納されるべきであると決定されたコンテンツを削除するために、コンテンツカタログを更新するよう構成されても良い。
【００６６】
通信モジュール３０６は、モジュール３０２〜３０５とシステム３００の他のコンポーネントとの間の通信を処理するルーチンを含むソフトウェアとして実装されても良い。キャッシュマネジャアプリケーション３０１が図１Ａ〜１Ｃの第１のルートノード又はトップダウン分散型アルゴリズムで使用される別のルートノードに実装されるとき、通信モジュール３０６は、第１及び第２のインタフェース３１０及び３１３を介して、図１Ａ〜１Ｃのコンポーネント１０２、１０４、１０６、１０８、１１０のうちの１又は複数へデータを送信し及びそれらからデータを受信する。幾つかの実装では、通信モジュール３０６は、モジュール３０２〜３０５のうちの１又は複数からデータを受信し、記憶装置３１５及びメモリ３０８のうちの１又は複数にデータを格納する。幾つかの実装では、通信モジュール３０６は、記憶装置３１５又はメモリ３０８からデータを読み出し、該データをモジュール３０２〜３０５のうちの１又は複数に送信する。
【００６７】
図４は、本願明細書に記載の少なくとも１つの実装に従って配置される、トップダウンアルゴリズムにおけるコンテンツ配置及び記憶割り当て方法４００を説明する例示的なフロー図である。方法４００は、全体的に又は部分的に、図１Ａ〜１Ｃの１又は複数の第１のルートノード１０４、又は別の適切なネットワークノード、ＩＣＮルータ、及び／又はシステムにより実装されても良い。トップダウン分散型アプローチでは、方法４００は、全体的に又は部分的に、図１のＩＣＮ１００の２以上のルートノードにより実装されても良い。方法４００はブロック４０１で開始し得る。
【００６８】
ブロック４０１で、ルートノードは、ネットワークの中のＬＰＯＰを、上位２層ＬＰＯＰと１又は複数の下位２層ＬＰＯＰとに分解しても良い。ネットワークは、３以上のレベルを有しても良い。ルートノードは、トップダウン分散型アルゴリズムで使用される別のルートノード、又はトップダウン若しくはボトムアップアルゴリズムの第１のルートノードを有しても良い。ブロック４０１の次にブロック４０２が続いても良い。
【００６９】
ブロック４０２で、ルートノードは、２層ＬＰＯＰの第２層が１又は複数のエッジノード１１０のみを有するかどうかを決定しても良い。２層ＬＰＯＰは、ブロック４０１の上位２層ＬＰＯＰ、又はブロック４０４に関して言及される１又は複数の下位２層ＬＰＯＰの各々を有しても良い。２層ＬＰＯＰの第２層が１又は複数のエッジノードのみを有するものではない場合（ブロック４０２で「Ｎｏ」）、ブロック４０２の次にブロック４０３が続いても良い。２層ＬＰＯＰの第２層が１又は複数のエッジノードのみを有する場合（ブロック４０２で「Ｙｅｓ」）、ブロック４０２の次にブロック４０５が続いても良い。
【００７０】
ブロック４０３で、２層ＬＰＯＰの第２層がエッジノードのみを有するものではないことに応答して、ルートノードは、２層ＬＰＯＰの第１層ルートノードに対するコンテンツ配置及び記憶サイズ割り当てを決定しても良い。ルートノードは、１又は複数の下位２層ＬＰＯＰの各々に渡すために、合計記憶制約値も決定しても良い。さらに、ルートノードは、第１層ルートノード及び第１層ルートノードの上流の１又は複数のノードから要求したコンテンツを得るためのコストを決定しても良い。ブロック４０３の次にブロック４０４が続いても良い。
【００７１】
ブロック４０４で、ルートノードは、２層ＬＰＯＰから得た制約値と１又は複数のコスト値を、１又は複数の下位２層ＬＰＯＰの各々に渡しても良い。コスト値は、第１層ルートノードからコンテンツを得るためのコストと、第１層ルートノードより上流にある１又は複数のノードからコンテンツを得るためのコストと、を有しても良い。第１層ノードより上流のノードのうちの１つは、サーバを有しても良い。ブロック４０４の後に、１又は複数の下位２層ＬＰＯＰの各々について、ブロック４０２、４０３、４０４、４０５、及び／又は４０６が続いても良い。
【００７２】
ブロック４０５で、下位２層ＬＰＯＰが１又は複数のエッジノードのみを有することに応答して、ルートノードは、第１層ルートノード及び１又は複数のエッジノードに対するコンテンツ配置を決定しても良い。ルートノードは、第１層ルートノード及び１又は複数のエッジノードに対する記憶サイズ割り当ても決定しても良い。ブロック４０５の次にブロック４０６が続いても良い。
【００７３】
ブロック４０６で、ルートノードは、追加ＬＰＯＰを実行するのを停止しても良い。
【００７４】
当業者は、この処理及び本願明細書に開始した他の処理及び方法において、その処理及び方法で実行される機能が異なる順序で実施されても良いことを理解するだろう。さらに、概略のステップ及び動作は、単に例として提供され、幾つかのステップ及び動作は、開示の実装の本質から逸脱することなく、任意であり、より少ないステップ及び動作に組み合わされ、又は追加ステップ及び動作に拡張されても良い。
【００７５】
図５は、本願明細書に記載の少なくとも１つの実装に従って配置される、ボトムアップアルゴリズムにおけるコンテンツ配置及び記憶割り当て方法５００を説明する例示的なフロー図である。方法５００は、全体的に又は部分的に、図１Ａ〜１Ｃの１又は複数の第１のルートノード１０４、又は別の適切なネットワークノード、ＩＣＮルータ、及び／又はシステムにより実装されても良い。方法５００はブロック５０１で開始し得る。
【００７６】
ブロック５０１で、第１のルートノードは、ネットワークの中のＬＰＯＰを、下位２層ＬＰＯＰと１又は複数の上位２層ＬＰＯＰとに分解しても良い。ネットワークは、３以上のレベルを有しても良い。ブロック５０１の次にブロック５０２が続いても良い。
【００７７】
ブロック５０２で、第１のルートノードは、２層ＬＰＯＰの第１層が第１のルートノードのみを有するかどうかを決定しても良い。２層ＬＰＯＰは、ブロック５０１の下位２層ＬＰＯＰ、又はブロック５０４に関して言及される１又は複数の上位２層ＬＰＯＰの各々を有しても良い。２層ＬＰＯＰの第１層が第１のルートノードのみを有するものではない場合（ブロック５０２で「Ｎｏ」）、ブロック５０２の次にブロック５０３が続いても良い。２層ＬＰＯＰの第１層が第１のルートノードのみを有する場合（ブロック５０５で「Ｙｅｓ」）、ブロック５０２の次にブロック５０５が続いても良い。
【００７８】
ブロック５０３で、２層ＬＰＯＰの第１層が第１のルートノードのみを有するものではないことに応答して、第１のルートノードは、スーパーペアレントの外側エッジにある１又は複数のノードに対するコンテンツ配置及び記憶サイズ割り当てを決定しても良い。第１のルートノードは、１又は複数の上位２層ＬＰＯＰの各々に渡すために、合計記憶制約値も決定しても良い。さらに、第１のルートノードは、下流及びスーパーペアレントの外部から、要求されたコンテンツを得るためのコストを決定しても良い。ブロック５０３の次にブロック５０４が続いても良い。
【００７９】
ブロック５０４で、第１のルートノードは、２層ＬＰＯＰから得た制約値と、１又は複数のコスト値とを、１又は複数の上位２層ＬＰＯＰの各々に渡しても良い。コスト値は、スーパーペアレントの下流及び外部からコンテンツを得るためのコスト、及び／又はサーバを有しても良い第１のルートノードより上流にある１又は複数のノードからコンテンツを得るためのコスト、を有しても良い。ブロック５０４の後に、１又は複数の上位２層ＬＰＯＰの各々について、ブロック５０２、５０３、５０４、５０５、及び／又は５０６が続いても良い。
【００８０】
ブロック５０５で、２層ＬＰＯＰの第１層が第１のルートノードのみを有することに応答して、第１のルートノードは、第１のルートノード及び第２のルートノードに対するコンテンツ配置及び記憶サイズ割り当てを決定しても良い。ブロック５０５の次にブロック５０６が続いても良い。
【００８１】
ブロック５０６で、第１のルートノードは、追加ＬＰＯＰを実行するのを停止しても良い。
【００８２】
本願明細書に記載の実装は、コンピュータにより実行可能な命令又はデータ構造を伝える又は格納しているコンピュータ可読媒体を含み得る。このようなコンピュータ可読媒体は、汎用又は特定目的コンピュータによりアクセスできる利用可能な媒体であり得る。例として且つ限定ではなく、このようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ又は他の光ディスク記憶装置、磁気ディスク記憶装置又は他の磁気記憶装置を含む非一時的コンピュータ可読記憶媒体、又はコンピュータにより実行可能な命令若しくはデータ構造の形式で所望のプログラムコード手段を伝える若しくは格納するために用いられ汎用若しくは特定目的コンピュータによりアクセス可能な他の媒体を有し得る。上述の組合せも、コンピュータ可読媒体の範囲に包含され得る。
【００８３】
コンピュータにより実行可能な命令は、例えば、汎用コンピュータ、特定目的コンピュータ又は特定目的処理装置に特定の機能又は機能グループを実行させる命令及びデータを有する。本発明の主題は構造的特徴及び／又は方法論的動作に特有の言葉で記載されたが、本発明の主題は、特許請求の範囲に定められる上述の特定の特徴又は動作に限定されないことが理解されるべきである。むしろ、上述の特定の特徴及び動作は、特許請求の範囲の実施の例示的形態として開示されたものである。
【００８４】
本願明細書で用いられるように、用語「モジュール」又は「コンポーネント」は、コンピューティングシステムで実行されるソフトウェアオブジェクト又はルーチンを表し得る。本願明細書に記載されたのと異なるコンポーネント、モジュール、エンジン及びサービスは、（例えば、別個のスレッドとして）コンピューティングシステムで実行されるオブジェクト又は処理として実施されても良い。本願明細書に記載されたシステム及び方法はソフトウェアで実施されることが望ましいが、ハードウェアによる実装又はソフトウェアとハードウェアの組合せも、可能であり想定される。この説明では、「コンピュータエンティティ」は、本願明細書で先に定められたようにコンピューティングシステム、又はコンピューティングシステムで実行されるモジュール若しくはモジュールの組合せであっても良い。
【００８５】
本願明細書に記載された全ての例及び条件文は、教育上の目的で、読者が本発明の原理及び発明者により考案された概念を理解するのを助け、技術を促進させるためであり、これらの特に記載された例及び条件に限定されないものと考えられるべきである。本発明の実装が詳細に記載されたが、種々の変更、置換及び修正が本発明の精神及び範囲から逸脱することなく行われうることが理解されるべきである。
【符号の説明】
【００８６】
１００  ＩＣＮ
１０２  サーバ
１０４、１０６、１０８  ルートノード
１１０  エッジノード
１１２  スーパーリーフ
１１６  スーパーペアレント
【図１Ａ】
2016110628.tif 000003
【図１Ｂ】
2016110628.tif 000004
【図１Ｃ】
2016110628.tif 000005
【図２Ａ】
2016110628.tif 000006
【図２Ｂ】
2016110628.tif 000007
【図３】
2016110628.tif 000008
【図４】
2016110628.tif 000009
【図５】
2016110628.tif 000010