(57)【要約】【課題】クライアント装置が全パケットを受信する受信時間の長期化を防止し、効率的に全パケットをクライアント装置に送信することを課題とする。【解決手段】コンテンツ配信装置１０は、コンテンツデータを特定長で分割し、分割された各コンテンツデータをパケット化してプログラム転送パケットを生成する。そして、コンテンツ配信装置１０は、生成されたプログラム転送パケットごとに、コンテンツデータ全体における分割データ位置に応じて位相を割当て、位相に対応する優先度を各プログラム転送パケットに設定する。続いて、コンテンツ配信装置１０は、優先度を設定された各プログラム転送パケットをコンテンツデータの先頭から順次送信し、全てのプログラム転送パケットが一巡回送信されると、各プログラム転送パケットに割当てられた位相を変更するように制御する。【選択図】        図１
2010103772.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツデータを複数に分割し、当該分割された各コンテンツデータをパケット化して転送パケットを生成するパケット分割部と、
前記パケット分割部によって生成された転送パケットごとに、前記コンテンツデータ全体における位置に応じて位相を割当て、当該位相を割り当てられた各転送パケットが送信先へ送信される優先性の度合いを示す優先度を各転送パケットに設定する優先度設定部と、
前記優先度設定部によって優先度を設定された各転送パケットをコンテンツデータの先頭から順次送信するパケット送信部と、
前記パケット送信部によって全ての転送パケットが一巡回送信されると、前記各転送パケットに割当てられた位相を変更するように制御する位相制御部と、
を備えることを特徴とするデータ配信装置。
【請求項２】
前記優先度設定部は、優先と非優先を交互に繰り返し、かつ、２のべき乗周期でも優先と非優先を繰り返す形状である重畳波形状の優先度を各転送パケットに設定することを特徴とする請求項１に記載のデータ配信装置。
【請求項３】
前記パケット送信部は、転送パケットの送信先である送信先装置の受信状況に応じて、前記転送パケットの送信速度を調整し、当該調整された送信速度で前記各転送パケットをコンテンツデータの先頭から順次送信することを特徴とする請求項１または２に記載のデータ配信装置。
【請求項４】
転送パケットの送信先である複数の送信先装置から受信状況をそれぞれ受信し、当該受信状況を集約する受信状況集約部をさらに備え、
前記パケット送信部は、前記受信状況集約部によって集約された受信状況に応じて、前記転送パケットの送信速度を調整し、当該調整された送信速度で前記各転送パケットをコンテンツデータの先頭から順次送信することを特徴とする請求項３に記載のデータ配信装置。
【請求項５】
前記パケット送信部は、転送パケットの送信先である送信先装置から受信済みの転送パケットに関する情報を受信した場合に、当該受信済みの転送パケットをスキップして転送パケットを送信することを特徴とする請求項１〜４のいずれか１つに記載のデータ配信装置。
【請求項６】
データ配信装置から送信される転送パケットを再分割するパケット再分割部と、
前記パケット再分割部によって再分割された転送パケットごとに、前記コンテンツデータ全体における分割データ位置に応じて位相を割当て、当該位相に対応する優先度を各転送パケットに再設定する優先度再設定部と、
前記優先度再設定部によって優先度を設定された各転送パケットをコンテンツデータの先頭から順次中継するパケット中継部と、
前記データ配信装置から前記転送パケットの先頭を受信すると、前記各転送パケットに割当てられた位相を変更するように制御する中継位相制御部と、
を備えることを特徴とする中継装置。
【請求項７】
コンテンツデータを複数に分割し、当該分割された各コンテンツデータをパケット化して転送パケットを生成するパケット分割ステップと、
前記パケット分割ステップによって生成された転送パケットごとに、前記コンテンツデータ全体における位置に応じて位相を割当て、当該位相を割り当てられた各転送パケットが送信先へ送信される優先性の度合いを示す優先度を各転送パケットに設定する優先度設定ステップと、
前記優先度設定ステップによって優先度を設定された各転送パケットをコンテンツデータの先頭から順次送信するパケット送信ステップと、
前記パケット送信ステップによって全ての転送パケットが一巡回送信されると、前記各転送パケットに割当てられた位相を変更するように制御する位相制御ステップと、
を含んだことを特徴とするデータ配信方法。
【請求項８】
コンテンツデータを複数に分割し、当該分割された各コンテンツデータをパケット化して転送パケットを生成するパケット分割手順と、
前記パケット分割手順によって生成された転送パケットごとに、前記コンテンツデータ全体における位置に応じて位相を割当て、当該位相を割り当てられた各転送パケットが送信先へ送信される優先性の度合いを示す優先度を各転送パケットに設定する優先度設定手順と、
前記優先度設定手順によって優先度を設定された各転送パケットをコンテンツデータの先頭から順次送信するパケット送信手順と、
前記パケット送信手順によって全ての転送パケットが一巡回送信されると、前記各転送パケットに割当てられた位相を変更するように制御する位相制御手順と、
をコンピュータに実行させることを特徴とするデータ配信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンテンツデータを送信するデータ配信装置、中継装置、データ配信方法およびデータ配信プログラムに関する。
【背景技術】
【０００２】
従来より、コンテンツデータ（例えば、プログラムファイル）のような同一内容を多数のクライアント装置に同時に配信する方式として、ユニキャスト通信またはマルチキャスト通信により配信する技術が行われている。
【０００３】
ユニキャストで配信する場合に、コンテンツ配信装置と個々のクライアント装置間に通信パスが張られる。このため、ダウンロードするクライアント装置の増大に伴い、コンテンツ配信装置近傍の通信パスが多大となり、ダウンロード時間の長期化が発生していた（図５２参照）。
【０００４】
一方、マルチキャストで配信する場合に、データの欠落が発生し、クライアントでのコンテンツの完全な再構成を保証できない場合がある。例えば、低速区域のクライアント装置がコンテンツ受信している場合に、当該クライアント装置の区域の速度を超過してデータが配信されると、低速区域のクライアント装置でパケットの欠落が発生する。
【０００５】
このため、マルチキャスト配信による欠落の問題を回避するために、クライアント装置がパケット欠落を検出し、パケット欠落を検出した場合に、クライアント装置から再送すべきパケットをコンテンツ配信装置に指定する。再送すべきパケット指定されたコンテンツ配信装置は、指定されたパケットを即時に再送する技術が実施されている（特許文献１参照）。
【０００６】
【特許文献１】特開平１０−２５７００１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、上記したパケットを再送する技術では、コンテンツ配信装置は、各クライアント装置からパケットの要求を受信し、各クライアント装置から要求されたパケットを即時に再送している。
【０００８】
このため、多数のクライアント装置が存在する場合には、多くの再送要求を受信することとなり、各クライアント装置は、自己の必要とするパケットをネットワーク内の他のトラヒックを受けて、確率的に受信することになる（図５３参照）。この結果、各クライアント装置が全てのパケットを受信するまでの時間が長期化するという課題があった。
【０００９】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、クライアント装置が全パケットを受信する受信時間の長期化を防止し、効率的に全パケットをクライアント装置に送信することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するため、この装置は、転送パケットごとに、位相を割当て、位相に対応する優先度を設定し、優先度を設定された各転送パケットをコンテンツデータの先頭から順次送信する。そして、全ての転送パケットが一巡回送信されると、各転送パケットに割当てられた位相を変更するように制御することを要件とする。
【発明の効果】
【００１１】
開示の装置は、クライアント装置による全パケットを受信するまでの時間が長期化することを防止し、効率的に全パケットをクライアント装置に送信することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１２】
以下に添付図面を参照して、この発明に係るデータ配信装置、中継装置、データ配信方法およびデータ配信プログラムの実施例を詳細に説明する。
【実施例１】
【００１３】
以下の実施例では、実施例１に係るコンテンツ配信装置、中継装置、クライアント装置の構成および処理の流れを順に説明し、最後に実施例１による効果を説明する。
【００１４】
［コンテンツ配信装置の構成］
まず最初に、図１〜図１５を用いて、コンテンツ配信装置１０の構成を説明する。図１は、実施例１に係るマルチキャストデータ配信システムのネットワーク構成を示す図である。図２は、マルチキャスト配信について説明するための図である。図３は、実施例１に係るコンテンツ配信装置の構成を示すブロック図である。図４および図５は、ダウンロード開始要求のデータ構成例を示す図である。図６は、優先対応テーブルの一例を示す図である。図７は、プログラム配信制御データの一例を示す図である。図８は、プログラム転送パケットの分割例を示す図である。図９は、位相とそれに対応する優先度の関係を示す図である。図１０は、速度比と位相による配信確度の関係を示す図である。図１１〜図１５は、コンテンツ配信状況の推移の例を説明するための図である。
【００１５】
まず、図１を用いて、実施例１に係るコンテンツ配信装置１０を含むマルチキャストデータ配信システムのネットワーク構成について説明する。同図に例示するように、マルチキャストデータ配信システムは、コンテンツ配信装置（コンテンツフォルダ）１０、複数の中継装置２０Ａ〜２０Ｆ、複数のクライアント装置３０Ａ〜３０Ｆを有し、ネットワークを介してそれぞれ接続される。
【００１６】
マルチキャストデータ配信システムでは、コンテンツ配信装置１０は、中継装置２０Ａ〜２０Ｆを介してクライアント装置３０Ａ〜３０Ｆに対してマルチキャスト配信を行っている。ここで、各クライアント３０Ａ〜３０Ｆは、設置されている区域に応じて、パケット受信速度が異なる。
【００１７】
例えば、コンテンツ配信装置１０が特定の速度（例えば、クライアント３０Ａに最適な速度）でマルチキャスト配信した場合には、コンテンツ配信装置からのパケットを、クライアント３０Ａが「１００％」、クライアント３０Ｂが「２５％」、クライアント３０Ｃが「５０％」、クライアント３０Ｄが「９０％」を受信する（図２参照）。
【００１８】
続いて、図３を用いて実施例１に係るコンテンツ配信装置１０の構成を説明する。同図に示すように、このコンテンツ配信装置１０は、通信制御部１１、制御部１２、記憶部１３を有し、ネットワークを介して中継装置２０およびクライアント装置３０と接続される。以下にこれらの各部の処理を説明する。
【００１９】
通信制御部１１は、接続される中継装置２０およびクライアント装置３０との間でやり取りする各種情報に関する通信を制御する。具体的には、通信制御部１１は、中継装置２０Ａ〜２０Ｆを介してクライアント装置３０Ａ〜３０Ｆに対してマルチキャスト配信する。
【００２０】
また、通信制御部１１は、クライアント装置３０からダウンロード開始要求を受信し、ダウンロード開始要求応答を返信する。ここで、ダウンロード開始要求およびダウンロード開始要求応答のデータ構成について図４および図５を用いて説明する。
【００２１】
図４に示すように、ダウンロード開始要求応答では、ダウンロードを要求するコンテンツデータのファイル名と、要求元のクライアント装置３０の位置とが情報として含んでいる。また、図５に示すように、ダウンロード開始要求応答では、ファイル名およびクライアント装置３０の位置（ユニキャストアドレス）とともに、マルチキャストアドレスである配信チャネルをさらに情報として含んでいる。
【００２２】
記憶部１３は、制御部１２による各種処理に必要なデータおよびプログラムを格納するが、特に、優先度対応テーブル１３ａおよびプログラム配信制御データ記憶部１３ｂを有する。
【００２３】
優先度対応テーブル１３ａは、図６に示すように、位相「ｘ」と、その位相に対応する優先度「Ｐｒ（ｘ）」とを対応付けて記憶する。この優先度対応テーブル１３ａは、後述する優先度設定部１２ｂによって各パケットに優先度を付与するために用いられるテーブルである。
【００２４】
プログラム配信制御データ記憶部１３ｂは、プログラム配信処理を制御するためのデータを記憶する。具体的には、プログラム配信制御データ記憶部１３ｂは、図７に示すように、パケットの配信状態（配信中または停止中）を示す「配信状態」、シーケンス番号を示す「ｉ」、送信周回を示す「Ｐｎ」、パケット送信の間隔を示す「送信間隔」を記憶する。
【００２５】
制御部１２は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行するが、特に、データ分割部１２ａ、優先度設定部１２ｂ、パケット送信部１２ｃ、位相制御部１２ｄを有する。
【００２６】
データ分割部１２ａは、コンテンツデータを特定長で分割し、分割された各コンテンツデータをパケット化してプログラム転送パケットを生成する。具体的には、データ分割部１２ａは、クライアント装置３０からダウンロード開始要求応答を受信すると、図８に示すように、コンテンツデータ（例えば、プログラムファイル）を特定長で分割する。
【００２７】
そして、データ分割部１２ａは、分割されたプログラムファイルをプログラム転送パケットに搭載して、プログラム転送パケットを生成し、優先度設定部１２ｂに通知する。なお、プログラムファイルの分割単位「ｎ」は、固定値とし、２の巾乗が好ましい。
【００２８】
優先度設定部１２ｂは、生成されたプログラム転送パケットごとに、コンテンツデータ全体における分割データ位置に応じて位相を割当て、位相に対応する優先度を各転送パケットに設定する。具体的には、優先度設定部１２ｂは、データ分割部１２ａから受信した各プログラム転送パケットに、コンテンツデータ全体における分割データ位置に応じて位相を割当てる。
【００２９】
そして、優先度設定部１２ｂは、各プログラム転送パケットに割当てられた位相「ｘ」に対応する優先度Ｐｒ（ｘ）を優先度対応テーブル１３ａから取得し、優先度を各転送パケットに設定し、パケット送信部１２ｃに通知する。
【００３０】
ここで、図９を用いて位相とそれに対応する優先度の関係を説明する。図９の例では、０〜１６の値が位相であり、それらの値が図の高い位置にあるほど優先度が高く、図の低い位置にあるほど優先度が低いことを示している。また、図９の例では、位相０〜１６に対して、５種の優先度を付与する例を示している。そして、コンテンツ配信装置１０では、図９に示すように、順次、転送パケットの「優先度」の設定が上下する重畳波形状の優先度を各転送パケットに設定している。
【００３１】
具体的に説明すると、重畳波形状は、毎回優先、非優先を繰り返し、更に２周期ごとに優先、非優先を繰り返し、更に４周期ごとに優先、非優先を繰り返しており、２ｉ周期ごとに優先非優先を繰り返す形状となっている。
【００３２】
つまり、重畳波形状では、図９に示すように、優先（図９の例では、位相０、２、４、６、８、１０、１２、１４）、非優先（図９の例では、位相１、３、５、７、９、１１、１３、１５）を繰り返し、更に優先としたものを１次優先とし、１次優先のものが交互に優先（図９の例では、位相０、４、８、１２）、非優先（図９の例では、位相２、６、１０、１４）を繰り返し、更に１次優先のうち優先としたものを２次優先とし、２次優先のものが交互に優先（図９の例では、位相０、８）、非優先（図９の例では、位相４、１２）を繰り返し、更に、２次優先のうち優先としたものを３次優先とし、３次優先のものが交互に優先（図９の例では、位相０）、非優先（図９の例では、位相８）を繰り返す形状となっている。
【００３３】
また、図１０を用いて位相「ｘ」とそれに対応する優先度「Ｐｒ（ｘ）」の関係を説明する。同図に示すように、位相「ｘ」が奇数「１＋２ｋ」であるものについては、優先度「Ｐｒ（ｘ）」を「０」とする。つまり、優先度「Ｐｒ（ｘ）」が「０」とは、非優先であることを示す（図９の例では、位相１、３、５、７、９、１１、１３、１５）。また、位相「ｘ」が「０」であるものについては、優先度が最も高い「ｋ」となる。
【００３４】
また、位相「２ｉ（１＋２ｋ）」の優先度が「ｉ」である場合（例えば、図９の例では、位相「４」の優先度が「ｉ」の場合）には、位相「２ｉ−１（１＋２ｋ）」の優先度が「ｉ−１」となり（図９の例では位相「２」、「６」の優先度が位相「４」の優先度より一つ低い）、位相「２ｉ＋１（１＋２ｋ）」の優先度が「ｉ＋１」となる（つまり、図９の例で説明すると、位相「８」の優先度が位相「４」の優先度より一つ高い）。
【００３５】
このように、コンテンツ配信装置１０では、毎回優先、非優先を繰り返し、更に２周期ごとに優先、非優先を繰り返し、更に４周期ごとに優先、非優先を繰り返し、更に２ｉ周期ごとに優先非優先を繰り返す重畳波形状の優先度を各転送パケットに設定している。
【００３６】
パケット送信部１２ｃは、優先度を設定された各プログラム転送パケットをコンテンツデータの先頭から順次送信する。具体的には、パケット送信部１２ｃは、プログラム配信制御データ記憶部１３ｂに記憶されるプログラム配信制御データの配信状態が「配信中」である場合には、優先度を設定された各プログラム転送パケットを送信する。
【００３７】
そして、パケット送信部１２ｃは、プログラム転送パケットをシーケンシャルに送信し、プログラム転送パケットの送信が１巡回した場合には、１巡回した旨を位相制御部１２ｄに通知する。
【００３８】
位相制御部１２ｄは、全ての転送パケットが一巡回送信されると、各プログラム転送パケットに割当てられた位相を変更するように制御する。具体的には、位相制御部１２ｄは、コンテンツデータの送信を一巡回すると、シーケンス番号（分割されたデータの位置）に対する優先度の位相を一つ進めて変更する。
【００３９】
図１１〜図１５の例を用いて、優先度の位相を変化させることでコンテンツの配信状況の推移を説明する。図１１〜図１５では、コンテンツデータ配信の一巡回目〜五巡回目を行った場合におけるクライアント装置３０Ａ、３０Ｂ、３０Ｃ、３０Ｄの受信状況を示している。
【００４０】
図１１〜図１５の例では、コンテンツ配信装置１０が特定の速度（例えば、クライアント３０Ａに最適な速度）でマルチキャスト配信した場合には、コンテンツ配信装置からのパケットを、クライアント３０Ａが１００％（図１１の例では、速度比がｘ≧１に該当）、クライアント３０Ｂが２５％（図１１の例では、速度比が１／４≦ｘ＜１／２に該当）、クライアント３０Ｃ、３０Ｄが５０％（図１１の例では、速度比が１／２≦ｘ＜１に該当）を受信する場合の例を説明する。
【００４１】
まず、図１１に示すように、コンテンツ配信装置１０は、コンテンツデータ配信の一巡回目を行う。図１１では、例えば、シーケンス番号「ｉ」のパケットに位相「０」を割当て、位相「０」に対応する優先度（図１１の例では、位相「０」に対応する優先度最も高い優先度）をパケットに設定する。
【００４２】
ここで、クライアント装置３０Ａは、コンテンツデータ配信の一巡回目で、全てのパケットの受信を完了する。また、クライアント装置３０Ｂは、コンテンツデータ配信の一巡回目で、１／４のパケットを受信し、また、クライアント装置３０Ｃ、３０Ｄは、１／２のパケットを受信する。
【００４３】
続いて、図１２に示すように、コンテンツ配信装置１０は、シーケンス番号に対する優先度の位相を変更して、コンテンツデータ配信の二巡回目を行う。つまり、図１２では、例えば、シーケンス番号「ｉ」のパケットが位相「１」に変更となり、位相「１」に対応する優先度（図１２の例では、位相「１」に対応する優先度最も低い優先度）をパケットに設定する。
【００４４】
ここで、クライアント装置３０Ｂは、コンテンツデータ配信の二巡回目で、１／２のパケットを受信し、クライアント装置３０Ｃ、３０Ｄは、全てのパケットの受信を完了する。
【００４５】
その後、図１３〜図１５に示すように、コンテンツデータ配信の三巡回目〜五巡回目でも同様に、優先度の位相を変更してコンテンツデータの配信処理を行い、クライアント装置３０Ｂは、四巡回目で全てのパケットの受信を完了する。
【００４６】
ここで、速度比と位相による配信確度の関係についてそれぞれ図１０を用いて説明する。図１０に示すように、速度比とは、クライアント装置３０の受信速度をコンテンツ配信装置１０の送信速度で除算した値である。つまり、速度比が「１」であるクライアント装置３０では、原則的にパケットの欠落が発生しないこととなる。
【００４７】
また、図１０に示すように、最も優先度「Ｐｒ（ｘ）」が高い位相「０」のパケットが送信された場合には、速度比が低いクライアント装置３０であっても配信確度が高い。また、最も優先度「Ｐｒ（ｘ）」が低い位相「１＋２ｋ」のパケットが送信された場合には、配信確度が低い。
【００４８】
上記で説明したように、コンテンツ配信装置１０では、順次、パケット「優先度」の設定を上下させている。つまり、コンテンツ配信装置１０は、一巡目、二巡目・・・ごとに各パケットの優先度を変えて、送信するので、中継装置２０が一巡目、二巡目・・・と選択的に中継対象が変化し、クライアント装置３０へコンテンツを構成する全てのパケットを効率的に到達することができる。
【００４９】
［中継装置の構成］
次に、図１６を用いて、図１に示した中継装置２０の構成を説明する。図１６は、実施例１に係る中継装置２０の構成を示すブロック図である。同図に示すように、この中継装置２０は、通信制御部２１、制御部２２、記憶部２３を有し、ネットワークを介してコンテンツ配信装置１０およびクライアント装置３０と接続される。以下にこれらの各部の処理を説明する。
【００５０】
通信制御部２１は、接続されるコンテンツ配信装置１０およびクライアント装置３０との間でやり取りする各種情報に関する通信を制御する。具体的には、通信制御部２１は、コンテンツ配信装置１０からクライアント装置３０へ配信されるマルチキャストパケットやダウンロード開始要求応答を中継する。また、通信制御部２１は、クライアント装置３０からコンテンツ配信装置１０へ送信されたダウンロード開始要求を中継する。
【００５１】
記憶部２３は、制御部２２による各種処理に必要なデータおよびプログラムを格納するが、特に、送信バッファ２３ａを有する。送信バッファ２３ａは、受信したプログラム転送パケットを記憶する。
【００５２】
制御部２２は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行するが、特に、パケット受信部２２ａ、送信制御部２２ｂを有する。
【００５３】
パケット受信部２２ａは、コンテンツ配信装置１０からクライアント装置３０へ配信されるマルチキャストパケットを受信する。具体的には、パケット受信部２２ａは、コンテンツ配信装置１０からプログラム転送パケットを受信すると、送信バッファ２３ａを確保し、送信バッファ２３ａの確保がＯＫかを判定する。
【００５４】
その結果、パケット受信部２２ａは、送信バッファ２３ａの確保がＯＫでない場合には、受信したプログラム転送パケットの優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも高いか判定する。
【００５５】
また、パケット受信部２２ａは、送信バッファの確保がＯＫである場合には、送信待ちプログラム転送パケットを破棄することなく、受信したプログラム転送パケットを送信バッファ１３ａへコピーする。
【００５６】
その結果、パケット受信部２２ａは、受信したプログラム転送パケットの優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも高い場合には、優先度値が最も低い送信待ちプログラム転送パケットの送信待ちを取り消す。そして、パケット受信部２２ａは、受信したプログラム転送パケットを送信バッファ２３ａへコピーする。
【００５７】
また、パケット受信部２２ａは、受信したプログラム転送パケットの優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも高い場合には、受信したプログラム転送パケットを送信バッファ２３ａへコピーせずに破棄する。
【００５８】
つまり、中継装置２０が速度超過（送信バッファの領域不足）となる場合には、優先度の低いプログラム転送パケットを破棄し、優先度の高いプログラム転送パケットを送信バッファ２３ａへコピーする。
【００５９】
送信制御部２２ｂは、プログラム転送パケットをクライアント装置３０に送信する。具体的には、送信制御部２２ｂは、送信バッファに格納されている送信待ちのプログラム転送パケットをクライアント装置３０に送信する。
【００６０】
つまり、中継装置２０が速度超過（送信バッファの領域不足）となる場合には、優先度の低いプログラム転送パケットを破棄し、優先度の高いプログラム転送パケットを選択的にクライアント装置３０へ中継する。
【００６１】
［クライアント装置の構成］
次に、図１７を用いて、図１に示したクライアント装置３０の構成を説明する。図１７は、実施例１に係るクライアント装置３０の構成を示すブロック図である。同図に示すように、このクライアント装置３０は、通信制御部３１、制御部３２、記憶部３３を有し、ネットワークを介してコンテンツ配信装置１０および中継装置２０と接続される。以下にこれらの各部の処理を説明する。
【００６２】
通信制御部３１は、接続されるコンテンツ配信装置１０および中継装置２０との間でやり取りする各種情報に関する通信を制御する。具体的には、通信制御部３１は、中継装置２０を介してダウンロード開始要求をコンテンツ配信装置１０へ送信する。また、通信制御部２１は、コンテンツ配信装置１０から中継装置２０を介して配信されるマルチキャストパケットやダウンロード開始要求応答を受信する。
【００６３】
記憶部３３は、制御部３２による各種処理に必要なデータおよびプログラムを格納するが、特に、プログラム配信情報記憶部３３ａ、受信済み区間情報テーブル３３ｂ、受信状況記憶部３３ｃを有する。
【００６４】
プログラム配信情報記憶部３３ａは、コンテンツ配信装置１０から配信されるプログラム転送パケットに関するプログラム配信情報を記憶する。具体的には、プログラム配信情報記憶部３３ａは、図１８に例示するように、配信されるプログラムファイルの「ファイル名」、配信されるプログラムファイルの「ファイルサイズ」、マルチキャストアドレスを示す「配信チャネル」を記憶する。
【００６５】
受信済み区間情報テーブル３３ｂは、コンテンツ配信装置１０から受信したプログラムファイル分割データを記憶する。具体的には、受信済み区間情報テーブル３３ｂは、図１９に例示するように、受信済みのプログラムファイル分割データの開始位置と終了位置とを記憶する。
【００６６】
受信状況記憶部３３ｃは、プログラム転送パケットの受信状況を記憶する。具体的には、受信状況記憶部３３ｃは、図２０に例示するように、プログラム転送パケットのバイト数を示す「受信バイト数」、受信したプログラム転送パケットの開始位置を示す「最終受信位置」、前回受信したプログラム転送パケットの開始位置を示す「前期最終受信位置」を記憶する。
【００６７】
制御部３２は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行するが、特に、ダウンロード開始要求部３２ａ、プログラム転送パケット受信部３２ｂ、受信状況更新部３２ｃを有する。
【００６８】
ダウンロード開始要求部３２ａは、中継装置２０を介してダウンロード開始要求をコンテンツ配信装置１０へ送信し、コンテンツ配信装置１０から中継装置２０を介して送信されるダウンロード開始要求応答を受信する。そして、ダウンロード開始要求部３２ａは、受信されたダウンロード開始要求応答の情報をプログラム配信情報記憶部３３ａに記憶させる。
【００６９】
プログラム転送パケット受信部３２ｂは、コンテンツ配信装置１０から中継装置２０を介して送信されるプログラム転送パケットを受信し、プログラムファイルを再構築する。具体的には、プログラム転送パケット受信部３２ｂは、図２１に例示するプログラム転送パケットを受信した場合に、受信されたプログラム転送パケットのプログラムファイル分割データについて、受信したことを受信済み区間情報テーブル３３ｂに記憶する。
【００７０】
受信状況更新部３２ｃは、プログラム転送パケットを受信するたびに、受信状況を更新する。具体的には、受信状況更新部３２ｃは、プログラム転送パケットを受信すると、受信状況記憶部３３ｃに記憶される受信状況を更新する。
【００７１】
［コンテンツ配信装置による処理］
次に、図２２を用いて、実施例１に係るコンテンツ配信装置１０による処理を説明する。図２２は、実施例１に係るコンテンツ配信装置の送信処理の動作を示すフローチャートである。
【００７２】
同図に示すように、コンテンツ配信装置１０は、プログラム配信制御データ記憶部１３ｂに記憶されるプログラム配信制御データを初期化すると（ステップＳ１０１）、プログラム配信制御データのシーケンス番号「ｉ」に対応するパケット転送プログラムを編集し（ステップＳ１０２）、プログラム転送パケットの優先度「Ｐｒ（［ｉ］＋［Ｐｎ]）」を設定する（ステップＳ１０３）。
【００７３】
そして、コンテンツ配信装置１０は、プログラム転送パケットをマルチキャスト送信し（ステップＳ１０４）、プログラム配信制御データの送信間隔の間待ち合わせる（ステップＳ１０５）。
【００７４】
その後、コンテンツ配信装置１０は、「ｉ」に１加算した値をプログラム配信制御データのシーケンス番号「ｉ」に設定し（ステップＳ１０６）、設定された「ｉ」が０であるか判定する（ステップＳ１０７）。つまり、コンテンツ配信装置１０は、シーケンスが１巡回し、「ｉ」に１加算した値がプログラムファイルの分割数「[Ｎ]＋１」と同じになったか否かを判定する。
【００７５】
この結果、コンテンツ配信装置１０は、設定された「ｉ」が０である場合には（ステップＳ１０７肯定）、シーケンスが１巡回したと判断して、プログラム配信制御データの送信周回「Ｐｎ」に１を加算する（ステップＳ１０８）。つまり、「Ｐｎ」に１を加算された場合には、次回のコンテンツの送信では、シーケンス番号に対する優先度の位相が変更となる。
【００７６】
そして、コンテンツ配信装置１０は、プログラム配信制御データの配信状態が「配信中」であるか判定し（ステップＳ１０９）、プログラム配信制御データの配信状態が「配信中」である場合には（ステップＳ１０９肯定）、Ｓ１０２からＳ１０９の処理を繰り返す。また、コンテンツ配信装置１０は、プログラム配信制御データの配信状態が「配信中」でなくなった場合には（ステップＳ１０９否定）、送信処理を終了する。
【００７７】
［パケット中継装置による処理］
次に、図２３を用いて、実施例１に係るパケット中継装置２０による処理を説明する。図２３は、実施例１に係るパケット中継装置２０の送信処理の動作を示すフローチャートである。
【００７８】
同図に示すように、パケット中継装置２０は、コンテンツ配信装置１０からプログラム転送パケットを受信すると（ステップＳ２０１）、送信バッファを確保し（ステップＳ２０２）、送信バッファの確保がＯＫかを判定する（ステップＳ２０３）。
【００７９】
その結果、パケット中継装置２０は、送信バッファの確保がＯＫでない場合には（ステップＳ２０３否定）、受信したプログラム転送パケットの優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも高いか判定する（ステップＳ２０４）。
【００８０】
その結果、パケット中継装置２０は、受信したプログラム転送パケットの優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも高い場合には（ステップＳ２０４肯定）、優先度値が最も低い送信待ちプログラム転送パケットの送信待ちを取り消す（ステップＳ２０５）。
【００８１】
また、パケット中継装置２０は、Ｓ２０３において、送信バッファの確保がＯＫである場合には（ステップＳ２０３肯定）、送信待ちプログラム転送パケットを破棄することなく、Ｓ２０６に進む。
【００８２】
そして、パケット中継装置２０は、受信したプログラム転送パケットを送信バッファへコピーし（ステップＳ２０６）、送信バッファを送信待ち登録する（ステップＳ２０７）。
【００８３】
また、パケット中継装置２０は、Ｓ２０４において、受信したプログラム転送パケットの優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも低い場合には（ステップＳ２０４否定）、受信したプログラム転送パケットを送信バッファへコピーせずに、Ｓ２０８に進む。
【００８４】
そして、パケット中継装置２０は、全ての通信インターフェースについてＳ２０２〜Ｓ２０７の処理をしたか判定し（ステップＳ２０８）、全ての通信インターフェースについて処理していない場合には（ステップＳ２０８否定）、全ての通信インターフェースについて処理するまで、Ｓ２０２〜Ｓ２０８の処理を繰り返す。また、パケット中継装置２０は、全ての通信インターフェースについて処理した場合には（ステップＳ２０８肯定）、中継処理を終了する。
【００８５】
［クライアント装置による処理］
次に、図２４および図２５を用いて、実施例１に係るクライアント装置３０による処理を説明する。図２４は、実施例１に係るクライアント装置の受信処理の動作を示すフローチャートである。図２５は、実施例１に係るクライアント装置の受信済管理処理の動作を示すフローチャートである。
【００８６】
図２４に示すように、クライアント装置３０は、コンテンツ配信装置（コンテンツフォルダ）１０へダウンロード開始要求を送信する（ステップＳ３０１）。そして、クライアント装置３０は、ダウンロード開始応答をコンテンツ配信装置１０から受信する（ステップＳ３０２）。
【００８７】
続いて、クライアント装置３０は、受信済み区間情報テーブルを初期化し（ステップＳ３０３）、プログラムファイル配信情報を記憶する（ステップＳ３０４）。そして、クライアント装置３０は、受信状況を初期化する（ステップＳ３０５）。
【００８８】
そして、クライアント装置３０は、プログラム転送パケットを受信すると（ステップＳ３０６）、プログラム転送パケットのプログラムファイル分割データをプログラムファイル組み立てエリアの対応位置へ記憶する（ステップＳ３０７）。
【００８９】
続いて、クライアント装置３０は、プログラムファイル分割データを受信したことを受信済み区間情報テーブルへ記憶するコンテンツ受信済管理処理（後に図２５を用いて詳述）を行って（ステップＳ３０８）、受信状況を更新する（ステップＳ３０９）。
【００９０】
その後、クライアント装置３０は、プログラムファイルの全分割分を受信完了したかを判定し（ステップＳ３１０）、プログラムファイルの全分割分を受信完了していない場合には（ステップＳ３１０否定）、Ｓ３０６〜Ｓ３１０の処理を繰り返す。また、クライアント装置３０は、プログラムファイルの全分割分を受信完了した場合には（ステップＳ３１０肯定）、受信処理を終了する。
【００９１】
続いて、クライアント装置３０のコンテンツ受信済管理処理について、図２５を用いて説明する。同図に示すように、クライアント装置３０は、プログラム転送パケットの開始位置「ｘ」、プログラム転送パケットのバイト数に「ｘ」を加算した「ｙ」を取得する（ステップＳ４０１）。
【００９２】
そして、クライアント装置３０は、「ｘ」≦終了位置であって、開始位置≦「ｙ」となる受信済み区間情報テーブルのレコード数をカウントし（ステップＳ４０２）、カウントが０より大きいかを判定する（ステップＳ４０３）。
【００９３】
その結果、クライアント装置３０は、カウントが０以下の場合には（ステップＳ４０３否定）、開始位置「ｘ」、終了位置「ｙ」のレコードを受信済み区間テーブルに追加する（ステップＳ４０７）。
【００９４】
また、クライアント装置３０は、カウントが０より大きい場合には（ステップＳ４０３肯定）、「ｘ」≦終了位置であって、開始位置≦「ｙ」となる受信済み区間情報テーブルのレコードの開始位置の最小値をＸ、終了位置の最大値をＹとする（ステップＳ４０４）。
【００９５】
続いて、クライアント装置３０は、「ｘ」≦終了位置であって、開始位置≦「ｙ」となる受信済み区間情報テーブルのレコードを削除し（ステップＳ４０５）、開示位置が「ｍｉｎ（Ｘ，ｘ）」、終了位置「ｍａｘ（Ｙ，ｙ）」のレコードを受信済み区間テーブに追加して（ステップＳ４０６）、コンテンツ受信済管理処理を終了する。
【００９６】
[実施例１の効果]
上述してきたように、コンテンツ配信装置１０は、コンテンツデータを特定長で分割し、分割された各コンテンツデータをパケット化して転送パケットを生成する。そして、コンテンツ配信装置１０は、生成されたプログラム転送パケットごとに、コンテンツデータ全体における分割データ位置に応じて位相を割当て、位相に対応する優先度を各プログラム転送パケットに設定する。続いて、コンテンツ配信装置１０は、優先度を設定された各プログラム転送パケットをコンテンツデータの先頭から順次送信し、全てのプログラム転送パケットが一巡回送信されると、各プログラム転送パケットに割当てられた位相を変更するように制御する。
【００９７】
このため、コンテンツ配信装置１０では、一巡目、二巡目・・・ごとに各パケットの優先度を変えて、送信するので、中継装置２０が一巡目、二巡目・・・と選択的に中継対象が変化し、クライアント装置３０へコンテンツを構成する全てのパケットを効率的に到達することができる。この結果、クライアント装置３０による全パケットを受信するまでの時間が長期化することを防止し、効率的に全パケットをクライアント装置３０に送信することが可能である。
【００９８】
また、実施例１によれば、コンテンツ配信装置１０では、重畳波形状の優先度を各転送パケットに設定するので、順次、パケット「優先度」の設定が上下する結果、全てのプログラム転送パケットが確定的に選択される。このため、クライアント装置３０による全パケットを受信するまでの時間が長期化することを防止し、効率的に全パケットをクライアント装置３０に送信することが可能である。
【００９９】
また、実施例１によれば、コンテンツ配信装置１０では、配信先のクライアント装置が増加しても、コンテンツ配信装置１０およびその近傍のネットワーク機器への負荷が一定であり、個々のクライアント装置３０のダウンロード時間は一定である。また、速度の異なるクライアント装置３０へ同時配信しても、個々のクライアント装置３０のダウンロード時間は一定とすることが可能である。
【実施例２】
【０１００】
ところで、本実施例では、プログラム転送パケットの送信間隔を調整するようにしてもよい。そこで、以下の実施例２では、クライアント装置３０の受信状況に合わせて、コンテンツ配信装置１０ａがプログラム転送パケットの送信間隔を調整する場合として、実施例２におけるコンテンツ配信装置１０ａの構成および処理について図２６〜図３１を用いて説明する。
【０１０１】
図２６は、コンテンツ配信装置の制御データ構成例を示す図である。図２７は、クライアント装置の制御データ構成例を示す図である。図２８は、受信状況通知のデータ構成例を示す図である。図２９は、実施例２に係るクライアント装置の受信状況通知送信処理の動作を示すフローチャートである。図３０は、実施例２に係るコンテンツ配信装置の受信状況通知受信処理の動作を示すフローチャートである。図３１は、実施例２に係るコンテンツ配信装置の送信速度パラメータ調整処理の動作を示すフローチャートである。
【０１０２】
まず最初に、実施例２に係るコンテンツ配信装置１０ａの制御データ構成例について、図２６を用いて説明する。図２６に例示するように、実施例２に係るコンテンツ配信装置１０ａは、複数のクライアント装置３０ａから受信した受信状況を集約した「受信状況集約情報」を新たに記憶する。
【０１０３】
この「受信状況集約」では、送信間隔を調整する処理が有効であるか無効であるかを示す「有効表示」と、クライアント装置の受信したバイト数を示す「受信バイト数」と、推定されるファイルサイズの総量を示す「推定総量」とを記憶する。また、「受信状況集約」では、推定される受信速度を示す「推定速度」と、ファイルサイズの総量に対する受信したバイト数の割合である「受信率」と、受信率と推定速度に応じて求められる「有効速度」とを記憶する。
【０１０４】
また、コンテンツ配信装置１０ａでは、プログラム配信制御データとして、配信する速度の状態が加速中であるか巡航中であるかを示す「速度状態」、配信速度を加速される割合を示す「加速率」、加速させるか否かを決めるのに用いられる閾値である「加速閾値」を新たに記憶する。また、コンテンツ配信装置１０ａでは、プログラム配信制御データとして、速度状態を加速状態にするか否かを決めるのに用いられる閾値である「加速移行条件閾値」、加速状態に移行するか否かを決めるのに用いられる計数である「加速移行計数」、減速させるか否かを決めるのに用いられる閾値である「減速閾値」を新たに記憶する。
【０１０５】
また、コンテンツ配信装置１０ａでは、プログラム配信制御データとして、配信状態を停止中とするか否かを決める閾値である「配信停止閾値」、配信状態を停止中とするか否かを決める計数である「配信停止計数」、送信間隔の制限を示す「最低送信間隔制限」を新たに記憶する。
【０１０６】
次に、実施例２に係るクライアント装置３０ａの制御データ構成例について、図２７を用いて説明する。図２７に例示するように、実施例２に係るクライアント装置３０ａは、コンテンツ配信装置１０ａから配信されるプログラム転送パケットの受信状況である「受信状況」を新たに記憶する。
【０１０７】
コンテンツ配信装置１０ａは、受信状況として、プログラム転送パケットのバイト数を示す「受信バイト数」、受信したプログラム転送パケットの開始位置を示す「最終受信位置」、前回受信したプログラム転送パケットの開始位置を示す「前期最終受信位置」、受信状況通知送信処理の起動周期（例えば、１０秒）を示す「起動周期」を記憶する。
【０１０８】
また、クライアント装置３０ａは、図２８に例示するように、プログラム転送パケットの受信状況を通知するための「受信状況通知」をコンテンツ配信装置１０ａに送信する。この「受信状況通知」では、受信バイト数、推定総量、推定速度、受信率が情報として含まれている。
【０１０９】
続いて、実施例２に係るクライアント装置３０ａの受信状況通知送信処理について説明する。なお、クライアント装置３０ａは、以下で説明する受信状況通知送信処理を一定周期（例えば、１０秒周期）で実行し、クライアント装置３０ａへ受信状況通知を送信している。
【０１１０】
図２９に示すように、クライアント装置３０ａは、受信状況の前期最終受信位置が「１」であるか判定する（ステップＳ５０１）。クライアント装置３０ａは、受信状況の前期最終受信位置が「１」でない場合には（ステップＳ５０１否定）、受信状況通知データを算出し（ステップＳ５０２）、受信状況通知を編集する（ステップＳ５０３）。
【０１１１】
そして、クライアント装置３０ａは、コンテンツ配信装置１０ａへ受信状況を送信し（ステップＳ５０４）、受信状況を更新する（ステップＳ５０５）。また、クライアント装置３０ａは、Ｓ１０１において、受信状況の前期最終受信位置が「１」である場合には（ステップＳ５０１肯定）、受信状況を送信せずに、受信状況を更新する（ステップＳ５０５）。
【０１１２】
次に、実施例２に係るコンテンツ配信装置１０ａの受信状況通知受信処理および送信速度パラメータ調整処理について説明する。コンテンツ配信装置１０ａは、受信状況通知を受信すると、以下に説明する受信状況通知受信処理を行って、多数のクライアント装置の受信状況の集約を行う。また、コンテンツ配信装置１０ａは、以下に説明する送信速度パラメータ調整処理を一定周期（例えば、１０秒周期）で実行し、プログラム転送パケットの送信間隔を調整している。
【０１１３】
まず、図３０を用いて受信状況通知受信処理について説明する。同図に示すように、コンテンツ配信装置１０ａは、受信状況集約の有効表示が有効であるか判定する（ステップＳ６０１）。その結果、コンテンツ配信装置１０ａは、受信状況集約の有効表示が有効でない場合には（ステップＳ６０１否定）、受信状況集約を更新する（ステップＳ６０６）。
【０１１４】
また、コンテンツ配信装置１０ａは、受信状況集約の有効表示が有効である場合には（ステップＳ６０１肯定）、受信状況通知の「受信率」と「推定速度」とを乗算して、有効速度を算出する（ステップＳ６０２）。コンテンツ配信装置１０ａは、算出された有効速度が、受信状況集約の有効速度よりも速いか判定し（ステップＳ６０３）、速い場合には（ステップＳ６０３肯定）、受信状況集約を更新する（ステップＳ６０６）。
【０１１５】
一方、コンテンツ配信装置１０ａは、算出された有効速度が、受信状況集約の有効速度よりも速くない場合には（ステップＳ６０３否定）、算出された有効速度と受信状況集約の有効速度が同じであるか判定する（ステップＳ６０４）。その結果、コンテンツ配信装置１０ａは、算出された有効速度と受信状況集約の有効速度が同じである場合には（ステップＳ６０４肯定）、受信状況通知の受信率が受信状況集約の受信率よりも高いか判定する（ステップＳ６０５）。
【０１１６】
その結果、コンテンツ配信装置１０ａは、受信状況通知の受信率が受信状況集約の受信率よりも高い場合には（ステップＳ６０５肯定）、受信状況集約を更新する（ステップＳ６０６）。
【０１１７】
コンテンツ配信装置１０ａは、算出された有効速度と受信状況集約の有効速度が同じでない場合（ステップＳ６０４否定）、または、受信状況通知の受信率が受信状況集約の受信率以下である場合には（ステップＳ６０５否定）、受信状況集約を更新せずに処理を終了する。
【０１１８】
次に、実施例２に係るコンテンツ配信装置１０ａの送信速度パラメータ調整処理について図３１を用いて説明する。同図に示すように、コンテンツ配信装置１０ａは、プログラム配信制御データの配信状態が「配信中」である場合に（ステップＳ７０１肯定）、受信状況集約の有効表示が「有効」であるか判定する（ステップＳ７０２）。
【０１１９】
その結果、コンテンツ配信装置１０ａは、受信状況集約の有効表示が「無効」である場合には（ステップＳ７０２否定）、プログラム配信制御データの配信停止計数に１を加算し（ステップＳ７１５）、配信停止計数が配信停止閾値より大きいか判定する（ステップＳ７１６）。その結果、コンテンツ配信装置１０ａは、配信停止計数が配信停止閾値より大きい場合には（ステップＳ７１６肯定）、プログラム配信制御データの配信状態を「停止中」とし（ステップＳ７１７）、配信停止計数が配信停止閾値以下である場合には（ステップＳ７１６否定）、処理を終了する。
【０１２０】
また、コンテンツ配信装置１０ａは、受信状況集約の有効表示が「有効」である場合には（ステップＳ７０２肯定）、プログラム配信制御データの配信停止計数を「０」にし、受信状況集約の有効表示を「無効」にして（ステップＳ７０３）、速度状態が「加速中」であるか判定する（ステップＳ７０４）。
【０１２１】
その結果、コンテンツ配信装置１０ａは、速度状態が「加速中」である場合には（ステップＳ７０４肯定）、受信率が減速閾値以上であるか判定する（ステップＳ７０５）。その結果、コンテンツ配信装置１０ａは、受信率が減速閾値よりも小さい場合には（ステップＳ７０５否定）、プログラム配信制御データの送信間隔を受信状況集約の受信率で除算した値をプログラム配信制御データの新たな「送信間隔」とし、速度加速状態を「巡航中」に、「加速移行計数」を「０」に更新する（ステップＳ７０８）。
【０１２２】
また、コンテンツ配信装置１０ａは、受信率が減速閾値以上である場合には（ステップＳ７０５肯定）、受信率が加速閾値以上であるか判定する（ステップＳ７０６）。
【０１２３】
その結果、コンテンツ配信装置１０ａは、受信率が加速閾値以上である場合には（ステップＳ７０６肯定）、プログラム配信制御データの送信間隔をプログラム配信制御データの加速率で乗算した値であって、最低送信間隔制限を越えない値を新たな「送信間隔」として更新する（ステップＳ７０７）。また、コンテンツ配信装置１０ａは、受信率が減速閾値よりも小さい場合には（ステップＳ７０６否定）、処理を終了する。
【０１２４】
Ｓ７０４の説明に戻って、コンテンツ配信装置１０ａは、速度状態が「巡航中」である場合には（ステップＳ７０４否定）、受信率が減速閾値以上であるか判定する（ステップＳ７０９）。その結果、コンテンツ配信装置１０ａは、受信率が減速閾値よりも小さい場合には（ステップＳ７０９否定）、プログラム配信制御データの送信間隔を受信状況集約の受信率で除算した値をプログラム配信制御データの新たな「送信間隔」として更新する（ステップＳ７１４）。
【０１２５】
また、コンテンツ配信装置１０ａは、受信率が減速閾値以上である場合には（ステップＳ７０９肯定）、受信率が加速閾値以上であるか判定する（ステップＳ７１０）。
【０１２６】
その結果、コンテンツ配信装置１０ａは、受信率が加速閾値以上である場合には（ステップＳ７１０肯定）、プログラム配信制御データの加速移行計数に「１」加算し（ステップＳ７１１）、プログラム配信制御データの加速移行計数が加速移行条件閾値以上であるか判定する（ステップＳ７１２）。
【０１２７】
その結果、コンテンツ配信装置１０ａは、プログラム配信制御データの加速移行計数が加速移行条件閾値以上である場合には（ステップＳ７１２肯定）、プログラム配信制御データの速度状態を「加速中」に更新する（ステップＳ７１３）。
【０１２８】
また、コンテンツ配信装置１０ａは、受信率が加速閾値より低い場合（ステップＳ７１０否定）、また、加速移行計数が加速移行条件閾値より低い場合には（ステップＳ７１２否定）、そのまま処理を終了する。
【０１２９】
このように、転送パケットの送信先であるクライアント装置３０の受信状況に応じて、プログラム転送パケットの送信速度を調整し、調整された送信速度で各プログラム転送パケットをコンテンツデータの先頭から順次送信する。このため、プログラム転送パケットを送信する間隔がクライアント装置３０の状況に応じたものに変更され、より効率的に全パケットをクライアント装置に送信することが可能である。
【実施例３】
【０１３０】
ところで、上記の実施例２では、クライアント装置が受信状況通知をコンテンツ配信装置へ送信する場合を説明したが、本実施例はこれに限定されるものではなく、集約装置が複数のクライアント装置から受信状況を集約した後、受信状況通知をコンテンツ配信装置へ送信するようにしてもよい。
【０１３１】
そこで、以下の実施例３では、集約装置４０が複数のクライアント装置から受信状況を集約した後、受信状況通知をコンテンツ配信装置１０ｂへ送信する場合として、実施例３における集約装置４０の構成および処理について図３２〜図３４を用いて説明する。図３２は、集約装置の制御データ構成例を示す図である。図３３は、実施例３に係る集約装置の受信状況通知受信処理の動作を示すフローチャートである。図３４は、実施例３に係る集約装置の受信状況通知送信処理の動作を示すフローチャートである。
【０１３２】
まず最初に、実施例３に係る集約装置４０の制御データ構成例について、図３２を用いて説明する。図３２に例示するように、実施例３に係る集約装置４０は、複数のクライアント装置３０ａから受信した受信状況を集約した「受信状況集約」を記憶する。かかる受信状況集約は、図２６に示した実施例２に係るコンテンツ配信装置１０ａの受信状況集約と同様の情報を有する。
【０１３３】
次に、実施例３に係る集約装置４０の受信状況通知受信処理および受信状況通知送信処理について説明する。実施例３に係る集約装置４０は、受信状況通知を受信すると、以下に説明する受信状況通知受信処理を行って、多数のクライアント装置の受信状況の集約を行う。また、集約装置４０は、以下に説明する受信状況通知送信処理を一定周期（例えば、１０秒周期）で実行し、コンテンツ配信装置３０または上位の集約装置へ受信状況通知を送信している。
【０１３４】
まず、集約装置４０の受信状況通知受信処理について図３３を用いて説明する。同図に示すように、集約装置４０は、受信状況集約の有効表示が有効であるか判定する（ステップＳ８０１）。その結果、集約装置４０は、受信状況集約の有効表示が有効でない場合には（ステップＳ８０１否定）、受信状況集約を更新する（ステップＳ８０６）。
【０１３５】
また、集約装置４０は、受信状況集約の有効表示が有効である場合には（ステップＳ８０１肯定）、受信状況通知の「受信率」と「推定速度」とを乗算して、有効速度を算出する（ステップＳ８０２）。集約装置４０は、算出された有効速度が、受信状況集約の有効速度よりも速いか判定し（ステップＳ８０３）、速い場合には（ステップＳ８０３肯定）、受信状況集約を更新する（ステップＳ８０６）。
【０１３６】
一方、集約装置４０は、算出された有効速度が、受信状況集約の有効速度よりも速くない場合には（ステップＳ８０３否定）、算出された有効速度と受信状況集約の有効速度が同じであるか判定する（ステップＳ８０４）。その結果、集約装置４０は、算出された有効速度と受信状況集約の有効速度が同じである場合には（ステップＳ８０４肯定）、受信状況通知の受信率が受信状況集約の受信率よりも高いか判定する（ステップＳ８０５）。
【０１３７】
その結果、集約装置４０は、受信状況通知の受信率が受信状況集約の受信率よりも高い場合には（ステップＳ８０５肯定）、受信状況集約を更新する（ステップＳ８０６）。
【０１３８】
集約装置４０は、算出された有効速度と受信状況集約の有効速度が同じでない場合（ステップＳ８０４否定）、または、受信状況通知の受信率が受信状況集約の受信率以下である場合には（ステップＳ８０５否定）、受信状況集約を更新せずに処理を終了する。
【０１３９】
続いて、集約装置４０の受信状況通知送信処理について図３４を用いて説明する。同図に示すように、集約装置４０は、受信状況集約の有効表示が有効であるか判定する（ステップＳ９０１）。その結果、集約装置４０は、受信状況集約の有効表示が有効でない場合には（ステップＳ９０１否定）、処理を終了する。
【０１４０】
また、集約装置４０は、受信状況集約の有効表示が有効である場合には（ステップＳ９０１肯定）、受信状況通知データを取り出し（ステップＳ９０２）、取り出された受信状況通知データを用いて受信状況通知を編集する（ステップＳ９０３）。
【０１４１】
そして、集約装置４０は、コンテンツ配信装置（または上位の集約装置）受信状況通知を送信し（ステップＳ９０４）、受信状況集約の有効表示を「有効」とする（ステップＳ９０５）。
【０１４２】
このように、集約装置４０が複数のクライアント装置３０の受信状況通知を集約してコンテンツ配信装置に通知するので、コンテンツ配信装置１０の負荷を低減しつつ、効率的に全パケットをクライアント装置に送信することが可能である。
【実施例４】
【０１４３】
ところで、本実施例では、プログラム転送パケットの送信間隔を、経過時間による重み付けにより調整するようにしてもよい。そこで、以下の実施例４では、コンテンツ配信装置１０ｃがプログラム転送パケットの送信間隔を、経過時間による重み付けにより調整する場合として、実施例４におけるコンテンツ配信装置１０ｃの構成および処理について図３５〜図３６を用いて説明する。図３５は、コンテンツ配信装置の制御データ構成例を説明するための図である。図３６は、実施例４に係るコンテンツ配信装置の送信速度パラメータ調整処理の動作を示すフローチャートである。
【０１４４】
まず最初に、実施例４に係るコンテンツ配信装置１０ｃの制御データ構成例について、図３５を用いて説明する。図３５に例示するように、実施例２に係るコンテンツ配信装置１０ｃのプログラム配信制御データ記憶部が記憶するプログラム配信制御データは、図２６に示したプログラム配信制御データと比較して、「加重受信率」および「加重率」を新たに記憶する。「加重受信率」および「加重率」は、経過時間による重み付けをしてプログラム配信制御データの送信間隔を調整するパラメータである。
【０１４５】
次に、実施例４に係るコンテンツ配信装置１０ｃの送信速度パラメータ調整処理について説明する。コンテンツ配信装置１０ｃは、以下に説明する送信速度パラメータ調整処理を一定周期（例えば、１０秒周期）で実行し、プログラム転送パケットの送信間隔を調整している。
【０１４６】
まず、コンテンツ配信装置１０ｃの送信速度パラメータ調整処理について図３６を用いて説明する。同図に示すように、コンテンツ配信装置１０ｃは、プログラム配信制御データの配信状態が「配信中」である場合に（ステップＳ１００１肯定）、受信状況集約の有効表示が「有効」であるか判定する（ステップＳ１００２）。
【０１４７】
その結果、コンテンツ配信装置１０ｃは、受信状況集約の有効表示が「無効」である場合には（ステップＳ１００２否定）、プログラム配信制御データの配信停止計数に１を加算し（ステップＳ１００６）、配信停止計数が配信停止閾値より大きいか判定する（ステップＳ１００７）。その結果、コンテンツ配信装置１０ｃは、配信停止計数が配信停止閾値より大きい場合には（ステップＳ１００７肯定）、プログラム配信制御データの配信状態を「停止中」とし（ステップＳ１００８）、配信停止計数が配信停止閾値以下である場合には（ステップＳ１００７否定）、処理を終了する。
【０１４８】
また、コンテンツ配信装置１０ｃは、受信状況集約の有効表示が「有効」である場合には（ステップＳ１００２肯定）、プログラム配信制御データの配信停止計数を「０」にし、受信状況集約の有効表示を「無効」にする（ステップＳ１００３）。そして、コンテンツ配信装置１０ｃは、プログラム配信制御データの加重受信率に加重率を乗算して受信率を加算する（ステップＳ１００４）。
【０１４９】
その後、コンテンツ配信装置１０ｃは、プログラム配信制御データの送信間隔をプログラム配信制御データの加速率で乗算した値から加重受信率で除算した値であって、最低送信間隔制限を越えない値を新たな「送信間隔」として更新する（ステップＳ１００５）。
【０１５０】
このように、経過時間による重み付けをしてプログラム配信制御データの送信間隔を調整するので、経過時間に応じてプログラム転送パケットの送信間隔を調整できる結果、効率的に全パケットをクライアント装置に送信することが可能である。
【実施例５】
【０１５１】
ところで、本実施例では、中継装置がプログラム転送パケットを再分割するようにしてもよい。そこで、以下の実施例５では、中継装置２０ａが受信したプログラム転送パケットのサイズが大きい場合に、再分割を行う場合として、実施例５における中継装置２０ａの構成および処理について図３７〜図３８を用いて説明する。図３７は、中継装置の制御データ構成例を示す図である。図３８は、実施例５に係る中継装置の中継処理の動作を示すフローチャートである。
【０１５２】
まず最初に、実施例５に係る中継装置２０ａの制御データ構成例について、図３７を用いて説明する。図３７に例示するように、実施例５に係る中継装置２０ａは、位相「ｘ」と、その位相に対応する優先度「Ｐｒ（ｘ）」とを対応付けて記憶する「優先度対応テーブル」と、プログラムファイルごとの「優先度初期位相情報」と、通信インターフェースごとの「プログラム分割制御データ」とを新たに記憶する。
【０１５３】
中継装置２０ａでは、「優先度初期位相情報」として、プログラム転送パケットの巡回数である「Ｐｎ」、プログラム転送パケットの送信元を示す「送信元」、プログラム転送パケットの送信先を示す「宛先」、優先度初期位相情報の期限を示す「ｔｉｍｅｒ」を記憶する。
【０１５４】
また、中継装置２０ａでは、「プログラム分割制御データ」として、通信インターフェースごとに再分割単位である「Ｍ」を記憶する。なお、「Ｍ」は、通信インターフェースごとに固定値とし、２の巾乗が好ましい。
【０１５５】
次に、実施例５に係る中継装置２０ａの中継処理について図３８を用いて説明する。中継装置２０ａは、以下に説明する中継処理を行って、受信したプログラム転送パケットを再分割し、分割後のプログラム転送パケットを送信する。
【０１５６】
中継装置２０ａは、コンテンツ配信装置１０からプログラム転送パケットを受信すると（ステップＳ１１０１）、受信したプログラム転送パケットの「送信元」および「宛先」に該当する優先度初期位相を検索する（ステップＳ１１０２）。
【０１５７】
検索の結果、中継装置２０ａは、該当レコードがない場合には（ステップＳ１１０３否定）、新たに優先度初期位相を生成し（ステップＳ１１０４）、該当レコードがある場合には（ステップＳ１１０３肯定）、Ｓ１１０５に進む。
【０１５８】
そして、中継装置２０ａは、優先度初期位相の期限を１０秒に更新し（ステップＳ１１０５）、シーケンス番号（ＳＱＮ）が「０」であるか判定し（ステップＳ１１０６）、シーケンス番号が「０」である場合には（ステップＳ１１０６肯定）、プログラム配信制御データの送信周回「Ｐｎ」に１を加算する（ステップＳ１１０７）。また、中継装置２０ａは、シーケンス番号が「０」でない場合には（ステップＳ１１０６否定）、Ｓ１１０８に進む。
【０１５９】
続いて、中継装置２０ａは、受信したプログラム転送パケットのバイト数をプログラム分割制御データの「Ｍ」で除算した値を「Ｋ」とし、シーケンス番号を受信したプログラム転送パケットで除算した値を「Ｋ」で乗算した値を「Ｂｉ」とし、「ｊ」の値を「０」とする（ステップＳ１１０８）。
【０１６０】
そして、中継装置２０ａは、「Ｋ」が１であるか判定する（ステップＳ１１０９）。その結果、中継装置２０ａは、「Ｋ」が１である場合には（ステップＳ１１０９肯定）、送信バッファを確保し（ステップＳ１１１０）、送信バッファの確保がＯＫかを判定する（ステップＳ１１１１）。
【０１６１】
その結果、パケット中継装置２０ａは、送信バッファの確保がＯＫでない場合には（ステップＳ１１１１否定）、受信したプログラム転送パケットの優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも高いか判定する（ステップＳ１１１２）。
【０１６２】
その結果、パケット中継装置２０ａは、受信したプログラム転送パケットの優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも高い場合には（ステップＳ１１１２肯定）、優先度値が最も低い送信待ちプログラム転送パケットの送信待ちを取り消す（ステップＳ１１１３）。
【０１６３】
また、パケット中継装置２０ａは、Ｓ１１１１において、送信バッファの確保がＯＫである場合には（ステップＳ１１１１肯定）、送信待ちプログラム転送パケットを破棄することなく、Ｓ１１１４に進む。
【０１６４】
そして、パケット中継装置２０ａは、受信したプログラム転送パケットを送信バッファへコピーし（ステップＳ１１１４）、送信バッファを送信待ち登録し（ステップＳ１１１５）、Ｓ１１２５に進む。
【０１６５】
また、パケット中継装置２０ａは、Ｓ１１１２において、受信したプログラム転送パケットの優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも低い場合には（ステップＳ１１１２否定）、受信したプログラム転送パケットを送信バッファへコピーせずに、Ｓ１１２５に進む。
【０１６６】
また、Ｓ１１０９の説明に戻って、パケット中継装置２０ａは、「Ｋ」が１でない場合には（ステップＳ１１０９否定）、分割プログラム転送パケットの優先度を「Ｐｒ（Ｂｉ＋ｊ）＋Ｐｎ」と設定し（ステップＳ１１１６）、送信バッファを確保し（ステップＳ１１１７）、送信バッファの確保がＯＫかを判定する（ステップＳ１１１８）。
【０１６７】
その結果、パケット中継装置２０ａは、送信バッファの確保がＯＫでない場合には（ステップＳ１１１８否定）、受信したプログラム転送パケットの優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも高いか判定する（ステップＳ１１１９）。
【０１６８】
その結果、パケット中継装置２０ａは、Ｓ１１１６で設定された優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも高い場合には（ステップＳ１１１９肯定）、優先度値が最も低い送信待ちプログラム転送パケットの送信待ちを取り消す（ステップＳ１１２０）。
【０１６９】
また、パケット中継装置２０ａは、Ｓ１１１８において、送信バッファの確保がＯＫである場合には（ステップＳ１１１８肯定）、送信待ちプログラム転送パケットを破棄することなく、Ｓ１１２１に進む。
【０１７０】
そして、パケット中継装置２０ａは、受信したプログラム転送パケットの「＃ｉ」を送信バッファへコピーし（ステップＳ１１２１）、送信バッファを送信待ち登録する（ステップＳ１１２２）。
【０１７１】
また、パケット中継装置２０ａは、Ｓ１１１９において、Ｓ１１１６で設定された優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも低い場合には（ステップＳ１１１９否定）、受信したプログラム転送パケットを送信バッファへコピーせずに、Ｓ１１２３に進む。
【０１７２】
そして、パケット中継装置２０ａは、「ｊ」に１を加算した値を「ｊ」とし（ステップＳ１１２３）、「ｊ」が「Ｋ」より小さいかを判定し（ステップＳ１１２４）、「ｊ」が「Ｋ」より小さい場合には（ステップＳ１１２４肯定）、Ｓ１１１６に戻る。また、パケット中継装置２０ａは、「ｊ」が「Ｋ」以上である場合には（ステップＳ１１２４否定）、Ｓ１１２５に進む。
【０１７３】
その後、パケット中継装置２０ａは、全ての通信インターフェースについてＳ１１０８〜Ｓ１１２３の処理をしたか判定し（ステップＳ１１２５）、全ての通信インターフェースについて処理していない場合には（ステップＳ１１２５否定）、全ての通信インターフェースについて処理するまで、Ｓ１１０８〜Ｓ１１２４の処理を繰り返す。また、パケット中継装置２０ａは、全ての通信インターフェースについて処理した場合には（ステップＳ１１２５肯定）、中継処理を終了する。
【０１７４】
このように、パケット中継装置２０ａは、中継装置２０ａが受信したプログラム転送パケットのサイズが大きい場合に、再分割を行うので、プログラム転送パケットのサイズが大きく中継装置２０ａで分割が必要な場合にも、効率的に全パケットをクライアント装置３０に送信することが可能である。
【実施例６】
【０１７５】
ところで、本実施例では、コンテンツ配信装置が再送開始位置を自動調整するようにしてもよい。そこで、以下の実施例６では、コンテンツ配信装置１０ｄが再送開始位置を自動調整する場合として、実施例６におけるコンテンツ配信装置１０ｄの構成および処理について図３９〜図４４を用いて説明する。
【０１７６】
図３９は、受信状況通知のデータ構成例を示す図である。図４０は、コンテンツフォルダの制御データ構成例を示す図である。図４１は、実施例６に係るクライアント装置の再送開始位置指定送信処理の動作を示すフローチャートである。図４２は、実施例６に係るコンテンツ配信装置の再送開始位置指定受信処理の動作を示すフローチャートである。図４３は、実施例６に係るコンテンツ配信装置のパラメータ調整処理の動作を示すフローチャートである。図４４は、実施例６に係るコンテンツ配信装置のプログラム転送パケット送信処理の動作を示すフローチャートである。
【０１７７】
まず最初に、実施例６に係るクライアント装置３０ｂがコンテンツ配信装置１０ｄにプログラム転送パケットの受信状況を通知するための「受信状況通知」を図３９に例示する。実施例６に係るクライアント装置３０ｂが送信する「受信状況通知」は、図２８に示した実施例２に係るクライアント装置３０ａが送信する「受信状況通知」と比較して、新たに、プログラム転送パケットの再送開始を要求する位置を示す「再送開始位置」を記憶する。
【０１７８】
また、実施例６に係るコンテンツ配信装置１０ｄのプログラム配信制御データを図４０に例示する。実施例６に係るコンテンツ配信装置１０ｄの「プログラム配信制御データ」は、図２６に示した実施例２に係るコンテンツ配信装置１０ａの「受信状況集約」と比較して、複数のクライアント装置３０ｂから受信した受信状況通知によって決められるプログラム転送パケットの再送開始位置である「再送開始位置」を新たに記憶する。
【０１７９】
そして、実施例６に係るコンテンツ配信装置１０ｄの制御データ構成例を図４０に例示する。実施例６に係るコンテンツ配信装置１０ｄの「受信状況集約」は、図２６に示した実施例２に係るコンテンツ配信装置１０ａの「受信状況集約」と比較して、複数のクライアント装置から受信した送受信状況通知を集約した再送開始位置である「再送開始位置」と、前回の再送開始位置を示す「前再送開始位置」を新たに記憶する。
【０１８０】
コンテンツ配信装置１０ｄでは、プログラム転送パケットの送信を一巡するたびに、プログラム配信制御データの「再送開始位置」に従って、当該巡回での先頭の分割データ位置を決定し、プログラム転送パケットを送信する。
【０１８１】
次に、実施例６に係るクライアント装置３０ｂの実施例６に係るクライアント装置の再送開始位置指定送信処理について説明する。実施例６に係るクライアント装置３０ｂの再送開始位置指定送信処理は、図２９に示した受信状況通知送信処理と比較して、コンテンツ配信装置１０ｄへ再送開始位置を搭載した送受信状況通知を送信している点が相違する。
【０１８２】
すなわち、図４１に示すように、クライアント装置３０ｂは、受信状況通知を編集した後（ステップＳ１２０３）、受信済み区間情報テーブルの開始位置が最小のレコードを取り出し（ステップＳ１２０４）、開始位置が「０」であるか判定する（ステップＳ１２０５）。
【０１８３】
そして、クライアント装置３０ｂは、開始位置が「０」である場合には（ステップＳ１２０５肯定）、受信状況通知の再送開始位置を「終了位置」として（ステップＳ１２０６）、コンテンツ配信装置１０ｄに受信状況通知を送信する（ステップＳ１２０８）。
【０１８４】
また、クライアント装置３０ｂは、開始位置が「０」でない場合には（ステップＳ１２０５否定）、受信状況通知の再送開始位置を「０」にして（ステップＳ１２０７）、コンテンツ配信装置１０ｄに受信状況通知を送信する（ステップＳ１２０８）。
【０１８５】
続いて、コンテンツ配信装置１０ｄの受信状況通知受信処理、送信速度パラメータ調整処理およびプログラム転送パケット送信処理について説明する。コンテンツ配信装置１０ｄは、受信状況通知を受信すると、以下に説明する受信状況通知受信処理を行って、多数のクライアント装置の受信状況の集約を行う。
【０１８６】
コンテンツ配信装置１０ｄの受信状況通知受信処理は、図３０に示した受信状況通知受信処理と比較して、受信状況集約の再送開始位置を集約している点が相違する。すなわち、図４２に示すように、コンテンツ配信装置１０ｄは、受信状況集約を更新した後（ステップＳ１３０６）、受信状況集約の「再送開始位置」と受信状況通知の「再送開始位置」のうち、再送開始位置が最小のものを受信状況集約の再送開始位置として記憶する（ステップＳ１３０７）。
【０１８７】
次に、コンテンツ配信装置１０ｄの送信速度パラメータ調整処理について説明する。コンテンツ配信装置１０ｄは、以下に説明する送信速度パラメータ調整処理を一定周期（例えば、１０秒周期）で実行し、プログラム転送パケットの送信間隔および再送開始位置を調整している。
【０１８８】
コンテンツ配信装置１０ｄの送信速度パラメータ調整処理は、図３１に示した送信速度パラメータ調整処理と比較して、再送開始位置を調整している点が相違する。すなわち、コンテンツ配信装置１０ｄは、図４３に示すように、プログラム配信制御データの配信停止計数を「０」にし、受信状況集約の有効表示を「無効」にした後（ステップＳ１４０３）、受信状況集約の「再送開始位置」と受信状況集約の「前再送開始位置」のうち、再送開始位置が最小のものを受信状況集約の再送開始位置として記憶する（ステップＳ１４０４）。
【０１８９】
そして、コンテンツ配信装置１０ｄは、受信状況集約の「前再送開始位置」を受信状況集約の「再送開始位置」に更新した後（ステップＳ１４０５）、プログラム転送パケットの送信間隔を調整する処理を行う（ステップＳ１４０６〜Ｓ１４１６）。
【０１９０】
次に、コンテンツ配信装置１０ｄのプログラム転送パケット送信処理について説明する。コンテンツ配信装置１０ｄは、以下に説明するプログラム転送パケット送信処理を実行し、プログラム転送パケットの送信を一巡するたびに、プログラム配信制御データの「再送開始位置」に従って、当該巡回での先頭の分割データ位置を決定し、プログラム転送パケットを送信する。
【０１９１】
コンテンツ配信装置１０ｄのプログラム転送パケット送信処理では、図２１に示したプログラム転送パケット送信処理と比較して、再送開始位置を自動調整する点が相違する。すなわち、コンテンツ配信装置１０ｄは、図４４に示すように、プログラム配信制御データの送信周回「Ｐｎ」に１を加算した後（ステップＳ１５０８）、「ｉ」をプログラム配信制御データの「再送開始位置」に更新する（ステップＳ１５０９）。
【０１９２】
このように、コンテンツ配信装置が再送開始位置を自動調整して、受信済みである分割ブロックをスキップして、配信時間を短縮することが出来るので、より効率的に全パケットをクライアント装置に送信することが可能である。
【実施例７】
【０１９３】
ところで、上記の実施例６では、コンテンツ配信装置が再送開始位置を自動調整する場合を説明したが、本実施例はこれに限定されるものではなく、集約装置がコンテンツ配信装置に再送開始位置を指示するようにしてもよい。
【０１９４】
そこで、以下の実施例７では、集約装置４０ａがコンテンツ配信装置に再送開始位置を指示する場合として、実施例７における集約装置４０ａの構成および処理について図４５〜図４７を用いて説明する。
【０１９５】
図４５は、集約装置の制御データ構成例を示す図である。図４６は、実施例７に係る集約装置の再送開始位置指定受信処理の動作を示すフローチャートである。図４７は、実施例７に係る集約装置の再送開始位置指定送信処理の動作を示すフローチャートである。
【０１９６】
まず最初に、実施例７に係る集約装置４０ａの制御データ構成例について、図４５を用いて説明する。図４５に例示するように、実施例７に係る集約装置４０ａは、複数のクライアント装置４０ａから受信した受信状況を集約した「受信状況集約」を記憶する。かかる受信状況集約は、図４０に示した実施例６に係るコンテンツ配信装置１０ｄの受信状況集約と同様の情報を有する。
【０１９７】
次に、実施例７に係る集約装置４０ａの再送開始位置指定受信処理および再送開始位置指定送信処理について説明する。実施例７に係る集約装置４０ａの再送開始位置指定受信処理は、図３３に示した受信状況通知受信処理と比較して、受信状況集約の再送開始位置を集約している点が相違する。すなわち、集約装置４０ａは、図４６に示すように、受信状況集約を更新した後（ステップＳ１６０６）、受信状況集約の「再送開始位置」と受信状況通知の「再送開始位置」のうち、再送開始位置が最小のものを受信状況集約の再送開始位置として記憶する（ステップＳ１６０７）。
【０１９８】
次に、実施例７に係る集約装置４０ａの再送開始位置指定送信処理について説明する。実施例７に係る集約装置４０ａの再送開始位置指定送信処理は、図３４に示した受信状況通知送信処理と比較して、コンテンツ配信装置または上位の集約装置へ再送開始位置を搭載した送受信状況通知を送信している点が相違する。
【０１９９】
すなわち、図４７に示すように、集約装置４０ａは、受信状況通知データを用いて受信状況通知を編集した後（ステップＳ１７０３）、受信状況集約の「再送開始位置」と受信状況集約の「前再送開始位置」のうち、再送開始位置が最小のものを受信状況集約の再送開始位置として記憶する（ステップＳ１７０４）。
【０２００】
そして、集約装置４０ａは、受信状況集約の「前再送開始位置」を受信状況集約の「再送開始位置」に更新した後（ステップＳ１７０５）、コンテンツ配信装置または上位の集約装置へ再送開始位置を搭載した送受信状況通知を送信する（ステップＳ１７０６）。
【０２０１】
このように、集約装置４０ａがコンテンツ配信装置に再送開始位置を指示するので、コンテンツ配信装置１０の負荷を低減しつつ、効率的に全パケットをクライアント装置に送信することが可能である。
【実施例８】
【０２０２】
ところで、本実施例では、中継装置が所定の分割位置のパケットを観測し、優先度の位相を進めるようにしてもよい。そこで、以下の実施例８では、中継装置２０ｂが着目する分割位置のプログラム転送パケットをコンテンツ配信装置から規定回数（３回）受信するたびに、優先度の位相を進めるように制御する場合として、実施例８における中継装置２０ｂの構成および処理について図４８〜図４９を用いて説明する。図４８は、中継装置の制御データ構成例を説明するための図である。図４９は、実施例８に係る中継装置の中継処理の動作を示すフローチャートである。
【０２０３】
まず最初に、実施例８に係る中継装置２０ｂの制御データ構成例について、図４８を用いて説明する。図４８に例示するように、実施例８に係る中継装置２０ｂの優先度初期位相は、図３７に示した実施例５に係る中継装置２０ａの優先度初期位相と比較して、新たに、プログラム転送パケットの開始位置を観測対象として示す「観測対象」、プログラム転送パケットの優先度を示す「優先度」、３回の観測をカウントする「カウンタ」を記憶する。
【０２０４】
次に、実施例８に係る中継装置２０ｂの中継処理について説明する。実施例８に係る中継装置２０ｂの中継処理は、図３８に示した中継処理と比較して、中継装置２０ｂが着目する分割位置のプログラム転送パケットをコンテンツ配信装置から規定回数（３回）受信するたびに、優先度の位相を進める点が相違する。
【０２０５】
すなわち、中継装置２０ｂは、図４９に示すように、優先度初期位相の期限を１０秒に更新した後（ステップＳ１８０５）、優先度初期位相の観測対象が受信したプログラム転送パケットの再送開始位置よりも小さいか判定する（ステップＳ１８０６）。つまり、優先度初期位相の観測対象が受信済みの分割ブロックであるか否かを判定する。
【０２０６】
その結果、中継装置２０ｂは、優先度初期位相の観測対象が受信したプログラム転送パケットの再送開始位置よりも小さい場合には（ステップＳ１８０６肯定）、優先度初期位相の「観測対象」として、受信したプログラム転送パケットの「開始位置」を設定し、優先度初期位相の「優先度」として、受信したプログラム転送パケットの「優先度」を設定し、「優先度初期位相」のカウンタを「０」に設定する（ステップＳ１８０７）。
【０２０７】
また、中継装置２０ｂは、先度初期位相の観測対象が受信したプログラム転送パケットの再送開始位置以上である場合には（ステップＳ１８０６否定）、優先度初期位相の観測対象と受信したプログラム転送パケットの開始位置が同一であって、優先度初期位相の優先度と受信したプログラム転送パケットの優先度とが異なるかを判定する（ステップＳ１８０）。
【０２０８】
この結果、中継装置２０ｂは、優先度初期位相の観測対象と受信したプログラム転送パケットの開始位置が同一であって、優先度初期位相の優先度と受信したプログラム転送パケットの優先度とが異なる場合には（ステップＳ１８０８肯定）、優先度初期位相の優先度に受信したプログラム転送パケットの優先度を設定し、優先度初期位相のカウンタに「１」加算する（ステップＳ１８０９）。
【０２０９】
そして、中継装置２０ｂは、優先度初期位相のカウントが「０」であるか判定する（ステップＳ１８１０）。つまり、中継装置２０ｂは、優先度初期位相のカウントに「１」加算された値が「２」となり、観測対象を３回観測したか否かを判定する（ステップＳ１８１０）。
【０２１０】
その結果、中継装置２０ｂは、優先度初期位相のカウントが「０」である場合には（ステップＳ１８１０肯定）、プログラム配信制御データの送信周回「Ｐｎ」に１を加算して（ステップＳ１８１１）、優先度の位相を一つ進める。その後の中継処理については、図３８で説明した、実施例５に係る中継装置の中継処理と同様である。
【０２１１】
ここで、速度比と配信完了までの巡回数の関係、速度比と配信完了までの巡回数の関係について図５０、図５１を用いて説明する。図５０では、速度比と配信完了までの巡回数の関係の原理説明を示す。例えば、２のＴ乗個の位相ｘに対して、優先度Ｐｒ（ｘ）を付与することで、｛Ｐｒ（ｘ）］＝ｉのとき［ｘ］を含め、その前後の２のｉ乗個の中には、ｉ以上の優先度を持つものはない。これにより、［ｘ］は、速度比が１／（２のｉ乗）より大きいとき、２のｉ乗回の巡回を実施すると確定的に選択されることになる。
【０２１２】
つまり、図５１に示すように、当該中継装置が速度比１／（２のｉ乗）以上の区域にあるとき、特定の観測対象［ａ］を３回観測した場合、（ｉ−１）以上の優先度をもつものを３回観測することになる。これは、その間に（２のｉ乗）回の巡回を実施していることになる。ゆえに、図５０に示すように、全ての分割したデータ位置を少なくとも１回確定的に選択し、中継処理したことがいえる。
【０２１３】
このように、中継装置２０ｂが着目する分割位置のプログラム転送パケットをコンテンツ配信装置から規定回数（３回）受信するたびに、優先度の位相を進めるように制御する。このため、クライアント装置に確定的に全てのプログラム転送パケットを受信させつつ、効率的に全パケットをクライアント装置に送信することができるという効果を奏する。
【実施例９】
【０２１４】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例９として本発明に含まれる他の実施例を説明する。
【０２１５】
（１）システム構成等
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、データ分割部１２ａと優先度設定部１２ｂとを統合してもよい。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０２１６】
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０２１７】
（２）プログラム
なお、本実施例で説明したマルチキャストデータ配信方法は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【図面の簡単な説明】
【０２１８】
【図１】実施例１に係るマルチキャストデータ配信システムのネットワーク構成を示す図である。
【図２】マルチキャスト配信について説明するための図である。
【図３】実施例１に係るコンテンツ配信装置の構成を示すブロック図である。
【図４】ダウンロード開始要求のデータ構成例を示す図である。
【図５】ダウンロード開始応答のデータ構成例を示す図である。
【図６】優先対応テーブルの一例を示す図である。
【図７】プログラム配信制御データの一例を示す図である。
【図８】プログラム転送パケットの分割例を示す図である。
【図９】位相とそれに対応する優先度の関係を示す図である。
【図１０】速度比と位相による配信確度の関係を示す図である。
【図１１】コンテンツ配信状況の推移の例を説明するための図である。
【図１２】コンテンツ配信状況の推移の例を説明するための図である。
【図１３】コンテンツ配信状況の推移の例を説明するための図である。
【図１４】コンテンツ配信状況の推移の例を説明するための図である。
【図１５】コンテンツ配信状況の推移の例を説明するための図である。
【図１６】実施例１に係る中継装置の構成を示すブロック図である。
【図１７】実施例１に係るクライアント装置の構成を示すブロック図である。
【図１８】プログラムファイル配信情報の一例を示す図である。
【図１９】受信済み区間情報テーブルの一例を示す図である。
【図２０】受信状況の一例を示す図である。
【図２１】プログラム転送パケットのデータ構成例を示す図である。
【図２２】実施例１に係るコンテンツ配信装置の送信処理の動作を示すフローチャートである。
【図２３】実施例１に係るパケット中継装置の中継処理の動作を示すフローチャートである。
【図２４】実施例１に係るクライアント装置の受信処理の動作を示すフローチャートである。
【図２５】実施例１に係るクライアント装置の受信済管理処理の動作を示すフローチャートである。
【図２６】コンテンツ配信装置の制御データ構成例を示す図である。
【図２７】クライアント装置の制御データ構成例を示す図である。
【図２８】受信状況通知のデータ構成例を示す図である。
【図２９】実施例２に係るクライアント装置の受信状況通知送信処理の動作を示すフローチャートである。
【図３０】実施例２に係るコンテンツ配信装置の受信状況通知受信処理の動作を示すフローチャートである。
【図３１】実施例２に係るコンテンツ配信装置の送信速度パラメータ調整処理の動作を示すフローチャートである。
【図３２】集約装置の制御データ構成例を示す図である。
【図３３】実施例３に係る集約装置の受信状況通知受信処理の動作を示すフローチャートである。
【図３４】実施例３に係る集約装置の受信状況通知送信処理の動作を示すフローチャートである。
【図３５】コンテンツ配信装置の制御データ構成例を説明するための図である。
【図３６】実施例４に係るコンテンツ配信装置の送信速度パラメータ調整処理の動作を示すフローチャートである。
【図３７】中継装置の制御データ構成例を示す図である。
【図３８−１】実施例５に係る中継装置の中継処理の動作を示すフローチャートである。
【図３８−２】実施例５に係る中継装置の中継処理の動作を示すフローチャートである。
【図３９】受信状況通知のデータ構成例を示す図である。
【図４０】コンテンツ配信装置の制御データ構成例を示す図である。
【図４１】実施例６に係るクライアント装置の再送開始位置指定送信処理の動作を示すフローチャートである。
【図４２】実施例６に係るコンテンツ配信装置の再送開始位置指定受信処理の動作を示すフローチャートである。
【図４３】実施例６に係るコンテンツ配信装置のパラメータ調整処理の動作を示すフローチャートである。
【図４４】実施例６に係るコンテンツ配信装置のプログラム転送パケット送信処理の動作を示すフローチャートである。
【図４５】集約装置の制御データ構成例を示す図である。
【図４６】実施例７に係る集約装置の再送開始位置指定受信処理の動作を示すフローチャートである。
【図４７】実施例７に係る集約装置の再送開始位置指定送信処理の動作を示すフローチャートである。
【図４８】中継装置の制御データ構成例を説明するための図である。
【図４９−１】実施例８に係る中継装置の中継処理の動作を示すフローチャートである。
【図４９−２】実施例８に係る中継装置の中継処理の動作を示すフローチャートである。
【図５０】速度比と配信完了までの巡回数の関係を示す図である。
【図５１】速度比と検出回数による配信確度の関係を示す図である。
【図５２】従来技術を説明するための図である。
【図５３】従来技術を説明するための図である。
【符号の説明】
【０２１９】
１０  コンテンツ配信装置
１１  通信制御部
１２  制御部
１２ａ  データ分割部
１２ｂ  優先度設定部
１２ｃ  パケット送信部
１２ｄ  位相制御部
１３  記憶部
１３ａ  優先度対応テーブル
１３ｂ  プログラム配信制御データ記憶部
２０  中継装置
２１  通信制御部
２２  制御部
２２ａ  パケット受信部
２２ｂ  送信制御部
２３  記憶部
２３ａ  送信バッファ
３０  クライアント装置
３１  通信制御部
３２  制御部
３２ａ  ダウンロード開始要求部
３２ｂ  プログラム転送パケット受信部
３２ｃ  受信状況更新部
３３  記憶部
３３ａ  プログラム配信情報記憶部
３３ｂ  受信済み区間情報テーブル
３３ｃ  受信状況記憶部
【図１】
2010103772.tif 000003
【図２】
2010103772.tif 000004
【図３】
2010103772.tif 000005
【図４】
2010103772.tif 000006
【図５】
2010103772.tif 000007
【図６】
2010103772.tif 000008
【図７】
2010103772.tif 000009
【図８】
2010103772.tif 000010
【図９】
2010103772.tif 000011
【図１０】
2010103772.tif 000012
【図１１】
2010103772.tif 000013
【図１２】
2010103772.tif 000014
【図１３】
2010103772.tif 000015
【図１４】
2010103772.tif 000016
【図１５】
2010103772.tif 000017
【図１６】
2010103772.tif 000018
【図１７】
2010103772.tif 000019
【図１８】
2010103772.tif 000020
【図１９】
2010103772.tif 000021
【図２０】
2010103772.tif 000022
【図２１】
2010103772.tif 000023
【図２２】
2010103772.tif 000024
【図２３】
2010103772.tif 000025
【図２４】
2010103772.tif 000026
【図２５】
2010103772.tif 000027
【図２６】
2010103772.tif 000028
【図２７】
2010103772.tif 000029
【図２８】
2010103772.tif 000030
【図２９】
2010103772.tif 000031
【図３０】
2010103772.tif 000032
【図３１】
2010103772.tif 000033
【図３２】
2010103772.tif 000034
【図３３】
2010103772.tif 000035
【図３４】
2010103772.tif 000036
【図３５】
2010103772.tif 000037
【図３６】
2010103772.tif 000038
【図３７】
2010103772.tif 000039
【図３８−１】
2010103772.tif 000040
【図３８−２】
2010103772.tif 000041
【図３９】
2010103772.tif 000042
【図４０】
2010103772.tif 000043
【図４１】
2010103772.tif 000044
【図４２】
2010103772.tif 000045
【図４３】
2010103772.tif 000046
【図４４】
2010103772.tif 000047
【図４５】
2010103772.tif 000048
【図４６】
2010103772.tif 000049
【図４７】
2010103772.tif 000050
【図４８】
2010103772.tif 000051
【図４９−１】
2010103772.tif 000052
【図４９−２】
2010103772.tif 000053
【図５０】
2010103772.tif 000054
【図５１】
2010103772.tif 000055
【図５２】
2010103772.tif 000056
【図５３】
2010103772.tif 000057