(57)【要約】  システムは、メディアコンテンツを供給する一以上のメディアサーバと、該コンテンツのセグメントを受信するために他のピア又はメディアサーバに通信接続された複数のピアであって、少なくとも一つのピアが、セグメント及びメディアファイルを格納するキャッシュメモリと、一以上のピアにコンテンツのセグメントを送信するための上り回線帯域幅とを含むリソースのセットを割り当てる、複数のピアとを含む。このシステムは、どのピアがメディアファイルのどのセグメントをキャッシュすべきかを判定し、複数のピアのコンテンツ需要及び割り当てられたリソースを追跡することで、各コンテンツの各セグメントの送信元の位置を特定するピア位置情報を返す第１制御サーバも含む。制御サーバは、各キャッシュオプションの効用を計算し、ピアでキャッシュを開始するためにピアにトリガを送信することでそれを実行する。【選択図】図１
2010537318.tif 000002
【特許請求の範囲】
【請求項１】
メディアコンテンツを供給する一以上のメディアサーバと、
それぞれが、メディアコンテンツのセグメントを受信するために、複数のピアのうちの一以上の他のピアと通信可能に接続されるとともに前記一以上のメディアサーバのうちの少なくとも一つと通信可能に接続される複数のピアであって、当該複数のピアのうちの少なくとも一つが、前記セグメント及びメディアファイルを格納するキャッシュメモリと、前記一つのピアが通信可能に接続される前記一以上のピアにメディアコンテンツの前記セグメントを送信するための上り回線帯域幅とを含む、メディアコンテンツの前記セグメントを供給するためのリソースのセットを割り当てる、該複数のピアと、
前記複数のピアのメディアコンテンツ需要及び割り当てられた前記リソースを追跡することで、要求された各メディアコンテンツの各セグメントを各ピアが受信する際の送信元の一以上の位置を特定するピア位置情報を判定する第１制御サーバであって、該少なくとも一つの制御サーバが前記各ピアに前記位置情報を送信するように動作可能である、該第１制御サーバと
を備えるシステム。
【請求項２】
要求された各メディアコンテンツの各セグメントを各ピアが受信する際の送信元の一以上の位置を特定する位置情報を判定するために、複数のピアのメディアコンテンツ需要及び割り当てられたリソースを追跡するステップと、
前記位置情報を前記各ピアに送信するステップと
を含む方法。
【発明の詳細な説明】
【優先権】
【０００１】
[0001]本特許出願は、２００７年８月２１日に出願した対応米国特許仮出願第６０／９５７００９号明細書、名称「Ａ  Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｉｍｐｒｏｖｅｄ  Ｍｅｄｉａ  Ｓｔｒｅａｍｉｎｇ  ｗｉｔｈ  Ｏｎｌｉｎｅ  Ｃａｃｈｉｎｇ  ａｎｄ  Ｐｅｅｒ−ｔｏ−Ｐｅｅｒ  Ｆｏｒｗａｒｄｉｎｇ」の優先権を主張し、参照によってこれを組み込むものである。
【発明の分野】
【０００２】
[0002]本発明は、ビデオストリーミング、コンテンツ配布、及び通信ネットワークの分野に関し、より具体的には、本発明は、オンラインキャッシュ及びピア・ツー・ピア転送を用いるメディアストリーミングに関する。
【発明の背景】
【０００３】
[0003]ピア・ツー・ピアによるコンテンツ配布及びストリーミングは周知であり、文献及び産業界には多数のシステム提案や実施態様がある。そのようなシステムの一つとして、各ピアがビデオを記憶し、要求してきたクライアントピアにそのビデオを流すというようなものがある。各ビデオは複数の記述に符号化され、各記述は異なるノードに配置される。供給元のピアが切断すると、システムは、同一の記述を格納しており、且つ要求元のクライアントについて十分な上り回線帯域幅を有する別のピアを突き止める。この解決策はキャッシュ又はストレージの管理ポリシを提供しない。
【０００４】
[0004]ユーザが互いの間でブロードキャストコンテンツを中継する、広域ネットワーク内のノードを配置する方法が知られている。従来のように符号化されたメディアストリームは小さいファイルに分割され、各ファイルはユーザにアップロードされ、これらのユーザはそのファイルをチェーンレタースタイルのマルチプライヤ・ネットワーク内で繰り返して再アップロードする。クライアントはそれと同時に、いくらかの再生遅延の後に、従来のメディアプレイヤを介してファイルを継続的に再生する。
【０００５】
[0005]別のシステムでは、クライアントは、ダウンロードされたメディアファイルを格納するのに使用されるメモリキャッシュを有する。クライアントはその到着時刻に依存して一緒にクラスタ化され、サーバからの同一のメディアストリームにチェーン形式で参加する。クライアントはメディアファイルの欠けている初めのセグメントをチェーン内の他のクライアントのキャッシュからフェッチする。指定されたシステムは積極的にリソースを管理するのではなく、キャッシュ及び供給の静的ルールを利用する。
【０００６】
[0006]複数のビデオポートを供給する際に大容量記憶装置に残るべきもの及びバッファメモリ内で保持されるべきものを判断するデータバッファ管理ツールが知られている。このツールは、データブロックの所定の一つに関する将来の要件を予測する際にビデオデータストリームの予測可能な性質を利用して、バッファ内又は大容量記憶装置内のどちらで保持すべきかを判断する。
【０００７】
[0007]クライアント−サーバ・ネットワーク内でデータを取り出すキャッシュルックアップシステムであって、クライアントが他のクライアントのキャッシュを使用して要求された情報を取り出すものが提案された。このシステムは、サーバ負荷を減らすためにキャッシュ空間をどのように最適化すべきかを指定しない。ＢＡＳＳと称するもう一つのシステムでは、システムにメディアサーバを追加し、クライアントにその再生ポイントの後のセグメントだけをダウンロードさせることによって、ＢｉｔＴｏｒｒｅｎｔが増補される。クライアントは、メディアサーバからのダウンロードと、ＢｉｔＴｏｒｒｅｎｔピア・ツー・ピア（Ｐ２Ｐ）接続を用いたダウンロードの双方を同時に行うことができる。このシステムは、クライアント−サーバ・アーキテクチャとＰ２Ｐアーキテクチャとの利点を組み合わせたものであるが、ＢｉｔＴｏｒｒｅｎｔシステムに基づくものなので、ランダム化されたキャッシュ方法に従っている。ここで、クライアントの近傍内で最も希なセグメントがクライアントに向かってプッシュされ、それに対応して共有ポリシが利用される。
【０００８】
[0008]ピアのキャッシュは、サーバの帯域幅の利用を改善するための新しいマルチキャストセッションの種として扱われてきた。やはり、ここでのキャッシュ方法は静的であり、需要に対して適応するものではない。このキャッシュ方法は、ノードの連鎖及び欠けている情報のパッチをも必要とする。したがって、クライアントキャッシュは需要に関して最適化されない。
【０００９】
[0009]オリジナルメディアから符号化ブロックを生成し、代わりに各クライアントに一意の符号化ブロックを送信するために、ｅｒａｓｕｒｅ  ｃｏｄｉｎｇ法が提案された。クライアントは、そのバッファサイズに応じてできる限り多数の符号化ブロックを格納し、キャッシュの内容を他のピアに供給する。やはりこの方法では、ビデオセグメント及びその時間可変性にまたがる需要の不均一性に対してキャッシュを最適化することはできない。新たに参加するクライアントがどこで配布ツリーに参加するかの判断との絡みで、キャッシュが議論されてきた。また、将来のデータのランダムプリフェッチ、及び最も新しいデータのキャッシュが提案され、制御は、キャッシュされたデータではなくトポロジに対して行われる。別の解決策ではセグメントの「供給側」がカウントするが、供給はキャッシュ判断には使用されない。供給カウントは、どのセグメントをどこに要求するかを判断するのに使用される（例えば一つのやり方は、システム内で最も希なセグメントを要求することである）。この解決策は、配信を確立するのにゴシップベースのプロトコル（ｇｏｓｓｉｐｉｎｇ  ｂａｓｅｄ  ｐｒｏｔｏｃｏｌ）を利用する。
【発明の概要】
【００１０】
[0010]本明細書では、メディアストリーミングのシステム、方法、及び装置を開示する。一実施形態では、このシステムは、メディアコンテンツを供給する一以上のメディアサーバと、複数のピアであって、メディアコンテンツのセグメントを受信するために当該複数のピアのうちの一以上の他のピアに通信可能に接続されるとともに一以上のメディアサーバのうちの少なくとも一つに通信可能に接続され、少なくとも一つのピアが、セグメント及びメディアファイルを格納するキャッシュメモリと、その一つのピアが通信可能に接続される一以上のピアにメディアコンテンツのセグメントを送信するための上り回線帯域幅とを含む、メディアコンテンツのセグメントを供給するためのリソースのセットを割り当てる、該複数のピアとを含む。このシステムは、複数のピアのメディアコンテンツ需要及び割り当てられた前記リソースを追跡することで、どのピアがメディアファイルのどのセグメントをキャッシュすべきかを決定し、要求された各メディアコンテンツの各セグメントを各ピアが受信する際の送信元の一以上の位置を特定するピア位置情報を返す第１制御サーバをも含む。制御サーバは各ピアに位置情報を送信するように動作可能である。一実施形態では、一の制御サーバは、各キャッシュオプションの効用を計算し、ピアにトリガを送信することによってキャッシュオプションを実行することで、これらのピアでキャッシュを開始させる。
【００１１】
[0011]以下に示す詳細な説明及び本発明の様々な実施形態の添付図面からより十分に本発明を理解することができるが、詳細な説明及び添付図面は本発明を特定の実施形態に限定するものではなく、説明及び理解のためにのみ用いられる。
【図面の簡単な説明】
【００１２】
【図１】システムの一実施形態を示すブロック図である。
【図２】自機のリソースを制御サーバに周期的に報告するシステム内のクライアント、及び制御サーバがキャッシュの決定を指示する方法の一実施形態を示す図である。
【図３】到着時刻を用いて生成される需要曲線及び経時的なダウンロードレートを示す図である。
【図４】各クライアントノードでのキャッシュ方法の最良のシーケンスを見つけるための動的プログラミング（又は同等にトレリス）ベースの最適化を示す図である。
【図５】コンピュータシステムの一実施形態を示すブロック図である。
【図６】制御サーバの一実施形態を示すブロック図である。
【本発明の詳細な説明】
【００１３】
[0012]一実施形態では、システムは、メディアストリーミングサービスを多数のピア（例えばクライアント）に提供する一以上のメディアサーバを含む。各ピアはそのメモリリソース、コンピュータ処理ユニット（ＣＰＵ）リソース、帯域幅リソース（ダウンストリーム及び／又はアップストリーム）の一部をシステムに提供し（又は譲渡し）、これらのリソースはメディアを他のピアに供給するために使用される。サーバは、直接それ自体から、又は一以上の別のピアから、コンテンツの要求された部分又はセグメントを一以上の要求元のクライアントに供給することによって、所定のメディアコンテンツの配布を容易にする。一実施形態では、クライアントはその要求をサーバに発行し、サーバはそれに応じて、メディアの要求された部分が置かれている複数のピアの位置を提供する。サーバはシステムに譲渡された（提供された）ピアリソースを制御する。サーバはピアのメモリリソースを使用してメディアのセグメントを格納し（例えばキャッシュし）、これらのピアの上り回線の帯域幅を使用して、キャッシュされたセグメントを供給する。別の実施形態では、クライアントはその要求をサーバに発行し、サーバは、一以上のピア又はサーバに要求元のクライアントに供給するように指示する。
【００１４】
[0013]所定のメディアセグメントについて、現在このセグメントをキャッシュしているピアについて合算した合計上り回線帯域幅により、このセグメントのピア・ツー・ピア配信についての供給が定まる。その一方で、同一セグメントに関する要求の総数及び要求されたダウンロードレートにより、そのセグメントの需要が決まる。オンラインキャッシュ判断を行うことによって各セグメントの供給と需要とを一致させるための、システムに適用される様々な技法が知られている。
【００１５】
[0014]一実施形態では、ノードの一部（本明細書では制御サーバと称する）が、メディアファイルのすべてのセグメントの現在の供給、現在の需要、及び将来の需要の予測を記録する。これは、すべてのメディアファイルであってもよいし、メディアファイルのあるサブセット（例えば、少なくとも人気のあるメディアファイル）であってもよい。一実施形態では、将来の需要の予測は、通常のメディアストリーミング動作ロジックの下での決定論的挙動と、ランダムなピアの到着や離脱、故障などに起因する推計学的挙動とを考慮したものである。
【００１６】
[0015]一実施形態では、各ノードでのキャッシュ判断は、全セグメントの所定の計画対象期間内の供給及び予測された需要を与えられて、計画対象期間内の使用可能キャッシュ空間の効用を増やし、潜在的に最大化することを目的として制御サーバによって実行される。キャッシュ判断は様々な形で実行される。一実施形態では、将来の需要のバランスをとり将来のサーバ負荷を減らすために、キャッシュ判断を、セグメントの一部を前もってピアにプリフェッチするという形にできる。これは、現在過小に評価されているメディアセグメントをフェッチするために、あるサーバ帯域幅を割り当てることを必要とする。別の実施形態では、一以上のサーバがプリフェッチを一切実行せず、キャッシュ置換方法が使用される。（例えば再生のために）要求したセグメントのダウンロードをピアが終了した時に、必ずサーバは、以前にキャッシュされたセグメントを保存すべきか現在ダウンロードされているセグメントを保存すべきかを判断する。別の実施形態では、ピアがこの判断を行う。一実施形態では、この判断はキャッシュの全体的な効用を改善するために行われる。ピアはこの判断に従ってそのキャッシュを更新する。プリフェッチ方法及びキャッシュ置換方法を一緒に使用して性能をさらに改善することもできる。
【００１７】
[0016]したがって、本明細書で開示されるテクノロジは、システムリソースを最適化する方法、及び需要と供給とを一致させるのに使用される機構において異なる。本発明の一実施形態は、メディアストリーミング要件、ネットワーク／サーバ／ピア帯域幅制約、メモリ制約、並びにランダムイベント（例えば、システムに参加するノード及びシステムから離脱するノード）を考慮に入れて、ピアを対にし、供給と需要とを一致させる効率的な形を展開する。一実施形態では、キャッシュトリガの信号の送信によりキャッシュ最適化判断が達成される。帯域内（余分な帯域幅使用なし）と帯域外（すなわち、プリフェッチ）との両方のキャッシュ方法を使用することができる。これらの特徴が全体として、本明細書で開示される技法を他のピア・ツー・ピア・ストリーミングの解決策とは異なる独自のものにしている。
【００１８】
[0017]本発明をより完全に説明するために、以下に多くの詳細な事項を説明する。しかし、本発明をこれらの具体的で詳細な事項なしでも実践できることは当業者にとって明白であろう。他の場面では、本発明を不明瞭にするのを避けるために、周知の構造及びデバイスを詳細にではなくブロック図形式で示す。
【００１９】
[0018]次の詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する操作の記号表現及びアルゴリズムに関して提示される。これらのアルゴリズム記述及び表現は、データ処理技術の当業者が彼らの作業の実質を他の当業者に最も効率的に伝えるのに使用する手段である。アルゴリズムは、本明細書では及び一般には、所望の結果につながるステップの自己矛盾のないシーケンスと考えられる。ステップは物理量の物理的操作を必要とするものである。必ずではないが通常これらの量は格納、転送、組合せ、比較、及び他の形の操作が可能な電気信号又は磁気信号の形をとる。時々、主に一般的な使用の理由から、これらの信号をビット、値、要素、記号、文字、項、数、又は類似物と称することが便利であることがわかっている。
【００２０】
[0019]しかし、上記及び類似する用語のすべてが、適当な物理量に関連付けられねばならず、これらの量に適用される単に便利なラベルであることに留意されたい。次の説明から明白なとおり、特にそうではないと述べない限り、この説明全体を通じて「処理」、「コンピューティング」、「計算」、「判定」、「表示」などの用語を利用する説明は、コンピュータシステムのレジスタ及びメモリ内の物理（電子）量として表されたデータを操作し、コンピュータシステムメモリ若しくはレジスタ又は他のそのような情報格納デバイス、情報伝送デバイス、又は情報表示デバイス内の物理量として同様に表された他のデータに変換する、コンピュータシステム又は類似する電子コンピューティングデバイスの作用及び処理を指すことを了解されたい。
【００２１】
[0020]本発明はその中で動作を実行する装置にも関する。特に要求される目的のためにこの装置を構成でき、或いは、この装置は、コンピュータに格納されるコンピュータプログラムによって選択的にアクティブ化され又は再構成される汎用コンピュータを含んでもよい。そのようなコンピュータプログラムを、フロッピディスク、光ディスク、ＣＤ−ＲＯＭ、及び光磁気ディスクを含む任意のタイプのディスク、読取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気カード、光カード、又は電子命令を格納するのに適し、それぞれがコンピュータシステムバスに接続される任意のタイプの媒体などのコンピュータ可読記憶媒体に格納ができるが、記憶媒体はこれらに限定されない。
【００２２】
[0021]本明細書で提示されるアルゴリズム及び表示は、任意の特定のコンピュータ又は他の装置に固有に関連しない。様々な汎用システムを本明細書で示すプログラムと共に使用することができ、或いは、要求される方法のステップを実行するためにより特殊化された装置を構成することが便利であるとわかる場合がある。これらの様々なシステムに必要な構造は以下の説明から明らかになる。さらに本発明は、特定のプログラミング言語を参照して説明されるようなものではない。様々なプログラミング言語を用いて、本明細書で説明される本発明の教示を実施できることを了解されたい。
【００２３】
[0022]機械可読媒体は、機械（例えば、コンピュータ）によって読取り可能な形で情報を格納し又は伝送するすべての機構を含む。例えば、機械可読媒体は、読取り専用メモリ（「ＲＯＭ」）、ランダムアクセスメモリ（「ＲＡＭ」）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、電気的、光学的、音響的、又は他の形の伝搬される信号（例えば、搬送波、赤外線信号、ディジタル信号など）などを含む。
【００２４】
概要
[0023]メディアストリーミングシステムは、ピア（例えばクライアントコンピュータシステム）にメディアコンテンツを供給する一以上のメディアサーバ、他のピア及びメディアサーバのうちの一以上に通信可能に接続されてそこからメディアコンテンツのセグメントを受信する複数のピア、並びに少なくとも一つの制御サーバを含む。各ピアは、セグメント及びメディアファイルを格納するキャッシュメモリと、通信可能に接続している他のピアにメディアコンテンツのセグメントを送信するための上り回線帯域幅とを含む、メディアコンテンツのセグメントを供給するためのリソースのセットを割り当てる。一又は複数の制御サーバは、ピアのメディアコンテンツ需要と割り当てられたリソースとを追跡して、要求されたメディアコンテンツの各アイテムの各セグメントを各ピアが受信する際の送信元の一以上のピア位置を特定する位置情報を判定し、位置情報をピアに送信する。
【００２５】
[0024]一実施形態では、メディアコンテンツ（例えばビデオ）のアイテムへのアクセスは、システムにおいてそのビデオが再生に利用可能である時間中に、システム内の一つの制御サーバによって制御される。一実施形態では、各制御サーバは、メディアファイルがどのように分割されるかを判定し、各セグメントのダウンロードレート及び再生遅延を判定するように動作可能である。
【００２６】
[0025]一実施形態では、各ピアはローカルに使用可能なリソースを少なくとも一つの制御サーバに対して指定する。一実施形態では、各ピアは、メディアの一つのセグメントだけを格納する大きさに制限されたキャッシュメモリを有する。一実施形態では、制御サーバは、ピアがシステムに加わった後に、メディアのセグメントをそのピアにストリーミングさせる。それに対してピアは、そのセグメントを自機のキャッシュメモリにキャッシュする。別の実施形態では、各ピアは複数のセグメントを格納できるキャッシュメモリを有し、キャッシュするピアのアップロード速度は、例えば各セグメントが等しい速度割当をとるなどのように、キャッシュされるセグメントのすべてに明確に指定された形で共有される（例えば、アップロードレートがＲでありピアが３個のセグメントをキャッシュできる場合には各セグメントはＲ／３で供給され、ピアが４個のセグメントをキャッシュできる場合には各セグメントはＲ／４で供給される）。
【００２７】
[0026]一実施形態では、制御サーバはピアにトリガを送信して、メディアコンテンツの一以上のセグメントのキャッシュ・プロセスを開始する。一実施形態では、ピアは制御サーバからトリガを受信して、メディアコンテンツの一以上のセグメントをキャッシュする。一実施形態では、ピアはトリガに応答して、一以上のメディアサーバ及び一以上の他のピアからこれらの一以上のセグメントをプリフェッチする。一実施形態では、ピアは即座に又は将来に再生される一以上のセグメントを受信する。
【００２８】
[0027]一実施形態では、制御サーバ又はピアは、ピアがセグメントを格納し続けるのか、それとも再生のためにダウンロードされる新しいセグメントでセグメントを上書きするのかを判定する。一実施形態では、新しいセグメントをキャッシュするかどうかの判定は、ある時間にわたって得られた、一以上のメディアサーバのうちの少なくとも一つの負荷削減の判定量に基づく。別の実施形態では、新しいセグメントをキャッシュするかどうかの判定は、新しいセグメントの将来の需要予測と、新しいセグメントを他のピアに供給するピア及びメディアサーバの能力とに基づく。
【００２９】
[0028]一実施形態では、制御サーバは各ピアによるメディアコンテンツの各セグメントの供給及び需要を追跡する。一実施形態では、制御サーバは、ピアに関するピア到着率及び供給−需要分析、並びにピアに関するメディアコンテンツのセグメントの供給及び需要を使用して、どのピアが要求されたセグメントを供給し得る候補であるのかを判定する。一実施形態では、制御サーバは、メディアコンテンツの所望のセグメントを特定の時刻にアクセス可能にすることで各ピアでの上り回線帯域幅利用を最大化することを試みることによって、これを判定する。一実施形態では、メディア（例えばビデオ）は連続セグメントに区分され、制御サーバは各セグメントの将来需要の予測値を計算する。
【００３０】
[0029]一実施形態では、制御サーバは将来のある時刻のメディアコンテンツの各セグメントに対応する供給曲線及び需要曲線を推定し、各推定値を使用して位置情報を判定するように動作可能である。一実施形態では、第１制御サーバはピア到着及び離脱時間の統計値を使用して推定値を生成する。別の実施形態では、制御サーバは、ピア到着及び離脱時間の統計値、特定のメディアセグメントが要求される時を示す情報、ノード到着間及び離脱間の統計値（例えば、到着間隔及び離脱間隔の平均値及び標準偏差）、ラウンドトリップ時間通信に関する情報（制御サーバと各ピアとの間のラウンドトリップ通信遅延、及び対となっているピアの間のラウンドトリップ遅延）、及び処理遅延（ストリーミング動作を容易にするために各ノードがパケットを解析しある種の機能を実行する必要があることに起因して発生する遅延）を使用して、推定値を生成する。別の実施形態では、制御サーバは、メディア再生速度、メディアダウンロードレート、及びメディアセグメントサイズのうちの一以上を使用して推定値を生成する。これらの推定値は規則的な又は不規則なインターバルで更新される。
【００３１】
[0030]一実施形態では、制御サーバは、各セグメントに関する供給及び需要に対応する供給曲線及び需要曲線からメディアファイルごと及びメディアファイルのセグメントごとに計算された効用尺度に基づいて推定値を生成する。一実施形態では、制御サーバは、各セグメントに関連する計算された効用関数に基づいて、どのセグメントをキャッシュすべきかを判定する。
【００３２】
[0031]図１は、メディアストリーミングシステムのブロック図である。図１に示すように、このシステムは、オリジナルメディアコンテンツ（例えばファイル）を格納および供給する複数のメディアサーバ１０１１〜３と、システム動作を監視および維持するとともにリソース管理、制御、割当、及び最適化を実行する制御サーバ１０２と、限られたローカルリソース（例えばメモリ空間や帯域幅、ＣＰＵサイクルなど）を有するクライアント１０３１〜５（本明細書ではピアとも称する）とを含む。図１には一つの制御サーバだけが示されているが、システム内に任意の個数のサーバを設けることができる。同様に３個のメディアサーバ及び５個のクライアントだけが図示されているが、システムにおけるこれらの個数は任意である。
【００３３】
[0032]制御サーバ１０２、メディアサーバ１０１１〜３、及び／又はクライアント１０３１〜５を、物理的に別々の又は同一位置のノードとすることができ、システム内の各ノードは通常、ある通信リンク及び／又はコンピュータネットワークを介して相互接続される。クライアント１０３１〜５自体を、メディアコンテンツの最初の生成元（したがって、メディアサーバ）及び／又は既存メディアコンテンツの利用者とすることができる。
【００３４】
[0033]一実施形態では、クライアントは、そのローカルリソースの一部を、それらがピア間のメディアコンテンツの配布に使用される範囲まで、メディア配布システムに提供する。そのような提供に関してクライアントに与えられる誘因は開示されず、本開示の対象でもない。一実施形態では、クライアントは、メディアファイルの特定のセグメントに関する要求（例えば、ＲＥＱ（メディア名、セグメント））を、システム内のクライアント及びそれらが現在キャッシュしているメディアコンテンツのセグメントのデータベース（例えばリスト）を維持している制御サーバ１０２に直接に送信する。したがって、クライアントはメディアコンテンツを全体的に捉え続ける。それに応答して、制御サーバ１０２は、メディアファイルの要求されたセグメントを所望の速度で供給できる位置をそのデータベースから検索する。制御サーバ１０２は、位置と、使用可能なリソースや距離などのような当該位置に関して考えられる属性とのリストを、要求元のクライアント１０３に応答する（例えば、ＲＥＰＬＹ（供給位置））。要求元のクライアント（例えばクライアント１０３１）が制御サーバ１０２から応答メッセージを受信すると、クライアント１０３１はその位置に連絡し、その位置が要求の条件を満たす場合には、当該位置は要求されたセグメントのストリーミングをクライアントに対して開始する。一実施形態では、位置のリストは、一以上のメディアサーバ１０１及び一以上の他のクライアントノード１０１を含む。図１の例では、クライアント１０３１は、メディアサーバ１０１２及びクライアント１０３４からのセグメントの要求を送信する。位置のリストは、クライアントノードのみを含んでも、メディアサーバのみを含んでも、これら双方を含んでもよい。図１には示していないが、一実施形態では、制御サーバ１０２は、位置の集合に制御メッセージを直接に送信することができ、当該位置の集合はその後、要求されたビデオセグメントを要求元のピアにプッシュ送信し始める。そのような「プッシュベースの」動作モードでは、送信元のピアは制御サーバ１０２への要求に対してビデオペイロードを期待する。
【００３５】
[0034]一実施形態では、要求元のクライアントは、多数のポイントからの並列ストリーミングをサポートすることができ、この場合に各ストリームは一意の情報を運ぶ。一実施形態では、一意の情報という特徴は、所定のセグメントのオーバーラップしない部分を異なるノードに明示的に要求することによって達成することができる。別の実施形態では、一意の情報という特徴は、各位置に格納されたオリジナルメッセージブロックから生成される一意の符号化ブロックによって達成される。符号化ブロックは、例えばリード・ソロモン（Ｒｅｅｄ−Ｓｏｌｏｍｏｎ）、トルネード・コード（Ｔｏｒｎａｄｏ  Ｃｏｄｅ）、ラプター・コード（Ｒａｐｔｏｒ  Ｃｏｄｅ）、ＬＴコード（ＬＴ  Ｃｏｄｅ）などの固定レート又はレートレスのｅｒａｓｕｒｅ  ｃｏｄｅを使用して生成することができる（ただし、これらに限定されない）。
【００３６】
[0035]一実施形態では、メディアストリーミングシステムは制御サーバ１０２とクライアント１０３１〜５との間の明示的制御シグナリング機構を使用する。図２に、ローカルリソースを制御サーバ２０２に周期的に報告する、システム内の多数のクライアントのうちの一つであるクライアント２０１を示す。図２に示すように、クライアント２０１は、システムに割り当てられた当該クライアントのキャッシュメモリのサイズと、当該クライアントの上り回線／下り回線帯域幅と、システムに提供した当該クライアントのＣＰＵサイクルと、当該クライアントのキャッシュに格納されたローカルコンテンツの表示とを伴うレポートを制御サーバ２０２に送信する。一実施形態では、クライアントは、当該クライアントが使用可能であり供給ノード及び／又は需要ノードとして実行できることを確認するための「ＡＬＩＶＥ」メッセージとしてもレポートメッセージを使用する。制御サーバ２０２は、各クライアントでプリフェッチ又は異なるキャッシュが必要であるかどうかを判断し、その判断結果の信号をクライアントに送信する。一実施形態では、制御サーバ２０２は、ＰＲＥＦＥＴＣＨ（メディア名、セグメント、供給位置）によってセグメントを指定することによってメディアセグメントをプリフェッチするようにクライアント２０１にシグナリングし、且つ／又はＣＡＣＨＥ（メディア名、セグメント）によってセグメントを指定することによってメディアセグメントをキャッシュするようにクライアント２０１にシグナリングする。したがって一実施形態では、制御サーバはシステム内のクライアント及びメディアサーバの全体的な状態を維持する。別の実施形態では、制御サーバは、より制限された範囲でシステムを監視し、他の制御サーバと協調して局地的な判断を行ってもよい。
【００３７】
[0036]一実施形態では、制御サーバは明示的な制御メッセージを発行することによってクライアントノードでのキャッシュ判断を明示的に始動させる。一実施形態では、一つの制御メッセージがクライアントに対して、当該クライアントがメディアファイルのいくつかのセグメントを実際に要求する前にそれらのセグメントをダウンロードする（例えばプリフェッチする）ように要求する。一実施形態では、プリフェッチされるべきセグメントがクライアントによって要求されたり求められたりすることがない場合がある。別の実施形態では、別の制御メッセージがクライアントに対して、まだクライアントによって求められていないが近い将来にクライアントによって求められると予測される将来のセグメントをキャッシュするように要求する。クライアントが最初のセグメントから最後のセグメント（ビデオストリーミングアプリケーションの場合）にわたって指示を順次発行する場合には、制御サーバは、クライアントがいつ将来のセグメントのダウンロードの要求を発行するかを予測することができる。したがって、将来のセグメントのいずれかに関する需要が供給より多い場合には、制御サーバは明示的な制御メッセージを送信することによってキャッシュ処理を始動させる。クライアントがトリガを受信すると、そのクライアントは順次ダウンロードを継続する。トリガによって示されるセグメントが通常のビデオストリーミング動作に従って受信することが予定されている場合には、クライアントはそのセグメントのキャッシュを開始する。一実施形態では、クライアントはセグメントのキャッシュを開始するとすぐにそのセグメントの供給に貢献する。別の実施形態では、クライアントはセグメントを完全にキャッシュした後に限ってそのセグメントの供給に貢献する。
【００３８】
[0037]一実施形態では、制御サーバは、ストリーミングシステムに対するクライアントの到着および離脱や、要求されたセグメント及び関連する要求時刻、様々なセグメントの供給及び需要の統計値、セグメント供給者、クライアントの供給量／需要量などを追跡する。一実施形態においてこの情報は、各セグメントの現在及び将来の供給曲線及び需要曲線を予測するのに使用される。別の実施形態では、予測された供給曲線及び需要曲線が各メディアセグメントの効用関数を定義するのに使用され、効用関数の値に基づいて、制御サーバは異なる時刻に異なるクライアント位置でキャッシュされるべきセグメントを判定する。一つの推定方法の例を図３に示す。他の周知の推定モデルを用いることができるが、本発明を不明瞭にするのを避けるために含めていない。
【００３９】
[0038]図３に示すように、各クライアントの需要曲線は、セグメントごとに線形曲線として予測することができ、この線形曲線はクライアントの到着時刻において時間軸上で始まり、クライアントの総ダウンロードレートと等しい傾きを有する。図３のチャートは、クライアントＡ、Ｂ、Ｃ及びＤがｔ０、ｔ１、ｔ２及びｔ３に到着し、これらがそれぞれ同じ合計速度でダウンロードする時の状況を示している。時刻ｔ２に制御サーバが時刻ｔでの需要を推定しようと試みているときに、制御サーバはどのセグメントがどのくらいの速さで求められるのかを正確に計算することができる。ｔがｔ３より大きい場合には、クライアントＤがまだこの図に含まれず新しい到着がランダムに発生するという事実のために、制御サーバは不正確なビューを有する。
【００４０】
[0039]一実施形態では、クライアントは要求されたメディアの最後のセグメントをダウンロードした後に離脱し、もはやセグメントを供給するためには使えなくなると推定される。するとシステムは、セグメントサイズ及び既存クライアントのダウンロードレートが既知なので、既存クライアントからの異なるセグメントの要求時刻を予測する。この要求時刻予測は将来の需要を推定するために使用される。システムは、離脱時刻を推定し、それに応じて供給曲線を更新することもできる。しかし、ランダムなノード離脱が許される場合には、要求時刻及び離脱時刻はもはや確定的に決まらない。ランダムなクライアント到着は不確実性をも増やす。したがって別の実施形態では、統計的方法を使用して、平均的な供給曲線及び需要曲線に対するランダムなノード到着及びノード離脱の影響を予測してもよい。
【００４１】
[0040]一実施形態では、制御サーバは以下のようにメディアファイルごとに動作する。ここで、表記を次のように定義する。
ｔｉ：現在の時刻
ｔ０：ホストのストリーム開始時刻
Δｔ：セグメント持続時間
Ｎ：セグメント数
推定ユーザ到着率
【数１】
2010537318.tif 000003
現在時刻ｔｉで推定される、将来時刻ｔ（ｔ≧ｔｉ）のセグメントｓ（１≦ｓ≦Ｎ，ｓ∈Ｚ＋）の総需要ビットレートの推定値：
【数２】
2010537318.tif 000004
現在時刻ｔｉで推定される、将来時刻ｔのセグメントｓをキャッシュするピアの総アップストリーム帯域幅の推定値：
【数３】
2010537318.tif 000005
制御サーバは、決定論的成分Ｄｄｅｔ及び統計学的成分Ｄｓｔｏからなるものとして需要を扱う。一実施形態において、平均需要は、次の式群を使用して、離散的な将来の時刻ｔについて時刻ｔｉに、
【数４】
2010537318.tif 000006
になるように推定される。
【数５】
2010537318.tif 000007
【数６】
2010537318.tif 000008
【数７】
2010537318.tif 000009
Ｄｄｅｔ（ｔｉ，１，ｔ１）＝（ｔｉ−Δｔ，ｔｉ］に到着する新しいクライアントによる総需要ビットレート
【数８】
2010537318.tif 000010
別の実施形態で、統計学部分が一以上のより高次の統計関数及び確率関数（例えば、標準偏差や、ユーザ到着の経験的分布に関する異なる百分率など）をも含むことに留意されたい。一実施形態では、需要推定値は、システムへのクライアント（ピア）の到着時刻を追跡することによって、離散時間ではなく連続時間について一般化される。
【００４２】
[0041]需要推定に似て、一実施形態では、供給推定は、次の式を使用して行われる。
【数９】
2010537318.tif 000011
Ｓｄｅｔ（ｔ，ｓ）＝Ｓｄｅｔ（ｔｉ，ｓ）
Ｓｄｅｔ（ｔｉ，ｓ）＝時刻ｔｉにセグメントｓをキャッシュするホストの総アップストリーム帯域幅
Ｓｓｔｏ（ｔ，ｓ）＝０
別の実施形態で、統計学部分が、例えば平均離脱レートなどの離脱プロセスの統計値を用いる非ゼロ項を含むことに留意されたい。
【００４３】
[0042]一実施形態では、制御サーバは、特定のユーザｙが時刻ｔにｓを供給しており、他のユーザの供給推定値が同じままであると仮定して、当該ｙから見た効用関数を
【数１０】
2010537318.tif 000012
として計算する。ここで、Ｉ［ｘ］は関数のことである。一実施形態では
【数１１】
2010537318.tif 000013
である。第２の実施形態では、
【数１２】
2010537318.tif 000014
である。第３の実施形態では、Ｉ［ｘ］＝ｘである。第４の実施形態では、
【数１３】
2010537318.tif 000015
であり、ここで、
【数１４】
2010537318.tif 000016
は、ユーザｙのアップロード速度である。他の実施形態では、効用を定義するために供給及び需要の他の任意の関数を用いることができる。異なる実施態様では、同一の又は異なるメディアファイルのセグメントにわたってセグメントサイズを同一又は可変と解釈することができる。
【００４４】
[0043]一実施形態では、制御サーバは、すべてのセグメントｓにまたがる下記の最適化問題を解くことによって、ストリーミングセッションの始めｔ０に新たに入ってくるクライアントにセグメントをプリフェッチすると判断する。
【数１５】
2010537318.tif 000017
次に、既に
【数１６】
2010537318.tif 000018
をキャッシュおよび供給するメディアサーバ及びクライアントのすべてのサブセットによって
【数１７】
2010537318.tif 000019
をプリフェッチすることができる。パラメータｈは最適化限界（ｏｐｔｉｍｉｚａｔｉｏｎ  ｈｏｒｉｚｏｎ）であり、最適化問題における先読みウィンドウ（ｌｏｏｋ  ａｈｅａｄ  ｗｉｎｄｏｗ）を定義する。積極的な最適化に関して制御サーバはｈを小さくセットし、例えばｈ＝１では１ステップ利用最大化（ｏｎｅ−ｓｔｅｐ  ｕｔｉｌｉｚａｔｉｏｎ  ｍａｘｉｍｉｚａｔｉｏｎ）を行う。それほど積極的でない最適化に関して制御サーバはｈを大きくセットし、例えば極端な値としてのｈ＝Ｎでは限界をシステム内のユーザの寿命としてセットする。別の実施形態では、制御サーバは、既にシステム内にあるクライアントを新たに来るホストとして扱うことによって、これらのクライアントにセグメントをプリフェッチする。
【００４５】
[0044]別の実施形態では、制御サーバは、新たにダウンロードされるセグメントの終りに各クライアントで１ステップキャッシュ法を始動させる（例えば、ｓｉ＝（ｔｉ−ｔ０）／Δｔが時刻ｔｉにダウンロードされる）。判断は、既にキャッシュされたセグメントｃを保存するか、これを時刻ｔｉに始まるｓｉに置換するかである。一実施形態では、サーバは、
【数１８】
2010537318.tif 000020
を計算し、
【数１９】
2010537318.tif 000021
である場合にｃはｓｉによって置換されなければならず、この情報はキャッシュトリガとしてクライアントに送信される。クライアントはｔｉにキャッシュを開始し、トリガを受信した後にｓｉを供給する。クライアントが局所的に使用可能な供給及び需要の情報を有する場合には、同一の計算及び判断を局所的に行うこともできる。プリフェッチとは異なって、この実施形態で余分な帯域幅はキャッシュのために使用されない。
【００４６】
[0045]別の実施形態では、制御サーバ（判断を実行するのに十分な情報が利用可能であればローカルクライアント）は、各新規セグメントのダウンロードの完了に対応する時刻に判断が行われる場合に、キャッシュ判断の一連の効用値を計算してトレリス（ｔｒｅｌｌｉｓ）グラフを作成することによって、複数ステップのキャッシュを始動させる。図４に、各クライアントノードでのキャッシュ方法の最良シーケンスを見つけるのに使用される動的計画法（又は同等にトレリス）ベースの最適化を示す。キャッシュシーケンスは各判断ポイントで、既存キャッシュを保存するか、あるいは完了されたばかりのセグメントで既存キャッシュを置換するかの２つに分岐される。既に合計の効用に関して他の経路によって支配されているものを除くすべての可能な経路について、合計の効用が計画対象期間について計算される。可能な経路の個数は、計画対象期間に達するまで時間と共に増加する。最適化問題は次のように述べることができる（この問題の説明に関しては多くの同様の変形例があり、これから述べることはそれらの定式化の一つにすぎないことに留意されたい）。
【００４７】
[0046]時刻ｔｉ（図４参照）において、クライアントはセグメントｃをキャッシュしており、セグメントｓｉのダウンロードを完了している。時刻ｔｉ＋ｈΔｔまでの判断のシーケンスのコストを計算するために経路ｒ＝｛ｓｊ（１），ｓｊ（２），…，ｓｊ（ｈ）｝を定義し、ここで、ｓｊ（ｍ）は時刻ｔｉ＋（ｍ−１）Δｔとｔｉ＋ｍΔｔとの間にキャッシュされたセグメントに対応する。時刻ｔｉにおいて、キャッシュに関する２個の選択肢のみがあり、これは、ｃ又はｓｉのいずれかが選択されることを意味する。時刻ｔｉ＋Δｔにおいては、キャッシュは、前のステップで判断されたものに依存してｃ、ｓｉ又はｓｉ＋１の間で発生し得る。トレリスグラフの頂点に従うとすべての可能な経路を列挙することができる。長さｈの考えられる経路すべてのセットをＰと表す。Ｐに含まれるｒ＝｛ｓｊ（１），ｓｊ（２），…，ｓｊ（ｈ）｝のそれぞれについて、一実施形態では経路効用は
【数２０】
2010537318.tif 000022
として定義される。その結果、キャッシュ判断は、Ｕｒを最大にする最適経路ｒ＊、すなわち
【数２１】
2010537318.tif 000023
を選択することになる。
【００４８】
[0047]最適経路により、ｈステップの終りまでに各ステップでキャッシュすべきものが明らかになる。供給曲線及び需要曲線がｔｉ＋ｈΔｔの終りより前に変化しない限り、最適経路は再計算を一切必要としない。一実施形態では、最適経路はトレリスグラフ上を網羅的に探索することで見つかる。しかし、一実施形態では動的計画法に基づく解決策を提供する。一つの動的計画法に基づく実施態様では、判断は次の最適化問題の解ということになる。問題：時刻（ｔｉ−Δ）おいてクライアントはそのキャッシュ内にｃを有し（図４参照）、時刻ｔｉにおいて、既にキャッシュされたセグメント（ｃ）を新たにダウンロードされるセグメント（ｓｉ＝（ｔｉ−ｔ０）／Δｔ）に置換し、これをｔｉ＋Δｔ以降において保存すべきかどうかを判断する必要がある。計画対象期間はｈとしてパラメータ化され、動的計画法は、１≦ｈ≦（Ｎ−ｓｉ）になるように長さｈを有するキャッシュ判断のすべての経路にわたって合計の効用を最大化するのに使用される。その後、経路効用関数ｑ（ｔ，ｓ，ｋ）が次の定義、制約、及び初期条件の下で計算される（ここで、ｓは離散時間ｔまで続く経路の最後のセグメントであり、ｋは同一経路の最初のセグメントである）。
【数２２】
2010537318.tif 000024
次に、次の計算が行われる。
【数２３】
2010537318.tif 000025
【数２４】
2010537318.tif 000026
である場合には、新しいセグメントｓｉはキャッシュ内の以前のセグメントｃに置き換わる。そうでない場合にはセグメントｃがキャッシュ内で保持される。
【００４９】
[0048]上記の最適化問題が動的計画法の特定の実施態様にすぎないことに留意されたい。他の実施態様では、異なる変形例の動的計画法の実施態様が含まれる。一実施形態では、計算面で効率的な実施態様のために、ある時刻の経路効用関数が次の時刻の経路効用関数の計算に使用される。これは、既に計算された経路のコストを格納し、新たに確立される経路のコストの計算にこれらを再利用することで行うことができる。一実施形態では、長さｈの経路にわたって計算する場合に（例えば、ｈステップの計画対象期間に関する効用を最大にするために）、トレリスグラフ内の経路の各頂点が時刻ｔｉ＋ｈΔｔまでの最適判断を提供するような最適経路が見つかる。供給曲線及び需要曲線の変化／更新が発生しない場合には、計画対象期間の終りまで最適経路を再計算する必要がない。
【００５０】
[0049]一般的な実施形態で、前述のキャッシュ方法のすべて、あるいはそれらの任意の組合せを一緒に用いることができる。
【００５１】
制御サーバの実施形態
[0050]図６は、制御サーバの一実施形態のブロック図である。制御サーバは、ハードウェア、ソフトウェア、又はこの両方の組合せを含む処理ロジックを含む。図６に示すように、制御サーバは、あるピアによって要求される各メディアコンテンツの各セグメントを各ピアが受信する際の送信元の位置を特定する位置情報を判定するために、システム内のピアのメディアコンテンツ需要及び割り当てられたリソースを追跡するトラッキングモジュール６０１を含む。一実施形態において、トラッキングモジュール６０１は、各ピアによるメディアコンテンツの各セグメントの供給及び需要を追跡する。
【００５２】
[0051]一実施形態では、トラッキングモジュール６０１は、ピアに関するピア到着率及び供給−需要分析と、ピアに関するメディアコンテンツのセグメントの供給及び需要とに基づいてキャッシュ位置を判定する。別の実施形態では、トラッキングモジュール６０１は、メディアコンテンツの所望のセグメントを特定の時刻にアクセス可能にすることによって各ピアでの上り回線帯域幅の利用を最大にすることを試みることで位置情報を判定する。更に別の実施形態では、トラッキングモジュール６０１は、ある時間にわたって達成される少なくとも一つのメディアサーバの負荷削減の判定量、及び新しいセグメントの将来需要の予測の判定量と、他のピアに新しいセグメントを供給するためのピア及びメディアサーバの能力とのうちの一以上に基づいて、新しいセグメントをキャッシュすべきかどうかを判定する。
【００５３】
[0052]一実施形態では、トラッキングモジュール６０１は、将来の時刻のメディアコンテンツの各セグメントに対応する供給曲線及び需要曲線を推定し、各推定値を使用してキャッシュ位置情報を判定する。その場合にトラッキングモジュール６０１は、ピア到着及び離脱時間の統計値と、特定のメディアセグメントが要求される時を示す情報と、ノードの到着間及び離脱間の統計値と、ラウンドトリップ時間通信及び処理遅延に関する情報と、メディア再生速度と、メディアダウンロードレートと、メディアセグメントサイズと、前記各セグメントに関する供給及び需要に対応する供給曲線及び需要曲線からメディアファイルごと及びメディアファイルのセグメントごとに計算された効用尺度とのうちの一以上を使用して供給曲線及び需要曲線を推定する。
【００５４】
[0053]一実施形態で、トラッキングモジュール６０１は、メディアファイルがどのように分割されるのかを判定し、各セグメントのダウンロードレート及び再生遅延をも判定する。
【００５５】
[0054]制御サーバは、位置情報をピアに送信する位置情報送信モジュール６０２も含む。
【００５６】
[0055]制御サーバは、トラッキングモジュール６０１及び送信モジュール６０２に接続された、ピアと通信するためのピアインターフェース６０３を含む。同様に、制御サーバは、トラッキングモジュール６０１及び送信モジュール６０２に接続された、システム内のメディアサーバと通信するためのメディアサーバインターフェース６０４を含む。一実施形態において、ピアインターフェース６０２及びメディアサーバインターフェース６０４は同一のインターフェースである。
【００５７】
[0056]制御サーバは、当該サーバの様々なモジュールの動作を制御する制御論理６１０も含む。
【００５８】
コンピュータシステムの一実施形態
[0057]図５は、本明細書で説明した動作の一以上を実行できる典型的なコンピュータシステムのブロック図である。図５に示すように、コンピュータシステム５００は典型的なクライアント又はサーバコンピュータシステムを含んでもよい。コンピュータシステム５００は、情報を伝える通信機構又はバス５１１と、情報を処理するためにバス５１１に接続されたプロセッサ５１２とを含む。プロセッサ５１２は、例えばＰｅｎｔｉｕｍ（商標）やＰｏｗｅｒＰＣ（商標）、Ａｌｐｈａ（商標）などのようなマイクロプロセッサを含むが、これらのマイクロプロセッサに限定されない。
【００５９】
[0058]システム５００は、さらに、プロセッサ５１２によって実行される情報及び命令を格納する、バス５１１に接続されたランダムアクセスメモリ（ＲＡＭ）又は他の動的記憶装置５０４（メインメモリと称する）を含む。メインメモリ５０４は、プロセッサ５１２による命令の実行中に一時的な変数又は他の中間情報を格納するためにも用いることができる。
【００６０】
[0059]コンピュータシステム５００は、プロセッサ５１２のために静的情報及び命令を格納する、バス５１１に接続された読取り専用メモリ（ＲＯＭ）及び／又は他の静的記憶装置５０６、並びに磁気ディスク又は光ディスクとそれに対応するディスクドライブなどのデータ記憶装置５０７も含む。データ記憶装置５０７は、情報及び命令を格納するためにバス５１１に接続される。
【００６１】
[0060]コンピュータシステム５００は、さらに、コンピュータユーザに情報を表示するためにバス５１１に接続された陰極線管（ＣＲＴ）又は液晶ディスプレイ（ＬＣＤ）などの表示デバイス５２１に接続されてもよい。プロセッサ５１２に情報及びコマンド選択を伝えるために、英数字及び他のキーを含む英数字入力デバイス５２２をバス５１１に接続することもできる。追加のユーザ入力デバイスとしては、バス５１１に接続され、プロセッサ５１２に方向情報及びコマンド選択を伝えたり表示デバイス５２１上のカーソル移動を制御したりするマウスやトラックボール、トラックパッド、スタイラス、又はカーソル方向キーなどのカーソル制御５２３がある。
【００６２】
[0061]バス５１１に接続できる別のデバイスはハードコピーデバイス５２４であり、これは、紙やフィルム、あるいは同様のタイプの媒体などに情報をマークするのに用いることができる。バス５１１に接続できる更に別のデバイスは、電話機又はハンドヘルド・パーム・デバイスと通信する無線／有線通信機能５２５である。
【００６３】
[0062]システム５００の任意の又はすべてのコンポーネント及び関連するハードウェアを、本発明で使用できることに留意されたい。しかし、コンピュータシステムの他の構成が、これらのデバイスの一部又はすべてを含み得ることを了解されたい。
【００６４】
[0063]本発明の多数の代替形態及び変形例が上記の説明を読んだ後に当業者に明白になることは明らかであるが、例示のために図示され説明された特定の実施形態が限定的なものと考えられることは全く意図していないことを理解されたい。したがって、様々な実施形態の詳細な説明は特許請求の範囲の範囲を限定することを意図しておらず、特許請求の範囲の範囲自体は本発明に必須と考えられる特徴のみを列挙するものである。
【図１】
2010537318.tif 000027
【図２】
2010537318.tif 000028
【図３】
2010537318.tif 000029
【図４】
2010537318.tif 000030
【図５】
2010537318.tif 000031
【図６】
2010537318.tif 000032
【手続補正書】
【提出日】平成22年4月2日(2010.4.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メディアコンテンツを供給する一以上のメディアサーバと、
それぞれが、メディアコンテンツのセグメントを受信するために、複数のピアのうちの一以上の他のピアと通信可能に接続されるとともに前記一以上のメディアサーバのうちの少なくとも一つと通信可能に接続される複数のピアであって、当該複数のピアのうちの少なくとも一つが、前記セグメント及びメディアファイルを格納するキャッシュメモリと、前記一つのピアが通信可能に接続される前記一以上のピアにメディアコンテンツの前記セグメントを送信するための上り回線帯域幅とを含む、メディアコンテンツの前記セグメントを供給するためのリソースのセットを割り当てる、該複数のピアと、
前記複数のピアのメディアコンテンツ需要及び割り当てられた前記リソースを追跡することで、要求された各メディアコンテンツの各セグメントを各ピアが受信する際の送信元の一以上の位置を特定するピア位置情報を判定する第１制御サーバであって、該少なくとも一つの制御サーバが前記各ピアに前記位置情報を送信するように動作可能である、該第１制御サーバと
を備えるシステム。
【請求項２】
前記第１制御サーバがメディアコンテンツの各セグメントの供給及び需要をピア毎に追跡する、請求項１に記載のシステム。
【請求項３】
前記第１制御サーバが、前記ピアに関する到着率及び供給−需要分析と前記ピアに関するメディアコンテンツのセグメントの供給及び需要とを用いて、どのピア位置がどのビデオセグメントをキャッシュすべきかを判定する、請求項１に記載のシステム。
【請求項４】
前記第１制御サーバが、メディアコンテンツの所望のセグメントを特定の時刻にアクセス可能にすることで各ピアの上り回線帯域幅利用を最大化することを試みることによって前記ピア位置情報を判定する、請求項１に記載のシステム。
【請求項５】
前記メディアが連続セグメントに分割され、前記第１制御サーバが各セグメントに関する将来需要の推定値を計算する、請求項１に記載のシステム。
【請求項６】
前記第１制御サーバが、前記複数のピアのうちの一つが前記システムに参加した後に該一つのピアに向けてメディアのセグメントをストリーミングさせ、該一つのピアが、自機のキャッシュメモリに該セグメントをキャッシュするように動作可能である、請求項１に記載のシステム。
【請求項７】
前記第１制御サーバ及び前記一つのピアのうちの一つが、該一つのピアが前記セグメントを格納し続けるか、再生のためにダウンロードされる新しいセグメントで前記セグメントを上書きするかを判定する、請求項６に記載のシステム。
【請求項８】
新しいセグメントをキャッシュするかどうかの判定が、ある時間にわたって達成される前記一以上のメディアサーバのうちの少なくとも一つでの負荷削減の判定量に基づく、請求項１に記載のシステム。
【請求項９】
新しいセグメントをキャッシュするかどうかの判定が、前記新しいセグメントの将来需要の予測と前記新しいセグメントを他のピアに供給するピア及びメディアサーバの能力とに基づく、請求項１に記載のシステム。
【請求項１０】
前記第１制御サーバが、あるビデオが前記システムでの再生に使用可能である時間中に前記ビデオへのアクセスを制御する、請求項１に記載のシステム。
【請求項１１】
各ピアが、メディアの設定された数のセグメントを格納する大きさに制限されたキャッシュメモリを有する、請求項１に記載のシステム。
【請求項１２】
前記第１制御サーバが、将来の時刻でのメディアコンテンツの各セグメントに対応する供給曲線及び需要曲線を推定し、各推定値を使用して前記位置情報を判定するように動作可能である、請求項１に記載のシステム。
【請求項１３】
前記第１制御サーバがピア到着及び離脱時間の統計値を用いて前記推定値を生成する、請求項１２に記載のシステム。
【請求項１４】
前記第１制御サーバが、ピア到着及び離脱時間の統計値と、特定のメディアセグメントが要求される時を示す情報と、ノード到着間及び離脱間の統計値と、ラウンドトリップ時間通信に関する情報と、処理遅延とを用いて前記推定値を生成する、請求項１２に記載のシステム。
【請求項１５】
前記第１制御サーバが、メディア再生速度、メディアダウンロードレート、及びメディアセグメントサイズのうちの一つ又は複数を用いて前記推定値を生成する、請求項１２に記載のシステム。
【請求項１６】
前記推定値が規則的な又は不規則なインターバルで更新される、請求項１２に記載のシステム。
【請求項１７】
前記第１制御サーバが、メディアファイルの各セグメントに関する供給及び需要に対応する供給曲線及び需要曲線から各メディアファイル及び該各セグメントについて計算される効用尺度に基づいて前記推定値を生成する、請求項１２に記載のシステム。
【請求項１８】
前記第１制御サーバが、各セグメントに関連する計算された効用関数に基づいて、キャッシュすべきセグメントを判定する、請求項１７に記載のシステム。
【請求項１９】
前記効用関数が、現在時刻で推定される将来時刻の前記各セグメントの総需要ビットレートの推定値と、前記現在時刻で推定される、前記将来時刻の前記各セグメントをキャッシュするピアの総アップストリーム帯域幅の推定値との差に適用される関数である、請求項１７に記載のシステム。
【請求項２０】
前記関数が、
【数１】
2010537318.tif 000033
から選択される関数を含み、ここでｘは差を表す、請求項１９に記載のシステム。
【請求項２１】
前記第１制御サーバが、メディアコンテンツの一以上のセグメントのキャッシュプロセスを開始するためにピアにトリガを送信するように動作可能である、請求項１に記載のシステム。
【請求項２２】
前記第１制御サーバが、メディアファイルがどのようにセグメント化されるかを判定し、各セグメントのダウンロードレート及び再生遅延を判定するように動作可能である、請求項１に記載のシステム。
【請求項２３】
少なくとも一つのピアが、局所的に使用可能なリソースを前記第１制御サーバに指定する、請求項１に記載のシステム。
【請求項２４】
前記複数のピアのうちの一つが、メディアコンテンツの一以上のセグメントをキャッシュするために前記第１制御サーバからトリガを受信するように動作可能である、請求項１に記載のシステム。
【請求項２５】
前記一つのピアが前記トリガに応答して前記一以上のメディアサーバ及び一以上の他のピアから前記一以上のセグメントをプリフェッチする、請求項２４に記載のシステム。
【請求項２６】
前記一つのピアが即座に又は将来に再生される前記一以上のセグメントを受信する、請求項２４に記載のシステム。
【請求項２７】
前記制御サーバが、ビデオセグメントを要求するピアへの前記ビデオセグメントのプッシュ送信をメディアサーバ及びピアのうちの少なくとも一つにさせるために、該少なくとも一つのメディアサーバ又はピアに一以上の制御メッセージを送信する、請求項１に記載のシステム。
【請求項２８】
要求された各メディアコンテンツの各セグメントを各ピアが受信する際の送信元の一以上の位置を特定する位置情報を判定するために、複数のピアのメディアコンテンツ需要及び割り当てられたリソースを追跡するステップと、
前記位置情報を前記各ピアに送信するステップと
を含む方法。
【請求項２９】
メディアコンテンツの各セグメントの供給及び需要をピア毎に追跡するステップをさらに含む、請求項２８に記載の方法。
【請求項３０】
前記ピアに関する到着率及び供給−需要分析と前記ピアに関するメディアコンテンツのセグメントの供給及び需要とを用いて、どのピア位置がどのビデオセグメントをキャッシュすべきかを判定するステップをさらに含む、請求項２８に記載の方法。
【請求項３１】
メディアコンテンツの所望のセグメントを特定の時刻にアクセス可能にすることで各ピアの上り回線帯域幅の利用を最大化することを試みることによって送信側のピア位置情報を判定するステップをさらに含む、請求項２８に記載の方法。
【請求項３２】
ある時間にわたって達成された少なくとも一つのメディアサーバの負荷削減の判定量と、新しいセグメントの将来需要の予測と、他のピアに前記新しいセグメントを供給するためのピア及びメディアサーバの能力とのうちの一つ又は複数に基づいて、前記新しいセグメントをキャッシュすべきかどうかを判定するステップをさらに含む、請求項２８に記載の方法。
【請求項３３】
将来の時刻のメディアコンテンツの各セグメントに対応する供給曲線及び需要曲線を推定するステップと、位置情報を判定するために各推定値を使用するステップとをさらに含み、
供給曲線及び需要曲線を推定する前記ステップが、ピア到着及び離脱時間の統計値と、特定のメディアセグメントが要求される時を示す情報と、ノード到着間及び離脱間の統計値と、ラウンドトリップ時間通信及び処理遅延に関する情報と、メディア再生速度と、メディアダウンロードレートと、メディアセグメントサイズと、メディアファイルの各セグメントに関する供給及び需要に対応する供給曲線及び需要曲線から各メディアファイル及び前記各セグメントについて計算された効用尺度とのうちの一つ又は複数を使用して実行される、請求項２８に記載の方法。
【請求項３４】
メディアファイルがどのようにセグメント化されるかを判定し、各セグメントのダウンロードレート及び再生遅延を判定することをさらに含む、請求項８に記載のシステム。
【国際調査報告】
2010537318.tif 000034
2010537318.tif 000035