(57)【要約】  第１のキャッシュデバイスを動作させる方法は、第１のキャッシュデバイスにおいて、第１のアセットを第２のデバイスに送ることを求めるリクエストを受信することと、第１のアセットが第１のキャッシュデバイスに格納されているかどうかを決定することと、決定することにより、第１のアセットが第１のキャッシュデバイスに格納されていないと決定したときには、第１のキャッシュデバイスにおいて、第１のアセットを獲得し、第１のキャッシュデバイスにおいて、第１のキャッシュデバイスに関する第１のアセットの限界値の移動平均と第１のキャッシュデバイスの特徴的限界値とを比較し、第１のアセットと関連するコストを計算し、比較に基づき、第１のアセットを第１のキャッシュデバイスにおいて選択的に格納し、獲得された第１のアセットと計算されたコストとを第２のデバイスに送ることと、を含み得る。
2018511131.tif 000002
【特許請求の範囲】
【請求項１】
第１のキャッシュデバイスを動作させる方法であって、
第１のキャッシュデバイスにおいて、第１のアセットを第２のデバイスに送ることを求めるリクエストを受信することと、
第１のアセットが第１のキャッシュデバイスに格納されているかどうかを決定することと、
決定することにより、第１のアセットが第１のキャッシュデバイスに格納されていないと決定したときに、
第１のキャッシュデバイスにおいて、第１のアセットを獲得し、
第１のアセットと関連するコストを計算し、
第１のキャッシュデバイスに関する第１のアセットの限界値の移動平均と第１のキャッシュデバイスの特徴的限界値とに基づいて、第１のアセットを第１のキャッシュデバイスにおいて選択的に格納することであって、第１のキャッシュデバイスの特徴的限界値は、第１のキャッシュにおいてキャッシュされているアセットに対する最後のリクエストの受信と第１のキャッシュにおいてキャッシュされているアセットの削除との間の、コストに配慮した平均時間期間を表す、格納することと、
第１のアセットと計算されたコストとを第２のデバイスに送ることと
を備える、方法。
【請求項２】
第１のキャッシュが、複数の階層レベルに分割されたコンテンツ配信ネットワークの複数のキャッシュデバイスのうちの１つであり、方法が、
複数のキャッシュデバイスのそれぞれに対し、
リクエストされたアセットに対するリクエストが複数のキャッシュデバイスのうちのそれぞれのキャッシュデバイスによって受信されたときに、リクエストされたアセットの限界値の移動平均を決定することと、
キャッシュデバイスがアセットを削除するときに、複数のキャッシュデバイスのうちのそれぞれのキャッシュデバイスと関連する特徴的限界値を決定することと、
をさらに備える、請求項１に記載の方法。
【請求項３】
獲得することが、第１のアセットと、第１のアセットと関連する獲得されたコストとを複数の階層レベルのうちのより上位のレベルから獲得し、コストを計算することが、選択的に格納することが第１のアセットを格納しない場合には、獲得されたコストに限界コストを加算することを含む、請求項２に記載の方法。
【請求項４】
第１のキャッシュデバイスの特徴的限界値を、第１のキャッシュデバイスに関する第１のアセットの限界値の移動平均の初期化された値よりも高い値として初期化することと、
第１のキャッシュデバイスにおいてキャッシュされているアセットに対する最後のリクエストの受信と第１のキャッシュデバイスにおいてキャッシュされているアセットの削除との間の時間期間の指数関数的重み付き移動平均と、アセットに関連するコストとに基づいて、最長時間未使用キャッシュ削除ポリシに従って第１のキャッシュデバイスの特徴的限界値を更新することとによって、
第１のキャッシュデバイスの特徴的限界値を決定することをさらに備える、請求項１に記載の方法。
【請求項５】
第１のキャッシュデバイスに関する第１のアセットの限界値の移動平均を、第１のキャッシュデバイスの特徴的限界値の初期化された値よりも低い値として初期化することと、
第１のキャッシュデバイスにおける、第１のアセットに対するリクエストの連続的な受信の間の時間期間の指数関数的重み付き移動平均と、第１のアセットに関連するコストとに基づいて、第１のキャッシュデバイスに関する第１のアセットの限界値の移動平均を更新することであって、リクエストは、第１のアセットを別のデバイスに送るように第１のキャッシュデバイスにリクエストする、更新することとによって、
第１のキャッシュデバイスに関する第１のアセットの限界値の移動平均を決定することをさらに備える、請求項１に記載の方法。
【請求項６】
選択的に格納することが、
第１のアセットに対する最初のリクエストが第１のキャッシュデバイスにおいて受信されたときに、第１のアセットを第１のデータベースに割り当てることと、
第２のリクエストが最初のリクエストと連続的に受信されたとき、
第１のアセットの到着間時間を、最初のリクエストおよび第２のリクエストが第１のキャッシュデバイスにおいて受信された時間に基づいて決定し、
到着間データベースに格納されているアセットの数が閾値よりも大きいまたは閾値と等しい場合に、
到着間データベースに格納されている複数のアセットのうちのどれが、第２のアセットと関連するコストが増加するにつれて減少する、そのアセットと関連する最大の限界値を有するかに基づき、到着間データベースから除去すべき第２のアセットを決定することであって、到着間時間データベースが、アセットに対応するリクエストの到着時間を格納し、到着間時間データベースが第１のデータベースとは異なる、決定することと、
第２のアセットを到着間データベースから取り除くこととを行い、
第１のアセットを到着間時間データベースに割り当てることと
を含む、請求項１に記載の方法。
【請求項７】
複数のアセットのそれぞれのアセットの最後のリクエストされた時間を、そのアセットに関連するコストによって除算することによって、アセットの限界値を決定することをさらに備え、
第１のアセットと関連するコストが、第１のアセットのソースと第１のキャッシュデバイスとの間のホップの回数と、第１のアセットがそれらの間で遭遇したレイテンシと、のうちの１つまたは複数を表す、請求項６に記載の方法。
【請求項８】
第１のキャッシュデバイスであって、
プロセッサと、コンピュータ可読コードを含むメモリと、
を備える第１のキャッシュデバイスであって、コンピュータ可読コードが、プロセッサによって実行されると、プロセッサを、
第１のアセットを第２のデバイスに送ることを求めるリクエストを受信することと、
第１のアセットが第１のキャッシュデバイスに格納されているかどうかを決定することとを行うように構成し、
プロセッサが、第１のアセットが第１のキャッシュデバイスに格納されていないと決定したとき、プロセッサが、
第１のキャッシュデバイスにおいて、第１のアセットを獲得することと、
第１のアセットと関連するコストを計算することと、
第１のキャッシュデバイスに関する第１のアセットの限界値の移動平均と第１のキャッシュデバイスの特徴的限界値とに基づいて、第１のキャッシュデバイスにおいて第１のアセットを選択的に格納することであって、第１のキャッシュデバイスの特徴的限界値が、第１のキャッシュにおいてキャッシュされているアセットに対する最後のリクエストの受信と第１のキャッシュにおいてキャッシュされているアセットの削除との間の、コストに配慮した平均時間期間を表す、格納することと、
獲得された第１のアセットと計算されたコストとを第２のデバイスに送ることと
を行うように構成される、第１のキャッシュデバイス。
【請求項９】
第１のキャッシュが、複数の階層レベルに分割されたコンテンツ配信ネットワークの複数のキャッシュデバイスのうちの１つであり、複数のキャッシュデバイスのそれぞれが、それと関連するプロセッサを有し、
複数のキャッシュデバイスのそれぞれが、
リクエストされたアセットに対するリクエストが複数のキャッシュデバイスのうちのそれぞれのキャッシュデバイスによって受信されたときに、リクエストされたアセットの限界値の移動平均を決定し、
キャッシュデバイスがアセットを削除するときに、複数のキャッシュデバイスのうちのそれぞれのキャッシュデバイスと関連する特徴的限界値を決定する
ように構成されている、請求項８に記載の第１のキャッシュデバイス。
【請求項１０】
プロセッサが、
第１のアセットとそれに関連する獲得されたコストとを、複数の階層レベルのうちのより上位のレベルから獲得し、
プロセッサが第１のアセットを格納しないと決定した場合には、獲得されたコストに限界コストを加算することによってコストを計算し、
第１のアセットを選択的に格納するように構成され、第１のアセットを選択的に格納することが、
第１のアセットに対する最初のリクエストが第１のキャッシュデバイスにおいて受信されたときに、第１のアセットを第１のデータベースに割り当て、
第２のリクエストが最初のリクエストと連続的に受信されたとき、到着間データベースに格納されているアセットの数が閾値よりも大きいまたは閾値と等しい場合に、
第１のアセットの到着間時間を、最初のリクエストおよび第２のリクエストが第１のキャッシュデバイスにおいて受信された時間に基づいて決定することと、
到着間データベースに格納されている複数のアセットのうちのどれが、第２のアセットと関連するコストが増加するにつれて減少する、そのアセットと関連する最大の限界値を有するかに基づき、取り除くべき第２のアセットを到着間データベースから決定することであって、到着間時間データベースが、アセットに対応するリクエストの到着時間を格納し、到着間時間データベースは第１のデータベースとは異なる、決定することと、
第２のアセットを到着間データベースから取り除くこととを行い、
第１のアセットを到着間時間データベースに割り当てる
ことによって行われる、請求項９に記載の第１のキャッシュデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１４年１０月１６日に出願された米国仮特許出願第６２／０６４，６３１号、および２０１４年１２月１９日に出願された米国特許出願第１４／５７７，０３９号の優先権を主張するものであり、その両開示は、引用によりその全体が本明細書に組み込まれている。
【０００２】
例示的実施形態は、一般に、キャッシング媒体に関し、詳細には、オンライン媒体のための階層的なキャッシングを提供することに関する。
【背景技術】
【０００３】
オンライン動画は現在、インターネットトラフィックの最大の構成要素または最大の構成要素の１つである。そのような動画をキャッシングすることは、従来型のアルゴリズムに対して追加的な要件を加える。多くの従来型のアルゴリズムでは従来、ヒット率が、それらのアルゴリズムを比較するために用いられる主要な性能指標であった。ますます新しくなるキャッシュは、ＳＳＤメモリのアクセス速度および信頼性により、記憶のためにＳＳＤメモリを用いている。ＳＳＤメモリの寿命は、使用可能な書き込みサイクルの回数が限られていることがある。置換率、すなわちリクエスト当たりの書き込みサイクルの回数が、そのようなメモリでの関心対象となり得る別の主要な性能指標である。一部のオンライン動画使用データによると、オンライン動画のかなりの部分が、当初は極めて人気があるが急速に人気が低下する最近のテレビ番組を再放送するのに用いられる。そのような急速な変化を伴うキャッシングアルゴリズムの性能を測定することは、別の新たな性能指標である。典型的には、オンラインキャッシングは、典型的には２秒から１０秒の間である小さなチャンクに動画を格納する。さらに、各動画は、動画当たりのチャンク数をさらに増加させる複数の動画品質レベルへと符号化され得る。全体では、オンライン動画は、キャッシングシステムにおいてエンドユーザによりリクエストされる可能性があるファイルの数を１千倍またはそれ以上に増加させ得る。
【０００４】
過去３０年にわたる研究で提案されてきた多くの従来型のキャッシングアルゴリズムは、商用のキャッシュでは実現されていない。たとえば、実現された方式の顕著な例には、最長時間未使用（ＬＲＵ：ｌｅａｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ）のような単純な方式、ならびにグリーディデュアルサイズ頻度（ＧＤＳＦ：ｇｒｅｅｄｙ  ｄｕａｌ  ｓｉｚｅ  ｆｒｅｑｕｅｎｃｙ）、および動的エイジングを伴う最小使用頻度（ＬＦＵ−ＤＡ：ｌｅａｓｔ  ｆｒｅｑｕｅｎｔｌｙ  ｕｓｅｄ  ｗｉｔｈ  ｄｙｎａｍｉｃ  ａｇｉｎｇ）など、他のいくつかのものがある。
【０００５】
さらに、キャッシュのサイズは、有限であり得る。したがって、新たなアセットの格納には、格納されているアセットの削除が必要とされ得る。しかし、格納されているアセットのどちらを削除するかを決定するときに、多くの従来型のキャッシングアルゴリズムは、格納されている各アセットの再獲得に伴うコストを考慮に入れていない。
【発明の概要】
【課題を解決するための手段】
【０００６】
いくつかの例示的実施形態は、キャッシュデバイスを動作させる方法に関する。
【０００７】
いくつかの例示的実施形態において、この方法は、第１のキャッシュデバイスにおいて、第１のアセットを第２のデバイスに送ることを求めるリクエストを受信することと、第１のアセットが第１のキャッシュデバイスに格納されているかどうかを決定することと、決定することにより、第１のアセットが第１のキャッシュデバイスに格納されていないと決定したときには、第１のキャッシュデバイスにおいて、第１のアセットを獲得し、第１のアセットと関連するコストを計算し、第１のキャッシュデバイスに関する第１のアセットの限界値の移動平均と第１のキャッシュデバイスの特徴的限界値とに基づいて、第１のアセットを第１のキャッシュデバイスにおいて選択的に格納することであって、第１のキャッシュデバイスの特徴的限界値は、第１のキャッシュにおいてキャッシュされているアセットに対する最後のリクエストの受信と第１のキャッシュにおいてキャッシュされているアセットの削除との間の、コストに配慮した平均時間期間を表す、格納することと、獲得された第１のアセットと計算されたコストとを第２のデバイスに送ることと、を含む。
【０００８】
いくつかの例示的実施形態では、第１のキャッシュが、複数の階層レベルに分割されたコンテンツ配信ネットワークの複数のキャッシュデバイスのうちの１つであり、この方法は、複数のキャッシュデバイスのそれぞれに対し、リクエストされたアセットに対するリクエストが複数のキャッシュデバイスのうちのそれぞれのキャッシュデバイスによって受信されたときに、リクエストされたアセットの限界値の移動平均を決定することと、キャッシュデバイスがアセットを削除するときに、複数のキャッシュデバイスのうちのそれぞれのキャッシュデバイスと関連する特徴的限界値を決定することと、をさらに含む。
【０００９】
いくつかの例示的実施形態では、獲得することが、第１のアセットと、第１のアセットと関連する獲得されたコストとを複数の階層レベルのうちのより上位のレベルから獲得し、コストを計算することが、選択的に格納することが第１のアセットを格納しない場合には、獲得されたコストに限界コストを加算することを含む。
【００１０】
いくつかの例示的実施形態では、この方法は、第１のキャッシュデバイスの特徴的限界値を、第１のキャッシュデバイスに関する第１のアセットの限界値（ＭＵ）の移動平均の初期化された値よりも高い値として初期化することと、第１のキャッシュデバイスにおいてキャッシュされているアセットに対する最後のリクエストの受信と第１のキャッシュデバイスにおいてキャッシュされているアセットの削除との間の時間期間の指数関数的重み付き移動平均と、アセットに関連するコストとに基づいて、最長時間未使用キャッシュ削除ポリシに従って第１のキャッシュデバイスの特徴的限界値を更新することとによって、第１のキャッシュデバイスの特徴的限界値を決定することをさらに含む。
【００１１】
いくつかの例示的実施形態では、第１のキャッシュデバイスの特徴的限界値を更新することは、第１のキャッシュがアセットを削除するときに、第１のキャッシュデバイスの特徴的限界値を緩やかに増加させることをさらに含む。
【００１２】
いくつかの例示的実施形態では、この方法は、第１のキャッシュデバイスに関する第１のアセットの限界値の移動平均を、第１のキャッシュデバイスの特徴的限界値の初期化された値よりも低い値として初期化することと、第１のキャッシュデバイスにおける、第１のアセットに対するリクエストの連続的な受信の間の時間期間の指数関数的重み付き移動平均と、第１のアセットに関連するコストとに基づいて、第１のキャッシュデバイスに関する第１のアセットの限界値の移動平均を更新することであって、リクエストは、第１のアセットを別のデバイスに送るように第１のキャッシュデバイスにリクエストする、更新することとによって、第１のキャッシュデバイスに関する第１のアセットの限界値の移動平均を決定することを含む。
【００１３】
いくつかの例示的実施形態では、選択的に格納することが、第１のアセットに対する最初のリクエストが第１のキャッシュデバイスにおいて受信されたときに、第１のアセットを第１のデータベースに割り当てることと、第２のリクエストが最初のリクエストと連続的に受信されたときには、第１のアセットの到着間時間を、最初のリクエストおよび第２のリクエストが第１のキャッシュデバイスにおいて受信された時間に基づいて決定し、到着間データベースに格納されているアセットの数が閾値よりも大きいまたは閾値と等しい場合には、到着間データベースに格納されている複数のアセットのうちのどれが、第２のアセットと関連するコストが増加するにつれて減少する、そのアセットと関連する最大の限界値を有するかに基づき、到着間データベースから取り除くべき第２のアセットを決定することであって、到着間時間データベースはアセットに対応するリクエストの到着時間を格納するものであり、到着間時間データベースは第１のデータベースとは異なる、決定することと、第２のアセットを到着間データベースから取り除くことと、第１のアセットを到着間時間データベースに割り当てることと、を含む。
【００１４】
いくつかの例示的実施形態では、この方法は、アセットの限界値を、複数のアセットのそれぞれのアセットの最後のリクエストされた時間をそれと関連するコストによって除算することによって、決定することをさらに含む。
【００１５】
１つまたは複数の例示的実施形態によれば、第１のキャッシュデバイスは、プロセッサとメモリとを含み得る。
【００１６】
いくつかの例示的実施形態では、メモリはコンピュータ可読コードを含み得、コンピュータ可読コードは、プロセッサによって実行されると、プロセッサを、第１のアセットを第２のデバイスに送ることを求めるリクエストを受信し、第１のアセットが第１のキャッシュデバイスに格納されているかどうかを決定するように構成し、プロセッサが、第１のアセットは第１のキャッシュデバイスに格納されていないと決定したときには、プロセッサは、第１のキャッシュデバイスにおいて、第１のアセットを獲得し、第１のアセットと関連するコストを計算し、第１のキャッシュデバイスに関する第１のアセットの限界値の移動平均と第１のキャッシュデバイスの特徴的限界値とに基づいて、第１のアセットを第１のキャッシュデバイスにおいて選択的に格納するように構成されており、第１のキャッシュデバイスの特徴的限界値は、第１のキャッシュにおいてキャッシュされているアセットに対する最後のリクエストの受信と第１のキャッシュにおいてキャッシュされているアセットの削除との間の、コストに配慮した平均時間期間を表しており、そして、プロセッサは、獲得された第１のアセットと計算されたコストとを第２のデバイスに送るように構成されている。
【００１７】
１つまたは複数の例示的な実施形態によれば、コンテンツ配信ネットワークを動作させる方法であって、このコンテンツ配信ネットワークは、複数の階層レベルに分割された複数の第１のキャッシュデバイスを含んでおり、複数の第１のキャッシュデバイスのそれぞれは、プロセッサとメモリとを含む、方法。
【００１８】
いくつかの例示的実施形態では、メモリは、コンピュータ可読コードを含んでもよく、このコンピュータ可読コードは、プロセッサによって実行されると、それぞれの第１のキャッシュデバイスのプロセッサを、第１のアセットを第２のデバイスに送ることを求めるリクエストを受信し、第１のアセットがその第１のキャッシュデバイスに格納されているかどうかを決定し、第１のアセットがその第１のキャッシュデバイスに格納されていないとプロセッサが決定すると、第１のキャッシュデバイスにおいて第１のアセットを獲得し、第１のアセットと関連するコストを計算し、第１のキャッシュデバイスに関する第１のアセットの限界値の移動平均と第１のキャッシュデバイスの特徴的限界値とに基づき、第１のアセットを第１のキャッシュデバイスに選択的に格納し、なお、第１のキャッシュデバイスの特徴的限界値は、第１のキャッシュにおいてキャッシュされているアセットに対する最後のリクエストの受信と第１のキャッシュにおいてキャッシュされているアセットの削除との間の、コストに配慮した平均時間期間を表し、そして、獲得された第１のアセットを第２のデバイスに送るように、構成する。
【００１９】
少なくともいくつかの例示的実施形態が、以下で提供される詳細な説明と添付の図面とから、より完全に理解されることになるであろうが、以下の添付の図面では、類似の要素は類似の参照番号によって表されており、参照番号は、例証として与えられているに過ぎず、例示的実施形態を限定するものではない。
【図面の簡単な説明】
【００２０】
【図１】いくつかの例示的実施形態によるデータネットワークの一部を示す図である。
【図２Ａ】階層的キャッシュシステムの編成を示す図である。
【図２Ｂ】例示的実施形態によるネットワーク要素の例示的構造を示す図である。
【図３】いくつかの例示的実施形態によりオンライン媒体の階層的キャッシングを実行するようにネットワーク要素を動作させる例示的方法を示すフローチャートである。
【図４】他の例示的実施形態によりオンライン媒体の階層的キャッシングを実行するようにネットワーク要素を動作させる例示的方法を示すフローチャートである。
【発明を実施するための形態】
【００２１】
ここでは、様々な例示的実施形態が、いくつかの例示的実施形態が示されている添付の図面を参照して、より完全に説明される。
【００２２】
本明細書では、詳細な例証のための実施形態が、開示される。しかし、本明細書で開示される特定の構造的および機能的詳細は、少なくともいくつかの例示的実施形態を説明するという目的のための、単に代表的なものである。しかし、例示的実施形態は、多くの代替的形式で具体化され得るのであって、本明細書において与えられている実施形態だけに限定されるものとして解釈されるべきではない。
【００２３】
したがって、例示的実施形態は様々な修正および代替的形式を取り得るのではあるが、これらの実施形態は、図面では例によって示されており、本明細書で詳細に説明されることになる。しかし、例示的実施形態を開示される特定の形式に限定するという意図が存在しているのではなく、それとは対照的に、例示的実施形態は、例示的実施形態の範囲内に含まれるすべての修正、均等物および代替物に及ぶことを理解されたい。図面における説明を通じて、類似の番号は、類似の要素を指す。本明細書で用いられる「および／または（ａｎｄ／ｏｒ）」という用語は、関連してリスト化されている項目のうちの１つまたは複数の、いずれかおよびすべての組合せを含む。
【００２４】
ある要素が別の要素と「接続される（ｃｏｎｎｅｃｔｅｄ）」または「結合される（ｃｏｕｐｌｅｄ）」と称される場合には、他の要素と直接的に接続または結合される場合があり得るし、または、介在する要素が存在する場合があり得る、ということが理解されるであろう。それとは対照的に、ある要素が他の要素と「直接的に接続される（ｄｉｒｅｃｔｌｙ  ｃｏｎｎｅｃｔｅｄ）」または「直接的に結合される（ｄｉｒｅｃｔｌｙ  ｃｏｕｐｌｅｄ）」と称される場合には、介在する要素が存在しない。要素間の関係を説明するのに用いられる他の語は、同様に、解釈されるべきである（たとえば、「間に（ｂｅｔｗｅｅｎ）」と「直接的に間に（ｄｉｒｅｃｔｌｙ  ｂｅｔｗｅｅｎ）」、「隣接する（ａｄｊａｃｅｎｔ）」と「直接的に隣接する（ｄｉｒｅｃｔｌｙ  ａｄｊａｃｅｎｔ）」など）。
【００２５】
本明細書で用いられる用語は、特定の実施形態を説明するためのものに過ぎないのであって、例示的実施形態を限定するようには意図されていない。本明細書で用いられる単数形「１つの（ａ）」、「１つの（ａｎ）」および「その（ｔｈｅ）」は、文脈が明らかにそうではないことを示していない限り、複数形を含むことが意図されている。「備える（ｃｏｍｐｒｉｓｅｓ）」、「備えている（ｃｏｍｐｒｉｓｉｎｇ）」、「含む（ｉｎｃｌｕｄｅｓ）」、および／または「含んでいる（ｉｎｃｌｕｄｉｎｇ）」という用語は、本明細書で用いられるときには、言明された特徴、整数、ステップ、動作、要素および／またはコンポーネントの存在を特定するのであるが、１つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネントおよび／またはそれらのグループの存在または追加を排除しない、ということもさらに理解されるであろう。
【００２６】
いくつかの代替的実装では、記載されている機能／作用が、図面に記載の順序とは異なる順序で生じ得ることも、注意されるべきである。たとえば、連続して示されている２つの図面が、関連する機能／作用に応じて、実際には、実質的に同時に実行されることがあり得るし、または、逆の順序で実行される場合があり得る。
【００２７】
例示的実施形態は、本明細書では、適切な計算環境で実装されるものとして、論じられる。必要ではないが、例示的実施形態は、１つまたは複数のコンピュータプロセッサまたはＣＰＵによって実行されているプログラムモジュールまたは機能プロセスなどのコンピュータ実行可能な命令という一般的な文脈において、説明されることになる。一般に、プログラムモジュールまたは機能プロセスは、特定のタスクを実行するまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。
【００２８】
本明細書で論じられるプログラムモジュールと機能プロセスとは、既存の通信ネットワークにおける既存のハードウェアを用いて、実装され得る。たとえば、本明細書で論じられるプログラムモジュールと機能プロセスとは、既存のネットワーク要素または制御ノード（たとえば、図１に示されているｅＮＢ）において既存のハードウェアを用いて、実装され得る。そのような既存のハードウェアは、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）コンピュータなどを含み得る。
【００２９】
以下の説明では、例証のための実施形態は、そうではないことが示されない限り、１つまたは複数のプロセッサによって実行される（たとえば、フローチャート形式を有する）動作の作用および記号表現を参照して説明される。よって、そのような作用および動作は、時にはコンピュータ実行されると称されるのであるが、構造化された形式を有するデータを表す電気信号のプロセッサによる操作を含むことが理解されるであろう。この操作が、データを変換する、または、コンピュータのメモリシステムの中の場所にデータを維持するのであるが、これが、当業者によって十分に理解される態様で、コンピュータの動作を、再設定するか、または、それ以外の方法で変更する。
【００３０】
例示的ネットワークアーキテクチャ
図１は、１つまたは複数の例示的実施形態によるデータネットワーク１００の一部を示している。通信ネットワーク１００は、エンドユーザ１１０と、コンテンツ配信ネットワーク（ＣＤＮ）１３０と、配信元サーバ１４０とを含む。
【００３１】
エンドユーザ１１０は、たとえば、たとえば電子ユーザデバイスによって具体化され得る。電子デバイスは、モバイルデバイス、スマートフォン、ラップトップ、タブレット、またはパーソナルコンピュータを含み得る。エンドユーザ１１０は、配信元サーバ１４０に格納されているコンテンツを、ＣＤＮ１３０を経由して、受信することができる。エンドユーザ１１０とＣＤＮ１３０と配信元サーバ１４０とは、相互に、たとえばインターネットを通じて接続され得る。
【００３２】
ＣＤＮ１３０は、キャッシュ１３５Ａ−Ｆを含む。キャッシュ１３５Ａ−Ｆは、それぞれ、媒体コンテンツを格納するためのストレージを含む。キャッシュ１３５Ａ−Ｆは、たとえば、サーバにて、ルータにて、またはワイヤレス通信ネットワークコンポーネントにて、共に、グループとして、または個別的に具体化され得、なお、ワイヤレス通信ネットワークコンポーネントは、たとえば、基地局（ＢＳ）、進化型ノードＢ（ｅＮＢ）、または無線ネットワークコントローラ（ＲＮＣ）を含む。ＣＤＮ１３０は、６つのキャッシュ１３５Ａ−Ｆだけを含むものとして示されているが、任意の数のキャッシュを含んでいてかまわない。さらに、図１に示されている例では、配信元サーバ１４０はＣＤＮ１３０と別個である。しかし、１つまたは複数の例示的実施形態によれば、配信元サーバ１４０は、ＣＤＮ１３０の一部と考えられてもよい。
【００３３】
配信元サーバ１４０は、コンテンツリクエストに応答してコンテンツを提供するサーバである。たとえば、配信元サーバ１４０は、エンドユーザ１１０によってストリーミングをリクエストされ得る１つまたは複数の動画に対応するコンテンツを格納し得る。この場合に、配信元サーバ１４０は、特定の動画と関連するコンテンツリクエストを、たとえばＣＤＮ１３０の内部のあるキャッシュから受信し得、リクエストされたコンテンツを提供することによって、リクエストに応答し得る。単純化する目的で、ただ１つの配信元サーバ１４０が示されているが、データネットワーク１００は、任意の数の配信元サーバを含むことがあり得る。
【００３４】
ＣＤＮ１３０におけるキャッシュは、階層的なキャッシュ構造に編成され得る。図２Ａは、階層的なキャッシュシステムの例示的編成を示す図である。図２Ａに示されているように、階層的キャッシュシステムにおけるキャッシュは、ツリー構造に編成され得る。図２Ａにおける各キャッシュは、座標（ｊ，ｋ）によって示されたインデックス「ｊ」と階層レベル「ｋ」とを有する。したがって、最低の階層レベルｋ＝０は、キャッシュ（０，０）、キャッシュ（１，０）、キャッシュ（２，０）、およびキャッシュ（３，０）という４つのキャッシュを含む。２番目に高い階層レベルｋ＝１は、キャッシュ（０，１）およびキャッシュ（１，１）という２つのキャッシュを含む。最高の階層レベルｋ＝２は、キャッシュ（０，２）という１つのキャッシュを含む。キャッシュ（０，２）は、キャッシュ（０，１）とキャッシュ（１，１）との親であり得る。キャッシュ（０，１）は、キャッシュ（０，０）とキャッシュ（１，０）との親であり得る。キャッシュ（１，１）は、キャッシュ（２，０）とキャッシュ（３，０）との親であり得る。親キャッシュを有する各キャッシュは、その親キャッシュとの関係では、子キャッシュである。さらに、階層キャッシュシステムにおいて親キャッシュではないキャッシュは、「葉」キャッシュと称され得る。たとえば、図２Ａに示されているツリー構造では、階層レベルｋ＝０であるキャッシュ（すなわち、キャッシュ（０，０）、キャッシュ（１，０）、キャッシュ（２，０）、およびキャッシュ（３，０））は、葉キャッシュの例である。階層キャッシュシステムにおける子キャッシュがリクエストされたアセットに関してキャッシュミスを経験するときには、その子キャッシュは、その親キャッシュがリクエストされたアセットを有するかどうかを決定するために、その子キャッシュの親キャッシュと通信することがあり得る。親キャッシュがリクエストされたアセットを有していない場合には、親キャッシュは、次に、リクエストされたアセットを獲得するために、リクエストされたアセットを子キャッシュに提供する前に、より高いレベルのキャッシュまたは配信元サーバと通信することがあり得る。
【００３５】
本明細書で用いられる「アセット」という用語は、キャッシュに格納されていることがあり得る、または配信元サーバによって提供され得るデータであって、ユーザによってリクエストされ得るデータを指す。たとえば、オンライン動画に関しては、アセットの例として、配信元サーバに格納されている２−１０秒のチャンクの動画データがあり、これが、ユーザによってリクエストされ得るのであって、１つまたは複数のキャッシュに格納されていることがあり得るのである。
【００３６】
１つまたは複数の例示的実施形態によれば、ＣＤＮ１３０におけるキャッシュは、図２Ａに示されている階層的キャッシュ構造として編成され得る。たとえば、図１のキャッシュ１３５Ａ−Ｆは、それぞれ、キャッシュ（０，２）、キャッシュ（０，１）、キャッシュ（１，１）、キャッシュ（０，０）、キャッシュ（１，０）およびキャッシュ（２，０）に対応し得る。
【００３７】
次に、データネットワーク１００のネットワーク要素の例示的構造について、図２Ｂを参照して以下で論じられる。
【００３８】
例示的ネットワーク要素構造
図２Ｂは、ネットワーク要素２５１の例示的構造を示している図である。例示的実施形態によれば、データネットワーク１００における任意のまたは全部のネットワーク要素は、たとえばエンドユーザ１１０とキャッシュ１３５Ａ−Ｆと配信元サーバ１４０とを含んでいるが、ネットワーク要素２５１に関して以下で説明されるのと同じ構造および動作を有し得る。
【００３９】
図２Ｂを参照すると、ネットワーク要素２５１は、たとえば、データバス２５９と、送信ユニット２５２と、受信ユニット２５４と、メモリユニット２５６と、処理ユニット２５８とを含み得る。
【００４０】
送信ユニット２５２と、受信ユニット２５４と、メモリユニット２５６と、処理ユニット２５８とは、データバス２５９を用いて、相互に、データを送信および／またはデータを受信し得る。
【００４１】
送信ユニット２５２は、たとえば制御信号またはデータ信号を含む信号を、１つもしくは複数のワイヤードおよび／またはワイヤレス接続を経由して、データネットワーク１００における他のネットワーク要素に送信するためのハードウェアと任意の必要なソフトウェアとを含むデバイスである。
【００４２】
受信ユニット２５４は、たとえば制御信号またはデータ信号を含むワイヤレス信号を、データネットワーク１００における他のネットワーク要素への１つもしくは複数のワイヤードおよび／またはワイヤレス接続を経由して受信するためのハードウェアと、任意の必要なソフトウェアとを含むデバイスである。
【００４３】
メモリユニット２５６は、磁気ストレージ、フラッシュストレージなどを含む、データを記憶することができる任意のデバイスであり得る。
【００４４】
処理ユニット２５８は、たとえばプロセッサを含む、データを処理することができる任意のデバイスであり得る。
【００４５】
少なくとも１つの例示的実施形態によれば、たとえば図１−図３のいずれかを参照して本明細書で説明されており、ユーザ（たとえば、エンドユーザ１１０）とキャッシュ（たとえば、キャッシュ１３５Ａ−Ｆ）とサーバ（たとえば、配信元サーバ１４０）とのいずれか１つによって実行されるどの動作も、図２Ｂに示されているネットワーク要素２５１の構造を有する電子デバイスによって、実行され得る。たとえば、少なくとも１つの例示的実施形態によれば、ネットワーク要素２５１は、ソフトウェアおよび／またはハードウェアに関して、本明細書で説明されておりユーザ、キャッシュ、もしくはサーバによって実行される機能のいずれかまたは全部を実行するようにプログラムされ得る。結果的に、本明細書で説明されるエンドユーザ１１０とキャッシュとサーバとのそれぞれは、専用コンピュータとして具体化され得る。
【００４６】
次に、ネットワーク要素２５１の例であって、ソフトウェアに関して、本明細書で説明されておりユーザ、キャッシュ、もしくはサーバによって実行される機能のいずれかまたは全部を実行するようにプログラムされている例が、以下で論じられる。たとえば、メモリユニット２５６は、図１−３を参照して本明細書で説明される動作のいずれかまたは全部に対応する実行可能な命令を含むプログラムであって、ユーザ、キャッシュ、またはサーバによって実行されるプログラムを記憶し得る。少なくとも１つの例示的実施形態によれば、メモリユニット２５６に記憶されることに追加してまたは代替的に、実行可能な命令が、たとえば光ディスク、フラッシュドライブ、ＳＤカードなどを含むコンピュータ可読媒体に記憶され得るのであって、ネットワーク要素２５１は、そのコンピュータ可読媒体上に記憶されているデータを読み出すためのハードウェアを含み得る。さらに、処理ユニット２５８は、図１−３を参照して本明細書で説明されておりユーザ、キャッシュ、またはサーバによって実行される動作のいずれかまたは全部を、たとえば、メモリユニット２５６とコンピュータ可読記憶媒体との少なくとも一方に記憶されコンピュータ可読媒体を読むためにネットワーク要素２５１に含まれるハードウェアの中にロードされる実行可能命令を読み出し実行することによって、実行するように構成されたプロセッサであり得る。
【００４７】
次に、ハードウェアに関して、ネットワーク要素２５１の例であって、ソフトウェアに関して、本明細書で説明されておりユーザ、キャッシュ、もしくはサーバによって実行される機能のいずれかまたは全部を実行するようにプログラムされている例が、以下で論じられる。図１−３を参照して説明されたユーザ、キャッシュ、もしくはサーバによって実行される機能に対応し、上で論じられたメモリユニットもしくはコンピュータ可読媒体に記憶されている実行可能な命令に加えて、または、代替的に、処理ユニット２５８は、図１−３を参照して本明細書で説明されておりユーザ、キャッシュ、もしくはサーバによって実行される動作のいずれかまたは全部を実行すること専用の構造的設計を有する回路を含み得る。たとえば、上述され処理ユニット２５８に含まれる回路は、図１−３を参照して説明されておりユーザ、キャッシュ、もしくはサーバによって実行される動作のいずれかまたは全部を実行するように物理的にプログラムされたＦＰＧＡまたはＡＳＩＣであり得る。
【００４８】
次に、１つまたは複数の例示的実施形態による階層的キャッシングの概略が、以下で論じられることになる。
【００４９】
１つまたは複数の例示的実施形態による階層的キャッシングの概略
多くの従来型のキャッシングアルゴリズムについては、実際の使用に対する障害のいくつかとして、スループット性能の妨げになり得るアルゴリズムの実装の複雑性が認められる場合があり、ヒット率の上昇など追加的なキャッシング性能の値が上昇するという期待が、アセットの人気の変化に適応する能力などのファクタを下回り得る。
【００５０】
１つまたは複数の例示的実施形態は、オンライン動画のために、新たなキャッシングアルゴリズムを用いる。新たなキャッシングアルゴリズムは、実装の複雑性が低く、ヒット率と置換率とが向上している。新たなキャッシングアルゴリズムは、ビデオオンデマンド（ＶｏＤ）統計を用いた現実的変化とアセットの典型的な人気に関するシミュレーションに基づいて、評価されてきた。いくつかの研究が示すところによると、多くのアセットはそのライフサイクルの開始時には極めて人気があるのであるが、その人気は指数関数的速度で低下し、その導入から数日のうちに、人気は、ごく僅かになってしまう。これらに基づき、ヒット率だけではなく、バイトビット率と置換率とが、１つまたは複数の例示的実施形態によるキャッシングアルゴリズムを評価するのに用いられる。キャッシングアルゴリズムの１つまたは複数の例示的実施形態は、本明細書においてオンライン動画のキャッシングを参照して説明されているが、オンライン動画のキャッシングに関して本明細書で説明される１つまたは複数の例示的実施形態は、たとえば、オーディオ、静止画、ビデオゲーム、３−Ｄオブジェクトおよびモデルを含め、インターネットなどの通信ネットワークを通じて転送される他のタイプの媒体にも適用され得る。
【００５１】
１つまたは複数の例示的実施形態による階層的キャッシングを提供する例示的方法
次に、１つまたは複数の例示的実施形態による階層的キャッシングを提供する方法が、図３との関係で、そして、オンライン動画データが図１のＣＤＮ１３０によってキャッシュされている例を参照して、論じられる。１つまたは複数の例示的実施形態によれば、図３に示されている階層的キャッシングを提供する方法は、水平的な協調型キャッシュではなく、図２Ａに示されているもののような階層的キャッシュに基づいているが、その理由は、階層的キャッシュは、オペレータネットワークの場合に、より効率的であり得るからである。
【００５２】
１つまたは複数の例示的実施形態によれば、階層的キャッシングを提供する方法は、大域的な情報を必要とすることなく与えられたキャッシュにおける局所的な態様で機能するキャッシングアルゴリズムを用いる。さらに、１つまたは複数の例示的実施形態によれば、階層的キャッシングを提供する方法は、アセットまたはノードの数との関係でＯ（１）アルゴリズムであるキャッシングアルゴリズムを用いる。
【００５３】
１つまたは複数の例示的実施形態によれば、階層的キャッシングを提供する方法は、以前に非常に人気のあったアセットがその値を急速に低下させるときに、人気の変化への応答が比較的迅速なキャッシングアルゴリズムを用いる。
【００５４】
１つまたは複数の例示的実施形態によれば、階層的キャッシングを提供する方法は、改善されたヒット率性能を提供するキャッシングアルゴリズムを、用いる。
【００５５】
１つまたは複数の例示的実施形態によれば、階層的キャッシングを提供する方法は、削除する決定においてアセットのサイズを用いないキャッシングアルゴリズムを用いるのであるが、その理由は、これが、オンライン動画に対して望ましくない振る舞いを生じさせ得るからである。
【００５６】
１つまたは複数の例示的実施形態によれば、階層的キャッシングを提供する方法は、与えられている階層における各キャッシュにおいて、他のキャッシュにおけるアルゴリズムとは独立に動作するキャッシングアルゴリズムを用いる。各キャッシュは、各アセットの到着間時間を、局所的に見積もる。各キャッシュは、また、それ自身の特徴的時間を計算するのであるが、この特徴的時間とは、アセットが、削除される前に、キャッシュに滞在する平均時間として定義される。たとえば、キャッシュの特徴的時間は、ＬＲＵを用いた知られている方法に従って、いくつかのアセットに対応するいくつかの削除時間の平均を決定することによって、そのキャッシュによって決定され得るのであって、その場合に、各アセットに対して、そのアセットに対する削除時間は、キャッシュがアセットをまさに削除しようとするときに、現在時間とそのアセットが最後にリクエストされた時間との間の差として、決定され得る。次に、以下では、上述したキャッシングアルゴリズムの１つまたは複数の例示的実施形態について、より詳細に論じられる。
【００５７】
１つまたは複数の例示的実施形態によれば、階層的キャッシングを提供する方法は、知られているＬＲＵ方式に従ってアセットを削除するキャッシングアルゴリズムを用いる。たとえば、１つまたは複数の例示的実施形態によれば、いったんキャッシングアルゴリズムが、あるアセットがキャッシュから削除されるべきであると決定すると、削除対象として選択されたアセットは、最も長い間用いられなかったアセットである。
【００５８】
表１は、各アセットに対して定義される変数について説明する。
表１
【表１】
2018511131.tif 000003
【００５９】
下記の表２は、各キャッシュに対して定義される変数について説明する。
表２
【表２】
2018511131.tif 000004
【００６０】
下記の表３は、キャッシュ階層の全体に対して定義される変数について説明する。
表３
【表３】
2018511131.tif 000005
【００６１】
下記の表４は、１つまたは複数の例示的実施形態により、図３に示されている階層的キャッシングを提供する方法によって用いられるキャッシングアルゴリズムが動作させられる前に設定される初期条件を、説明する。
表４
【表４】
2018511131.tif 000006
【００６２】
下記の式（１）は、キャッシュ（ｊ，ｋ）の特徴的時間値であるＴＣｊｋが計算される態様を例証している。
ＴＣｊｋ＝ｗＴＣ×（ＴＳ−Ｐｉｊｋ）＋（１−ｗＴＣ）×ＴＣｊｋ      （１）
【００６３】
式（１）は、たとえばＬＲＵキャッシュ削除ポリシに従って、キャッシュ（ｊ，ｋ）から削除される前にリクエストされることなくキャッシュ（ｊ，ｋ）にアセットが滞在する時間の指数関数的な移動平均として、特徴的時間ＴＣｊｋを計算する。たとえば、キャッシュ（ｊ，ｋ）におけるアセットの最後のリクエストの受信とキャッシュ（ｊ，ｋ）からのアセットの削除との間の時間の指数関数的な移動平均としての、特徴的時間ＴＣｊｋである。１つまたは複数の例示的実施形態によれば、キャッシュを動作させるための知られているＬＲＵ法に従って、ＬＲＵ機能自体によるｉ番目のアセットに対するリクエストをキャッシュが受信すると常に、値Ｐｉｊｋが現在時刻に更新される。
【００６４】
下記の式（２）は、キャッシュ（ｊ，ｋ）に対するアセットｉの平均の到着間時間であるＴｉｊｋが計算される態様を、例証している。１つまたは複数の例示的実施形態によれば、値Ｔｉｊｋは、それが葉キャッシュであるか、または、より高い層のキャッシュであるかとは関係なく、アセットが任意のキャッシュからリクエストされると常に、計算され得る。
Ｔｉｊｋ＝ｗＩＡ×（ＴＳ−Ｐｉｊｋ）＋（１−ｗＩＡ）×Ｔｉｊｋ      （２）
【００６５】
式（２）は、重みｗＩＡを用いて、アセットｉの到着間時間の指数関数的な移動平均を計算する。
【００６６】
１つまたは複数の例示的実施形態によれば、式（１）に従って値ＴＣｊｋを計算した後で、特徴的時間ＴＣｊｋは、特徴的時間ＴＣｊｋが低い数値に留まらないように、緩やかに増加される。特徴的時間ＴＣｊｋは、下記の式（３）に従って、緩やかに増加される。
ＴＣｊｋ＝ＴＣｊｋ＋ＧＳ×（ＴＳ−ＰＬｊｋ）      （３）
【００６７】
１つまたは複数の例示的実施形態によれば、式（３）に従って値ＴＣｊｋを緩やかに増加させた後で、ＰＬｊｋに対する現在の値が、下の式（４）によって例証されているように、現在時刻に設定される。
ＰＬｊｋ＝ＴＳ      （４）
【００６８】
１つまたは複数の例示的実施形態による階層的キャッシングを提供する方法によって用いられるキャッシングアルゴリズムの一例が、アルゴリズム１による擬似コードの形式で、以下で説明される。１つまたは複数の例示的実施形態によれば、アルゴリズム１は、ＣＤＮ１３０の階層的ツリー構造における各キャッシュによって、個別的に実行され得る。たとえば、ＣＤＮ１３０のキャッシュの中からのあるキャッシュがアセットｉに対するリクエストを受信するときは常に、このキャッシュは、リクエストされたアセットがこのキャッシュによってキャッシュされる必要があるかどうかを決定するために、アルゴリズム１を実行し得る。
【数１】
2018511131.tif 000007
【００６９】
以下では、アルゴリズム１の例示的使用が、図３との関係で、さらに詳細に論じられる。図３は、オンライン媒体の階層的キャッシングを実行するためにネットワーク要素を動作させる例示的方法を示すフローチャートである。図３は、図２Ａを参照して上で説明されたように、図２Ａにおけるキャッシュ（０，１）（すなわち、階層レベルｋ＝１における０番目のキャッシュ）に対応するキャッシュ１３５Ｂの観点から、説明される。
【００７０】
図３を参照すると、ステップＳ３０５では、あるアセットに対するリクエストが、キャッシュにおいて受信される。たとえば、ステップＳ３０５では、キャッシュ１３５Ｂが、アセットｘに対するリクエストを受信する。キャッシュ１３５Ｂは、キャッシュ１３５Ｂの子キャッシュの１つからアセットｘに対するリクエストを受信し得る（すなわち、図２Ａにおいて示されているように、キャッシュ１３５Ｂは、キャッシュ１３５Ｄおよび１３５Ｅに対する親であるが、これらのキャッシュは、図２Ａに示されているキャッシュ（０，０）およびキャッシュ（１，０）にそれぞれ対応する）。図３に示されている方法は、キャッシュ１３５Ｂがアセットｘに対するリクエストをキャッシュ１３５Ｄから受信する例を参照して、説明される。たとえば、キャッシュ１３５Ｄは、アセットｘに対するエンドユーザ１１０からのリクエストをキャッシュ１３５Ｄにおいて受信することに応答して、アセットｘに対するリクエストを、キャッシュ１３５Ｂに送信し得る。したがって、図３に示されている方法が、キャッシュ１３５Ｂによって、アセットｘに対するリクエストを受信するときに実行されるときには、ｉ＝ｘ、ｊ＝０、およびｋ＝１である。
【００７１】
アルゴリズム１に示されているように、ステップＳ３０５においてアセットｘに対するリクエストを受信した時に、キャッシュ１３５Ｂは、式（２）を用いて、値Ｔｉｊｋを計算し得る。次に、キャッシュは、Ｐｉｊｋに対する値を、現在時刻に設定し得る。次に、キャッシュ１３５Ｂは、ステップＳ３１０に進み得る。キャッシュ１３５Ｂは、アセットを削除するときは常に、式（１）を用いて値ＴＣｊｋを計算し得るし、次に、キャッシュ１３５Ｂは、式（３）を用いて、値ＴＣｊｋを緩やかに増加させ得る。
【００７２】
ステップＳ３１０では、キャッシュは、ステップＳ３０５においてそれに対するリクエストが受信されたアセットが、キャッシュに格納されているかどうか（すなわち、キャッシュされているかどうか）を、決定する。たとえば、ステップＳ３１０では、キャッシュ１３５Ｂは、既にアセットｘがキャッシュ１３５Ｂにキャッシュされているかどうかを決定し得る。アセットアセットｘがキャッシュ１３５Ｂに格納されている場合であれば、キャッシュ１３５Ｂは、ステップＳ３１５に進む。
【００７３】
ステップＳ３１５では、キャッシュが、ステップＳ３０５でリクエストされたアセットを提供し、キャッシュのＬＲＵデータベースを更新する。たとえば、ステップＳ３１５では、キャッシュ１３５Ｂが、アセットｘを、ステップＳ３１０においてそのアセットをリクエストしたネットワーク要素であるキャッシュ１３５Ｄに、提供し得る。さらに、キャッシュを動作させる知られているＬＲＵ法に従い、キャッシュ１３５Ｄは、キャッシュに現在格納されている各アセットの最も近い使用時間をそれぞれ示すタイムスタンプを格納するキャッシュ１３５Ｄの中の（たとえば、キャッシュ１３５Ｄのメモリ２５６の中の）ＬＲＵデータベースを、更新し得る。
【００７４】
ステップＳ３１０に戻ると、ステップＳ３０５でリクエストされたアセットがキャッシュに含まれていないと、キャッシュがステップＳ３１０で決定した場合には、キャッシュは、ステップＳ３２０に進む。たとえば、ステップＳ３１０において、キャッシュ１３５Ｂが、アセットｘはキャッシュ１３５Ｂに現在格納されていないと決定した場合には、キャッシュ１３５Ｂは、ステップＳ３２０に進む。
【００７５】
ステップＳ３２０では、キャッシュは、ステップＳ３０５でリクエストされたアセットを取得する。たとえば、ステップＳ３２０では、キャッシュ１３５Ｂは、アセットｘに対するリクエストを、キャッシュ１３５Ｂの親であるキャッシュ１３５Ａに送信し得る。キャッシュ１３５Ｂによって送信されたリクエストに応答して、キャッシュ１３５Ｂは、キャッシュ１３５Ａから、アセットｘを受信し得る。たとえば、キャッシュ１３５Ａが、アセットｘを既に格納している場合があり得るし、または、キャッシュ１３５Ａは、アセットｘをキャッシュ１３５Ｂに提供する前に、配信元サーバ１４０から、アセットｘを取得し得る。
【００７６】
次に、ステップＳ３２５では、キャッシュが、ＴＣｊｋおよびＴｉｊｋの値に基づいて比較を実行し、その比較に基づいてアセットｘを格納すべきかどうかを決定する。たとえば、ステップＳ３２５では、キャッシュ１３５Ｂが、下記の式（５）に従って、値ＴＣｊｋと値Ｔｉｊｋとを比較しうる。
（Ｔｉｊｋ＜ＴＣｊｋ）      （５）
【００７７】
ステップＳ３２５における比較動作の結果が真である場合には、キャッシュ１３５Ｂは、ステップＳ３３０に進む前に、ステップＳ３３５に進み得る。ステップＳ３３５では、キャッシュ１３５Ｂは、アセットｘをキャッシュ１３５Ｂに格納する。ステップＳ３３０では、キャッシュ１３５Ｂは、アセットを、そのアセットをリクエストしたネットワーク要素であるキャッシュ１３５Ｄに提供する。
【００７８】
ステップＳ３２５における比較動作の結果が偽である場合には、キャッシュ１３５Ｂは、ステップＳ３３５に進むことなく、直接にステップＳ３３０に進み得る。したがって、ステップＳ３２５における比較動作の結果が偽である場合には、キャッシュ１３５Ｂは、アセットｘをキャッシュ１３５Ｂにキャッシュすることなく、アセットｘをキャッシュ１３５Ｄに提供し得る。このように、１つまたは複数の例示的実施形態によれば、ＣＤＮ１３０におけるキャッシュは、式（５）によって定義される比較に従って、取得されたアセットをキャッシュするかどうかを決定し得る。
【００７９】
リクエストされたアセットｘをステップＳ３３０で提供した後では、キャッシュ１３５Ｂは、次のアセットリクエストの受信を待機するために、ステップＳ３０５に戻る。
【００８０】
図３は、キャッシュ１３５Ｂの観点から説明されているが、キャッシュ１３５Ｂとの関係で上述された動作は、ＣＤＮ１３０におけるいずれのキャッシュによっても実行され得る。たとえば、ＣＤＮにおけるすべてのキャッシュが、キャッシュ１３５Ｂに関して上述した動作を同時に実行することもあり得る。
【００８１】
次に、キャッシュのＬＲＵデータベースに加えてＣＤＮ１３０のキャッシュに含まれ得る新たなデータベースについて（たとえば、ＣＤＮ１３０のキャッシュのメモリ２５６の中にある）、以下で論じられる。
【００８２】
大きなアセット到着間時間データベース
上で論じられたように、ＣＤＮ１３０のキャッシュは、キャッシュを動作させるための知られているＬＲＵ法に従うＬＲＵデータベースを含み得る。さらに、ＣＤＮ１３０のキャッシュのそれぞれは、また、たとえば、アセットｉの平均の到着間を計算するために、様々なアセットの到着間時間であるＴｉｊｋを格納するデータベースを含み得る。
【００８３】
ライブラリの中のアセットの数が非常に大きなものであり得るのであって、時には、キャッシュに格納され得るアセットの数よりもはるかに大きいとすると、到着間時間の統計を格納するために複数のデータベースを用いることが望ましい場合があり得る。たとえば、１つまたは複数の例示的実施形態によれば、ＣＤＮ１３０のキャッシュは、到着間時間のメインデータベースと到着間時間の追加データベースとを含むことがあり得る。１つまたは複数の例示的実施形態によれば、あるキャッシュのための到着間時間のメインデータベースは、そのキャッシュに対するＴＣｊｋの値の数倍、たとえば３倍よりも多くの到着間時間を含まない。１つまたは複数の例示的実施形態によれば、それを超えると到着間時間がメインの到着間時間データベースに含まれないことになる正確な値は、そのキャッシュに格納されているアセットの人気分布（ｐｏｐｕｌａｒｉｔｙ  ｄｉｓｔｒｉｂｕｔｉｏｎ）に基づき得る。
【００８４】
追加データベースは、これまでにただ１回だけのリクエストがあったアセットとメインの到着間時間データベースから降格されたアセットとを格納するのに用いられる「１回発生」データベースであり得る。たとえば、キャッシュがあるアセットに対する第２のリクエストに遭うと、そのキャッシュは、第１および第２のリクエストのタイミングに基づいて、到着間時間を計算し得るのであり、そして、そのキャッシュは、新たに計算された到着間時間に基づいて、そのアセットを、メインの到着間時間データベースの中に配置し得る。さらに、新たに計算された到着間時間を有するアセットをメインデータベース中に配置した時には、メインデータベースの中で最大の到着間時間を有するアセットが、メインデータベースから取り除かれ得る。メインデータベースに戻るためには、取り除かれたアセットは、最初に「１回発生」データベースに入ることが必要であり得るし、次に、上述した態様でメインの到着間データベースに昇進されることが必要であり得る。
【００８５】
追加データベースは、これまでにただ１つのリクエストだけがあったアセットを格納するのに用いられる「１回発生」データベースであり得る。この「１回発生」データベースの中のアセットに対する第２のリクエストにキャッシュが遭うと、キャッシュは、第１および第２のリクエストのタイミングに基づいて、到着間時間を計算し得、次に、キャッシュは、新たに計算された到着間時間に基づいてそのアセットをメインの到着間時間データベースの中に配置し得るし、同時にまた、そのエントリを「１回発生」データベースから削除する。さらに、新たに計算された到着間時間を有するアセットをメインデータベース中に配置した時には、メインデータベースの中で最も長い間用いられなかったアセットが、メインデータベースから取り除かれ得る。最も長い間用いられなかったとは、それに対する最後のリクエストがすべてのアセットの中で最も古いアセットを意味する。メインデータベースに戻るためには、取り除かれたアセットは、最初に「１回発生」データベースに入ることが必要であり得るし、次に、上述した態様でメインの到着間データベースに昇進されることが必要であり得る。
【００８６】
下記の表５は、各アセットに対して定義されるコスト関数に対する追加的な変数について説明している。
表５
【表５】
2018511131.tif 000008
【００８７】
以下で論じられるように、他の例示的実施形態では、ＣＤＮ１３０におけるキャッシュは、あるアセットに対するリクエストを受信するときには、アルゴリズム２を実行し得る。
【数２】
2018511131.tif 000009
【００８８】
アルゴリズム２は、図４を参照して、図２Ａを参照して説明されたように図２Ａのキャッシュ（０，１）（すなわち、階層レベルｋ＝１の０番目のキャッシュ）に対応するキャッシュ１３５Ｂの観点から、説明される。
【００８９】
図４を参照すると、動作Ｓ４０５では、キャッシュが、アセットに対するリクエストを受信する。たとえば、キャッシュ１３５Ｂは、アセットｘに対するリクエストを、キャッシュ１３５Ｂの子キャッシュのうちの１つから受信し得る（すなわち、図２Ａに示されているように、キャッシュ１３５Ｂは、キャッシュ１３５Ｄおよび１３５Ｅに対する親であり、これらのキャッシュは、図２Ａに示されているキャッシュ（０，０）およびキャッシュ（１，０）にそれぞれ対応する）。
【００９０】
これより後では、説明の目的のために、キャッシュ１３５Ｂは、たとえば、キャッシュ１３５Ｄがアセットｘに対するリクエストをエンドユーザ１１０から受信することに応答して、アセットｘに対するリクエストをキャッシュ１３５Ｄから受信すると仮定する。したがって、アセットｘに対するリクエストを受信するキャッシュ１３５Ｂの視点からすると、ｉ＝ｘ、ｊ＝０、およびｋ＝１である。
【００９１】
アルゴリズム２に示されているように、キャッシュ１３５Ｂは、式（７）を用いて、限界値ＭＵｉｊｋの指数関数的な移動平均を計算し得る。次に、キャッシュは、Ｐｉｊｋに対する値を、現在時刻として設定し得る。
【００９２】
動作Ｓ４１０では、キャッシュ１３５Ｂが、アセットｘがキャッシュ１３５Ｂに格納されているかどうか（すなわち、キャッシュされているかどうか）を決定し得る。キャッシュ１３５Ｂがアセットｘはキャッシュ１３５Ｂに現在格納されていると決定した場合には、キャッシュ１３５Ｂは、動作Ｓ４１５に進み得るし、そうでない場合には、キャッシュ１３５Ｂは、動作Ｓ４２０に進み得る。
【００９３】
動作Ｓ４１５では、キャッシュ１３５Ｂは、アセットｘをキャッシュ１３５Ｄに提供し、知られている最長時間未使用（ＬＲＵ）法に従って、キャッシュのＬＲＵデータベースを更新する。たとえば、キャッシュ１３５Ｄは、そのキャッシュに現在格納されているアセットのそれぞれの最も近い使用時間をそれぞれ示すタイムスタンプを格納するキャッシュ１３５Ｄの中のＬＲＵデータベース（たとえば、キャッシュ１３５Ｄのメモリ２５６の中の）を更新し得る。さらに、キャッシュ１３５Ｂは、アセットｉ＝ｘのコストＣｏｕｔ，ｉｊｋをキャッシュ１３５Ｄに提供するが、ここで、Ｃｏｕｔ，ｉｊｋは、アセットｉに関連する現在のコストＣｉｊｋに等しい。
【００９４】
いくつかの例示的実施形態では、コストは、キャッシュに格納される前にアセットが通過したホップの回数（キャッシュの数）を表し得る。他の例示的実施形態では、コストは、キャッシュに格納される前にアセットが遭遇したレイテンシを表すことがあり得る。さらに他の例示的実施形態では、コストは、たとえばホップの回数と遭遇したレイテンシとの両方である指標の組合せを表すことがあり得る。
【００９５】
キャッシュ１３５Ｂは、動作Ｓ４１０において、アセットｘがそこに格納されていないと決定した場合には、キャッシュ１３５Ｂは、動作Ｓ４２０に進む。
【００９６】
動作Ｓ４２０では、キャッシュ１３５Ｂが、アセットｘを、配信元またはキャッシュのうちの別の１つから、アセットｘを取得する。たとえば、キャッシュ１３５Ｂは、アセットｘに対するリクエストを、キャッシュ１３５Ｂの親であるキャッシュ１３５Ａに送信し得る。キャッシュ１３５Ｂによって送信されたリクエストに応答して、キャッシュ１３５Ｂは、アセットｘを、キャッシュ１３５Ａから受信し得る。たとえば、キャッシュ１３５Ａは、アセットｘを既に格納していることがあり得るし、または、キャッシュ１３５Ａが、アセットｘをキャッシュ１３５Ｂに提供する前に、配信元サーバ１４０からアセットｘを取得することもあり得る。
【００９７】
動作Ｓ４２５では、キャッシュ１３５Ｂが、アセットｉ＝ｘと関連する限界値ＭＵｉｊｋの移動平均とキャッシュ１３５Ｂの特徴的限界値ＣＶｊｋとの間の比較に基づいて、アセットｘを格納すべきかどうかを決定する。
【００９８】
たとえば、キャッシュ１３５Ｂは、値ＭＵｉｊｋと値ＣＶｊｋとを、下記の式（６）に従って比較し得る。
（ＭＵｉｊｋ＜ＣＶｊｋ）      （６）
【００９９】
キャッシュ１３５Ｂは、式（７）を用いて、特徴的限界値ＣＶｊｋを計算し得る。キャッシュ１３５Ｂは、キャッシュ１３５Ｂが一杯であり、アセットｘのための余地を作成するために、以前に格納されたアセットのうちの１つが削除されることが必要であるときにだけ、特徴的限界値ＣＶｊｋの値を再計算し得る。キャッシュ１３５Ｂは、特徴的限界値ＣＶｊｋの更新された値を格納し得る。
【数３】
2018511131.tif 000010
【０１００】
式（７）において例証されているように、特徴的限界値は、式１で決定された特徴的時間値ＴＣｊｋを、キャッシュ（ｊ，ｋ）へのアセットｉのコストＣｉｊｋで除算した値に等しい。したがって、キャッシュ（ｊ，ｋ）からアセットｉを削除するときに、アセットｉを獲得することに関連するコストＣｉｊｋが高い場合には、削除の前にリクエストされることなくアセットがキャッシュ（ｊ，ｋ）に滞在する、コストに配慮した平均時間期間を表す特徴的限界値ＣＶｊｋは、低くなるであろう。
【０１０１】
さらに、キャッシュ１３５Ｂは、下記の式（８）を用いて、アセットｉ＝ｘの限界値ＭＵｉｊｋの指数関数的な移動平均を計算し得る。
【数４】
2018511131.tif 000011
【０１０２】
キャッシュ１３５Ｂは、キャッシュ１３５Ｂによって取得された各アセットｉに対する限界値ＭＵｉｊｋを計算し得るのであり、格納されているアセットｉの１つがリクエストされるときには、格納されているアセットｉの限界値ＭＵｉｊｋを再計算し得る。
【０１０３】
式（８）に例証されているように、限界値ＭＵｉｊｋの指数関数的な移動平均は、アセットの到着間時間Ｔｉｊｋの平均をキャッシュ（ｊ，ｋ）へのアセットｉのコストＣｉｊｋによって除算した値に等しい。
【０１０４】
キャッシュ１３５Ｂが式６から８を用いて、アセットｉ＝ｘと関連する限界値ＭＵｉｊｋの移動平均がキャッシュ１３５Ｂの特徴的限界値ＣＶｊｋよりも小さくないと決定した場合には、キャッシュ１３５Ｂは、動作Ｓ４３０に進み得る。
【０１０５】
動作Ｓ４３０においては、アセットｉ＝ｘと関連する限界値ＭＵｉｊｋの移動平均がキャッシュ１３５Ｂの特徴的限界値ＣＶｊｋよりも小さくない場合には、キャッシュ１３５Ｂは、そのアセットを、そのアセットをリクエストしたネットワーク要素であるキャッシュ１３５Ｄに提供する。さらに、キャッシュ１３５Ｂは、アセットｉ＝ｘのコストＣｏｕｔ，ｉｊｋをキャッシュ１３５Ｄに提供するのであるが、この場合、キャッシュ１３５Ｂがアセットｘを格納していないため、コストＣｏｕｔ，ｉｊｋは、キャッシュ１３５Ｄが後の時間期間においてそのアセットを削除すると決定した場合にキャッシュ１３５Ｂがアセットｘを取得するコストを示す追加限界コストＣ−ｓｔｏｉｊｋを含む。
【０１０６】
動作Ｓ４３５では、キャッシュ１３５Ｂが式６から８を用いてアセットｉ＝ｘと関連する限界値ＭＵｉｊｋの移動平均がキャッシュ１３５Ｂの特徴的限界値ＣＶｊｋよりも小さいと決定した場合には、キャッシュ１３５Ｂは、アセットｘをキャッシュ１３５Ｂに格納して、動作Ｓ４４０に進み得る。
【０１０７】
キャッシュ１３５Ｂがその中にアセットｘを格納しているときには、キャッシュ１３５Ｂのサイズは限定的であり得るから、キャッシュ１３５Ｂは、アセットｘを格納するための空間を生成するために、現在格納されているアセットの削除を必要とし得る。
【０１０８】
たとえば、キャッシュ１３５Ｂは、格納されているアセットｉの最大の限界値ＭＶｉｊｋに基づいて、どのアセットを削除すべきかを決定し得る。
【０１０９】
たとえば、キャッシュ１３５Ｂは、アセットｉの限界値ＭＶｉｊｋを決定するために、下記の式９を用い得るのであり、最大の限界値ＭＶｉｊｋを有するアセットを削除し得る。
【数５】
2018511131.tif 000012
【０１１０】
式９に例証されているように、アセットｉと関連するコストＣｉｊｋが比較的高い場合には、アセットｉの限界値ＭＶｉｊｋは、比較的低くなり、したがって、そのアセットｉは、そのアセットｉを再獲得することに関連する高いコストのため、削除される可能性が低い。
【０１１１】
このように、１つまたは複数の例示的実施形態によれば、ＣＤＮ１３０におけるキャッシュは、あるアセットをキャッシュすべきかどうかの決定がそのアセットを取得することに関連するコストに基づくように、取得されたアセットを、式（６）によって定義される比較に従って、キャッシュすべきかどうかを決定し得る。さらに、キャッシュ１３５Ｂは、アセットｉのそれぞれを獲得するコストを考慮して、格納されるアセットのために空間を作成するために、どのアセットを削除すべきかを決定し得る。
【０１１２】
動作Ｓ４４０では、キャッシュ１３５Ｂは、アセットｘを、キャッシュ１３５Ｄに提供し得る。さらに、キャッシュ１３５Ｂは、アセットｉ＝ｘのコストＣｏｕｔ，ｉｊｋを、キャッシュ１３５Ｄに提供するのであるが、ここで、コストＣｏｕｔ，ｉｊｋは、アセットｉと関連する現在のコストＣｉｊｋに等しい。
【０１１３】
リクエストされたアセットｘを動作Ｓ４１５、Ｓ４３０およびＳ４４０において提供した後で、キャッシュ１３５Ｂは、次のアセットリクエストの受信を待機するために、動作Ｓ４０５に戻る。
【０１１４】
例示的実施形態はこのように記載されているが、実施形態が多数の方法で変形され得ることは明らかであろう。そのような変形は、例示的実施形態からの逸脱と見なされるべきではなく、そのような修正は、すべて、例示的実施形態の範囲内に含まれることが意図されている。
【図１】
2018511131.tif 000013
【図２Ａ】
2018511131.tif 000014
【図２Ｂ】
2018511131.tif 000015
【図３】
2018511131.tif 000016
【図４】
2018511131.tif 000017
【国際調査報告】
2018511131.tif 000018
2018511131.tif 000019
2018511131.tif 000020