(57)【要約】【課題】コンテンツ配信システムで、クライアント数やネットワークキャッシュのヒット率に変動があっても、安定したコンテンツ配信を行うこと。【解決手段】ネットワークキャッシュの資源を監視して、ネットワークキャッシュが破綻しそうなときに、クライアントを含めた配信システム全領域の資源で、余裕のある資源を検出し、それらの資源をコントロールして、ネットワークキャッシュの破綻を防止する為に使用することにより、安定なコンテンツ配信を実現する。【選択図】　図１
2004145613.tif 000002
【特許請求の範囲】
【請求項１】
複数のクライアントと、
前記クライアントに内蔵されているバッファ２メモリと、
前記クライアントに接続されている外部ネットワークと、
配信すべきコンテンツデータが記録されている蓄積デバイスと、
前記コンテンツデータを一時保持するバッファ１メモリと、
前記蓄積デバイスと前記バッファメモリを接続して制御するコントローラと、前記コントローラに接続されている内部ネットワークと、
前記内部ネットワークと前記外部ネットワークに接続されているネットワークキャッシュと、
前記バッファ１メモリの保持データ量検出手段と、
前記バッファ２メモリの保持データ量検出手段と、
前記ネットワークキャッシュ内の各々のコンテンツ毎のキャッシュフィルポインター検出手段と、
前記ネットワークキャッシュ内の各々のクライアント毎の配信ポインター検出手段と、
前記ネットワークキャッシュのコンテンツデータ量検出手段と、
前記ネットワークキャッシュの保持コンテンツ数検出手段と、
前記ネットワークキャッシュのキャッシュフィル中コンテンツ数検出手段と、
前記ネットワークキャッシュの配信中コンテンツ数検出手段と、
前記内部ネットワークよりの前記ネットワークキャッシュの入力データの転送速度検出手段と、
前記外部ネットワークへの前記ネットワークキャッシュの出力データの転送速度検出手段とを具備し、
前記バッファ１メモリの保持データ量検出手段の示す値と、
前記バッファ２メモリの保持データ量検出手段の示す値と、
前記ネットワークキャッシュ内の各々のコンテンツ毎のキャッシュフィルポインター検出手段の示す値と、
前記ネットワークキャッシュ内の各々のクライアント毎の配信ポインター検出手段の示す値と、
前記ネットワークキャッシュのコンテンツデータ量検出手段の示す値と、
前記ネットワークキャッシュの保持コンテンツ数検出手段の示す値と、
前記ネットワークキャッシュのキャッシュフィル中コンテンツ数検出手段の示す値と、
前記ネットワークキャッシュの配信中コンテンツ数検出手段の示す値と、
前記ネットワークキャッシュの入力データの転送速度検出手段の示す値と、
前記ネットワークキャッシュの出力データの転送速度検出手段の示す値の一部、又はすべてによって、
空いている資源を検出し、
前記空いている資源で、前記ネットワークキャッシュのコンテンツデータ量と、前記ネットワークキャッシュの保持コンテンツ数と、前記ネットワークキャッシュのキャッシュフィル中コンテンツ数と、前記ネットワークキャッシュの配信中コンテンツ数の一部、又は全てを減らす様に制御を行うことを特徴とする配信システム。
【請求項２】
１つのコンテンツに対応した前記キャッシュフィルポインター検出手段の示す値と、前記１つのコンテンツの配信を受けている全ての前記クライアントに対応する前記配信ポインター検出手段の示す値と、前記１つのコンテンツの配信を受けている全ての前記クライアントの配信の転送速度に応じて、前記１つのコンテンツのキャッシュフィルの転送速度を割り当てることを特徴とする請求項１記載の配信システム。
【請求項３】
１つのコンテンツに対応した前記キャッシュフィルポインター検出手段の示す値と、前記１つのコンテンツの配信を受けている全ての前記クライアントに対応する前記配信ポインター検出手段の示す値に応じて、前記１つのコンテンツに対応する保持領域の一部をキャッシュリプレースの為の領域とすることを特徴とする請求項１又は請求項２記載の配信システム。
【請求項４】
前記ネットワークキャッシュが、クライアント毎の配信コンテンツ及び配信経過時間及び配信済みコンテンツデータ量検出手段を具備し、１つの前記クライアントに対応した前記配信コンテンツ及び配信経過時間及び配信済みコンテンツデータ量検出手段の示す配信コンテンツと配信経過時間と配信済みコンテンツデータ量と、前記１つのクライアントに配信しているコンテンツの再生転送速度に応じて前記１つのクライアントの配信転送速度を割り当てることを特徴とする請求項１から請求項３のいずれか１項に記載の配信システム。
【請求項５】
前記保持コンテンツ数検出手段と、前記保持データ量検出手段と前記キャッシュフィル中コンテンツ数検出手段と、前記配信中コンテンツ数検出手段の示す値に応じて、前記コントローラーよりのコンテンツデータを前記ネットワークキャッシュに保持せずに直接前記クライアントへ配信することを特徴とする請求項１から請求項４のいずれか１項に記載の配信システム。
【請求項６】
前記ネットワークキャッシュが、前記配信中コンテンツ検出手段より出力される検出データを記録するコンテンツ配信統計記録手段を具備し、一定期間の前記コンテンツ配信統計記録手段の統計データに基づいてキャッシュリプレースを行う配信システムで、前記統計データが、コンテンツアクセス回数とコンテンツデータ量の積である請求項１から請求項５のいずれか１項に記載の配信システム。
【請求項７】
前記ネットワークキャッシュが、前記配信中コンテンツ検出手段より出力される検出データを記録するコンテンツ配信統計記録手段を具備し、一定期間の前記コンテンツ配信統計記録手段の統計データに基づいてキャッシュリプレースを行う配信システムで、前記統計データが、コンテンツが前記ネットワークキャッシュ内に留まっている時間とコンテンツデータ量の積である請求項１から請求項５のいずれか１項に記載の配信システム。
【請求項８】
前記ネットワークキャッシュが、前記配信中コンテンツ検出手段より出力される検出データを記録するコンテンツ配信統計記録手段を具備し、一定期間の前記コンテンツ配信統計記録手段の統計データに基づいてキャッシュリプレースを行う配信システムで、前記統計データが、コンテンツ配信時間である請求項１から請求項５のいずれか１項に記載の配信システム。
【請求項９】
前記ネットワークキャッシュが、前記配信中コンテンツ検出手段より出力される検出データを記録するコンテンツ配信統計記録手段を具備し、一定期間の前記コンテンツ配信統計記録手段の統計データに基づいてキャッシュリプレースを行う配信システムで、前記統計データが、コンテンツデータ量をコンテンツのリプレース回数＋１で割った値である請求項１から請求項５のいずれか１項に記載の配信システム。
【請求項１０】
前記ネットワークキャッシュが、所定のスケジュールでランダムにキャッシュリプレースを行うことを特徴とする請求項１から請求項５のいずれか１項に記載の配信システム。
【請求項１１】
前記ネットワークキャッシュで、所定のスケジュールで最大保持コンテンツ数、又は、最大保持容量、又は、最大保持コンテンツ数と最大保持容量を制限することを特徴とする請求項１から請求項１０のいずれか１項に記載の配信システム。
【請求項１２】
前記配信システム以外から得られた統計データにより、前記配信システム起動時に前記ネットワークキャッシュが保持するコンテンツデータの組み合わせを定め、前記配信システム以外から得られた統計データより作成したデータを前記コンテンツアクセス記録手段の統計データとすることを特徴とする請求項１から請求項１１のいずれか１項に記載の配信システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、連続メディア配信システムの制御方法に関する。
【０００２】
【従来の技術】
図２は従来の配信システムの構造を示す図である。
【０００３】
１００はクライアントであり、００７はディスクなどの蓄積デバイスであり、映像データ等の連続メディアのコンテンツデータが蓄積されている。
【０００４】
クライアント１００は、外部ネットワーク００３を通して蓄積デバイス００７上のコンテンツ配信要求を行う。
【０００５】
外部ネットワーク００３と蓄積デバイス００７の間には、ネットワークキャッシュ１０２が挿入されている。ネットワークキャッシュ１０２は、クライアント１００よりのコンテンツ配信要求を受け取り、要求されたコンテンツデータを持っている場合（キャッシュヒットと言う）は、そのコンテンツデータをクライアント１００に配信する。クライアント１００が要求しているコンテンツデータを持っていない（キャッシュミスヒットと言う）場合は、コンテンツ配信要求をコントローラー１０３へ転送する。
【０００６】
コントローラー１０３は、コンテンツ配信要求を受け取り、蓄積デバイス００７をコントロールし、コンテンツデータを読み出してネットワークキャッシュ１０２へ出力する。
【０００７】
配信を開始した直後より動作を説明する。
【０００８】
配信を開始すると、クライアント１００よりコンテンツ要求がネットワークキャッシュ１０２に送られる。
【０００９】
配信直後は、ネットワークキャッシュ１０２にはコンテンツが無いので、キャッシュミスヒットを起こし、蓄積デバイス００７より、ネットワークキャッシュ１０２にコンテンツデータがロードする（このロード動作をキャッシュフィルと言う）様に、コントローラ１０３にコンテンツ要求を転送する。
【００１０】
コントローラ１０３は、そのコンテンツ要求を受け取り、蓄積デバイス００７をコントロールして、要求されたコンテンツを蓄積デバイス００７より読み出し、読み出されたコンテンツデータをネットワークキャッシュ１０２にロードしてゆく。同時に、ロードされたコンテンツデータは、要求をだしたクライアント１００へ配信される。
【００１１】
ロード終了後は、そのコンテンツに対する配信要求がクライアント１００よりあっても、蓄積デバイス００７からでなく、ネットワークキャッシュ１０２よりそのコンテンツデータが配信される。
【００１２】
キャッシュフィルにより、ネットワークキャッシュ１０２の容量まで、コンテンツがロードされていく。更にキャッシュミスヒットが起きた場合、キャッシュフィルを行おうとするが、新たにコンテンツデータを保持する為の領域（容量）がネットワークキャッシュ１０２にないので、以前に保持していたコンテンツデータを破棄して、新しいコンテンツデータをロードしていく。この動作をキャッシュリプレースと言う。
【００１３】
この様に、ネットワークキャッシュ１０２が保持するコンテンツの種類は、キャッシュミスヒットが起きる度に変わっていく。
【００１４】
従来は、ネットワークキャッシュのヒット率を上げることで応答性や配信システムの安定性を確保しようとしてきた。例えば、特許文献１では、過去のアクセス回数やアクセス時刻に基づいたコンテンツのキャッシュリプレースを行うことで、キャッシュのヒット率を上げている。また、特許文献２では、コンテンツの属性情報、即ち、時刻情報、フレームレートや解像度を用いてキャッシュリプレースを行い、キャッシュのヒット率を上げている。
【００１５】
【特許文献１】
特開２０００−１３７６４２号公報
【特許文献２】
特開２０００−２０９２５８号公報
【００１６】
【発明が解決しようとする課題】
しかしながら上記のような構成では、ネットワークキャッシュのヒット率が低下すると、ネットワークキャッシュのコンテンツのリプレースができない、又はリプレースの速度が遅くなる、更に、クライアントでのコンテンツの要求応答時間が長くなったり、連続して再生されなければいけないコンテンツの再生が途切れるといういう問題点があった。
【００１７】
例えば、コンテンツの転送レートが３Ｍｂｐｓで、再生時間が２時間のコンテンツが１００本を配信するシステムを考える。コンテンツの総容量は、２７０ＧＢとなり、蓄積デバイス００７に保持されているとする。
【００１８】
通常、クライアントによるコンテンツの選択分布は、Ｚｉｐｆ分布で近似される（”Ｍｕｌｔｉｍｅｄｉａ　Ｓｅｒｖｅｒｓ”，　Ｄｉｎｋａｒ　Ｓｉｔａｒａｍ　ａｎｄ　Ａｓｉｔ　Ｄａｎ著）。Ｚｉｐｆ分布は、Ｃ／Ｘ（１−θ）で表される（Ｃは定数）。θ＝−０．５、ネットワークキャッシュ１０２のヒット率を９０％だとすると、必要なネットワークキャッシュ１０２の容量は、Ｙ＝Ｃ／Ｘ１．５の曲線で、Ｘ＝０よりの面積が９０％となるコンテンツ約２７本分、約７３ＧＢとなる。
【００１９】
次に、上記ネットワークキャッシュを上記配信システムに適用した時の配信の状態を考えてみる。
【００２０】
配信開始直後は、ネットワークキャッシュ１０２にコンテンツは無いので、クライアント１００よりのコンテンツ配信要求に対して、キャッシュミスヒットを起こす。よって、蓄積デバイス００７より、ネットワークキャッシュ１０２へのキャッシュフィルが起きる。キャッシュフィルによりネットワークキャッシュ１０２に保持されたコンテンツを配信要求を出したクライアント１００へ配信される。
【００２１】
この様なキャッシュフィルの間にも新たなコンテンツ要求がネットワークキャッシュ１０２に届く。その場合、キャッシュヒットすることもあり、その時は、ネットワークキャッシュ１０２より配信が行われる。
【００２２】
しかし、大部分のコンテンツ要求は、キャッシュミスヒットし、それらのキャッシュミスヒットによるキャッシュフィルにより、ネットワークキャッシュ１０２の容量７３ＧＢまで、コンテンツがネットワークキャッシュ１０２にロードされていく。上記システム例では、約２７のコンテンツが、ネットワークキャッシュ１０２内に保持される。
【００２３】
更にキャッシュミスヒットが起きた場合、キャッシュフィルを行おうとするが、新たにコンテンツデータを保持する為の領域（容量）がネットワークキャッシュ１０２にないので、キャッシュリプレースが起きる。
【００２４】
この時、ネットワークキャッシュ１０２に保持されているコンテンツで、配信中でなく、且つ、キャッシュフィル中でないコンテンツがあれば、そのコンテンツを新しい蓄積デバイス００７よりのコンテンツにリプレースする。
【００２５】
しかしながら、ネットワークキャッシュ１０２に保持されている２７のコンテンツが、すべて配信中かキャッシュフィル中ならば、キャッシュリプレースはできない。よって、ネットワークキャッシュ１０２内の何れかのコンテンツの配信とキャッシュフィルが終了するまで、キャッシュリプレース動作が停止してしまい、クライアントよりの要求応答時間が長くなり、安定した配信ができなくなる。
【００２６】
この様な状況は、ネットワークキャッシュのヒット率が低下した時に起こりやすい。キャッシュミスヒットが増え、キャッシュフィル中のコンテンツが増し、結果的にキャッシュのリプレースができなくなる可能性があるからである。上記例、ネットワークキャッシュ１０２の容量が７３ＧＢある場合で、ネットワークキャッシュ１０２のヒット率が９０％から７０％になった場合を考える。例えば、１００個のコンテンツ要求に対し、７０個のコンテンツ要求にはキャッシュがヒットするが、残り３０個のコンテンツ要求に対してはキャッシュヒットしない。ネットワークキャッシュ１０２内に２７のコンテンツまでしか保持できないことから、キャッシュのリプレースができなくなる可能性があり、安定した配信ができなくなる。
【００２７】
この様に、クライアントのコンテンツ選択分布が変わるだけで、ネットワークキャッシュの安定動作に大きく影響する。
【００２８】
また、クライアント１００の数が、急に増加した時にも、同様にキャッシュリプレースができなくなる。例えば、１００個のクライアント１００が同時にコンテンツ要求をすると、ネットワークキャッシュ１０２のヒット率が９０％以上で、平均して１０個のクライアント１００よりのコンテンツ要求がキャッシュヒットミスし、ネットワークキャッシュ１０２のリプレースが起きるが、３００個クライアント１００が同時にコンテンツ要求すると、ネットワークキャッシュ１０２のリプレースは、平均して３０個起こり、キャッシュリプレースができなくなる可能性が高く、安定した配信ができなくなる。
【００２９】
特に、ネットワークキャッシュのヒット率や配信クライアント数は、時間と共に大きく変化しうるパラメータであり、これらのパラメータの変化に対してのネットワークキャッシュの安定性は、配信システム実現のキーになりうる。
【００３０】
この様な不安定な動作、キャッシュリプレース動作の停止を避けるには、ネットワークキャッシュ１０２に十分大きな容量を確保して配信中でなく、且つ、キャッシュフィル中でないコンテンツの数が多くし、ネットワークキャッシュのヒット率を十分高く保ち、キャッシュリプレース動作が停止する可能性を小さくするしかなかった。
【００３１】
本発明は上記問題点に鑑み、キャッシュのヒット率が低下しても、又は、クライアントの数が増加しても、より安定して連続メディアの配信ができる配信システムを提供するものである。
【００３２】
【課題を解決するための手段】
本発明の骨子は、配信システム上で不安定な動作に陥りやすいネットワークキャッシュを安定化させることで、配信システム全体を安定化することを目的とし、その目的の為に、配信システム上で空いている資源を制御してネットワークキャッシュの安定化の為に使用する、又は、ネットワークキャッシュが保持するコンテンツをコンテンツ要求分布に合わす点にある。
【００３３】
本願の請求項１の発明は、外部ネットワーク上に接続されている複数のクライアントが各々バッファ２メモリを内蔵しているとし、このクライアントのコンテンツ要求により蓄積デバイス内のコンテンツをクライアントまで配信する配信システムで、蓄積デバイスとバッファ１メモリを制御するコントローラと、コントローラに接続されている内部ネットワークと、内部ネットワークと外部ネットワークに接続されているネットワークキャッシュとで構成された配信システムで、各々の構成要素の状態、すなわち、バッファ１メモリの保持データ量と、バッファ２メモリの保持データ量と、ネットワークキャッシュ内の各々のコンテンツ毎のキャッシュフィルポインターとネットワークキャッシュ内の各々のコンテンツ毎の配信ポインターとネットワークキャッシュのコンテンツデータ量とネットワークキャッシュの保持コンテンツ数とネットワークキャッシュのキャッシュフィル中コンテンツ数とネットワークキャッシュの配信中コンテンツ数と内部ネットワークよりのネットワークキャッシュの入力データの転送速度と外部ネットワークへのネットワークキャッシュの出力データの転送速度の示す値によって、空いている資源を検出し、ネットワークキャッシュが安定に動作する様に蓄積デバイスとバッファ１メモリとネットワークキャッシュを制御することを特徴とする配信システムである。
【００３４】
本願の請求項２の発明は、キャッシュフィルポインターの値とそのコンテンツの配信ポインターの値より、キャッシュフィルがすぐに終了しないコンテンツのキャッシュフィルに対しては、配信ポインターがアンダーフローを起こさない様にキャッシュフィルの転送速度を低く制御し、キャッシュフィルが終了しそうなコンテンツに対しては、キャッシュフィルの転送速度を高く制御することを特徴とする配信システムである。
【００３５】
本願の請求項３の発明は、コンテンツ毎に、キャッシュフィルポインターの値とそのコンテンツの配信ポインターの値で、キャッシュフィル及び配信が終了した領域をキャッシュリプレースにアサインすることを特徴とする配信システムである。
【００３６】
本願の請求項４の発明は、クライアント毎に配信コンテンツ、配信経過時間、配信済みコンテンツデータ量を検出してクライアントのバッファ２メモリがオーバーフローを起こさない様に配信の転送速度を高く制御することを特徴とする配信システムである。
【００３７】
本願の請求項５の発明は、ネットワークキャッシュが保持するコンテンツ数、データ量を検出してキャッシュリプレースができない時に、コンテンツをネットワークキャッシュに保持しないで直接クライアントに配信することを特徴とする配信システムである。
【００３８】
本願の請求項６の発明は、ネットワークキャッシュのキャッシュリプレースで、リプレースするコンテンツを一定期間のコンテンツアクセス回数とコンテンツデータ量の積をパラメータとして評価して選択することを特徴とする配信システムである。
【００３９】
本願の請求項７の発明は、ネットワークキャッシュのキャッシュリプレースで、リプレースするコンテンツを一定期間のコンテンツがネットワークキャッシュ内に留まっている時間とコンテンツデータ量の積をパラメータとして評価して選択することを特徴とする配信システムである。
【００４０】
本願の請求項８の発明は、ネットワークキャッシュのキャッシュリプレースで、リプレースするコンテンツを一定期間のコンテンツ配信時間をパラメータとして評価して選択することを特徴とする配信システムである。
【００４１】
本願の請求項９の発明は　ネットワークキャッシュのキャッシュリプレースで、リプレースするコンテンツをコンテンツデータ量を一定期間のコンテンツのリプレース回数＋１で割った値をパラメータとして評価して選択する配信システムである。
【００４２】
本願の請求項１０の発明は　ネットワークキャッシュが、所定のスケジュールでランダムにキャッシュリプレースを行うことで、ネットワークキャッシュに保持するコンテンツを部分的にリフレッシュしてコンテンツ要求分布の変化に追従さすことを特徴とする配信システムである。
【００４３】
本願の請求項１１の発明は　ネットワークキャッシュで、所定のスケジュールで最大保持コンテンツ数、又は、最大保持容量、又は、最大保持コンテンツ数と最大保持容量を制限することで、ネットワークキャッシュに保持するコンテンツを部分的にリフレッシュしてコンテンツ要求分布の変化に追従さすことを特徴とする配信システムである。
【００４４】
本願の請求項１２の発明は　配信システム以外から得られた統計データにより、配信システム起動時にネットワークキャッシュが保持するコンテンツデータの組み合わせを定め、配信システム以外から得られた統計データより作成したデータをコンテンツアクセス記録手段の統計データとすることを特徴とする配信システムである。
【００４５】
【発明の実施の形態】
以下本発明の実施例について、図面を参照しながら説明する。
【００４６】
図１は本発明の第１の実施形態におけるブロック図を説明している。
【００４７】
複数のクライアント００１が、外部ネットワーク００３に接続されている。各クライアント００１は、各々バッファ２メモリ００２を接続していて、外部ネットワーク００３よりのデータを一時保持できる様になっている。
【００４８】
ネットワークキャッシュ００４は、外部ネットワーク００３と内部ネットワーク００５の間に接続されている。ネットワークキャッシュ００４は、高速にアクセス可能なキャッシュメモリを内蔵している。また、ネットワークキャッシュ００４は、保持しているコンテンツのデータ量を示すコンテンツ容量カウンター０２０、保持しているコンテンツ数を示す保持コンテンツ数カウンター０１４、キャッシュフィル動作中のコンテンツの数を示すキャッシュフィル中コンテンツカウンター０１３、配信動作中のコンテンツ数を示す配信中コンテンツカウンター０１５、所定時間内に外部ネットワーク００３へ転送したデータ量を示す外部転送速度測定手段０２１、コンテンツ毎でクライアント毎に持っているコンテンツ内の配信されたデータの先頭アドレスを示す配信ポインター０１０、コンテンツ毎に持っているネットワークキャッシュ００４にロードされたコンテンツデータの先頭アドレスを示すキャッシュフィルポインター０１１、コンテンツを要求しているクライアント００１毎に持っているバッファ２メモリ００２内のデータ量を示すバッファ２メモリカウンター０１２を持っている。
【００４９】
更に、内部ネットワーク００５には、コントローラー００６が接続されている。コントローラー００６は、蓄積デバイス００７とバッファ１メモリ００８を接続していて、これらを制御して、蓄積デバイス００７よりのデータの読み出しや、バッファ１メモリ００８で蓄積デバイス００７より読み出したデータを一時保持する。また、蓄積デバイス００７よりのデータやバッファ１メモリ００８に一時保持したデータを内部ネットワークを通してネットワークキャッシュ００４に転送する。更に、所定時間内に内部ネットワーク００５へ転送したデータ量を示す内部転送速度測定手段０２２とバッファ１メモリ００８に保持されているコンテンツデータ量を示すバッファ１メモリカウンター０１６を持っている。また、コントローラー００６は、ネットワークキャッシュ００４に内蔵されているコンテンツ容量カウンター０２０、保持コンテンツ数カウンター０１４、キャッシュフィル中コンテンツカウンター０１３、配信中コンテンツカウンター０１５、外部転送速度測定手段０２１、配信ポインター０１０、キャッシュフィルポインター０１１、バッファ２メモリカウンター０１２の内容を参照できる。
【００５０】
蓄積デバイス００７は、映像や音声などの連続コンテンツを保持している。
【００５１】
次に、配信システムの概略の動作を起動時より説明する。
【００５２】
クライアント００１は、外部ネットワーク００３を経由して各々コンテンツ要求をネットワークキャッシュ００４に対して送信する。配信システム起動直後は、通常、ネットワークキャッシュ００４は空の状態であるので、ヒット率は０％で、クライアント００１よりのコンテンツ要求は、コントローラ００６へ送られる。
【００５３】
コンテンツ要求を受け取ったコントローラー００６は、蓄積デバイス００７を制御して、要求されたコンテンツを蓄積デバイス００７より読みとり、内部ネットワーク００５経由でネットワークキャッシュ００４に転送する。蓄積デバイス００７よりコンテンツデータを読む時、コントローラー００６は、所定の長さのデータを連続的に読む様に制御する。一般に、ディスクよりデータを読み出す時は、読み出したデータを転送する時間以外にオーバーヘッド時間と呼ばれる時間がかかる。オーバーヘッド時間は、大きく分けて２つの部分に分かれる。１つは、ディスク上の要求されているデータの保持されている領域へ再生ヘッドを移動する時間である。他の１つは、通常、ディスクは回転していることから、再生ヘッドが要求されたデータの先頭位置の角度がくるまで回転を待つ時間が必要である。この再生ヘッド又は記録ヘッドの移動のことをシークと呼び、シークにかかる時間をシーク時間を呼んでいる。この２つの時間を加えた時間がオーバーヘッド時間と言われている。ここでは、連続的にコンテンツを読むことで、データ当たりの蓄積デバイス００７のオーバーヘッド時間を小さくして読み出しデータの実効的な転送速度の低下を最小限度に押さえる効果がある。この長さをチャンク長と呼び、通常、コンテンツのデータ量に比べ小さな量、数百〜数千セクター程度の長さとなる。またこの時、内部ネットワーク００５にコンテンツデータを転送する毎に内部転送速度測定手段０２２内のカウンターをインクリメントしてゆく。内部転送速度測定手段０２２内のカウンターは、所定の時間毎に内部転送速度測定手段０２２内に値を保持された後にリセットされる。
【００５４】
また、転送すべきコンテンツデータが多く、内部ネットワーク００５がすぐに使用できない時は、一時バッファ１メモリ００８に保持し、内部ネットワーク００５が使用できる様になり次第、ネットワークキャッシュ００４に転送する。通常、内部ネットワーク００５の最大転送速度より蓄積デバイス００７の転送速度の方が速いので、チャンク長分のコンテンツデータを一度に内部ネットワーク００５に転送できず、一時バッファ１メモリ００８に保持する。この時、バッファ１メモリ００８にコンテンツデータが保持される毎に、バッファ１メモリカウンター０１６がインクリメントされる。また、バッファ１メモリ００８より読み出される毎にバッファ１メモリカウンター０１６がデクリメントされる。
【００５５】
バッファ１メモリ００８は、最低数チャンク長程度の容量は必要となり、蓄積デバイス００７よりのコンテンツデータの保持とネットワークキャッシュ００４へ読み出しが同時にできることが必要となる。
【００５６】
内部ネットワーク００５経由で入力されたコンテンツデータより、そのコンテンツ全体のデータ量のメモリ領域がネットワークキャッシュ００４に確保され、コンテンツ容量カウンター０２０の値は更新され、キャッシュフィル中コンテンツカウンター０１３がインクリメントされる。その入力されたコンテンツデータは、ネットワークキャッシュ００４内に確保された領域に保持される。入力されたコンテンツデータがネットワークキャッシュ００４内に保持される毎に、キャッシュフィルポインター０１１がインクリメントされる。また同時に、入力されたコンテンツデータは、コンテンツ要求を出したクライアント００１に配信され、配信ポインター０１０と外部転送速度測定手段０２１内のカウンターがインクリメントされる。外部転送速度測定手段０２１内のカウンターは、所定の時間毎に値を外部転送速度測定手段０２１内に保持された後にリセットされる。
【００５７】
以降、同じコンテンツが要求された時は、ネットワークキャッシュ００４内に要求されたコンテンツデータがあるので、ネットワークキャッシュ００４より要求したクライアント００１へコンテンツデータが配信される。この時、配信中コンテンツカウンター０１５をインクリメントする。また、配信コンテンツデータを外部ネットワーク００３に転送する毎にクライアント毎にある配信ポインター０１０と外部転送速度測定手段０２１内カウンターを更新してゆく。外部転送速度測定手段０２１内カウンターは、所定の時間毎に外部転送速度測定手段０２１内に値を保持された後リセットされる。
【００５８】
１つのコンテンツデータのキャッシュフィルが完了したら、保持コンテンツ数カウンター０１４がインクリメントされ、キャッシュフィル中コンテンツカウンター０１３がデクリメントされる。
【００５９】
内部ネットワーク００５に必要な転送レートは、１つのコンテンツのキャッシュフィル時間が、クライアント００１よりのコンテンツ要求がミスヒットする時間間隔が等しい時、即ちキャッシュフィル中のコンテンツ数が平衡することより求められる。Ｔｆｉｌｌを内部ネットワーク００５の転送速度、Ｃｃｏｎを平均コンテンツデータ量、Ｈをネットワークキャッシュ００４のヒット率、Ｓｉをクライアント００１の単位時間当たりの増加率とすると、１つのコンテンツのキャッシュフィル時間はＴｆｉｌｌ／Ｃｃｏｎであり、クライアント００１よりのコンテンツ要求がミスヒットする時間間隔は（１−Ｈ）／Ｓｉであるので、
Ｔｆｉｌｌ＝Ｃｃｏｎ×（１−Ｈ）／Ｓｉ
となる。Ｃｃｏｎを２．７ＧＢ、Ｈを９０％、Ｓｉを１秒とすると、Ｔｆｉｌｌは、約２．１６Ｇｂｐｓ必要となる。
【００６０】
配信されたコンテンツデータは、一旦バッファ２メモリ００２に保持される。バッファ２メモリ００２に所定のコンテンツデータがたまった後、ＦＩＦＯ動作にてバッファ２メモリ００２より読み出され、所定の速度でデコードされて映像や音声などになる。
【００６１】
バッファ２メモリカウンター０１２は、コンテンツ要求したクライアント００１毎あり、所定の量のコンテンツデータがバッファ２メモリ００２にたまるデータ量を、配信経過時間と配信ポインター０１０の示すアドレス、即ち配信済みコンテンツデータ量と配信しているコンテンツのデコード速度、即ち再生転送速度より演算し、バッファ２メモリカウンター０１２の値とする。また、バッファ２メモリカウンター０１２の代わりにコンテンツ要求したクライアント００１にバッファ２メモリ００２にたまっているコンテンツデータの量を報告させても良い。
【００６２】
１つの配信が完了したら、配信中コンテンツ数カウンター０１５が、デクリメントされる。
【００６３】
最初の配信が終了するまでに必要なネットワークキャッシュ００４の容量は、配信終了までにキャッシュフィルで必要なデータ量がネットワークキャッシュ００４の容量を超えないことから求められる。配信の転送速度をＴｄｉｓｔ、ネットワークキャッシュ００４の容量をＣｃａｓｈとすると、最初の配信が終了する時間はＣｃｏｎ／Ｔｄｉｓｔ、キャッシュフィルで保持データ量が増える速さは
（（１−Ｈ）／Ｓｉ）×Ｃｃｏｎであるので、
（Ｃｃｏｎ／Ｔｄｉｓｔ）×（（１−Ｈ）／Ｓｉ）×Ｃｃｏｎ＜Ｃｃａｓｈ
となる。ここでは、ヒット率は計算を簡単にする為、一定としている。Ｃｃｏｎを２．７ＧＢ、Ｈを９０％、Ｓｉを１秒、Ｔｄｉｓｔを再生の転送速度の１０倍の３０Ｍｂｐｓとすると、Ｃｃａｓｈは、最低１９４．４ＧＢ以上必要となる。実際は、ヒット率は、最初０％で、徐々に増えていき、コンテンツ１９４．４ＧＢになると、θ＝−０．５のＺｉｐｆ分布で９８．０％になる。
【００６４】
しかし、ネットワークキャッシュ００４起動時に、何らかのコンテンツをネットワークキャッシュ００４に保持されていれば、起動時のヒット率は０％ではない。例えば、７２ＧＢ分のコンテンツがランダムに保持されていれば、７２／２７０＝２７％のヒット率はある。更に、何らかの統計情報、例えば、ヒットチャートのデータなどを基にして保持するコンテンツを選択すれば、更にヒット率は高くなる。また、ヒット率が高くなるにつれて、ネットワークキャッシュ００４に必要な容量も減っていく。
【００６５】
その後コンテンツ要求に対してミスヒットが起きると、新たにキャッシュフィルするコンテンツデータに対するネットワークキャッシュ００４内のメモリ領域が確保できなくなる。そこで、ネットワークキャッシュ００４内で、キャッシュフィルが完了していて、配信していないコンテンツメモリ領域を探し、新しくキャッシュフィルを行うコンテンツデータのメモリ領域とするキャッシュリプレースを行う。
【００６６】
リプレースを行うネットワークキャッシュ００４内のコンテンツの選択は、ランダムに選択するよりも、何らかの統計情報を基に選択する方が、ヒット率が高くなる。
【００６７】
例えば、ネットワークキャッシュ００４内に過去に配信されたコンテンツを記録するコンテンツ配信統計記録手段を設け、過去一定期間のコンテンツの配信回数とそのコンテンツのデータ量の積をパラメータとして、そのパラメータが小さいコンテンツを選ぶとヒット率が高くなる。コンテンツのデータ量をパラメータとしたのは、再びキャッシュフィルした時のコスト、即ち、内部ネットワーク００５の転送レート及びキャッシュフィル時間を考慮したためである。
【００６８】
また、他のパラメータ例として、過去一定期間のコンテンツのネットワークキャッシュ保持時間とそのコンテンツのデータ量の積をパラメータとして、そのパラメータが小さいコンテンツを選ぶ、又は、過去一定期間のコンテンツの配信時間をパラメータとして、そのパラメータが小さいコンテンツを選ぶ、又は、コンテンツのデータ量を過去一定期間のコンテンツのリプレース回数＋１で割った値をパラメータとして、そのパラメータが小さいコンテンツを選ぶ、などがある。
【００６９】
次に、最初のキャッシュリプレースが起きてからの配信システムの制御方法を説明する。（表１）から（表４）は、配信システムの状態を５つのパラメータで示し、その状態に対する制御方法を表している。
【００７０】
【表１】
2004145613.tif 000003
【００７１】
【表２】
2004145613.tif 000004
【００７２】
【表３】
2004145613.tif 000005
【００７３】
【表４】
2004145613.tif 000006
【００７４】
尚、表中、ネットワークキャッシュをキャッシュ、バッファ１メモリをバッファ１、バッファ２メモリをバッファ２と略している。
【００７５】
（表１）から（表４）で、バッファ１容量のパラメータの項は、×はバッファ１メモリカウンター０１６の示す値が所定の値（スライス値）を超えた状態を示し、○は所定の値を下回った状態を示している。
【００７６】
（表１）から（表４）で、内部ネットワーク転送速度のパラメータ項は、×は内部転送速度測定手段０２２の示す値が所定の値（スライス値）を超えた状態を示し、○は所定の値を下回った状態を示している。
【００７７】
（表１）から（表４）で、キャッシュ容量のパラメータ項は、×はコンテンツ容量カウンター０２０の示す値が所定の値（スライス値）を超えた状態を示し、○は所定の値を下回った状態を示している。
【００７８】
（表１）から（表４）で、キャッシュ転送中コンテンツ数のパラメータ項は、×はキャッシュフィル中コンテンツカウンター０１３の示す値と配信中コンテンツカウンター０１５の示す値の和と保持コンテンツ数カウンター０１４が示す値の差が所定の値（スライス値）を超えた状態を示し、○は下回った状態を示している。
【００７９】
（表１）から（表４）で、バッファ２容量のパラメータ項は、×は、何れかのクライアント００１のバッファ２メモリカウンター０１２の示す値が所定の値（スライス値）を超えた状態を示し、○は所定の値を下回った状態を示している。
【００８０】
もちろん、上記各スライス値はヒステリシスを持って良いし、キャッシュフィル中コンテンツカウンター０１３の示す値と配信中コンテンツカウンター０１５の示す値の和と、保持コンテンツ数カウンター０１４が示す値の比較においても、ヒステリシスを持っていても良い。
【００８１】
また、上記各スライス値を複数持っていて、制御を段階的に強くしても良い。キャッシュフィル中コンテンツカウンター０１３の示す値と配信中コンテンツカウンター０１５の示す値の和と保持コンテンツ数カウンター０１４が示す値の差の比較においても、同様である。
【００８２】
以下に各状態を説明してゆく。
【００８３】
状態１は、バッファ１メモリ００８とバッファ２メモリ００２に更に多くのデータが保持でき、内部ネットワークは、更に多くのコンテンツを転送でき、ネットワークキャッシュ００４の容量はフルに近くて現在キャッシュフィル中のコンテンツ以外のコンテンツを保持できなく、保持中のコンテンツは、全ては配信中ではない状態にある。
【００８４】
この状態は、通常起こりうる状態で、新たなコンテンツリクエストが来ると、コンテンツのリプレースが起きる。
【００８５】
状態２は、バッファ１メモリ００８に更に多くのデータを保持することができなくて、バッファ２メモリ００２に更に多くのデータを保持することができ、内部ネットワーク００５は、更に多くのコンテンツを転送でき、ネットワークキャッシュ００４の容量はフルに近くて現在キャッシュフィル中のコンテンツ以外のコンテンツは保持できなく、保持中のコンテンツは、全てが配信中ではない状態にある。
【００８６】
この状態は、通常起こりうる状態で、バースト的に蓄積デバイス００７よりコンテンツを読んだ場合に、蓄積デバイス００７よりの転送レートが大きくて、一時コンテンツをバッファ１メモリ００８に保持した時に起きる。
【００８７】
制御方法としては、内部ネットワーク００５の転送レートに余裕があるので、コントローラ００６が、バッファ１メモリ００８より内部ネットワーク００５により速く転送する様に制御する。新たにキャッシュミスヒットが生じた時は、ネットワークキャッシュ００４は、キャッシュリプレースを行う。
【００８８】
状態３は、バッファ１メモリ００８とバッファ２メモリ００２に更に多くのデータを保持することができ、内部ネットワーク００５は、転送能力いっぱいまで転送していて、ネットワークキャッシュ００４の容量はフルに近くて現在キャッシュフィル中のコンテンツ以外のコンテンツの保持ができなく、保持中のコンテンツは、全てが配信中ではない状態にある。
【００８９】
この状態は、通常起こりうる状態で、特に、バースト的に蓄積デバイス００７よりコンテンツを読んだ場合に、蓄積デバイス００７よりの転送レートが大きくて、内部ネットワーク００５の転送能力いっぱいまで使用した時に起きる。
【００９０】
この場合、キャッシュフィルが遅れる可能性があるので、コントローラー００６は、キャッシュフィル中で且つ配信中のコンテンツで、アンダーフローしそう、即ち、配信ポインター０１０が、キャッシュフィルポインター０１１に追いつきそうなコンテンツをネットワークキャッシュ００４に報告させ、このコンテンツに内部ネットワーク００５の転送レートを優先的に割り当て、そのコンテンツのキャッシュフィルを早く終了させる。
【００９１】
状態４は、バッファ１メモリ００８に現在以上のデータを保持することができなくて、バッファ２メモリ００２は更に多くのデータが保持することができ、内部ネットワーク００５は、転送能力いっぱいまで転送していて、ネットワークキャッシュ００４の容量はフルに近くて現在キャッシュフィル中のコンテンツ以外のコンテンツは保持することができなく、保持中のコンテンツは、全てが配信中ではない状態にある。
【００９２】
この状態は、通常起こりうる状態で、特に、バースト的に蓄積デバイス００７よりコンテンツを読んだ場合に、蓄積デバイス００７よりの転送レートが大きくて、内部ネットワーク００５の転送能力いっぱいまで使用し、それでも転送しきれずに、一時コンテンツをバッファ１メモリ００８に保持した時に起きる。
【００９３】
この場合、キャッシュフィルが遅れる可能性があるので、コントローラー００６は、キャッシュフィル中で且つ配信中のコンテンツで、アンダーフローしそう、即ち、配信ポインター０１０が、キャッシュフィルポインター０１１に追いつきそうなコンテンツをネットワークキャッシュ００４に報告させ、このコンテンツに内部ネットワーク００５の転送レートを優先的に割り当て、そのコンテンツのキャッシュフィルを早く終了させる。また、バッファ１メモリ００８がオーバーフローする可能性もあるので、コントローラー００６は、蓄積デバイス００７よりの読み込みを一時中断する。
【００９４】
状態５は、バッファ１メモリ００８に更に多くのデータを保持することができ、何れかのクライアント００１のバッファ２メモリ００２は更に多くのデータを保持することができなく、内部ネットワーク００５は、更に多くのコンテンツを転送でき、ネットワークキャッシュ００４の容量はフルに近くて現在キャッシュフィル中のコンテンツ以上のコンテンツの保持ができなく、保持中のコンテンツは、全てが配信中ではない状態にある。
【００９５】
この状態は、ネットワークキャッシュ００４よりクライアント００１への配信の転送レートが大きい時に起きる。
【００９６】
この場合、バッファ２メモリ００２がオーバーフローする可能性があるので、ネットワークキャッシュ００４は、そのクライアント００１への配信の転送レートを下げる。
【００９７】
状態６は、バッファ１メモリ００８に更に多くのデータを保持することができなく、何れかのクライアント００１のバッファ２メモリ００２は現在以上のデータを保持することができなく、内部ネットワーク００５は、更に多くのコンテンツを転送でき、ネットワークキャッシュ００４の容量はフルに近くて現在キャッシュフィル中のコンテンツ以上のコンテンツを保持することができなく、保持中のコンテンツは、全てが配信中ではない状態にある。
【００９８】
この状態は、バースト的に蓄積デバイス００７よりコンテンツを読んだ場合に、蓄積デバイス００７よりの転送が速くて、一時コンテンツをバッファ１メモリ００８に保持して、且つ、ネットワークキャッシュ００４より何れかのクライアント００１への配信の転送レートが大きい時に起きる。
【００９９】
この場合、バッファ１メモリ００８、バッファ２メモリ００２が、オーバーフローする可能性があるので、コントローラー００６は、蓄積デバイス００７のコンテンツ読み込みを一時中断し、ネットワークキャッシュ００４は、バッファ２メモリ００２がオーバーフローしそうなクライアント００１への配信の転送レートを下げる。
【０１００】
状態７は、バッファ１メモリ００８に更に多くのデータが保持でき、バッファ２メモリ００２には現在以上のデータが保持できなく、内部ネットワーク００５は、転送能力いっぱいまで転送していて、ネットワークキャッシュ００４の容量はフルに近くて現在キャッシュフィル中のコンテンツ以上のコンテンツは保持できなく、保持中のコンテンツは、全てが配信中ではない状態にある。
【０１０１】
この状態は、バースト的に蓄積デバイス００７よりコンテンツを読んだ場合に、蓄積デバイス００７よりの転送が速く、内部ネットワーク００５の転送能力いっぱいまで使用し、且つ、ネットワークキャッシュ００４よりクライアント００１への配信の転送レートが大きい特に起きる。
【０１０２】
この場合、バッファ２メモリ００２が、オーバーフローする可能性があるので、ネットワークキャッシュ００４は、バッファ２メモリ００２がオーバーフローしそうなクライアント００１への配信の転送レートを下げる。また、キャッシュフィルが遅れる可能性があるので、コントローラー００６は、キャッシュフィル中で且つ配信中のコンテンツで、アンダーフローしそう、即ち、配信ポインター０１０が、キャッシュフィルポインター０１１に追いつきそうなコンテンツをネットワークキャッシュ００４に報告させ、このコンテンツに内部ネットワーク００５の転送レートを優先的に割り当て、そのコンテンツのキャッシュフィルを早く終了させる。
【０１０３】
状態８は、バッファ１メモリ００８とバッファ２メモリ００２に現在以上のデータが保持できなく、内部ネットワーク００５は、転送能力いっぱいまで転送していて、ネットワークキャッシュ００４の容量はフルに近くて現在キャッシュフィル中のコンテンツ以上のコンテンツは保持できなく、保持中のコンテンツは、全てが配信中ではない状態にある。
【０１０４】
この状態は、バースト的に蓄積デバイス００７よりコンテンツを読んだ場合に、蓄積デバイス００７よりの転送が速く、内部ネットワーク００５の転送能力いっぱいまで使用し、それでも転送しきれずに、一時コンテンツをバッファ１メモリ００８に保持し、且つ、ネットワークキャッシュ００４よりクライアント００１への配信の転送レートが大きい時に起きる。
【０１０５】
この場合、バッファ１メモリ００８が、オーバーフローする可能性があるので、コントローラー００６は、蓄積デバイス００７のコンテンツ読み込みを一時中断しする。また、特定のクライアント００１のバッファ２メモリ００２が、オーバーフローする可能性があるので、ネットワークキャッシュ００４は、そのクライアント００１への配信の転送レートを下げる。また、キャッシュフィルが遅れる可能性があるので、コントローラー００６は、キャッシュフィル中で且つ配信中のコンテンツで、アンダーフローしそう、即ち、配信ポインター０１０が、キャッシュフィルポインター０１１に追いつきそうなコンテンツをネットワークキャッシュ００４に報告させ、このコンテンツに内部ネットワーク００５の転送レートを優先的に割り当て、そのコンテンツのキャッシュフィルを早く終了させる。
【０１０６】
状態９は、バッファ１メモリ００８とバッファ２メモリ００２に更に多くのデータが保持でき、内部ネットワーク００５は、更にコンテンツを転送でき、ネットワークキャッシュ００４の容量は、現在キャッシュフィル中のコンテンツより更に多くのコンテンツは保持でき、保持中のコンテンツは、全てが配信中である状態に近い状態にある。
【０１０７】
この状態は、通常起こり得る状態で、ネットワークキャッシュ００４のヒット率が高い時に起きる。特に処理はない。
【０１０８】
状態１０は、バッファ１メモリ００８に現在以上のデータが保持できなく、バッファ２メモリ００２は更に多くのデータが保持でき、内部ネットワーク００５は、更にコンテンツを転送でき、ネットワークキャッシュ００４の容量は、現在キャッシュフィル中のコンテンツより更に多くのコンテンツは保持でき、保持中のコンテンツは、全てが配信中である状態に近い状態にある。
【０１０９】
この状態は、通常起こり得る状態で、バースト的に蓄積デバイス００７よりコンテンツを読んだ場合に、蓄積デバイス００７よりの転送が速く、処理しきれずに、一時コンテンツをバッファ１メモリ００８に保持した時に起きる。
【０１１０】
この場合、バッファ１メモリ００８が、オーバーフローする可能性があるので、コントローラー００６は、より多くの内部ネットワーク００５の転送レートをキャッシュフィルにアサインする。
【０１１１】
状態１１は、バッファ１メモリ００８とバッファ２メモリ００２に更に多くのデータが保持でき、内部ネットワーク００５は、転送能力いっぱいまで転送していて、ネットワークキャッシュ００４の容量は、現在キャッシュフィル中のコンテンツより更に多くのコンテンツは保持でき、保持中のコンテンツは、全てが配信中である状態に近い状態である。
【０１１２】
この状態は、バースト的に蓄積デバイス００７よりコンテンツを読んだ場合に、蓄積デバイス００７よりの転送が速く、内部ネットワーク００５の転送能力いっぱいまで使用している時に起きる。
【０１１３】
この場合、キャッシュフィルが遅れる可能性があるので、コントローラー００６は、キャッシュフィル中で且つ配信中のコンテンツで、アンダーフローしそう、即ち、配信ポインター０１０が、キャッシュフィルポインター０１１に追いつきそうなコンテンツをネットワークキャッシュ００４に報告させ、このコンテンツに内部ネットワーク００５の転送レートを優先的に割り当て、そのコンテンツのキャッシュフィルを早く終了させる。
【０１１４】
状態１２は、バッファ１メモリ００８に現在以上のデータが保持できなく、バッファ２メモリ００２に更に多くのデータが保持でき、内部ネットワーク００５は、転送能力いっぱいまで転送していて、ネットワークキャッシュ００４の容量は、現在キャッシュフィル中のコンテンツより更に多くのコンテンツは保持でき、保持中のコンテンツは、全てが配信中である状態に近い状態である。
【０１１５】
この状態は、バースト的に蓄積デバイス００７よりコンテンツを読んだ場合に、蓄積デバイス００７よりの転送が速く、内部ネットワーク００５の転送能力いっぱいまで使用し、それでも転送しきれずに、一時コンテンツをバッファ１メモリ００８に保持する時に起きる。
【０１１６】
この場合、バッファ１メモリ００８が、オーバーフローする可能性があるので、コントローラー００６は、蓄積デバイス００７のコンテンツ読み込みを一時中断しする。また、キャッシュフィルが遅れる可能性があるので、コントローラー００６は、キャッシュフィル中で且つ配信中のコンテンツで、アンダーフローしそう、即ち、配信ポインター０１０が、キャッシュフィルポインター０１１に追いつきそうなコンテンツをネットワークキャッシュ００４に報告させ、このコンテンツに内部ネットワーク００５の転送レートを優先的に割り当て、そのコンテンツのキャッシュフィルを早く終了させる。
【０１１７】
状態１３は、バッファ１メモリ００８に更に多くのデータが保持でき、何れかのクライアント００１のバッファ２メモリ００２に現在以上のデータが保持できず、内部ネットワーク００５に更に多くのコンテンツを転送でき、ネットワークキャッシュ００４の容量は、現在キャッシュフィル中のコンテンツより更に多くのコンテンツは保持でき、保持中のコンテンツは、全てが配信中である状態に近い状態である。
【０１１８】
この状態は、ネットワークキャッシュ００４よりクライアント００１への配信の転送レートが大きい時に起きる。
【０１１９】
この場合、特定のクライアント００１のバッファ２メモリ００２が、オーバーフローする可能性があるので、ネットワークキャッシュ００４は、そのクライアント００１への配信の転送レートを下げる。
【０１２０】
状態１４は、バッファ１メモリ００８とバッファ２メモリ００２に現在以上のデータが保持できなく、内部ネットワーク００５は、更に多くのコンテンツを転送でき、ネットワークキャッシュ００４の容量は、現在キャッシュフィル中のコンテンツより更に多くのコンテンツは保持でき、保持中のコンテンツは、全てが配信中である状態に近い状態である。
【０１２１】
この状態は、バースト的に蓄積デバイス００７よりコンテンツを読んだ場合に、蓄積デバイス００７よりの転送が速く、処理しきれずに一時コンテンツをバッファ１メモリ００８に保持し、且つ、ネットワークキャッシュ００４よりクライアント００１への配信の転送レートが大きい時に起きる。
【０１２２】
この場合、バッファ１メモリ００８が、オーバーフローする可能性があるので、コントローラー００６は、より多くの内部ネットワーク００５の転送レートをキャッシュフィルにアサインする。また、特定のクライアント００１のバッファ２メモリ００２が、オーバーフローする可能性があるので、ネットワークキャッシュ００４は、そのクライアント００１への配信の転送レートを下げる。
【０１２３】
状態１５は、バッファ１メモリ００８にデータが保持でき、何れかのクライアント００１のバッファ２メモリ００２に現在以上のデータが保持できなく、内部ネットワーク００５は、転送能力いっぱいまで転送していて、ネットワークキャッシュ００４の容量は、現在キャッシュフィル中のコンテンツより更に多くのコンテンツは保持でき、保持中のコンテンツは、全てが配信中である状態に近い状態である。
【０１２４】
この状態は、バースト的に蓄積デバイス００７よりコンテンツを読んだ場合に、蓄積デバイス００７よりの転送が速く、内部ネットワーク００５の転送能力いっぱいまで使用し、且つ、ネットワークキャッシュ００４よりクライアント００１への配信の転送レートが大きい時に起きる。
【０１２５】
この場合、特定のクライアント００１のバッファ２メモリ００２が、オーバーフローする可能性があるので、ネットワークキャッシュ００４は、そのクライアント００１への配信の転送レートを下げる。また、キャッシュフィルが遅れる可能性があるので、コントローラー００６は、キャッシュフィル中で且つ配信中のコンテンツで、アンダーフローしそう、即ち、配信ポインター０１０が、キャッシュフィルポインター０１１に追いつきそうなコンテンツをネットワークキャッシュ００４に報告させ、このコンテンツに内部ネットワーク００５の転送レートを優先的に割り当て、そのコンテンツのキャッシュフィルを早く終了させる。
【０１２６】
状態１６は、バッファ１メモリ００８とバッファ２メモリ００２に現在状のデータが保持できなく、内部ネットワーク００５は、転送能力いっぱいまで転送していて、ネットワークキャッシュ００４の容量は、現在キャッシュフィル中のコンテンツより更に多くのコンテンツは保持でき、保持中のコンテンツは、全てが配信中である状態に近い状態である。
【０１２７】
この状態は、バースト的に蓄積デバイス００７よりコンテンツを読んだ場合に、蓄積デバイス００７よりの転送が速く、内部ネットワーク００５の転送能力いっぱいまで使用し、それでも転送しきれずに、一時コンテンツをバッファ１メモリ００８に保持し、且つ、ネットワークキャッシュ００４よりクライアント００１への配信の転送レートが大きい時に起きる。
【０１２８】
この場合、バッファ１メモリ００８が、オーバーフローする可能性があるので、コントローラー００６は、ディスクのコンテンツ読み込みを一時中断しする。また、特定のクライアント００１のバッファ２メモリ００２が、オーバーフローする可能性があるので、ネットワークキャッシュ００４は、そのクライアント００１への配信の転送レートを下げる。また、キャッシュフィルが遅れる可能性があるので、コントローラー００６は、キャッシュフィル中で且つ配信中のコンテンツで、アンダーフローしそう、即ち、配信ポインター０１０が、キャッシュフィルポインター０１１に追いつきそうなコンテンツをネットワークキャッシュ００４に報告させ、このコンテンツに内部ネットワーク００５の転送レートを優先的に割り当て、そのコンテンツのキャッシュフィルを早く終了させる。
【０１２９】
状態１７は、バッファ１メモリ００８とバッファ２メモリ００２にデータが保持でき、内部ネットワーク００５は、更にコンテンツを転送でき、ネットワークキャッシュ００４の容量は、現在キャッシュフィル中のコンテンツ以外のコンテンツを保持することができなく、保持中のコンテンツは、全てが配信中である状態に近い状態である。この状態は、ネットワークキャッシュ００４の容量が小さい時、又は、配信クライアント数が多い時に起きる。
【０１３０】
この場合、内部ネットワーク００５の転送レートに余裕があるので、コントローラー００６は、蓄積デバイス００７のコンテンツ読みとりの転送レートを上げて、内部ネットワーク００５の転送能力いっぱいまで転送レートをキャッシュフィルにアサインし、キャッシュフィルが早く終了する様にする。また、より多くのコンテンツをバッファ２メモリ００２に保持できるクライアント００１があるので、ネットワークキャッシュ００４は、そのクライアント００１への配信の転送レートを上げることで、配信を早く終了できる様にする。それでも、この状態で、新たなクライアント００１よりのコンテンツ要求でキャッシュミスが発生したら、内部ネットワーク００５の転送レートに余裕があるので、ネットワークキャッシュ００４は、そのコンテンツをネットワークキャッシュ００４に保持せずに直接外部ネットワークに転送してクライアント００１に配信できる。
【０１３１】
状態１８は、バッファ１メモリ００８に現在以上のデータが保持できなくて、バッファ２メモリ００２にデータが保持でき、内部ネットワーク００５は、更にコンテンツを転送でき、ネットワークキャッシュ００４の容量はフルに近くて現在キャッシュフィル中のコンテンツ以外のコンテンツを保持することができなく、保持中のコンテンツは、全てが配信中である状態に近い状態である。
【０１３２】
この状態は、ネットワークキャッシュ００４の容量が小さい時、ネットワークキャッシュ００４のヒット率が低下した時、又は、配信数が多い時に起きる。
【０１３３】
この場合、内部ネットワーク００５の転送レートに余裕があるので、コントローラー００６は、キャッシュフィルにより多くの内部ネットワーク００５の転送レートをアサインし、キャッシュフィルが早く終了する様にする。また、より多くのコンテンツをバッファ２メモリ００２に保持できるクライアント００１があるので、ネットワークキャッシュ００４は、そのクライアント００１への配信の転送レートを上げることで、配信を早く終了できる様にする。それでも、この状態で、新たなクライアント００１よりのコンテンツ要求で、キャッシュミスが発生したら、内部ネットワーク００５の転送レートに余裕があるので、ネットワークキャッシュ００４は、そのコンテンツをネットワークキャッシュ００４に保持せずに直接外部ネットワークに転送してクライアント００１に配信できる。
【０１３４】
状態１９は、バッファ１メモリ００８とバッファ２メモリ００２に更に多くのデータが保持でき、内部ネットワーク００５は、転送能力いっぱいまで転送していて、ネットワークキャッシュ００４の容量はフルに近くて現在キャッシュフィル中のコンテンツ以外のコンテンツは保持できなく、保持中のコンテンツは、全てが配信中である状態に近い状態である。
【０１３５】
この状態は、ネットワークキャッシュ００４の容量が小さい時、ネットワークキャッシュ００４のヒット率が低下した時、又は、配信クライアント数が多い時に起きる。
【０１３６】
この場合、キャッシュフィルが遅れる可能性があるので、コントローラー００６は、キャッシュフィル中で且つ配信中のコンテンツで、アンダーフローしそう、即ち、配信ポインター０１０が、キャッシュフィルポインター０１１に追いつきそうなコンテンツをネットワークキャッシュ００４に報告させ、このコンテンツに内部ネットワーク００５の転送レートを優先的に割り当て、そのコンテンツのキャッシュフィルを早く終了させる。また、より多くのコンテンツをバッファ２メモリ００２に保持できるクライアント００１があるので、ネットワークキャッシュ００４は、そのクライアント００１への配信の転送レートを上げることで、配信を早く終了できる様にする。それでも、この状態で、新たなクライアント００１よりのコンテンツ要求で、キャッシュミスが発生したら、ネットワークキャッシュ００４は、そのコンテンツをネットワークキャッシュ００４に保持せずに直接外部ネットワーク００３に転送してクライアント００１に配信する。また、コントローラー００６は、そのコンテンツに内部ネットワーク００５の転送レートをできるだけアサインする。また、ネットワークキャッシュ００４は、ネットワークキャッシュ００４内の各コンテンツの保持領域で、キャッシュフィルが終了し、配信が終了した領域が最も大きいコンテンツを配信ポインター０１０とキャッシュフィルポインター０１１より演算して求め、その領域を新たなコンテンツの保持領域としてアサインしても良い。この場合は、元の配信中のコンテンツは、保持されていないとみなし、保持コンテンツ数カウンター０１４をデクリメントし、コンテンツ容量カウンター０２０よりこの配信中のコンテンツの容量分を減算する。
【０１３７】
状態２０は、バッファ１メモリ００８に現在以上のデータを保持することができなく、バッファ２メモリ００２にデータが保持でき、内部ネットワーク００５は、転送能力いっぱいまで転送していて、ネットワークキャッシュ００４の容量はフルに近くて現在キャッシュフィル中のコンテンツ以外のコンテンツは保持できなく、保持中のコンテンツは、全てが配信中である状態に近い状態である。
【０１３８】
この状態は、ネットワークキャッシュ００４の容量が小さい時、ネットワークキャッシュ００４のヒット率が低下した時、又は、配信クライアント数が多い時に起きる。
【０１３９】
この場合、バッファ１メモリ００８が、オーバーフローする可能性があるので、コントローラー００６は、蓄積デバイス００７のコンテンツ読み込みを一時中断しする。また、キャッシュフィルが遅れる可能性があるので、コントローラー００６は、キャッシュフィル中で且つ配信中のコンテンツで、アンダーフローしそう、即ち、配信ポインター０１０が、キャッシュフィルポインター０１１に追いつきそうなコンテンツをネットワークキャッシュ００４に報告させ、このコンテンツに内部ネットワーク００５の転送レートを優先的に割り当て、そのコンテンツのキャッシュフィルを早く終了させる。また、バッファ２メモリ００２により多くのコンテンツを保持できるクライアント００１があるので、ネットワークキャッシュ００４は、そのクライアント００１への配信の転送レートを上げることで、配信を早く終了できる様にする。それでも、この状態で、新たなクライアント００１よりのコンテンツ要求で、キャッシュミスが発生したら、ネットワークキャッシュ００４は、そのコンテンツをネットワークキャッシュ００４に保持せずに直接外部ネットワーク００３に転送してクライアント００１に配信する。また、コントローラー００６は、そのコンテンツに内部ネットワーク００５の転送レートをできるだけアサインする。また、ネットワークキャッシュ００４は、ネットワークキャッシュ００４内の各コンテンツの保持領域で、キャッシュフィルが終了し、配信が終了した領域が最も大きいコンテンツを配信ポインター０１０とキャッシュフィルポインター０１１より演算して求め、その領域を新たなコンテンツの保持領域としてアサインしても良い。この場合は、元の配信中のコンテンツは、保持されていないとみなし、保持コンテンツ数カウンター０１４をデクリメントし、コンテンツ容量カウンター０２０よりこの配信中のコンテンツの容量分を減算する。
【０１４０】
状態２１は、バッファ１メモリ００８に更に多くのデータが保持でき、バッファ２メモリ００２には現在以上のデータが保持できなく、内部ネットワーク００５は、更にコンテンツを転送でき、ネットワークキャッシュ００４の容量はフルに近くて現在キャッシュフィル中のコンテンツ以外のコンテンツは保持できなく、保持中のコンテンツは、全てが配信中である状態に近い状態である。
【０１４１】
この状態は、ネットワークキャッシュ００４の容量が小さい時、又は、配信クライアント数が多い時に起きる。
【０１４２】
この場合、特定のクライアント００１のバッファ２メモリ００２が、オーバーフローする可能性があるので、ネットワークキャッシュ００４は、そのクライアント００１への配信の転送レートを下げる。また、内部ネットワーク００５の転送レートに余裕があるので、コントローラー００６は、ディスクのコンテンツ読みとりの転送レートを上げて、内部ネットワーク００５の転送能力いっぱいまで転送レートをキャッシュフィルにアサインし、キャッシュフィルが早く終了する様にする。それでも、この状態で、新たなクライアント００１よりのコンテンツ要求で、キャッシュミスが発生したら、内部ネットワーク００５の転送レートに余裕があるので、ネットワークキャッシュ００４は、そのコンテンツをネットワークキャッシュ００４に保持せずに直接外部ネットワーク００３に転送してクライアント００１に配信する。
【０１４３】
状態２２は、バッファ１メモリ００８に現在以上のデータを保持することができなく、バッファ２メモリ００２に更に多くのデータが保持でき、内部ネットワーク００５は、更に多くのコンテンツを転送でき、ネットワークキャッシュ００４の容量はフルに近くて現在キャッシュフィル中のコンテンツ以外のコンテンツは保持できなく、保持中のコンテンツは、全てが配信中である状態に近い状態である。
【０１４４】
この状態は、ネットワークキャッシュ００４の容量が小さい時、ネットワークキャッシュ００４のヒット率が低下した時、又は、配信クライアント数が多い時に起きる。
【０１４５】
この場合、バッファ１メモリ００８が、オーバーフローする可能性があるので、コントローラー００６は、キャッシュフィルにより多くの内部ネットワーク００５の転送レートをアサインし、キャッシュフィルが早く終了する様にする。また、特定のクライアント００１のバッファ２メモリ００２が、オーバーフローする可能性があるので、ネットワークキャッシュ００４は、そのクライアント００１への配信の転送レートを下げる。それでも、この状態で、新たなクライアント００１よりのコンテンツ要求で、キャッシュミスが発生したら、内部ネットワーク００５の転送レートに余裕があるので、ネットワークキャッシュ００４は、そのコンテンツをネットワークキャッシュ００４に保持せずに直接外部ネットワーク００３に転送してクライアント００１に配信する。
【０１４６】
状態２３は、バッファ１メモリ００８に更に多くのデータが保持でき、バッファ２メモリ００２に現在以上のデータを保持することができなく、内部ネットワーク００５は、転送能力いっぱいまで転送していて、ネットワークキャッシュ００４の容量はフルに近くて現在キャッシュフィル中のコンテンツ以外のコンテンツは保持できなく、保持中のコンテンツは、全てが配信中である状態に近い状態である。
【０１４７】
この状態は、ネットワークキャッシュ００４の容量が小さい時、ネットワークキャッシュ００４のヒット率が低下した時、又は、配信クライアント数が多い時に起きる。
【０１４８】
この場合、キャッシュフィルが遅れる可能性があるので、コントローラー００６は、キャッシュフィル中で且つ配信中のコンテンツで、アンダーフローしそう、即ち、配信ポインター０１０が、キャッシュフィルポインター０１１に追いつきそうなコンテンツをネットワークキャッシュ００４に報告させ、このコンテンツに内部ネットワーク００５の転送レートを優先的に割り当て、そのコンテンツのキャッシュフィルを早く終了させる。また、特定のクライアント００１のバッファ２メモリ００２が、オーバーフローする可能性があるので、ネットワークキャッシュ００４は、そのクライアント００１への配信の転送レートを下げる。それでも、この状態で、新たなクライアント００１よりのコンテンツ要求で、キャッシュミスが発生したら、ネットワークキャッシュ００４は、そのコンテンツをネットワークキャッシュ００４に保持せずに直接外部ネットワーク００３に転送してクライアント００１に配信する。また、コントローラー００６は、そのコンテンツに内部ネットワーク００５の転送レートをできるだけアサインする。また、ネットワークキャッシュ００４は、ネットワークキャッシュ００４内の各コンテンツの保持領域で、キャッシュフィルが終了し、配信が終了した領域が最も大きいコンテンツを配信ポインター０１０とキャッシュフィルポインター０１１より演算して求め、その領域を新たなコンテンツの保持領域としてアサインしても良い。この場合は、元の配信中のコンテンツは、保持されていないとみなし、保持コンテンツ数カウンター０１４をデクリメントし、コンテンツ容量カウンター０１２よりこの配信中のコンテンツの容量分を減算する。
【０１４９】
状態２４は、バッファ１メモリとバッファ２メモリに現在以上のデータが保持できなく、内部ネットワーク００５は、転送能力いっぱいまで転送していて、ネットワークキャッシュ００４の容量はフルに近くて現在キャッシュフィル中のコンテンツ以外のコンテンツは保持できなく、保持中のコンテンツは、全てが配信中である状態に近い状態である。
【０１５０】
この状態は、ネットワークキャッシュ００４の容量が小さい時、ネットワークキャッシュ００４のヒット率が低い時、又は、配信クライアント数が多い時に起きる。
【０１５１】
この場合、バッファ１メモリ００８が、オーバーフローする可能性があるので、コントローラー００６は、蓄積デバイス００７のコンテンツ読み込みを一時中断しする。また、特定のクライアント００１のバッファ２メモリ００２が、オーバーフローする可能性があるので、ネットワークキャッシュ００４は、そのクライアント００１への配信の転送レートを下げる。また、キャッシュフィルが遅れる可能性があるので、コントローラー００６は、キャッシュフィル中で且つ配信中のコンテンツで、アンダーフローしそう、即ち、配信ポインター０１０が、キャッシュフィルポインター０１１に追いつきそうなコンテンツをネットワークキャッシュ００４に報告させ、このコンテンツに内部ネットワーク００５の転送レートを優先的に割り当て、そのコンテンツのキャッシュフィルを早く終了させる。それでも、この状態で、新たなクライアント００１よりのコンテンツ要求で、キャッシュミスが発生したら、ネットワークキャッシュ００４は、そのコンテンツをネットワークキャッシュ００４に保持せずに直接外部ネットワーク００３に転送してクライアント００１に配信する。また、コントローラー００６は、そのコンテンツに内部ネットワーク００５の転送レートをできるだけアサインする。また、ネットワークキャッシュ００４は、ネットワークキャッシュ００４内の各コンテンツの保持領域で、キャッシュフィルが終了し、配信が終了した領域が最も大きいコンテンツを配信ポインター０１０とキャッシュフィルポインター０１１より演算して求め、その領域を新たなコンテンツの保持領域としてアサインしても良い。この場合は、元の配信中のコンテンツは、保持されていないとみなし、保持コンテンツ数カウンター０１４をデクリメントし、コンテンツ容量カウンター０２０よりこの配信中のコンテンツの容量分を減算する。
【０１５２】
上記状態１と状態９は、通常の状態である。状態２より状態８と状態１０より状態１６は、ネットワークキャッシュ００４のヒット率が低下したり、クライアント数が増加したりすると起き得る。できるだけ状態１や状態９に近づける様に制御しなければいけない。
【０１５３】
状態１７より状態２４は、ネットワークキャッシュ００４が非常に不安定な動作をしている。想定していたネットワークキャッシュ００４のヒット率やクライアント数を大きく逸脱している可能性がある。上記制御方法実行して利用しうる資源を１００％使用して、状態１より状態１６に移行しなければいけない。
【０１５４】
また、アクセス分布は、時間に伴って変化しているので、ネットワークキャッシュ００４のコンテンツとコンテンツ要求の分布が合わなくなることがある。その場合は、ネットワークキャッシュ００４を所定のスケジュールでランダムにキャッシュリプレースを行うことにより、ネットワークキャッシュ００４に保持されているコンテンツの一部をリフレッシュし、現状のコンテンツ要求分布に合わすことができる。
【０１５５】
同様の効果は、所定のスケジュールでネットワークキャッシュ００４の最大保持コンテンツ数、又は、最大保持容量、又は、最大保持コンテンツ数と最大保持容量を制限することでも得られる。
【０１５６】
また、この様なネットワークキャッシュ００４をクライアント００１とコントローラ００６の間に多段、又は、並列に入れると、ネットワークキャッシュ００４の動作はより安定する。
【０１５７】
【発明の効果】
以上説明したように本願の請求項１、２、３、４、５の発明では、配信システムで空いている資源をネットワークキャッシュが安定な動作を行う為にアサインすることで、安定なコンテンツ配信を実現をすることができる。
【０１５８】
請求項６、７、８、９、１２の発明では、ネットワークキャッシュのヒット率を高め、更に安定なコンテンツ配信を実現をすることができる。
【０１５９】
請求項１０、１１の発明では、ネットワークキャッシュのコンテンツの分布をコンテンツ要求分布に合わすことでヒット率を高め、更に安定なコンテンツ配信を実現をすることができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態におけるブロック図
【図２】従来の配信システムを説明する図
【符号の説明】
００１　クライアント
００２　バッファ２メモリ
００３　外部ネットワーク
００４　ネットワークキャッシュ
００５　内部ネットワーク
００６　コントローラー
００７　蓄積デバイス
００８　バッファ１メモリ
０１０　配信ポインター
０１１　キャッシュフィルポインター
０１２　バッファ２メモリカウンター
０１３　キャッシュフィル中コンテンツカウンター
０１４　保持コンテンツ数カウンター
０１５　配信中コンテンツカウンター
０１６　バッファ１メモリカウンター
０２０　コンテンツ容量カウンター
０２１　外部転送速度測定手段
０２２　内部転送速度測定手段１
１００　クライアント
１０２　ネットワークキャッシュ
１０３　コントローラー
【図１】
2004145613.tif 000007
【図２】
2004145613.tif 000008