(57)【要約】      （修正有）【課題】企業環境における動的コンテンツ配信を促進するためのシステムを提供する。【解決手段】システムは、企業環境のコントローラから、ピアツーピアプロトコルの１つ以上のピアからコンテンツをダウンロードするための命令を受信する。命令は、コンテンツが分割されているブロックのセットを示すファイル記述子を含むことができる。システムは、１つ以上のピアの第１のピアからブロックのセットの第１のブロックについての提示を受信し、システムが１つ以上のピアの第２のピアとの完全なピア関係にあるかどうかを判定する。完全なピア関係は、第２のピア及びシステムが互いにクライアント及びサーバであることを示す。システムが完全なピア関係にある場合、システムは、第２のピアとシステムとの間で、第１の提示に応答する第１の要求のための送信者を選出する。【選択図】図１Ａ
2020087443.tif 000002
【特許請求の範囲】
【請求項１】
企業環境における動的コンテンツ配信を促進するための方法であって、
前記企業環境のコントローラからコンピューティングデバイスによって、ピアツーピアプロトコルの１つ以上のピアからコンテンツをダウンロードするための命令を、受信することであって、前記命令は、前記コンテンツが分割されているブロックのセットを示すファイル記述子を含む、ことと、
前記１つ以上のピアの第１のピアから前記ブロックのセットの第１のブロックについての提示を受信することと、
前記コンピューティングデバイスが、前記１つ以上のピアの第２のピアと完全なピア関係にあるかどうかを判定することであって、前記完全なピア関係は、前記第２のピア及び前記コンピューティングデバイスが互いにクライアント及びサーバであることを示す、ことと、
前記コンピューティングデバイスが完全なピア関係にあると判定することに応答して、前記第２のピアと前記コンピューティングデバイスとの間で、前記第１の提示に応答する第１の要求のための送信者を選出することと、を含む、方法。
【請求項２】
前記命令に基づいて前記コンテンツのためのサブスクリプション要求を前記１つ以上のピアに送信することを更に含む、請求項１に記載の方法。
【請求項３】
前記コンピューティングデバイスが完全なピア関係にないと判定することに応答して、前記方法が、
前記第１のピアとのピア関係に関連付けられた第１の優先度値を判定することと、
前記第１の優先度値が閾値よりも低いことに応答して、前記第１の要求を送信することを所定の期間にわたってバックオフすることと、を更に含む、請求項１に記載の方法。
【請求項４】
第３のピアからの前記第１のブロックについての第２の提示が前記所定の期間内に受信されたかどうかを判定することと、
前記第２の提示の第２の優先度値が前記第１の優先度値よりも大きいかどうかを判定することと、
前記第２の優先度値が前記第１の優先度値よりも大きいことに応答して、前記第２の提示に応答する第２の要求を送信することと、を更に含む、請求項３に記載の方法。
【請求項５】
前記第２の提示を受信していないこと、又は前記第２の優先度値が前記第１の優先度値よりも大きくないことに応答して、前記方法が、前記第１の要求を送信することを更に含む、請求項４に記載の方法。
【請求項６】
前記コンピューティングデバイスが前記送信者として選出されたことに応答して、前記方法が、
前記第１の要求を前記第１のピアに送信し、ダウンロード通知メッセージを前記第２のピアに送信することと、
前記第１のピアから前記第１のブロックを受信することと、を更に含む、請求項１に記載の方法。
【請求項７】
前記第１のブロックについての第３の提示を前記第２のピアに送信することと、
前記第３の提示に応答する第３の要求を受信したことに応答して、前記第１のブロックを前記第２のピアに送信することと、を更に含む、請求項６に記載の方法。
【請求項８】
前記第２のピアが前記送信者として選出されたことに応答して、前記方法が、前記第２のピアからのダウンロード通知メッセージを所定の期間待つことを更に含む、請求項１に記載の方法。
【請求項９】
前記第１のブロックについての第４の提示を前記第２のピアから受信することと、
前記第４の提示に応答する第４の要求を送信することと、を更に含む、請求項８に記載の方法。
【請求項１０】
前記第１のピアが前記第１のブロックについての提示を送信する権限を付与されているかどうかを前記ファイル記述子及び権限付与テーブルに基づいて判定することを更に含み、前記権限付与テーブルが、前記企業環境の動作及びリソースのためのアクセス許可を維持する、請求項１に記載の方法。
【請求項１１】
命令を記憶する非一時的コンピュータ可読記憶媒体であって、前記命令が、コンピュータによって実行されると、前記コンピュータに、企業環境における動的コンテンツ配信を促進するための方法を実行させ、前記方法が、
前記企業環境のコントローラからコンピューティングデバイスによって、ピアツーピアプロトコルの１つ以上のピアからコンテンツをダウンロードするための命令を、受信することであって、前記命令は、前記コンテンツが分割されているブロックのセットを示すファイル記述子を含む、ことと、
前記１つ以上のピアの第１のピアから前記ブロックのセットの第１のブロックについての提示を受信することと、
前記コンピューティングデバイスが、前記１つ以上のピアの第２のピアと完全なピア関係にあるかどうかを判定することであって、前記完全なピア関係は、前記第２のピア及び前記コンピューティングデバイスが互いにクライアント及びサーバであることを示す、ことと、
前記コンピューティングデバイスが完全なピア関係にあると判定することに応答して、前記第２のピアと前記コンピューティングデバイスとの間で、前記第１の提示に応答する第１の要求のための送信者を選出することと、を含む、コンピュータ可読記憶媒体。
【請求項１２】
前記方法が、前記命令に基づいて前記コンテンツのためのサブスクリプション要求を前記１つ以上のピアに送信することを更に含む、請求項１１に記載のコンピュータ可読記憶媒体。
【請求項１３】
前記コンピューティングデバイスが完全なピア関係にないと判定することに応答して、前記方法が、
前記第１のピアとのピア関係に関連付けられた第１の優先度値を判定することと、
前記第１の優先度値が閾値よりも低いことに応答して、前記第１の要求を送信することを所定の期間にわたってバックオフすることと、を更に含む、請求項１１に記載のコンピュータ可読記憶媒体。
【請求項１４】
前記方法が、
第３のピアからの前記第１のブロックについての第２の提示が前記所定の期間内に受信されたかどうかを判定することと、
前記第２の提示の第２の優先度値が前記第１の優先度値よりも大きいかどうかを判定することと、
前記第２の優先度値が前記第１の優先度値よりも大きいことに応答して、前記第２の提示に応答する第２の要求を送信することと、を更に含む、請求項１３に記載のコンピュータ可読記憶媒体。
【請求項１５】
前記第２の提示を受信していないこと、又は前記第２の優先度値が前記第１の優先度値よりも大きくないことに応答して、前記方法が、前記第１の要求を送信することを更に含む、請求項１４に記載のコンピュータ可読記憶媒体。
【請求項１６】
前記コンピューティングデバイスが前記送信者として選出されたことに応答して、前記方法が、
前記第１の要求を前記第１のピアに送信し、ダウンロード通知メッセージを前記第２のピアに送信することと、
前記第１のピアから前記第１のブロックを受信することと、を更に含む、請求項１１に記載のコンピュータ可読記憶媒体。
【請求項１７】
前記方法が、
前記第１のブロックについての第３の提示を前記第２のピアに送信することと、
前記第３の提示に応答する第３の要求を受信したことに応答して、前記第１のブロックを前記第２のピアに送信することと、を更に含む、請求項１６に記載のコンピュータ可読記憶媒体。
【請求項１８】
前記第２のピアが前記送信者として選出されたことに応答して、前記方法が、前記第２のピアからのダウンロード通知メッセージを所定の期間待つことを更に含む、請求項１１に記載のコンピュータ可読記憶媒体。
【請求項１９】
前記方法が、
前記第１のブロックについての第４の提示を前記第２のピアから受信することと、
前記第４の提示に応答する第４の要求を送信することと、を更に含む、請求項１８に記載のコンピュータ可読記憶媒体。
【請求項２０】
前記方法は、前記第１のピアが前記第１のブロックについての提示を送信する権限を付与されているかどうかを前記ファイル記述子及び権限付与テーブルに基づいて判定することを更に含み、前記権限付与テーブルが、前記企業環境の動作及びリソースのためのアクセス許可を維持する、請求項１１に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、コンテンツ配信の分野に関連する。より具体的には、本開示は、企業ネットワーク内にコンテンツを効率的に配信するためのシステム及び方法に関する。
【０００２】
インターネット及び電子商取引の急増により、膨大な量のデジタルコンテンツが作成され続けている。企業又は大企業は、複数のサイトにわたって配信されたクラウドストレージデバイス及びプリンタなどの被管理デバイスのネットワークを含み得る。そのようなデバイスのネットワークでは、デバイスマネージャは、そのサイトのうちの１つのローカルネットワーク内のデバイスを管理（例えば、構成及び制御）してもよい。このデバイスマネージャは、ファームウェア更新、ポリシーファイル配信、又はデータ転送に関与することができる。これらの動作は、通常、企業ネットワーク内の多数の被管理デバイスへの大きなファイル転送を伴う。
【０００３】
従来のデバイスマネージャは、通常、被管理デバイスのインターネットプロトコル（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ、ＩＰ）アドレスに基づく簡易ネットワーク管理プロトコル（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ、ＳＮＭＰ）クエリに基づいてデバイスを管理する。しかしながら、各デバイスは、ローカルアドレスプールに基づいて（例えば、プライベートＩＰアドレスのセットから）、動的ホスト構成プロトコル（Ｄｙｎａｍｉｃ  Ｈｏｓｔ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ、ＤＨＣＰ）サーバによってＩＰアドレスを割り当てられ得る。プライベートネットワーク内のデバイスへのアクセスを促進するために、デバイスマネージャは、従来、同じプライベートＩＰサブネットワーク及びローカルエリアネットワーク（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ、ＬＡＮ）などの同じネットワーク内に常駐する。しかしながら、大企業では、デバイスマネージャは、複数のサブネットにわたって大きなファイルを配信する必要があり得る。
【０００４】
デバイスマネージャは、典型的には、既存のネットワーキングフレームワーク及びプロトコルを使用して、企業ネットワーク内の大規模なファイル配信を可能にする。しかしながら、このような解決策は、位相認識ピアツーピアコンテンツ配信ソリューションに向けられている。これらの解決策は、特定のファイルのための好適な候補を見出すために参加者間のネットワーク条件を推定する。しかしながら、これらの解決策は、通常、ファイルの配信を計画しない。結果として、ファイルは、需要に基づいてネットワーク内に配信され得る。具体的には、これらの解決策はインターネットのためのものであるため、それらは、最小位相相関を有する広範に配信された参加者用に設計される。場合によっては、特定のファイルは、瞬間的な需要を有し、時間関心相関を作成する可能性があるが、位相相関は分散したままである。したがって、これらの解決策は、ファームウェア更新又はオペレーティングシステムパッチなど、計画された使用のための高度な位相相関及び時間相関を有し得る企業環境には役に立たない可能性がある。
【０００５】
本明細書に記載される実施形態は、企業環境における動的コンテンツ配信を促進するためのシステムを提供する。動作中、システムは、企業環境のコントローラから、ピアツーピアプロトコルの１つ以上のピアからコンテンツをダウンロードするための命令を受信する。命令は、コンテンツが分割されているブロックのセットを示すファイル記述子を含むことができる。システムは、１つ以上のピアの第１のピアからブロックのセットの第１のブロックについての提示を受信し、システムが１つ以上のピアの第２のピアとの完全なピア関係にあるかどうかを判定することができる。完全なピア関係は、第２のピア及びシステムが互いにクライアント及びサーバであることを示す。システムが完全なピア関係にある場合、システムは、第２のピアとシステムとの間で、第１の提示に応答する第１の要求のための送信者を選出する。
【０００６】
この実施形態の変形例では、システムは、命令に基づいてコンテンツのためのサブスクリプション要求を１つ以上のピアに送信する。
【０００７】
この実施形態の変形例では、システムが完全なピア関係にない場合、システムは、第１のピアとのピア関係に関連付けられた第１優先度値を判定することができる。第１の優先度値が閾値よりも低い場合、システムは、第１の要求を送信することを所定の期間にわたってバックオフすることができる。
【０００８】
更なる変形例では、システムは、第３のピアからの第１のブロックについての第２の提示が所定の期間内に受信されたかどうか、及び第２の提示の第２の優先度値が第１の優先度値よりも大きいかどうかを判定する。第２の優先度値が第１の優先度値よりも大きい場合、システムは、第２の提示に応答する第２の要求を送信することができる。
【０００９】
更なる変形例では、システムが第２の提示を受信していないか、又は第２の優先度値が第１の優先度値よりも大きくない場合、システムは、第１の要求を第１のピアに送信することができる。
【００１０】
この実施形態の変形例では、システムが送信者として選出された場合、システムは、第１の要求を第１のピアに送信し、ダウンロード通知メッセージを第２のピアに送信し、第１のピアから第１のブロックを受信する。
【００１１】
更なる変形例では、システムは、第１のブロックについての第３の提示を第２のピアに送信する。次いで、システムは、第３の提示に応答する第３の要求を受信すると、第１のブロックを第２のピアに送信する。
【００１２】
この実施形態の変形例では、第２のピアが送信者として選出された場合、システムは、第２のピアからのダウンロード通知メッセージを所定の期間待つ。
【００１３】
更なる変形例では、システムは、第１のブロックについての第４の提示を第２のピアから受信し、第４の提示に応答する第４の要求を送信する。
【００１４】
この実施形態の変形例では、システムは、第１のピアが第１のブロックについての提示を送信する権限を付与されているかどうかをファイル記述子及び権限付与テーブルに基づいて判定する。権限付与テーブルは、企業環境の動作及びリソースのためのアクセス許可を維持する。
【図面の簡単な説明】
【００１５】
【図１Ａ】本出願の一実施形態による、効率的なコンテンツ配信プロトコルをサポートする例示的な企業環境を示す。
【図１Ｂ】本出願の一実施形態による、コンテンツ配信プロトコルに対してロールベースのセキュリティを容易にするための例示的な権限付与テーブルを示す。
【図１Ｃ】本出願の一実施形態による、企業環境における例示的なブロックベースのピアツーピアのコンテンツの配信を示す。
【図２】本出願の一実施形態による、企業環境におけるコンテンツの効率的な配信を促進する例示的なシステムアーキテクチャを示す。
【図３Ａ】本出願の一実施形態による、企業環境のトポグラフィ情報を判定するコンテンツ配信システムの方法を示すフロー図を提示する。
【図３Ｂ】本出願の一実施形態による、企業環境のトポグラフィ情報に基づいて、コンテンツの配信を計画するコンテンツ配信システムの方法を示すフロー図を提示する。
【図４Ａ】本出願の一実施形態による、企業環境における完全なピアへの初期の例示的なブロックの配信を示す。
【図４Ｂ】本出願の一実施形態による、企業環境における完全なピアへの後続の例示的なブロックの配信を示す。
【図４Ｃ】本出願の一実施形態による、企業環境における下流デバイスへの例示的なコンテンツ配信を示す。
【図５】本出願の一実施形態による、企業環境におけるコンテンツの配信を可能にするコントローラの方法を示すフロー図を提示する。
【図６Ａ】本出願の一実施形態による、コンテンツをクライアントピアに提供するサーバピアの方法を示すフロー図を提示する。
【図６Ｂ】本出願の一実施形態による、上流サーバピアからコンテンツを取得するクライアントピアの方法を示すフロー図を提示する。
【図６Ｃ】本出願の一実施形態による、完全なピアからコンテンツを受信するクライアントピアの方法を示すフロー図を提示する。
【図７】本出願の一実施形態による、企業環境における効率的なコンテンツ配信を促進する例示的なコンピュータシステムを示す。
【図８】本出願の一実施形態による、企業環境における効率的なコンテンツ配信を促進する例示的な装置を示す。
【発明を実施するための形態】
【００１６】
本明細書に記載される実施形態は、コンテンツをブロックに分割し、コンテンツをブロックごとに転送することによって、企業環境内でコンテンツ（例えば、ファイル）を効率的に配信するという問題を解決する。企業環境内のデバイスは、ブロックを、そのブロックを有する任意のデバイスから取得することができる。そのブロックを取得すると、デバイスは、そのブロックを要求する任意の他のデバイスにそのブロックを転送することができる。本開示では、語句「コンテンツ」及び「ファイル」は互換的に使用される。
【００１７】
既存の技術では、コンテンツ配信技術はインターネット用に設計されている。このような技術は、通常、デバイス局所性とボトルネックとの間の低い相関を仮定して動作する。結果として、分散型ピアツーピアプロトコルなどの従来の配信プロトコルの受信エンティティは、既存のコンテンツを見つけて、そのコンテンツをソースから取得することに焦点を当てている。これらのプロトコルは、コンテンツがどのように見つけられることができるか（例えば、局所性、集中型コントローラ、分散管理、冗長性などに基づく）という点において異なり得る。しかしながら、これらのプロトコルは、単一のファイルを企業環境内の大規模な受信デバイスのセットに配信することに焦点を当ててはいない。
【００１８】
本明細書に記載される実施形態は、ブロックベースのピアツーピア転送プロトコルをサポートするコンテンツ配信システムを提供することによってこれらの問題を解決する。システムは、コンテンツをブロックに分割することができ、またブロックをチャンクに分割し得る。ピアは他のピアと通信し、また同様の構造に基づいて動作することから、ファイルを転送する際の各参加者は「ピア」と呼ばれる。ピアは、ブロックごとの転送用にコンテンツのブロックを列挙するファイル記述子を使用することができる。各ブロックに対して、記述子は、ピアによって検証されることができる暗号チェックサムを含むことができる。
【００１９】
ブロックごとの転送を容易にするために、システムは、対応するファイル記述子をピアに提供することによって、各ピアに、どのコンテンツを転送するかを命令することができる。システムはまた、ピアに、コンテンツをいつ転送するかを命令することもできる。例えば、システムは、ピアに、そのコンテンツのためのサーバピア又はソースピアとして動作することを開始するように命令することができる。システムはまた、サーバピアに、クライアントピア又は受信ピアに関して通知することもできる。システムはまた、クライアントピアに、コンテンツをどのピアから取得するか（すなわち、サーバピア）を知らせることもできる。この命令に基づいて、それぞれのピアは、記述子についてサーバピアにサブスクライブすることができ、ブロックについての提示を待つ。少なくともブロックを受信すると、サーバピアは、そのブロックがサブスクライブしているピアにそのブロックを提示することができる。各受信ピアは、それぞれの受信したブロックをファイル記述子内のブロックの暗号チェックサムに基づいて検証する。
【００２０】
２つのピアが互いにサーバ及びクライアントの両方である場合、対応するピア関係は完全なピア関係と称され得る。完全なピア関係のピアは、完全なピアと称され得る。各ピア関係は、優先度値に関連付けられることができる。より高い優先度値は、そのピアを選択するためのより高い優先度を示す。完全なピア関係は、高い優先度値に関連付けられる。したがって、それぞれのピアは、完全なピア関係を介してブロックを取得することを好む。ピアは、同じブロックから複数の提示を受信し得る。ピアが、他のピアと比較して（例えば、完全なピアと比較して）より低い優先度を有するピアからブロックについての提示を受信した場合、ピアは、所定の期間にわたってランダムにバックオフし、より高い優先度のピアがそのブロックについての提示を提供したかどうかをチェックすることができる。ブロックについてのこのバックオフプロセスは、ブロックバックオフと称され得る。より高い優先度の提示がブロックバックオフの間に受信されなかった場合、ピアは、提示に基づいてブロックについての要求を送信することができる。一方、ピアが完全なピアから提示を受信した場合、ピアは、ブロックバックオフを実行することなく、完全なピアに要求を送信する。
【００２１】
完全なピア関係では、両方のピアは、１つ以上の上流ピアからのコンテンツについてサブスクライブし、そのコンテンツ内のブロックについての対応する提示を受信することができる。次いで、各ブロックに対して、各完全なピアは、分散選出を実行して、どのピアがブロックをダウンロードすべきかを判定することができる。この分散選出は、各ピアが、コンテンツの特定のブロックについての提示を受諾するかどうかを個別に判定することを可能にする。結果として、各ピアは、上流ピアから一意のブロックのみをダウンロードする。完全なピア関係はグループ間リンクよりも高い優先度に関連付けられ、１つの完全なピアのみが上流ピアから一意のブロックをダウンロードするので、完全なピアが選出されてブロックをダウンロードする場合、そのピアはブロックバックオフを実行しなくてもよい。代わりに、ブロックについてローカルピアを選出したとき、完全なピアは、そのブロックについての要求を送信する。ダウンロードが完了すると、完全なピアは、完全なピア関係のパートナーの完全なピアに提示を送信することができる。
【００２２】
いくつかの実施形態では、システムは、ピアのセットを（例えば、インターネットプロトコル（ＩＰ）サブネットに基づいて）論理グループに編成する。コンテンツを配信するために、コントローラは、ツリーのノードとして論理グループを含む配信ツリーを生成することができる。各グループは、上流ノード（すなわち、ツリーの親ノード）からコンテンツを取得するために関与する１つ以上のグループヘッドを含むことができる。ツリーのルートは、コンテンツのソースを含むサブネットであり得る。グループヘッドは、完全なピア関係にあることができ、ブロックベースのピアツーピア転送プロトコルを使用して、コンテンツの一意のブロックを同時にダウンロードすることができる。例えば、グループヘッドは、ランダムブロックのダウンロードを開始し、互いに協調して重複排除を回避することができる。
【００２３】
グループヘッドはまた、パイプラインを組み込むことができる。上流ピアが閾値量のデータをダウンロードすると、下流ピアは、コンテンツ全体が上流ピアによってダウンロードされていない場合であっても、そのデータを取り出すことを開始することができる。データの閾値量は、個々のブロックであり得る。これにより、ピアは、コンテンツの他のブロックをダウンロードすることなく、別のピアにブロックを提示することが可能になる。１００メガバイト（ＭＢ）ファイルが、配信ツリー内の４つのホップのために、１メガバイト／秒（Ｍｂｐｓ）リンクを介して転送されると仮定する。ホップバイホップ転送のために、最後のノードは、３００秒後にファイルを受信し始め、４００秒後にそれを受信することを終了する。ブロックベースのプロトコルで、最後のホップは、３秒後にデータ受信データを開始し、１０３秒後にファイル全体を受信する。
【００２４】
図１Ａは、本出願の一実施形態による、効率的なコンテンツ配信プロトコルをサポートする例示的な企業環境を示す。企業環境１００は、多数のサイト１１２、１１４、１１６、１１８、１２０、及び１２２にわたって配信され得る。これらのサイトは、ローカル又は広域ネットワークなどのネットワーク１１０を介して互いに結合することができる。広域ネットワークは、インターネットであり得る。サイトはまた、（例えば、ポイントツーポイント光ファイバを用いて）互いに直接接続することもできる。サイト１１２などのサイトは、複数のサブネット１１１（例えば、１０．１．０．０／１６）及び１１３（例えば、１０．２．０．０／１６）を含むことができる。一方、サイト１１４などのいくつかの他のサイトは、サブサイト１２４（例えば、同じ管理下の近傍のより小さなサイト）にわたり得る１つのサブネット（例えば、１０．３．３．０／２４）を有することができる。同様に、サイト１２０は、サブサイト１２６にわたり得る１つのサブネット（例えば、１０．７．０．０／１６）を有することができる。サブサイト１２４及び１２６はまた、それら自体のサブネットを維持することができることに留意されたい。
【００２５】
既存の技術では、コンテンツ配信技術は、単一のファイルを企業環境１００内の大規模な受信デバイスのセットに配信することに焦点を当ててはいない。例えば、環境１００では、ソースデバイス１０２は、多数の受信ピアへのポイントツーポイント通信を介してファームウェア更新などのコンテンツを配信する。コンテンツは、企業環境１００のサイトにわたって多数の受信ピアに送信されるので、この配信プロセスは、各サイト内の各受信ピアに対して繰り返され得る。そのような配信モードは、企業環境１００のネットワーク１１０内の大量のトラフィックを引き起こし得る。加えて、各転送はピア間の個別の転送であり得るため、各転送は脆弱で破損する場合がある。結果として、企業環境１００は、些細でない破損率に直面する場合がある。
【００２６】
この問題を解決するために、本明細書に記載される実施形態は、ブロックベースのピアツーピア転送プロトコルをサポートするコンテンツ配信システム１５０を提供する。システム１５０は、コンテンツ１６０をブロックに分割することができ、またブロックをチャンクに分割し得る。ピアは他のピアと通信し、また同様の構造に基づいて動作することから、ファイルを転送する際の各参加者は「ピア」と呼ばれる。ピアは、ブロックごとの転送用にコンテンツ１６０のブロックを列挙するファイル記述子１６２を使用することができる。記述子１６２は、記述子１６２のフィンガープリント（例えば、ＳＨＡ２５６フィンガープリント）によって識別されることができる。各ブロックに対して、記述子１６２は、ピアによって検証されることができる暗号チェックサムを含むことができる。システム１５０は、環境１００内のピアを登録することができる。登録に基づいて、システム１５０は、環境１００内のデバイスを検出することができる。
【００２７】
システム１５０は、所望のポリシーのセットを施行するために、公開鍵を各ピア及び関連する権限付与のセットに割り当ててルールを確立することができる。システム１５０はまた、ポリシーを施行するために、各ピア上で権限付与テーブルを管理する。例えば、ピア１０６上の権限付与テーブル１５２は、ロールベースのセキュリティを各ピア（又はピアのグループ）に適用する。テーブル１５２は、企業環境１００内のブロックベースのプロトコルを容易にするために複数のアクセス許可を維持することができる。記述子１６２はコントローラ１４０によって署名されることができ、ピア１０６は、テーブル１５２を介して、記述子１６２の転送の権限を付与するアクセス許可をコントローラ１４０が有するかどうかを判定することによって、記述子１６２を認証することができる。この権限付与は、コントローラ１４０からの署名及び、コンテンツ１６０に関連付けられた名前に関する正規表現など、記述子１６２内の追加のメタデータに基づくことができる。
【００２８】
システム１５０は、１つ以上の制御チャネルを（例えば、メッセージキューイング（ｍｅｓｓａｇｅ  ｑｕｅｕｉｎｇ、ＭＱ）に基づいて）使用して、制御メッセージをピアに送信及び／又は受信することができる。制御メッセージの例としては、ピアがシステム１５０に登録を要求すること、ピアがシステム１５０に新しい鍵を要求すること、システム１５０が記述子１６２に基づいてコンテンツ１６０を配信する計画を開始すること、システム１５０がピア内の計画固有の情報をセットアップすることが挙げられるが、これらに限定されない。それぞれの制御チャネルは、その固有の認証、権限付与、及び暗号化（ａｕｔｈｅｎｔｉｃａｔｉｏｎ，  ａｕｔｈｏｒｉｚａｔｉｏｎ，  ａｎｄ  ｅｎｃｒｙｐｔｉｏｎ、ＡＡＥ）機構を使用することができる。制御チャネルのＡＡＥ機構は、データチャネルのＡＡＥ機構から独立していてもよい。結果として、制御チャネルのＡＡＥは、データチャネルのＡＡＥに影響を与えない場合がある。それぞれのデータメッセージは、個々の署名又はメッセージ認証符号を搬送することができる。いくつかの実施形態では、システム１５０は、制御メッセージ処理のための認証テーブルを使用することができる。
【００２９】
コンテンツ１６０を効率的に配信するために、システム１５０は、登録に基づいて企業環境１００のトポグラフィを検出し、コンテンツ１６０のための配信オーバーレイを計画し、ブロックごとの転送を使用して、オーバーレイを介してコンテンツ１６０を配信する。システム１５０は、セキュリティフレームワーク、制御フレームワーク、及びデータ転送フレームワークを促進することができる。セキュリティフレームワークは、制御チャネル及びデータチャネルの両方に対するセキュリティを提供することができる。区別されたデバイス１４０は、システムを制御することに関与することができ、したがってコントローラ１４０と呼ばれる。いくつかの実施形態では、システム１５０は、コントローラ１４０上でホストされ得る。本開示では、コントローラ１４０及びシステム１５０は互換的に使用される。企業環境１００は、互いに高い可用性を促進することができる複数のコントローラ１４０及び１４２を含むことができる。コントローラ１４０は、メッセージを（例えば、公開鍵システム及び／又は対称鍵交換を使用して）認証することができる。
【００３０】
コントローラ１４０は、企業環境１００内のピアに、デバイス構成及びネットワーク条件などの測定値を採取し、それらの測定値をコントローラ１４０に提供することを、命令することができる。コントローラ１４０は、測定値に基づいて、企業環境１００のトポグラフィ情報を判定することができる。次いで、コントローラ１４０は、ソースピア１０２から特定のコンテンツ１６０のための効率的な配信経路を計画することができる。コントローラ１４０及びソースピア１０２は、同じデバイス又は異なるデバイスであり得る。コントローラ１４０は、どのコンテンツを要求するかについて、企業環境１００内の各ピアに通知することができる。コントローラ１４０はまた、コンテンツ１６０についての時間枠（例えば、いつ要求し、どこに要求するか）をそれぞれのピアに通知することができる。いくつかの実施形態では、コントローラ１６０は、１つ以上のグループ化基準に基づいて、ピアのセットを論理グループに編成する。グループ化基準の例としては、ＩＰサブネット、ローカルエリアネットワーク、及び層−２ネットワーク内のスパニングツリーが挙げられるが、これらに限定されない。
【００３１】
コンテンツ１６０、コントローラ１４０を配信するために、ツリーのノードとして論理グループを含む配信ツリーを生成することができる。この例では、それぞれのサイト又はサブサイトは論理グループとして表され、強調された矢印は、ツリーの各ブランチを描写する。サイト１１２は２つのサブネット１１１及び１１３を有するので、それらは、ツリー上の２つの異なるノードであり得る。企業環境１００のサブサイト１２８などのサイト又はサブサイトが、サブサイトがコンテンツ１６０の受信者を含まない場合、そのサブサイトはツリーに含まれていない。各グループは、上流ピア（すなわち、ツリーの親ノード）からコンテンツを取得することに関与する１つ以上のグループヘッド（破線円で示される）を含むことができる。サブネット１１１に対応するグループは、ソースピア１０２及びピア１０４をグループヘッドとして含むことができる。同様に、サイト１１４に対応する論理グループは、グループヘッドとしてピア１０６及び１０８を含むことができ、サイト１１６に対応する論理グループは、グループヘッドとしてピア１３２及び１３４を含むことができる。したがって、ピア１０２、１０４、１０６、１０８、１３２、及び１３４は、グループヘッドとも称され得る。この例のツリーのルートは、ソースデバイス１０２がコンテンツ１６０をホストすることを含むサブネット１１１である。コントローラ１４０は、（例えば、ソースデバイス及び受信デバイスに基づいて）変化し得る各コンテンツの配信ツリーを計画することができることに留意されたい。
【００３２】
いくつかの実施形態では、コントローラ１４０は、シュタイナー木（例えば、最小コストツリー）を計算して、グループ間配信ツリーを生成することができる。企業環境１００では、いくつかのピアは、受信ピア（例えば、コンテンツ１６０の受信者）とすることができ、他のピアは、中継ピア又は休止デバイスとして動作することができる。シュタイナー木は、必要に応じて、いくつかの中継デバイスを使用して、最小コストツリーを見出すために、全ての受信デバイスにわたることができる。コントローラ１４０は、最短経路の組み合わせを使用して、最小コストのツリーを計算することができる。コントローラ１４０は、企業環境１００のトポグラフィ情報を使用して、各受信デバイスから企業環境１００内のソースデバイスへの最短経路を判定することができる。次いで、コントローラ１４０は、全ての受信デバイスからソースピア１０２への、最小コストの単一ソース指向スパニングツリーを判定する。
【００３３】
コントローラ１４０は、測定値を使用して、ユーザ入力及びネットワーク発見のうちの１つ以上に基づいて、企業環境１００のトポグラフィ情報を判定することができる。コントローラ１４０は、２つのサブネット間の帯域幅及び往復時間を測定することによって、ネットワーク発見を実行することができる。そうするために、ソースデバイス１０２は、異なる長さの一連のパケットを各グループヘッドに何度も送信する。コントローラ１４０は、各パケットサイズに対する最小応答時間を判定し、それらの値に対する線形回帰を計算する。コントローラ１４０はまた、帯域幅をビット毎秒の単位で判定し、往復時間は秒単位である。コントローラ１４０は、指数関数的移動平均を介して複数の測定値を集約して、リンクの帯域幅を判定することができる。
【００３４】
グループヘッドは、グループ間データ転送に関与し、完全なピア関係で構成されている。結果として、グループヘッドは、一意のブロックのみを取得し、そのブロックをピアグループヘッドと共有する。グループ間転送を容易にするために、グループヘッド１０６及び１０８は、上流グループヘッド１０２及び１０４に論理的に結合することができる。同様に、グループヘッド１３２及び１３４は、上流グループヘッド１０６及び１０８に論理的に結合することができる。論理グループがコンテンツ１６０のための十分な数の受信ピアを有しない場合、その論理グループは、複数のグループヘッドを有しない場合がある。例えば、サブサイト１２４に対応する論理グループは、１つのグループヘッド１３６を含むことができる。効率的な配信のために、コントローラ１４０は、コンテンツ１６０をいくつかのブロックに分割することができる（例えば、それぞれが所定の数の固定サイズのデータチャンクを有する）。グループヘッド１０４は、ソース１０２と同じ論理グループにあるため、グループヘッド１０４は、最初にソース１０２からコンテンツ１６０を取得する。
【００３５】
ブロックごとの転送を容易にするために、システム１５０は、ファイル記述子１６２をピア１０６に提供することによって、コンテンツ１６０に関して、ピア１０６など、各ピアに命令することができる。システム１５０はまた、コンテンツ１６０をいつ転送するかをピア１０６に命令することもできる。システム１５０は、コンテンツ１６０のためのサーバピアとして動作することを開始するように、ソースピア１０２に命令することができる。システム１５０は、ピア１０６及び１０８など、クライアントピアのリストをサーバピア１０２に提供することができる。システム１５０はまた、コンテンツ１６０がサーバピア１０２から入手可能であることを、ピア１０６及び１０８に通知することもできる。この通知に基づいて、ピア１０６及び１０８は、記述子１６２のためのサーバピア１０２にサブスクライブし、ブロックについて提示を待つことができる。ピア１０２は、そのブロックをピア１０６及び１０８に提示することができる。ピア１０６及び１０８は、それぞれの受信したブロックをファイル記述子１６２内のブロックの暗号チェックサムに基づいて検証する。
【００３６】
図１Ｂは、本出願の一実施形態による、コンテンツ配信プロトコルに対してロールベースのセキュリティを容易にするための例示的な権限付与テーブルを示す。テーブル１５２は、企業環境１００内のブロックベースのプロトコルを容易にするために複数のアクセス許可を維持することができる。アクセス許可の例としては、ファイル記述子に署名する、配信を開始するコマンドに署名する、転送を開始するコマンドに署名する、及びピアに接続して記述子を提供するためのアクセス許可が挙げられるが、これらに限定されない。テーブル１５２は、デフォルトのアクセス許可（例えば、許可又は拒否）と、順番に評価されるルールのセット１５１とを有することができる。ルール１５１内で一致する最初のルールにより、結果は決定する。それぞれのルールは、リソース１５４（例えば、正規表現として表現される）を論理名１５６（例えば、論理グループ名又はデバイスのエイリアス）及び対応するアクセス許可１５８（例えば、許可又は拒否）にマッピングすることができる。リソース１５４に関連付けられた正規表現は、メッセージの種類及び転送サービスを一致させるために使用することができ、暗号化ラッパー内に記憶することができる。例えば、ファイル記述子１６２は、コントローラ１４０に対して「許可」アクセス許可を有することができる。
【００３７】
図１Ｃは、本出願の一実施形態による、企業環境における例示的なブロックベースのピアツーピアのコンテンツの配信を示す。この例では、コントローラ１４０は、コンテンツ１６０を配信するための配信ツリー１７０を生成することができる。配信ツリー１７０は、ツリー１７０のノードとして論理グループ１７２、１７４、１７６、及び１７８を含むことができる。論理グループ１７２、１７４、１７６、及び１７８は、それぞれサブネット１１１、サイト１１４、サブサイト１２４、及びサイト１１６に対応することができる。コントローラ１４０は、グループヘッドとして受信デバイス又は中継デバイスであってもよく、少なくとも２つの被管理デバイスを判定することができる。ソース１０２及びデバイス１０４はグループ１７２のためのグループヘッドとすることができ、デバイス１０６及び１０８はグループ１７４のためのグループヘッドとすることができ、デバイス１３６はグループ１７６のためのグループヘッドとすることができ、デバイス１３２及び１３４はグループ１７８のためのグループヘッドとすることができる。
【００３８】
システム１５０は、ピアがコンテンツ１６０のブロックを転送しているときでも、コンテンツ１６０のための配信ツリー１７０を変更することができる。システム１５０は、ピアのために新しい上流ピアを確立すること、ピアが上流ピアに接続するためのアクセス許可を削除すること、又はピア関係の優先度値を変更することができる。ピアは、システム１５０への登録を使用して、ピアが配信ツリー１７０に参加可能であることを示すことができる。ピアは、システム１５０に「シーダー」として登録されて分配ツリー１７０に参加するわけではないことに留意されたい。システム１５０は、ピアの利用可能なリソースを判定し、コンテンツ１６０を配信するためにリソースをどのように使用するかを計画する。
【００３９】
グループ間リンクは、グループヘッド間に形成され得る。例えば、グループ１７２とグループ１７４との間のリンクは、グループ１７２のグループヘッド１０２及び１０４と、グループ１７４のグループヘッド１０６及び１０８との間にある。グループ１７６は１つのグループヘッド１３６を含むので、グループ１７４と１７６との間のリンクは、グループ１７４のグループヘッド１０６及び１０８と、グループ１７６のグループヘッド１３６との間にある。各グループヘッドは、各上流グループヘッド（例えば、各親グループヘッド）とのリンクを維持することができる。例えば、グループヘッド１３６は、グループヘッド１０６及び１０８のそれぞれにリンクを有することができる。
【００４０】
グループ内のグループヘッドは、対応するピアリンクと相互に完全なピア関係を有することができ、これにより、ピアツーピア転送プロトコルを使用してデータを転送してデータブロックを協調することが可能になる。例えば、ピア１０６及び１０８は、互いにサーバピア及びクライアントピアの両方であり得る。したがって、ピア１０６及び１０８は、完全なピアであり得、かつ完全なピア関係であり得る。各ピア関係は、優先度値に関連付けられることができる。より高い優先度値は、そのピアを選択するためのより高い優先度を示す。完全なピア関係は、高い優先度値に関連付けられる。したがって、それぞれのピアは、完全なピア関係を介してブロックを取得することを好む。ピア１０６及び１０８など、それぞれのピアペア間の関係は、システム１５０によって定義される。関係は、一方向性又は双方向性とすることができる。システム１５０は、ネットワーク条件、デバイス容量、デバイスポリシー、及び環境１００に関連付けられた企業ポリシーのうちの１つ以上に基づいて関係の優先度値を構成することができる。
【００４１】
コンテンツ１６０がブロック１８１、１８２、１８３、及び１８４に分割されると仮定する。ブロックは、１つ以上のデータチャンクに更に分割されることができる。例えば、ブロック１８１は、チャンク１９１、１９２、１９３、及び１９４に分割されることができる。チャンクのサイズは、所定のバイト数であり得る。ブロック１８１などのブロックのサイズは、ブロック及びチャンクに対して規則的な構造を維持するように、チャンクサイズの整数倍であるべきである。しかしながら、ブロック１８４などの最後のブロックは、より少ないチャンクを有してもよく、チャンク１９４などの最後のチャンクは、より少ないバイトを有してもよい。チャンクは、ブロック内でのそのオフセットによって識別され得る。したがって、ブロック内のチャンク識別子は、小さい整数であり得る。例えば、チャンク１９２は、ブロック１８１内でチャンク１９１のサイズのオフセットによって識別されることができる。
【００４２】
ピア１０６及び１０８は完全なピア関係にあるため、両方のピア１０６及び１０８は、上流ピア１０２及び／又は１０４からのコンテンツ１６０についてサブスクライブし、ブロック１８１、１８２、１８３、及び１８４についての対応する提示を受信してもよい。次いで、ブロック１８１など、各ブロックに対して、ピア１０６及び１０８は、分散選出を実行して、どのピアがブロック１８１をダウンロードすべきかを判定することができる。分散選出は、ピア１０６及び１０８のそれぞれが、ブロック１８１についての提示を受諾するかどうかを個別に判定することを可能にする。選出プロセスは、ランダムな割り当て方法に基づくことができる。ピア１０６及び１０８のそれぞれ１つは個々に、記述子１６２のフィンガープリント、ブロック１８１のブロック番号、及びピアの識別子のうちの１つ以上の連結のハッシュ値を計算することができる。ピア１０６及び１０８のそれぞれ１つは、ピア１０６及び１０８の両方についてこのハッシュ値を計算し、最小値に対応するピアをブロック１８１のための指定されたダウンローダとして判定することができる。
【００４３】
結果として、ピア１０６及び１０８のそれぞれは、上流ピア１０２及び／又は１０４から一意のブロックのみをダウンロードする。例えば、選出に基づいて、ピア１０６は、ブロック１８１及び１８３をダウンロードすることができ、ピア１０８は、ブロック１８２及び１８４をダウンロードすることができる。完全なピア関係はグループ間リンクよりも高い優先度に関連付けられ、ピア１０６のみが上流ピア１０２又は１０４からブロック１８１をダウンロードするので、ピア１０６はブロックバックオフを実行しなくてもよい。代わりに、ピア１０６がブロック１８１をダウンロードするために選出されると、ピア１０６は、ブロック１８１についての要求を上流ピア１０２又は１０４に送信する。ダウンロードが完了すると、ピア１０６は、完全なピア関係のパートナーピア１０８に、ブロック１８１についての提示を送信することができる。高い優先度の完全なピア関係から提示を受信すると、ピア１０８は、ブロック１８１についての要求をピア１０６に送信することができる。
【００４４】
いくつかの実施形態では、ピア１０６及び／又は１０８は、提示を受信した後にブロックのチャンクを要求することができる。この提示は、ブロック又はチャンクに基づくことができる。例えば、ブロック１８１についての提示を受信すると、ピア１０６は、対応するチャンク識別子と共に要求メッセージを送信することによって、ピア１０２にチャンク１９１を要求してもよい。ピア１０６は、後続のチャンク１９２をピア１０４に要求することができる。ピア１０６は、チャンクを１つずつ待つことなく、要求のパイプラインを送信することができることに留意されたい。コンテンツ１６０に対して、ファイル記述子１６２は、チャンクサイズ及びブロックサイズを含むことができる。結果として、ピア１０６は、そのメモリ内に（例えば、ｍｍａｐシステムコールを使用して）コンテンツ１６０を記憶しながら、メモリオフセットを計算することができる。ピア１０６は、チャンク１９１、１９２、１９３、及び１９４のそれぞれを受信すると、ブロック１８１を自動的に再構築することができる。同様に、ピア１０６は、ブロック１８１、１８２、１８３、及び１８４のそれぞれを受信すると、コンテンツ１６０を自動的に再構築することができる。
【００４５】
一方、ピア１３６など、完全なピア関係にないピアは、ブロック１８１など、同じブロックからの複数の提示を受信し得る。ピア１３６が、ピア１０６からブロック１８１についての提示を受信すると仮定する。ピア１０６とピア１３６との間のピア関係の優先度値は、完全なピア関係の優先度と比較してより低い優先度を有することができるので、ピア１３６は、所定の期間にわたってブロックバックオフを実行し、より高い優先度のピアがブロック１８１についての提示を提供したかどうかをチェックすることができる。ここで、完全なピア関係の優先度値は、ピア１０６とピア１３６との間のピア関係の優先度値を比較するための閾値であり得る。システム１５０は、より低い優先度の提示の到着とより高い優先度の提示の到着との間の時間を監視すること、又は構成された値に基づいて、所定の期間を決定することができる。より高い優先度の提示がブロックバックオフの間に受信されなかった場合、ピア１３６は、提示に基づいてブロック１８１についての要求をピア１０６に送信することができる。
【００４６】
いくつかの実施形態では、システム１５０は、それぞれのピアの公開鍵を登録し、システム１５０が通信可能である各ピアに対してプリティグッドプライバシー（Ｐｒｅｔｔｙ  Ｇｏｏｄ  Ｐｒｉｖａｃｙ、ＰＧＰ）タイプのキーリングを管理することができる。２つのピア間のデータチャネルは、セキュアシェル（ｓｅｃｕｒｅ  ｓｈｅｌｌ、ＳＳＨ）又は相互に認証されたトランスポート層セキュリティ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ、ＴＬＳ）プロトコルに基づくことができる。各転送（例えば、グループ間又は完全なピア関係での転送）については、システム１５０は、制御及びデータメッセージのセキュアな転送のために複数の認証及び権限付与に依存することができる。認証及び権限付与は、制御チャネル上での認証及び権限付与、システム１５０に登録するためのアクセス許可、コンテンツを１つ以上のルート／ソースピアに送信するためのアクセス許可、コンテンツを配信する計画を開始するためにコマンドをシステム１５０に送信するためのアクセス許可、特定のピアに転送コマンドを送信するためのアクセス許可であって、各ピアが記述子１６２の署名を認証する（転送コマンドを送信するためのアクセス許可とは別個であり得る）、アクセス許可、ピア間のデータ交換のためのアクセス許可、ピアがデータチャネルを介して記述子１６２にサブスクライブするためのアクセス許可、並びにピアがデータチャネルを介して記述子１６２をパブリッシュするためのアクセス許可（例えば、記述子１６２のサブスクリプションを受諾する）のうちの１つ以上を含む。
【００４７】
図２は、本出願の一実施形態による、企業環境におけるコンテンツの効率的な配信を促進する例示的なシステムアーキテクチャを示す。この例では、コントローラ１４０、及びピア１０６などのそれぞれの被管理デバイスは、それぞれ、主動作モジュールとしてコントローラモジュール２００及び被管理デバイスモジュール２５０を含む。コントローラモジュール２００は、登録モジュール２０２、鍵モジュール２０４、グラフ化モジュール２０６、スケジューラモジュール２１４、及びプランナーモジュール２０８に基づいて動作する。一方、被管理デバイスモジュール２５０は、登録モジュール２５２、鍵モジュール２５４、測定モジュール２５６、及び転送モジュール２５８に基づいて動作することができる。
【００４８】
コントローラ１４０、登録モジュール２０２は、登録要求をリッスンし、被管理デバイスから要求メッセージを登録解除することができる。要求に基づいて、登録モジュール２０２は、ノードデータベース２１２内の企業環境１００内の現在のデバイス及びサブネットのセットの情報を維持する。鍵モジュール２０４は、被管理デバイスからの鍵要求メッセージをリッスンし、メッセージキューイングを使用して、一時的な楕円曲線ディフィーヘルマンなどの鍵交換を実行することができる。鍵モジュール２０４はまた、ハッシュベースメッセージ認証符号（ｈａｓｈ−ｂａｓｅｄ  ｍｅｓｓａｇｅ  ａｕｔｈｅｎｔｉｃａｔｉｏｎ  ｃｏｄｅ、ＨＭＡＣ）などの対称鍵でコントローラ１４０のキーリングを更新する。グラフ化モジュール２０６は、測定応答メッセージをリッスンすることができ、これらのメッセージに基づいて、企業環境１００の加重サブネット対サブネットグラフを維持することができる。
【００４９】
スケジューラモジュール２１４は、ネットワーク性能及び特性を測定するために、サブネット間の測定値を定期的にスケジュールする。スケジューラモジュール２１４はまた、ノードデータベース２１２内のサブネット間のエッジを示すテーブルを維持する。プランナーモジュール２０８は、コンテンツに関して、現在登録されているデバイスに基づいて、受信デバイスを含むソースデバイス及びターゲットサブネットを判定し、配信ツリーを判定するための実験をスケジュールする。プランナーモジュール２０８は、配信計画を生成し、それを計画データベース２１６に記憶することによって、コンテンツの配信を開始する。プランナーモジュール２０８は、配信に関する被管理デバイスからの通知を受信することができる。
【００５０】
ピア１０６において、登録モジュール２５２は、定期的登録要求メッセージをコントローラ１４０に送信し、応答をリッスンする。管理者（システム１５０）は、コントローラ１４０の公開鍵を有するピア１０６をプロビジョニングし、図１Ｂと併せて説明したように、コントローラ１４０が完全なアクセス許可を有するように、権限付与テーブル１７０を初期化することができる。いくつかの実施形態では、コントローラ１４０は、ピア１０６の公開鍵を取得し、デバイス関連のメッセージについてピア１０６に権限を付与することができる。登録モジュール２５２は、登録要求メッセージをコントローラ１４０に送信することができる。登録要求は、ピア１０６のアイデンティティと、ピアツーピアのＩＰアドレス及びポートと、ピア１０６の製造、モデル、及びファームウェアバージョンに関する情報と、のうちの１つ以上を含むことができる。この情報のいずれかが変化すると、登録モジュール２５２は、新しい登録要求を送信することができる。登録は、タイムアウト期間（例えば、１時間）を有してもよい。登録モジュール２５２は、タイムアウトが満了する前に登録要求を再送信することができる。コントローラ１４０の登録モジュール２０２は、登録要求を受信し、ノードデータベース２１２を更新し、登録応答を返信して要求を確認する。
【００５１】
鍵モジュール２５４は、鍵交換要求メッセージを送信し、対応する応答をリッスンすることによって、新しい鍵を定期的に生成する。鍵モジュール２５４はまた、対称鍵（例えば、ＨＭＡＣ）を用いてピア１０６のキーリングを更新することもできる。測定モジュール２５６は、ネットワーク測定の初期化をリッスンすることができる。これに基づいて、測定モジュール２５６は、ネットワーク測定をスケジュールし、測定値をグラフ化モジュール２０６に送信することができる。転送モジュール２５８は、コンテンツの配信を初期化するコントローラ１４０からのメッセージをリッスンし、ブロックベースのピアツーピアプロトコル２６０を介してピアツーピア転送をスケジュールする。転送モジュール２５８は、応答を送信して転送初期化メッセージを確認し、重要なイベント（例えば、開始、終了、エラーの検出など）に関してコントローラ１４０に通知することができる。プロトコル２６０は、プランナーモジュール２０８の制御下でピアツーピアファイルの転送を実行する。
【００５２】
図３Ａは、本出願の一実施形態による、企業環境のトポグラフィ情報を判定するコンテンツ配信システムの方法を示すフロー図３００を提示する。動作中、システムは、企業環境内のＩＰサブネットを判定し（動作３０２）、サブネット内の被管理デバイスを判定する（動作３０４）。次いで、システムは、それぞれの被管理デバイスに関する測定コマンドを発行し（動作３０６）、それぞれの被管理デバイスから測定値を受信する（動作３０８）。測定コマンドは、被管理デバイスにネットワーク及びデバイス条件（例えば、帯域幅、レイテンシ、利用率など）を測定し、システムに報告するように命令する。このシステムは、ＩＰサブネットの加重サブグラフを生成し、受信した測定値に基づいてエッジ情報を更新する（動作３１０）。システムは、全てのサブネットがスキャンされたかどうかをチェックする（動作３１２）。スキャンされた場合、システムは、企業ネットワークの加重オーバーレイグラフを生成する（動作３１４）。そうでなければ、システムは、企業環境内の次のＩＰサブネットを判定し続ける（動作３０２）。
【００５３】
図３Ｂは、本出願の一実施形態による、企業環境のトポグラフィ情報に基づいて、コンテンツの配信を計画するコンテンツ配信システムの方法を示すフロー図３５０を提示する。動作中、システムは、企業環境内の論理グループを（例えば、サブネット又はサイトに基づいて）識別し（動作３５２）、コンテンツのソースデバイスが論理グループ内にあるかどうかを判定する（動作３５４）。ソースデバイスが論理グループ内にある場合、システムは、論理グループのためのグループヘッドとしてソースデバイスを判定する（動作３５６）。次いで、システムは、グループヘッド選択が完了したかどうか（例えば、２つなどの所定の数のグループヘッドが選択されているか、又はデバイスがこれ以上選択されないか）を判定する（動作３５８）。グループヘッド選択が完了していない場合、システムは、コンテンツのための任意の受信デバイスが論理グループ内で利用可能かどうかをチェックする（動作３６０）。
【００５４】
少なくとも１つの受信デバイスが利用可能である場合、システムは、論理グループのグループヘッドとして受信デバイスをランダムに選択する（動作３６２）。そうでなければ、システムは、論理グループのグループヘッドとして中継デバイスをランダムに選択する（動作３６４）。グループヘッドを選択すると（動作３６２又は３６４）、システムは、グループヘッドの選択が完了したかどうかを判定する（動作３５８）。グループヘッド選択が完了している場合、システムは、グループ間、グループ内、及びグループヘッド間のピア関係を確立し、対応する優先度値を割り当てる（動作３６６）。次いで、システムは、グループ内及びグループ間の配信のためのグループヘッドを構成する（動作３６８）。この構成は、ブロックベースのピアツーピアプロトコルを構成することを含み得る。
【００５５】
図４Ａは、本出願の一実施形態による、企業環境における完全なピアへの初期の例示的なブロックの配信を示す。この例では、企業環境１００は、デバイス４０２、４０４、及び４０６を含む。デバイス４０２は、デバイス４０４及び４０６の上流ピアであり得る。動作中、コントローラ１４０は、コンテンツ１６０についての転送開始コマンドをデバイス４０２、４０４、及び４０６に送信する（動作４１２）。このコマンドにより、デバイス４０２、４０４、及び４０６は、指定された時間にコンテンツ１６０のためのサーバとして動作することを開始する。デバイス４０４及び４０６への転送開始コマンドはまた、１つ以上のピアを指定することもできる。これにより、デバイス４０４及び４０６は、それらのピアに対するクライアントになることができる。例えば、デバイス４０４への転送開始コマンドは、デバイス４０２及び４０６をピアとして指定することができる。したがって、デバイス４０４は、デバイス４０２及び４０６のクライアントになることができる。同様に、デバイス４０６への転送開始コマンドは、デバイス４０２及び４０４をピアとして指定することができる。デバイス４０２が現在、コンテンツ１６０のコピーを記憶していると仮定する。
【００５６】
デバイス４０４及び４０６は並列クライアント／サーバ接続を有する（すなわち、互いにクライアント及びサーバである）ので、デバイス４０４及び４０６は、完全なピア関係を確立し、完全なピアとして動作することを開始する。サーバがピアからの接続を処理する準備が整った状態になると、サーバ（ｓｅｖｅｒ）はコネクテッドコマンドを送信することができる。例えば、デバイス４０２は、コネクテッドコマンドをデバイス４０４及び４０６に送信することができる（動作４１４）。デバイス４０４及び４０６は完全なピアなので、デバイス４０４及び４０６は、コネクテッドコマンドを互いに送信する（それぞれ、動作４１６及び４１８）。これにより、対応するクライアントは、データ転送を開始することが可能になる。クライアントは、特定の記述子内での関心を示す１つ以上のサブスクライブメッセージをサーバに送信することができる。例えば、デバイス４０４は、コンテンツ１６０の記述子１６２についてのサブスクライブメッセージをデバイス４０２及び４０６に送信することができ（動作４２０）、デバイス４０６は、記述子１６２についてのサブスクライブメッセージをデバイス４０２及び４０４に送信することができる（動作４２２）。それぞれのサブスクライブメッセージは、記述子１６２のフィンガープリント（例えば、ＪａｖａＳｃｒｉｐｔ（登録商標）  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ（ＪＳＯＮ）形式の記述子１６２のＳＨＡ２５６フィンガープリントのｂａｓｅ６４エンコーディング）に基づいて記述子１６２を識別することができる。
【００５７】
サーバは、サーバがその記述子についてクライアントの必要を満たす準備が整っているかどうかを示す肯定応答メッセージ又は拒否応答メッセージのいずれかでサブスクリプションに応答することができる。例えば、デバイス４０２は、記述子１６２に対応するそれぞれの肯定応答メッセージをデバイス４０４及び４０６に送信することができる（動作４２４）。同様に、デバイス４０４及び４０６は、それぞれの肯定応答メッセージを互いに送信することができる（それぞれ、動作４２６及び４２８）。サーバは、（１）サーバがその記述子を提供しない場合、（２）クライアントがその記述子についてサーバ上で権限を付与されていない場合、及び（３）サーバがリソース制約に起因してクライアントの必要を満たすことができない場合、のうちの１つ以上の場合にサブスクリプションを拒否し得る。各肯定応答されたサブスクリプションについて、サーバは、コンテンツ１６０の利用可能なブロックについて提示メッセージを送信することができる。デバイス４０２は、コンテンツ１６０の利用可能なブロックのセットを示す提示をデバイス４０４及び４０６に送信することができる（動作４３０）。
【００５８】
提示メッセージは、記述子１６２のブロックチェーン内へのインデックスを列挙する。提示は、複数のブロックについての一括提示又は個々のブロック（例えば、デバイス４０２内の新しいブロックごとに１つずつの提示）であり得る。一方、デバイス４０４及び４０６はいずれのブロックもまだ受信していないので、これらのデバイスは、いかなる提示メッセージも送信しない。各提示されたブロックについて、クライアントは、ブロックをダウンロードする必要があるかどうか、またダウンロードする場合、どのサーバからダウンロードするかを決定する。デバイス４０２から受信した提示に基づいて、デバイス４０４及び４０６は、コンテンツ１６０についてのサーバとしてデバイス４０２を選択することができる。デバイス４０４及び４０６は完全なピア関係にあるので、ブロックバックオフを実行する代わりに、デバイス４０４及び４０６は、それぞれのブロックについて分散選出を実行することができる。ブロック１８１に対して、ピア４０４及び４０６は、分散選出を実行して、どのデバイスがブロック１８１をダウンロードすべきかを判定することができる（動作４３２）。
【００５９】
デバイス４０４がブロック１８１をダウンロードすべきであるとデバイス４０４及び４０６が判定すると仮定する。次いで、デバイス４０４は、ブロック１８１についての要求を送信し（動作４３６）、デバイス４０４がダウンロードを開始したことを示すダウンロード中メッセージをデバイス４０６に送信する（動作４３８）。デバイス４０６は、ダウンロード中メッセージを待つピアバックオフを所定の期間にわたって実行する（動作４３４）。この所定の期間は、ダウンロード中メッセージを送信するために完全なピアによって必要とされる時間よりも長くなければならない。この時間は、ダウンロード中メッセージの長さ、ピアを結合するリンクの帯域幅、リンクを共有するデバイスの数、ダウンロードするためのピアを選出する時間、及び別のピアに通知する時間のうちの１つ以上に基づいて決定され得る。選出プロセスが、ブロックをダウンロードすべきピアを判定することに失敗した場合、完全なピアは、選出プロセスを繰り返してもよい。各繰り返しでは、選出を勝ち取ることに失敗したデバイスは、このデバイスがダウンロード中メッセージを受信するか、又はこのデバイス自体が選出を勝ち取ることがない限り、除外され得る。デバイス４０２がブロック１８１についての要求を受信すると、記述子１６２に示されるように、デバイス４０２は、要求に応えるかどうかを決定することができ、受諾メッセージ又は拒否メッセージのいずれかを返信する。
【００６０】
デバイス４０２が提示を受諾し、受諾メッセージをデバイス４０４に送信すると仮定する（動作４４０）。受諾はまた、ブロック１８１を含むデータメッセージを送信することを含む（動作４４０）。データメッセージは、記述子１６２を識別するヘッダと、デバイス４０４からの要求に関連付けられた要求識別子と、を含むことができる。ブロック１８１がデバイス４０４で利用可能になると、デバイス４０４は、サーバとして動作することを開始し、ブロック１８１についての提示をデバイス４０６に送信する（動作４４２）。この提示は、高い優先度の完全なピア関係からのものなので、デバイス４０６は、対応する要求をデバイス４０４に直ちに送信することができる（動作４４４）。これに応答して、デバイス４０４は、受諾メッセージ、及びブロック１８１を含むデータメッセージをデバイス４０６に送信する（動作４４６）。
【００６１】
図４Ｂは、本出願の一実施形態による、企業環境における完全なピアへの後続の例示的なブロックの配信を示す。この例では、ブロック１８１は、図４Ａと併せて説明したように、デバイス４０４及び４０６内で利用可能である。ブロック１８３に対してデバイス４０４が選出され、ブロック１８２及び１８４に対してデバイス４０６が選出されたと仮定する。したがって、デバイス４０２は、受諾メッセージ、及びブロック１８３を含むデータメッセージをデバイス４０４に送信し（動作４５２）、１つ以上の受諾メッセージ、及びブロック１８２及び１８４を含む対応するデータメッセージをデバイス４０６に送信する（動作４５４）。
【００６２】
ブロック１８３がデバイス４０４で利用可能になると、デバイス４０４は、ブロック１８３についての提示をデバイス４０６に送信する（動作４５６）。同様に、ブロック１８２及び１８４がデバイス４０６で利用可能になると、デバイス４０６は、サーバとして動作することを開始し、ブロック１８２及び１８４についての１つ以上の提示をデバイス４０４に送信する（動作４５８）。この提示は、高い優先度の完全なピア関係からのものなので、デバイス４０４は、ブロック１８２及び１８４についての１つ以上の要求をデバイス４０６に直ちに送信することができる（動作４６０）。デバイス４０６もまた、ブロック１８３についての要求をデバイス４０４に直ちに送信することができる（動作４６２）。続いて、デバイス４０４は、受諾メッセージ、及びブロック１８３を含むデータメッセージをデバイス４０６に送信し（動作４６４）、デバイス４０６は、１つ以上の受諾メッセージ、及びブロック１８２及び１８４を含む対応するデータメッセージをデバイス４０４に送信する（動作４６６）。このデータ交換に基づいて、デバイス４０４及び４０６は、コンテンツ１６０のそれぞれのブロックを取得する。
【００６３】
図４Ｃは、本出願の一実施形態による、企業環境における下流デバイスへの例示的なコンテンツ配信を示す。企業環境１００はデバイス４０８を含むことができ、このデバイスは、完全なピア関係になくてもよい。動作中、コントローラ１４０は、コンテンツ１６０についてデバイス４０２、４０４、及び４０６をサーバとして示す転送コマンドをデバイス４０８に送信する（動作４７０）。デバイス４０２、４０４、及び４０６がデバイス４０８からの接続を処理する準備が整った状態になると、デバイス４０２、４０４、及び４０６は、それぞれのコネクテッドコマンドをデバイス４０８に送信することができる（それぞれ、動作４７２、４７４、及び４７６）。デバイス４０４及び４０６は完全なピアなので、デバイス４０４及び４０６は、コネクテッドコマンドを互いに送信することができる（それぞれ、動作４１６及び４１８）。
【００６４】
次いで、デバイス４０８は、コンテンツ１６０の記述子１６２についてのサブスクライブメッセージをデバイス４０２、４０４、４０６に送信することができる（動作４７８）。それぞれのサブスクライブメッセージは、記述子１６２のフィンガープリントに基づいて記述子１６２を識別することができる。デバイス４０４及び４０６は、記述子１６２に対応するそれぞれの肯定応答メッセージでサブスクリプションに応答することができる（それぞれ、動作４８２及び４８４）。しかしながら、デバイス４０２は、デバイス４０２が記述子１６２についてデバイス４０８の必要を満たす準備が整っていないことを示す拒否メッセージを送信することができる（動作４８０）。デバイス４０２は、（１）デバイス４０２が記述子１６２をこれ以上提供しない場合、（２）デバイス４０８が記述子１６２についてデバイス４０２上で権限を付与されていない場合、及び（３）デバイス４０２がリソース制約に起因してデバイス４０８の必要を満たすことができない場合、のうちの１つ以上の場合にサブスクリプションを拒否し得る。デバイス４０４及び４０６は、コンテンツ１６０の利用可能なブロックのセットを示すそれぞれの提示をデバイス４０８に送信することができる（それぞれ、動作４８６及び４８８）。
【００６５】
次いで、デバイス４０８は最も高い優先度を有するサブスクリプションを判定し、これは、デバイス４０４又は４０６へのサブスクリプションである。デバイス４０４及び４０６はデバイス４０８の上流ピアなので、対応する関係は、完全なピア関係の優先度値と比較して、より低い優先度値で構成されている。したがって、デバイス４０８は、ブロックバックオフを所定の期間にわたって実行する（動作４９０）。ブロックバックオフは、より高い優先度のピアがあれば、コンテンツ１６０のブロックを提示する機会をそのピアに提供する。デバイス４０８がブロックバックオフの時間内に提示を受信しなければ、デバイス４０８は、より低い優先度のサブスクリプションからのコンテンツ１６０のブロックについてのそれぞれの要求をデバイス４０４及び４０６に送信することができる（それぞれ、動作４９２及び４９４）。デバイス４０４は、要求に応えることができないと判定し得、拒否メッセージをデバイス４０８に返信する（動作４９６）。一方、デバイス４０６は、受諾メッセージ、及びコンテンツ１６０のブロックを含む１つ以上のデータメッセージをデバイス４０８に送信することができる（動作４９８）。
【００６６】
図５は、本出願の一実施形態による、企業環境におけるコンテンツの配信を可能にするコントローラの方法を示すフロー図５００を提示する。動作中、コントローラは、図１Ｃと併せて説明したように、コンテンツを配信するための計画を判定する（動作５０２）。コントローラは、計画に基づいてコンテンツのためのサーバとして動作することができるデバイスのセットを判定する（動作５０４）。次いで、コントローラは、コンテンツのファイル記述子、転送のためのタイムライン、及び、もしあれば、ピアのリストを含む転送開始コマンドを、判定されたデバイスのセットに送信する（動作５０６）。コントローラは、それぞれのピアについて上流デバイスのセットを判定し（動作５０８）、コンテンツのためのサーバとして動作している対応する上流ピアを有するそれぞれのピアに転送コマンドを送信する（動作５１０）。
【００６７】
図６Ａは、本出願の一実施形態による、コンテンツをクライアントピアに提供するサーバピアの方法を示すフロー図６００を提示する。動作中、サーバピアは、ファイル記述子、タイムライン、及びピアのリストを有するコマンド（例えば、転送開始コマンド）を受信し（動作６０２）、ピアがファイル記述子について権限を付与されているかどうかを判定する（動作６０４）。権限を付与されている場合、サーバピアは、クライアントピアから１つ以上のサブスクリプション要求を受信し（動作６０６）、クライアントピアの鍵及び権限付与が有効であるかどうか（例えば、コンテンツにアクセスするための権限付与）を判定する（動作６０８）ことができる。有効である場合、サーバピアは、利用可能なブロックについての提示をクライアントピアに発行する（動作６１０）。
【００６８】
次いで、サーバピアは、要求を受信したかどうかをチェックする（動作６１２）。要求を受信すると、サーバピアは、要求を受諾するかどうかを判定する（動作６１４）。サーバピアが要求を受諾した場合、サーバピアは、ブロックをクライアントピアに送信し（動作６１６）、全てのブロックが提示されたかどうかをチェックする（動作６１８）。提示されていないブロックがある場合、サーバピアは、利用可能なブロックについての提示をクライアントピアに発行することを続ける（動作６１０）。このプロセスにより、サーバピアは、ブロックが利用可能になったらすぐにブロックを提示することによってパイプラインを実装することが可能になる。一方、サーバピアがファイル記述子について権限を付与されていない場合（動作６０４）、クライアントピアの鍵及び権限付与が有効ではない場合（動作６０８）、又は全てのブロックが提示されている場合（動作６１８）、サーバピアは、クライアントピアとの接続を終了する（動作６２０）。
【００６９】
図６Ｂは、本出願の一実施形態による、上流サーバピアからコンテンツを取得するクライアントピアの方法を示すフロー図６３０を提示する。動作中、クライアントピアは、サーバピアを識別し、転送コマンドからファイル記述子を取得する（動作６３２）。次いで、クライアントピアは、サーバピアの鍵を検証し、サブスクリプションをサーバピアに送信する（動作６３４）。サブスクリプションが受諾された場合（動作６３６）、クライアントピアは、ブロックについての提示を受信する（動作６３８）。次いで、クライアントピアは、その提示が最も高い優先度の提示であるかどうかをチェックする（動作６４０）。その提示が最も高い優先度の提示ではない場合、クライアントピアは、ブロックバックオフを開始し（動作６４２）、より高い優先度の提示が利用可能であるかどうかをチェックする（動作６４４）。
【００７０】
より高い優先度の提示が利用可能である場合、クライアントピアは、新しい提示を受信する（動作６３８）。一方、その提示が最も高い優先度の提示である場合（動作６４０）、又はより高い優先度の提示が利用可能でない場合（動作６４４）、クライアントピアは、ブロックについての要求を送信し、サーバピアからブロックを受信することができる（動作６４６）。次いで、クライアントピアは、全てのブロックが受信されたかどうかをチェックする（動作６４８）。受信されていないブロックがある場合、クライアントピアは、追加のブロックについての提示をサーバピアから受信することを続ける（動作６３８）。サブスクリプションが受諾されない場合（動作６３６）、又は全てのブロックが受信された場合（動作６４８）、クライアントピアは、サーバピアとの接続を終了する（動作６５０）。
【００７１】
図６Ｃは、本出願の一実施形態による、完全なピアからコンテンツを受信するクライアントピアの方法を示すフロー図６６０を提示する。動作中、クライアントピアは、サーバピアを識別し、転送コマンドからファイル記述子を取得する（動作６６２）。次いで、クライアントピアは、サーバピアの鍵を検証し、サブスクリプションをサーバピアに送信し、受諾を受信する（動作６６４）。続いて、クライアントピアは、提示が完全なピアから受信されたかどうかをチェックする（動作６６６）。提示が完全なピアから受信された場合、クライアントピアは、完全なピアからブロックを取得する（動作６６８）。
【００７２】
提示が完全なピアから受信されなかった場合、クライアントピアは、ブロックについて分散選出を実行し（動作６７０）、ローカルピアが選出されたかどうかをチェックする（動作６７２）。ローカルピアが選出された場合、クライアントピアは、ダウンロード中メッセージをパートナーの完全なピアに送信し、上流サーバピアからブロックをダウンロードする（動作６７４）。ローカルピアが選出されていない場合、クライアントピアは、ピアバックオフを実行し、ダウンロード中メッセージを待つ６７６）。完全なピア（動作６６８）又は上流サーバピア（動作６７４）からブロックを取得するか、若しくはピアバックオフを実行する（動作６７６）と、ピアは、全てのブロックが受信されたかどうかをチェックする（動作６７８）。受信されていないブロックがある場合、ピアは、ピアが完全なピアからの提示を受信したかどうかを判定することを続ける（動作６６６）。エラー又は障害に直面することがなければ、完全なピアは、そのパートナーの完全なピアとの接続（例えば、ＳＳＨ接続）を終了しなくてもよい。
【００７３】
図７は、本出願の一実施形態による、企業環境における効率的なコンテンツ配信を促進する例示的なコンピュータシステムを示す。コンピュータシステム７００は、プロセッサ７０２、メモリデバイス７０４、及び記憶デバイス７０８を含む。メモリデバイス７０４は、揮発性メモリデバイス（例えば、デュアルインラインメモリモジュール（ｄｕａｌ  ｉｎ−ｌｉｎｅ  ｍｅｍｏｒｙ  ｍｏｄｕｌｅ、ＤＩＭＭ））を含むことができる。更に、コンピュータシステム７００は、ディスプレイデバイス７１０、キーボード７１２、及びポインティングデバイス７１４に連結することができる。記憶デバイス７０８は、オペレーティングシステム７１６、コンテンツ配信システム７１８、及びデータ７３６を記憶することができる。コンテンツ配信システム７１８は、コントローラ１４０、ソースデバイス１０２、グループヘッド１０４、１０６、１０８、及び１３６、並びにデバイス４０２、４０４、４０６、及び４０８のうちの１つ以上の動作を促進することができる。
【００７４】
コンテンツ配信システム７１８は、コンピュータシステム７００によって実行されると、コンピュータシステム７００に、本開示で説明される方法及び／又はプロセスを実行させることができる命令を含むことができる。具体的には、コンテンツ配信システム７１８は、ノードデータベース内で企業環境内の現在のデバイス及びサブネットのセットの情報を検出及び維持するための命令を含むことができる（登録モジュール７２０）。コンテンツ配信システム７１８はまた、権限付与テーブルに基づいて企業環境内のリソース及び動作の権限付与を発行、維持、及び施行するための命令を含むこともできる（権限付与モジュール７２２）。更に、コンテンツ配信システム７１８はまた、ピアツーピア関係を確立及び維持する（例えば、優先度値を構成する）ための命令を含むこともできる（ピアリングモジュール７２４）。
【００７５】
更に、コンテンツ配信システム７１８はまた、転送コマンドを発行することによってコンテンツの配信を開始するための命令を含むこともできる（配信モジュール７２６）。コンテンツ配信システム７１８は、コンテンツのブロックを上流ピアからダウンロードするためのピアを選出するための命令を含むことができる（選出モジュール７２８）。コンテンツ配信システム７１８は、ブロック及び／又はピアバックオフを実行するための命令を更に含むことができる（バックオフモジュール７３０）。コンテンツ配信システム７１８は、ブロックベースのデータ転送を実行する（例えば、提示を発行／提示に肯定応答すること、提示に基づいて要求すること、提示に応答することなどの）ための命令を更に含むことができる（転送モジュール７３２）。コンテンツ配信システム７１８は、メッセージを送信及び受信するための命令を更に含んでもよい（通信モジュール７３４）。データ７３６は、コンテンツ配信システム７１８の動作を促進することができる任意のデータを含み得る。
【００７６】
図８は、本出願の一実施形態による、企業環境における効率的なコンテンツ配信を促進する例示的な装置を示す。コンテンツ配信装置８００は、有線、無線、量子光、又は電気通信チャネルを介して互いに通信し得る複数のユニット又は装置を含むことができる。装置８００は、１つ以上の集積回路を使用して実現され得、図８に示されているものよりも少ない又は多いユニット又は装置を含み得る。更に、装置８００は、コンピュータシステムに統合され得るか、又は他のコンピュータシステム及び／若しくはデバイスと通信することができる別個のデバイスとして実現され得る。具体的には、装置８００は、図７のコンピュータシステム７００のモジュール７２０〜７３４と同様の機能又は動作を実行するユニット８０２〜８１６を含むことができ、これには、登録ユニット８０２、権限付与ユニット８０４、ピアリングユニット８０６、配信ユニット８０８、選出ユニット８１０、バックオフユニット８１２、転送ユニット８１４、及び通信ユニット８１６が含まれる。
【００７７】
発明を実施するための形態において記載されるデータ構造及びコードは、典型的には、コンピュータ可読記憶媒体上に記憶され、コンピュータシステムによって使用されるコード及び／又はデータを記憶することができる任意のデバイス又は媒体であってもよい。コンピュータ可読記憶媒体としては、揮発性メモリ、不揮発性メモリ、ディスク、磁気テープ、ＣＤ（ｃｏｍｐａｃｔ  ｄｉｓｃ、コンパクトディスク）、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｃ、デジタル多用途ディスク又はｄｉｇｉｔａｌ  ｖｉｄｅｏ  ｄｉｓｃ、デジタルビデオディスク）などの磁気及び光学ストレージデバイス、又は現在知られている又は今後開発されるコンピュータ可読メディア媒体を記憶できるその他の媒体が挙げられるが、これらに限定されない。
【００７８】
「発明を実施するための形態」セクションに記載される方法及び処理は、上記のようにコンピュータ可読記憶媒体に記憶され得るコード及び／又はデータとして具体化することができる。コンピュータシステムが、コンピュータ可読記憶媒体上に記憶されたコード及び／又はデータを読み取って実行すると、コンピュータシステムは、データ構造及びコードとして具体化され、コンピュータ可読記憶媒体内に記憶された方法及び処理を実行する。
【００７９】
更に、上述の方法及びプロセスは、ハードウェアモジュールに含めることができる。例えば、ハードウェアモジュールとしては、特定用途向け集積回路（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ、ＡＳＩＣ）チップ、フィールドプログラマブルゲートアレイ（ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ、ＦＰＧＡ）、及び現在知られている又は今後開発される他のプログラム可能論理デバイスを含むことができるが、これらに限定されない。ハードウェアモジュールが起動されると、ハードウェアモジュールは、ハードウェアモジュール内に含まれる方法及びプロセスを実行する。
【図１Ａ】
2020087443.tif 000003
【図１Ｂ】
2020087443.tif 000004
【図１Ｃ】
2020087443.tif 000005
【図２】
2020087443.tif 000006
【図３Ａ】
2020087443.tif 000007
【図３Ｂ】
2020087443.tif 000008
【図４Ａ】
2020087443.tif 000009
【図４Ｂ】
2020087443.tif 000010
【図４Ｃ】
2020087443.tif 000011
【図５】
2020087443.tif 000012
【図６Ａ】
2020087443.tif 000013
【図６Ｂ】
2020087443.tif 000014
【図６Ｃ】
2020087443.tif 000015
【図７】
2020087443.tif 000016
【図８】
2020087443.tif 000017