(57)【要約】      （修正有）【課題】ネットワーク名を使用して複数オブジェクトのインタレストを容易にするシステムを提供する。【解決手段】リモートノードのコンテンツオブジェクトの名前及び第１のウィンドウサイズを含む、第１のインタレストを生成する。この名前は、リモートノードで、オブジェクトのコレクションを潜在的に表す。ウィンドウサイズは、システムが受容できる追加のオブジェクトの数を示す。ノードは、第１のインタレストに対応する第１の応答から、リモートノードのコレクションのマニフェストをさらに取得し、第１のインタレストに対応する第２の応答から、マニフェストに記載された第１のオブジェクトをさらに取得する。【選択図】図１Ａ
2015198451.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータによる実行時に、前記コンピュータに方法を実行させる命令を格納している、非一過性のコンピュータ可読記憶媒体であって、前記方法が、
リモートノードのコンテンツオブジェクトの名前、および第１のウィンドウサイズを含む第１のインタレストを生成することであって、前記名前が、前記リモートノードにおけるオブジェクトのコレクションを潜在的に表し、前記ウィンドウサイズが、前記コンピュータが受容できる追加のオブジェクトの数を示す、第１のインタレストを生成することと、
前記第１のインタレストに対応する第１の応答から、前記リモートノードの前記コレクションのマニフェストを取得することと、
前記第１のインタレストに対応する第２の応答から、前記マニフェストに記載された第１のオブジェクトを取得することを含む、
方法。
【請求項２】
前記マニフェストが、前記コレクションの前記オブジェクトを識別する、名前とハッシュの順序付きリストに対応する、請求項１に記載の非一過性のコンピュータ可読記憶媒体。
【請求項３】
前記第１のインタレストを転送するノードが、ネットワーク条件に基づいて前記第１のウィンドウサイズを縮小する、請求項１に記載の非一過性のコンピュータ可読記憶媒体。
【請求項４】
請求項１に記載の非一過性のコンピュータ可読記憶媒体であって、前記方法が、
前記第１の応答から、第２のウィンドウサイズを取得することと、
応答内のオブジェクトに対するペンディングインタレストテーブル（ＰＩＴ）エントリを作成することであって、前記第２のウィンドウサイズが、作成される前記ＰＩＴエントリの数を示す、ＰＩＴエントリを作成することをさらに含む、
方法。
【請求項５】
請求項４に記載の非一過性のコンピュータ可読記憶媒体であって、前記方法が、現行のノードでネットワーク条件を評価することと、前記第１の応答を転送する前に、前記第２のウィンドウサイズを縮小することをさらに含む、
方法。
【請求項６】
請求項５に記載の非一過性のコンピュータ可読記憶媒体であって、前記方法が、
前記第２のウィンドウサイズの縮小に応答して、前記現行のノードのキャッシュ用とするために、オブジェクトのＰＩＴエントリをマークすることと、
応答内での、前記オブジェクトの識別に応答して、前記オブジェクトを前記現行のノードの前記キャッシュに格納することをさらに含む、
方法。
【請求項７】
請求項６に記載の非一過性のコンピュータ可読記憶媒体であって、前記方法が、
前記現行のノードの前記キャッシュに格納された前記オブジェクトのインタレストを識別することと、
前記インタレストに対応する第２の応答を送信することであって、前記第２の応答が、前記現行のノードの前記キャッシュからの前記オブジェクトを有する、第２の応答を送信することをさらに含む、
方法。
【請求項８】
請求項１に記載の非一過性のコンピュータ可読記憶媒体であって、前記方法が、前記マニフェスト名、前記マニフェストのハッシュ、前記マニフェストのオフセット、および第３のウィンドウサイズを含む第２のインタレストを生成することをさらに含み、前記オフセットが、前記マニフェストに記載されたオブジェクトの順番を示す、方法。
【請求項９】
請求項８に記載の非一過性のコンピュータ可読記憶媒体であって、前記方法が、
前記第１の応答から第２のウィンドウサイズを取得することと、
前記第２のウィンドウサイズに基づいて、前記第３のウィンドウサイズを生成することをさらに含む、
方法。
【請求項１０】
コンピュータによる実行時に、前記コンピュータに方法を実行させる命令を格納している、非一過性のコンピュータ可読記憶媒体であって、前記方法が、
コンテンツオブジェクトの名前、およびウィンドウサイズを第１のインタレスト内で識別することであって、前記名前が、ローカルノードにおけるオブジェクトのコレクションを潜在的に表し、前記ウィンドウサイズが、パイプラインで伝送可能な追加のオブジェクトの数を示す、コンテンツオブジェクトの名前、およびウィンドウサイズを識別することと、
前記第１のインタレストに対応する第１の応答を作成することであって、前記第１の応答が、前記ローカルノードの前記コレクションのマニフェストを含む、第１の応答を作成することと、
非ゼロのウィンドウサイズの識別に応答して、前記第１のインタレストに対応する第２の応答を作成することであって、前記第２の応答が、前記マニフェストに記載された第１のオブジェクトを有する、第２の応答を作成することを含む、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般にオブジェクトのインタレストに関する。より具体的には、本開示は、ネットワーク名に基づいて、複数のオブジェクトに対してインタレストを表明することに関する。
【背景技術】
【０００２】
多くのコンピューティングアプリケーションにおいて、ネットワーク内のデバイスが、そのそれぞれのデータのコレクションに対して、インタレストを表明することが重要である場合が多い。デジタルコンテンツの普及によって、照合を必要とする膨大な数のコレクションが作成されている。コンテンツセントリックネットワーク（ＣＣＮ）アーキテクチャは、そのようなデジタルコンテンツへのアクセスを容易にするように設計されている。これらのネットワークは、エンティティ、すなわちネットワーククライアントや転送器（例えば、ルータやスイッチ）等のノードと、コンテンツ生成者とを含み、これらは、様々なコンテンツ項目に対して「インタレスト」パケットを送信し、その戻りとして、コンテンツオブジェクトを含む「応答」パケットを受信することによって、相互に通信する。オブジェクトがその位置、およびそのＩＰアドレスに結び付けられている従来のインターネットプロトコル（ＩＰ）ネットワークとは異なり、ＣＣＮにおけるコンテンツオブジェクトは、特定の名前に基づいて識別され、位置に依存しない。
【０００３】
例えば、コンピュータネットワークの複数のエリアに接続されている境界ルータは、それらのエリア（「エリア１」や「エリア２」等）の名前空間にサブスクライブすることができる。境界ルータではない他のルータは、１つのエリアにサブスクライブするのみでもよい。この場合、名前空間「エリア１」にサブスクライブしているルータは、エリア１のネットワーク構成要素のみを取得し、名前空間「エリア２」にサブスクライブしているルータは、エリア２のネットワーク構成要素のみを取得する。両方の名前空間にサブスクライブしている境界ルータは、エリア１およびエリア２のネットワーク構成要素を取得することができる。
【０００４】
ネットワーク構成要素の構造化された名前は、一意であり永続的であるため、ＣＣＮにおけるノードは、各コンテンツ項目のデータを処理することなく、構造化された名前に基づいて、各ネットワーク構成要素に対するハッシュ値を生成することができる。ノードは、付加的なハッシュが経路データコレクションのコンテンツを表すように、経路データコレクションの、個別のネットワーク構成要素に対するハッシュに基づいて、各経路データコレクションに対する、付加的なハッシュを生成することもできる。例えば、ノードは、経路データコレクションの個別のネットワーク構成要素のハッシュを処理するために、加算演算（または他の何らかの関数）を使用して、付加的なハッシュを生成することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＣＣＮにおいて、ノードは、オブジェクトの永続名に基づいて、インタレストを使用してオブジェクトを要求する。オブジェクトをホストする任意の他のノードが、応答を使用してオブジェクトを返送する。オブジェクトの大きなコレクションについて、ノードが、それぞれのオブジェクトにそれぞれのインタレストを送信する場合、ノードは、インタレストを反復的に配信する必要がある。ＣＣＮは、ネットワークに多くの望ましい特徴をもたらすが、インタレストを効率的に表現して、複数のオブジェクトを取得することについては、いくつかの問題が未解決のまま残されている。
【課題を解決するための手段】
【０００６】
一実施形態において、ネットワーク名を使用して複数オブジェクトのインタレストを容易にするシステムを提供する。動作中に、このシステムは、リモートノードのコンテンツオブジェクトの名前、および第１のウィンドウサイズを含む、第１のインタレストを生成する。この名前は、リモートノードで、オブジェクトのコレクションを潜在的に表す。ウィンドウサイズは、システムが受容できる追加のオブジェクトの数を示す。ノードは、第１のインタレストに対応する第１の応答から、リモートノードのコレクションのマニフェストをさらに取得し、第１のインタレストに対応する第２の応答から、マニフェストに記載された第１のオブジェクトをさらに取得する。
【０００７】
本実施形態の変形例において、マニフェストは、コレクションのオブジェクトを識別する、名前およびハッシュの順序付きリストに対応する。
【０００８】
本実施形態の変形例において、第１のインタレストを転送するノードは、ネットワーク条件に基づいて、第１のウィンドウサイズを縮小する。
【０００９】
本実施形態の変形例において、システムは、第１の応答から第２のウィンドウサイズを取得し、マニフェスト取得の応答として、第１のオブジェクトに対してペンディングインタレストテーブル（ＰＩＴ）エントリを作成する。第２のウィンドウサイズは、作成されるＰＩＴエントリの数を示す。
【００１０】
さらに別の変形例において、システムは、現行のノードでネットワーク条件を評価して、第１の応答を転送する前に、第２のウィンドウサイズを縮小する。
【００１１】
さらに別の変形例において、システムは、第２のウィンドウサイズの縮小に応答して、現行のノードのキャッシュ用とするために、オブジェクトのＰＩＴエントリをマークし、応答内での、このオブジェクトの識別に応答して、このオブジェクトを現行のノードのキャッシュに格納する。
【００１２】
さらに別の変形例において、システムは、現行のノードのキャッシュに格納されたオブジェクトのインタレストを識別し、このインタレストに対応する第２の応答を送信する。この第２の応答は、現行のノードのキャッシュからのオブジェクトを含む。
【００１３】
この実施形態の変形例において、システムは、マニフェスト名と、マニフェストのハッシュと、マニフェストのオフセットと、第３のウィンドウサイズとを含む、第２のインタレストを生成する。このオフセットは、マニフェストに記載されたオブジェクトの順序を示している。
【００１４】
さらに別の変形例において、システムは、第１の応答から第２のウィンドウサイズを取得し、第２のウィンドウサイズに基づいて、第３のウィンドウサイズを生成する。
【００１５】
さらに別の変形例において、第１のウィンドウサイズと第２のウィンドウサイズとの相違は、リモートノードのネットワーク条件を示している。
【発明の効果】
【００１６】
一実施形態において、ネットワーク名を使用して複数オブジェクトのインタレストを容易にするシステムを提供する。動作中に、システムは、第１のインタレストにおいて、コンテンツオブジェクトの名前とウィンドウサイズを識別する。この名前は、システムにおけるオブジェクトのコレクションを潜在的に表す。ウィンドウサイズは、パイプラインで伝送可能な追加のオブジェクトの数を示す。システムは、第１のインタレストに対応する第１の応答を作成する。第１の応答は、システムのコレクションのマニフェストを含む。非ゼロのウィンドウサイズの識別に応答して、システムは、第１のインタレストに対応する第２の応答を作成する。第２の応答は、マニフェストに記載された第１のオブジェクトを含む。
【図面の簡単な説明】
【００１７】
【図１Ａ】図１Ａは、本発明の一実施形態による、コンテンツセントリックネットワーク（ＣＣＮ）において、マニフェストベースのコンテンツネットワーキング（ＭＢＣＮ）を容易にする、例示的なネットワークを示す。
【図１Ｂ】図１Ｂは、本発明の一実施形態による、オブジェクトのコレクションのマニフェストの、例示的なフォーマットを示す。
【図２Ａ】図２Ａは、本発明の一実施形態による、ＣＣＮにおける、複数オブジェクトのインタレストに基づいた例示的な通信を示す。
【図２Ｂ】図２Ｂは、本発明の一実施形態による、パイプライン化されたインタレストを有する、ＣＣＮにおける、複数オブジェクトのインタレストに基づく例示的な通信を示す。
【図２Ｃ】図２Ｃは、本発明の一実施形態による、ネットワーク内キャッシングを有する、ＣＣＮにおける、複数オブジェクトのインタレストに基づく例示的な通信を示す。
【図３Ａ】図３Ａは、本発明の一実施形態による、マニフェスト、およびマニフェストに記載されたオブジェクトをウィンドウサイズに基づいて受信する消費者ノードの処理を示す、フローチャートを提示する。
【図３Ｂ】図３Ｂは、本発明の一実施形態による、マニフェスト、およびマニフェストに記載されたオブジェクトをウィンドウサイズに基づいて送信する生成者ノードの処理を示す、フローチャートを提示する。
【図３Ｃ】図３Ｃは、本発明の一実施形態による、マニフェスト、およびマニフェストに記載されたオブジェクトをウィンドウサイズに基づいて転送する中間ノードの処理を示す、フローチャートを提示する。
【図４Ａ】図４Ａは、本発明の一実施形態による、マニフェストおよびウィンドウサイズに基づいて、マニフェストに記載されたオブジェクトを受信する消費者ノードの処理を示す、フローチャートを提示する。
【図４Ｂ】図４Ｂは、本発明の一実施形態による、マニフェストおよびウィンドウサイズに基づいて、マニフェストに記載されたオブジェクトを送信する生成者ノードの処理を示す、フローチャートを提示する。
【図４Ｃ】図４Ｃは、本発明の一実施形態による、マニフェストおよびウィンドウサイズに基づいて、マニフェストに記載されたオブジェクトを転送する中間ノードの処理を示す、フローチャートを提示する。
【図５】図５は、本発明の一実施形態による、ＭＢＣＮを容易にする、例示的なコンピュータおよび通信システムを示す。  図面において、同じ参照符号は同一の図面の要素を示している。
【発明を実施するための形態】
【００１８】
以下の説明は、当業者が実施形態を作成し、使用できるようにするためのものであり、特定の用途とその要件との関連において提供される。開示された実施形態に対する種々の修正は、当業者には容易に明らかであり、本明細書で定義される一般的な原理は、本開示の精神および範囲から逸脱することなく、他の実施形態および用途に適用され得る。したがって、本発明は、示される実施形態に限定されるものではなく、本明細書に開示される原理および特徴に合致する最も広い範囲が認められるべきである。
【００１９】
本発明の実施形態において、オブジェクトのコレクションから、複数のオブジェクトのインタレストを効率的に表明することについての問題は、ノードからのインタレストパケットに、マニフェストと受信ウィンドウとを組み込むことによって解決される。マニフェストは、リモートノードにおけるオブジェクトのコレクションを表している（例えば、コレクション内のオブジェクトの名前を記載している）。受信ウィンドウのサイズは、ウィンドウサイズと呼ばれ、ノードが、追加のオブジェクト（すなわち、インタレストで指定された名前に追加する）をいくつまで受容（受信や転送等）できるかを示す。
【００２０】
既存の技術では、コンテンツセントリックネットワーク（ＣＣＮ）において、ノードが、オブジェクトの永続名を含むインタレストパケットをブロードキャストすることにより、いつでもコンテンツオブジェクト（すなわち、新しいコンテンツ項目）、すなわちオブジェクトを取得することができる。インタレストパケットは、インタレストと呼ばれる。本開示において、「コンテンツオブジェクト」および「オブジェクト」という用語は、互換的に使用される。インタレストの配信によって、ノードは、ＣＣＮ内の任意のノードから、所望のオブジェクトを取得することができる。例えば、オブジェクトの任意のホストノードが、インタレストを受信し、インタレストの名前に基づいてオブジェクトを識別し、そのローカルノードがオブジェクトをホストしていると判断し得る。これに応答して、ホストノードは、オブジェクトを含む応答パケットを送信することができる。この応答パケットは、応答と呼ばれる。しかし、今日のコンテンツオブジェクト（ＣＯｓ）は、しばしば、コレクション（ソーシャルメディアアカウントのフォトアルバム等）にグループ化される。オブジェクトの大きなコレクションについて、それぞれのオブジェクトにそれぞれのインタレストを送信することは、インタレストの配信が、非効率で、帯域幅集中的で、反復的になることにつながる。
【００２１】
この問題を解決するため、本発明の実施形態では、マニフェストベースのコンテンツネットワーキング（ＭＢＣＮ）を組み込むために、ＣＣＮを拡張する。ＣＣＮにおけるコンテンツ消費者ノードは、ウィンドウサイズと、コレクションを表すマニフェストの名前（マニフェスト名と呼ばれる）とを使用して、オブジェクトのコレクションに対するインタレストを表明することができる。ノードは、マニフェストに対するインタレストを送信し、ウィンドウサイズで、ノードが受容（受信等）できる追加のコンテンツオブジェクトの数を示す。インタレストがネットワーク中を移動すると、各中間ノードが、ローカル条件（輻輳等）を確認し、その条件に基づいてウィンドウを調整（縮小等）する。コンテンツ発行者ノードが、インタレスト内のマニフェスト名に対応するマニフェストを含む応答を送信する。一部の実施形態において、このマニフェストは、（例えば、オブジェクトの名前またはハッシュを使用して）コレクション内のコンテンツオブジェクトを記載している。コレクションは、１つ以上の他のコレクションを含み得ることに留意されたい。本開示において、「インタレストパケット」および「インタレスト」という用語は、互換的に使用される。「応答パケット」および「応答」という用語もまた、互換的に使用される。
【００２２】
一般的なＣＣＮとは異なり、ＭＢＣＮにおいては、コンテンツ生成者ノードは、マニフェストに記載されたオブジェクトを、マニフェストでの出現順に、ウィンドウサイズまで追加して、さらに送信することができる。一部の実施形態において、応答は、パケットヘッダ中のウィンドウサイズを示している。応答が、消費者ノードへと逆方向の経路をたどると（すなわち、生成者ノードから消費者ノードへの経路）、応答は、各中間ノードで、そのペンディングインタレストテーブル（ＰＩＴ）のエントリを満たし、エントリの次のウィンドウサイズ分の新たなＰＩＴエントリを追加する。ＰＩＴは、ノードが、逆方向の経路を経由した転送を予期しているのは、どのオブジェクトかを示している。一部の実施形態において、ＰＩＴは、ノードが予期しているオブジェクトの名前を含む。ノードがインタレストを転送すると、通常はＰＩＴエントリが生成される。追加のオブジェクトを含む各応答は、新しく作成されたＰＩＴエントリをたどり、これらの応答は、その対応するエントリを満たす。
【００２３】
一部の実施形態において、マニフェストは、コンテンツオブジェクトのコレクションを識別する、順序付きリストである。コレクション内の各コンテンツオブジェクトは、その名前と対応するダイジェストとによって識別され、ここでダイジェストは、コンテンツオブジェクトのハッシュ値である。一部の実施形態において、各コンテンツオブジェクトは、コンテンツが修正された時刻を示す、修正時刻によっても識別される。ここでの説明のために、マニフェストを順序付きリストとして説明したが、他の実施形態は、同期ツリーの構造になったマニフェストを含み、これには、コンテンツオブジェクト、およびネストされたコンテンツオブジェクトのコレクションも含まれる。このシステムは、マニフェストのルートハッシュ値を生成する。ルートハッシュ値は、コレクションの個別のコンテンツオブジェクトのハッシュ値に基づく、付加的なハッシュ値である。マニフェストのルートハッシュ値は、マニフェストの一意な識別子である。
【００２４】
一部の実施形態において、コレクション内のコンテンツオブジェクトは、対応する修正時刻によってさらに識別され、これは、コンテンツオブジェクトが修正された時刻を示す。異なると判断された各コンテンツオブジェクトについて、ローカルノードは、リモートマニフェスト内のコンテンツオブジェクトの修正時刻が、ローカルマニフェスト内の対応するコンテンツオブジェクトよりも、新しいか否かを判断する。リモートのコンテンツオブジェクトが、より新しい修正時刻に対応している場合は、ローカルノードは、リモートマニフェストからのコンテンツオブジェクトの値で、ローカルマニフェスト内のコンテンツオブジェクトの値を更新する。データコレクションからコンテンツ項目を除去または「ホワイトアウト」する方法の説明については、２０１２年１１月１９日に出願された、発明の名称が“Ｄａｔａ  Ｔｒａｎｓｐｏｒｔ  ｂｙ  Ｎａｍｅｄ  Ｃｏｎｔｅｎｔ  Ｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ”であり、発明者がＶａｎ  Ｌ．ＪａｃｏｂｓｏｎとＭａｒｃ  Ｅ．Ｍｏｓｋｏである、米国特許出願公開第  １３／６８１，３０６号明細書に記載されている。
【００２５】
一部の実施形態において、ネットワーククライアントと、ネットワークノード（ルータ等の転送器）と、発行者とは、情報セントリックネットワーク（ＩＣＮ）を通じて通信する。ＩＣＮにおいて、各コンテンツは個別に命名され、各データは、そのデータを、同じデータの別のバージョン、または他のソースからのデータ等の、他のデータと区別する一意な名前に結び付けられる。この一意な名前によって、ネットワークデバイスは、一意な名前を示す要求、すなわちインタレストを配信してデータを要求でき、データの格納位置や、ネットワーク上の位置や、アプリケーションや、送付手段とは無関係に、データを取得することができる。名前付きデータネットワーク（ＮＤＮ）またはＣＣＮは、ＩＣＮアーキテクチャの例である。以下の用語は、ＮＤＮまたはＣＣＮアーキテクチャの要素について説明している。
【００２６】
コンテンツオブジェクト：一意な名前に結び付けられている、１つの名前付きデータ。コンテンツオブジェクトは「永続的」であり、これは、コンテンツオブジェクトが、１つのコンピューティングデバイス内で、または複数の異なるコンピューティングデバイスにわたって、移動可能であるが変化しないことを意味する。コンテンツオブジェクトのいずれかの構成要素が変更されると、変更を行ったエンティティは、更新されたコンテンツを含む新しいコンテンツオブジェクトを作成し、新しいコンテンツオブジェクトを、新しい一意な名前と結び付ける。
【００２７】
一意な名前：ＩＣＮにおける名前は、通常は位置に依存せず、コンテンツオブジェクトを一意に識別する。データ転送デバイスは、コンテンツオブジェクトのネットワークアドレスや物理的位置に関わらず、コンテンツオブジェクトを生成、または格納するネットワークノードに向けてパケットを転送するために、名前または名前プレフィックスを使用することができる。一部の実施形態において、名前は、階層構造可変長識別子であってもよい（ＨＳＶＬＩ）。ＨＳＶＬＩは、いくつかの階層構成要素に分割することができ、様々な方法で構成され得る。例えば、個別の名前の構成要素である、ｐａｒｃ、ｈｏｍｅ、ｎｄｎ、およびｔｅｓｔ．ｔｘｔは、「／ｐａｒｃ／ｈｏｍｅ／ｎｄｎ／ｔｅｓｔ．ｔｘｔ」という名前を形成するために、左側上位のプレフィックス方式で構成され得る。したがって、名前「／ｐａｒｃ／ｈｏｍｅ／ｎｄｎ」は、「／ｐａｒｃ／ｈｏｍｅ／ｎｄｎ／ｔｅｓｔ．ｔｘｔ」の「親」または「プレフィックス」とすることができる。共同文書等、コンテンツ項目の異なるバージョン同士を区別するために、追加の構成要素が使用され得る。
【００２８】
一部の実施形態において、名前は、コンテンツオブジェクトのデータ（チェックサム値等）から、および／またはコンテンツオブジェクトの名前の要素から得られたハッシュ値等の、非階層識別子を含むことができる。ハッシュベースの名前についての説明は、２０１３年３月２０日に出願された、発明の名称が“Ｏｒｄｅｒｅｄ−Ｅｌｅｍｅｎｔ  Ｎａｍｉｎｇ  ｆｏｒ  Ｎａｍｅ−Ｂａｓｅｄ  Ｐａｃｋｅｔ  Ｆｏｒｗａｒｄｉｎｇ”であり、発明者がＩｇｎａｃｉｏ  Ｓｏｌｉｓである、米国特許出願公開第１３／８４７，８１４号明細書に記載されている。名前は、フラットなラベルであってもよい。以下、「名前」は、名前付きデータネットワークにおいて、階層名または名前プレフィックス、フラットな名前、固定長の名前、任意の長さの名前、またはラベル（例えば、マルチプロトコルラベルスイッチング（ＭＰＬＳ）ラベル）等の、１つのデータに対する任意の名前を指すために使用される。
【００２９】
インタレスト：１つのデータに対する要求を示し、その１つのデータに対する名前（または名前プレフィックス）を含むパケットである。データ消費者は、情報セントリックネットワークを介して要求すなわちインタレストを配信することができ、ＣＣＮ／ＮＤＮルータが、要求すなわちインタレストを満たすために、記憶デバイス（キャッシュサーバ等）、または要求されたデータを提供できるデータ生成者に向けて、伝搬することができる。
【００３０】
一部の実施形態において、ＩＣＮシステムは、ＣＣＮアーキテクチャを含むことができる。しかし、本明細書に開示された方法は、他の同様のＩＣＮアーキテクチャにも適用可能である。ＣＣＮアーキテクチャの説明は、２００８年１２月１８日に出願された、発明の名称が“Ｃｏｎｔｒｏｌｌｉｎｇ  ｔｈｅ  Ｓｐｒｅａｄ  ｏｆ  Ｉｎｔｅｒｅｓｔｓ  ａｎｄ  Ｃｏｎｔｅｎｔ  ｉｎ  ａ  Ｃｏｎｔｅｎｔ  Ｃｅｎｔｒｉｃ  Ｎｅｔｗｏｒｋ”であり、発明者がＶａｎ  Ｌ．ＪａｃｏｂｓｏｎとＤｉａｎａ  Ｋ．Ｓｍｅｔｔｅｒｓである、米国特許出願公開第１２／３３８，１７５号明細書に記載されており、その開示は、参照することによって、本明細書中に組み込まれる。
【００３１】
図１Ａは、本発明の一実施形態による、ＣＣＮにおいてＭＢＣＮを容易にする、例示的なネットワークを示す。ネットワーク１００は、ＣＣＮであってもよく、クライアントのデバイス１１６と、コンテンツ生成デバイス１１８とを備え、また、ノード１０２と、１０４と、１０６と、１０８と、１１０と、１１２と、１１４とにおいて、ルータまたはその他の転送器を備えている。ノード１０２〜１１４は、１つ以上のマニフェストを含むことができる。例えば、ノード１１２は、マニフェスト１４０を含む。マニフェスト１４０は、マニフェスト名１２２と、順序付きのコンテンツオブジェクトのリスト１２４とを含んでいる。ネットワーク内の任意の２つのノードが、同一のデータのコレクションを表すマニフェストを含むことができ、マニフェストは、本明細書に記載した方法を使用して同期され得る。
【００３２】
図１Ｂは、本発明の一実施形態による、オブジェクトのコレクションのマニフェストの、例示的なフォーマットを示す。図１Ａに示すように、マニフェスト１４０は、マニフェスト名１２２を含み、これは、マニフェスト１４０が表すオブジェクトのコレクションに対応している。コンテンツオブジェクトのリスト１２４は、１つ以上のコンテンツオブジェクト名１３０と、ダイジェスト１３２と、修正時刻１３４とを含むことができる。すなわち、マニフェスト１４０は、コンテンツオブジェクト名１３０．１〜１３０．ｎ、ダイジェスト１３２．１〜１３２．ｎ、および修正時刻１３４．１〜１３４．ｎのうちの１つ以上によって識別されたコンテンツオブジェクトの、順序付きリストである。ダイジェスト１３２．１〜１３２．ｎは、名前１３０．１〜１３０．ｎによって、それぞれ識別されたコンテンツオブジェクトのハッシュ値を含んでいる。一部の実施形態において、ダイジェストは、コンテンツオブジェクトのＳＨＡ―２５６ハッシュとなることができ、ここで、ダイジェストは、コンテンツオブジェクトの一意な識別子となるように、ハッシュ衝突（２つの異なるコンテンツオブジェクトの一方向ハッシュが同一の値となる）の可能性が十分に低い。
【００３３】
マニフェスト１４０は、ルートハッシュ１３６もさらに含んでおり、これは、コレクションの個別のコンテンツオブジェクトのハッシュ値１３２．１〜１３２．ｎに基づく、付加的なハッシュ値である。マニフェスト１４０のルートハッシュ１３６は、マニフェスト１４０の一意な識別子として機能することができる。図１Ａを参照して説明したように、マニフェスト１４０は、コレクション内で表された各コンテンツオブジェクトの名前と、対応するダイジェストとを示すことができる。マニフェスト１４０はまた、コレクション内で表された各コンテンツオブジェクトの修正時刻も含むことができる。修正時刻フィールドの使用は、実行中の下層のアプリケーションまたはサービスに依存する。
【００３４】
一部の実施形態において、インタレスト内のウィンドウサイズは、ウィンドウベースのフロー制御アルゴリズムに基づいて算出される。例えば、ウィンドウサイズは、伝送制御プロトコル（ＴＣＰ）Ｖｅｇａｓと同様の方法に基づいて決定することができ、初期ウィンドウサイズの２が使用された後に、応答時間に基づいて調整される。一部の実施形態において、ノードが、転送テーブルに基づいてＰＩＴエントリを作成できない場合は、ノードは、マニフェストの逆方向の経路で、マニフェスト名に対するＰＩＴエントリを作成しなくてもよい。例えば、マニフェスト１４０には、オブジェクト名１３０．３が記載されているが、所与のノード（ノード１０６等）で、転送テーブルが、その経路に沿った名前１３０．３のプレフィックスを指していない場合は、ノード１０６は、名前１３０．３を有するＰＩＴエントリを作成しなくてもよい。これによって、異常経路によるコンテンツインジェクション攻撃を防止する。一部の実施形態において、マニフェスト１４０の初期インタレストは、発行者ノードのキーを伝送する。さらに、初期インタレストの応答は、マニフェストを含み、中間ノードが署名を検証できるように、マニフェストの公開キーを伝送する。
【００３５】
２つのノード間のマニフェストベースの通信は、名前の３つの部分に基づいている。第１の部分は、「／ａ／ｂ」のようにコレクションを識別する、ルーティング可能なプレフィックスである。第２の部分は、関連する名前空間の識別を含む。例えば、第２の部分は、経路広告用に「／ａｄｖ」としたり、データ伝達用に「／ｄａｔａ」としたりすることができる。第３の部分は、経路広告または伝達される、ハッシュ値またはコンテンツである。したがって、ＣＣＮ名のフォームは、／ｃｏｌｌｅｃｔｉｏｎ＿ｐｒｅｆｉｘ／ａｄｖ＿ｏｒ＿ｄａｔａ／ｐｒｏｔｏｃｏｌ＿ｄａｔａである。
【００３６】
ハッシュ経路広告を送信するインタレストの一例は、／ａ／ｂ／ａｄｖ／＜ｒｏｏｔｈａｓｈ＞である。この経路広告を受信し、同一の経路プレフィックス「／ａ／ｂ」を有するローカルマニフェストを含むローカルノードは、セグメンテーションプロトコルに基づいて、経路広告されたマニフェストを、チャンク０、１、〜終了チャンク番号ｍまで検索する。マニフェストのエントリに基づいて、ノードは、マニフェストで識別されたどのコンテンツオブジェクトが、要求されたかを判断する。一部の実施形態において、これは、マニフェストのオフセット、およびオブジェクトの数で示されている。
【００３７】
図２Ａは、本発明の一実施形態による、ＣＣＮにおける、複数オブジェクトのインタレストに基づいた例示的な通信を示す。動作中に、ネットワーク１００の消費者ノード１０２は、マニフェスト１４０に関連しているマニフェスト名１２２を含む初期インタレスト２１２と、ウィンドウサイズ５（「Ｗ＝５」で示す）とを表明する。このウィンドウサイズは、ノード１０２が、５つまでの追加のコンテンツオブジェクトを受容できることを示している。ウィンドウサイズは、インタレストで指定された名前以外の追加のオブジェクトを、ノードがいくつまで受容（受信等）できるかを示していることに留意されたい。インタレスト２１２が、消費者ノード１０２からネットワークを介して、かつ中間ノード１０６と１０８とを経由して移動すると、ＰＩＴ２０２と、２０６と、２０８とに、マニフェスト名１２２に対するＰＩＴエントリが、それぞれ作成される。一部の実施形態において、それぞれのノードは、マニフェスト名を有するインタレストと、オブジェクト名を有するインタレストとを区別する。
【００３８】
ノード１０８が、ローカル条件（ネットワークの輻輳等）を検出したとする。これに応答して、ノード１０８は、ウィンドウサイズを５から１に縮小する。ここで、ウィンドウサイズ１は、ノード１０８が、要求されたマニフェスト１４０と、１つの追加のコンテンツオブジェクトとを、ノード１０２に転送しようとしていることを示している。インタレスト２１２を受信すると、生成者ノード１１２は、マニフェスト１４０を含む応答２１４を作成する。さらに、現行のウィンドウサイズが１なので、ノード１１２は、マニフェスト１４０に記載された名前１３０．１（ＣＯＮＡＭＥ１３０．１として示される）を有する第１のコンテンツオブジェクトを含んでいる。応答２１４が到着すると、ノード１０８は、応答２１４が、マニフェスト１４０を含んでいることを確認する。その結果、マニフェスト名１２２に対するＰＩＴ２０８の既存のＰＩＴエントリが、満たされて除去される（取り消し線付きの文字列で示されている）。応答２１４は、マニフェスト（すなわち、応答２１４のコンテンツオブジェクトは、タイプが「マニフェスト」）と、ウィンドウサイズ１とを含むので、ノード１０８は、その名前１３０．１を使用して、ＰＩＴ２０８内に、ＣＯＮＡＭＥ１３０．１に対する新たなＰＩＴエントリを作成する。名前１３０．１は、マニフェスト１４０内の第１のエントリである。
【００３９】
次にノード１０８は、応答２１４をノード１０６に転送する。応答２１４が到着すると、マニフェスト名１２２に対する、ＰＩＴ２０６内の既存のＰＩＴエントリが、満たされて除去される（取り消し線付きの文字列で示されている）。応答２１４は、マニフェスト（すなわち、応答２１４のコンテンツオブジェクトは、タイプが「マニフェスト」）と、ウィンドウサイズ１とを含むので、ノード１０６は、その名前１３０．１を使用して、ＰＩＴ２０６内に、ＣＯＮＡＭＥ１３０．１に対する新たなＰＩＴエントリを作成する。  次にノード１０６は、応答２１４をノード１０２に転送する。ノード１０２が、マニフェスト１４０を有する応答２１４を受信すると、マニフェスト名１２２に対する、ＰＩＴ２０２内の既存のＰＩＴエントリが、満たされて除去される。同様に、ノード１１２は、ＣＯＮＡＭＥ１３０．１を含む応答２１６を、ノード１０８に送信する。ノード１０８と、１０６と、１０２とを介して進みながら、応答２１６は、ＰＩＴ２０８と、２０６と、２０２との中で、名前１３０．１を有する、対応するＰＩＴエントリをそれぞれ満たす。
【００４０】
次にノード１０２は、マニフェスト１４０内の次の２つのオブジェクトに対する、後続のインタレスト２１８を表明する。インタレスト２１８では、ノード１０２は、マニフェスト名１２２と、マニフェスト１４０のハッシュ２２２と、オフセット２（マニフェスト１４０の開始位置／インデックスが１になることを考慮している）と、ウィンドウサイズ１とを含んでいる。インタレスト２１８のハッシュ２２２によって、ノード１１２は、マニフェスト１４０が、ノード１０２で更新されていないことを保証することができる。オフセット２は、マニフェスト１４０の第２のオブジェクトが、インタレスト２１８によって要求されたことを示している。ウィンドウサイズ１は、ノード１０２が、１つまでの追加のコンテンツオブジェクトを受容（受信等）しようとしていることを示している。インタレスト２１８が、消費者ノード１０２からネットワークを介して、かつ中間ノード１０６と１０８とを経由して移動すると、ＰＩＴ２０２と、２０６と、２０８とに、マニフェスト１４０内の第２のオブジェクトＣＯＮＡＭＥ１３０．２に対するＰＩＴエントリが、それぞれ作成される。ウィンドウサイズが１なので、マニフェスト１４０内の第３のオブジェクトＣＯＮＡＭＥ１３０．３に対するもう１つのＰＩＴエントリが、ＰＩＴ２０２と、２０６と、２０８との中に、それぞれ作成されている。
【００４１】
一部の実施形態において、ノードは、パイプラインでインタレストを生成することができる（すなわち、以前のインタレストに対応する応答を受信する前に）。例えば、ノード１０２は、以前のインタレスト２１２に対する応答２１６を受信する前に、インタレスト２１８を生成することができる。図２Ｂは、本発明の一実施形態による、パイプライン化されたインタレストを有する、ＣＣＮにおける、複数オブジェクトのインタレストに基づく例示的な通信を示す。この例において、ノード１０２が、マニフェスト１４０とウィンドウサイズ１とを含む応答２１４を受信すると、ノード１０２は、パイプラインで、マニフェスト１４０からのより多くの項目の要求を開始することができる。すなわち、ノード１０２は、ＣＯＮＡＭＥ１３０．１が処理中であることを知っているので、ノード１０２は、マニフェスト１４０の第１のエントリを飛ばすことができる。したがって、ノード１０２は、オフセット２（マニフェスト１４０の開始位置／インデックスが１になることを考慮している）を使用して、マニフェスト１４０内の後続のエントリに対するインタレスト２１８を生成する。インタレスト２１８は、マニフェストの第２のオブジェクトと、ウィンドウサイズ５とを示している。この例では、ノード１０２は、応答２１６を受信していないので、ＰＩＴ２０２は、マニフェスト名１２２と、オフセット２と、ウィンドウサイズ５とを含むエントリだけでなく、オブジェクト名１３０．１のエントリも含んでいる。一方、ノード１０８は、ＣＯＮＡＭＥ１３０．１を有する応答２１６を受信したため、名前１３０．１を有するＰＩＴエントリが満たされている。
【００４２】
一部の実施形態において、オフセットおよびウィンドウサイズと共に、マニフェスト名１２２に基づくインタレストを送信する代わりに、インタレスト２１８は、マニフェスト１４０内の次の個別のオブジェクトの要求を含むことができる。例えば、インタレスト２１８はＣＯＮＡＭＥ１３０．２（すなわち、名前１３０．２）に対するインタレストを含むことができる。この場合、ノード１０２は、ＰＩＴ２０２において、名前１３０．２を含むエントリを有する。このインタレストを受信すると、ノード１１２は、ＣＯＮＡＭＥ１３０．２を含む応答を送信する。ノード１０２がＣＯＮＡＭＥ１３０．２を受信すると、名前１３０．２を有するＰＩＴエントリを満たす。
【００４３】
一部の実施形態において、中間ノードが、マニフェストから参照された、ウィンドウサイズ内のオブジェクトをキャッシュ済みである場合、中間ノードは、発行者ノードがコンテンツを送信するのを待つことなく、直ちにそのオブジェクトを送信することができる。
【００４４】
図２Ｃは、本発明の一実施形態による、ネットワーク内キャッシングを有する、ＣＣＮにおける、複数オブジェクトのインタレストに基づく例示的な通信を示す。マニフェスト１４０を含む応答２１４が、ノード１０２に転送されると、中間ノード１０６が、ローカル条件（ネットワークの輻輳等）を検出し、逆方向の経路（すなわち、生成者ノード１１２から消費者ノード１０２への経路）で、ウィンドウサイズを縮小するとする。しかし、ノード１０６は、順方向の経路（すなわち、消費者ノード１０２から、生成者ノード１１２への経路）では、ウィンドウサイズを維持している。これは、ウィンドウの最下層からの「テールドロップ」につながる場合がある。例えば、ＰＩＴ２０６が、オブジェクト名１３０．１を有するエントリを含んでおり、ノード１０６が、ウィンドウサイズを０に縮小する。ノード１０６は、追加オブジェクトを転送しないので、ノード１０６は、エントリをドロップすることにより、ＰＩＴ２０６を調整する。
【００４５】
一部の実施形態において、中間ノード１０６が、逆方向の経路でウィンドウサイズを縮小すると、ノード１０６は、ドロップされたエントリの「キャッシュ」ＰＩＴエントリを作成する。「キャッシュ」ＰＩＴエントリは、対応するオブジェクトを含む応答が受信されると、ノードが、オブジェクトをローカルキャッシュに格納することを示している。ノード１０６は、オブジェクトが上流（ノード１０８等）から来ていることを知っているので、ノード１０６は、オブジェクトを直ちに下流に転送することなく、オブジェクトをキャッシュすることができる。例えば、ノード１０６が逆方向の経路で輻輳していて、ウィンドウサイズ１を有するマニフェスト１４０を受信すると、ノード１０６は、ウィンドウサイズを０に縮小する。ノード１０６は、オブジェクト名１３０．１で「キャッシュ」ＰＩＴエントリを作成することによって、対応するＰＩＴを調整する。その結果、ノード１０６はＣＯＮＡＭＥ１３０．１を受信して「キャッシュ」ＰＩＴエントリを満たし、輻輳したリンクに沿ってノード１０２にオブジェクトを転送することなく、ローカルキャッシュ２０４にＣＯＮＡＭＥ１３０．１を格納することができる。ノード１０２が、マニフェスト１４０と、ウィンドウサイズ０とを含む応答２１４を受信すると、ノード１０２もまた、ＰＩＴ２０２から名前１３０．１を有するエントリをドロップし、マニフェスト１４０の最初の２つのオブジェクトに対するインタレスト２２０を表明する。
【００４６】
インタレスト２２０において、ノード１０２は、マニフェスト名１２２と、マニフェスト名１２２のハッシュ２２２と、オフセット１と、ウィンドウサイズ０とを含んでいる。インタレスト２２０のハッシュ２２２によって、ノード１１２は、マニフェスト１４０が、ノード１０２で更新されていないことを保証することができる。オフセット１は、マニフェスト１４０の第１のオブジェクトが、インタレスト２２０によって要求されることを示している。ウィンドウサイズ０は、ノード１０２が、追加のコンテンツオブジェクトを１つも受容しないことを示している。インタレスト２２０が、消費者ノード１０２を離れると、ＰＩＴ２０２において、名前１３０．１で、マニフェスト１４０の第１のオブジェクトに対するＰＩＴエントリが作成される。しかし、このオブジェクトは、ノード１０６のキャッシュ２０４にキャッシュされているので、ノード１０６は、ＣＯＮＡＭＥ１３０．１をノード１０２に転送する。ＣＯＮＡＭＥ１３０．１を受信することで、ＰＩＴ２０２の対応するＰＩＴエントリが満たされる。
【００４７】
図３Ａは、本発明の一実施形態による、マニフェスト、およびマニフェストに記載されたオブジェクトをウィンドウサイズに基づいて受信する消費者ノードの処理を示す、フローチャートを提示する。動作中に、ノードが、マニフェスト名とローカルウィンドウサイズを含むインタレストを送信し（動作３０２）、マニフェスト名を有するＰＩＴエントリを作成する（動作３０４）。ローカルウィンドウサイズは、ノードによって決定される。次に、ノードは、マニフェストとウィンドウサイズを含む応答を受信する（動作３０６）。ノードは、初期インタレストについて、ウィンドウサイズが、ローカルウィンドウサイズと比較して、変更されたか否かを確認する（動作３０８）。図２Ａに関連して説明したように、ウィンドウサイズが変更されていた場合は、ノードは、受信したウィンドウサイズに基づいて、ローカルウィンドウサイズを更新する（動作３１０）。
【００４８】
図２Ａに関連して説明したように、ウィンドウサイズが変更されていないか（動作３０８）、またはローカルウィンドウサイズが更新された場合（動作３１０）は、ノードは、マニフェスト名を有するＰＩＴエントリを除去し、現行のウィンドウサイズに基づいて、マニフェストからのオブジェクト名を有する、１つ以上のエントリを追加する（動作３１２）。次に、ノードは、マニフェストに記載されたオブジェクトと、ウィンドウサイズとを含む応答を受信し（動作３１４）、後続のオブジェクトについて、ウィンドウサイズが、ローカルウィンドウサイズと比較して変更されたか否かを確認する（動作３１６）。ウィンドウサイズが変更されていた場合、ノードは、受信したウィンドウサイズに基づいてローカルウィンドウサイズを更新し、現行のウィンドウサイズに基づいてＰＩＴエントリを調整する（動作３１８）。次に、ノードは、オブジェクトを有するＰＩＴエントリを除去し（動作３２０）、インタレストが表明されていたオブジェクトを受信したか否かを確認する（動作３２２）。受信していない場合は、ノードは、マニフェストに記載されたオブジェクトと、ウィンドウサイズとを含む、次の応答の受信を継続する（動作３１４）。
【００４９】
図３Ｂは、本発明の一実施形態による、マニフェスト、およびマニフェストに記載されたオブジェクトをウィンドウサイズに基づいて送信する生成者ノードの処理を示す、フローチャートを提示する。動作中に、ノードは、リモートノードから、マニフェスト名とウィンドウサイズを含むインタレストを受信する（動作３３２）。図２Ａの例において、ノード１１２が生成者ノードである場合、ノード１０８は、リモートノードであってもよい。ノードは、マニフェストを含む応答を作成し（動作３３４）、ノードがローカル条件を検出したか否かを確認する（動作３３６）。ローカル条件の例として、ネットワーク輻輳や、リンク障害や、ノード障害が挙げられるが、これらに限定されるものではない。図２Ａに関連して説明したように、ノードがローカル条件を検出した場合は、ノードは、作成された応答に、ローカル条件に基づいて決定されたウィンドウサイズを挿入する（動作３３８）。ノードがローカル条件を検出しなかった場合は、ノードは、作成された応答に、受信したウィンドウサイズを挿入する（動作３４０）。
【００５０】
ウィンドウサイズを挿入（動作３３８または３４０）した後、ノードは、マニフェスト名とウィンドウサイズを含む、作成された応答を送信する（動作３４２）。この応答は、ＣＣＮにおいて、マニフェスト名に基づいて、対応する消費者ノードへと伝達することができる。ノードは、ウィンドウ内に、オブジェクト（単数または複数）があるか否かを確認する（動作３４４）。オブジェクトがある場合、ノードは、マニフェストに記載されているオブジェクトと、現行のウィンドウサイズとを含む応答を送信し（動作３４６）、ウィンドウ内のオブジェクト（単数または複数）が送信されたか否かを確認する（動作３４８）。ウィンドウ内のオブジェクト（単数または複数）が送信されていない場合、ノードは、マニフェストに記載されている次のオブジェクトと、現行のウィンドウサイズとを含む、次の応答の送信を継続する（動作３４６）。
【００５１】
図３Ｃは、本発明の一実施形態による、マニフェスト、およびマニフェストに記載されたオブジェクトをウィンドウサイズに基づいて転送する中間ノードの処理を示す、フローチャートを提示する。動作中に、このノードは、第１のリモートノードから、マニフェスト名とウィンドウサイズを含むインタレストを受信する（動作３６２）。図２Ａの例では、ノード１０８が中間ノードである場合は、ノード１０６が、第１のリモートノードであってもよい。次に、ノードは、マニフェスト名を有するＰＩＴエントリを追加し（動作３６４）、順方向の経路について、ノードがローカル条件を検出したか否かを確認する（動作３６６）。ノードがローカル条件を検出した場合、ノードは、ローカル条件に基づいて、受信したインタレストのウィンドウサイズを更新する（動作３６８）。ノードが、ローカル条件を検出しなかった場合（動作３６６）や、ウィンドウサイズを更新した場合（動作３６８）は、ノードは、マニフェスト名に基づいてインタレストを送信する（操作３７０）。
【００５２】
次に、ノードは、第２のリモートノードから、マニフェストとウィンドウサイズを含む応答を受信する（動作３７２）。図２Ａの例では、ノード１０８が中間ノードである場合は、ノード１１２が、第２のリモートノードであってもよい。次にノードは、マニフェスト名を有するＰＩＴエントリを除去し、現行のウィンドウサイズに基づいて、マニフェストから、オブジェクト名を有する１つ以上のエントリを追加する（動作３７４）。ノードは、逆方向の経路について、ノードがローカル条件を検出したか否かを確認する（動作３７６）。ノードがローカル条件を検出した場合は、ノードは、ローカル条件に基づいて、受信した応答のウィンドウサイズを更新する（動作３７８）。図２Ｃに関連して説明したように、ノードは、現行のウィンドウサイズに基づいて、ＰＩＴエントリも調整する（動作３８０）。
【００５３】
一部の実施形態において、ノードは、受信した応答をキャッシュする（動作３８４）。ノードは、第１のリモートノードからの応答にあるオブジェクトに対するインタレストを受信したことへの応答として、キャッシュされた応答を送信することに留意されたい。ノードが、ローカル条件を検出していない場合は、ノードは、オブジェクト名に基づいて応答を送信する（動作３８６）。ノードが、応答をキャッシュするか（動作３８４）、送信した（動作３８６）後、ノードは、インタレストが表明されていたオブジェクトを受信したか否かを確認する（動作３８８）。受信していない場合、ノードは、第２のリモートノードからの、マニフェストに記載された次のオブジェクト、およびウィンドウサイズを含む次の応答の受信（動作３９０）と、ノードがローカル条件を検出したか否かの確認（動作３７６）とを継続する。それぞれのノードは、受信したウィンドウサイズと、現行のネットワーク条件とに基づいて、発信するインタレストまたは応答に対する、現行のウィンドウサイズを決定することに留意されたい。ネットワーク条件の例としては、以前のネットワーク条件、帯域幅、記憶の可用性、処理能力の可用性、待ち時間、ジッタ、ホップ数、管理限界、管理ポリシー、ロス率、ノードの信頼性、ネットワークタイプ、レイヤ２の条件、アプリケーションプリファレンス、および費用が含まれるが、これに限定されるものではない。
【００５４】
図４Ａは、本発明の一実施形態による、マニフェストおよびウィンドウサイズに基づいて、マニフェストに記載されたオブジェクトを受信する消費者ノードの処理を示す、フローチャートを提示する。図２Ｂに関連して説明したように、動作中に、ノードは、マニフェスト名と、マニフェストのハッシュ計算値と、オフセットと、ローカルウィンドウサイズとを含むインタレストを送信し（動作４０２）、マニフェスト名と、オフセットと、ウィンドウサイズとを有するＰＩＴエントリを作成する（動作４０４）。ローカルウィンドウサイズは、ノードによって決定される。このウィンドウサイズは、中間ノードから受信した応答にある、縮小されたウィンドウサイズでなくてもよい。次に、ノードは、インタレストのオブジェクトと、ウィンドウサイズを含む応答を受信する（動作４０６）。
【００５５】
ノードは、ウィンドウサイズが、ローカルウィンドウサイズと比較して、変更されたか否かを確認する（動作４０８）。図２Ａに関連して説明したように、ウィンドウサイズが変更されていた場合、ノードは、受信したウィンドウサイズに基づいてローカルウィンドウサイズを更新し、現行のウィンドウサイズに基づいてＰＩＴエントリを調整する（動作４１０）。ウィンドウサイズが変更されていなかった場合は、ノードは、オブジェクト名を有するＰＩＴエントリを除去し（動作４１２）、インタレストが表明されていたオブジェクトを受信したか否かを確認する（動作４１４）。受信していない場合は、ノードは、マニフェストに記載された次のオブジェクト、およびウィンドウサイズを含む、次の応答の受信を継続する（動作４０６）。
【００５６】
図４Ｂは、本発明の一実施形態による、マニフェストおよびウィンドウサイズに基づいて、マニフェストに記載されたオブジェクトを送信する生成者ノードの処理を示す、フローチャートを提示する。動作中に、ノードは、リモートノードから、マニフェスト名と、リモートノードで計算され得るマニフェストのハッシュ計算値と、オフセットと、ローカルウィンドウサイズとを含む、インタレストを受信する（動作４３２）。図２Ａの例において、ノード１１２が生成者ノードである場合、ノード１０８は、リモートノードであってもよい。ノードは、ノードがローカル条件を検出したか否かを確認する（動作４３４）。ノードがローカル条件を検出した場合は、ノードは、ローカル条件に基づいて、ウィンドウサイズを調整する（動作４３６）。ノードがローカル条件を検出しなかった場合（動作４３４）、またはウィンドウサイズが調整された場合（動作４３６）は、ノードは、受信したハッシュが、ローカルマニフェストのハッシュと一致するか否かを確認する（動作４３８）。
【００５７】
ハッシュが一致する場合は、ローカルマニフェストは更新されていない。次に、ノードは、現行のオフセットと、現行のウィンドウサイズとに基づいて、マニフェストに記載されたオブジェクトを含む応答を送信する（動作４４２）。ノードは、ウィンドウ内のオブジェクト（単数または複数）が送信されたか否かを確認する（動作４４６）。ウィンドウ内のオブジェクト（単数または複数）が送信されていない場合は、ノードは、オフセットを調整し（動作４４８）、現行のオフセットと現行のウィンドウサイズに基づいて、マニフェストに記載された次のオブジェクトを含む応答の送信を継続する（動作４４２）。例えば、オフセットが２で、ウィンドウサイズが１である場合、ノードは、マニフェストに記載された第２のオブジェクトを含む応答を送信し、オフセットを３に調整し、マニフェストに記載された第３のオブジェクトを含む、別の応答を送信する。
【００５８】
図４Ｃは、本発明の一実施形態による、マニフェストおよびウィンドウサイズに基づいて、マニフェストに記載されたオブジェクトを転送する中間ノードの処理を示す、フローチャートを提示する。動作中に、ノードは、第１のリモートノードから、マニフェスト名と、マニフェストのハッシュ計算値と、オフセットと、マニフェスト名と、ローカルウィンドウサイズとを含むインタレストを受信する（動作４６２）。図２Ａの例では、ノード１０８が中間ノードである場合は、ノード１０６が、第１のリモートノードであってもよい。ノードは、順方向の経路について、ノードがローカル条件を検出したか否かを確認する（動作４６４）。ノードがローカル条件を検出した場合、ノードは、ローカル条件に基づいて、受信したインタレストのウィンドウサイズを更新し、（動作４６６）次に、マニフェスト名と、オフセットと、現行のウィンドウサイズとを有するＰＩＴエントリを追加する（動作４６８）。ノードが、ローカル条件を検出しなかった場合（動作４６４）や、ＰＩＴエントリを追加した場合（動作４６８）は、ノードは、マニフェスト名に基づいてインタレストを送信する（操作４７２）。後続のインタレストもまた、マニフェスト名を含んでいることに留意されたい。マニフェスト名は、ＣＣＮにおいて、インタレストを送るのに使用される。
【００５９】
次に、ノードは、第２のリモートノードから、オブジェクトとウィンドウサイズとを含む応答を受信する（動作４７４）。図２Ａの例では、ノード１０８が中間ノードである場合は、ノード１１２が、第２のリモートノードであってもよい。次に、ノードは、逆方向の経路について、ノードがローカル条件を検出したか否かを確認する（動作４７６）。ノードがローカル条件を検出した場合は、ノードは、ローカル条件に基づいて、受信した応答のウィンドウサイズを更新する（動作４７８）。図２Ｃに関連して説明したように、ノードは、現行のウィンドウサイズに基づいて、ＰＩＴエントリも調整する（動作４８０）。一部の実施形態において、ノードは、受信した応答をキャッシュする（動作４８４）。ノードは、第１のリモートノードからのオブジェクトに対するインタレストを受信すると、キャッシュされた応答を送信することに留意されたい。
【００６０】
ノードが、ローカル条件を検出していない場合は、ノードは、オブジェクト名に基づいて応答を送信し（動作４８６）、オブジェクト名を有するＰＩＴエントリを除去する（動作４８８）。ノードが、応答をキャッシュするか（動作４８４）、またはオブジェクト名を有するＰＩＴエントリを除去した（動作４８８）後、ノードは、インタレストが表明されていたオブジェクトを受信したか否かを確認する（動作４９０）。受信していない場合、ノードは、第２のリモートノードからの、マニフェストに記載された次のオブジェクト、およびウィンドウサイズを含む、次の応答の受信（動作４７４）と、ノードがローカル条件を検出したか否かの確認（動作４７６）とを継続する。それぞれのノードは、受信したウィンドウサイズと、現行のネットワーク条件とに基づいて、発信するインタレストまたは応答に対する、現行のウィンドウサイズを決定することに留意されたい。ネットワーク条件の例としては、以前のネットワーク条件、帯域幅、記憶の可用性、処理能力の可用性、待ち時間、ジッタ、ホップ数、管理限界、管理ポリシー、ロス率、ノードの信頼性、ネットワークタイプ、レイヤ２の条件、アプリケーションプリファレンス、および費用が含まれるが、これに限定されるものではない。
【００６１】
図５は、本発明の一実施形態による、ＭＢＣＮを容易にする、例示的なコンピュータおよび通信システムを示す。コンピュータおよび通信システム５０２は、プロセッサ５０４と、メモリ５０６と、記憶デバイス５０８とを含む。メモリ５０６は、管理されるメモリとして機能する揮発性メモリ（例えば、ＲＡＭ）を含むことができ、１つ以上のメモリプールを格納するために使用され得る。さらに、コンピュータおよび通信システム５０２は、ディスプレイデバイス５１０と、キーボード５１２と、ポインティングデバイス５１４とに接続されてもよい。記憶デバイス５０８は、オペレーティングシステム５１６と、コンテンツ処理システム５１８と、データ５３２とを格納することができる。
【００６２】
コンテンツ処理システム５１８は、コンピュータおよび通信システム５０２によって実行されると、コンピュータおよび通信システム５０２に、本開示に記載された方法および／または処理を実行させる命令を含むことができる。具体的には、コンテンツ処理システム５１８は、ＣＣＮにおいて、ＭＢＣＮを容易にすることができる。一部の実施形態において、コンテンツ処理システム５１８は、コンテンツ処理システム５１８に関する動作状態を記述するデータを交換可能な、複数のコンピュータおよび通信システム上で実行され得る。
【００６３】
要約すると、本発明の実施形態は、ネットワーク名を使用して複数オブジェクトのインタレストを容易にする、コンピュータシステムおよび方法を提供する。動作中に、このシステムは、リモートノードのコンテンツオブジェクトの名前、および第１のウィンドウサイズを含む、第１のインタレストを生成する。この名前は、リモートノードで、オブジェクトのコレクションを潜在的に表す。ウィンドウサイズは、システムが受容できる追加のオブジェクトの数を示す。ノードは、第１のインタレストに対応する第１の応答から、リモートノードのコレクションのマニフェストをさらに取得し、第１のインタレストに対応する第２の応答から、マニフェストに記載された第１のオブジェクトをさらに取得する。
【００６４】
この詳細な説明に記載するデータ構造およびコードは、通常、コンピュータ可読記憶媒体に記憶されており、この媒体は、コンピュータシステムが使用するコードおよび／またはデータを格納できる任意のデバイスまたは媒体とすることができる。コンピュータ可読記憶媒体は、揮発性メモリ、不揮発性メモリ、ディスクドライブ、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタル多用途ディスク、またはデジタルビデオディスク）等の磁気および光記憶デバイス、もしくは、現在知られている、または今後開発されるコンピュータ可読媒体を格納することが可能な他の媒体を含むが、これらに限定されるものではない。
【００６５】
詳細な説明の部分に記載された方法および処理は、コードおよび／またはデータとして具体化することができ、これらのコードおよび／またはデータは、上述したように、コンピュータ可読記憶媒体に格納され得る。コンピュータシステムが、コンピュータ可読記憶媒体に格納されたコードおよび／またはデータを読み込んで実行するとき、コンピュータシステムは、データ構造およびコードとして具体化されて、コンピュータ可読記憶媒体内に格納された方法、および処理を実行する。
【００６６】
さらに、上述した方法および処理は、ハードウェアモジュールや機器に含まれ得る。ハードウェアモジュールや機器は、特定用途向け集積回路（ＡＳＩＣ）のチップや、現場でプログラム可能なゲートアレイ（ＦＰＧＡ）や、特定の時間に特定のソフトウェアモジュールもしくは１つのコードを実行する専用プロセッサまたは共用プロセッサや、その他の現在知られている、または今後開発されるプログラム可能論理デバイスを含むことができるが、これらに限定されない。ハードウェアモジュールまたは機器が起動すると、その中に含まれる方法および処理が実行される。
【００６７】
本発明の実施形態の上記の説明は、例示および説明の目的のためにのみ提示されている。それらは、網羅的であること、または開示された形式に本発明を限定することを意図するものではない。したがって、多くの修正および変更が、当業者には明らかである。また、上記の開示は、本発明を限定することを意図するものではない。本発明の範囲は、添付の特許請求の範囲によって定義される。
【図１Ａ】
2015198451.tif 000003
【図１Ｂ】
2015198451.tif 000004
【図２Ａ】
2015198451.tif 000005
【図２Ｂ】
2015198451.tif 000006
【図２Ｃ】
2015198451.tif 000007
【図３Ａ】
2015198451.tif 000008
【図３Ｂ】
2015198451.tif 000009
【図３Ｃ】
2015198451.tif 000010
【図４Ａ】
2015198451.tif 000011
【図４Ｂ】
2015198451.tif 000012
【図４Ｃ】
2015198451.tif 000013
【図５】
2015198451.tif 000014