(57)【要約】      （修正有）【課題】コンテンツ指向型ネットワークにおけるプロトコルスタックの状態の転送を容易にするシステムを提供する。【解決手段】動作中、システムは、通信コンポーネントにより調整エンティティから、コンポーネントの現在の状態を保存するためにコマンドメッセージを受信する。ここで、通信コンポーネントは名前に基づいてメッセージを処理する際に使用され、名前は最も一般的なレベルから最も特定的なレベルへ順序付けされた連続的な名前コンポーネントを備える階層的に構造化された可変長識別子（ＨＳＶＬＩ）である。システムは、通信コンポーネントの現在の状態を判定する。続いて、システムは、通信コンポーネントの現在の状態をデータ構造に保存する。【選択図】なし【特許請求の範囲】
【請求項１】
パケットを転送するためのコンピュータシステムであって、前記システムは、
プロセッサと、および、
前記プロセッサにより実行されると、前記プロセッサに方法を行わせる命令を保存する保存デバイスであって、前記方法は、
通信コンポーネントにより調整エンティティから、前記コンポーネントの現在の状態を保存するためにコマンドメッセージを受信することであって、前記通信コンポーネントは名前に基づいてメッセージを処理する際に使用され、名前は最も一般的なレベルから最も特定的なレベルへ順序付けされた連続的な名前コンポーネントを備える階層的に構造化された可変長識別子（ＨＳＶＬＩ）である、受信すること、
前記通信コンポーネントの現在の状態を判定すること、および、
前記通信コンポーネントの現在の状態をデータ構造に保存すること、
を備える、保存デバイスと、
を備える、コンピュータシステム。
【請求項２】
前記方法は、
インタレストメッセージに対応する第１のパケットを受信することであって、前記インタレストメッセージは前記データ構造の要求を示し、前記データ構造の名前を含む、受信すること、
をさらに備える、請求項１に記載のコンピュータシステム。
【請求項３】
前記第１のパケットは、
通信モジュールのスタックのマネージャコンポーネントであって、マネージャコンポーネントは前記調整エンティティと前記通信モジュールとの間でメッセージを処理する際に使用され、スタックは各々の通信モジュールに当該層の上位または下位の層とのみ通信することを要求せず、および、前記通信コンポーネントは前記スタックに属する、マネージャコンポーネントと、および、
前記調整エンティティであって、
前記スタックの外部のエンティティまたはサービス、および、
前記スタックと関連付けられるアプリケーション、
のうちの１つ以上である、調整エンティティと、
のうちの１つ以上から受信される、請求項２に記載されるコンピュータシステム。
【請求項４】
前記方法は、
コンテンツオブジェクトメッセージに対応する第２のパケットを生成することであって、前記コンテンツオブジェクトメッセージは前記データ構造および前記データ構造の名前を含む、生成すること、
をさらに備える、請求項１に記載のコンピュータシステム。
【請求項５】
前記方法は、
前記現在の状態が前記データ構造に保存されていることを示す通知メッセージを生成することであって、前記通知メッセージは前記データ構造の名前を含む、生成すること、
をさらに備える、請求項１に記載のコンピュータシステム。
【請求項６】
前記データ構造は、前記メッセージを処理する際に前記通信コンポーネントにより保存される１つ以上のインタレストまたはコンテンツオブジェクトメッセージを示す、請求項１に記載されるコンピュータシステム。
【請求項７】
前記データ構造はマニフェストであって、マニフェストは一連のコンテンツオブジェクトおよび対応する要約を示し、各々のコンテンツオブジェクトはデータオブジェクトまたは別のマニフェストであり、および、マニフェストおよびコンテンツオブジェクトは、それぞれが名前を示す、マニフェストである、請求項１に記載のコンピュータシステム。
【請求項８】
前記方法は、
前記現在の状態の要求を受信することに応答して、前記現在の状態を送信すること、
をさらに備える、請求項１に記載のコンピュータシステム。
【請求項９】
前記通信コンポーネントは通信モジュールのスタックのコンポーネントであって、前記スタックは各々の通信モジュールに当該層の上位または下位の層とのみ通信することを要求しない、コンポーネントである、請求項１に記載のコンピュータシステム。
【請求項１０】
通信コンポーネントにより調整エンティティから、前記コンポーネントの現在の状態を保存するためにコマンドメッセージを受信することであって、前記通信コンポーネントは名前に基づいてメッセージを処理する際に使用され、名前は最も一般的なレベルから最も特定的なレベルへ順序付けされた連続的な名前コンポーネントを備える階層的に構造化された可変長識別子（ＨＳＶＬＩ）である、受信すること、
前記通信コンポーネントの現在の状態を判定すること、および、
前記通信コンポーネントの現在の状態をデータ構造に保存すること、
を備える、コンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般的に、搬送フレームワークに関する。より具体的には、本開示は、コンテンツ指向型ネットワークにおいてスタックの状態を転送または複製するシステムおよび方法に関する。
【背景技術】
【０００２】
モバイル計算デバイスおよびインターネットのユビキタス性により、人々は場所を選ばずデジタルコンテンツを利用することが可能となっている。人々はモバイル計算デバイスのアプリケーションを使用して、サービスプロバイダからインターネットを介して、例えば、映画または音楽のストリーミング配信または他者とゲームを行うために、コンテンツを消費またはコンテンツと接触し得る。さらに、これらのモバイル計算デバイスにおける進歩により、これらのモバイルデバイスにより再生され得るコンテンツの質が向上しており、デジタルコンテンツを生成および取得し得る、および、インターネットを介して他のデバイスと共有し得る、デバイスの数が大幅に増えている。近年では、スマートフォンなど小型のモバイルデバイスでさえ、高品質の色再生を伴うフル高解像度映像を生成することができ、高速のセルラーおよびブロードバンドネットワークにより、ユーザはこのコンテンツを他者と、ＹｏｕＴｕｂｅ（登録商標）（Ｇｏｏｇｌｅ，Ｉｎｃ．）およびＦａｃｅｂｏｏｋ（Ｆａｃｅｂｏｏｋ，Ｉｎｃ．）のコンテンツ共有サービスなど様々なインターネットサービスを介して、共有することが可能となっている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
多くのコンピュータアプリケーションは、これらのコンピュータネットワークおよびインターネットサービスを活用して社会的特徴をユーザに提供し、ユーザの経験を大幅に向上させる。アプリケーションがネットワークを使用したい場合、計算デバイスのオペレーティングシステム上で起動する１つ以上のアプリケーションプログラミングインターフェース（ＡＰＩ）を使用することにより行う。これらのＡＰＩは、アプリケーションが、データを送信、受信、保存、構成する方法、あるいは、他のコンピュータとネットワークを介して通信する方法、を提供する。
【０００４】
例えば、アプリケーションは、アプリケーションがＡＰＩを使用してネットワークを介してデータを送信または受信し得る前に、ネットワークＡＰＩを実装するプロトコルスタックをインスタンス化する。例えば、開放型システム間相互接続（ＯＳＩ）モデルに基づく従来のプロトコルスタックにおいて、各層は、当該層の上位または下位の層と通信するのみであり得る。コンテンツ指向型ネットワーク（ＣＣＮ）に基づくモデルにおいて、プロトコルスタックは、動的に作成され、様々なアプリケーションにより使用されるＡＰＩの必要性に適合し得る。これらのアプリケーション駆動型プロトコルスタックの作成がシステムの柔軟性を向上し得る一方で、他の要件（例えば、障害迂回、負荷バランシング、および、他のネットワーク関連の必要性）は、スタックの状態を１つの位置から別の位置へ転送することにより、スタックを移動、転送、または、複製する必要性を生じさせる可能性がある。
【課題を解決するための手段】
【０００５】
１つの実施形態は、ＣＣＮにおけるスタックの状態の転送を容易にする搬送フレームワークシステムを提供する。動作中、システムは、通信コンポーネントにより調整エンティティから、コンポーネントの現在の状態を保存するために、コマンドメッセージを受信する。ここで、通信コンポーネントは名前に基づいてメッセージを処理する際に使用され、名前は最も一般的なレベルから最も特定的なレベルへ順序付けされた連続的な名前コンポーネントを備える、階層的に構造化された可変長識別子（ＨＳＶＬＩ）である。システムは、通信コンポーネントの現在の状態を判定する。その後、システムは、通信コンポーネントの現在の状態をデータ構造に保存する。
【０００６】
一部の実施形態において、システムは、インタレストメッセージに対応する第１のパケットを受信する。ここで、インタレストメッセージは、データ構造の要求を示し、データ構造の名前を含む。
【０００７】
一部の実施形態において、第１のパケットは、以下のうちの１つ以上から受信される：通信モジュールのスタックのマネージャコンポーネントであって、マネージャコンポーネントは調整エンティティと通信モジュールとの間のメッセージを処理する際に使用され、スタックは各々の通信モジュールに当該層の上位または下位の層とのみ通信することを要求せず、および、通信コンポーネントはスタックに属する、マネージャコンポーネント；および、スタックの外部のエンティティまたはサービス、および、スタックと関連付けられるアプリケーション、のうちの１つ以上である、調整エンティティ。
【０００８】
一部の実施形態において、システムは、コンテンツオブジェクトメッセージに対応する第２のパケットを生成する。ここで、コンテンツオブジェクトメッセージは、データ構造およびデータ構造の名前を含む。
【０００９】
一部の実施形態において、システムは、現在の状態がデータ構造に保存されていることを示す通知メッセージを生成する。ここで、通知メッセージはデータ構造の名前を含む。
【００１０】
一部の実施形態において、データ構造は、メッセージを処理する際に通信コンポーネントにより保存された１つ以上のインタレストまたはコンテンツオブジェクトメッセージを示す。
【００１１】
一部の実施形態において、データ構造はマニフェストである。ここで、マニフェストは一連のコンテンツオブジェクトおよび対応する要約を示し、各々のコンテンツオブジェクトはデータオブジェクトまたは別のマニフェストであり、および、マニフェストおよびコンテンツオブジェクトは、各々が名前を示す。
【００１２】
一部の実施形態において、現在の状態の要求を受信することに応答して、システムは現在の状態を送信する。
【００１３】
さらなる変形において、通信コンポーネントは通信モジュールのスタックのコンポーネントである。ここで、スタックは各々の通信モジュールに当該層の上位または下位の層とのみ通信することを要求しない。
【００１４】
一部の実施形態において、システムは、スタックの１つ以上の他の通信コンポーネントの現在の状態を判定する。他の通信コンポーネントの現在の状態が保留状態であると判定することに応答して、システムは他の通信コンポーネントの準備状態の指標を待つ。
【００１５】
一部の実施形態において、調整エンティティは、以下のうちの１つ以上である：スタックの外部のエンティティまたはサービス；および、スタックと関連付けられるアプリケーション。
【００１６】
一部の実施形態において、コマンドメッセージは、調整エンティティからスタックのマネージャコンポーネントを介して受信される。ここで、マネージャコンポーネントは、調整エンティティと通信モジュールとの間のメッセージを処理する際に使用される。
【図面の簡単な説明】
【００１７】
【図１Ａ】図１Ａは、本発明の実施形態にしたがって、コンテンツ指向型ネットワークにおけるスタックの状態の転送を容易にする例示的な環境を図示する。
【図１Ｂ】図１Ｂは、本発明の実施形態にしたがって、コンテンツ指向型ネットワークにおけるスタックの状態の転送を容易にする例示的な環境を図示する。
【図２Ａ】図２Ａは、本発明の実施形態にしたがって、例示的な搬送フレームワークおよび搬送スタックを図示する。
【図２Ｂ】図２Ｂは、本発明の実施形態にしたがって、図２Ａに対応する、例示的な搬送フレームワークおよび搬送スタックを図示する。
【図３Ａ】図３Ａは、本発明の実施形態にしたがって、コンテンツ指向型ネットワークにおいてスタックの状態を転送する方法を図示するフローチャートを提示する。
【図３Ｂ】図３Ｂは、本発明の実施形態にしたがって、コンテンツ指向型ネットワークにおいてスタックの状態を転送する方法であって、コーディネータがスタックマネージャを介してスタックと通信する方法を図示するフローチャートを提示する。
【図３Ｃ】図３Ｃは、本発明の実施形態にしたがって、コンテンツ指向型ネットワークにおいてスタックの状態を転送する方法であって、コーディネータが別のアプリケーションと通信する方法を図示するフローチャートを提示する。
【図４】図４は、本発明の実施形態にしたがって、スタックの転送を容易にするためのスタックコンポーネントによる方法を図示するフローチャートを提示する。
【図５】図５は、本発明の実施形態にしたがって、コンテンツ指向型ネットワークにおけるスタックの状態の転送を容易にする例示的な装置を図示する。
【図６】図６は、本発明の実施形態にしたがって、コンテンツ指向型ネットワークにおけるスタックの状態の転送を容易にする例示的なコンピュータシステムを図示する。
【発明を実施するための形態】
【００１８】
図において、同様の参照番号は同様の図要素を指す。
【００１９】
以下の説明は、当業者が実施形態を作製および使用できるように提示され、特定の用途およびその要件と関連して提供される。開示される実施形態に対する様々な修正が、当業者に対して容易に明らかになり、本明細書において規定される一般的な原理は、本開示の精神および範囲から逸脱することなく、他の実施形態および用途に適用されてよい。したがって、本発明は、示される実施形態に限定されるのではなく、本明細書において開示される原理および特徴に合致する最も広い範囲に一致する。
【００２０】
概要
本発明の実施形態は、コンテンツ指向型ネットワーク（ＣＣＮ）における搬送スタックの状態の転送を容易にする搬送フレームワークシステムを提供する。ＣＣＮにおいて、搬送フレームワークは、高レベルなＡＰＩがフレームワーク内で１つ以上の搬送スタックをインスタンス化することを可能にする。搬送スタックは、複数のコンポーネントまたは通信モジュールを含むことができ、各コンポーネントが当該コンポーネントの下位または上位のコンポーネントとのみ通信する従来の層化モデル（例えば、ＯＳＩ）に固執しない。搬送スタックは、動的に作成されて実行時に構成され得る。ここで、搬送スタック内の各コンポーネントは特定の機能を行う。例えば、搬送スタックの１つのコンポーネントは、ネットワークを介して送信されるインタレストに応答して受信されるコンテンツオブジェクトのデジタル署名を検証する役割を果たす、検証コンポーネントであり得る。ＣＣＮ搬送スタックは、米国特許出願第１４／５９５，０６０号に説明されているように、構成可能および拡張可能である。
【００２１】
アプリケーションは、ＡＰＩへのコールを発行することによりネットワークを介して通信を開始し得る。通信中、ＣＣＮ搬送スタックおよびスタックの各コンポーネントは、対応する状態を更新する。例えば、フロー制御コンポーネントは、３０件の未処理インタレストの起動ウィンドウサイズ、および、発行のためのキューにおける未処理または保留インタレストのリストを保持してよい。検証コンポーネントは、現在の使用のための一連の鍵および後の使用のための一連の循環鍵を保存してよい。障害迂回、負荷バランシング、または、リソース分散の他の要件の事例において、アプリケーションは異なる位置においてスタックをインスタンス化するのがよい可能性がある。そうするために、システムは、スタック状態を１つの搬送フレームワークから別の搬送フレームワークへ（例えば、１つのデバイスから、異なる物理位置に常駐する別のデバイスへ）搬送する。システムは、スタック状態をスタックから抽出し、別のスタックを異なる位置で、抽出されたスタック状態を使用してインスタンス化し、新規に「転送」または「複製」スタックを作成し得る。
【００２２】
具体的には、外部の調整エンティティ（「コーディネータ」）は、スタックを転送するプロセスを始動させ得る。コーディネータは、スタックに（例えば、スタックマネージャコンポーネントを介して）報知して転送の準備を行い、次にスタックは各コンポーネントに報知して転送の準備を行う。各コンポーネントはその状態を保存し、スタックに準備状態を報知する。全コンポーネントがスタックに準備状態を報知すると、次にスタック（例えば、スタックマネージャコンポーネント）はコーディネータに準備状態を報知する。続いて、コーディネータはスタック状態をスタックに要求し、スタック状態を転送（例えば、インスタンス化）のために別のアプリケーションへ送信し得る。代替的に、コーディネータは準備メッセージを別のアプリケーションへ送信でき、他のアプリケーションはスタック状態を直接的にスタックに、さらなるコーディネータからの関与なしに要求できる。さらに、コーディネータは他のアプリケーションへ、スタック、スタックコンポーネント、および、各々の状態に対する独自の名前を提供し得る。搬送スタック名のスキームおよびアイデンティティ管理は、米国特許出願第１４／７４６，４９０号に記載される。
【００２３】
一部の実施形態において、搬送フレームワークはＣＣＮアーキテクチャ下で動作する。ＣＣＮにおいて、各コンテンツは個々に名付けられ、各データは、同じデータの他のバージョンまたは他のソースからのデータなど、データを任意の他のデータと区別する独自の名前と結び付けられる。この独自の名前により、ネットワークデバイスは、独自の名前を示す要求またはインタレストを広めることによりデータを要求でき、データの保存位置、ネットワーク位置、用途、および、搬送の手段と独立してデータを取得し得る。以下の用語は、ＣＣＮアーキテクチャを説明するために使用される。
【００２４】
コンテンツオブジェクト：独自の名前と結び付けられる、単一の名付けられたデータ。コンテンツオブジェクトは「永続的」であり、これは、コンテンツオブジェクトが計算デバイス内または異なる計算デバイス間で移動し得るが、変化しないことを意味する。コンテンツオブジェクトの任意のコンポーネントが変化する場合、変化をもたらすエンティティは、更新コンテンツを含む新しいコンテンツオブジェクトを作成し、新しいコンテンツオブジェクトを新しい独自の名前と結び付ける。
【００２５】
独自の名前：ＣＣＮにおける名前は、典型的には位置に依存せず、コンテンツオブジェクトを独自に特定する。データ転送デバイスは、名前または名前プレフィックスを使用して、コンテンツオブジェクトを生成または保存するネットワークノードへ向かってパケットを、コンテンツオブジェクトのネットワークアドレスまたは物理的な位置にかかわらず転送し得る。一部の実施形態において、名前は階層的に構造化された可変長識別子（ＨＳＶＬＩ）であってよい。ＨＳＶＬＩは、いくつかの構造化コンポーネントへ分割されることができ、様々な方法で構造化され得る。例えば、個々の名前コンポーネントｐａｒｃ、ｈｏｍｅ、ｃｃｎ、および、ｔｅｓｔ．ｔｘｔは、左向き上位プレフィックスの手法で構成され、名前「／ｐａｒｃ／ｈｏｍｅ／ｃｃｎ／ｔｅｓｔ．ｔｘｔ」を形成し得る。したがって、名前「／ｐａｒｃ／ｈｏｍｅ／ｃｃｎ」は、「／ｐａｒｃ／ｈｏｍｅ／ｃｃｎ／ｔｅｓｔ．ｔｘｔ」の「親」または「プレフィックス」であり得る。追加的なコンポーネントは、共同文書など、異なるバージョンのコンテンツアイテムを区別するために使用され得る。
【００２６】
一部の実施形態において、名前は、コンテンツオブジェクトのデータ（例えば、チェックサム値）から生じるハッシュ値、および／または、コンテンツオブジェクトの名前の要素から生じるハッシュ値など、識別子を含み得る。ハッシュベースの名前の説明は、米国特許出願第１３／８４７，８１４号に記載されている。さらに、名前は、フラットラベルであり得る。以降、「名前」は、階層的な名前または名前プレフィックス、フラットネーム、固定長の名前、任意長の名前、または、ラベル（例えば、マルチプロトコルラベルスイッチング（ＭＰＬＳ）ラベル）など、名前データネットワークにおけるデータの任意の名前を指すために使用される。
【００２７】
インタレスト：データの要求を示し、データの名前（または、名前プレフィックス）を含む、パケット。データ消費者は、要求またはインタレストを、ＣＣＮ／ＮＤＮルータが保存デバイス（例えば、キャッシュサーバ）または要求データを提供して要求またはインタレストを満たし得るデータプロデューサへ向けて伝搬し得る、情報指向型ネットワーク全体に広め得る。
【００２８】
本明細書に開示される方法は、ＣＣＮネットワークに限定されず、他のアーキテクチャにも適用可能である。ＣＣＮアーキテクチャの説明は、米国特許出願第１２／３３８，１７５号に記載されている。
【００２９】
例示的なネットワークおよび通信
図１Ａは、本発明の実施形態にしたがって、コンテンツ指向型ネットワークにおけるスタックの状態の転送を容易にする例示的な環境１００を図示する。計算環境１００は、ＣＣＮなどのコンピュータネットワーク１０２を含み得る。さらに、環境１００は、ローカル計算デバイス１０４と関連付けられるユーザ１０６、および、リモート計算デバイス１０８および１９０を含み得る。デバイス１０４は、搬送フレームワーク１３０と関連付けられる内部搬送スタック１３１を有し得る。従来のＩＰアーキテクチャにおいて、フォワーダは、パケットのヘッダを確認してパケットの発信元および宛先を判定し、パケットを宛先へ転送する、ＩＰベースのフォワーダである。スタックはＴＣＰ／ＵＤＰを行い、アプリケーションはソケットを介してスタックと接触する。対照的に、本発明のデバイス１０４は、従来の「スタック」を使用しない。むしろ、アプリケーション１１０を介するデバイス１０４は、搬送フレームワーク１３０に対応するポータル１２０に対応するポータルＡＰＩインスタンスを要求し得る。アプリケーション１１０は、要求を生成してポータル１２０と関連付けられるポータルＡＰＩインスタンスを検索または作成し得る。ポータルインスタンスの作成は、米国特許出願第１４／７４６，４９０号に記載されている。
【００３０】
デバイス１０４は、スマートフォン１０４．１、タブレットコンピュータ１０４．２、および／または、サーバまたはパーソナルコンピュータ１０４．３など、ネットワーク１０２と結合される任意の計算デバイスを含み得る。具体的には、デバイス１０４は、ポータル１２０を介して搬送フレームワーク１３０と通信するアプリケーション１１０を含み得る。搬送フレームワーク１３０は、スタックコンポーネント１３２、１３４、１３６、および１３８を含み得る。さらに、デバイス１０４は、搬送フレームワーク１３０のスタック（および、個々のスタックコンポーネント）とネットワーク１０２との間でパケットを転送し得るフォワーダ１４０（例えば、ネットワークインターフェースカード、または、ローカルエリアネットワークにおけるルータ）を含み得る。デバイス１０８および１９０は、サーバまたはエンドホストデバイスなど、ネットワーク１０２と結合される任意の計算デバイスを含み得る。本明細書に記載されるように、デバイス１０８は、さらに、アプリケーション１５０を含んでよく、デバイス１９０は、さらに、調整機能を伴ってスタック転送を判定および開始する任意の計算デバイスを含み得る。
【００３１】
図１Ｂは、本発明の実施形態にしたがって、コンテンツ指向型ネットワークにおけるスタックの状態の転送を容易にする例示的な環境１００を図示する。動作中、デバイスまたは「コーディネータ」１９０は、通知メッセージを搬送スタック１３１およびスタックコンポーネント１３２〜１３８へ発行して移動の準備をし得る。スタックコンポーネント１３２〜１３８は、各々の状態を保存し、準備状態のスタック１３１へ報知する。次に、スタック１３１はコーディネータ１９０へ準備状態を報知し、その後、コーディネータ１９０は、スタックの状態（「スタック状態」）をスタック１３１に要求し得る。スタック状態は、図２Ａと関連して以下に記載される、各スタックコンポーネントにより保存される際の個々の状態を示すオブジェクトであり得る。スタック状態をスタック１３１から受信すると、コーディネータ１９０は、スタック状態を、スタック状態をデバイス１０８へ送信することにより転送することができ、アプリケーション１５０を介して、搬送フレームワーク１７０の搬送スタック１７１をインスタンス化し得る。搬送スタック１７１は、コーディネータ１９０から受信されたスタック１３１のスタック状態に基づいて、インスタンス化され得る。搬送スタック１７１は、スタック１３１のスタックコンポーネント１３２〜１３８と同じ状態を有するスタックコンポーネント１７２、１７４、１７６、および１７８を含み得る。したがって、コーディネータ１９０は、スタック１３１の状態のフレームワーク１３０からフレームワーク１７０への転送を開始および処理する。スタック状態の転送が障害迂回の理由（および、したがって、スタック１３１の破壊が生じる）で行われ得る一方で、さらに、転送は、能動的な負荷バランシングの目的（および、したがって、スタック１３１は損傷を受けないままの可能性がある）で行われ得る。一部の実施形態において、スタック１７１をインスタンス化すると、デバイス１０８のアプリケーション１５０は、スタック転送の完了を示すコーディネータ１９０へメッセージを送信してよい。次に、コーディネータ１９０は、アプリケーション１１０へ、スタック転送の完了を示すメッセージを送信してよく、さらに、スタックの動作を再開するためのコマンドメッセージを含み得る。
【００３２】
例示的な搬送フレームワーク
図２Ａは、本発明の実施形態にしたがって、例示的な搬送フレームワーク２３０および搬送スタック２３１を図示する。コーディネータ２９０は、ネットワーク２０２を介して通信するノードまたはデバイスに常駐し得る、アプリケーション２１０と通信し得る。アプリケーション２１０は、ＡＰＩ２１２、２１４、および２１６を使用してネットワーク２０２を介して通信することができ、ＡＰＩ２１２〜２１６は、ポータル２２０を介して搬送フレームワーク２３０と接触し得る。搬送フレームワーク２３０は、各々が複数のスタックコンポーネントまたは通信モジュールを含む１つ以上の搬送スタックを含み得る。図２Ａにおいて、搬送フレームワーク２３０は、スタックコンポーネント２３２、２３４、２３６、２３８、および２４２を含む１つの搬送スタック（例えば、搬送スタック２３１）を描写する。ＡＰＩアダプタ２３２は、ＡＰＩおよび特定の搬送スタックおよび搬送フレームワーク２３０の間で通信し得る。フローコントローラ２３４は、トラフィック、パイプラインおよび送信インタレスト、および、他のコンテンツオブジェクトを具現化および管理し得る。検証装置／署名装置２３６は、ネットワーク要素となるコンテンツオブジェクトを符号化および署名してよく、関連アプリケーションとなるコンテンツオブジェクトを復号化および検証してよく、ネットワーク要素となるインタレストを符号化してよく、および、関連アプリケーションとなるインタレストを復号化してよい。フォワーダ／アダプタ２３８は、フォワーダ２４０と通信し得る。フォワーダ２４０は、他のフォワーダとネットワーク２０２を介して通信し得る。他のスタックコンポーネント（図示せず）は、セキュリティ（例えば、暗号化、復号化、認証、データ署名、署名検証、信頼評価、および、フィルタ化）、データ処理（例えば、符号化、復号化、カプセル化、カプセル開放、コード変換、圧縮、抽出、および、解凍）、および、保存（例えば、データ保存、ストレージからのデータ取り出し、複製、分離、および、バージョン化）と関連する機能を含み得る。
【００３３】
コーディネータ２９０は、メッセージ２９２をスタック２３１へ、アプリケーション２１０、および、ＡＰＩ２１２〜２１６のうちの１つ、および、ポータル２２０を介して送信し得る。メッセージ２９２は、スタックに報知して転送の準備を行うコマンドメッセージであり得る（「転送コマンドメッセージ」）。スタックマネージャコンポーネント２４２は、転送コマンドメッセージを受信し、各々が状態をデータ構造において判定および保存するスタックコンポーネント２３２〜２３８へ送信し得る。例えば、フローコントローラ２３４は、状態をコンポーネント状態２３４．１データオブジェクトにおいて判定および保存し得る。状態を保存すると、その後、各コンポーネントは通知メッセージを準備状態のマネージャ２４２へ送信し得る（「コンポーネント準備メッセージ」）。コンポーネント準備メッセージを各スタックコンポーネントから受信すると、マネージャ２４２は、通知メッセージ２９３を、スタック２３１が準備状態であることを示すコーディネータ２９０へ送信し得る（「スタック準備メッセージ」）。一部の実施形態において、マネージャ２４２は、コンポーネント状態２３２．１、２３４．１、２３６．１、および、２３８．１のデータオブジェクトの各々を示すスタック状態２４２．１コンテンツオブジェクトを統合し得る。マネージャ２４２は、他のスタックコンポーネントのように、スタック状態２４２．１においても示され得るスタック状態（図示せず）を判定および保存し得る。続いて、コーディネータ２９０は、インタレストメッセージ２９４を、スタック状態２４２．１をマネージャ２４２に要求するスタック２３１へ送信し得る。アプリケーション２１０は、コンテンツオブジェクトメッセージ２９５を、スタック状態２４２．１を示すコーディネータ２９０へ戻し得る（「スタック状態メッセージ」）。
【００３４】
図２Ｂは、本発明の実施形態にしたがって、図２Ａに対応する、例示的な搬送フレームワーク２７０および搬送スタック２７１を図示する。スタック状態メッセージ２９５を介してスタック状態２４２．１を受信すると、コーディネータ２９０は、スタック状態２４２．１を含むコマンドメッセージ２９６をアプリケーション２５０へ送信することにより転送を継続し得る。ここで、コマンドメッセージ２９６は、スタック状態２４２．１に基づく新しいスタックをインスタンス化するためにコマンドを含む。アプリケーション２５０は、搬送フレームワーク２７０において搬送スタック２７１を（ＡＰＩ２５２〜２５６のうちの１つ、ポータル２６０、および、一部の実施形態において、マネージャ２７２を介して）インスタンス化してよく、これにより、スタック２７１の各コンポーネントは、スタック状態２４２．１において示されるのと同じコンポーネント状態２３２．１〜２３８．１を有する。スタック２７１の良好なインスタンス化が完了すると、アプリケーション２５０は、スタックの転送が完了したことを示す通知メッセージ２９７をコーディネータ２９０へ送信し得る。続いて、コーディネータ２９０は、転送の良好な完了および対応するスタック２３１が正常動作を再開する可能性があるアプリケーション２１０への指示のうちの一方または両方を示す、通知メッセージ２９８をアプリケーション２１０へ送信し得る。
【００３５】
ＣＣＮにおいてスタック状態を転送するための例示的な方法
図３Ａは、本発明の実施形態にしたがって、コンテンツ指向型ネットワークにおいてスタックの状態を転写する方法を図示するフローチャート３００を提示する。動作中、調整エンティティ（「コーディネータ」）は、コマンドメッセージをスタックマネージャへ送信し、メッセージは転送の準備をスタックに示す（「転送コマンドメッセージ」）（動作３０２）。スタックマネージャは、転送コマンドメッセージをスタックの全コンポーネントへ送信する（動作３０４）。各スタックコンポーネントは、転送コマンドメッセージを受信し（動作３０６）、コンポーネント状態を判定する（動作３０８）。各スタックコンポーネントは、コンポーネント状態が任意の他のスタックコンポーネントの状態に依存するか判定する（決定３１０）。依存しない場合、スタックコンポーネントはコンポーネント状態を保存する（動作３１４）。依存する場合、スタックコンポーネントは、動作３１４へ進む前に、他の依存するスタックコンポーネントの準備状態の指標を待つ（動作３１２）。その後、各スタックコンポーネントは、スタックマネージャに準備状態を通知する（動作３１６）。スタックマネージャは、コーディネータにスタックの準備状態を通知し（動作３１８）、図３ＢのラベルＡまたは図３ＣのラベルＢにより記載されるように、動作が継続する。
【００３６】
図３Ｂは、本発明の実施形態にしたがって、コンテンツ指向型ネットワークにおいてスタックの状態を転送する方法であって、コーディネータがスタックマネージャを介してスタックと通信する方法を図示するフローチャート３３０を提示する。動作中、コーディネータは通知メッセージをスタックマネージャから受信し、メッセージはスタックの準備状態を示す（動作３３２）。コーディネータは、スタック状態の要求であるインタレストメッセージを生成し（動作３３４）、インタレストメッセージをスタックマネージャへ送信する（動作３３６）。スタックマネージャは、各々のコンポーネント状態を要求する各スタックコンポーネントへインタレストを送信する（動作３３８）。各スタックコンポーネントは、コンポーネント状態をスタックマネージャへ送信する（動作３４０）。スタックマネージャは、各コンポーネントのコンポーネント状態を受信し（動作３４２）、スタック状態を示すコンテンツオブジェクトを生成する（動作３４４）。さらに、コンテンツオブジェクトは、各コンポーネントの状態を示し得る。その後、スタックマネージャは、スタック状態を示すコンテンツオブジェクトをコーディネータへ送信する（動作３４６）。コーディネータは、スタック状態を示すコンテンツオブジェクトを受信する（動作３４８）。続いて、コーディネータは、スタック状態を示すコンテンツオブジェクトに基づいてスタックの別の位置への転送を開始する（動作３５０）。一部の実施形態において、転送は、障害迂回、負荷バランシング、または、他のリソース分散を目的とした複製であり得る。
【００３７】
図３Ｃは、本発明の実施形態にしたがって、コンテンツ指向型ネットワークにおいてスタックの状態を転送する方法であって、コーディネータが別のアプリケーションと通信する方法を図示するフローチャート３６０を提示する。動作中、コーディネータは、通知メッセージをスタックマネージャから受信し、メッセージはスタックの準備状態を示す（動作３６２）。コーディネータは、通知メッセージを別のアプリケーションへ送信し、米国特許出願第１４／７４６，４９０号に記載されるネーミングスキームに基づいて、スタックおよびコンポーネントの独自のルーティング可能（例えば、到達可能）な名前を含む（動作３６４）。他のアプリケーションは、別のスタックまたは別のスタックのマネージャコンポーネント上のアプリケーションであってよく、同じデバイスまたは異なるデバイス上に常駐し得る。他のアプリケーションは、スタック状態の要求であるインタレストメッセージを生成し（動作３６６）、インタレストメッセージをスタックマネージャへ送信する（動作３６８）。動作３７０は、図３Ｂと関連して記載される動作３３８〜３４４と類似している：スタックマネージャは、各々のコンポーネント状態を要求する各スタックコンポーネントへインタレストを送信し（動作３３８）；各スタックコンポーネントは、コンポーネント状態をスタックマネージャへ送信し（動作３４０）；スタックマネージャは、各コンポーネントのコンポーネント状態を受信し（動作３４２）、スタック状態を示すコンテンツオブジェクトを生成する（動作３４４）。
【００３８】
続いて、スタックマネージャは、スタック状態を示すコンテンツオブジェクトを他のアプリケーションへ送信する（動作３７２）。他のアプリケーションは、スタック状態を示すコンテンツオブジェクトを受信し（動作３７４）、スタック状態を示すコンテンツオブジェクトに基づいて新しいスタックのインスタンス化を開始する（動作３７６）。
【００３９】
スタックコンポーネントの役割
図４は、本発明の実施形態にしたがって、スタックの転送を容易にするためのスタックコンポーネントによる方法を図示するフローチャート４００を提示する。動作中、システムは、スタックのコンポーネントにより調整エンティティ（コーディネータ）から、コマンドメッセージを受信してコンポーネントの現在の状態を保存する（動作４０２）。コンポーネントは、名前に基づいてメッセージを処理する際に使用される通信コンポーネントであってよく、名前は、最も一般的なレベルから最も特定的なレベルへ順序付けされた連続的な名前コンポーネントを備えるＨＳＶＬＩであり得る。コンポーネントは、現在の状態を判定する（動作４０４）。その後、コンポーネントは、準備状態に入るために任意の他のスタックコンポーネントの状態に依存するか判定する（決定４０６）。依存しない場合、コンポーネントはデータ構造における現在の状態を保存する（動作４１０）。コンポーネントが任意の他のスタックコンポーネントに依存する場合、コンポーネントは依存するスタックコンポーネントの準備状態の指標を待つ（動作４０８）。一部の実施形態において、依存するスタックコンポーネントは、依存するスタックコンポーネントにより要求される際に準備状態または任意の他の状態に基づいてコンポーネントに信号を送り得る。全ての依存するスタックが準備状態であるという指標を受信すると、コンポーネントはデータ構造における現在の状態を保存する（動作４１０）。さらに、コンポーネントは、現在の状態がデータ構造に保存されていることを示す通知メッセージを生成し、データ構造の名前を含む（動作４１２）。データ構造は、一連のコンテンツオブジェクトおよび対応する要約を示すマニフェストであってよく、各々のコンテンツオブジェクトは、データオブジェクトまたは別のマニフェストであり得る。マニフェスト（例えば、安全なコンテンツカタログ）は、米国特許出願第１４／２３１，５１５号に記載されている。
【００４０】
続いて、コンポーネントはインタレストメッセージに対応するパケットを受信し得る。ここで、メッセージは現在の状態を示すデータ構造の要求を示す（動作４１４）。コンポーネントは、コンテンツオブジェクトメッセージに対応するパケットを生成し、メッセージはデータ構造を含む（動作４１６）。
【００４１】
例示的な装置およびコンピュータシステム
図５は、本発明の実施形態にしたがって、コンテンツ指向型ネットワークにおけるスタックの状態の転送を容易にする例示的な装置５００を図示する。装置５００は、有線または無線通信チャネルを介して相互に通信してよい複数のモジュールを備え得る。装置５００は、１つ以上の集積回路を使用して実現されてよく、図５に示されるものより少数または多数のモジュールを含んでよい。さらに、装置５００は、コンピュータシステムに統合されてよく、または、他のコンピュータシステムおよび／またはデバイスと通信可能な別個のデバイスとして実現されてよい。具体的には、装置５００は、通信モジュール５０２、状態判定モジュール５０４、状態保存モジュール５０６、パケット生成モジュール５０８、および、コーディネータモジュール５１０を備え得る。
【００４２】
一部の実施形態において、通信モジュール５０２は、他のネットワークノードと、コンテンツ指向型ネットワークなどのコンピュータネットワークを介して、データパケットを送受信し得る。ここで、データパケットは以下に対応し得る：通信コンポーネントのコマンドまたは通知メッセージ；データ構造のインタレスト；および、データ構造を含むコンテンツオブジェクト。
【００４３】
状態判定モジュール５０４はコンポーネントの現在の状態を判定してよく、状態保存モジュール５０６はデータ構造におけるコンポーネントの現在の状態を保存し得る。パケット生成モジュール５０８は、データ構造およびデータ構造の名前を含む、コンテンツオブジェクトメッセージに対応するパケットを生成し得る。さらに、パケット生成モジュール５０８は、現在の状態がデータ構造に保存されていることを示す通知メッセージを生成し得る。通信モジュール５０２は、現在の状態の要求を受信することに応答して、現在の状態を送信し得る。状態判定モジュール５０４は、さらに、スタックの１つ以上の他の通信コンポーネントの現在の状態を判定し得る。他のコンポーネントの現在の状態が保留状態であると判定することに応答して、状態判定モジュール５０４は、他のコンポーネントの準備状態の指標を待ち得る。コーディネータモジュール５１０は、スタックのマネージャコンポーネントのコマンドメッセージを生成し得る。ここで、マネージャコンポーネントは、コーディネータとスタックのコンポーネントとの間でメッセージを処理する際に使用される。さらに、コーディネータモジュール５１０は、データ構造の要求であるインタレストメッセージを生成し得る。
【００４４】
図６は、本発明の実施形態にしたがって、コンテンツ指向型ネットワークにおけるスタックの状態の転送を容易にする例示的なコンピュータシステムを図示する。コンピュータシステム６０２は、プロセッサ６０４、メモリ６０６、および、保存デバイス６０８を含む。メモリ６０６は、管理メモリとして機能する揮発性メモリ（例えば、ＲＡＭ）を含んでよく、１つ以上のメモリプールを保存するために使用され得る。さらに、コンピュータシステム６０２は、表示デバイス６１０、キーボード６１２、および、ポインティングデバイス６１４と結合され得る。保存デバイス６０８は、オペレーティングシステム６１６、搬送システム６１８、および、データ６３２を保存し得る。
【００４５】
搬送システム６１８は命令を含んでよく、コンピュータシステム６０２により実行されると、コンピュータシステム６０２に本開示に記載される方法および／またはプロセスを行わせ得る。具体的には、搬送システム６１８は、他のネットワークノードと、コンテンツ指向型ネットワーク（通信モジュール６２０）などのコンピュータネットワークを介して、データパケットを送受信するための命令を含んでよい。例えば、搬送システム６１８は、通信コンポーネントにより調整エンティティから、コマンドメッセージを受信してコンポーネントの現在の状態を保存するための命令を含み得る。ここで、通信コンポーネントは、名前に基づいてメッセージを処理する際に使用される（通信モジュール６２０）。搬送システム６１８は、コンポーネントの現在の状態を判定する（状態判定モジュール６２２）、および、データ構造におけるコンポーネントの現在の状態を保存する（状態保存モジュール６２４）ための命令を含み得る。
【００４６】
さらに、搬送システム６１８は、データ構造およびデータ構造の名前を含む、コンテンツオブジェクトメッセージに対応するパケットを生成するための命令を含み得る（パケット生成モジュール６２６）。搬送システム６１８は、現在の状態がデータ構造に保存されていることを示す通知メッセージを生成するための命令を含み得る（パケット生成モジュール６２６）。さらに、搬送システム６１８は、現在の状態の要求を受信することに応答して、現在の状態を送信するための命令を含み得る（通信モジュール６２０）。搬送システム６１８は、スタックの１つ以上の他の通信コンポーネントの現在の状態を判定するための命令を含み得る（状態判定モジュール６２２）。搬送システム６１８は、さらに、他のコンポーネントの現在の状態が保留状態であると判定することに応答して、他のコンポーネントの準備状態の指標を待つための命令を含み得る（状態判定モジュール６２２）。
【００４７】
搬送システム６１８は、追加的に、スタックのマネージャコンポーネントのコマンドメッセージを生成するための命令を含み得る。ここで、マネージャコンポーネントは、コーディネータとスタックのコンポーネントとの間でメッセージを処理する際に使用される（コーディネータモジュール６２８）。さらに、搬送システム６１８は、データ構造の要求であるインタレストメッセージを生成するための命令を含み得る（コーディネータモジュール６２８）。
【００４８】
データ６３２は、本開示に記載される方法および／またはプロセスにより、入力として要求される任意のデータ、または、出力として生成される任意のデータ、を含み得る。具体的には、データ６３２は、少なくとも以下を保存し得る：コンポーネントの現在の状態を保存するためのコマンドメッセージ；名前；最も一般的なレベルから最も特定的なレベルへ順序付けされた連続的な名前コンポーネントを備えるＨＳＶＬＩである名前；コンポーネントの状態；コンポーネントのスタックの状態；コンポーネント状態を表すデータ構造；スタック状態を表すデータ構造；インタレストに対応するパケットであって、インタレストはデータ構造の要求を示すパケット；搬送フレームワーク；スタック；スタックの１つ以上のコンポーネント；調整エンティティ；マネージャコンポーネント；データ構造を含むコンテンツオブジェクトメッセージに対応するパケット；現在の状態がデータ構造に保存されていることを示す通知メッセージ；コンポーネントまたはスタックの状態を示すマニフェスト；および、準備、保留、または、他の状態の指標。
【００４９】
詳細な説明に記載されるデータ構造およびコードは、典型的には、コンピュータシステムによる使用のためのコードおよび／またはデータを保存し得る任意のデバイスまたは媒体であってよい、コンピュータ可読保存媒体に保存される。コンピュータ可読保存媒体は、揮発性メモリ、不揮発性メモリ、ディスクドライブ、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタル多用途ディスクまたはデジタルビデオディスク）など、磁気および光保存デバイス、または、既知または今後に開発されるコンピュータ可読媒体を保存可能な他の媒体を含むが、それらに限定されない。
【００５０】
詳細な説明の項に記載される方法およびプロセスは、上述したコンピュータ可読保存媒体に保存され得る、コードおよび／またはデータとして具現化され得る。コンピュータシステムが、コンピュータ可読保存媒体に保存されるコードおよび／またはデータを読み込んで実行すると、コンピュータシステムは、データ構造およびコードとして具現化されコンピュータ可読保存媒体内に保存される、方法およびプロセスを行う。
【００５１】
さらに、上記で説明された方法およびプロセスは、ハードウェアモジュールに含まれ得る。例えば、ハードウェアモジュールは、特定用途向け集積回路（ＡＳＩＣ）チップ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、および、既知または今後に開発される他のプログラマブル論理デバイスを含み得るが、それらに限定されない。ハードウェアモジュールが起動されると、ハードウェアモジュールは、ハードウェアモジュール内に含まれる方法およびプロセスを行う。
【図１Ａ】
2017034666.tif 000002
【図１Ｂ】
2017034666.tif 000003
【図２Ａ】
2017034666.tif 000004
【図２Ｂ】
2017034666.tif 000005
【図３Ａ】
2017034666.tif 000006
【図３Ｂ】
2017034666.tif 000007
【図３Ｃ】
2017034666.tif 000008
【図４】
2017034666.tif 000009
【図５】
2017034666.tif 000010
【図６】
2017034666.tif 000011