(57)【要約】【課題】データを迅速にユーザーに供給してネットワークトラフィックを低減する方法を提供する。【解決手段】コンテンツセントリックネットワーク内におけるノードのネットワーク供給経路に沿ったコンテンツ配置の方法は、下流ノードから第１及び第２関心パケットを受け取り、第１及び第２データパケットについて第１ノードのコンテンツキャッシュをチェックし、第１及び第２データパケットがコンテンツキャッシュに存在しないことに応答して、第１及び第２関心パケットについて第１ノードのペンディング関心テーブルをチェックする。又、方法は、第１及び第２関心パケットが第１ノードのペンディング関心テーブルに存在してなく且つ下流ノードから受け取った第１関心パケットのキャッシュフラグがオフにあることに応答して、第１データパケットが第１ノードのコンテンツキャッシュ内においてキャッシングされるように様々な動作を実行するステップを含む。【選択図】図５
2016082578.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークの複数のノードのうちの下流ノードから第１及び第２関心パケットを受け取るステップであって、前記第１及び第２関心パケットは、それぞれ、コンテンツを集合的に形成する複数のデータパケットのうちの第１及び第２データパケットを識別している、ステップと、
前記第１及び第２データパケットについて、前記複数のノードのうちの第１ノードのコンテンツキャッシュをチェックするステップと、
前記第１及び第２データパケットが前記コンテンツキャッシュに存在していないことに応答して、前記第１及び第２関心パケットについて、前記第１ノードのペンディング関心テーブルをチェックするステップと、
前記第１及び第２関心パケットが前記第１ノードの前記ペンディング関心テーブルに存在しておらず、且つ、前記下流ノードから受け取った前記第１関心パケットのキャッシュフラグがオフ状態であることに応答して、
前記第１及び第２関心パケットを前記ペンディング関心テーブル内に記録し、
前記ペンディング関心テーブル内の前記第１関心パケットのキャッシュフラグを設定し、
前記第１関心パケットによって識別される前記第１データパケットが前記第１ノードの前記コンテンツキャッシュ内においてキャッシングされることになると通知するように前記第１関心パケット内のキャッシュフラグが設定された状態で、前記第１及び第２関心パケットを前記複数のノードのうちの上流ノードに転送し、
前記上流ノードから前記第１及び第２データパケットを受け取り、且つ、
前記第１データパケットを前記第１ノードの前記コンテンツキャッシュ内においてキャッシングするステップと、
を有する方法。
【請求項２】
前記第１データパケットが前記コンテンツキャッシュに存在していることに応答して、
前記第１データパケットを前記下流ノードに供給し、且つ、
前記コンテンツキャッシュ内の前記第１データパケットのカウント値を増分するステップと、
前記複数のデータパケットのうちの少なくともいくつかのその他のデータパケットの関心パケットを受け取るステップと、
前記カウント値に基づいて、前記コンテンツキャッシュ内に保存されるべき前記コンテンツのデータパケットの数を判定するステップと、
前記コンテンツの前記判定された数のデータパケットが前記コンテンツキャッシュ内において保存されるようにするステップと、
を更に有し、
前記保存されるようにするステップは、
前記コンテンツキャッシュ内に未だ保存されていない前記判定された数のデータパケットのそれぞれごとに、
前記対応したデータパケットを識別する前記関心パケットのうちの対応した関心パケットを前記ペンディング関心テーブル内において記録するステップと、
前記ペンディング関心テーブル内の前記関心パケットのうちの前記対応した関心パケットのキャッシュフラッグを設定するステップと、
前記関心パケットのうちの前記対応した関心パケットによって識別される前記対応したデータパケットが前記第１ノードの前記コンテンツキャッシュ内においてキャッシングされることになると通知するように前記関心パケットのうちの前記対応した関心パケット内のキャッシュフラグが設定された状態で、前記関心パケットのうちの前記対応した関心パケットを前記上流ノードに転送するステップと、
前記対応したデータパケットを受け取るステップと、
前記対応したデータパケットを前記第１ノードの前記コンテンツキャッシュ内においてキャッシングするステップと、
を含む請求項１に記載の方法。
【請求項３】
前記コンテンツの前記判定された数のデータパケットが前記コンテンツキャッシュ内において保存されるようにするステップは、前記コンテンツの２カウント値個の更なるデータパケットが前記コンテンツキャッシュ内において保存されるようにするステップを有する請求項２に記載の方法。
【請求項４】
前記第１及び第２関心パケットが前記第１ノードの前記ペンディング関心テーブルに存在しておらず、且つ、前記下流ノードから受け取った前記第１関心パケットの前記キャッシュフラグが前記第１関心パケットの受け取りの時点において既に設定されていることに応答して、
前記ペンディング関心テーブル内の前記第１関心パケットの前記キャッシュフラグを設定することなしに、前記第１関心パケットを前記ペンディング関心テーブル内において記録し、且つ、
前記第１関心パケットを前記上流ノードに転送するステップ、
を更に有する請求項１に記載の方法。
【請求項５】
前記データパケットのインデックスと、前記データパケットが属するコンテンツがどれだけ最近に要求されているのか、の両方に従って、前記コンテンツキャッシュ内に保存されているデータパケットを前記第１データパケットによって置換するステップを更に有する請求項１に記載の方法。
【請求項６】
どれだけ最近に前記データパケットが要求されているのかに従って、前記コンテンツキャッシュ内に保存されている前記データパケットを前記第１データパケットによって置換するステップは、
前記第１ノードの前記コンテンツキャッシュがフルであることに応答して、
関心パケットが、前記第１ノードの前記コンテンツキャッシュ内に保存されている少なくとも１つのデータパケットを有するその他のコンテンツよりも以前に受け取られている前記第１ノードの前記コンテンツキャッシュ内に保存されている少なくとも１つのデータパケットを有する複数のコンテンツのうちから、最も長い間要求されていないコンテンツを識別するステップと、
前記第１ノードの前記コンテンツキャッシュ内に保存されている前記最も長い間要求されていないコンテンツの任意のその他のデータパケットの最大のインデックスを有するデータパケットを識別するステップと、
前記第１ノードの前記コンテンツキャッシュ内の前記データパケットを前記第１データパケットによって置換するステップと、
を有する請求項５に記載の方法。
【請求項７】
前記データパケットのインデックスと、前記データパケットが属するコンテンツがどれだけ頻繁に要求されているのか、の両方に従って、前記コンテンツキャッシュ内に保存されているデータパケットを前記第１データパケットによって置換するステップを更に有する請求項１に記載の方法。
【請求項８】
前記データパケットの前記インデックスと、前記データパケットが属する前記コンテンツがどれだけ頻繁に要求されているのか、の両方に従って、前記コンテンツキャッシュ内に保存されている前記データパケットを前記第１データパケットによって置換するステップは、
関心パケットが、前記第１ノードの前記コンテンツキャッシュ内に保存されている少なくとも１つのデーパケットを有するその他のコンテンツよりも低い頻度で受け取られている前記第１ノードの前記コンテンツキャッシュ内に保存されている少なくとも１つのデータパケットを有する複数のコンテンツのうちから、最も少ない頻度で要求されているコンテンツを識別するステップと、
前記第１ノードの前記コンテンツキャッシュ内に保存されている前記最も少ない頻度で要求されているコンテンツの任意のその他のデータパケットの最大インデックスを有するデータパケットを識別するステップと、
前記第１ノードの前記コンテンツキャッシュ内の前記データパケットを前記第１データパケットによって置換するステップと、
を有する請求項７に記載の方法。
【請求項９】
ネットワークシステムであって、
コンテンツソースとエンド装置の間の供給経路に沿った複数のノードであって、前記供給経路に沿ってコンテンツの複数のデータパケットを拡散させるように構成されている複数のノードを有し、
前記複数のノードは、
前記複数のノードのうちの下流ノードから第１及び第２関心パケットを受け取り、前記第１及び第２関心パケットは、それぞれ、前記コンテンツを集合的に形成する前記複数のデータパケットのうちの第１及び第２データパケットを識別しており、
前記第１及び第２データパケットについて、前記第１ノードのコンテンツキャッシュをチェックし、
前記第１及び第２データパケットが前記コンテンツキャッシュに存在していないことに応答して、前記第１及び第２関心パケットについて、前記第１ノードのペンディング関心テーブルをチェックし、且つ、
前記第１及び第２関心パケットが前記第１ノードの前記ペンディング関心テーブルに存在しておらず、且つ、前記下流ノードから受け取った前記第１関心パケットのキャッシュフラグがオフ状態であることに応答して、前記第１及び第２関心パケットを前記ペンディング関心テーブル内において記録し、前記ペンディング関心テーブル内の前記第１関心パケットのキャッシュフラグを設定し、前記第１関心パケットによって識別される前記第１データパケットが前記第１ノードの前記コンテンツキャッシュ内においてキャッシングされることになると通知するように前記第１関心パケット内のキャッシュフラグが設定された状態で、前記第１及び第２関心パケットを前記複数のノードのうちの上流ノードに転送し、
前記上流ノードから前記第１及び第２データパケットを受け取り、且つ、
前記第１データパケットを前記第１ノードの前記コンテンツキャッシュ内においてキャッシングする、
ように構成された第１ノードを含む、システム。
【請求項１０】
前記第１データパケットが前記コンテンツキャッシュ内に存在していることに応答して、前記第１ノードは、
前記第１データパケットを前記下流ノードに供給し、
前記コンテンツキャッシュ内の前記第１データパケットのカウント値を増分し、
前記複数のデータパケットのうちの少なくともいくつかのその他のデータパケットの関心パケットを受け取り、
前記カウント値に基づいて、前記コンテンツキャッシュ内に保存されるべき前記コンテンツのデータパケットの数を判定し、且つ、
前記コンテンツの前記判定された数のデータパケットが前記コンテンツキャッシュ内に保存されるようにする、
ように更に構成されており、
前記保存されるようにすることは、
前記コンテンツキャッシュ内に未だ保存されていない前記判定された数のデータパケットのそれぞれごとに、
前記対応したデータパケットを識別する前記関心パケットのうちの対応した関心パケットを前記ペンディング関心テーブル内において記録することと、
前記ペンディング関心テーブル内の前記関心パケットのうちの前記対応した関心パケットのキャッシュフラグを設定することと、
前記関心パケットのうちの前記対応した関心パケットによって識別される前記対応したデータパケットが前記第１ノードの前記コンテンツキャッシュ内においてキャッシングされることになると通知するように前記関心パケットのうちの前記対応した関心パケット内のキャッシュフラグが設定された状態で、前記関心パケットのうちの前記対応した関心パケットを前記上流ノードに転送することと、
前記対応したデータパケットを受け取ることと、
前記対応するデータパケットを前記第１ノードの前記コンテンツキャッシュ内においてキャッシングすることと、
を含む請求項９に記載のシステム。
【請求項１１】
前記第１ノードは、前記コンテンツの２カウント値個のデータパケットが前記コンテンツキャッシュ内において保存されるようにするべく構成されることにより、前記コンテンツの前記判定された数のデータパケットが前記コンテンツキャッシュ内において保存されるようにするべく構成されている請求項１０に記載のシステム。
【請求項１２】
前記第１及び第２関心パケットが前記第１ノードの前記ペンディング関心テーブルに存在しておらず、且つ、前記下流ノードから受け取った前記第１関心パケットの前記キャッシュフラグが前記第１関心パケットの受け取りの時点において既に設定されていることに応答して、前記第１ノードは、
前記ペンディング関心テーブル内の前記第１関心パケットの前記キャッシュフラグを設定することなしに、前記第１関心パケットを前記ペンディング関心テーブル内において記録し、且つ、
前記第１関心パケットを前記上流ノードに転送する、
ように更に構成されている請求項９に記載のシステム。
【請求項１３】
前記第１ノードは、前記データパケットがどれだけ最近に要求されているのかに従って、前記コンテンツキャッシュ内に保存されたデータパケットを置換するように更に構成されている請求項９に記載のシステム。
【請求項１４】
前記第１ノードは、前記データパケットがどれだけ頻繁に要求されているのかに従って、前記コンテンツキャッシュ内に保存されているデータパケットを置換するように更に構成されている請求項９に記載のシステム。
【請求項１５】
動作を実行するか又は動作の実行を制御するべくプロセッサによって実行可能であるその上に保存されたコンピュータ可読命令を含む一時的ではないコンピュータ可読媒体であって、
前記動作は、
ネットワークの複数のノードのうちの下流のノードから第１及び第２関心パケットを受け取る動作であって、前記第１及び第２関心パケットは、それぞれ、コンテンツを集合的に形成する複数のデータパケットのうちの第１及び第２データパケットを識別している、動作と、
前記第１及び第２データパケットについて、前記複数のノードのうちの第１ノードのコンテンツキャッシュをチェックする動作と、
前記第１及び第２データパケットが前記コンテンツキャッシュに存在していないことに応答して、前記第１及び第２関心パケットについて、前記第１ノードのペンディング関心テーブルをチェックする動作と、
前記第１及び第２関心パケットが前記第１ノードの前記ペンディング関心テーブルに存在しておらず、且つ、前記下流ノードから受け取った前記第１関心パケットのキャッシュフラグがオフ状態にあることに応答して、前記第１及び第２関心パケットを前記ペンディング関心テーブル内において記録し、前記ペンディング関心テーブル内の前記第１関心パケットのキャッシュフラグを設定し、前記第１関心パケットによって識別される前記第１データパケットが前記第１ノードの前記コンテンツキャッシュ内においてキャッシングされることになると通知するように前記第１関心パケット内のキャッシュフラグが設定された状態で、前記第１及び第２関心パケットを前記複数のノードの上流ノードに転送し、前記上流ノードから前記第１及び第２データパケットを受け取り、且つ、前記第１データパケットを前記第１ノードの前記コンテンツキャッシュ内においてキャッシングする動作と、
を有する、媒体。
【請求項１６】
前記動作は、
前記第１データパケットが前記コンテンツキャッシュ内に存在していることに応答して、
前記第１データパケットを前記下流ノードに供給する動作と、
前記コンテンツキャッシュ内の前記第１データパケットのカウント値を増分する動作と、
前記複数のデータパケットのうちの少なくともいくつかのその他のデータパケットの関心パケットを受け取る動作と、
前記カウント値に基づいて、前記コンテンツキャッシュ内において保存されるべき前記コンテンツのデータパケットの数を判定する動作と、
前記コンテンツの前記判定された数のデータパケットが前記コンテンツキャッシュ内に保存されるようにする動作と、
を更に有し、
前記保存されるようにする動作は、
前記コンテンツキャッシュ内に未だ保存されていない前記判定された数のデータパケットのそれぞれごとに、
前記対応したデータパケットを識別する前記関心パケットのうちの対応した関心パケットを前記ペンディング関心テーブル内において記録する動作と
前記ペンディング関心テーブル内の前記関心パケットのうちの前記対応した関心パケットのキャッシュフラグを設定する動作と、
前記関心パケットのうちの前記対応した関心パケットによって識別される前記対応したデータパケットが前記第１ノードの前記コンテンツキャッシュ内においてキャッシングされることになると通知するように前記関心パケットのうちの前記対応した関心パケット内のキャッシュフラグが設定された状態で、前記関心パケットのうちの前記対応した関心パケットを前記上流ノードに転送する動作と、
前記対応したデータパケットを受け取る動作と、
前記対応したデータパケットを前記第１ノードの前記コンテンツキャッシュ内においてキャッシングする動作と、
を含む請求項１５に記載の一時的ではないコンピュータ可読媒体。
【請求項１７】
前記コンテンツの前記判定された数のデータパケットが前記コンテンツキャッシュ内において保存されるようにする動作は、前記コンテンツの２カウント値個のデータパケットが前記コンテンツキャッシュ内において保存されるようにする動作を有する請求項１６に記載の一時的ではないコンピュータ可読媒体。
【請求項１８】
前記第１及び第２関心パケットが前記第１ノードの前記ペンディング関心テーブルに存在しておらず、且つ、前記下流ノードから受け取った前記第１関心パケットの前記キャッシュフラグが前記第１関心パケットの受け取りの時点において既に設定されていることに応答し、
前記ペンディング関心テーブル内の前記第１関心パケットの前記キャッシュフラグを設定することなしに、前記第１関心パケットを前記ペンディング関心テーブル内において記録する動作と、
前記第１関心パケットを前記上流ノードに転送する動作と、
を更に有する請求項１５に記載の一時的ではないコンピュータ可読媒体。
【請求項１９】
前記データパケットがどれだけ最近に要求されているのかに従って、前記コンテンツキャッシュ内に保存されているデータパケットを置換する動作を更に有する請求項１５に記載の一時的ではないコンピュータ可読媒体。
【請求項２０】
前記データパケットがどれだけ頻繁に要求されているのかに従って、前記コンテンツキャッシュ内に保存されているデータパケットを置換する動作を更に有する請求項１５に記載の一時的ではないコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書において記述されている実装形態は、コンテンツセントリックネットワーク内におけるコンテンツの配置に関する。
【背景技術】
【０００２】
そうではない旨が本明細書において示されていない限り、本明細書において記述されている内容は、本出願における請求項の従来技術ではなく、且つ、本節における包含は、従来技術であることを是認するものではない。
【０００３】
現在のインターネットの構造は、ホスト指向型であると共に、１対１のパラダイムに基づいて構成されているが、ビデオ、音楽、写真、文書などの視聴及び共有などの現在のインターネットの使用法の多くは、ホストを中心とした側面とは異なるデータ又はコンテンツを中心とした側面を有する場合がある。インターネットプロトコル（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ：ＩＰ）アドレスの代わりに、命名されたデータに基づいてエンドポイントが通信するコンテンツセントリックネットワーク（Ｃｏｎｔｅｎｔ  Ｃｅｎｔｒｉｃ  Ｎｅｔｗｏｒｋ：ＣＣＮ）は、ホスト指向型のインターネットアーキテクチャの代替肢として発展したものである。
【０００４】
本明細書において特許請求されている主題は、なんらかの欠点を解決するか又は上述のものなどの環境においてのみ動作する実装形態に限定されるものではない。むしろ、この背景説明は、本明細書において記述されているいくつかの実装形態を実施しうる１つの例示用の技術分野を示すべく提供されるものに過ぎない。
【発明の概要】
【課題を解決するための手段】
【０００５】
一実装形態の一態様によれば、コンテンツセントリックネットワーク内におけるノードのネットワークの供給経路に沿ったコンテンツ配置の方法は、下流ノードから第１及び第２関心パケットを受け取るステップを含む。又、方法は、第１及び第２データパケットについてルーターのコンテンツキャッシュをチェックするステップをも含む。又、方法は、第１及び第２データパケットがコンテンツキャッシュに存在していないことに応答して、第１及び第２関心パケット（ｉｎｔｅｒｅｓｔ  ｐａｃｋｅｔ：インタレストパケット）についてルーターのペンディング関心テーブルをチェックするステップをも含む。又、方法は、第１及び第２関心パケットがルーターのペンディング関心テーブル（ｐｅｎｄｉｎｇ  ｉｎｔｅｒｅｓｔ  ｔａｂｌｅ：ペンディングインタレストテーブル）に存在しておらず、且つ、下流ノードから受け取った第１関心パケットのキャッシュフラグがオフ状態であることに応答して、第１及び第２関心パケットをペンディング関心テーブル内において記録するステップと、ペンディング関心テーブル内の第１関心パケットのキャッシュフラグを設定するステップと、第１関心パケットによって識別される第１データパケットがルーターのコンテンツキャッシュ内においてキャッシングされることになることを通知するように第１関心パケット内のキャッシュフラグが設定された状態で、第１及び第２関心パケットを上流ノードに転送するステップと、第１及び第２データパケットを上流ノードから受け取るステップと、第１データパケットをルーターのコンテンツキャッシュ内においてキャッシングするステップと、をも含む。又、方法は、カウント値に基づいて、コンテンツキャッシュ内において保存されるべきコンテンツのデータパケットの数を判定するステップをも含む。
【０００６】
実装形態の目的及び利点は、少なくとも、請求項において具体的に指摘されている要素、特徴、及び組合せにより、実現及び達成されることになる。
【０００７】
上述の一般的な説明及び以下の詳細な説明は、いずれも、例示及び説明を目的としており、且つ、特許請求されている本発明を限定するためのものではないことを理解されたい。
【０００８】
添付図面を使用することにより、更なる具体性及び詳細を伴って、例示用の実装形態について記述及び説明することとする。
【図面の簡単な説明】
【０００９】
【図１】いくつかの実装形態が実装されうる例示用のＣＣＮの概略図である。
【図２Ａ】代表的なＣＣＮルーターのアーキテクチャの概略図である。
【図２Ｂ】例示用のＣＣＮルーターシステムを示すブロックダイアグラムである。
【図３】ＣＣＮのルーター内におけるキャッシング方式を示す概略図である。
【図４Ａ】ＣＣＮ内のノードのネットワーク間におけるキャッシング方式を示す概略図である。
【図４Ｂ】ＣＣＮ内のノードのネットワーク間におけるキャッシング方式を示す概略図である。
【図４Ｃ】ＣＣＮ内のノードのネットワーク間におけるキャッシング方式を示す概略図である。
【図４Ｄ】ＣＣＮ内のノードのネットワーク間におけるキャッシング方式を示す概略図である。
【図５】ＣＣＮ内のノードのネットワークの供給経路に沿ったコンテンツ配置の方法の例示用のフロー図である。
【発明を実施するための形態】
【００１０】
近年においては、インターネット上においてビデオ及びオーディオをストリーミングする需要が増大し続けている。ビデオ、オーディオのストリーミング、ビデオオンデマンド、及びこれらに類似したサービスは、ユーザーに対する大量データの供給を必要としており、この結果、輻輳とユーザー遅延の増大をもたらす場合がある。従って、本明細書において記述されているいくつかの実装形態は、データを迅速にユーザーに供給すると共にネットワークトラフィックを低減する能力を有するＣＣＮアーキテクチャ及びこれをサポートする通信プロトコルに関する。
【００１１】
ＣＣＮにおいては、コンテンツファイルは、一般に、本明細書においてデータパケットと呼称される、いくつかの塊又は断片から構成されてもよい。コンテンツファイルのいくつかのデータパケットが、コンテンツファイルのその他のデータパケットよりも頻繁に要求される場合がある。例えば、ビデオの開始点に対応したデータパケットは、ビデオの中間点及び／又は終了点に対応したデータパケットよりも頻繁に要求されることになる。コンテンツの第１データパケットがユーザーに近いノードにおいて優先的にキャッシング又は保存されるＣＣＮ方式によれば、性能が改善されることになり、且つ、コンテンツファイルの人気が増大するのに伴って、ユーザーに近いノードにおいてキャッシングされるコンテンツのデータパケットの数が増大する。又、このような方式は、コンテンツファイルの人気が乏しい場合には、ＣＣＮの全体における冗長レプリカのキャッシングを低減することにもなる。
【００１２】
本明細書において記述されているいくつかの実装形態は、コンテンツに対する要求が増大するのに伴って、ユーザーに近いノードにおいてコンテンツの第１データパケットを優先的に保存すると共にユーザーに近いノードにおいて保存されるコンテンツの断片の数を増大させる（例えば、ＣＣＮ内の）ノードのネットワークの供給経路に沿ったコンテンツ配置に関する。
【００１３】
添付図面を参照し、本発明の実装形態について説明することとする。
【００１４】
図１は、本明細書において記述されている少なくとも１つの実装形態に従って構成された例示用のＣＣＮ１００の概略図である。ＣＣＮ１００は、「関心パケット」と呼称されてもよいメッセージをルーティングすると共にデータパケットを供給するように構成されたノードのネットワークを含んでもよい。「関心パケット」という用語は、コンテンツの断片又は塊に対する要求を意味してもよい。「データパケット」という用語は、コンテンツの断片又は塊を意味してもよい。それぞれの関心パケットは、コンテンツソースノード１０３においてホスティングされるコンテンツ１０５を集合的に形成する複数のデータパケットのうちの１つに対応していてもよい。図１には、単一のコンテンツ１０５が示されているが、更に一般的には、ＣＣＮ１００は、複数の異なるコンテンツ１０５を含んでもよく、これらのコンテンツ１０５のそれぞれは、対応した関心パケットによって要求されうる複数のデータパケットを含んでもよい。
【００１５】
様々な実装形態においては、ＣＣＮ１００は、インターネット又はその一部分を含んでもよく、或いは、これらによって含まれてもよい。本開示の利益と共に、図１に示されているＣＣＮ１００は、いくつかの観点において、単純化を構成してもよいことを理解されたい。例えば、ＣＣＮ１００は、クライアント、サーバー、ルーター、スイッチ、及び／又はその他のネットワーク装置などの多数の更なるネットワークノードを含んでもよい。図１に示されているように、ＣＣＮ１００は、２つのユーザーノード１０２ａ、１０２ｂ（一般的に、「１つのユーザーノード１０２」又は「複数のユーザーノード１０２」）、１つのコンテンツソースノード１０３、及び９つの中間ノード１０４を含むいくつかのネットワークノードを含んでもよい。その他の実装形態においては、ＣＣＮ１００は、図１に示されているものとは異なる数のユーザーノード１０２、コンテンツソースノード１０３、及び／又は中間ノード１０４を含んでもよい。
【００１６】
図示のように、中間ノード１０４は、関心パケット及びデータパケットがユーザーノード１０２とコンテンツソースノード１０３の間において交換されうるように、ユーザーノード１０２とコンテンツソースノード１０３を相互接続してもよい。ユーザーノード１０２は、中間ノード１０４の下流であると見なされてもよく、中間ノード１０４は、コンテンツソースノード１０３の下流であると見なされてもよい。
【００１７】
それぞれの中間ノード１０４は、ルーターを含んでもよい。「ルーター」という用語は、関心パケットを受け取ると共に転送する且つ／又はデータパケットを受け取ると共に転送する能力を有する任意のネットワーク装置を意味してもよい。
【００１８】
コンテンツソースノード１０３は、サーバーを含んでもよい。「サーバー」という用語は、関心パケットを受け取ると共にデータパケットをサービスする能力を有する任意の装置を意味してもよい。コンテンツソースノード１０３は、コンテンツ１０５をホスティングしてもよく、或いは、更に一般的には、１つ又は複数の異なるコンテンツ１０５をホスティングしてもよく、それぞれのコンテンツ１０５は、少なくとも１つのコンテンツ名称によって識別される。
【００１９】
ユーザーノード１０２のそれぞれは、例えば、関心パケットを送信すると共にデータパケットを受け取ることにより、ネットワークを介してコンテンツを要求及び受信する能力を有する任意の装置であってもよい。ユーザーノード１０２のそれぞれは、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、携帯電話機、スマートフォン、パーソナルデジタルアシスタント（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ：ＰＤＡ）、ウェアラブル装置、又はその他のクライアント装置などのクライアント装置を含んでもよい。
【００２０】
ユーザーノード１０２は、対応した関心パケットを送信することにより、コンテンツ１０５のうちの任意のコンテンツの供給を要求してもよく、この対応した関心パケットは、次いで、中間ノード１０４のうちの１つ又は複数により、適切なソースノード１０３までルーティングされてもよい。図１においては、ユーザーノード１０２からコンテンツソースノード１０３までの関心パケットのルーティングは、一般に、１０６によって表記されている。関心パケットのルーティングは、要求されているコンテンツの名称に基づいて実行されてもよく、この名称は、関心パケット内において見い出されてもよい。コンテンツソースノード１０３は、関心パケットを使用することにより、適切なコンテンツを見出してもよく、且つ、対応したデータパケットを供給経路１０７に沿って配置された中間ノード１０４を介してユーザーノードに返送してもよい。更には、図１のＣＣＮ１００内に示されているように、コンテンツ１０５の少なくとも一部を構成するデータパケット１０８は、ユーザーノード１０２に対する相対的に高速且つ効率的な供給を提供すると共にユーザー経験を改善するべく、インネットワーク状態（ｉｎ−ｎｅｔｗｏｒｋ）で、供給経路に沿った中間ノード１０４のいくつか又はすべてにおいて配置されてもよい。
【００２１】
これらの及びその他の実装形態においては、データパケット１０８は、対応するコンテンツ１０５の人気の増大に伴って、ＣＣＮ１００の全体にわたって、ユーザーノード１０２に相対的に近い場所において拡散されてもよい。例えば、２つの異なるコンテンツ１０５の場合に、相対的に人気のあるコンテンツ１０５は、相対的に人気のないコンテンツ１０５よりもユーザーノード１０２に相対的に近接した中間ノード１０４においてキャッシングされるコンテンツ１０５のうちのより多くのコンテンツに対応したより多くのデータパケット１０８を有してもよい。上述の内容を実装するべく、中間ノード１０４のそれぞれは、関心パケットの記録を含むルーティング、供給、及び保存タスクを実行するために、ペンディング関心テーブル（ＰＩＴ）、転送情報ベース（Ｆｏｒｗａｒｄｉｎｇ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｂａｓｅ：ＦＩＢ）、及びコンテンツキャッシュ（Ｃｏｎｔｅｎｔ  ｃａｃｈｅ：ＣＣ）を含んでもよい。ＰＩＴ、ＦＩＢ、及びＣＣについては、図２Ａとの関係において更に詳細に説明する。
【００２２】
図２Ａは、本明細書において記述されている少なくとも１つの実装形態に従って構成された代表的なＣＣＮルーター２００のアーキテクチャの概略図である。図１のそれぞれのユーザーノード１０２及び中間ノード１０４は、ＣＣＮルーター２００を含んでもよい。ルーター２００は、ＣＣＮ内におけるコンテンツデータの転送を適切に処理するべく、複数のポート又はインターフェイス２０１ａ〜２０１ｃ（例えば、フェイス０、フェイス１、フェイス２．．．）と、複数の転送テーブル又はデータ構造２０３〜２０５（集合的に、「データ構造２０３〜２０５」）と、を含んでもよい。
【００２３】
インターフェイス２０１ａ〜２０１ｃ（以下、一般的に、「１つのインターフェイス２０１」又は「複数のインターフェイス２０１」）は、固定された（有線の）リンク、無線リンク、ネットワーク、インターネット、及び／又はその他のコンポーネント又はシステムを介して、１つ又は複数のユーザーノード（図示されてはいない）、中間ノード、コンテンツソースノード、及び／又は１つ又は複数のサービス又はアプリケーションに対して結合されてもよい。例えば、第１インターフェイス２０１ａ（フェイス０）は、下流の中間ノード又はユーザーノード２０６（以下、「下流ノード２０６」）に結合されてもよい。第２インターフェイス２０１ｂ（フェイス１）は、上流の中間ノード又はコンテンツソースノード２０７（以下、「上流ノード２０７」）に結合されてもよい。第３インターフェイス２０１ｃは、１つ又は複数のサービス又はアプリケーション２０２に結合されてもよい。
【００２４】
ルーター２００は、ＣＣ２０３、ＰＩＴ２０４、及びＦＩＢ２０５を含むデータ構造２０３〜２０５を含んでもよい。ＣＣ２０３は、関心パケットを対応するデータパケットと関連付けてもよい。例えば、ＣＣ２０３は、それぞれの受け取った関心パケットを示す「名称」列と、対応するデータパケットを通知する「データ」列と、を含んでもよく、これらのパケットは、ルーター２００において受け取られると共にキャッシングされたものであってもよい。ＰＩＴ２０４は、それぞれの関心パケットを１つ又は複数の受け取りインターフェイス２０１と関連付けることにより、（対応する要求されたデータパケットが受け取られる時点まで）サービスされるか又はペンディング状態にあるそれぞれの受け取った関心パケットを記録及び追跡してもよい。例えば、ＰＩＴ２０４は、それぞれの関心パケットを通知する「プレフィックス」列と、関心パケット用の１つ又は複数の受け取りインターフェイス２０１を通知する「１つ又は複数の要求フェイス」列と、を含んでもよい。ＦＩＢ２０５は、それぞれの関心パケットを、関心パケットがその上部において転送されうる対応したインターフェイス２０１と関連付けてもよい。例えば、ＦＩＢ２０５は、それぞれの関連パケットを通知する「プレフィックス」列と、対応する転送インターフェイス２０１を通知する「１つ又は複数のフェイス」列と、を含んでもよい。
【００２５】
関心パケットは、第１インターフェイス２０１ａ（フェイス０）においてユーザーノード又は中間ノード（図示されてはいない）から受け取られてもよい。関心パケットは、要求されたコンテンツ又はデータパケットを通知する名称プレフィックスを含んでもよく、且つ、ＣＣ２０３に転送されてもよく、或いは、ＣＣ２０３において処理されてもよい。対応するデータパケットが到来すると共にＣＣＮルーター２００においてキャッシングされた際に、受け取った関心パケットについて、通知された名称プレフィックスを使用することにより、入力がＣＣ２０３において実施されてもよい。名称プレフィックスは、「名称」列におけるＣＣ２０３の新しい又は空の行内において入力されてもよい。
【００２６】
データパケットがＣＣ２０３に存在していない場合には、関心パケットは、ＰＩＴ２０４に転送されてもよく、或いは、ＰＩＴ２０４において処理されてもよい。受け取った関心パケットについて、通知された名称プレフィックスを使用することにより、入力がＰＩＴ２０４において実施されてもよい。同一の入力において、第１インターフェイス２０１ａ（フェイス０）が通知されてもよい。名称プレフィックスは、「プレフィックス」列におけるＰＩＴ２０４の新しい又は空の行内において入力されてもよく、且つ、フェイス０は、「要求フェイス」列における同一の行内において通知されてもよい。
【００２７】
次いで、関心パケットは、ＦＩＢ２０５に転送されてもよく、或いは、ＦＩＢ２０５において処理されてもよい。受け取った関心パケットについて、通知された名称プレフィックスを使用することにより、入力がＦＩＢ２０５において実施されてもよい。又、同一の入力において、第１インターフェイス２０１ａ（フェイス０）が通知されてもよい。次いで、関心パケットは、インターフェイス２０１ｂ（フェイス１）上において、例えば、上流ノード２０７に転送されてもよい。
【００２８】
要求されているデータパケットが、第２インターフェイス２０１ｂ（フェイス１）を介して、例えば、上流ノード２０７から受け取られた際に、受け取ったデータパケット内において通知された名称プレフィックスは、ＰＩＴ２０４内の対応する入力とマッチングしてもよい。相応して、データパケットは、マッチングされた入力の「要求フェイス」列内において通知された１つ又は複数の第１インターフェイス２０１ａ（フェイス０）上において転送されてもよい。データパケットは、後述するように、キャッシング基準又は方式に従って保存されてもよく、或いは、保存されなくてもよい。
【００２９】
いくつかの実装形態においては、ＣＣＮルーター２００との間において且つ／又は図１のＣＣＮ１００内において伝達される関心パケットは、それぞれ、キャッシュフラグを含んでもよい。関心パケットのキャッシュフラグが、設定されている、即ち、オン状態にある際には、これを使用し、下流ノードが関心パケットによって識別される対応したデータパケットをキャッシングしようとしていると上流ノードに対して通知してもよい。関心パケットのキャッシュフラグが、設定されていない、即ち、オフ状態にある際には、これを使用し、下流ノードが関心パケットによって識別される対応したデータパケットをキャッシングしようとしていないと上流ノードに対して通知してもよい。
【００３０】
ＣＣＮルーター２００が、下流ノードによってキャッシングされていないと共にＣＣＮルーター２００においてもキャッシングされていないデータパケットの関心パケットを受け取った際には、ＣＣＮルーター２００は、ＣＣＮルーター２００がそのＣＣ２０３内の対応するデータパケットをキャッシングしようとしていると上流ノードに通知するべく、関心パケットを上流に転送する前に、関心パケットのキャッシュフラグを設定してもよい。
【００３１】
或いは、この代わりに、又はこれに加えて、ＣＣ２０３は、ＣＣ２０３内においてキャッシングされているデータパケットの、且つ／又は、複数のコンテンツのうちのそれぞれのコンテンツの第１データパケットの、入力のそれぞれにおいてカウントフィールドを含んでもよい。カウントフィールド内には、カウント値が保存されてもよい。特定のデータパケットが要求されるたびに、ＣＣ２０３内において、そのカウント値が増分されてもよい。データパケットのカウント値の増大は、そのデータパケット及びそのデータパケットが属するコンテンツの人気がユーザーの間において増大していることを通知してもよい。相応して、ＣＣＮルーター２００は、コンテンツの相対的に多くのものがユーザーに相対的に近い状態においてキャッシングされることによってネットワークの輻輳及び遅延が低減されるように、同一のコンテンツに属する更なるデータパケットのキャッシングを開始してもよい。これらの及びその他の側面については、更に詳細に後述する。
【００３２】
図２Ｂは、本明細書において記述されている少なくとも１つの実装形態に従って構成された例示用のＣＣＮシステム（以下、「システム２１０」）を示すブロックダイアグラムである。システム２１０は、本明細書において記述されている少なくとも１つの実装形態に従って、ノードのネットワークの供給経路に沿ったコンテンツ配置のために構成されてもよく、且つ、演算装置又はシステムとして実装されてもよい。システム２１０は、図２ＡのＣＣＮルーターを含んでもよい。或いは、この代わりに、又はこれに加えて、システム２１０は、図１の中間ノード１０４及び／又はユーザーノード１０２を含んでもよく、或いは、これらに対応していてもよい。例えば、中間ノード１０４及び／又はユーザーノード１０２の１つ又は複数は、システム２１０として実装されてもよい。システム２１０は、ルーター又はルーティング装置或いは本明細書において記述されているルーティングの能力を有するその他の装置として実装されてもよい。
【００３３】
システム２１０は、いくつかの例によれば、キャッシュマネージャアプリケーション２１２と、プロセッサ装置２１３と、第１インターフェイス２０１ａと、第２インターフェイス２０１ｂと、ストレージ２１６と、メモリ２１７と、を含んでもよい。システム２１０のコンポーネントは、バス２１１によって通信自在に結合されてもよい。バス２１１は、限定を伴うことなしに、メモリバス、ストレージインターフェイスバス、バス／インターフェイスコントローラ、インターフェイスバス、又はこれらに類似したもの、或いは、これらの任意の組合せを含んでもよい。
【００３４】
プロセッサ装置２１３は、本明細書において記述されている動作を実行するか又は動作の実行を制御するべく、算術論理ユニット、マイクロプロセッサ、汎用コントローラ、又はなんらかのその他のプロセッサアレイを含む。プロセッサ装置２１３は、データ信号を処理し、且つ、ＣＩＳＣ（Ｃｏｍｐｌｅｘ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）アーキテクチャ、ＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）アーキテクチャ、又は命令セットの組合せを実装するアーキテクチャを含む様々な演算アーキテクチャを含んでもよい。図２Ｂは、単一のプロセッサ装置２１３を含んでいるが、複数のプロセッサ装置が含まれてもよい。その他のプロセッサ、オペレーティングシステム、及び物理的構成が可能であろう。
【００３５】
メモリ２１７は、プロセッサ装置２１３上において／プロセッサ装置２１３によって実行されてもよいと共に／又は稼働してもよい命令及び／又はデータを保存する。命令又はデータは、本明細書において記述されている動作を実行するか又はその実行を制御するべく、プロセッサ装置２１３によって実行されうるプログラミングコードを含んでもよく、且つ／又は、図２ＡのＣＣ２０３、ＰＩＴ２０４、及び／又はＦＩＢ２０５を含んでもよい。メモリ２１７は、ダイナミックランダムアクセスメモリ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＤＲＡＭ）装置、スタティックランダムアクセスメモリ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＳＲＡＭ）装置、フラッシュメモリ、又はなんらかのその他のメモリ装置を含んでもよい。又、いくつかの実装形態においては、メモリ２１７は、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、ＣＤ−ＲＯＭ装置、ＤＶＤ−ＲＯＭ装置、ＤＶＤ−ＲＡＭ装置、ＤＶＤ−ＲＷ装置、フラッシュメモリ、又は相対的に永久的な方式で情報を保存するなんらかのその他のマスストレージを含む不揮発性メモリ又は類似の永久的ストレージ及び媒体をも含む。
【００３６】
第１インターフェイス２０１ａは、図２Ａとの関係において説明したように、少なくとも１つのユーザーノード及び／又は中間ノードから関心パケットを受け取ると共にこれに対してデータパケットを送信するように構成されている。例えば、第１インターフェイス２０１ａは、図１のユーザーノード１０２及び中間ノード１０４並びに／或いは図２Ａの下流ノード２０６から関心パケットを受け取ると共にこれらに対してデータパケットを送信するように構成されてもよい。第１インターフェイス２０１ａについては、図２Ａとの関係において更に詳細に説明する。
【００３７】
第２インターフェイス２０１ｂは、図２Ａとの関係において説明したように、少なくとも１つの中間ノード及び／又はコンテンツソースノードに関心パケットを転送すると共にこれらからデータパケットを受け取るように構成されてもよい。例えば、第２インターフェイス２０１ｂは、関心パケットを図１の中間ノード１０４及びソースノード１０３並びに／或いは図２Ａの上流ノード２０７に送信すると共にこれらからデータパケットを受け取るように構成されてもよい。第２インターフェイス２０１ｂについては、図２Ａとの関係において更に詳細に説明する。
【００３８】
いくつかの実装形態においては、第１及び第２インターフェイス２０１ａ、２０１ｂは、図１のＣＣＮ１００内のその他のノードに対する又は別の通信チャネルに対する直接的な物理接続のためのポートを含む。例えば、第１及び第２インターフェイス２０１ａ、２０１ｂは、ユニバーサルシリアルバス（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ：ＵＳＢ）ポート、セキュアデジタル（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ：ＳＤ）ポート、カテゴリ５ケーブル（ＣＡＴ−５）ポート、又は図１のノード１０２〜１０４のうちの少なくとも１つとの間の有線通信用の類似のポートを含んでもよい。いくつかの実装形態においては、第１及び第２インターフェイス２０１ａ、２０１ｂは、図１の１０２〜１０４のうちの少なくとも１つとの間においてデータを交換するための無線トランシーバ、或いは、ＩＥＥＥ８０２．１１、ＩＥＥＥ８０２．１６、ＢＬＵＥＴＯＯＴＨ（登録商標）、又は別の適切な無線通信方法を含む１つ又は複数の無線通信方法を使用したその他の通信チャネルを含む。
【００３９】
いくつかの実装形態においては、第１及び第２インターフェイス２０１ａ、２０１ｂは、ショートメッセージングサービス（Ｓｈｏｒｔ  Ｍｅｓｓａｇｉｎｇ  Ｓｅｒｖｉｃｅ：ＳＭＳ）、マルチメディアメッセージングサービス（Ｍｕｌｔｉｍｅｄｉａ  Ｍｅｓｓａｇｉｎｇ  Ｓｅｒｖｉｃｅ：ＭＭＳ）、ハイパーテキスト転送プロトコル（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ：ＨＴＴＰ）、直接的データ接続、無線アプリケーションプロトコル（Ｗｉｒｅｌｅｓｓ  Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ：ＷＡＰ）、電子メール、又は別の適切なタイプの電子的通信を介したものを含むセルラー通信ネットワーク上においてデータを送信及び受信するためのセルラー通信トランシーバを含む。いくつかの実装形態においては、第１及び第２インターフェイス２０１ａ、２０１ｂは、有線ポートと、無線トランシーバと、を含んでもよい。又、第１及び第２インターフェイス２０１ａ、２０１ｂは、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）、ＨＴＴＰ、ＨＴＴＰセキュア（ＨＴＴＰＳ）、及びＳＭＴＰ（Ｓｉｍｐｌｅ  Ｍａｉｌ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）などを含む標準的なネットワークプロトコルを使用したファイル又はメディアオブジェクトの配布のために、図１のＣＣＮ１００に対するその他の接続を提供してもよい。
【００４０】
ストレージ２１６は、本明細書において記述されている機能を提供する命令及び／又はデータを保存する一時的ではないストレージ媒体を含んでもよい。ストレージ２１６は、ダイナミックランダムアクセスメモリ（ＤＡＲＭ）装置、スタティックランダムアクセスメモリ（ＳＲＡＭ）装置、フラッシュメモリ、又はなんらかのその他のメモリ装置を含んでもよい。又、いくつかの実装形態においては、ストレージ２１６は、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、ＣＤ−ＲＯＭ装置、ＤＶＤ−ＲＯＭ装置、ＤＶＤ−ＲＡＭ装置、ＤＶＤ−ＲＷ装置、フラッシュメモリ装置、又は相対的に永久的な方式で情報を保存するなんらかのその他のマスストレージを含む不揮発性メモリ又は類似の永久的なストレージ及び媒体をも含む。又、ストレージ２１６は、一時的に保存される又はメモリ２１７内に読み込まれる命令及び／又はデータを保存してもよい。
【００４１】
図２Ｂに示されているように、キャッシュマネージャアプリケーション２１２は、本明細書において集合的に「モジュール」と呼ばれるコンテンツキャッシュモジュール２０６（以下、「ＣＣモジュール２０６」）、ペンディング関心テーブルモジュール２０７（以下、「ＰＩＴモジュール２０７」）、転送情報ベースモジュール２０８（以下、「ＦＩＢモジュール２０８」）、及び通信モジュール２０９のうちの少なくとも１つを含んでもよい。モジュール２０６〜２０９を含むキャッシュマネージャアプリケーション２１２は、一般に、本明細書において記述されている機能及び動作を実行するか又はその実行を制御するべく、プロセッサ装置２１３によって実行可能であるプログラミングコード及び／又はコンピュータ可読命令を含むソフトウェアを含んでもよい。モジュール２０６〜２０９のうちの１つ又は複数を含むキャッシュマネージャアプリケーション２１２は、システム２１０のコンポーネントのうちの１つ又は複数からデータを受け取ってもよく、且つ／又は、データをストレージ２１６及びメモリ２１７のうちの１つ又は両方の内部に保存してもよい。
【００４２】
ＣＣモジュール２０６は、一般に、本明細書において更に詳細に説明するように、関心パケットを、図１の中間ノード１０４などの中間ノードにおいて保存されうる対応したデータパケットと関連付けるように、構成されてもよい。
【００４３】
ＰＩＴモジュール２０７は、本明細書において更に詳細に説明するように、それぞれの関心パケットを１つ又は複数の受け取りインターフェイスと関連付けることにより、（対応する要求されたデータパケットが受け取られる時点まで）サービスされるか又はペンディング状態にあるそれぞれの受け取った関心パケットを記録及び追跡するように構成されてもよい。これらの及びその他の実装形態においては、ＰＩＴモジュール２０７は、ＰＩＴ２０４からデータを読み取ってもよく、且つ／又は、これに対してデータを書き込んでもよい。
【００４４】
ＦＩＢモジュール２０８は、本明細書において更に詳細に説明するように、関心パケットを、関心パケットがその上において受信及び転送される１つ又は複数の対応するインターフェイス２０１と関連付けるように、構成されてもよい。ＦＩＢモジュール２０８は、ＦＩＢ２０５からデータを読み取ってもよく、且つ／又は、データをＦＩＢ２０５に対して書き込んでもよい。
【００４５】
通信モジュール２０９は、モジュール２０６〜２０８とシステム２１０のその他のコンポーネントの間の通信を処理するルーチンを含むソフトウェアとして実装されてもよい。通信モジュール２０９は、キャッシュマネージャアプリケーションが実装されている場所に応じて、ノード１０２〜１０４のうちの１つ又は複数との間において、インターフェイス２０１を介して、データを送信及び受信する。いくつかの実装形態においては、通信モジュール２０９は、モジュール２０６〜２０８のうちの１つ又は複数からデータを受け取り、且つ、データをストレージ２１６及びメモリ２１７のうちの１つ又は複数の内部において保存する。いくつかの実装形態においては、通信モジュール２０９は、ストレージ２１６又はメモリ２１７からデータを取得し、且つ、データをモジュール２０６〜２０８のうちの１つ又は複数に対して送信する。
【００４６】
例示用の一実装形態においては、通信モジュール２０９は、下流ノードから複数の関心パケットを受け取ってもよい。関心パケットは、コンテンツのデータパケットのうちのいくつか又はすべてを識別してもよい。以下の説明におけるわかりやすさを目的として、２つを上回る数の関心パケットが受け取られてもよいという点を理解した上で、第１及び第２関心パケットについて説明する。第１及び第２関心パケットは、それぞれ、コンテンツを集合的に形成する複数のデータパケットのうちの第１及び第２データパケットを識別してもよい。第１データパケットは、第２データパケット内に含まれるコンテンツの部分に先行してコンテンツ内において発生するコンテンツの部分を含んでもよい。例えば、コンテンツがビデオ又はオーディオファイルを含む場合には、第１データパケットは、コンテンツの開始点において、又は第２データパケット内に含まれているコンテンツの部分よりもコンテンツの開始点に近接した状態で、発生するコンテンツの部分を含んでもよい。
【００４７】
この及びその他の実装形態においては、ＣＣモジュール２０６は、第１及び第２データパケットについてＣＣ２０３をチェックしてもよく、且つ、第１及び第２データパケットがＣＣ２０３に存在していないことに応答して、ＰＩＴモジュール２０７は、第１及び第２関心パケットについてＰＩＴ２０４をチェックする。
【００４８】
第１及び第２関心パケットがＰＩＴ２０４に存在しておらず、且つ、下流ノードから受け取った第１関心パケットのキャッシュフラグがオフ状態であることに応答して、ＰＩＴモジュール２０７は、第１及び第２関心パケットをＰＩＴ２０４内において記録し、ＰＩＴモジュール２０７は、ＰＩＴ２０４内の第１関心パケットのキャッシュフラグを設定し、且つ、ＦＩＢモジュール２０８は、第１関心パケットによって識別される第１データパケットがＣＣ２０３内においてキャッシングされることになることを通知するように第１関心パケット内のキャッシュフラグが設定された状態で、第１及び第２関心パケットを上流ノードに転送し、通信モジュール２０９は、上流ノードから第１及び第２データパケットを受け取り、且つ、ＣＣモジュール２０６は、第１データパケットをＣＣ２０３内においてキャッシングする。第１及び第２データパケットが属しているコンテンツがあまり人気がない場合には（例えば、第１及び第２データパケットが一回しか要求されていない場合には）、ＣＣモジュール２０６は、第２データパケットをキャッシングすることなしに、第１データパケットのみをキャッシングしてもよい。
【００４９】
或いは、この代わりに、且つ、第１データパケットがＣＣ２０３内に存在していることに応答して、通信モジュール２０９は、第１データパケットを下流ノードに供給し、且つ、ＣＣモジュール２０６は、ＣＣ２０３内の第１データパケットのカウント値を増分する。ＣＣモジュール２０６は、第１データパケットのカウント値に基づいて、ＣＣ２０３内に保存されるべきコンテンツの更なるデータパケットの数を判定してもよい。いくつかの実装形態においては、判定される更なるデータパケットの数とは無関係に、保存されるべき更なるデータパケットは、ＣＣ２０３内に既に保存されてい後続のデータパケットに続いて又はこれに直接的に続いてコンテンツ内において発生するデータパケットを含んでもよい。例えば、第１データパケットの後に、第１データパケットに直接的に続いてコンテンツ内において発生する第２データパケットが、ＣＣ２０３内において保存されてもよく、これには、第２データパケットに直接的に続いてコンテンツ内において発生する第３データパケットが後続し、これには、第３データパケットに直接的に続いてコンテンツ内において発生する第４データパケットが後続し、以下同様である。
【００５０】
コンテンツの判定された数のデータパケットは、ＣＣ２０３内において保存される。ＣＣ内に未だ保存されていない判定された数のデータパケットのそれぞれごとに、これは、ＰＩＴモジュール２０７がＰＩＴ２０４内の対応したデータパケットを識別する関心パケットのうちの対応した関心パケットを記録するステップと、ＰＩＴモジュール２０７がＰＩＴ２０４内の関心パケットのうちの対応した関心パケットのキャッシュフラグを設定するステップと、ＦＩＢモジュール２０８が、関心パケットのうちの対応した関心パケットによって識別された対応するデータパケットがＣＣ２０３内においてキャッシングされることになることを通知するように関心パケットのうちの対応した関心パケット内のキャッシュフラグが設定された状態で、関心パケットのうちの対応した関心パケットを上流ノードに転送するステップと、ＣＣモジュー２０６が、対応したデータパケットをＣＣ２０３内においてキャシングするステップと、を含んでもよい。
【００５１】
第１及び第２関心パケットがＰＩＴ２０４に存在しておらず、且つ、下流ノードから受け取った第１関心パケットのキャッシュフラグが下流からの第１関心パケットの受け取りの時点において設定されていることに応答して、ＰＩＴモジュール２０７は、ＰＩＴ２０４内の第１関心パケットのキャッシュフラグを設定することなしに、第１関心パケットをＰＩＴ２０４内において記録し、且つ、通信モジュール２０９は、関心パケットを上流ノードに転送する。
【００５２】
カウント値に基づいたＣＣ２０３内に保存されるべき更なるデータパケットの数は、任意の適切な方式又はプロセスに従って判定されてもよい。例示用の実装形態においては、更なるデータパケットの数は、２カウント値として判定されてもよい。従って、第１データパケットが、既にＣＣ２０３に存在しており、且つ、（例えば、第１関心パケットの一回の受信によって）１回だけ要求されている場合には、ＣＣ２０３内の第１データパケットのカウント値は、ゼロであってもよい。第１関心パケットが順番に受け取られるたびに、カウント値は、増分されてもよい。例えば、第１関心パケットの最初の後続の受け取りに応答して、カウント値は、１に増分されてもよく、且つ、２1＝２であることから、コンテンツの２つの更なるデータパケット（例えば、第２及び第３データパケット）がＣＣ２０３内においてキャッシングされてもよい。別の例として、第１関心パケットの第２の後続の受け取りに応答して、カウント値は、２に増分されてもよく、且つ、２2＝４であることから、コンテンツの合計で４つの更なるデータパケットが、ＣＣ２０３内においてキャッシングされてもよく、第２及び第３データパケットが既にＣＣ２０３内においてキャッシングされている場合には、この時点において、コンテンツの第４及び第５データパケットのみの追加が必要となろう。コンテンツの増大する人気を示すカウント値の増大に伴って、コンテンツの更なるデータパケットがＣＣ２０３内においてキャッシングされることになる。
【００５３】
図３は、本明細書において記述されている少なくとも１つの実装形態に従って構成された例示用のＣＣＮルーター内におけるキャッシング方式を示す概略図である。ＣＣＮルーターは、図２ＡのＣＣＮルーター及び／又は図２Ｂのシステム２００を含んでもよく、或いは、これらに含まれてもよい。図３のＣＣＮルーターは、例えば、ＣＣＮルーター２００に類似するように実装されてもよい。
【００５４】
下流のユーザーノードが、コンテンツソースノードによってホスティングされているコンテンツのストリーミングを求める際に、ユーザーノードは、コンテンツを集合的に形成するデータパケットのいくつか又はすべてに対応した関心パケットを送信してもよい。下流のユーザーノード及びコンテンツソースノードは、それぞれ、図１のユーザーノード１０２及びコンテンツソースノード１０３に対応してもよい。わかりやすさを目的として、図３の例示用のＣＣＮルーターは、それぞれ、第１、第２、及び第３データパケットを識別する３つの関心パケットｃ１、ｃ２、及びｃ３を受け取るものと仮定されており、ここで、第１、第２、及び第３データパケットは、集合的に、コンテンツｃを形成している。関心パケットｃ１は、第１データパケットに対する要求に対応している。関心パケットｃ１、ｃ２、及びｃ３に関する第１要求を受け取った際に、ルーターは、対応するデータパケットについて、そのＣＣをチェックしてもよい。データパケットがＣＣに存在していないことに応答し、ルーターは、関心パケットｃ１、ｃ２、及びｃ３について、そのＰＩＴをチェックしてもよい。関心パケットがＰＩＴに存在しておらず、且つ、関心パケットｃ１、ｃ２、及びｃ３のキャッシュフラグがオフ状態にあることに応答して、ルーターは、関心パケットｃ１、ｃ２、及びｃ３をＰＩＴ内においてを記録し、ＰＩＴ内の関心パケットｃ２及びｃ３のキャッシュフラグを設定することなしに、ＰＩＴ内の関心パケットｃ１のキャッシュフラグを設定し、且つ、関心パケットｃ１が供給の後に図３のＣＣＮルーターのＣＣ内においてキャシングされることになると上流ノードに通知するように関心パケットｃ１内のキャッシュフラグ３０１が設定された状態で、関心パケットｃ１、ｃ２、及びｃ３を上流ノードに転送する。上述の内容の観点におけるＰＩＴの状態が、概略的に、３０７において示されている。関心パケットｃ２及びｃ３（図示されてはいない）内のキャッシュフラグ３０２は設定されない。関心パケットｃ１に対応したデータパケットが上流ノードから受け取られた際に、そのデータパケットは、図３のＣＣＮルーターのＣＣ内においてキャッシングされ、且つ、関心パケットｃ１が受け取られた下流ノードに転送される。
【００５５】
図３のＣＣＮルーターが、コンテンツｃについて、下流ノードから、例えば、関心パケットｃ１、ｃ２、及びｃ３を含む第２要求を受け取った際に、図３のＣＣＮルーターにおいて保存されている関心パケットｃ１によって識別される第１データパケットが下流ノードに供給され、且つ、ＣＣ３０３に示されているように、関心パケットｃ１に対応した第１データパケットのカウント値が増分される。コンテンツの２n個の更なるデータパケットが図３のＣＣＮルーターにおいてキャッシングされることになるように、指数関数（又は、その他の適切な関数）が実装されてもよく、ここで、ｎは、カウント値である。例えば、カウント値が１であり、且つ、第２要求の時点であるか又はその前後である際には、関心パケットｃ２及びｃ３は、ＰＩＴ内において記録されてもよく、関心パケットｃ２及びｃ３のキャッシュフラグは、ＰＩＴ内において設定されてもよく、且つ、関心パケットｃ２  ３０６及び関心パケットｃ３  ３０８は、対応するデータパケットがルーターにおいてキャッシングされることになることを上流ノードに通知するようにキャッシュフラグが設定された状態で、上流ノードに転送されてもよい。上述の内容の観点におけるＰＩＴの状態が、概略的に、３００において示されている。
【００５６】
図４Ａ〜図４Ｄは、本明細書において記述されている少なくとも一実装形態に従って構成されたＣＣＮ内のノードのネットワーク内におけるキャッシング方式を示す概略図である。以下、図４Ａ〜図４Ｄについて説明することとする。図４Ａ〜図４Ｄにおいて、下流及び上流方向は、矢印によってラベルが付与されており、ここで、下流は、コンテンツソースノードからユーザーノードへの方向に対応し、且つ、上流は、これとは反対のユーザーノードからコンテンツソースノードへの方向に対応している。
【００５７】
図４Ａにおいて、ユーザーノード４００における第１ユーザーは、ＣＣＮルーターを含む第１中間ノード４０１ａを介して、通信自在にＣＣＮ（例えば、インターネット）に対して結合されている。ユーザーノード４００は、コンテンツｃを集合的に形成するデータパケットに対応した関心パケットｃ１、ｃ２、及びｃ３を第１中間ノード４０１ａに対して送信することにより、コンテンツｃを要求してもよい。わかりやすさを目的として、コンテンツｃは、関心パケットｃ１、ｃ２、及びｃ３に対応した３つの断片又はデータパケットから構成されるものと仮定されている。第１中間ノード４０１ａは、ユーザーノード４００から関心パケットｃ１、ｃ２、及びｃ３のそれぞれを受け取ってもよい。ｃ１、ｃ２、及びｃ３に対応したデータパケットについて、第１中間ノード４０１ａのＣＣをチェックし、且つ、これらのデータパケットが存在していないことを見出した後に、第１中間ノード４０１ａは、関心パケットｃ１、ｃ２、及びｃ３について、第１中間ノード４０１ａのＰＩＴをチェックしてもよい。関心パケットがＰＩＴに存在しておらず、且つ、第１関心パケットｃ１のキャッシュフラグがオフ状態にあることに応答して、第１中間ノード４０１ａは、関心パケットｃ１、ｃ２、及びｃ３をＰＩＴ内において記録してもよく、ＰＩＴ内の第１関心パケットｃ１のキャッシュフラグを設定してもよく、且つ、関心パケットｃ１、ｃ２、及びｃ３を、転送経路４０４を介して、コンテンツソースノード４０２に向かって、上流の第２中間ノード４０１ｂに転送してもよい。次いで、コンテンツｃのデータパケットをそのＣＣ内において現在有していない第２中間ノード４０１ｂは、関心パケットｃ１、ｃ２、及びｃ３をコンテンツソースノード４０２に転送してもよく、コンテンツソースノード４０２は、サーバーを含んでもよい。コンテンツソースノード４０２は、関心パケットｃ１に対応した第１データパケット４０３ａ、関心パケットｃ２に対応したデータパケット４０３ｂ、及び関心パケットｃ３に対応した第３データパケット４０３ｃをホスティングしていてもよい。データパケット４０３ａ〜４０３ｃは、本明細書においては、データパケッ４０３と集合的に呼称される。
【００５８】
次いで、図４Ｂにおいて、コンテンツソースノード４０２は、逆の経路４０５を介して、データパケット４０３をユーザーノード４００に対して返送してもよい。データパケット４０３は、キャッシュフラグが任意の対応した関心パケットについて第２中間ノー４０１ｂのＰＩＴ内において設定されていない場合には、第２中間ノード４０１ｂにおいてキャッシングされなくてもよい。但し、第１中間ノード４０１ａは、第１、第２、及び第３データパケット４０３を受け取ることになり、それらのデータパケットをユーザーノード４００に転送することになり、且つ、第１データパケット４０３ａを第１中間ノード４０１ａのＣＣ内においてキャッシングすることになる。図４Ｂの逆の経路４０５は、ＣＣＮネットワーク内の供給経路の一例である。
【００５９】
図４Ｃにおいて、第２ユーザーノード４０６における第２ユーザーが、第１中間ノード４０１ａを介してＣＣＮ（例えば、インターネット）に対して通信自在に結合されてもよい。第２ユーザーノード４０６は、コンテンツｃを集合的に形成するデータパケット４０３に対応しうる関心パケットｃ１、ｃ２、及びｃ３を第１中間ノード４０１ａに送信することにより、同一のコンテンツｃを要求してもよい。関心パケットｃ１に対応した第１データパケット４０３ａが第１中間ノード４０１ａのＣＣ内に存在していることに応答して、第１中間ノード４０１ａは、関心パケットｃ１に対応した第１データパケット４０３ａを第２ユーザーノード４０６に供給してもよい。又、第１中間ノード４０１ａは、そのＣＣ内の第１データパケット４０３ａのカウント値を増分してもよい。この例においては、第１データパケット４０３ａは、一回だけ供給されており、且つ、カウント値は、限定を伴うことなしに、１の値であってもよい。カウント値に基づいて、第１中間ノード４０１ａは、ＣＣ内に保存されるべきコンテンツｃの更なるデータパケットの数を判定してもよい。１のカウント値が付与された場合に、第１中間ノード４０１ａは、コンテンツｃの２カウント値個の又は２つの更なるデータパケットがＣＣ内において保存されるようにしてもよい。例えば、第２及び第３データパケット４０３ｂ及び４０３ｃなどの第１中間ノード４０１ａのＣＣ内において未だ保存されていない既定数のデータパケットのそれぞれごとに、第１中間ノード４０１ａは、それらがＣＣ内に保存されるようにしてもよく、これには、関心パケットｃ２及びｃ３のそれぞれをそのＰＩＴ内に記録するステップと、そのＰＩＴ内の関心パケットｃ２及びｃ３のそれぞれごとにキャッシュフラグを設定するステップと、転送経路４０７を介して、コンテンツソースノード４０２に向かって、第２中間ノード４０１ｂなどの上流ノードに対して、キャッシュフラグが設定された状態で、関心パケットｃ２及びｃ３を転送するステップと、が含まれる。キャッシュフラグが設定された状態で関心パケットｃ２及びｃ３を受け取ることに応答して、第２中間ノード４０１ｂは、それらの関心パケットをコンテンツソースノード４０２に転送してもよく、且つ、それらの関心パケットがそのＰＩＴに存在していない場合にのみ、関心パケットｃ２及びｃ３を記録してもよい。
【００６０】
図４Ｄにおいて、関心パケットｃ２及びｃ３に対応した第２及び第３データパケット４０３ｂ及び４０３ｃは、逆の経路４０８に沿って、コンテンツソースノード４０２から第１中間ノード４０１ａに送信されてもよい。第１中間ノード４０１ａは、図４Ｃとの関係において説明した動作の結果として、第２及び第３データパケット４０３ｂ及び４０３ｃを保存してもよい。図４Ｄの逆の経路４０８は、ＣＣＮネットワーク内の供給経路の一例である。
【００６１】
図５は、ＣＣＮ内におけるノードのネットワークの供給経路に沿ったコンテンツ配置の方法５００の例示用のフロー図である。方法５００は、全体的に又は部分的に、図１の１つ又は複数の中間ノード１０４、図２ＡのＣＣＮルーター、図２Ｂのシステム２１０、図４Ａ〜図４Ｄの中間ノード４０１ａ及び４０１ｂの１つ又は両方、或いは、別の適切なネットワークノード、ＣＣＮルーター、及びシステムにより、実装されてもよい。方法５００は、ブロック５０１において始まってもよい。
【００６２】
ブロック５０１において、ＣＣＮルーターなどの第１ノードが、下流ノードから第１及び第２関心パケットを受け取っている。下流ノードは、図１のユーザーノード１０２のいずれかなどのユーザーノード又は図１の中間ノード１０４のいずれかなどの中間ノードを含んでもよい。第１及び第２関心パケットは、それぞれ、コンテンツを集合的に形成する複数のデータパケットのうちの第１及び第２データパケットを識別している。簡潔性を目的として、図５のコンテキストにおいては、第１及び第２パケットのみについて説明するが、第１ノードは、下流ノードから２つを上回る数の関心パケットを受け取ってもよい。又、第１ノードは、コンテンツを集合的に形成するデータパケットを識別する最大ですべての関心パケットを受け取ってもよい。ブロック５０１は、ブロック５０２によって後続されてもよい。
【００６３】
ブロック５０２において、第１ノードは、第１及び第２データパケットについて、そのＣＣをチェックしている。第１ノードは、図２ＢのＣＣモジュール２０６などのＣＣキャッシュモジュールを使用することにより、第１及び第２データパケットについて、そのＣＣをチェックしてもよい。第１ノードのＣＣは、図２Ａ〜図２ＢのＣＣ２０３を含んでもよい。ブロック５０２は、ブロック５０３によって後続されてもよい。
【００６４】
ブロック５０３において、第１ノードは、第１及び／又は第２データパケットが第１ノードのＣＣ内に存在しているかどうかを判定してもよい。ブロック５０３は、第１及び第２データパケットが第１ノードのＣＣに存在していない場合には（ブロック５０３の「いいえ」）、ブロック５０４によって後続されてもよく、或いは、第１データパケット及び／又は第２データパケットが第１ノードのＣＣに存在している場合には（ブロック５０３の「はい」）、ブロック５１０によって後続されてもよい。
【００６５】
ブロック５１０において、第１データパケットが第１ノードのＣＣに存在していることに応答し、第１ノードは、第１データパケットを下流ノードに供給することになり、且つ、コンテンツキャッシュ内の第１データパケットのカウント値を増分することになる。この代わりに、又はこれに加えて、第２データパケットが第１ノードのＣＣに存在していることに応答して、第１ノードは、第２データパケットを下流ノードまで供給することになる。第１及び／又は第２データパケットは、図２Ｂの通信モジュール２０９などの第１ノードの通信モジュールにより、供給されてもよく、且つ、カウント値が、図２Ｂのコンテンツキャッシュモジュール２０６などの第１ノードのＣＣモジュールにより、増分されてもよい。
【００６６】
ブロック５０４において、且つ、第１及び第２データパケットがブロック５０３においてコンテンツキャッシュに存在していないことに応答して、第１ノードは、第１及び第２関心パケットについて、そのＰＩＴをチェックしてもよい。第１ノードは、図２ＢのＰＩＴモジュールなどのＰＩＴモジュールを使用することにより、そのＰＩＴをチェックしてもよい。第１ノードのＰＩＴは、図２Ａ〜図２ＢのＰＩＴ２０４を含んでもよい。ブロック５０４は、ブロック５０５によって後続されてもよい。
【００６７】
ブロック５０５において、第１ノードは、第１及び第２関心パケットがそのＰＩＴ内に存在しているかどうかを判定してもよい。ブロック５０５は、ブロック５０６により（ブロック５０５における「いいえ」）、又は、ブロック５０９により（ブロック５０５における「はい」）、後続されてもよい。
【００６８】
ブロック５０９において、第１及び第２関心パケットが第１ノードのＰＩＴ内に存在していることに応答して、第１ノードは、第１及び第２関心パケットのうちのそれぞれの関心パケットの到来フェイスを第１ノードのＰＩＴに追加してもよく、且つ、第１及び第２関心パケットによって識別される第１及び第２データパケットを受け取るべく待機してもよい。図５に示されてはいないが、ブロック５０９に後続し、方法５００は、第１及び第２データパケットを受け取るステップと、第１ノードのＰＩＴ内の第１及び第２関心パケットについて列挙されたフェイスのそれぞれから第１及び第２データパケットを送信するステップと、を更に含んでもよい。第１ノードは、図２ＢのＰＩＴモジュール２０７によるなどのように、第１ノードのＰＩＴモジュールを使用することにより、第１及び第２関心パケットを第１ノードのＰＩＴに追加してもよい。
【００６９】
ブロック５０６において、第１ノードは、下流ノードから受け取った第１関心パケットのキャッシュフラグがオフ状態であるかどうかを判定してもよい。ブロック５０６は、ブロック５０７により（ブロック５０６における「はい」）、又はブロック５０８により（ブロック５０６の「いいえ」）、後続されてもよい。
【００７０】
ブロック５０７において、第１及び第２関心パケットが第１ノードのＰＩＴに存在しておらず、且つ、下流ノードから受け取った第１関心パケットのキャッシュフラグがオフ状態にあることに応答して、第１ノードは、１）第１及び第２関心パケットを第１ノードのＰＩＴ内において記録してもよく、２）第１ノードのＰＩＴ内の第１関心パケットのキャッシュフラグを設定してもよく、３）第１関心パケットによって識別される第１データパケットが第１ノードのコンテンツキャッシュ内においてキャッシングされることになると通知するように第１関心パケット内のキャッシュフラグが設定された状態で、且つ、第２関心パケット内のキャッシュフラグを設定することなし、第１及び第２関心パケットを上流ノードに転送してもよく、４）上流ノードから第１及び第２データパケットを受け取ってもよく、且つ、５）第１データパケットを第１ノードのＣＣ内においてキャッシングしてもよい。或いは、この代わりに、又はこれに加えて、上流ノードから受け取ったデータパケットは、第１ノードのＰＩＴ内において識別された対応するフェイスから、下流に転送されてもよい。上述の内容のそれぞれのものの実行は、第１ノードの１つ又は複数の対応するモジュールによって実現されてもよく、これらのモジュールは、図２Ｂのモジュール２０６〜２０９などのモジュールを含んでもよい。
【００７１】
ブロック５０８において、第１及び第２関心パケットが第１ノードのＰＩＴに存在しておらず、且つ、下流ノードから受け取った第１関心パケットのキャッシュフラグが第１関心パケットの受け取りの時点において既に設定されていることに応答して、第１ノードは、１）第１ノードのＰＩＴ内の第１関心パケットのキャッシュフラグを設定することなしに、第１関心パケットを第１ノードのＰＩＴ内において記録してもよく、且つ、２）第１関心パケットを上流ノードに転送してもよい。
【００７２】
当業者は、本明細書において開示されているこの及びその他のプロセス及び方法の場合には、プロセス及び方法において実行される機能は、異なる順序で実装されてもよいことを理解するであろう。更には、概説されているステップ及び動作は、例として提供されているものに過ぎず、且つ、ステップ及び動作のいくつかは、開示されている実装形態の本質を逸脱することなしに、任意選択であってもよく、更に少ない数のステップ及び動作に組み合わせられてもよく、或いは、更なるステップ及び動作に拡張されてもよい。
【００７３】
例えば、方法５００は、第１ノードがデータパケットのうちの少なくともいくつかのその他のデータパケットの関心パケットを受け取るステップと、カウント値に基づいて、第１ノードのＣＣ内に保存されるべきコンテンツのデータパケットの数を判定するステップと、コンテンツの判定された数のデータパケットが第１ノードのＣＣ内において保存されるようにするステップと、を更に含んでもよい。コンテンツの判定された数のデータパケットが第１ノードのＣＣ内に保存されるようにするステップは、ＣＣ内に未だ保存されていない判定された数のデータパケットのそれぞれについて、１）対応するデータパケットを識別する関心パケットのうちの対応した関心パケットを第１ノードのＰＩＴ内において記録するステップと、２）第１ノードのＰＩＴ内の関心パケットのうちの対応した関心パケットのキャッシュフラグを設定するステップと、３）関心パケットのうちの対応した関心パケットによって識別される対応したデータパケットが第１ノードのＣＣ内においてキャッシングされることになると通知するように関心パケットのうちの対応した関心パケット内のキャッシュフラグが設定された状態で、関心パケットのうちの対応した関心パケットを上流ノードに転送するステップと、４）対応するデータパケットを第１ノードのＣＣ内においてキャッシングするステップと、を含んでもよい。
【００７４】
或いは、この代わりに、又はこれに加えて、方法５００は、最も長い間使用されなかった又は最も使用頻度が少なかったコンテンツの相対的に大きなインデックスに基づいて置換ポリシーを実装するステップを含んでもよい。置換ポリシーは、第１ノードのＣＣがフル（ｆｕｌｌ：いっぱい）であり、且つ、第１ノードが、第１ノードのＣＣ内においてキャッシングされることになると自身が示していたデータパケットを受け取ることに応答して、実装されてもよい。このインデックスは、対応するコンテンツの開始点に対するデータパケットの近接性を通知してもよい。例えば、コンテンツの第１データパケット（例えば、コンテンツの開始点における第１データパケット）は、１のインデックスなどの相対的に小さなインデックスを有してもよい。コンテンツの次のデータパケット、即ち、この例においては、第２データパケットは、２のインデックスなどの相対的に大きなインデックスを有してもよい。コンテンツの次のデータパケット、即ち、この例においては、第３データパケットは、３のインデックスなどの更に大きなインデックスを有してもよい。コンテンツのそれぞれのデータパケットのインデックスは、同一のコンテンツの先行するデータパケットのインデックスよりも大きくてもよい。
【００７５】
これらの及びその他の実装形態においては、方法５００は、置換ポリシーを実装してもよく、置換ポリシーは、データパケットのインデックスと、どれだけ最近に対応するコンテンツが要求されたのか又はどれだけ頻繁に対応するコンテンツが要求されたのかのうちの１つ、の両方に従って、第１ノードのＣＣ内に保存されているデータパケットを置換するステップを含んでもよい。コンテンツに対する要求の最新性及び／又は頻度は、それぞれの関心パケット及び／又はデータパケットの第１ノードのＣＣ及び／又はＰＩＴ内のタイムスタンプを使用することにより、且つ／又は、第１ノードのＣＣ内に保存された、異なるコンテンツに属する、第１データパケットのうちのそれぞれの第１データパケットのカウント値を使用することにより、追跡されてもよい。
【００７６】
データパケットのインデックスと、どれだけ最近に対応するコンテンツが要求されたか、の両方に従ってデータパケットを置換するステップは、第１データパケットが上流ノードから受け取られた際に第１ノードのＣＣがフルであることに応答して、（１）関心パケットが、第１ノードのＣＣ内に保存されている少なくとも１つのデータパケットを有するその他のコンテンツよりも以前に受け取られている第１ノードのＣＣ内に保存されている少なくとも１つのデータパケットを有する複数のコンテンツのうちから、最も長い間要求されていないコンテンツを識別するステップと、（２）第１ノードのＣＣ内に保存されている最も長い間要求されていないコンテンツの任意のその他のデータパケットの最大インデックスを有するデータパケットを識別するステップと、（３）第１ノードのコンテンツキャッシュ内の識別されたデータパケットを第１データパケットによって置換するステップと、を含んでもよい。
【００７７】
データパケットのインデックスと、どれだけ頻繁に対応するコンテンツが要求されているか、の両方に従ってデータパケットを置換するステップは、第１データパケットが上流ノードから受け取られた際に第１ノードのＣＣがフルであることに応答して、（１）関心パケットが、第１ノードのＣＣ内に保存されている少なくとも１つのデータパケットを有するその他のコンテンツよりも低い頻度で受け取られている第１ノードのＣＣ内に保存されている少なくとも１つのデータパケットを有する複数のコンテンツのうちから、最も少ない頻度で要求されているコンテンツを識別するステップと、（２）第１ノードのＣＣ内に保存されている最も少ない頻度で要求されたコンテンツの任意のその他のデータパケットの最大のインデックスを有するデータパケットを識別するステップと、（３）第１ノードのコンテンツキャッシュ内の識別されたデータパケットを第１データパケットによって置換するステップと、を含んでもよい。
【００７８】
本明細書において記述されている実装形態は、更に詳細に後述するように、様々なコンピュータハードウェア又はソフトウェアモジュールを含む特殊目的又は汎用コンピュータの使用を含んでもよい。
【００７９】
本明細書において記述されている実装形態は、その上部に保存されているコンピュータ実行可能命令又はデータ構造を担持するか又は有するコンピュータ可読媒体を使用することにより、実装されてもよい。このようなコンピュータ可読媒体は、汎用又は特殊目的コンピュータによってアクセスされうる任意の入手可能な媒体であってもよい。例として、且つ、限定を伴うことなしに、このようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、又はその他の光ディスクストレージ、磁気ディスクストレージ、又はその他の磁気ストレージ装置、或いは、コンピュータ実行可能命令又はデータ構造の形態において望ましいプログラムコードを担持又は保存するべく使用されうると共に汎用又は特殊目的コンピュータによってアクセスされうる任意のその他のストレージ媒体を含む一時的ではないコンピュータ可読ストレージ媒体を含んでもよい。又、上述の内容の組合せも、コンピュータ可読媒体の範囲に含まれてもよい。
【００８０】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、特殊目的コンピュータ、又は特殊目的処理装置に特定の機能又は機能のグループを実行させる命令及びデータを含む。主題について、構造の特徴及び／又は方法の動作に固有の言語において記述したが、添付の請求項に定義されている主題は、必ずしも、上述の特定の特徴又は動作に限定されるものではないことを理解されたい。むしろ、上述の特定の特徴及び動作は、請求項を実装する例示用の形態として開示されたものである。
【００８１】
本明細書において使用されている「モジュール」又は「コンポーネント」という用語は、演算システム上において稼働するソフトウェアオブジェクト又はルーチンを意味してもよい。本明細書において記述されている異なるコンポーネント、モジュール、エンジン、及びサービスは、演算システム上において（例えば、別個のスレッドとして）稼働するオブジェクト及びプロセスとして実装されてもよい。本明細書において記述されているシステム及び方法は、好ましくは、ソフトウェアにおいて実装されるが、ハードウェアにおける又はソフトウェアとハードウェアの組合せにおける実装形態も、可能であり、且つ、想定される。この説明においては、「演算エンティティ」は、以上において定義された任意の演算システムであってもよく、或いは、演算システム上において稼働する任意のモジュール又はモジュールの組合せであってもよい。
【００８２】
本明細書において記述されているすべての例及び条件に関する言語は、本発明と、当技術分野の発展のために本発明者によって寄与された概念と、を理解する際に読者を支援するべく、教育的な目的を意図したものであり、且つ、このような具体的に記述されている例及び条件に対する限定を伴うものではないものと解釈されたい。以上において本発明の実装形態について詳述しているが、本発明の精神及び範囲を逸脱することなしに、様々な変更、置換、及び変形を実施することができることを理解されたい。
【図１】
2016082578.tif 000003
【図２Ａ】
2016082578.tif 000004
【図２Ｂ】
2016082578.tif 000005
【図３】
2016082578.tif 000006
【図４Ａ】
2016082578.tif 000007
【図４Ｂ】
2016082578.tif 000008
【図４Ｃ】
2016082578.tif 000009
【図４Ｄ】
2016082578.tif 000010
【図５】
2016082578.tif 000011