(57)【要約】      （修正有）【課題】コマンドメッセージの層不可知なやり方での通信を容易にするトランスポートフレームワークシステムを提供する。【解決手段】システムは、通信モジュールのスタックのコンポーネントによって目標のエンティティへの第１のコマンドメッセージを生成する。第１のコマンドメッセージは、目標のエンティティに特有の名称を含み、スタックは、自身の上位または下位の層とのみ通信するそれぞれの通信モジュールを必要としない。コンポーネントは、第１のコマンドメッセージをコンポーネントに対応するキューに挿入することによって、第１のコマンドメッセージを目標のエンティティに送信する。また、コンポーネントは、送信エンティティからの第２のコマンドメッセージを送信エンティティに対応するキューを介して受信することができ、第２のコマンドメッセージは、コンポーネントに固有の名称を含んでいる。【選択図】図４Ａ
2017010537.tif 000002
【特許請求の範囲】
【請求項１】
通信モジュールのスタックのコンポーネントによって、目標のエンティティのための第１のコマンドメッセージを生成するステップであって、該第１のコマンドメッセージは、前記目標のエンティティに特有の名称を含んでおり、前記スタックは、自身の上位または下位の層とのみ通信するためのそれぞれの通信モジュールを必要としない、ステップと、
前記第１のコマンドメッセージを前記コンポーネントに対応するキューに挿入することによって、前記第１のコマンドメッセージを前記目標のエンティティに送信するステップと、
送信エンティティからの第２のコマンドメッセージを該送信エンティティに対応するキューを介して受信するステップであって、前記第２のコマンドメッセージは、前記コンポーネントに固有の名称を含んでいる、ステップと
を含むことにより、層不可知なやり方でのコマンドメッセージの通信を容易にする方法。
【請求項２】
前記目標のエンティティおよび前記送信エンティティは、
前記スタックの別のコンポーネント、
別のスタックのコンポーネント、
前記スタックに対応するアプリケーションに関連付けられたＡＰＩインスタンス、
別のスタックに対応するアプリケーションに関連付けられたＡＰＩインスタンス、
前記スタックに関連付けられたフォワーダ、および
別のスタックに関連付けられたフォワーダ
のうちの１つ以上である、請求項１に記載の方法。
【請求項３】
前記第１のコマンドメッセージを送信するステップは、
前記第１のコマンドメッセージをメッセージ配信システムを介して前記目標のエンティティに送信するステップ
をさらに含む、請求項１に記載の方法。
【請求項４】
前記目標のエンティティが前記スタックの別のコンポーネント、別のスタックのコンポーネント、別のスタックに対応するアプリケーションに関連付けられたＡＰＩインスタンス、または別のスタックに関連付けられたフォワーダであるとの判断に応答して、前記コンポーネントに対応するキューとして前記コンポーネントの上方または下方出力キューを設定するステップと、
前記目標のエンティティが前記スタックに対応するアプリケーションに関連付けられたＡＰＩインスタンスであるとの判断に応答して、前記コンポーネントに対応するキューとして前記コンポーネントの上方出力キューを設定するステップと、
前記目標のエンティティが前記スタックに関連付けられたフォワーダであるとの判断に応答して、前記コンポーネントに対応するキューとして前記コンポーネントの下方出力キューを設定するステップと
をさらに含む、請求項１に記載の方法。
【請求項５】
インストラクションを格納している非一時的なコンピュータにとって読み取り可能な記憶媒体であって、
前記インストラクションは、コンピュータによって実行されたときに、
通信モジュールのスタックのコンポーネントによって、目標のエンティティのための第１のコマンドメッセージを生成するステップであって、該第１のコマンドメッセージは、前記目標のエンティティに特有の名称を含んでおり、前記スタックは、自身の上位または下位の層とのみ通信するためのそれぞれの通信モジュールを必要としない、ステップと、
前記第１のコマンドメッセージを前記コンポーネントに対応するキューに挿入することによって、前記第１のコマンドメッセージを前記目標のエンティティに送信するステップと、
送信エンティティからの第２のコマンドメッセージを該送信エンティティに対応するキューを介して受信するステップであって、前記第２のコマンドメッセージは、前記コンポーネントに固有の名称を含んでいる、ステップと
を含むことにより、層不可知なやり方でのコマンドメッセージの通信を容易にする方法を、該コンピュータに実行させる、記憶媒体。
【請求項６】
前記目標のエンティティおよび前記送信エンティティは、
前記スタックの別のコンポーネント、
別のスタックのコンポーネント、
前記スタックに対応するアプリケーションに関連付けられたＡＰＩインスタンス、
別のスタックに対応するアプリケーションに関連付けられたＡＰＩインスタンス、
前記スタックに関連付けられたフォワーダ、および
別のスタックに関連付けられたフォワーダ
のうちの１つ以上である、請求項５に記載の記憶媒体。
【請求項７】
前記第１のコマンドメッセージを送信するステップは、
前記第１のコマンドメッセージをメッセージ配信システムを介して前記目標のエンティティに送信するステップ
をさらに含む、請求項５に記載の記憶媒体。
【請求項８】
パケットの転送を容易にするためのコンピュータシステムであって、
プロセッサと、
インストラクションを格納しているストレージデバイスと
を備えており、
前記インストラクションは、前記プロセッサによって実行されたときに、
通信モジュールのスタックのコンポーネントによって、目標のエンティティのための第１のコマンドメッセージを生成するステップであって、該第１のコマンドメッセージは、前記目標のエンティティに特有の名称を含んでおり、前記スタックは、自身の上位または下位の層とのみ通信するためのそれぞれの通信モジュールを必要としない、ステップと、
前記第１のコマンドメッセージを前記コンポーネントに対応するキューに挿入することによって、前記第１のコマンドメッセージを前記目標のエンティティに送信するステップと、
送信エンティティからの第２のコマンドメッセージを該送信エンティティに対応するキューを介して受信するステップであって、前記第２のコマンドメッセージは、前記コンポーネントに固有の名称を含んでいる、ステップと
を含むことにより、層不可知なやり方でのコマンドメッセージの通信を容易にする方法を、該プロセッサに実行させる、コンピュータシステム。
【請求項９】
前記目標のエンティティおよび前記送信エンティティは、
前記スタックの別のコンポーネント、
別のスタックのコンポーネント、
前記スタックに対応するアプリケーションに関連付けられたＡＰＩインスタンス、
別のスタックに対応するアプリケーションに関連付けられたＡＰＩインスタンス、
前記スタックに関連付けられたフォワーダ、および
別のスタックに関連付けられたフォワーダ
のうちの１つ以上である、請求項８に記載のコンピュータシステム。
【請求項１０】
前記第１のコマンドメッセージを送信するステップは、
前記第１のコマンドメッセージをメッセージ配信システムを介して前記目標のエンティティに送信するステップ
をさらに含む、請求項８に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、広くには、トランスポートフレームワークに関する。より詳しくは、本発明は、同じまたは異なるスタックのコンポーネントの間での層不可知（ｌａｙｅｒ−ａｇｎｏｓｔｉｃ）なやり方でのコマンドメッセージの通信を容易にするための方法およびシステムに関する。
【背景技術】
【０００２】
モバイルコンピューティングデバイスおよびインターネットの遍在性が、あらゆる場所からのデジタルコンテンツの体験を人々にとって可能にしている。人々は、映画または音楽のストリーミングあるいは他者とのゲームプレイなど、自身のモバイルコンピューティングデバイスにおいてアプリケーションを使用してインターネットのあちこちのサービスプロバイダからコンテンツを消費し、あるいはやり取りすることができる。モバイルコンピューティングにおけるこれらの進歩は、これらのモバイルデバイスによって再生できるコンテンツの品質も向上させ、デジタルコンテンツを生成および記録してインターネットを介して他者と共有することができるデバイスの数を大きく増加させる。今日では、スマートフォンなどの小型のモバイルデバイスでさえも、フルＨＤ（ｆｕｌｌ  ｈｉｇｈ−ｄｅｆｉｎｉｔｉｏｎ）のビデオを高品質の色再現にて生成することができ、高速のセルラーおよびブロードバンドネットワークが、このコンテンツをＹｏｕＴｕｂｅ（登録商標）（Ｇｏｏｇｌｅ，Ｉｎｃ．）およびＦａｃｅｂｏｏｋ（Ｆａｃｅｂｏｏｋ，Ｉｎｃ．）コンテンツ共有サービスなどの種々のインターネットサービスによって他者と共有することを、ユーザにとって可能にしている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
多数のコンピュータアプリケーションが、これらのコンピュータネットワークおよびインターネットサービスを活用して、社交の機能（ｓｏｃｉａｌ  ｆｅａｔｕｒｅ）をユーザに提供し、ユーザの体験を大きく高めている。アプリケーションがネットワークの使用を望むとき、アプリケーションは、コンピューティングデバイスのオペレーティングシステム上で動作する１つ以上のアプリケーション・プログラミング・インタ−フェイス（ＡＰＩ）を使用することによってネットワークを使用する。これらのＡＰＩは、データを送信し、受信し、記憶し、設定し、あるいは他のやり方でネットワークにおける他のコンピュータと通信する方法を提供する。
【０００４】
例えば、アプリケーションは、ネットワークを介してデータを送信または受信するためにＡＰＩを使用できる前に、ネットワークＡＰＩを実行するプロトコルスタックをインスタンス化する。例えば開放型システム間相互接続（ＯＳＩ）モデルに基づく伝統的なプロトコルスタックにおいては、各々の層が、その上位または下位の層とだけ通信することができる。コンテンツセントリックネットワーク（ＣＣＮ）に基づくモデルにおいては、プロトコルスタックを、種々のアプリケーションによって使用されるＡＰＩのニーズに適するように動的に生成することができる。これらのアプリケーション主導のプロトコルスタックの生成は、システムの柔軟性を高めることができるが、標準化の欠如が、そのようなスタックにおける特定のコンポーネントのアドレシングに課題を呈している。さらに、いくつかのメッセージは、スタックにおける特定の流れの方向に関連付けられる可能性があり、これが柔軟性の低下につながる可能性がある。
【課題を解決するための手段】
【０００５】
一実施形態は、コマンドメッセージの層不可知なやり方での通信を容易にするトランスポートフレームワークシステムを提供する。動作において、本システムは、通信モジュールのスタックのコンポーネントによって目標のエンティティへの第１のコマンドメッセージを生成する。前記第１のコマンドメッセージは、前記目標のエンティティに特有の名称を含み、前記スタックは、自身の上位または下位の層とのみ通信するそれぞれの通信モジュールを必要としない。前記コンポーネントは、前記第１のコマンドメッセージを前記コンポーネントに対応するキューに挿入することによって、前記第１のコマンドメッセージを前記目標のエンティティに送信する。また、前記コンポーネントは、送信エンティティからの第２のコマンドメッセージを該送信エンティティに対応するキューを介して受信することができる。前記第２のコマンドメッセージは、前記コンポーネントに固有の名称を含む。これは、層不可知なやり方でのコマンドメッセージの通信を容易にする。
【０００６】
いくつかの実施形態において、前記目標のエンティティおよび前記送信エンティティは、前記スタックの別のコンポーネント、別のスタックのコンポーネント、前記スタックに対応するアプリケーションに関連付けられたＡＰＩインスタンス、別のスタックに対応するアプリケーションに関連付けられたＡＰＩインスタンス、前記スタックに関連付けられたフォワーダ、および別のスタックに関連付けられたフォワーダ、のうちの１つ以上である。
【０００７】
いくつかの実施形態において、前記第１のコマンドメッセージの送信は、前記第１のコマンドメッセージをメッセージ配信システムを介して前記目標のエンティティに送信することをさらに含む。
【０００８】
いくつかの実施形態において、前記目標のエンティティが前記スタックの別のコンポーネント、別のスタックのコンポーネント、別のスタックに対応するアプリケーションに関連付けられたＡＰＩインスタンス、または別のスタックに関連付けられたフォワーダであるとの判断に応答して、本システムは、前記コンポーネントに対応するキューとして前記コンポーネントの上方または下方出力キューを設定することができる。前記目標のエンティティが前記スタックに対応するアプリケーションに関連付けられたＡＰＩインスタンスであるとの判断に応答して、本システムは、前記コンポーネントに対応するキューとして前記コンポーネントの上方出力キューを設定することができる。前記目標のエンティティが前記スタックに関連付けられたフォワーダであるとの判断に応答して、本システムは、前記コンポーネントに対応するキューとして前記コンポーネントの下方出力キューを設定することができる。
【０００９】
いくつかの実施形態において、前記第２のコマンドメッセージの受信は、前記第２のコマンドメッセージをメッセージ配信システムを介して前記送信エンティティから受信することをさらに含む。
【００１０】
いくつかの実施形態において、前記第２のコマンドメッセージは、前記送信エンティティに関連付けられた上方または下方入力キューを介して受信される。
【００１１】
いくつかの実施形態において、前記第１または第２のコマンドメッセージの名称は、前記スタックの名称、対応するポータルインスタンスに関連付けられたフォワーダの名称、前記スタックのコンポーネントの名称、および前記スタックのコンポーネントに関連付けられたコマンドのうちの１つ以上を含む。
【００１２】
いくつかの実施形態において、前記スタックのコンポーネントの名称は、最も全体的なレベルから最も具体的なレベルに順に並べられた連続する名称構成要素を含んでおり、前記スタックに対応するポータルインスタンスにおいて適用可能である階層構造可変長識別子（ＨＳＶＬＩ）、いかなる階層も示さないフラットな名称、前記スタックのコンポーネントの役割、および前記スタックのコンポーネントに固有の一意の識別子のうちの１つ以上に基づく。
【図面の簡単な説明】
【００１３】
【図１】図１は、本発明の実施形態によるコマンドメッセージの層不可知なやり方での通信を容易にする典型的な環境を示している。
【図２Ａ】図２Ａは、本発明の実施形態による典型的なトランスポートフレームワークを示している。
【図２Ｂ】図２Ｂは、スタックのコンポーネントと同じスタックに関連付けられたアプリケーションとの間の従来からの典型的な通信を示している。
【図２Ｃ】図２Ｃは、本発明の実施形態によるスタックのコンポーネントと同じスタックに関連付けられたアプリケーションとの間の典型的な通信を示している。
【図２Ｄ】図２Ｄは、本発明の実施形態によるスタックのコンポーネントと同じスタックに関連付けられたアプリケーションとの間の典型的な通信を示している。
【図２Ｅ】図２Ｅは、本発明の実施形態による異なるスタックのコンポーネント間の典型的な通信を示している。
【図２Ｆ】図２Ｆは、本発明の実施形態による異なるスタックのコンポーネント間の典型的な通信を示している。
【図３】図３は、本発明の実施形態によるメッセージ配信システムを含む典型的なトランスポートフレームワークを示している。
【図４Ａ】図４Ａは、コマンドメッセージの層不可知なやり方での通信を容易にするための本発明の実施形態による方法を説明するフロー図を示している。
【図４Ｂ】図４Ｂは、コマンドメッセージの層不可知なやり方での通信を容易にするための本発明の実施形態による方法を説明するフロー図を示している。
【図５】図５は、本発明の実施形態によるコマンドメッセージの層不可知なやり方での通信を容易にする典型的な装置を示している。
【図６】図６は、本発明の実施形態によるコマンドメッセージの層不可知なやり方での通信を容易にする典型的なコンピュータシステムを示している。
【発明を実施するための形態】
【００１４】
図面において、同じ参照番号は、同じ図面構成要素を指している。
【００１５】
以下の説明は、実施形態の製作および使用を当業者にとって可能にするために提示され、特定のアプリケーションおよびその要件の文脈において提示される。開示の実施形態の種々の変更が、当業者にとって容易に明らかであり、本明細書において定められる全体的な原理は、本発明の技術的思想および技術的範囲から離れることなく、他の実施形態およびアプリケーションに適用可能である。したがって、本発明は、示される実施形態に限られず、本明細書に開示の原理および特徴に矛盾しない最も広い範囲が与えられるべきである。
【００１６】
本発明の実施形態は、層状のプロトコルスタックのコンポーネントまたはアプリケーションによって発せられるメッセージが規定の方向を強いられるという問題を、アプリケーション、フォワーダ、ならびに同じスタックまたは異なるスタックの個々のコンポーネントの間での層不可知のコマンドメッセージの送信を可能にすることによって解決するトランスポートフレームワークにおけるメッセージのやり取りの仕組みを提供する。ＣＣＮにおいて、トランスポートフレームワークは、高レベルＡＰＩがフレームワークにおいてトランスポートスタックをインスタンス化することを可能にする。トランスポートスタックは、複数のコンポーネントまたは通信モジュールを含むことができ、各々のコンポーネントが自身の下位または上位の層とのみ通信する伝統的な層状モデル（例えば、ＯＳＩ）に固執しない。トランスポートスタックを、動的に生成し、ランタイムにおいて設定することができ、トランスポートスタックにおけるコンポーネントの各々は、特定の機能を実行する。例えば、トランスポートスタックの一コンポーネントは、高レベルメッセージストリームＡＰＩのための伝送制御プロトコル（ＴＣＰ）輻輳回避アルゴリズム（例えば、ＴＣＰ  Ｖｅｇａｓ）の実行を担当するフローコントローラであってよい。
【００１７】
典型的には、スタックコンポーネントを設定するために、ＡＰＩが、スタックコンポーネントに向けられた「制御」メッセージを生成することができる。制御メッセージは、ＣＣＮ名称によって特定され、ペイロードを含む点で、インタレストまたはコンテンツオブジェクトと同様である。制御メッセージは、意図される受け手に到達するまで、層による順番でスタックコンポーネントを通ってスタックを流れ下り、受け手が（例えば、エラーコードまたは成功メッセージなどの付随のメタデータを有するＡＣＫまたはＮＡＣＫの形態の）応答を生成および送信する。反対に、個々のスタックコンポーネントが、上位のコンポーネントまたはＡＰＩに向けられた「通知」メッセージを発することができる。制御メッセージと同様に、通知メッセージは、ＣＣＮ名称によって特定され、意図される受け手に到達するまで層による順番でスタックを流れ上り、応答を生じさせる。
【００１８】
これらの別個の種類のメッセージ（例えば、ＡＰＩからスタックコンポーネントへの制御メッセージ、およびスタックコンポーネントからＡＰＩへの通知メッセージ）の流れによって強いられる硬直性が、全体としてのトランスポートフレームワークにおける柔軟性の低下につながりかねない。本発明の実施形態は、一様な層不可知のコマンドメッセージ（制御メッセージおよび通知メッセージの両方を含む）を同じまたは異なるデバイスにおいてアプリケーション／ＡＰＩ、スタックコンポーネント、またはフォワーダから同じまたは異なるスタックに関連付けられた任意の他のアプリケーション／ＡＰＩ、スタックコンポーネント、またはフォワーダに送信することができるシステムを提供する。コマンドメッセージは、創出者（ｏｒｉｇｉｎａｔｏｒ）および一意の名称の仕組みによって指定される方向に基づいてスタックを流れ上り、あるいは流れ下ることができる。トランスポートスタックの名称の仕組みおよびアイデンティティ管理は、米国特許出願第１４／７４６，４９０号に記載されている。名称の仕組みに基づく一様なコマンドメッセージを提供することで、標準的な「下方に」流れる制御メッセージおよび「上方に」流れる通知メッセージの方向依存性が取り除かれる。このようにして、動的に設定される非標準的な層状のＣＣＮトランスポートスタックにおいて、システムは、層不可知なやり方でのコマンドメッセージの構成および通信を容易にする。
【００１９】
いくつかの実施形態において、トランスポートフレームワークは、ＣＣＮアーキテクチャのもとで動作する。ＣＣＮにおいては、各々のコンテンツに個別の名称が付けられ、各々のデータが、そのデータを同じデータの他のバージョンまたは他の出所からのデータなどの任意の他のデータから区別する一意の名称に結びつけられる。この一意の名称は、ネットワークデバイスが一意の名称を示す要求またはインタレストを散布することによってデータを要求することを可能にし、データの格納位置、ネットワーク位置、アプリケーション、および輸送の手段から独立してデータを得ることができる。以下の用語が、ＣＣＮアーキテクチャを説明するために使用される。
【００２０】
コンテンツオブジェクト（Ｃｏｎｔｅｎｔ  Ｏｂｊｅｃｔ（または、「ｃｏｎｔｅｎｔ  ｏｂｊｅｃｔ」））：固有名称に結びつけられた１つの名前付きのデータ。コンテンツオブジェクトは、「永続的（ｐｅｒｓｉｓｔｅｎｔ）」であり、すなわちコンテンツオブジェクトは、コンピューティングデバイス内のあちこちを移動し、あるいは異なるコンピューティングデバイスにまたがって移動し得るが、変更されることはない。コンテンツオブジェクトの何らかのコンポーネントが変更される場合、その変更を行ったエンティティが、更新後のコンテンツを含む新たなコンテンツオブジェクトを生成し、新たなコンテンツオブジェクトを新たな固有名称に結びつける。
【００２１】
固有名称（Ｕｎｉｑｕｅ  Ｎａｍｅ）：ＣＣＮにおける名称は、典型的には、位置とは無関係であり、コンテンツオブジェクトを一意に特定する。データ転送デバイスは、名称または名称のプレフィックス部分を使用することによって、コンテンツオブジェクトのネットワークアドレスまたは物理的な位置にかかわらずに、コンテンツオブジェクトを生成または格納するネットワークノードにパケットを転送することができる。いくつかの実施形態において、名称は、階層構造可変長識別子（ＨＳＶＬＩ）であってよい。ＨＳＶＬＩを、さまざまなやり方で構造化することができるいくつかの階層コンポーネントに分割することができる。例えば、個々の名称コンポーネントｐａｒｃ、ｈｏｍｅ、ｃｃｎ、およびｔｅｓｔ．ｔｘｔを、左側に位置するプレフィックス部分が上位であるようなやり方で構造化して、名称「／ｐａｒｃ／ｈｏｍｅ／ｃｃｎ／ｔｅｓｔ．ｔｘｔ」を形成することができる。すなわち、名称「／ｐａｒｃ／ｈｏｍｅ／ｃｃｎ」が、「／ｐａｒｃ／ｈｏｍｅ／ｃｃｎ／ｔｅｓｔ．ｔｘｔ」の「親」または「プレフィックス部分」であり得る。さらなるコンポーネントを、共同作業による文書などのコンテンツアイテムの異なるバージョンの間の区別のために使用することができる。
【００２２】
いくつかの実施形態において、名称は、コンテンツオブジェクトのデータ（例えば、チェックサム値）および／またはコンテンツオブジェクトの名称のエレメントから導出されたハッシュ値など、識別子を含むことができる。ハッシュに基づく名称の説明が、米国特許出願第１３／８４７，８１４号に記載されている。名称は、フラットラベル（ｆｌａｔ  ｌａｂｅｌ）であってもよい。以下で、「名称」は、階層による名称または名称のプレフィックス部分、フラットな名称、固定長の名称、任意長の名称、あるいはラベル（例えば、マルチプロトコル・ラベル・スイッチング（ＭＰＬＳ）ラベル）など、名称−データネットワークにおけるデータのあらゆる名称を指して使用される。
【００２３】
インタレスト（Ｉｎｔｅｒｅｓｔ（または、「ｉｎｔｅｒｅｓｔ」））：データの要求を知らせるパケットであり、そのデータの名称（または、名称のプレフィックス部分）を含んでいるパケット。データ消費者（ｄａｔａ  ｃｏｎｓｕｍｅｒ）が、情報セントリックネットワーク（ｉｎｆｏｒｍａｔｉｏｎ−ｃｅｎｔｒｉｃ  ｎｅｔｗｏｒｋ）のいたる所に要求またはインタレストを散布することができ、そのような要求またはインタレストを、ＣＣＮ／ＮＤＮルータが、要求またはインタレストを満足させるべく要求されたデータを提供することができるストレージデバイス（例えば、キャッシュサーバ）またはデータ生成者（ｄａｔａ  ｐｒｏｄｕｃｅｒ）に伝えることができる。
【００２４】
加えて、「ｌｃｉ」が、ラベル付けされたコンテンツ情報を指し、名称の一部分がラベルを保持しているユニバーサル・リソース・インジケータ（ＵＲＩ）に準拠した識別子である。ＣＣＮなどのネットワークプロトコルは、ＵＲＩの各々の名称部分に特定のラベルを適用することによって、ラベル付けされたコンテンツ情報を使用することができる。階層構造の名称において、ラベル付けされたコンテンツ名称は、意味的（ｓｅｍａｎｔｉｃ）な種類またはラベルを各々の部分に割り当てる。例えば、名称部分の種類として、ＣＣＮがメッセージについて２値ワイヤ上（ｏｎ−ｔｈｅ−ｗｉｒｅ）表現を使用することを可能にする任意のオクテットを含む包括的な名称部分である名称部分を挙げることができる。
【００２５】
本明細書に開示の方法は、ＣＣＮネットワークに限定されず、他のアーキテクチャにも同様に適用可能である。ＣＣＮアーキテクチャの説明は、米国特許出願第１２／３３８，１７５号に記載されている。
【００２６】
図１が、本発明の実施形態によるコマンドメッセージの層不可知なやり方での通信を容易にする典型的な環境１００を示している。コンピューティング環境１００は、ＣＣＮなどのコンピュータネットワーク１０２を含むことができる。環境１００は、ローカルコンピューティングデバイス１０４に関連付けられたユーザ１０６と、リモートコンピューティングデバイス１０８とをさらに含むことができる。デバイス１０４および１０８は、ネットワーク１０２を介して互いにネットワークパケットを交換する内部トランスポートスタック（例えば、トランスポートフレームワーク１３０および１７０にそれぞれ関連付けられる）を有することができる。
【００２７】
伝統的なＩＰアーキテクチャにおいては、フォワーダ（ｆｏｒｗａｒｄｅｒ）が、パケットのヘッダを調べてパケットの出所および送り先を明らかにし、パケットを送り先に転送するＩＰベースのフォワーダである。スタックは、ＴＣＰ／ＵＤＰを実行し、アプリケーションが、ソケットを介してスタックとやり取りする。対照的に、本発明のデバイス１０４は、伝統的な「スタック」を使用しない。むしろ、デバイス１０４は、アプリケーション１１０を介して、トランスポートフレームワーク１３０に対応するポータル１２０に対応するポータルＡＰＩインスタンスを要求することができる。同様に、デバイス１０８は、アプリケーション１５０を介して、トランスポートフレームワーク１７０に対応するポータル１６０に対応するポータルＡＰＩインスタンスを要求することができる。アプリケーション１１０および１５０は、それぞれポータル１２０および１６０に関連付けられたポータルＡＰＩインスタンスの検索または生成のための要求を生成することができる。あるいは、米国特許出願第１４／７４６，４９０号に記載のように、デバイス１０４またはデバイス１０８に関連付けられたルートユーザが、それぞれのポータルインスタンスを生成することができる。アプリケーション１１０および１５０は、（図１に示されるように）異なるデバイスに位置しても、（図１には示されていないが）同じデバイスに位置してもよい。
【００２８】
デバイス１０４は、スマートフォン１０４．１、タブレットコンピュータ１０４．２、ならびに／あるいはサーバまたはパーソナルコンピュータ１０４．ｍなど、ネットワーク１０２に接続された任意のコンピューティングデバイスを含むことができる。とくに、デバイス１０４は、ポータル１２０を介してトランスポートフレームワーク１３０と通信するアプリケーション１１０を含むことができる。トランスポートフレームワーク１３０は、スタックコンポーネント１３４．１〜１３４．ｎを含むことができる。デバイス１０４は、トランスポートフレームワーク１３０のスタック（および、個々のスタックコンポーネント）とネットワーク１０２との間でパケットを転送することができるフォワーダ１４０（例えば、ネットワーク・インターフェイス・カード、またはローカル・エリア・ネットワークにおけるルータ）をさらに含むことができる。同様に、デバイス１０８は、サーバまたは末端ホストデバイスなど、ネットワーク１０２に接続された任意のコンピューティングデバイスを含むことができる。デバイス１０８は、ポータル１６０を介してトランスポートフレームワーク１７０と通信するアプリケーション１５０を含むことができる。トランスポートフレームワーク１７０は、スタックコンポーネント１７４．１〜１７４．ｐを含むことができる。デバイス１０８は、トランスポートフレームワーク１７０のスタック（および、個々のスタックコンポーネント）とネットワーク１０２との間でパケットを転送することができるフォワーダ１８０をさらに含むことができる。フォワーダ１４０および１８０は、それぞれ個々のスタックコンポーネント１３４．１〜１３４．ｎおよび１７４．１〜１７４．ｐの間のパケットの直接の転送を容易にすることもできる。
【００２９】
図２Ａは、本発明の実施形態による典型的なトランスポートフレームワークを示している。アプリケーション２１０および２５０が、同じデバイス上に位置することができ、あるいはネットワーク２０２を介して通信する異なるデバイス上に位置することができる。アプリケーション２１０は、ネットワーク２０２を介した通信のためにＡＰＩ２１２、２１４、および２１６を使用することができ、ＡＰＩ２１２〜２１６は、ポータル２２０を介してトランスポートフレームワーク２３０とやり取りをすることができる。トランスポートフレームワーク２３０は、各々が複数のスタックコンポーネントまたは通信モジュールを含んでいる１つ以上のトランスポートスタックを含むことができる。図２Ａにおいて、トランスポートフレームワーク２３０は、スタックコンポーネント２３２〜２３８を含む１つのトランスポートスタック（例えば、トランスポートスタック２３１）を示している。ＡＰＩアダプタ２３２が、ＡＰＩと特定のトランスポートスタックおよびトランスポートフレームワーク２３０との間の通信を行うことができる。フローコントローラ２３４が、トラフィックを成形および管理し、インタレストを輸送および伝送し、コンテンツオブジェクトをオーダーすることができる。ベリファイヤ／サイナ（ｖｅｒｉｆｉｅｒ／ｓｉｇｎｅｒ）２３６が、ネットワークエレメントに宛てられたコンテンツオブジェクトのエンコードおよび署名を行い、関連のアプリケーションに宛てられたコンテンツオブジェクトのデコードおよび検証を行い、ネットワークエレメントに宛てられたインタレストのエンコードを行い、関連のアプリケーションに宛てられたインタレストのデコードを行うことができる。フォワーダ／アダプタ２３８が、フォワーダ２４０と通信することができる。フォワーダ２４０は、ネットワーク２０２を介して他のフォワーダと通信することができる。他のスタックコンポーネント（図示せず）は、セキュリティ（例えば、暗号化、暗号の解読、認証、データ署名、署名の検証、信用評価、およびフィルタ処理）、データ処理（例えば、エンコード、デコード、カプセル化、カプセル化の解除、トランスコーディング、圧縮、抽出、および解凍）、およびストレージ（例えば、データの格納、ストレージからのデータの読み出し、重複排除、セグメント化、およびバージョニング）に関係した機能を含むことができる。
【００３０】
同様に、アプリケーション２５０は、ネットワーク２０２を介した通信のためにＡＰＩ２５２、２５４、および２５６を使用することができ、ＡＰＩ２５２〜２５６は、ポータル２６０を介してトランスポートフレームワーク２７０とやり取りをすることができる。トランスポートフレームワーク２７０は、各々が複数のスタックコンポーネントまたは通信モジュールを含んでいる１つ以上のトランスポートスタックを含むことができる。図２Ａにおいて、トランスポートフレームワーク２７０は、以下のスタックコンポーネント、すなわちＡＰＩアダプタ２７２、フローコントローラ２７４、ベリファイヤ／サイナ２７６、およびフォワーダ２８０と通信することができるフォワーダ／アダプタ２７８を含む１つのトランスポートスタック（例えば、トランスポートスタック２７１）を示している。フォワーダ２４０は、ネットワーク２０２を介してフォワーダ２８０と通信することができる。
【００３１】
システム（アプリケーションまたはルートユーザの操作あるいはランタイム実行可能ファイルからの要求による）は、各々のＣＣＮトランスポートスタックに関連付けられたポータルＡＰＩインスタンスを生成することができる。米国特許出願第１４／７４６，４９０号に記載のように、ポータルインスタンスの生成において、アプリケーションまたは任意の個々のスタックコンポーネントは、同じまたは別のスタックの任意の他の個々のコンポーネントに直接メッセージを送信することができる。例えば、アプリケーション２１０が、コンポーネント２３２〜２３８を含むトランスポートスタック２３１に関連付けられたポータルＡＰＩインスタンスを要求することができる。名称の仕組み（例えば、ポータルＡＰＩインスタンスの生成または読み出しにおいて得られる一意の名称または識別子）を使用することによって、アプリケーション２１０またはトランスポートスタック２３１の任意のコンポーネントは、コマンドメッセージをスタック２３１またはスタック２７１の任意の他のコンポーネントに直接送信することができる。アプリケーション２１０および２５０と同様に、トランスポートスタック２３１および２７１は、同じデバイス上に位置することができ、あるいはネットワーク２０２を介して通信する異なるデバイス上に位置することができる。加えて、アプリケーション２１０および２５０は、プロセス間通信（ＩＰＣ）プロトコル２９０を介して通信することができる。
【００３２】
図２Ｂは、スタックのコンポーネントと同じスタックに関連付けられたアプリケーションとの間の従来からの典型的な通信を示している。ベリファイヤ／サイナ２３６が、例えばＡＰＩ２１４を介してアプリケーション２１０に「通知」メッセージを発することができる。伝統的な層状のプロトコルスタックにおいては、ベリファイヤ／サイナ２３６が、名称を有するインタレストを生成し、インタレストは、ＡＰＩ２１４経由のアプリケーション２１０がインタレストの目標のエンティティであると判断するフォワーダ２４０に到達するまで、スタックコンポーネントを下方に通って移動する（流れ２９１ａ）。フォワーダ２４０は、インタレストをアプリケーション２１０に送信し、インタレストは、アプリケーション２１０に到達するまで再びスタックコンポーネントを層順にて通過して上方に移動する（流れ２９１ｂ）。インタレストを受信すると、アプリケーション２１０は、インタレストに応答してコンテンツオブジェクトまたは同様の応答（ＡＣＫまたはＮＡＣＫなど）を生成し、応答をフォワーダ２４０に到達するまで層順にてスタックコンポーネントを通過するように再びスタックを下って送信する（流れ２９１ｃ）。フォワーダ２４０は、応答を受信し、それがベリファイヤ／サイナ２３６に宛てられたものであると判断し、応答をベリファイヤ／サイナ２３６に到達するまでスタックコンポーネントを通過するように再びスタックを上って送信することにより、ベリファイヤ／サイナ２３６に転送する（流れ２９１ｄ）。このスタックにおける通知メッセージの従来からの流れは、通知メッセージをアプリケーションに関連のＡＰＩを介して適切に回送するために、フォワーダを頼りにしている。
【００３３】
図２Ｃは、本発明の実施形態によるスタックのコンポーネントと同じスタックに関連付けられたアプリケーションとの間の典型的な通信を示している。１つのスタック内を移動するメッセージを、「スタック内メッセージ」と称することができる。動作の際に、ベリファイヤ／サイナ２３６が、イベントまたは通知コマンドメッセージ（一意の名称の仕組みに従う名称と、関連のコマンドまたはメッセージを運ぶペイロードとを有する）を生成することができる。例えば、メッセージの名称は、ＡＰＩインスタンスの一意の識別子に基づくことができる。
ｌｃｉ：／ＡＰＩ＿ｎａｍｅ＝“ＡＰＩ  ２１４  Ｉｎｓｔａｎｃｅ”  （１）
【００３４】
ベリファイヤ／サイナ２３６は、コマンドメッセージを宛先のエンティティに動的に発送または回送するメッセージ配信システムを介して、メッセージをアプリケーション２１０に上方に伝播させ得る（流れ２９２ａ）。メッセージ配信システムは、図３に関連して後述される。アプリケーション２１０が、メッセージに応答して応答またはコンテンツオブジェクトを生成し、応答をベリファイヤ／サイナ２３６に送り返す（フロー２９２ｂ）。このようにして、図２Ｃに示されるように、本発明のトランスポートフレームワークは、個々のスタックコンポーネントからアプリケーションに関連のＡＰＩを介してメッセージを適切に回送するために、フォワーダのみに依存するのではない。
【００３５】
図２Ｄは、本発明の実施形態によるスタックのコンポーネントと同じスタックに関連付けられたアプリケーションとの間の典型的な通信を示している。動作の際に、アプリケーション２１０は、コンテンツオブジェクトの検証を要求する制御コマンドメッセージを発することができる。アプリケーション２１０は、ベリファイヤ／サイナ２３６を具体的に特定する一意の名称に基づいてベリファイヤ／サイナ２３６に宛てられたコマンドメッセージを生成することができる。例えば、メッセージの名称は、以下のとおりであってよい。
ｌｃｉ：／ｓｔａｃｋ＿ｎａｍｅ＝“Ｐｏｒｔａｌ  ２２０  Ｓｔａｃｋ”／ｃｏｍｐｏｎｅｎｔ＿ｎａｍｅ＝“Ｖｅｒｉｆｉｅｒ／Ｓｉｇｎｅｒ  ２３６”／ｃｏｍｍａｎｄ＝“ＶＥＲＩＦＹ＿ＣＯＮＴ＿ＯＢＪ”  （２）
【００３６】
アプリケーション２１０は、図３に関して後述されるように、メッセージ配信システムを介してベリファイヤ／サイナ２３６にメッセージを下方に伝播させることができる（流れ２９３ａ）。ベリファイヤ／サイナ２３６は、メッセージを受信し、要求された動作を実行し（例えば、コンテンツオブジェクトを検証し）、（例えば、検証成功の）応答をアプリケーション２１０に送り返す（流れ２９３ｂ）。図２Ｂに示した通信と同様に、図２Ｃに示した通信は、アプリケーションから個々のスタックコンポーネントにコマンドメッセージを適切に回送するために、フォワーダのみに依存するのではない。
【００３７】
スタックの個々のコンポーネントは、本明細書に記載の一意の名称の仕組みおよびメッセージのやり取りの仕組みに基づいて、別のスタックのコンポーネントにメッセージを送信することができる。２つの異なるスタックの間でやり取りされるメッセージを、「スタック間メッセージ」と称することができる。異なるスタックは、同じデバイス上または異なるデバイス上に位置することができる。これらのスタック間メッセージの流れの方向が、上位のＡＰＩインスタンスおよび下位のフォワーダのどちらもスタック間メッセージをいずれかの方向にて（例えば、図２Ｅに関して後述されるようにフォワーダを介し、さらには図２Ｆに関して後述されるようにアプリケーションを介して）宛先のエンティティに回送できるため、固定されておらず、重要でもないことに、注意すべきである。
【００３８】
図２Ｅは、本発明の実施形態による異なるスタックのコンポーネント間の典型的な通信を示している。動作において、トランスポートスタック２３１のベリファイヤ／サイナ２３６が、トランスポートスタック２７１のフローコントローラ２７４にコマンドメッセージを送信することができる。メッセージは、それぞれのトランスポートスタックに関連付けられたフォワーダ（例えば、フォワーダ２４０および２８０）を通って移動することができる。ベリファイヤ／サイナ２３６が、メッセージを生成し、トランスポートフレームワーク２３０のメッセージ配信システム（「第１のメッセージ配信システム」）を介してフォワーダ２４０にメッセージを下方に伝播させる（流れ２９４ａ）。メッセージは、目標のエンティティ（例えば、フローコントローラ２７４）を一意に特定する名称を含んでおり、（例えば、フローコントローラ２７４をオフにするための）コマンドをさらに含むことができる。例えば、メッセージの名称は、以下のとおりであってよい。
ｌｃｉ：／ｓｔａｃｋ＿ｎａｍｅ＝“Ｐｏｒｔａｌ  ２６０  Ｓｔａｃｋ”／ｃｏｍｐｏｎｅｎｔ＿ｎａｍｅ＝“Ｆｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ  ２７４”／ｃｏｍｍａｎｄ＝“ＴＵＲＮ＿ＯＦＦ”  （３）
【００３９】
メッセージを受信すると、フォワーダ２４０は、ネットワーク２０２を介してフォワーダ２８０にメッセージを伝える（流れ２９４ｂ）。フォワーダ２８０は、メッセージを受信し、メッセージがフローコントローラ２７４に宛てられていると判断し、トランスポートフレームワーク２７０のメッセージ配信システム（「第２のメッセージ配信システム」）を介してフローコントローラ２７４にメッセージを上方に伝播させる（流れ２９４ｃ）。フローコントローラ２７４は、メッセージを受信し、応答を生成し、第２のメッセージ配信システムを介してフォワーダ２８０に応答を送り返す（流れ２９４ｄ）。応答を受信すると、フォワーダ２８０は、再びフォワーダ２４０に（やはりネットワーク２０２を介して）応答を伝える（流れ２９４ｅ）。最後に、フォワーダ２４０が、応答を受信し、第１のメッセージ配信システムを介してベリファイヤ／サイナ２３６に回送する（流れ２９４ｆ）。
【００４０】
図２Ｆが、本発明の実施形態による異なるスタックのコンポーネント間の典型的な通信を示している。動作において、トランスポートスタック２３１のベリファイヤ／サイナ２３６が、トランスポートスタック２７１のフローコントローラ２７４にコマンドメッセージを送信することができる。メッセージは、それぞれのトランスポートスタックに関連付けられたアプリケーションおよびＡＰＩを通って移動することができる。ベリファイヤ／サイナ２３６が、第１のメッセージ配信システムを介してアプリケーション２１０に上方に伝播（流れ２９５ａ）するイベントまたはコマンドメッセージを生成する。図２Ｅに示した通信と同様に、メッセージは、名称（３）のように、目標のエンティティを一意に特定し、さらにコマンドも含むことができる名称を含む。アプリケーション２１０は、ＩＰＣプロトコル２９０を介してアプリケーション２５０にメッセージを伝える（流れ２９５ｂ）。メッセージを受け取ると、アプリケーション２５０は、第２のメッセージ配信システムを介してフローコントローラ２７４に（例えば、インタレストを生成することによって）メッセージを送信する（流れ２９５ｃ）。インタレスト（目標のエンティティをオフにするコマンドをペイロードに含んでいる）を受信すると、フローコントローラ２７４は、自身をオフにし、応答（例えば、ＡＣＫ）を生成し、応答を再びアプリケーション２５０に第２のメッセージ配信システムを介して送信する（流れ２９５ｄ）。アプリケーション２５０は、ＩＰＣプロトコル２９０を介してアプリケーション２１０に応答を送り返し（流れ２９５ｅ）、アプリケーション２１０は、応答を第１のメッセージ配信システムを介してベリファイヤ／サイナ２３６に送信する（流れ２９５ｆ）。
【００４１】
図３は、本発明の実施形態によるメッセージ配信システムを含む典型的なトランスポートフレームワークを示している。アプリケーション３１０は、ネットワーク３０２を介して通信を行うためにＡＰＩ３１２、３１４、および３１６を使用することができ、ＡＰＩ３１２〜３１６は、以下のスタックコンポーネント、すなわちＡＰＩアダプタ３３２、フローコントローラ３３４、ベリファイヤ／サイナ３３６、およびフォワーダ３４０と通信することができるフォワーダ／アダプタ３３８を含むことができるトランスポートスタックと、ポータル３２０を介してやり取りをすることができる。トランスポートフレームワークは、メッセージを目標のエンティティに動的に発送または回送するメッセージ配信システム３５０を含むことができる。メッセージ配信システム３５０は、各々のスタックコンポーネントに関連付けられたキューから値（例えば、コマンド）を読み出し、各々のキューに関連付けられたコマンドを処理するためにスケジューリング動作を実行する単一のスレッドを含むことができる。各々のスタックコンポーネントは、複数のキューに関連付けられてよい。例えば、ＡＰＩアダプタ３３２は、下方入力キュー３５２、上方入力キュー３５４、下方出力キュー３５６、および上方出力キュー３５８に関連付けられてよい。いくつかの実施形態において、メッセージ配信システム３５０は、名称および値のペアに基づくデータ構造を含むことができ、ここで名称は、個々のスタックコンポーネントの名称であり、値は、個々のスタックコンポーネントに関連付けられた各々のキューの内容である。
【００４２】
メッセージ配信システムを介したメッセージの流れおよびスタックコンポーネントに関連付けられたキューの例が、図２Ｃ〜２Ｆに関して説明される。図２Ｃに対応して、ベリファイヤ／サイナ２３６は、通知コマンドメッセージを自身の上方出力キューに挿入して、メッセージ配信システム（例えば、単一のスレッド）がメッセージを読み出してＡＰＩに上方に伝えることを可能にすることができる。図２Ｄに対応して、アプリケーション２１０は、（図３のキュー３５２によって示されるように）ＡＰＩアダプタ２３２の下方入力キューに制御コマンドメッセージを挿入することができる。図２Ｅに対応して、ベリファイヤ／サイナ２３６は、（流れ２９４ａを可能にすべく）自身の下方出力キューにコマンドメッセージを挿入でき、フォワーダ２８０は、（流れ２９４ｃを可能にすべく）フォワーダ／アダプタ２７８の上方入力キューにコマンドメッセージを挿入でき、フローコントローラ２７４は、（流れ２９４ｄを可能にすべく）自身の下方出力キューにコマンドメッセージを挿入でき、フォワーダ２４０は、（流れ２９４ｆを可能にすべく）フォワーダ／アダプタ２３８の上方入力キューにコマンドメッセージを挿入することができる。図２Ｆに対応して、ベリファイヤ／サイナ２３６は、（流れ２９５ａを可能にすべく）自身の上方出力キューにコマンドメッセージを挿入でき、アプリケーション２５０は、（流れ２９５ｃを可能にすべく）ＡＰＩアダプタ２７２の下方入力キューにコマンドメッセージを挿入でき、フローコントローラ２７４は、（流れ２９５ｄを可能にすべく）自身の上方出力キューにコマンドメッセージを挿入でき、アプリケーション２１０は、（流れ２９５ｆを可能にすべく）ＡＰＩアダプタ２３２の下方入力キューにコマンドメッセージを挿入することができる。
【００４３】
図４Ａは、コマンドメッセージの層不可知なやり方での通信を容易にするための本発明の実施形態による方法を説明するフロー図４００を示している。動作において、システムは、通信モジュールのスタックのコンポーネントによって目標のエンティティへの第１のコマンドメッセージを生成し、ここで第１のコマンドメッセージは、目標のエンティティに特有の名称を含む（動作４０２）。スタックは、自身の上位または下位の層とのみ通信するそれぞれの通信モジュールを必要としない。スタックコンポーネントは、第１のコマンドメッセージをコンポーネントに対応するキューに挿入することによって、第１のコマンドメッセージを目標のエンティティに送信する（動作４０４）。システムは、目標のエンティティを判断する（動作４０６）。システムが、目標のエンティティがスタックの別のコンポーネント、別のスタックのコンポーネント、別のスタックに関連付けられたＡＰＩ、または別のスタックに関連付けられたフォワーダであると判断する場合（動作４０８）、システムは、コンポーネントに対応するキューとしてコンポーネントの上方または下方出力キューを設定する（動作４１０）。システムが、目標のエンティティがスタックに関連付けられたＡＰＩであると判断する場合（動作４１２）、システムは、コンポーネントに対応するキューとしてコンポーネントの上方出力キューを設定する（動作４１４）。システムが、目標のエンティティがスタックに関連付けられたフォワーダであると判断する場合（動作４１６）、システムは、コンポーネントに対応するキューとしてコンポーネントの下方出力キューを設定する（動作４１８）。その後に、スタックコンポーネントは、第１のコマンドメッセージをメッセージ配信システムを介して目標のエンティティに送信する（動作４２０）。
【００４４】
図４Ｂは、コマンドメッセージの層不可知なやり方での通信を容易にするための本発明の実施形態による方法を説明するフロー図４５０を示している。動作において、システムは、通信モジュールのスタックのコンポーネントによって送信エンティティからの第２のコマンドメッセージを受信し、ここで第２のコマンドメッセージは、コンポーネントに特有の名称を含む（動作４５２）。スタックコンポーネントは、送信エンティティからの第２のコマンドメッセージを、送信エンティティに関連付けられた上方または下方入力キューを介して受信する（動作４５４）。キューを、キューがエンティティと別のスタックコンポーネントとの間の通信において役割を果たすスタックコンポーネントに対応するときに、エンティティに関連付けることができる。例えば、図２Ｄに対応し、ベリファイヤ／サイナ２３６（例えば、スタックコンポーネント）は、アプリケーション２１０（例えば、送信エンティティ）からのコマンドメッセージをＡＰＩアダプタ２３２の下方入力キュー（送信エンティティに関連付けられたキュー）を介して受信する。図２Ｅに対応する別の例において、フローコントローラ２７４（例えば、スタックコンポーネント）は、フォワーダ２８０（例えば、送信エンティティ）からのコマンドメッセージをフォワーダ／アダプタ２７８の上方入力キュー（送信エンティティに関連付けられたキュー）を介して受信する。その後に、スタックコンポーネントは、送信エンティティからの第２のコマンドメッセージをメッセージ配信システムを介して受信する（動作４５６）。
【００４５】
図５が、本発明の実施形態によるコマンドメッセージの層不可知なやり方での通信を容易にする典型的な装置５００を示している。装置５００は、有線または無線の通信チャネルを介して互いに通信することができる複数のモジュールを備えることができる。装置５００は、１つ以上の集積回路を使用して実現されてよく、図５に示されるモジュールよりも少数または多数のモジュールを含むことができる。さらに、装置５００を、コンピュータシステムに統合でき、あるいは他のコンピュータシステムおよび／またはデバイスと通信することができる別のデバイスとして実現することができる。とくには、装置５００は、通信モジュール５０２、メッセージ生成モジュール５０４、メッセージ配信モジュール５０６、キュー判断モジュール５０８、およびエンティティ判断モジュール５１０を備えることができる。
【００４６】
いくつかの実施形態において、通信モジュール５０２は、コンテンツセントリックネットワークなどのコンピュータネットワークにおいて他のネットワークノードにデータパケットを送信し、かつ／または他のネットワークノードからデータパケットを受信することができる。メッセージ生成モジュール５０４は、目標のエンティティのための第１のコマンドメッセージを生成することができる。メッセージ配信モジュール５０６は、第１のコマンドメッセージをコンポーネントに対応するキューに挿入することによって、第１のコマンドメッセージを目標のエンティティに送信することができ、さらに第１のコマンドメッセージをメッセージ配信システムを介して目標のエンティティに送信することができる。通信モジュール５０２は、送信エンティティからの第２のコマンドメッセージを、送信エンティティに対応するキューを介して受信することもでき、さらに第２のコマンドメッセージを送信エンティティからメッセージ配信システムを介して受信することができる。
【００４７】
エンティティ判断モジュール５１０は、目標のエンティティがスタックの別のコンポーネント、別のスタックのコンポーネント、別のスタックに対応するアプリケーションに関連付けられたＡＰＩインスタンス、別のスタックに関連付けられたフォワーダ、スタックに対応するアプリケーションに関連付けられたＡＰＩインスタンス、またはスタックに関連付けられたフォワーダであると判断することができる。目標のエンティティがスタックの別のコンポーネント、別のスタックのコンポーネント、別のスタックに対応するアプリケーションに関連付けられたＡＰＩインスタンス、または別のスタックに関連付けられたフォワーダであるとの判断に応答して、キュー判断モジュール５０８は、コンポーネントに対応するキューとしてコンポーネントの上方または下方出力キューを設定することができる。目標のエンティティがスタックに対応するアプリケーションに関連付けられたＡＰＩインスタンスであるとの判断に応答して、キュー判断モジュール５０８は、コンポーネントに対応するキューとしてコンポーネントの上方出力キューを設定することができる。目標のエンティティがスタックに関連付けられたフォワーダであるとの判断に応答して、キュー判断モジュール５０８は、コンポーネントに対応するキューとしてコンポーネントの下方出力キューを設定することができる。
【００４８】
図６は、本発明の実施形態によるコマンドメッセージの層不可知なやり方での通信を容易にする典型的なコンピュータシステム６０２を示している。コンピュータシステム６０２は、プロセッサ６０４、メモリ６０６、およびストレージデバイス６０８を含む。メモリ６０６は、管理されたメモリとして働き、１つ以上のメモリプールを格納するために使用されることができる揮発メモリ（例えば、ＲＡＭ）を含むことができる。さらに、コンピュータシステム６０２を、表示装置６１０、キーボード６１２、およびポインティングデバイス６１４に接続することができる。ストレージデバイス６０８は、オペレーティングシステム６１６、トランスポートシステム６１８、およびデータ６３２を格納することができる。
【００４９】
トランスポートシステム６１８は、コンピュータシステム６０２またはプロセッサ６０４によって実行されたときに本明細書に記載の方法および／またはプロセスをコンピュータシステム６０２またはプロセッサ６０４に実行させることができるインストラクションを含むことができる。とくには、トランスポートシステム６１８は、コンテンツセントリックネットワークなどのコンピュータネットワークにおいて他のネットワークノードにデータパケットを送信し、かつ／または他のネットワークノードからデータパケットを受信するためのインストラクションを含むことができる（通信モジュール６２０）。トランスポートシステム６１８は、目標のエンティティのための第１のコマンドメッセージを生成するためのインストラクションも含むことができる（メッセージ生成モジュール６２２）。トランスポートシステム６１８は、第１のコマンドメッセージをコンポーネントに対応するキューに挿入することによって第１のコマンドメッセージを目標のエンティティに送信し、第１のコマンドメッセージをメッセージ配信システムを介して目標のエンティティに送信するためのインストラクションを含むことができる（メッセージ配信モジュール６２４）。トランスポートシステム６１８は、送信エンティティからの第２のコマンドメッセージを、送信エンティティに対応するキューを介して受信し、第２のコマンドメッセージを送信エンティティからメッセージ配信システムを介して受信するためのインストラクションを含むことができる（通信モジュール６２０）。
【００５０】
さらに、トランスポートシステム６１８は、目標のエンティティがスタックの別のコンポーネント、別のスタックのコンポーネント、別のスタックに対応するアプリケーションに関連付けられたＡＰＩインスタンス、別のスタックに関連付けられたフォワーダ、スタックに対応するアプリケーションに関連付けられたＡＰＩインスタンス、またはスタックに関連付けられたフォワーダであると判断するためのインストラクションを含むことができる（エンティティ判断モジュール６２６）。トランスポートシステム６１８は、目標のエンティティがスタックの別のコンポーネント、別のスタックのコンポーネント、別のスタックに対応するアプリケーションに関連付けられたＡＰＩインスタンス、または別のスタックに関連付けられたフォワーダであるとの判断に応答して、コンポーネントに対応するキューとしてコンポーネントの上方または下方出力キューを設定するためのインストラクションをさらに含むことができる（キュー判断モジュール６２８）。トランスポートシステム６１８は、目標のエンティティがスタックに対応するアプリケーションに関連付けられたＡＰＩインスタンスであるとの判断に応答して、コンポーネントに対応するキューとしてコンポーネントの上方出力キューを設定するためのインストラクションをさらに含むことができる（キュー判断モジュール６２８）。トランスポートシステム６１８は、目標のエンティティがスタックに関連付けられたフォワーダであるとの判断に応答して、コンポーネントに対応するキューとしてコンポーネントの下方出力キューを設定するためのインストラクションをさらに含むことができる（キュー判断モジュール６２８）。
【００５１】
データ６３２は、入力として必要とされ、あるいは本明細書に記載の方法および／またはプロセスによって出力として生成される任意のデータを含むことができる。とくには、データ６３２は、少なくとも、目標のエンティティに特有の名称を含んでいる目標のエンティティのための第１のコマンドメッセージ、コンポーネントに特有の名称を含んでいる送信エンティティからの第２のコマンドメッセージ、イベント、コマンド、通知、制御メッセージ、インタレスト、またはコンテンツオブジェクトに対応するデータパケット、トランスポートフレームワーク、プロトコルまたはトランスポートスタック、トランスポートまたはプロトコルスタックの１つ以上のコンポーネント、トランスポートまたはプロトコルスタックに関連付けられたポータルまたはポータルＡＰＩインスタンス、ならびにトランスポートまたはプロトコルスタックに関連付けられたフォワーダを格納することができる。
【００５２】
この詳細な説明において述べられるデータ構造および符号は、典型的には、コンピュータシステムによる使用のために符号および／またはデータを格納することができる任意のデバイスまたは媒体であってよいコンピュータにとって読み取り可能な記憶媒体上に記憶される。コンピュータにとって読み取り可能な記憶媒体として、これらに限られるわけではないが、揮発メモリ、不揮発メモリ、ディスク駆動装置、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタル多用途ディスクまたはデジタルビデオディスク）、などの磁気および光記憶装置、あるいは現時点において公知またはこれから開発されるコンピュータにとって読み取り可能な媒体を格納することができる他の媒体が挙げられる。
【００５３】
この詳細な説明の部分において述べられる方法およびプロセスを、上述のとおりのコンピュータにとって読み取り可能な記憶媒体に格納されてよい符号および／またはデータとして具現化することができる。コンピュータシステムがコンピュータにとって読み取り可能な記憶媒体に格納された符号および／またはデータを読み出して実行するとき、コンピュータシステムは、データ構造および符号として具現化され、コンピュータにとって読み取り可能な記憶媒体に格納された方法およびプロセスを実行する。
【００５４】
さらに、上述の方法およびプロセスは、ハードウェアモジュールに含まれることができる。例えば、ハードウェアモジュールとして、これらに限られるわけではないが、特定用途向け集積回路（ＡＳＩＣ）チップ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ならびに現時点において公知またはこれから開発される他のプログラマブルな論理素子を挙げることができる。ハードウェアモジュールの作動時に、ハードウェアモジュールは、ハードウェアモジュール内に含まれる方法およびプロセスを実行する。
【図１】
2017010537.tif 000003
【図２Ａ】
2017010537.tif 000004
【図２Ｂ】
2017010537.tif 000005
【図２Ｃ】
2017010537.tif 000006
【図２Ｄ】
2017010537.tif 000007
【図２Ｅ】
2017010537.tif 000008
【図２Ｆ】
2017010537.tif 000009
【図３】
2017010537.tif 000010
【図４Ａ】
2017010537.tif 000011
【図４Ｂ】
2017010537.tif 000012
【図５】
2017010537.tif 000013
【図６】
2017010537.tif 000014