(57)【要約】      （修正有）【課題】コンテンツ部分を更新してネットワークを介して更新されたコンテンツ部分を配信するシステムを提供する。【解決手段】元のマニフェスト及び元のマニフェストによって参照されるオブジェクトのセットに対応するコンテンツ部分を更新し、更新されたコンテンツ部分についての更新マニフェストを生成する。更新マニフェストは、元のマニフェストへの参照と、更新オブジェクトのセットへの参照とを含み、更新オブジェクトのセットは、コンテンツ部分と更新されたコンテンツ部分との差分を示している。そして、更新マニフェスト及び更新オブジェクトのセットを発行することにより、要求者が更新されたコンテンツ部分について更新マニフェスト及び更新マニフェストのセットを取得し、更新マニフェスト及び更新オブジェクトのセットを使用して更新されたコンテンツ部分を構築する。【選択図】図８
2016024814.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツ部分を更新してネットワークを介して前記更新されたコンテンツ部分を配信するためのコンピュータ実行可能な方法において、
元のマニフェスト及び前記元のマニフェストによって参照されるオブジェクトのセットに対応する前記コンテンツ部分を更新することと、
前記更新されたコンテンツ部分についての更新マニフェストであり、前記元のマニフェストへの参照と、前記コンテンツ部分と前記更新されたコンテンツ部分との差分を示す更新オブジェクトのセットへの参照とを含む前記更新マニフェストを生成することと、
前記更新マニフェスト及び前記更新オブジェクトのセット発行することにより、要求者が前記更新されたコンテンツ部分について前記更新マニフェスト及び前記更新マニフェストのセットを取得し、前記更新マニフェスト及び前記更新オブジェクトのセットを使用して前記更新されたコンテンツ部分を構築するのを容易とすることとを備える方法。
【請求項２】
計算装置によって実行されたとき、コンテンツ部分を更新してネットワークを介して前記更新されたコンテンツ部分を配信する方法を前記計算装置に実行させる命令を記憶する持続性コンピュータ読み取り可能な記憶媒体において、前記方法が、
元のマニフェスト及び前記元のマニフェストによって参照されるオブジェクトのセットに対応する前記コンテンツ部分を更新することと、
前記更新されたコンテンツ部分についての更新マニフェストであり、前記元のマニフェストへの参照と、前記コンテンツ部分と前記更新されたコンテンツ部分との差分を示す更新オブジェクトのセットへの参照とを含む前記更新マニフェストを生成することと、
前記更新マニフェスト及び前記更新オブジェクトのセット発行することにより、要求者が前記更新されたコンテンツ部分について前記更新マニフェスト及び前記更新マニフェストのセットを取得し、前記更新マニフェスト及び前記更新オブジェクトのセットを使用して前記更新されたコンテンツ部分を構築するのを容易とすることとを備える持続性コンピュータ読み取り可能な記憶媒体。
【請求項３】
コンテンツ部分を更新してネットワークを介して前記更新されたコンテンツ部分を配信するコンピュータシステムにおいて、
プロセッサと、
前記プロセッサに結合され、前記プロセッサによって実行されたとき、
元のマニフェスト及び前記元のマニフェストによって参照されるオブジェクトのセットに対応する前記コンテンツ部分を更新することと、
前記更新されたコンテンツ部分についての更新マニフェストであり、前記元のマニフェストへの参照と、前記コンテンツ部分と前記更新されたコンテンツ部分との差分を示す更新オブジェクトのセットへの参照とを含む前記更新マニフェストを生成することと、
前記更新マニフェスト及び前記更新オブジェクトのセット発行することにより、要求者が前記更新されたコンテンツ部分について前記更新マニフェスト及び前記更新マニフェストのセットを取得し、前記更新マニフェスト及び前記更新オブジェクトのセットを使用して前記更新されたコンテンツ部分を構築するのを容易とすることとを備える方法を前記プロセッサに実行させる命令を記憶する記憶装置とを備えるコンピュータシステム。
【請求項４】
前記元のマニフェストが、それらのハッシュベースの名称によって前記オブジェクトのセットを参照する、請求項３に記載のコンピュータシステム。
【請求項５】
前記更新マニフェストが、前記元のマニフェストに対する差分を示す、差分符号化され、それにより、ハッシュベースの名称によって前記更新されたコンテンツ部分に対応するコンテンツオブジェクトのセットを参照する新たなマニフェストの構築を容易とする、請求項４に記載のコンピュータシステム。
【請求項６】
前記元のマニフェストが階層的であり、前記差分符号化された更新マニフェストが、前記元のマニフェスト階層の変更されない分岐を参照する、請求項５に記載のコンピュータシステム。
【請求項７】
前記更新オブジェクトが、前記コンテンツ部分に対して行われた変更と、前記コンテンツ部分内の前記変更の対応するバイト位置とを含む、請求項３に記載のコンピュータシステム。
【請求項８】
前記更新オブジェクトが、変更されたオブジェクトのセットと、前記コンテンツ部分に対応する前記オブジェクトのセット内の前記変更されたオブジェクトの対応するシーケンス番号とを含む、請求項３に記載のコンピュータシステム。
【請求項９】
単一のコンテンツストリームにおける少なくとも１つのコンテンツオブジェクトが鍵情報を含み、各コンテンツオブジェクトが、前記鍵に関連付けられた暗号化署名を含む、請求項３に記載のコンピュータシステム。
【請求項１０】
前記ネットワークがコンテンツ中心ネットワーク（ＣＣＮ）であり、前記オブジェクトのセットが標準ＣＣＮコンテンツオブジェクトである、請求項３に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、コンテンツ中心ネットワーク（ＣＣＮ）に関する。より具体的には、本開示は、差分ベースのコンテンツ配信を実装するシステム及び方法に関する。
【背景技術】
【０００２】
インターネットや電子商取引の普及は、ネットワーク業界の革命的な変化を刺激し続けている。今日では、オンライン映画視聴から、毎日のニュースの配信、小売売上高及びインスタントメッセージングまでのかなりの数の情報交換は、オンラインで行われている。インターネットアプリケーションの増加はまた、モバイルになっている。しかしながら、現在のインターネットは、主に、位置ベースのアドレス指定方式で動作する。２つの最もユビキタスなプロトコルであるインターネットプロトコル（ＩＰ）及びイーサネット（登録商標）プロトコルは、双方とも、エンドホストアドレスに基づいている。すなわち、コンテンツの消費者は、典型的には物理的な対象又は位置に関連しているアドレス（例えば、ＩＰアドレス又はイーサネット（登録商標）メディアアクセス制御（ＭＡＣ）アドレス）からコンテンツを明示的に要求することによってコンテンツを受信することができるだけである。この制限されたアドレス指定方式は、刻々と変化するネットワーク要求を満たすためには徐々に不十分になってきている。
【０００３】
近年、コンテンツが直接名称付けられてアドレス指定される業界において情報中心ネットワーク（ＩＣＮ）アーキテクチャが提案されている。典型的なＩＣＮアーキテクチャであるコンテンツ中心ネットワーク（ＣＣＮ）は、コンテンツ伝送への新たなアプローチをもたらす。コンテンツが移動するエンドツーエンド会話としてアプリケーションレベルでネットワークトラフィックを視認する代わりに、コンテンツは、その固有の名称に基づいて要求される又は返送され、ネットワークは、プロバイダから消費者に対してコンテンツをルーティングする責を担う。コンテンツは、テキスト、画像、映像及び／又は音声などのデータの任意の形態を含む通信システムにおいて伝送されることができるデータを含むことに留意されたい。消費者及びプロバイダは、コンピュータにおける人やＣＣＮの内部又は外部の自動プロセスとすることができる。コンテンツの一部は、コンテンツ全体又はコンテンツの各部分を参照することができる。例えば、新聞記事は、データパケットとして具現化されたコンテンツの複数の部分によって表されることができる。コンテンツの一部はまた、認証データ、作成日付、コンテンツ所有者などの情報を有するコンテンツの一部を説明又は増強するメタデータに関連付けることができる。
【０００４】
現在のＣＣＮにおいて、コンテンツ発行者が映像ファイルなどのコンテンツの一部を更新するとき、変更又は編集量を小さくすることができたとしても、多くの場合異なるバージョンの名称のもとにコンテンツの全体部分を再発行することを必要とする。したがって、より古いバージョンの受信者がコンテンツ部分を更新しようとしたとき、少数のコンテンツオブジェクトのみが実際には更新されたとしても、全体の再発行されたコンテンツ部分をダウンロードすることを必要とする。
【発明の概要】
【課題を解決するための手段】
【０００５】
本発明の１つの実施形態は、コンテンツ部分を更新し、ネットワークを介して更新されたコンテンツ部分を配信するシステムを提供する。動作中、システムは、元のマニフェストと元のマニフェストによって参照されたオブジェクトのセットに対応するコンテンツ部分を更新し、更新されたコンテンツ部分についての更新マニフェストを生成する。更新マニフェストは、元のマニフェストへの参照及び更新オブジェクトのセットへの参照を含み、更新オブジェクトのセットは、コンテンツ部分と更新されたコンテンツ部分との差分を示す。そして、システムは、更新マニフェスト及び更新オブジェクトのセットを発行し、それにより、要求者が更新されたコンテンツ部分について更新マニフェスト及び更新マニフェストのセットを取得し、更新マニフェスト及び更新オブジェクトのセットを使用して、更新されたコンテンツ部分を構築するのを容易とする。
【０００６】
この実施形態の変形例において、元のマニフェストは、それらのハッシュベースの名称によってオブジェクトのセットを参照する。
【０００７】
さらなる変形例において、更新マニフェストは、元のマニフェストに対する差分を示す差分符号化され、それにより、ハッシュベースの名称により、更新されたコンテンツ部分に対応するコンテンツオブジェクトのセットを参照する新たなマニフェストの構築を容易とする。
【０００８】
さらなる変形例において、元のマニフェストは階層的であり、差分符号化された更新マニフェストは、元のマニフェスト階層の変更されていない分岐を参照する。
【０００９】
この実施形態の変形例において、更新オブジェクトは、コンテンツ部分に対して行われた変更と、コンテンツ部分内の変更の対応するバイト位置とを含む。
【００１０】
さらなる変形例において、変更のバイト位置は、更新オブジェクトの名称に符号化される。
【００１１】
この実施形態の変形例において、更新オブジェクトは、変更されたオブジェクトのセットと、コンテンツ部分に対応するオブジェクトのセット内の変更されたオブジェクトの対応するシーケンス番号とを含む。
【００１２】
さらなる変形例において、変更されたオブジェクトのシーケンス番号は、変更されたオブジェクトの名称に符号化される。
【００１３】
この実施形態の変形例において、元のマニフェスト及び／又は更新マニフェストは暗号化署名される。
【００１４】
この実施形態の変形例において、ネットワークは、コンテンツ中心ネットワーク（ＣＣＮ）であり、オブジェクトのセットは、標準ＣＣＮコンテンツオブジェクトである。
【図面の簡単な説明】
【００１５】
【図１】図１は、本発明の実施形態にかかるネットワークの例示的なアーキテクチャを図示している。
【図２】図２は、マニフェストのフォーマットを図示する図である。
【図３】図３は、本発明の実施形態にかかる例示的な差分ベースのデータ符号化方式を図示する図である。
【図４】図４は、本発明の実施形態にかかる例示的な差分ベースのデータ符号化方式を図示する図である。
【図５】図５は、本発明の実施形態にかかる例示的な差分ベースのデータ符号化方式を図示する図である。
【図６】図６は、本発明の実施形態にかかる例示的な差分ベースのデータ符号化方式を図示する図である。
【図７】図７は、本発明の実施形態にかかる例示的な差分ベースのデータ符号化方式を図示する図である。
【図８】図８は、本発明の実施形態にかかる差分ベースのコンテンツ配信を可能とするコンテンツ更新の例示的なプロセスを図示するフローチャートである。
【図９】図９は、本発明の実施形態にかかる、更新されたコンテンツ部分をダウンロードして構築するコンテンツ更新の例示的なプロセスを図示するフローチャートである。
【図１０】図１０は、本発明の実施形態にかかる差分ベースのコンテンツネットワーキングを可能とする例示的なシステムを図示している。
【発明を実施するための形態】
【００１６】
図面において、同様の参照符号は、同一の図要素を指す。
【００１７】
本発明の実施形態は、差分ベースのコンテンツネットワーキングを実装するシステム及び方法を提供する。より具体的には、ファイルが更新されたとき、更新されたファイルの全体を発行する代わりに、そのローカルキャッシュにより古いバージョンのファイルを有する受信者が差分をダウンロードする必要があるにすぎず、より古いバージョンのファイルに対する差分を適用することによって更新されたファイルを構築することができるように、発行者は差分のみを発行する。いくつかの実施形態において、マニフェスト（また、安全カタログ又は集約署名オブジェクトと称される）は、差分ベースの符号化を容易とするのに使用可能である。差分についてのマニフェストは、より古いバージョンのマニフェスト及び差分オブジェクトを参照する。いくつかの実施形態において、マニフェスト自体は、差分符号化されることができる。
【００１８】
一般に、ＣＣＮは、インタレスト及びコンテンツオブジェクトという２つの種類のメッセージを使用する。インタレストは、コンテンツオブジェクトの「名称」又は「ＣＣＮ名称」とも称される階層的に構造化された可変長識別子（ＨＳＶＬＩ）を伝搬し、そのオブジェクトについてのリクエストとして機能する。ネットワーク要素（例えば、ルータ）が同じ名称についての複数のインタレストを受信した場合、それらのインタレストを集約することができる。マッチングコンテンツオブジェクトとインタレストの経路に沿ったネットワーク要素は、インタレストを満たす、そのオブジェクトをキャッシュして返送することができる。コンテンツオブジェクトは、インタレストの原点までインタレストの逆経路をたどる。コンテンツオブジェクトは、他の情報のうち、ペイロードにＨＳＶＬＩを結合するために使用される同じＨＳＶＬＩ、オブジェクトのペイロード及び暗号情報を含む。
【００１９】
本開示において使用される用語は、一般に、以下のように定義される（それらの解釈は、そのようなものに限定されない）。
【００２０】
「ＨＳＶＬＩ」：名称とも称される階層的に構造化された可変長識別子である。それは、可変長のオクテット文字列とすることができる名称要素の順序付けられたリストである。人が読み取り可能な形態において、ｃｃｎｘ：／ｐａｔｈ／ｐａｒｔなどのフォーマットにおいて表されることができる。また、ＨＳＶＬＩは、人が読み取り可能としなくてもよい。上述したように、ＨＳＶＬＩは、コンテンツを指し、それらがコンテンツについての組織的構造を表し且つ人に対して少なくとも部分的に有意とすることができることが望ましい。ＨＳＶＬＩの個々の要素は、任意長を有することができる。さらにまた、ＨＳＶＬＩは、明確に区切られた要素を有することができ、数バイトの任意のシーケンスを含むことができ、人が読み取り可能な特性に限定されるものではない。最長接頭辞一致検索は、ＨＳＶＬＩを有するパケット転送において重要である。例えば、「／ｐａｒｃ／ｈｏｍｅ／ｂｏｂ」におけるインタレストを示すＨＳＶＬＩは、「／ｐａｒｃ／ｈｏｍｅ／ｂｏｂ／ｔｅｓｔ．ｔｘｔ」及び「／ｐａｒｃ／ｈｏｍｅ／ｂｏｂ／ｂａｒ．ｔｘｔ」の双方と一致する。名称要素の数を考慮すると、最長一致は、最も特異的であることから最良であると考えられる。ＨＳＶＬＩの詳細な記述は、代理人整理番号ＰＡＲＣ−２００９０１１５Ｑ、「ＳＹＳＴＥＭ  ＦＯＲ  ＦＯＲＷＡＲＤＩＮＧ  Ａ  ＰＡＣＫＥＴ  ＷＩＴＨ  Ａ  ＨＩＥＲＡＲＣＨＩＣＡＬＬＹ  ＳＴＲＵＣＴＵＲＥＤ  ＶＡＲＩＡＢＬＥ−ＬＥＮＧＴＨ  ＩＤＥＮＴＩＦＩＥＲ」と名称が付された発明者Ｖａｎ  Ｌ．Ｊａｃｏｂｓｏｎ及びＪａｍｅｓ  Ｄ．Ｔｈｏｒｎｔｏｎによる２００９年９月２３日に提出された米国特許第８，１６０，０６９号明細書にみることができる。
【００２１】
「インタレスト」：コンテンツオブジェクトについてのリクエストである。インタレストは、ＨＳＶＬＩ名称接頭辞と、同じ名称接頭辞を有する複数のオブジェクトから選択するのに使用可能な他の任意のセレクタとを特定する。名称がインタレストの名称接頭辞（及び必要に応じて発行者鍵−ＩＤ一致などの他の要求されたパラメータ）と一致するコンテンツオブジェクトはどれも、インタレストを満たす。
【００２２】
「コンテンツオブジェクト」：インタレストに応答して送信されたデータオブジェクトである。暗号化署名を介して一体に結合されたＨＳＶＬＩ名称及びコンテンツペイロードを有する。必要に応じて、全てのコンテンツオブジェクトは、コンテンツオブジェクトのＳＨＡ−２５６ダイジェストから形成された暗黙の端末名称要素を有する。１つの実施形態において、暗黙のダイジェストは、ワイヤ上で転送されず、必要に応じて、各ホップにおいて算出される。コンテンツオブジェクトは、コンテンツ要素又はコンテンツ部分と同じではないことに留意されたい。コンテンツオブジェクトは、ＣＣＮプロトコルのもとで具体的に定義された構造を有し、その大きさは、通常、ネットワークパケットのサイズ（ワイドエリアネットワークについての１５００バイト及び断片化ローカルエリアネットワークについての８０００バイト程度）であるのに対して、コンテンツ要素は、ウェブページの埋め込みオブジェクトとすることができる任意の種類のファイルを参照するのに使用される一般的な用語である。例えば、ウェブページは、画像、映像ファイル又は対話型要素などの多数の埋め込まれたオブジェクトを含んでもよい。各埋め込みオブジェクトは、コンテンツ要素又はコンテンツ部分であり、複数のコンテンツオブジェクトにまたがることがある。
【００２３】
上述したように、ＨＳＶＬＩは、コンテンツの一部を示し、階層的に構造化され、最も一般的なレベルから最も特定のレベルまで順序付けられた連続する要素を含む。各ＨＳＶＬＩの長さは、固定されていない。コンテンツ中心ネットワークにおいて、従来のＩＰネットワークとは異なり、パケットは、ＨＳＶＬＩによって識別されることができる。例えば、「ａｂｃｄ／ｂｏｂ／ｐａｐｅｒｓ／ｃｃｎ／ｎｅｗｓ」は、コンテンツの名称とすることができ、対応するパケット、すなわち、「ＡＢＣＤ」と名称付けられた組織における「Ｂｏｂ」と名称付けられたユーザについて新聞の「ｃｃｎ」コレクションからの「ｎｅｗｓ」記事を識別する。コンテンツの一部を要求するために、ノードは、コンテンツの名称によってそのコンテンツにおけるインタレストを表現する（例えば、ブロードキャストする）。コンテンツの一部のインタレストは、コンテンツ名称又は識別子にしたがったコンテンツについてのクエリであってもよい。コンテンツは、ネットワーク内で利用可能な場合、コンテンツを記憶する任意のノードから要求ノードに対して返送される。ルーティングインフラストラクチャは、情報を有する可能性の高い有望なノードにインタレストをインテリジェントに伝播し、インタレストメッセージによって通過する逆経路に沿って利用可能なコンテンツを伝搬する。基本的に、コンテンツオブジェクトは、インタレストメッセージによって残されたブレッドクラムに続き、それゆえに要求ノードに到達する。
【００２４】
図１は、本発明の実施形態にかかるネットワークの例示的なアーキテクチャを図示している。この例において、ネットワーク１８０は、ノード１００−１４５を含む。ネットワーク内の各ノードは、１つ以上の他のノードに接続されている。ネットワーク接続１８５は、そのような接続の例である。ネットワーク接続は、実線として示されているが、各線は、他のノードに１つノードを結合することができるサブネットワーク又はスーパーネットワークを表すこともできる。ネットワーク１８０は、コンテンツ中心のローカルネットワーク、スーパーネットワーク又はサブネットワークとすることができる。これらのネットワークのそれぞれは、１つのネットワーク内のノードが他のネットワーク内のノードに到達することができるように、相互接続されることができる。ネットワーク接続は、広帯域、無線、電話、衛星又は任意の種類のネットワーク接続とすることができる。ノードは、インタレストを生成するか又はコンテンツを発信することができるコンピュータシステム、ユーザを表すエンドポイント及び／又は装置とすることができる。
【００２５】
本発明の実施形態によれば、消費者は、コンテンツの一部についてのインタレストを生成することができ、ネットワーク１８０内のノードに対してそのインタレストを転送することができる。コンテンツの一部は、ネットワークの内部又は外部に位置することができる発行者又はコンテンツプロバイダによってネットワーク１８０内のノードに記憶されることができる。例えば、図１において、コンテンツの一部におけるインタレストは、ノード１０５において発生する。コンテンツがノードにおいて利用可能でない場合、インタレストは、第１のノードに結合された１つ以上のノードに流れる。例えば、図１において、インタレストは、利用可能なコンテンツを有していないノード１１５に流れる（インタレストフロー１５０）。次に、インタレストは、ノード１１５から、同様にコンテンツを有していないノード１２５に流れる（インタレストフロー１５５）。そして、インタレストは、利用可能なコンテンツを有するノード１３０に流れる（インタレストフロー１６０）。そして、コンテンツオブジェクトの流れは、コンテンツが配信されるノード１０５に到達するまでその逆経路を引き返す（コンテンツフロー１６５、１７０及び１７５）。認証などの他のプロセスは、コンテンツの流れに含まれることができる。
【００２６】
ネットワーク１８０において、コンテンツホルダ（ノード１３０）とインタレスト生成ノード（ノード１０５）との間の経路における任意数の中間ノード（ノード１００−１４５）は、ネットワークを介して移動するのにともない、コンテンツのローカルコピーをキャッシュするのに参加することができる。キャッシングは、ローカルにキャッシュされたコンテンツに対するアクセスを暗黙的に共有することによって他の加入者の近傍に位置する第２の加入者についてのネットワーク負荷を軽減する。
【００２７】
ＣＣＮにおいて、マニフェスト（安全カタログ又は集約署名オブジェクトと時々称される）は、データの集合又はデータの単一部分を表すのに使用される。例えば、ＣＣＮノードは、多数の映像ファイルを含む映像コレクションを含むことができ、映像コレクションのマニフェストは、映像ファイルに対応するコンテンツオブジェクトを識別する順序付きリストとすることができる。代わりに、各映像ファイルは、特定の映像ファイルに対応するコンテンツオブジェクトを識別する順序付きリストを含む独自のマニフェストを有していてもよい。コンテンツオブジェクトのサイズ制限のために、映像ファイルは、多くの場合、多くのコンテンツオブジェクトにまたがるということに留意されたい。
【００２８】
マニフェストにおいて、各コンテンツオブジェクトは、その名称及び対応するダイジェストによって識別され、ダイジェストは、コンテンツオブジェクトの（多くの場合、ハッシュ関数ＳＨＡ−２５６などの暗号化ハッシュ関数を使用して算出された）ハッシュ値である。いくつかの実施形態において、各コンテンツオブジェクトはまた、コンテンツが最後に変更された時間を示す変更時間によって識別される。図２は、マニフェストのフォーマットを図示する図である。
【００２９】
図２において、マニフェスト２００は、コレクション名称２０４及び以下のうちの１つ以上によって識別されるコンテンツオブジェクトの順序付きリストを含む。コンテンツオブジェクト名称２３０．１−２３０．ｎ、ダイジェスト２３２．１−２３２．ｎ及び変更時間２３４．１−２３４．ｎ。ダイジェスト２３２．１−２３２．ｎは、名称２３０．１−２３０．ｎによってそれぞれ識別されるコンテンツオブジェクトのハッシュ値を含む。
【００３０】
図２に示されるように、マニフェスト２００は、コレクションで表される各コンテンツオブジェクトについての名称及び対応するダイジェストを示すことができる。ファイルの異なるチャンクを表すコンテンツオブジェクトは、同じベース名称を有するが異なるチャンク番号を有することができることに留意されたい。また、図２に示されるように、マニフェスト２００はまた、コレクションで表される各コンテンツオブジェクトについての変更時間を含むことができる。変更時間フィールドの使用は、実行される基礎となるアプリケーション又はサービスに依存する。さらに、順序付きリストに加え、マニフェストはまた、コンテンツオブジェクトのみならずコンテンツオブジェクトのネストされたコレクションを含む同期ツリーとして構成されることができる。
【００３１】
いくつかの実施形態において、マニフェストは、符号化されたＪＳＯＮ（ＪａｖａＳｃｒｉｐｔ（登録商標）のオブジェクト表記）又はＴＬＶ（種類−長さ−値）とすることができる十分に形成された構造であるそのペイロードを有する署名されたコンテンツオブジェクトとすることができる。
【００３２】
ファイル更新の場合の不要なデータ転送量を削減するために、本発明の実施形態は、差分ベースのコンテンツネットワーキング（ＤＢＣＮ）を実装する。より具体的には、ＤＢＣＮは、データ転送量を削減するためにバージョン間の差分を使用し、発行者がコンテンツ部分の新たなバージョンを発行したとき、更新されたコンテンツ部分全体の発行の代わりに、システムは、差分を発行する必要があるにすぎなくすることができる。例えば、ユーザが１ＫＢ（キロバイト）の変更を有する１０ＭＢ（メガバイト）の映像ファイルを更新するとき、システムは、元の１０ＭＢのファイル及び１ＫＢの差分ファイルの組み合わせとして新たに更新されたファイルを符号化する。１０ＭＢの元のファイルを既に有する全ての遠隔ユーザは、ここでは１ＫＢの差分ファイルをダウンロードする必要があるにすぎず、１ＫＢの差分ファイル及び１０ＭＢの元のファイルに含まれる情報を使用して更新されたファイルを構築することが可能である。
【００３３】
他のバージョンのファイルシステムと同様に、ＤＢＣＮにおいて、元のコンテンツ部分又はファイル及び一連の差分のグラウンドトゥルースがある。いくつかの点において、新たなグラウンドトゥルースは、多数の差分を必要とするのを避けるために記載されてもよい。実装に応じて、異なるＤＢＣＮシステムは、新たなグラウンドトゥルースを書き込むための又はコンテンツの転送を最適化するために差分を統合するための異なる戦略を有していてもよい。
【００３４】
コンテンツの安全且つ効率的な配信を保証するために、ＣＣＮは、時々、集約署名を使用する。より具体的には、それぞれ及び全てのコンテンツオブジェクトに署名する代わりに、発行者は、安全カタログ又はマニフェストとも称される集約署名オブジェクト（ＡＳＯ）に対する暗号化署名を制限することができる。ＤＢＣＮは、バージョンの違いを効率的に符号化するためにマニフェスト（又は安全カタログ）を使用する。いくつかの実施形態において、ＤＢＣＮは、現在のバージョンのマニフェストに以前のバージョンのマニフェストを参照し、その後、２つのバージョン間の差分を示すことにより、バージョンの違いを符号化する。したがって、受信者は、（そのローカルキャッシュ又はコンテンツプロバイダのいずれかから）以前のバージョンを取得して以前のバージョンに差分を適用するために、マニフェストに含まれる情報を使用して新たなバージョンのマニフェストをダウンロードすることができる。バージョンの違いは、これらに限定されるものではないが、バイト範囲の表示、バイトオフセットの表示、シーケンス番号に基づくコンテンツオブジェクトの表示、自己検証名称に基づくコンテンツオブジェクトの表示、及び、マニフェストの差分を含む多くの異なる方法で符号化されることができる。バイト範囲の表示の実装について、システムは、差分のバイト範囲を識別し、識別されたバイト範囲及び対応する新たなバイトを新たなバージョンのマニフェストに含む。バイトオフセットの表示の実装について、各コンテンツオブジェクトは、そのバイトオフセットによってラベル付けされる。新たなバージョンのマニフェストは、以前のバージョンにおける差分コンテンツオブジェクトを配置する場所を示すそれらのバイトオフセットによってラベル付けされた差分コンテンツオブジェクトを参照する。コンテンツオブジェクトの表示について、システムは、変更されたコンテンツオブジェクトのシーケンス番号を識別し、識別されたコンテンツオブジェクトのシーケンス番号及び新たなコンテンツオブジェクトを新たなバージョンのマニフェストに含む。コンテンツオブジェクトの自己検証名称に基づく実装について、各バージョンのマニフェストは、各コンテンツオブジェクトの自己検証名称（ハッシュ）を示しており、それらの自己検証名称間の差分は、バージョンの違いを示している。マニフェスト差分実装について、マニフェスト自体は、符号化された差分である。
【００３５】
図３は、本発明の実施形態にかかる例示的な差分ベースのデータ符号化方式を図示する図である。図３において、（バイナリ、テキスト、画像、映像、音声などの任意の種類のコンテンツを表すことができる）データファイル３０６は、多数のチャンクに分割されることができ、各チャンクは、ペイロードＣＣＮコンテンツオブジェクトを形成する。図３に示される例において、コンテンツオブジェクト３０４のセットは、テキストドキュメント（ｐａｐｅｒ．ｄｏｃ）とすることができるデータファイル３０６にまとめて対応する８個のコンテンツオブジェクトを含む。いくつかの実施形態において、データファイル３０６は、同じサイズのチャンクに分割され、各チャンクは、標準コンテンツオブジェクトに適合する。いくつかの実施形態において、システムは、各コンテンツオブジェクトのペイロードがデータ重複排除アルゴリズムの出力であるように、データファイル３０６をチャンクに分割するデータ重複排除技術を使用することができる。チャンクサイズは、使用されるデータ及び重複排除技術に応じて、１５００バイトから６４ＫＢまで変化することができることに留意されたい。大きなチャンクサイズが使用される場合、システムは、ネットワーク内の断片化を必要とすることがあることに留意されたい。したがって、高いパケット損失率がある場合、より大きなチャンクサイズは、あまり望ましくない。
【００３６】
図３に示される例において、従来のＣＣＮシステムのように、各コンテンツオブジェクトは、そのシーケンス番号によって名称付けられる。より具体的には、コンテンツオブジェクトは、バージョン番号が続き、その後にシーケンス番号が続く同じＣＣＮベース名称を有する。例えば、第１のコンテンツオブジェクトは、「／ａｂｃ／ｐａｐｅｒ．ｄｏｃ／ｖ０／ｓ０」としてＣＣＮ名称を有することができ、「／ａｂｃ／ｐａｐｅｒ．ｄｏｃ」は、ＣＣＮベース名称であり、ｖ０は、バージョン０を示し、ｓ０は、このコンテンツオブジェクトが第１のチャンクであることを示す。
【００３７】
ＤＢＣＮを可能とするために、いくつかの実施形態において、システムは、コンテンツオブジェクト３０４のセットについてのマニフェスト３０２を生成する。マニフェスト３０２の名称は、「／ａｂｃ／ｐａｐｅｒ．ｄｏｃ／ｖ０」などのＣＣＮベース名称とすることができ、ｖ０は、このマニフェストが第１のバージョンのマニフェストであることを示す。ＣＣＮにおいて、各コンテンツオブジェクトは、コンテンツオブジェクトのＳＨＡ−２５６ハッシュとすることができる暗黙のコンテンツオブジェクトハッシュを有する。コンテンツオブジェクトハッシュの生成は、検索されたコンテンツオブジェクトが所望のコンテンツオブジェクトである旨を暗号検証によるマッチングコンテンツオブジェクトの正確な検索を可能とする。いくつかの実施形態において、マニフェスト３０２は、順次、各構成コンテンツオブジェクトのコンテンツオブジェクトハッシュを列挙する。したがって、ノードは、１つ以上のコンテンツオブジェクトハッシュを含むことができるマニフェスト３０２を要求することによってデータファイル３０６を要求することができる。ノードがマニフェスト３０２をダウンロードすると、そのコンテンツオブジェクトハッシュに基づいて、各コンテンツオブジェクトを個別に取得することができる。さらに、マニフェスト３０２が、発行者が生成した署名を含む場合、受信ノードは、マニフェスト３０２の署名を検証することにより、取得した全てのコンテンツオブジェクトを認証することができる。
【００３８】
発行者がセグメント３０８及び３１０において変更を行うことによってデータファイル３０６を更新したとき、発行者は、差分コンテンツオブジェクト３１４のセットと、生成された差分コンテンツオブジェクトについての（名称「／ａｂｃ／ｐａｐｅｒ．ｄｏｃ／ｖ１」を有することができる）更新マニフェスト３１２とを生成する。そして、発行者は、更新マニフェスト３１２及び差分コンテンツオブジェクト３１４のセットを発行することによって新たなバージョンを発行することができる。いくつかの実施形態において、差分コンテンツオブジェクト３１４のセットは、新たなバージョンを得るためにより古いバージョンを「パッチ」することができたように、バージョン０からバージョン１へのバイナリ差分の構築されたリストを含む。ここで用語「バイナリ差分」は、差分のバイト位置を測定し、古いバイトを置き換える（多かれ少なかれ元のバイトとすることができる）新たなバイトを示すことを意味することに留意されたい。テキストベースのデータの場合、システムは、標準テキスト差分を使用することができる。いくつかの実施形態において、差分コンテンツオブジェクト３１４のセットは、（セグメント３０８及び３１０などの）変化のバイト範囲情報と、バイト範囲によって指定された古いバイトを置き換えるのに使用される新たなバイトとを含む。例えば、セグメント３０８は、１Ｋデータの変化を示す、５Ｋバイト位置から始まり、６Ｋバイト位置で終了することができる。したがって、差分コンテンツオブジェクト３１４のセットは、データファイル３０６における５Ｋ−６Ｋバイト範囲と、５Ｋと６Ｋバイト位置の間に挿入されることになる任意のバイトとを指定するエントリを含む。被った変化量に応じて、差分オブジェクトコンテンツ３１４のセットは、１つ以上のコンテンツオブジェクトを含むことができる。これらの差分コンテンツオブジェクトは、「／ａｂｃ／ｐａｐｅｒ．ｄｏｃ／ｖ１／ｓ０」及び「／ａｂｃ／ｐａｐｅｒ．ｄｏｃ／ｖ１／ｓ１」などの連続名称を有することができることに留意されたい。ここで、ｖ１は、バージョン１を示し、ｓ０／ｓ１は、各差分コンテンツオブジェクトのチャンクシリアル番号を示している。図３に示される例において、バージョン間のバイナリ差分は、１つのコンテンツオブジェクトに含まれている。
【００３９】
いくつかの実施形態において、更新マニフェストへの署名が単独で全ての差分コンテンツオブジェクトの認証を可能とするように、更新マニフェストは、差分コンテンツオブジェクトのコンテンツオブジェクトハッシュを列挙する。
【００４０】
従来のマニフェストと同様に、更新マニフェスト３１２は、差分コンテンツオブジェクト３１４のセットを含むその構成コンテンツオブジェクトへの参照を含む。さらに、更新マニフェスト３１２は、元のマニフェスト３０２への参照を含む。したがって、ノードが既に古いバージョンのファイルをそのキャッシュ内に有している場合、更新のダウンロードを必要とするのみであり、更新マニフェスト３１２及び差分コンテンツオブジェクト３１４のセットをダウンロードすることを意味する。更新マニフェスト３１２に含まれる情報に基づいて、ノードは、元のマニフェスト３０２、それゆえにコンテンツオブジェクト３１４のセットを配置することができ、その後、新たなバージョンのファイルを得るために、差分コンテンツオブジェクト３１４のセットに含まれる差分を元のコンテンツオブジェクト３０４のセットに適用することができる。ノードが古いバージョンのファイルを有しない場合、元のマニフェスト３０２を使用して古いファイルを最初に取得した後に差分を適用することができる。
【００４１】
このバイト範囲の表示方式の利点は、差分コンテンツオブジェクトが差分バイトとそれらの差分が以前のバージョンにおいて発生した場所について記載する注釈のみを含むということである。追加の重複データは、差分コンテンツオブジェクトに含まれていない。しかしながら、多くの不連続変化がある場合には、オーバーヘッド量を高くすることができる。変更がバイト挿入を含む場合、それらは、コンテンツオブジェクトの右シフトを引き起こす可能性があることに留意されたい。一方、排除動作について、単一の空のコンテンツオブジェクトを使用してこれらのバイトを容易に省くことができる。
【００４２】
図４は、本発明の実施形態にかかる例示的な差分ベースのデータ符号化方式を図示する図である。図３のように、図４において、データファイル４０６は、コンテンツオブジェクト４０４のセットのペイロードを構成する多くのチャンクに分割される。しかしながら、図３とは異なり、図４に示される例において、コンテンツオブジェクト４０４のセットは、シーケンス番号によって名称付けられておらず、代わりに、それらのバイトオフセットによって名称付けられる。換言すれば、コンテンツオブジェクトは、その第１のバイトのバイト位置に基づいて名称付けられる。例えば、第１のコンテンツオブジェクトは、ゼロバイトオフセットを有し、そのＣＣＮ名称は、「／ａｂｃ／ｐａｐｅｒ．ｄｏｃ／ｖ０／０Ｋ」とすることができる。図４において、マニフェスト４０２は、マニフェスト３０２と同様であり、コンテンツオブジェクト４０４のセットについてのコンテンツオブジェクトハッシュのリストを含む。
【００４３】
図３におけるマニフェスト３１２のように、更新マニフェスト４１２（「／ａｂｃ／ｐａｐｅｒ．ｃｏｍ／ｖ１」）は、元のマニフェスト４０２及び差分コンテンツオブジェクト４１４のセットを参照する。しかしながら、差分コンテンツオブジェクトがそれらのチャンク番号によって名称付けられた図３とは異なり、図４において、差分コンテンツオブジェクトは、各差分コンテンツオブジェクトに含まれるバイトが前のバージョンに配置する必要があることを示すそれらのバイトオフセットによって名称付けられる。例えば、図４において、変更は、データファイル４０６内のセグメント４０８において生じ、セグメント４０８についてのバイトオフセットは５ＫＢである。したがって、データファイル４０６の５ＫＢの位置に挿入されるバイトを含む差分コンテンツオブジェクトは、「／ａｂｃ／ｐａｐｅｒ．ｄｏｃ／ｖ１／５Ｋ」と名称付けられ、ｖ１はバージョン１を示し、５ＫＢは、このコンテンツオブジェクトによって伝搬されるバイトのバイトオフセットを示している。同様に、データファイル４０６における１７ＫＢ位置（セグメント４１０）に挿入されるバイトを含むコンテンツオブジェクトは、「／ａｂｃ／ｐａｐｅｒ．ｄｏｃ／ｖ１／１７Ｋ」と名称付けられることができる。いくつかの実施形態において、各差分コンテンツオブジェクトのペイロードはまた、差分コンテンツオブジェクトが「挿入」又は「置き換え」又は「削除」操作を表すかどうかを示す情報を含む。「削除」操作のために対応するコンテンツオブジェクトを空とすることができることは容易に理解できる。
【００４４】
図４に示される例において、新たなバージョンのファイルの構築プロセスは、図３に示されたものと同様である。いくつかの実施形態において、複数の共存バージョンがある場合、ノードは、マニフェストツリーの後順序移動を実行し、データファイルの間隔グラフを維持することにより、バージョンを構築することができる。毎回その直前バージョンからのバージョンを構築する必要があるため、このファイルの構築プロセスは複雑になることがある。バージョン数が大きい場合、これは面倒なプロセスであり得る。
【００４５】
図５は、本発明の実施形態にかかる例示的な差分ベースのデータ符号化方式を図示する図である。図３に示されたもののように、図５において、データファイル５０６は、コンテンツオブジェクト５０４のセットのペイロードを構成する多くのチャンクに分割され、これらのコンテンツオブジェクトは、それらのチャンク番号によって名称付けられる。また、図３に示されるマニフェスト３０２のように、マニフェスト５０２は、コンテンツオブジェク５０４のセットについてのコンテンツオブジェクトハッシュのリストを含む。図３に示されるマニフェスト３１２のように、更新マニフェスト５１２（「／ａｂｃ／ｐａｐｅｒ．ｃｏｍ／ｖ１」）は、元のマニフェスト５０２及び差分コンテンツオブジェクト５１４のセットを参照する。しかしながら、図３に示されるものとは異なり、図５において、差分コンテンツオブジェクト５１４のセットは、変更のバイト範囲情報を含んでいない。代わりに、差分コンテンツオブジェクト５１４のセットは、古いファイルにおける変更されたコンテンツオブジェクトを交換するために使用することができるコンテンツオブジェクトを含む。より具体的には、変更が特定のコンテンツオブジェクトにおいて生じた場合、発行者は、元のコンテンツオブジェクトを置き換えるのに使用可能な新たなコンテンツオブジェクトを生成する。図５に示される例において、変更は、シーケンス番号１（チャンク１）を有するコンテンツオブジェクトに対応するセグメント５０８において生じ、他の変更は、チャンク４に対応するセグメント５１０において生じる。したがって、データファイル５０６の更新時に、発行者は、以前のバージョンのチャンク１及び４を置き換えるのに使用可能な２つの差分コンテンツオブジェクトを生成する。差分コンテンツオブジェクトは、それらが置き換えを意図するコンテンツオブジェクトのチャンク番号によって名称付けられることに留意されたい。
【００４６】
多くの共存バージョンがある場合、ノードは、マニフェストツリーの後順序移動を実行することによってバージョンを構築することができ、コンテンツオブジェクトのシーケンス番号の最右部の発生を使用するのみである。
【００４７】
バイト範囲を算出する必要がないため、このコンテンツオブジェクトのシーケンス番号に基づく差分符号化機構は、実装を容易とすることができる。さらに、１つのみがコンテンツオブジェクトレベルにおけるバージョン間の違いを知る必要があるので、異なるバージョンのファイルの構築は容易とすることができる。しかしながら、差分は、コンテンツオブジェクトレベルにおいてここで符号化されることから、各コンテンツオブジェクトは、不要なデータ重複を発生することがある以前のコンテンツオブジェクトを置き換える全てのバイトを含む必要がある。例えば、少数のバイト（１２８バイトなど）のみが８ＫＢ大きくすることができるコンテンツオブジェクトにおいて変更されたとしても、新たなバージョンにおける全ての８ＫＢのバイトは、置き換えコンテンツオブジェクトに含まれる必要がある。これは、およそ７．９ＫＢの重複データをもたらすことができる。
【００４８】
図６は、本発明の実施形態にかかる例示的な差分ベースのデータ符号化方式を図示する図である。図６において、データファイル６０６は、コンテンツオブジェクト６０４のセットのペイロードを構成する多くのチャンクに分割される。いくつかの実施形態において、チャンクは、データ重複排除機構の出力とすることができ、４ＫＢから１６ＫＢに及ぶ可変サイズを有することができる。しかしながら、図３とは異なり、図６に示される例において、コンテンツオブジェクト６０４のセットは、それらのシーケンス番号によって名称付けられず、代わりに、それらには自己検証ハッシュベースの名称が与えられる。換言すれば、各コンテンツオブジェクトは、その暗号化ハッシュによって名称付けられる。図６に示される例において、ハッシュ値は、表示を容易とするために短縮されていることに留意されたい。実際には、それらは、はるかに長い（３２バイトなど）の文字列を含む。いくつかの実施形態において、各コンテンツオブジェクトは、そのＳＨＡ−２５６ダイジェストによって名称付けられる。いくつかの実施形態において、それらの特異性に起因して、同じコンテンツ部分についてのコンテンツオブジェクトは、コンテンツオブジェクトが「／ａｂｃ／ｐａｐｅｒ．ｄｏｃ／＜ｃｈｕｎｋ＿ｈａｓｈ＞」と名称付けられることができるように、同じ名称空間のもとに保持されることに留意されたい。バージョン番号の言及はなく、全ての異なるバージョンからのチャンクは、同じ名称空間のもとに保持されることに留意されたい。異なる実施形態において、全てのチャンクは、「／ａｂｃ／＜ｃｈｕｎｋ＿ｈａｓｈ＞」などのより高レベルのチャンクリポジトリのもとに保持されることができる。
【００４９】
図３に示されたマニフェスト３０２のように、マニフェスト６０２は、コンテンツオブジェクト６０４についてのコンテンツオブジェクトハッシュを順次列挙する。チャンク名称は、バージョン管理されないものの、マニフェスト６０２には、「／ａｂｃ／ｐａｐｅｒ．ｄｏｃ／ｖ０」などのバージョン管理された名称が与えられる。ここで、ｖ０はバージョン０を示している。マニフェスト６０２のエントリがそれらをみつける必要がある程度までコンテンツオブジェクトを参照する必要があるのみであることに留意されたい。例えば、システムが「／ａｂｃ／ｐａｐｅｒ．ｄｏｃ」のもとにチャンクを記憶する場合、マニフェスト６０２は、（第１のチャンクについてのエントリなど）１つの場所でこれを述べることができ、その後、残りのエントリは、ちょうど３２バイトのハッシュ名称である。
【００５０】
発行者がセグメント６０８及び６１０において変更を行うことによってデータファイル６０６を更新するとき、発行者は、更新されたファイルについてのコンテンツオブジェクトの新たなセットを生成する。コンテンツオブジェクトの新たなセットは、元のコンテンツオブジェクト６０４のセット及び差分コンテンツオブジェクト６１４のセットにおける全ての変更されないコンテンツオブジェクトを含む。上述したように、全てのコンテンツオブジェクトは、バージョン番号には言及することなく、同じ名称空間のもとに配置されていることに留意されたい。発行者はまた、新たなコンテンツオブジェクトのセットについてのマニフェスト６１２（／ａｂｃ／ｐａｐｅｒ．ｄｏｃ／ｖ１）を生成する。マニフェスト６０２のように、マニフェスト６１２は、（Ａ１Ｂ、０８Ｄ、１１７、Ｃ７Ｅ、２９５及び０９３などの）変更されないコンテンツオブジェクトのハッシュ及び（ＡＢＤ及び７７２などの）差分コンテンツオブジェクトのハッシュを含む新たなコンテンツオブジェクトのセットのコンテンツオブジェクトハッシュを列挙する。図３−図５に示された方式とは異なり、現在の方式において、古いバージョンのマニフェストを参照する代わりに、マニフェスト６１２は、古いバージョンの変更されないコンテンツオブジェクトを直接参照することに留意されたい。既に元のコンテンツオブジェクト６０４のセットを有する受信ノードは、マニフェスト６１２及び差分コンテンツオブジェクト６１４のセットをダウンロードすることができる。マニフェスト６１２がコンテンツオブジェクトハッシュを順次列挙することから、受信ノードは、差分コンテンツオブジェクトを適切な位置に配置することによって新たなバージョンのファイルを構築することができる。元のコンテンツオブジェクト６０４のセットを有しないノードについて、マニフェスト６１２に含まれるコンテンツオブジェクトハッシュを使用して全体の新たなコンテンツオブジェクトのセットをダウンロードすることができる。
【００５１】
このハッシュ名称ベースの方式の利点は、新たなバージョンのマニフェストがもはや古いバージョンのマニフェストを参照する必要がないということである。しかしながら、全てのチャンクのコンテンツオブジェクトハッシュを列挙する必要があるため、マニフェスト自体は大きくなる。
【００５２】
図７は、本発明の実施形態にかかる例示的な差分ベースのデータ符号化方式を図示する図である。図６に示される例のように、図７において、データファイル７０６は、コンテンツオブジェクト７０４のセットのペイロードを構成する多くのチャンクに分割される。また、図６に示された例のように、コンテンツオブジェクトは、それらの暗号化ハッシュ名称によって名称付けられる。図６に示されたマニフェスト６０２のように、マニフェスト７０２（／ａｂｃ／ｐａｐｅｒ．ｄｏｃ／ｖ０）は、コンテンツオブジェクト７０４のセットについてのコンテンツオブジェクトハッシュを順次列挙する。コンテンツオブジェクトについてのコンテンツオブジェクトハッシュは、コンテンツオブジェクトのＳＨＡ−２５６ハッシュを含むことができるということに留意されたい。
【００５３】
図６に示される例のように、発行者がセグメント７０８及び７１０において変更を行うことによってデータファイル７０６を更新するとき、発行者は、更新されたファイルについてのコンテンツオブジェクトの新たなセットを生成する。コンテンツオブジェクトの新たなセットは、元のコンテンツオブジェクト７０４のセット及び差分コンテンツオブジェクト７１４のセットにおける変更されないコンテンツオブジェクトを含む。しかしながら、図６とは異なり、発行者は、マニフェスト６１２とは異なる更新マニフェスト７１２をここで生成する。より具体的には、更新マニフェスト７１２自体は、元のマニフェスト７０２に対する差分と元のマニフェスト７０２に対する参照とを含むことによって差分符号化される。換言すれば、新たなセットにおける全てのコンテンツオブジェクトについてのコンテンツオブジェクトハッシュを列挙する代わりに、更新マニフェスト７１２は、元のマニフェスト７０２に対して変更を行う方法を指定することができる。例えば、更新マニフェスト７１２は、（セグメント７０８及び７１０に対応する）コンテンツオブジェクトハッシュ４ＦＦ及び５ＤＡの削除と、（異なるコンテンツオブジェクト７１４のセットに対応する）コンテンツオブジェクトハッシュＡＢＤ及び７７２の挿入とを述べることができる。（図３−図６に示されている方式と同様とすることができる）様々な差分符号化方式が更新マニフェスト７１２を生成するのに使用可能であることに留意されたい。
【００５４】
更新されたデータファイルを構築するために、受信ノードは、元のマニフェスト７０２を参照する更新マニフェスト７１２及び差分コンテンツオブジェクト７１４のセットを最初にダウンロードする。そして、受信者ノードは、（それを有していない場合）元のマニフェスト及び差分コンテンツオブジェクト７１４のセットをダウンロードする。その後、更新マニフェスト７１２及び元のマニフェスト７０２に基づいて、受信ノードは、マニフェスト６０２と類似し且つ更新されたデータファイルを表すコンテンツオブジェクトのコンテンツオブジェクトハッシュを列挙する（図７には示されない）新たなマニフェストを構築することができる。新たなマニフェストに基づいて、受信ノードは、古いバージョンのファイルの適切な場所に差分コンテンツオブジェクトを配置することによって新たなバージョンのファイルを構築することができる。いくつかの実施形態において、受信ノードは、新たなマニフェストの構築をスキップすることができ、更新マニフェスト７１２に含まれる情報に基づいて差分コンテンツオブジェクトを配置する方法を推論することができる。
【００５５】
差分符号化された更新マニフェストを使用する利点は、コンテンツの更新が生じたときにネットワークを介して転送される必要があるデータ量を順次大幅に削減することができ、後のバージョンのマニフェストがコンパクトなままであることを保証するということである。さらに、図６に示された例のように、コンテンツオブジェクトハッシュを列挙することは、チャンクの容易な挿入又は削除を可能とする。
【００５６】
いくつかの実施形態において、マニフェスト７０２は、階層的とすることができ、多数の階層部分を含む。そのような状況において、更新マニフェスト７１２は、それらの変更されない分岐部分を再列挙するのを必要とせずに参照することによって元のマニフェスト７０２の階層の変更されない分岐を組み込むことができる。
【００５７】
図７に示される例において、２つのバージョンのみが存在する。実際には、同じファイルの多くの異なるバージョンが共存することができる。後のバージョンの更新マニフェストは、直前バージョンのマニフェストのみを指定する必要がない。いくつかの実施形態において、後のバージョンの更新マニフェストは、任意数の以前のバージョンを参照することができ、それらのバージョンとの違いを示すことができる。例えば、バージョン１０の更新マニフェストは、バージョン４の更新マニフェストを参照し、（差分コンテンツオブジェクトの形態で）これらの２つのバージョンの差分を示すことができる。異なる例において、バージョン１０の更新マニフェストは、順次バージョン４の更新マニフェストを参照するバージョン７の更新マニフェストを参照することができる。マニフェストツリーの後順序移動を経て最終バージョンのファイルについてのマニフェストを構築することができる。
【００５８】
図８は、本発明の実施形態にかかる差分ベースのコンテンツ配信を可能とするコンテンツ更新の例示的なプロセスを図示するフローチャートである。動作中、コンテンツ発行者は、任意の種類のデータファイルとすることができるコンテンツ部分を更新する（動作８０２）。データファイルは、多数のコンテンツオブジェクトに適合するようにチャンクされていることから、データファイルの更新は、多くの場合、変更されない残りのコンテンツオブジェクトを残しながらコンテンツオブジェクトのサブセットを更新することを含むことに留意されたい。ＤＮＣＮ方式に応じて、いくつかの実施形態において、コンテンツオブジェクトは、それらのシーケンス番号に応じて名称付けられる。いくつかの実施形態において、コンテンツオブジェクトは、各コンテンツオブジェクトのバイトオフセットにしたがって名称付けられる。いくつかの実施形態において、コンテンツオブジェクトは、それらの暗号化ハッシュ名称に基づいて名称付けられる。
【００５９】
そして、発行者は、更新に基づいて差分コンテンツオブジェクトのセットを生成する（動作８０４）。ＤＢＣＮ方式に応じて、いくつかの実施形態において、差分コンテンツオブジェクトを生成することは、挿入、削除又は置き換え操作の結果であり得る差分のバイト位置を抽出すること含むことができることに留意されたい。また、ＤＢＣＮ方式に応じて、差分コンテンツオブジェクトは、それらのシーケンス番号、置き換えられるコンテンツオブジェクトのシーケンス番号、差分のバイトオフセット又は差分コンテンツオブジェクトの暗号化ハッシュ名称に基づいて名称付けられることができる。バイトレベルの差分符号化のために、差分コンテンツオブジェクトは、２つのバージョン間の差分バイトのみを含むことができる。しかしながら、差分のバイト位置又は範囲を指定する必要がある。コンテンツオブジェクトレベル差分符号化のために、差分コンテンツオブジェクトは、以前のコンテンツオブジェクトを置き換えるのに使用される全てのバイトを含む必要がある。差分コンテンツオブジェクトの位置は、それらのバイトオフセットとして又は置き換えられるチャンクのシーケンス番号として、それらの名称によって符号化されることができる。
【００６０】
その後、発行者は、差分コンテンツオブジェクトについての更新マニフェストを生成する（動作８０６）。更新マニフェストは、通常、以前のバージョンのマニフェスト及び差分コンテンツオブジェクトを参照する。唯一の例外は、更新マニフェストが（変更されないコンテンツオブジェクトを含む）コンテンツオブジェクトの新たな全体のセットの暗号化ハッシュをリスト化したとき、更新マニフェストがもはや明示的に以前のバージョンのマニフェストを参照する必要がないということである。発行者は、ノードが新たなバージョンのファイルをダウンロードしようとするように、新たなバージョンについての名称空間のもとに更新マニフェスト及び／又は差分コンテンツオブジェクトを配置し（動作８０８）、更新マニフェストをダウンロードすることができ、その後、必要なコンテンツオブジェクトをフェッチするように更新マニフェストを使用する。ノードが既にそのキャッシュ内に古いバージョンのファイルを有している場合、差分コンテンツオブジェクトをダウンロードする必要があるのみであることに留意されたい。
【００６１】
図９は、本発明の実施形態にかかる更新されたコンテンツ部分をダウンロードして構築する例示的なプロセスを図示するフローチャートである。動作中、ノードは、新たなバージョンの名称空間のもとにインタレストの初期セットを発行することにより、コンテンツ部分の更新されたバージョンをダウンロードし始める（動作９０２）。これに応答して、ノードは、更新マニフェストを受信する（動作９０４）。いくつかの実施形態において、更新マニフェストは、以前のバージョンのマニフェストへの参照と、差分コンテンツオブジェクトのセットへの参照とを含む。いくつかの実施形態において、更新マニフェストは、以前のバージョンのマニフェストへの参照を含み、以前のバージョンのマニフェストに対する差分を示す。いくつかの実施形態において、更新マニフェストは、その署名の検証が以下の全ての差分コンテンツオブジェクトを認証するように、暗号化署名されている。ノードは、以前のバージョンのマニフェストを有しているかどうかを判定する（動作９０６）。そうでない場合、ノードは、必要に応じて以前のバージョンに対応するコンテンツオブジェクトとともに、以前のバージョンのマニフェストをダウンロードする（動作９０８）。コンテンツオブジェクトがハッシュベースの名称を使用し、マニフェストが全てのコンテンツオブジェクトハッシュをリスト化する場合、ノードは、古いバージョンのコンテンツオブジェクトのダウンロードを遅らせることができるということに留意されたい。そして、ノードは、必要に応じて、マニフェストを得るために更新マニフェストに対する差分を適用する（動作９１０）。これのみが差分符号化されたマニフェストに適用されるということに留意されたい。その後、ノードは、差分コンテンツオブジェクトをダウンロードし（動作９１２）、以前のバージョンのコンテンツオブジェクトに対する差分を適用する（動作９１４）。いくつかの実施形態において、差分を適用することは、（差分コンテンツオブジェクトによって指定された）特定のバイト範囲で変更を行うことを含む。いくつかの実施形態において、差分を適用することは、（削除操作のために空にすることができる）差分コンテンツオブジェクトによって特定のコンテンツオブジェクトを置き換えることを含む。いくつかの実施形態において、差分を適用することは、差分コンテンツオブジェクトが適切な位置に配置され、（ローカルキャッシュにそれらを有していない場合）変更されないコンテンツオブジェクト及び差分コンテンツオブジェクトをダウンロードすることを含むことができる。
【００６２】
図１０は、本発明の実施形態にかかる差分ベースのコンテンツネットワーキングを可能とする例示的なシステムを図示している。ＤＢＣＮシステム１０００は、プロセッサ１０１０と、メモリ１０２０と、記憶装置１０３０とを備える。記憶装置１０３０は、典型的には、メモリ１０２０にロードされて上述した方法を実行するためにプロセッサ１０１０によって実行可能な命令を記憶する。１つの実施形態において、記憶装置１０３０内の命令は、コンテンツ更新モジュール１０３２と、差分コンテンツオブジェクト生成／受信モジュール１０３４と、更新マニフェスト生成／受信モジュール１０３６と、バージョン構築モジュール１０３８とを実装することができ、それらの全ては、様々な手段を介して互いに通信を行うことができる。
【００６３】
いくつかの実施形態において、モジュール１０３２、１０３４、１０３６、及び１０３８は、部分的又は全体的にハードウェアで実装することができ、プロセッサ１０１０の一部とすることができる。さらに、いくつかの実施形態において、システムは、別個のプロセッサ及びメモリを含んでも含まなくてもよい。代わりに、それらの特定のタスクを実行することに加え、モジュール１０３２、１０３４、１０３６、及び１０３８は、別個に又は同時に、汎用又は専用計算エンジンの一部とすることができる。
【００６４】
記憶装置１０３０は、プロセッサ１０１０によって実行されるプログラム記憶する。具体的には、記憶装置１０３０は、ＤＢＣＮを可能とするシステム（アプリケーション）を実装するプログラム記憶する。動作中、アプリケーションプログラムは、記憶装置１０３０からメモリ１０２０にロードされ、プロセッサ１０１０によって実行することができる。結果として、ＤＢＣＮシステム１０００は、上述した機能を実行することができる。ＤＢＣＮシステム１０００は、（タッチスクリーンディスプレイとすることができる）任意のディスプレイ１０８０、キーボード１０６０、ポインティングデバイス１０７０に結合されることができ、また、ネットワーク１０８２に対して１つ以上のネットワークインターフェースを介して結合されることができる。
【００６５】
この詳細な説明に記載されたデータ構造及びコードは、典型的には、コンピュータシステムによって使用するためのコード及び／又はデータを記憶することができる任意の装置又は媒体であり得るコンピュータ読み取り可能な記憶媒体に記憶される。コンピュータ読み取り可能な記憶媒体は、これらに限定されるものではないが、揮発性メモリ、不揮発性メモリ、ディスクドライブ、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（ディジタル多用途ディスク若しくはディジタルビデオディスク）などの磁気及び光記憶装置、又は、現在公知の若しくは後に開発されるコンピュータ読み取り可能な媒体を記憶することができる他の媒体を含む。
【００６６】
詳細な説明のセクションに記載された方法及びプロセスは、上述したようなコンピュータ読み取り可能な記憶媒体に記憶されることができるコード及び／又はデータとして具体化することができる。コンピュータシステムがコンピュータ読み取り可能な記憶媒体に記憶されたコード及び／又はデータを読み取って実行する場合、コンピュータシステムは、データ構造及びコードとして具現化されてコンピュータ読み取り可能な記憶媒体内に記憶された方法及びプロセスを実行する。
【００６７】
さらにまた、本願明細書に記載された方法及びプロセスは、ハードウェアモジュール又は装置に含めることができる。これらのモジュール又は装置は、これらに限定されるものではないが、特定用途向け集積回路（ＡＳＩＣ）チップ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定の時間に特定のソフトウェアモジュール若しくはコードの一部を実行する専用又は共有プロセッサ、及び／又は、現在公知の若しくは後に開発される他のプログラマブル論理デバイスを含むことができる。ハードウェアモジュール又は装置が起動されると、それらは、それらの内部に含まれる方法及びプロセスを実行する。
【図１】
2016024814.tif 000003
【図２】
2016024814.tif 000004
【図３】
2016024814.tif 000005
【図４】
2016024814.tif 000006
【図５】
2016024814.tif 000007
【図６】
2016024814.tif 000008
【図７】
2016024814.tif 000009
【図８】
2016024814.tif 000010
【図９】
2016024814.tif 000011
【図１０】
2016024814.tif 000012