この発明は、コンテンツデータを送信するデータ配信装置、中継装置、データ配信方法およびデータ配信プログラムに関する。
従来より、コンテンツデータ(例えば、プログラムファイル)のような同一内容を多数のクライアント装置に同時に配信する方式として、ユニキャスト通信またはマルチキャスト通信により配信する技術が行われている。
ユニキャストで配信する場合に、コンテンツ配信装置と個々のクライアント装置間に通信パスが張られる。このため、ダウンロードするクライアント装置の増大に伴い、コンテンツ配信装置近傍の通信パスが多大となり、ダウンロード時間の長期化が発生していた(図52参照)。
一方、マルチキャストで配信する場合に、データの欠落が発生し、クライアントでのコンテンツの完全な再構成を保証できない場合がある。例えば、低速区域のクライアント装置がコンテンツ受信している場合に、当該クライアント装置の区域の速度を超過してデータが配信されると、低速区域のクライアント装置でパケットの欠落が発生する。
このため、マルチキャスト配信による欠落の問題を回避するために、クライアント装置がパケット欠落を検出し、パケット欠落を検出した場合に、クライアント装置から再送すべきパケットをコンテンツ配信装置に指定する。再送すべきパケット指定されたコンテンツ配信装置は、指定されたパケットを即時に再送する技術が実施されている(特許文献1参照)。
ところで、上記したパケットを再送する技術では、コンテンツ配信装置は、各クライアント装置からパケットの要求を受信し、各クライアント装置から要求されたパケットを即時に再送している。
このため、多数のクライアント装置が存在する場合には、多くの再送要求を受信することとなり、各クライアント装置は、自己の必要とするパケットをネットワーク内の他のトラヒックを受けて、確率的に受信することになる(図53参照)。この結果、各クライアント装置が全てのパケットを受信するまでの時間が長期化するという課題があった。
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、クライアント装置が全パケットを受信する受信時間の長期化を防止し、効率的に全パケットをクライアント装置に送信することを目的とする。
上述した課題を解決し、目的を達成するため、この装置は、転送パケットごとに、位相を割当て、位相に対応する優先度を設定し、優先度を設定された各転送パケットをコンテンツデータの先頭から順次送信する。そして、全ての転送パケットが一巡回送信されると、各転送パケットに割当てられた位相を変更するように制御することを要件とする。
開示の装置は、クライアント装置による全パケットを受信するまでの時間が長期化することを防止し、効率的に全パケットをクライアント装置に送信することができるという効果を奏する。
以下に添付図面を参照して、この発明に係るデータ配信装置、中継装置、データ配信方法およびデータ配信プログラムの実施例を詳細に説明する。
以下の実施例では、実施例1に係るコンテンツ配信装置、中継装置、クライアント装置の構成および処理の流れを順に説明し、最後に実施例1による効果を説明する。
[コンテンツ配信装置の構成]
まず最初に、図1〜図15を用いて、コンテンツ配信装置10の構成を説明する。図1は、実施例1に係るマルチキャストデータ配信システムのネットワーク構成を示す図である。図2は、マルチキャスト配信について説明するための図である。図3は、実施例1に係るコンテンツ配信装置の構成を示すブロック図である。図4および図5は、ダウンロード開始要求のデータ構成例を示す図である。図6は、優先対応テーブルの一例を示す図である。図7は、プログラム配信制御データの一例を示す図である。図8は、プログラム転送パケットの分割例を示す図である。図9は、位相とそれに対応する優先度の関係を示す図である。図10は、速度比と位相による配信確度の関係を示す図である。図11〜図15は、コンテンツ配信状況の推移の例を説明するための図である。
まず、図1を用いて、実施例1に係るコンテンツ配信装置10を含むマルチキャストデータ配信システムのネットワーク構成について説明する。同図に例示するように、マルチキャストデータ配信システムは、コンテンツ配信装置(コンテンツフォルダ)10、複数の中継装置20A〜20F、複数のクライアント装置30A〜30Fを有し、ネットワークを介してそれぞれ接続される。
マルチキャストデータ配信システムでは、コンテンツ配信装置10は、中継装置20A〜20Fを介してクライアント装置30A〜30Fに対してマルチキャスト配信を行っている。ここで、各クライアント30A〜30Fは、設置されている区域に応じて、パケット受信速度が異なる。
例えば、コンテンツ配信装置10が特定の速度(例えば、クライアント30Aに最適な速度)でマルチキャスト配信した場合には、コンテンツ配信装置からのパケットを、クライアント30Aが「100%」、クライアント30Bが「25%」、クライアント30Cが「50%」、クライアント30Dが「90%」を受信する(図2参照)。
続いて、図3を用いて実施例1に係るコンテンツ配信装置10の構成を説明する。同図に示すように、このコンテンツ配信装置10は、通信制御部11、制御部12、記憶部13を有し、ネットワークを介して中継装置20およびクライアント装置30と接続される。以下にこれらの各部の処理を説明する。
通信制御部11は、接続される中継装置20およびクライアント装置30との間でやり取りする各種情報に関する通信を制御する。具体的には、通信制御部11は、中継装置20A〜20Fを介してクライアント装置30A〜30Fに対してマルチキャスト配信する。
また、通信制御部11は、クライアント装置30からダウンロード開始要求を受信し、ダウンロード開始要求応答を返信する。ここで、ダウンロード開始要求およびダウンロード開始要求応答のデータ構成について図4および図5を用いて説明する。
図4に示すように、ダウンロード開始要求応答では、ダウンロードを要求するコンテンツデータのファイル名と、要求元のクライアント装置30の位置とが情報として含んでいる。また、図5に示すように、ダウンロード開始要求応答では、ファイル名およびクライアント装置30の位置(ユニキャストアドレス)とともに、マルチキャストアドレスである配信チャネルをさらに情報として含んでいる。
記憶部13は、制御部12による各種処理に必要なデータおよびプログラムを格納するが、特に、優先度対応テーブル13aおよびプログラム配信制御データ記憶部13bを有する。
優先度対応テーブル13aは、図6に示すように、位相「x」と、その位相に対応する優先度「Pr(x)」とを対応付けて記憶する。この優先度対応テーブル13aは、後述する優先度設定部12bによって各パケットに優先度を付与するために用いられるテーブルである。
プログラム配信制御データ記憶部13bは、プログラム配信処理を制御するためのデータを記憶する。具体的には、プログラム配信制御データ記憶部13bは、図7に示すように、パケットの配信状態(配信中または停止中)を示す「配信状態」、シーケンス番号を示す「i」、送信周回を示す「Pn」、パケット送信の間隔を示す「送信間隔」を記憶する。
制御部12は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行するが、特に、データ分割部12a、優先度設定部12b、パケット送信部12c、位相制御部12dを有する。
データ分割部12aは、コンテンツデータを特定長で分割し、分割された各コンテンツデータをパケット化してプログラム転送パケットを生成する。具体的には、データ分割部12aは、クライアント装置30からダウンロード開始要求応答を受信すると、図8に示すように、コンテンツデータ(例えば、プログラムファイル)を特定長で分割する。
そして、データ分割部12aは、分割されたプログラムファイルをプログラム転送パケットに搭載して、プログラム転送パケットを生成し、優先度設定部12bに通知する。なお、プログラムファイルの分割単位「n」は、固定値とし、2の巾乗が好ましい。
優先度設定部12bは、生成されたプログラム転送パケットごとに、コンテンツデータ全体における分割データ位置に応じて位相を割当て、位相に対応する優先度を各転送パケットに設定する。具体的には、優先度設定部12bは、データ分割部12aから受信した各プログラム転送パケットに、コンテンツデータ全体における分割データ位置に応じて位相を割当てる。
そして、優先度設定部12bは、各プログラム転送パケットに割当てられた位相「x」に対応する優先度Pr(x)を優先度対応テーブル13aから取得し、優先度を各転送パケットに設定し、パケット送信部12cに通知する。
ここで、図9を用いて位相とそれに対応する優先度の関係を説明する。図9の例では、0〜16の値が位相であり、それらの値が図の高い位置にあるほど優先度が高く、図の低い位置にあるほど優先度が低いことを示している。また、図9の例では、位相0〜16に対して、5種の優先度を付与する例を示している。そして、コンテンツ配信装置10では、図9に示すように、順次、転送パケットの「優先度」の設定が上下する重畳波形状の優先度を各転送パケットに設定している。
具体的に説明すると、重畳波形状は、毎回優先、非優先を繰り返し、更に2周期ごとに優先、非優先を繰り返し、更に4周期ごとに優先、非優先を繰り返しており、2i周期ごとに優先非優先を繰り返す形状となっている。
つまり、重畳波形状では、図9に示すように、優先(図9の例では、位相0、2、4、6、8、10、12、14)、非優先(図9の例では、位相1、3、5、7、9、11、13、15)を繰り返し、更に優先としたものを1次優先とし、1次優先のものが交互に優先(図9の例では、位相0、4、8、12)、非優先(図9の例では、位相2、6、10、14)を繰り返し、更に1次優先のうち優先としたものを2次優先とし、2次優先のものが交互に優先(図9の例では、位相0、8)、非優先(図9の例では、位相4、12)を繰り返し、更に、2次優先のうち優先としたものを3次優先とし、3次優先のものが交互に優先(図9の例では、位相0)、非優先(図9の例では、位相8)を繰り返す形状となっている。
また、図10を用いて位相「x」とそれに対応する優先度「Pr(x)」の関係を説明する。同図に示すように、位相「x」が奇数「1+2k」であるものについては、優先度「Pr(x)」を「0」とする。つまり、優先度「Pr(x)」が「0」とは、非優先であることを示す(図9の例では、位相1、3、5、7、9、11、13、15)。また、位相「x」が「0」であるものについては、優先度が最も高い「k」となる。
また、位相「2i(1+2k)」の優先度が「i」である場合(例えば、図9の例では、位相「4」の優先度が「i」の場合)には、位相「2i−1(1+2k)」の優先度が「i−1」となり(図9の例では位相「2」、「6」の優先度が位相「4」の優先度より一つ低い)、位相「2i+1(1+2k)」の優先度が「i+1」となる(つまり、図9の例で説明すると、位相「8」の優先度が位相「4」の優先度より一つ高い)。
このように、コンテンツ配信装置10では、毎回優先、非優先を繰り返し、更に2周期ごとに優先、非優先を繰り返し、更に4周期ごとに優先、非優先を繰り返し、更に2i周期ごとに優先非優先を繰り返す重畳波形状の優先度を各転送パケットに設定している。
パケット送信部12cは、優先度を設定された各プログラム転送パケットをコンテンツデータの先頭から順次送信する。具体的には、パケット送信部12cは、プログラム配信制御データ記憶部13bに記憶されるプログラム配信制御データの配信状態が「配信中」である場合には、優先度を設定された各プログラム転送パケットを送信する。
そして、パケット送信部12cは、プログラム転送パケットをシーケンシャルに送信し、プログラム転送パケットの送信が1巡回した場合には、1巡回した旨を位相制御部12dに通知する。
位相制御部12dは、全ての転送パケットが一巡回送信されると、各プログラム転送パケットに割当てられた位相を変更するように制御する。具体的には、位相制御部12dは、コンテンツデータの送信を一巡回すると、シーケンス番号(分割されたデータの位置)に対する優先度の位相を一つ進めて変更する。
図11〜図15の例を用いて、優先度の位相を変化させることでコンテンツの配信状況の推移を説明する。図11〜図15では、コンテンツデータ配信の一巡回目〜五巡回目を行った場合におけるクライアント装置30A、30B、30C、30Dの受信状況を示している。
図11〜図15の例では、コンテンツ配信装置10が特定の速度(例えば、クライアント30Aに最適な速度)でマルチキャスト配信した場合には、コンテンツ配信装置からのパケットを、クライアント30Aが100%(図11の例では、速度比がx≧1に該当)、クライアント30Bが25%(図11の例では、速度比が1/4≦x<1/2に該当)、クライアント30C、30Dが50%(図11の例では、速度比が1/2≦x<1に該当)を受信する場合の例を説明する。
まず、図11に示すように、コンテンツ配信装置10は、コンテンツデータ配信の一巡回目を行う。図11では、例えば、シーケンス番号「i」のパケットに位相「0」を割当て、位相「0」に対応する優先度(図11の例では、位相「0」に対応する優先度最も高い優先度)をパケットに設定する。
ここで、クライアント装置30Aは、コンテンツデータ配信の一巡回目で、全てのパケットの受信を完了する。また、クライアント装置30Bは、コンテンツデータ配信の一巡回目で、1/4のパケットを受信し、また、クライアント装置30C、30Dは、1/2のパケットを受信する。
続いて、図12に示すように、コンテンツ配信装置10は、シーケンス番号に対する優先度の位相を変更して、コンテンツデータ配信の二巡回目を行う。つまり、図12では、例えば、シーケンス番号「i」のパケットが位相「1」に変更となり、位相「1」に対応する優先度(図12の例では、位相「1」に対応する優先度最も低い優先度)をパケットに設定する。
ここで、クライアント装置30Bは、コンテンツデータ配信の二巡回目で、1/2のパケットを受信し、クライアント装置30C、30Dは、全てのパケットの受信を完了する。
その後、図13〜図15に示すように、コンテンツデータ配信の三巡回目〜五巡回目でも同様に、優先度の位相を変更してコンテンツデータの配信処理を行い、クライアント装置30Bは、四巡回目で全てのパケットの受信を完了する。
ここで、速度比と位相による配信確度の関係についてそれぞれ図10を用いて説明する。図10に示すように、速度比とは、クライアント装置30の受信速度をコンテンツ配信装置10の送信速度で除算した値である。つまり、速度比が「1」であるクライアント装置30では、原則的にパケットの欠落が発生しないこととなる。
また、図10に示すように、最も優先度「Pr(x)」が高い位相「0」のパケットが送信された場合には、速度比が低いクライアント装置30であっても配信確度が高い。また、最も優先度「Pr(x)」が低い位相「1+2k」のパケットが送信された場合には、配信確度が低い。
上記で説明したように、コンテンツ配信装置10では、順次、パケット「優先度」の設定を上下させている。つまり、コンテンツ配信装置10は、一巡目、二巡目・・・ごとに各パケットの優先度を変えて、送信するので、中継装置20が一巡目、二巡目・・・と選択的に中継対象が変化し、クライアント装置30へコンテンツを構成する全てのパケットを効率的に到達することができる。
[中継装置の構成]
次に、図16を用いて、図1に示した中継装置20の構成を説明する。図16は、実施例1に係る中継装置20の構成を示すブロック図である。同図に示すように、この中継装置20は、通信制御部21、制御部22、記憶部23を有し、ネットワークを介してコンテンツ配信装置10およびクライアント装置30と接続される。以下にこれらの各部の処理を説明する。
通信制御部21は、接続されるコンテンツ配信装置10およびクライアント装置30との間でやり取りする各種情報に関する通信を制御する。具体的には、通信制御部21は、コンテンツ配信装置10からクライアント装置30へ配信されるマルチキャストパケットやダウンロード開始要求応答を中継する。また、通信制御部21は、クライアント装置30からコンテンツ配信装置10へ送信されたダウンロード開始要求を中継する。
記憶部23は、制御部22による各種処理に必要なデータおよびプログラムを格納するが、特に、送信バッファ23aを有する。送信バッファ23aは、受信したプログラム転送パケットを記憶する。
制御部22は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行するが、特に、パケット受信部22a、送信制御部22bを有する。
パケット受信部22aは、コンテンツ配信装置10からクライアント装置30へ配信されるマルチキャストパケットを受信する。具体的には、パケット受信部22aは、コンテンツ配信装置10からプログラム転送パケットを受信すると、送信バッファ23aを確保し、送信バッファ23aの確保がOKかを判定する。
その結果、パケット受信部22aは、送信バッファ23aの確保がOKでない場合には、受信したプログラム転送パケットの優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも高いか判定する。
また、パケット受信部22aは、送信バッファの確保がOKである場合には、送信待ちプログラム転送パケットを破棄することなく、受信したプログラム転送パケットを送信バッファ13aへコピーする。
その結果、パケット受信部22aは、受信したプログラム転送パケットの優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも高い場合には、優先度値が最も低い送信待ちプログラム転送パケットの送信待ちを取り消す。そして、パケット受信部22aは、受信したプログラム転送パケットを送信バッファ23aへコピーする。
また、パケット受信部22aは、受信したプログラム転送パケットの優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも高い場合には、受信したプログラム転送パケットを送信バッファ23aへコピーせずに破棄する。
つまり、中継装置20が速度超過(送信バッファの領域不足)となる場合には、優先度の低いプログラム転送パケットを破棄し、優先度の高いプログラム転送パケットを送信バッファ23aへコピーする。
送信制御部22bは、プログラム転送パケットをクライアント装置30に送信する。具体的には、送信制御部22bは、送信バッファに格納されている送信待ちのプログラム転送パケットをクライアント装置30に送信する。
つまり、中継装置20が速度超過(送信バッファの領域不足)となる場合には、優先度の低いプログラム転送パケットを破棄し、優先度の高いプログラム転送パケットを選択的にクライアント装置30へ中継する。
[クライアント装置の構成]
次に、図17を用いて、図1に示したクライアント装置30の構成を説明する。図17は、実施例1に係るクライアント装置30の構成を示すブロック図である。同図に示すように、このクライアント装置30は、通信制御部31、制御部32、記憶部33を有し、ネットワークを介してコンテンツ配信装置10および中継装置20と接続される。以下にこれらの各部の処理を説明する。
通信制御部31は、接続されるコンテンツ配信装置10および中継装置20との間でやり取りする各種情報に関する通信を制御する。具体的には、通信制御部31は、中継装置20を介してダウンロード開始要求をコンテンツ配信装置10へ送信する。また、通信制御部21は、コンテンツ配信装置10から中継装置20を介して配信されるマルチキャストパケットやダウンロード開始要求応答を受信する。
記憶部33は、制御部32による各種処理に必要なデータおよびプログラムを格納するが、特に、プログラム配信情報記憶部33a、受信済み区間情報テーブル33b、受信状況記憶部33cを有する。
プログラム配信情報記憶部33aは、コンテンツ配信装置10から配信されるプログラム転送パケットに関するプログラム配信情報を記憶する。具体的には、プログラム配信情報記憶部33aは、図18に例示するように、配信されるプログラムファイルの「ファイル名」、配信されるプログラムファイルの「ファイルサイズ」、マルチキャストアドレスを示す「配信チャネル」を記憶する。
受信済み区間情報テーブル33bは、コンテンツ配信装置10から受信したプログラムファイル分割データを記憶する。具体的には、受信済み区間情報テーブル33bは、図19に例示するように、受信済みのプログラムファイル分割データの開始位置と終了位置とを記憶する。
受信状況記憶部33cは、プログラム転送パケットの受信状況を記憶する。具体的には、受信状況記憶部33cは、図20に例示するように、プログラム転送パケットのバイト数を示す「受信バイト数」、受信したプログラム転送パケットの開始位置を示す「最終受信位置」、前回受信したプログラム転送パケットの開始位置を示す「前期最終受信位置」を記憶する。
制御部32は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行するが、特に、ダウンロード開始要求部32a、プログラム転送パケット受信部32b、受信状況更新部32cを有する。
ダウンロード開始要求部32aは、中継装置20を介してダウンロード開始要求をコンテンツ配信装置10へ送信し、コンテンツ配信装置10から中継装置20を介して送信されるダウンロード開始要求応答を受信する。そして、ダウンロード開始要求部32aは、受信されたダウンロード開始要求応答の情報をプログラム配信情報記憶部33aに記憶させる。
プログラム転送パケット受信部32bは、コンテンツ配信装置10から中継装置20を介して送信されるプログラム転送パケットを受信し、プログラムファイルを再構築する。具体的には、プログラム転送パケット受信部32bは、図21に例示するプログラム転送パケットを受信した場合に、受信されたプログラム転送パケットのプログラムファイル分割データについて、受信したことを受信済み区間情報テーブル33bに記憶する。
受信状況更新部32cは、プログラム転送パケットを受信するたびに、受信状況を更新する。具体的には、受信状況更新部32cは、プログラム転送パケットを受信すると、受信状況記憶部33cに記憶される受信状況を更新する。
[コンテンツ配信装置による処理]
次に、図22を用いて、実施例1に係るコンテンツ配信装置10による処理を説明する。図22は、実施例1に係るコンテンツ配信装置の送信処理の動作を示すフローチャートである。
同図に示すように、コンテンツ配信装置10は、プログラム配信制御データ記憶部13bに記憶されるプログラム配信制御データを初期化すると(ステップS101)、プログラム配信制御データのシーケンス番号「i」に対応するパケット転送プログラムを編集し(ステップS102)、プログラム転送パケットの優先度「Pr([i]+[Pn])」を設定する(ステップS103)。
そして、コンテンツ配信装置10は、プログラム転送パケットをマルチキャスト送信し(ステップS104)、プログラム配信制御データの送信間隔の間待ち合わせる(ステップS105)。
その後、コンテンツ配信装置10は、「i」に1加算した値をプログラム配信制御データのシーケンス番号「i」に設定し(ステップS106)、設定された「i」が0であるか判定する(ステップS107)。つまり、コンテンツ配信装置10は、シーケンスが1巡回し、「i」に1加算した値がプログラムファイルの分割数「[N]+1」と同じになったか否かを判定する。
この結果、コンテンツ配信装置10は、設定された「i」が0である場合には(ステップS107肯定)、シーケンスが1巡回したと判断して、プログラム配信制御データの送信周回「Pn」に1を加算する(ステップS108)。つまり、「Pn」に1を加算された場合には、次回のコンテンツの送信では、シーケンス番号に対する優先度の位相が変更となる。
そして、コンテンツ配信装置10は、プログラム配信制御データの配信状態が「配信中」であるか判定し(ステップS109)、プログラム配信制御データの配信状態が「配信中」である場合には(ステップS109肯定)、S102からS109の処理を繰り返す。また、コンテンツ配信装置10は、プログラム配信制御データの配信状態が「配信中」でなくなった場合には(ステップS109否定)、送信処理を終了する。
[パケット中継装置による処理]
次に、図23を用いて、実施例1に係るパケット中継装置20による処理を説明する。図23は、実施例1に係るパケット中継装置20の送信処理の動作を示すフローチャートである。
同図に示すように、パケット中継装置20は、コンテンツ配信装置10からプログラム転送パケットを受信すると(ステップS201)、送信バッファを確保し(ステップS202)、送信バッファの確保がOKかを判定する(ステップS203)。
その結果、パケット中継装置20は、送信バッファの確保がOKでない場合には(ステップS203否定)、受信したプログラム転送パケットの優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも高いか判定する(ステップS204)。
その結果、パケット中継装置20は、受信したプログラム転送パケットの優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも高い場合には(ステップS204肯定)、優先度値が最も低い送信待ちプログラム転送パケットの送信待ちを取り消す(ステップS205)。
また、パケット中継装置20は、S203において、送信バッファの確保がOKである場合には(ステップS203肯定)、送信待ちプログラム転送パケットを破棄することなく、S206に進む。
そして、パケット中継装置20は、受信したプログラム転送パケットを送信バッファへコピーし(ステップS206)、送信バッファを送信待ち登録する(ステップS207)。
また、パケット中継装置20は、S204において、受信したプログラム転送パケットの優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも低い場合には(ステップS204否定)、受信したプログラム転送パケットを送信バッファへコピーせずに、S208に進む。
そして、パケット中継装置20は、全ての通信インターフェースについてS202〜S207の処理をしたか判定し(ステップS208)、全ての通信インターフェースについて処理していない場合には(ステップS208否定)、全ての通信インターフェースについて処理するまで、S202〜S208の処理を繰り返す。また、パケット中継装置20は、全ての通信インターフェースについて処理した場合には(ステップS208肯定)、中継処理を終了する。
[クライアント装置による処理]
次に、図24および図25を用いて、実施例1に係るクライアント装置30による処理を説明する。図24は、実施例1に係るクライアント装置の受信処理の動作を示すフローチャートである。図25は、実施例1に係るクライアント装置の受信済管理処理の動作を示すフローチャートである。
図24に示すように、クライアント装置30は、コンテンツ配信装置(コンテンツフォルダ)10へダウンロード開始要求を送信する(ステップS301)。そして、クライアント装置30は、ダウンロード開始応答をコンテンツ配信装置10から受信する(ステップS302)。
続いて、クライアント装置30は、受信済み区間情報テーブルを初期化し(ステップS303)、プログラムファイル配信情報を記憶する(ステップS304)。そして、クライアント装置30は、受信状況を初期化する(ステップS305)。
そして、クライアント装置30は、プログラム転送パケットを受信すると(ステップS306)、プログラム転送パケットのプログラムファイル分割データをプログラムファイル組み立てエリアの対応位置へ記憶する(ステップS307)。
続いて、クライアント装置30は、プログラムファイル分割データを受信したことを受信済み区間情報テーブルへ記憶するコンテンツ受信済管理処理(後に図25を用いて詳述)を行って(ステップS308)、受信状況を更新する(ステップS309)。
その後、クライアント装置30は、プログラムファイルの全分割分を受信完了したかを判定し(ステップS310)、プログラムファイルの全分割分を受信完了していない場合には(ステップS310否定)、S306〜S310の処理を繰り返す。また、クライアント装置30は、プログラムファイルの全分割分を受信完了した場合には(ステップS310肯定)、受信処理を終了する。
続いて、クライアント装置30のコンテンツ受信済管理処理について、図25を用いて説明する。同図に示すように、クライアント装置30は、プログラム転送パケットの開始位置「x」、プログラム転送パケットのバイト数に「x」を加算した「y」を取得する(ステップS401)。
そして、クライアント装置30は、「x」≦終了位置であって、開始位置≦「y」となる受信済み区間情報テーブルのレコード数をカウントし(ステップS402)、カウントが0より大きいかを判定する(ステップS403)。
その結果、クライアント装置30は、カウントが0以下の場合には(ステップS403否定)、開始位置「x」、終了位置「y」のレコードを受信済み区間テーブルに追加する(ステップS407)。
また、クライアント装置30は、カウントが0より大きい場合には(ステップS403肯定)、「x」≦終了位置であって、開始位置≦「y」となる受信済み区間情報テーブルのレコードの開始位置の最小値をX、終了位置の最大値をYとする(ステップS404)。
続いて、クライアント装置30は、「x」≦終了位置であって、開始位置≦「y」となる受信済み区間情報テーブルのレコードを削除し(ステップS405)、開示位置が「min(X,x)」、終了位置「max(Y,y)」のレコードを受信済み区間テーブに追加して(ステップS406)、コンテンツ受信済管理処理を終了する。
[実施例1の効果]
上述してきたように、コンテンツ配信装置10は、コンテンツデータを特定長で分割し、分割された各コンテンツデータをパケット化して転送パケットを生成する。そして、コンテンツ配信装置10は、生成されたプログラム転送パケットごとに、コンテンツデータ全体における分割データ位置に応じて位相を割当て、位相に対応する優先度を各プログラム転送パケットに設定する。続いて、コンテンツ配信装置10は、優先度を設定された各プログラム転送パケットをコンテンツデータの先頭から順次送信し、全てのプログラム転送パケットが一巡回送信されると、各プログラム転送パケットに割当てられた位相を変更するように制御する。
このため、コンテンツ配信装置10では、一巡目、二巡目・・・ごとに各パケットの優先度を変えて、送信するので、中継装置20が一巡目、二巡目・・・と選択的に中継対象が変化し、クライアント装置30へコンテンツを構成する全てのパケットを効率的に到達することができる。この結果、クライアント装置30による全パケットを受信するまでの時間が長期化することを防止し、効率的に全パケットをクライアント装置30に送信することが可能である。
また、実施例1によれば、コンテンツ配信装置10では、重畳波形状の優先度を各転送パケットに設定するので、順次、パケット「優先度」の設定が上下する結果、全てのプログラム転送パケットが確定的に選択される。このため、クライアント装置30による全パケットを受信するまでの時間が長期化することを防止し、効率的に全パケットをクライアント装置30に送信することが可能である。
また、実施例1によれば、コンテンツ配信装置10では、配信先のクライアント装置が増加しても、コンテンツ配信装置10およびその近傍のネットワーク機器への負荷が一定であり、個々のクライアント装置30のダウンロード時間は一定である。また、速度の異なるクライアント装置30へ同時配信しても、個々のクライアント装置30のダウンロード時間は一定とすることが可能である。
ところで、本実施例では、プログラム転送パケットの送信間隔を調整するようにしてもよい。そこで、以下の実施例2では、クライアント装置30の受信状況に合わせて、コンテンツ配信装置10aがプログラム転送パケットの送信間隔を調整する場合として、実施例2におけるコンテンツ配信装置10aの構成および処理について図26〜図31を用いて説明する。
図26は、コンテンツ配信装置の制御データ構成例を示す図である。図27は、クライアント装置の制御データ構成例を示す図である。図28は、受信状況通知のデータ構成例を示す図である。図29は、実施例2に係るクライアント装置の受信状況通知送信処理の動作を示すフローチャートである。図30は、実施例2に係るコンテンツ配信装置の受信状況通知受信処理の動作を示すフローチャートである。図31は、実施例2に係るコンテンツ配信装置の送信速度パラメータ調整処理の動作を示すフローチャートである。
まず最初に、実施例2に係るコンテンツ配信装置10aの制御データ構成例について、図26を用いて説明する。図26に例示するように、実施例2に係るコンテンツ配信装置10aは、複数のクライアント装置30aから受信した受信状況を集約した「受信状況集約情報」を新たに記憶する。
この「受信状況集約」では、送信間隔を調整する処理が有効であるか無効であるかを示す「有効表示」と、クライアント装置の受信したバイト数を示す「受信バイト数」と、推定されるファイルサイズの総量を示す「推定総量」とを記憶する。また、「受信状況集約」では、推定される受信速度を示す「推定速度」と、ファイルサイズの総量に対する受信したバイト数の割合である「受信率」と、受信率と推定速度に応じて求められる「有効速度」とを記憶する。
また、コンテンツ配信装置10aでは、プログラム配信制御データとして、配信する速度の状態が加速中であるか巡航中であるかを示す「速度状態」、配信速度を加速される割合を示す「加速率」、加速させるか否かを決めるのに用いられる閾値である「加速閾値」を新たに記憶する。また、コンテンツ配信装置10aでは、プログラム配信制御データとして、速度状態を加速状態にするか否かを決めるのに用いられる閾値である「加速移行条件閾値」、加速状態に移行するか否かを決めるのに用いられる計数である「加速移行計数」、減速させるか否かを決めるのに用いられる閾値である「減速閾値」を新たに記憶する。
また、コンテンツ配信装置10aでは、プログラム配信制御データとして、配信状態を停止中とするか否かを決める閾値である「配信停止閾値」、配信状態を停止中とするか否かを決める計数である「配信停止計数」、送信間隔の制限を示す「最低送信間隔制限」を新たに記憶する。
次に、実施例2に係るクライアント装置30aの制御データ構成例について、図27を用いて説明する。図27に例示するように、実施例2に係るクライアント装置30aは、コンテンツ配信装置10aから配信されるプログラム転送パケットの受信状況である「受信状況」を新たに記憶する。
コンテンツ配信装置10aは、受信状況として、プログラム転送パケットのバイト数を示す「受信バイト数」、受信したプログラム転送パケットの開始位置を示す「最終受信位置」、前回受信したプログラム転送パケットの開始位置を示す「前期最終受信位置」、受信状況通知送信処理の起動周期(例えば、10秒)を示す「起動周期」を記憶する。
また、クライアント装置30aは、図28に例示するように、プログラム転送パケットの受信状況を通知するための「受信状況通知」をコンテンツ配信装置10aに送信する。この「受信状況通知」では、受信バイト数、推定総量、推定速度、受信率が情報として含まれている。
続いて、実施例2に係るクライアント装置30aの受信状況通知送信処理について説明する。なお、クライアント装置30aは、以下で説明する受信状況通知送信処理を一定周期(例えば、10秒周期)で実行し、クライアント装置30aへ受信状況通知を送信している。
図29に示すように、クライアント装置30aは、受信状況の前期最終受信位置が「1」であるか判定する(ステップS501)。クライアント装置30aは、受信状況の前期最終受信位置が「1」でない場合には(ステップS501否定)、受信状況通知データを算出し(ステップS502)、受信状況通知を編集する(ステップS503)。
そして、クライアント装置30aは、コンテンツ配信装置10aへ受信状況を送信し(ステップS504)、受信状況を更新する(ステップS505)。また、クライアント装置30aは、S101において、受信状況の前期最終受信位置が「1」である場合には(ステップS501肯定)、受信状況を送信せずに、受信状況を更新する(ステップS505)。
次に、実施例2に係るコンテンツ配信装置10aの受信状況通知受信処理および送信速度パラメータ調整処理について説明する。コンテンツ配信装置10aは、受信状況通知を受信すると、以下に説明する受信状況通知受信処理を行って、多数のクライアント装置の受信状況の集約を行う。また、コンテンツ配信装置10aは、以下に説明する送信速度パラメータ調整処理を一定周期(例えば、10秒周期)で実行し、プログラム転送パケットの送信間隔を調整している。
まず、図30を用いて受信状況通知受信処理について説明する。同図に示すように、コンテンツ配信装置10aは、受信状況集約の有効表示が有効であるか判定する(ステップS601)。その結果、コンテンツ配信装置10aは、受信状況集約の有効表示が有効でない場合には(ステップS601否定)、受信状況集約を更新する(ステップS606)。
また、コンテンツ配信装置10aは、受信状況集約の有効表示が有効である場合には(ステップS601肯定)、受信状況通知の「受信率」と「推定速度」とを乗算して、有効速度を算出する(ステップS602)。コンテンツ配信装置10aは、算出された有効速度が、受信状況集約の有効速度よりも速いか判定し(ステップS603)、速い場合には(ステップS603肯定)、受信状況集約を更新する(ステップS606)。
一方、コンテンツ配信装置10aは、算出された有効速度が、受信状況集約の有効速度よりも速くない場合には(ステップS603否定)、算出された有効速度と受信状況集約の有効速度が同じであるか判定する(ステップS604)。その結果、コンテンツ配信装置10aは、算出された有効速度と受信状況集約の有効速度が同じである場合には(ステップS604肯定)、受信状況通知の受信率が受信状況集約の受信率よりも高いか判定する(ステップS605)。
その結果、コンテンツ配信装置10aは、受信状況通知の受信率が受信状況集約の受信率よりも高い場合には(ステップS605肯定)、受信状況集約を更新する(ステップS606)。
コンテンツ配信装置10aは、算出された有効速度と受信状況集約の有効速度が同じでない場合(ステップS604否定)、または、受信状況通知の受信率が受信状況集約の受信率以下である場合には(ステップS605否定)、受信状況集約を更新せずに処理を終了する。
次に、実施例2に係るコンテンツ配信装置10aの送信速度パラメータ調整処理について図31を用いて説明する。同図に示すように、コンテンツ配信装置10aは、プログラム配信制御データの配信状態が「配信中」である場合に(ステップS701肯定)、受信状況集約の有効表示が「有効」であるか判定する(ステップS702)。
その結果、コンテンツ配信装置10aは、受信状況集約の有効表示が「無効」である場合には(ステップS702否定)、プログラム配信制御データの配信停止計数に1を加算し(ステップS715)、配信停止計数が配信停止閾値より大きいか判定する(ステップS716)。その結果、コンテンツ配信装置10aは、配信停止計数が配信停止閾値より大きい場合には(ステップS716肯定)、プログラム配信制御データの配信状態を「停止中」とし(ステップS717)、配信停止計数が配信停止閾値以下である場合には(ステップS716否定)、処理を終了する。
また、コンテンツ配信装置10aは、受信状況集約の有効表示が「有効」である場合には(ステップS702肯定)、プログラム配信制御データの配信停止計数を「0」にし、受信状況集約の有効表示を「無効」にして(ステップS703)、速度状態が「加速中」であるか判定する(ステップS704)。
その結果、コンテンツ配信装置10aは、速度状態が「加速中」である場合には(ステップS704肯定)、受信率が減速閾値以上であるか判定する(ステップS705)。その結果、コンテンツ配信装置10aは、受信率が減速閾値よりも小さい場合には(ステップS705否定)、プログラム配信制御データの送信間隔を受信状況集約の受信率で除算した値をプログラム配信制御データの新たな「送信間隔」とし、速度加速状態を「巡航中」に、「加速移行計数」を「0」に更新する(ステップS708)。
また、コンテンツ配信装置10aは、受信率が減速閾値以上である場合には(ステップS705肯定)、受信率が加速閾値以上であるか判定する(ステップS706)。
その結果、コンテンツ配信装置10aは、受信率が加速閾値以上である場合には(ステップS706肯定)、プログラム配信制御データの送信間隔をプログラム配信制御データの加速率で乗算した値であって、最低送信間隔制限を越えない値を新たな「送信間隔」として更新する(ステップS707)。また、コンテンツ配信装置10aは、受信率が減速閾値よりも小さい場合には(ステップS706否定)、処理を終了する。
S704の説明に戻って、コンテンツ配信装置10aは、速度状態が「巡航中」である場合には(ステップS704否定)、受信率が減速閾値以上であるか判定する(ステップS709)。その結果、コンテンツ配信装置10aは、受信率が減速閾値よりも小さい場合には(ステップS709否定)、プログラム配信制御データの送信間隔を受信状況集約の受信率で除算した値をプログラム配信制御データの新たな「送信間隔」として更新する(ステップS714)。
また、コンテンツ配信装置10aは、受信率が減速閾値以上である場合には(ステップS709肯定)、受信率が加速閾値以上であるか判定する(ステップS710)。
その結果、コンテンツ配信装置10aは、受信率が加速閾値以上である場合には(ステップS710肯定)、プログラム配信制御データの加速移行計数に「1」加算し(ステップS711)、プログラム配信制御データの加速移行計数が加速移行条件閾値以上であるか判定する(ステップS712)。
その結果、コンテンツ配信装置10aは、プログラム配信制御データの加速移行計数が加速移行条件閾値以上である場合には(ステップS712肯定)、プログラム配信制御データの速度状態を「加速中」に更新する(ステップS713)。
また、コンテンツ配信装置10aは、受信率が加速閾値より低い場合(ステップS710否定)、また、加速移行計数が加速移行条件閾値より低い場合には(ステップS712否定)、そのまま処理を終了する。
このように、転送パケットの送信先であるクライアント装置30の受信状況に応じて、プログラム転送パケットの送信速度を調整し、調整された送信速度で各プログラム転送パケットをコンテンツデータの先頭から順次送信する。このため、プログラム転送パケットを送信する間隔がクライアント装置30の状況に応じたものに変更され、より効率的に全パケットをクライアント装置に送信することが可能である。
ところで、上記の実施例2では、クライアント装置が受信状況通知をコンテンツ配信装置へ送信する場合を説明したが、本実施例はこれに限定されるものではなく、集約装置が複数のクライアント装置から受信状況を集約した後、受信状況通知をコンテンツ配信装置へ送信するようにしてもよい。
そこで、以下の実施例3では、集約装置40が複数のクライアント装置から受信状況を集約した後、受信状況通知をコンテンツ配信装置10bへ送信する場合として、実施例3における集約装置40の構成および処理について図32〜図34を用いて説明する。図32は、集約装置の制御データ構成例を示す図である。図33は、実施例3に係る集約装置の受信状況通知受信処理の動作を示すフローチャートである。図34は、実施例3に係る集約装置の受信状況通知送信処理の動作を示すフローチャートである。
まず最初に、実施例3に係る集約装置40の制御データ構成例について、図32を用いて説明する。図32に例示するように、実施例3に係る集約装置40は、複数のクライアント装置30aから受信した受信状況を集約した「受信状況集約」を記憶する。かかる受信状況集約は、図26に示した実施例2に係るコンテンツ配信装置10aの受信状況集約と同様の情報を有する。
次に、実施例3に係る集約装置40の受信状況通知受信処理および受信状況通知送信処理について説明する。実施例3に係る集約装置40は、受信状況通知を受信すると、以下に説明する受信状況通知受信処理を行って、多数のクライアント装置の受信状況の集約を行う。また、集約装置40は、以下に説明する受信状況通知送信処理を一定周期(例えば、10秒周期)で実行し、コンテンツ配信装置30または上位の集約装置へ受信状況通知を送信している。
まず、集約装置40の受信状況通知受信処理について図33を用いて説明する。同図に示すように、集約装置40は、受信状況集約の有効表示が有効であるか判定する(ステップS801)。その結果、集約装置40は、受信状況集約の有効表示が有効でない場合には(ステップS801否定)、受信状況集約を更新する(ステップS806)。
また、集約装置40は、受信状況集約の有効表示が有効である場合には(ステップS801肯定)、受信状況通知の「受信率」と「推定速度」とを乗算して、有効速度を算出する(ステップS802)。集約装置40は、算出された有効速度が、受信状況集約の有効速度よりも速いか判定し(ステップS803)、速い場合には(ステップS803肯定)、受信状況集約を更新する(ステップS806)。
一方、集約装置40は、算出された有効速度が、受信状況集約の有効速度よりも速くない場合には(ステップS803否定)、算出された有効速度と受信状況集約の有効速度が同じであるか判定する(ステップS804)。その結果、集約装置40は、算出された有効速度と受信状況集約の有効速度が同じである場合には(ステップS804肯定)、受信状況通知の受信率が受信状況集約の受信率よりも高いか判定する(ステップS805)。
その結果、集約装置40は、受信状況通知の受信率が受信状況集約の受信率よりも高い場合には(ステップS805肯定)、受信状況集約を更新する(ステップS806)。
集約装置40は、算出された有効速度と受信状況集約の有効速度が同じでない場合(ステップS804否定)、または、受信状況通知の受信率が受信状況集約の受信率以下である場合には(ステップS805否定)、受信状況集約を更新せずに処理を終了する。
続いて、集約装置40の受信状況通知送信処理について図34を用いて説明する。同図に示すように、集約装置40は、受信状況集約の有効表示が有効であるか判定する(ステップS901)。その結果、集約装置40は、受信状況集約の有効表示が有効でない場合には(ステップS901否定)、処理を終了する。
また、集約装置40は、受信状況集約の有効表示が有効である場合には(ステップS901肯定)、受信状況通知データを取り出し(ステップS902)、取り出された受信状況通知データを用いて受信状況通知を編集する(ステップS903)。
そして、集約装置40は、コンテンツ配信装置(または上位の集約装置)受信状況通知を送信し(ステップS904)、受信状況集約の有効表示を「有効」とする(ステップS905)。
このように、集約装置40が複数のクライアント装置30の受信状況通知を集約してコンテンツ配信装置に通知するので、コンテンツ配信装置10の負荷を低減しつつ、効率的に全パケットをクライアント装置に送信することが可能である。
ところで、本実施例では、プログラム転送パケットの送信間隔を、経過時間による重み付けにより調整するようにしてもよい。そこで、以下の実施例4では、コンテンツ配信装置10cがプログラム転送パケットの送信間隔を、経過時間による重み付けにより調整する場合として、実施例4におけるコンテンツ配信装置10cの構成および処理について図35〜図36を用いて説明する。図35は、コンテンツ配信装置の制御データ構成例を説明するための図である。図36は、実施例4に係るコンテンツ配信装置の送信速度パラメータ調整処理の動作を示すフローチャートである。
まず最初に、実施例4に係るコンテンツ配信装置10cの制御データ構成例について、図35を用いて説明する。図35に例示するように、実施例2に係るコンテンツ配信装置10cのプログラム配信制御データ記憶部が記憶するプログラム配信制御データは、図26に示したプログラム配信制御データと比較して、「加重受信率」および「加重率」を新たに記憶する。「加重受信率」および「加重率」は、経過時間による重み付けをしてプログラム配信制御データの送信間隔を調整するパラメータである。
次に、実施例4に係るコンテンツ配信装置10cの送信速度パラメータ調整処理について説明する。コンテンツ配信装置10cは、以下に説明する送信速度パラメータ調整処理を一定周期(例えば、10秒周期)で実行し、プログラム転送パケットの送信間隔を調整している。
まず、コンテンツ配信装置10cの送信速度パラメータ調整処理について図36を用いて説明する。同図に示すように、コンテンツ配信装置10cは、プログラム配信制御データの配信状態が「配信中」である場合に(ステップS1001肯定)、受信状況集約の有効表示が「有効」であるか判定する(ステップS1002)。
その結果、コンテンツ配信装置10cは、受信状況集約の有効表示が「無効」である場合には(ステップS1002否定)、プログラム配信制御データの配信停止計数に1を加算し(ステップS1006)、配信停止計数が配信停止閾値より大きいか判定する(ステップS1007)。その結果、コンテンツ配信装置10cは、配信停止計数が配信停止閾値より大きい場合には(ステップS1007肯定)、プログラム配信制御データの配信状態を「停止中」とし(ステップS1008)、配信停止計数が配信停止閾値以下である場合には(ステップS1007否定)、処理を終了する。
また、コンテンツ配信装置10cは、受信状況集約の有効表示が「有効」である場合には(ステップS1002肯定)、プログラム配信制御データの配信停止計数を「0」にし、受信状況集約の有効表示を「無効」にする(ステップS1003)。そして、コンテンツ配信装置10cは、プログラム配信制御データの加重受信率に加重率を乗算して受信率を加算する(ステップS1004)。
その後、コンテンツ配信装置10cは、プログラム配信制御データの送信間隔をプログラム配信制御データの加速率で乗算した値から加重受信率で除算した値であって、最低送信間隔制限を越えない値を新たな「送信間隔」として更新する(ステップS1005)。
このように、経過時間による重み付けをしてプログラム配信制御データの送信間隔を調整するので、経過時間に応じてプログラム転送パケットの送信間隔を調整できる結果、効率的に全パケットをクライアント装置に送信することが可能である。
ところで、本実施例では、中継装置がプログラム転送パケットを再分割するようにしてもよい。そこで、以下の実施例5では、中継装置20aが受信したプログラム転送パケットのサイズが大きい場合に、再分割を行う場合として、実施例5における中継装置20aの構成および処理について図37〜図38を用いて説明する。図37は、中継装置の制御データ構成例を示す図である。図38は、実施例5に係る中継装置の中継処理の動作を示すフローチャートである。
まず最初に、実施例5に係る中継装置20aの制御データ構成例について、図37を用いて説明する。図37に例示するように、実施例5に係る中継装置20aは、位相「x」と、その位相に対応する優先度「Pr(x)」とを対応付けて記憶する「優先度対応テーブル」と、プログラムファイルごとの「優先度初期位相情報」と、通信インターフェースごとの「プログラム分割制御データ」とを新たに記憶する。
中継装置20aでは、「優先度初期位相情報」として、プログラム転送パケットの巡回数である「Pn」、プログラム転送パケットの送信元を示す「送信元」、プログラム転送パケットの送信先を示す「宛先」、優先度初期位相情報の期限を示す「timer」を記憶する。
また、中継装置20aでは、「プログラム分割制御データ」として、通信インターフェースごとに再分割単位である「M」を記憶する。なお、「M」は、通信インターフェースごとに固定値とし、2の巾乗が好ましい。
次に、実施例5に係る中継装置20aの中継処理について図38を用いて説明する。中継装置20aは、以下に説明する中継処理を行って、受信したプログラム転送パケットを再分割し、分割後のプログラム転送パケットを送信する。
中継装置20aは、コンテンツ配信装置10からプログラム転送パケットを受信すると(ステップS1101)、受信したプログラム転送パケットの「送信元」および「宛先」に該当する優先度初期位相を検索する(ステップS1102)。
検索の結果、中継装置20aは、該当レコードがない場合には(ステップS1103否定)、新たに優先度初期位相を生成し(ステップS1104)、該当レコードがある場合には(ステップS1103肯定)、S1105に進む。
そして、中継装置20aは、優先度初期位相の期限を10秒に更新し(ステップS1105)、シーケンス番号(SQN)が「0」であるか判定し(ステップS1106)、シーケンス番号が「0」である場合には(ステップS1106肯定)、プログラム配信制御データの送信周回「Pn」に1を加算する(ステップS1107)。また、中継装置20aは、シーケンス番号が「0」でない場合には(ステップS1106否定)、S1108に進む。
続いて、中継装置20aは、受信したプログラム転送パケットのバイト数をプログラム分割制御データの「M」で除算した値を「K」とし、シーケンス番号を受信したプログラム転送パケットで除算した値を「K」で乗算した値を「Bi」とし、「j」の値を「0」とする(ステップS1108)。
そして、中継装置20aは、「K」が1であるか判定する(ステップS1109)。その結果、中継装置20aは、「K」が1である場合には(ステップS1109肯定)、送信バッファを確保し(ステップS1110)、送信バッファの確保がOKかを判定する(ステップS1111)。
その結果、パケット中継装置20aは、送信バッファの確保がOKでない場合には(ステップS1111否定)、受信したプログラム転送パケットの優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも高いか判定する(ステップS1112)。
その結果、パケット中継装置20aは、受信したプログラム転送パケットの優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも高い場合には(ステップS1112肯定)、優先度値が最も低い送信待ちプログラム転送パケットの送信待ちを取り消す(ステップS1113)。
また、パケット中継装置20aは、S1111において、送信バッファの確保がOKである場合には(ステップS1111肯定)、送信待ちプログラム転送パケットを破棄することなく、S1114に進む。
そして、パケット中継装置20aは、受信したプログラム転送パケットを送信バッファへコピーし(ステップS1114)、送信バッファを送信待ち登録し(ステップS1115)、S1125に進む。
また、パケット中継装置20aは、S1112において、受信したプログラム転送パケットの優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも低い場合には(ステップS1112否定)、受信したプログラム転送パケットを送信バッファへコピーせずに、S1125に進む。
また、S1109の説明に戻って、パケット中継装置20aは、「K」が1でない場合には(ステップS1109否定)、分割プログラム転送パケットの優先度を「Pr(Bi+j)+Pn」と設定し(ステップS1116)、送信バッファを確保し(ステップS1117)、送信バッファの確保がOKかを判定する(ステップS1118)。
その結果、パケット中継装置20aは、送信バッファの確保がOKでない場合には(ステップS1118否定)、受信したプログラム転送パケットの優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも高いか判定する(ステップS1119)。
その結果、パケット中継装置20aは、S1116で設定された優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも高い場合には(ステップS1119肯定)、優先度値が最も低い送信待ちプログラム転送パケットの送信待ちを取り消す(ステップS1120)。
また、パケット中継装置20aは、S1118において、送信バッファの確保がOKである場合には(ステップS1118肯定)、送信待ちプログラム転送パケットを破棄することなく、S1121に進む。
そして、パケット中継装置20aは、受信したプログラム転送パケットの「#i」を送信バッファへコピーし(ステップS1121)、送信バッファを送信待ち登録する(ステップS1122)。
また、パケット中継装置20aは、S1119において、S1116で設定された優先度が、最も優先度が低い送信待ちプログラム転送パケットの優先度よりも低い場合には(ステップS1119否定)、受信したプログラム転送パケットを送信バッファへコピーせずに、S1123に進む。
そして、パケット中継装置20aは、「j」に1を加算した値を「j」とし(ステップS1123)、「j」が「K」より小さいかを判定し(ステップS1124)、「j」が「K」より小さい場合には(ステップS1124肯定)、S1116に戻る。また、パケット中継装置20aは、「j」が「K」以上である場合には(ステップS1124否定)、S1125に進む。
その後、パケット中継装置20aは、全ての通信インターフェースについてS1108〜S1123の処理をしたか判定し(ステップS1125)、全ての通信インターフェースについて処理していない場合には(ステップS1125否定)、全ての通信インターフェースについて処理するまで、S1108〜S1124の処理を繰り返す。また、パケット中継装置20aは、全ての通信インターフェースについて処理した場合には(ステップS1125肯定)、中継処理を終了する。
このように、パケット中継装置20aは、中継装置20aが受信したプログラム転送パケットのサイズが大きい場合に、再分割を行うので、プログラム転送パケットのサイズが大きく中継装置20aで分割が必要な場合にも、効率的に全パケットをクライアント装置30に送信することが可能である。
ところで、本実施例では、コンテンツ配信装置が再送開始位置を自動調整するようにしてもよい。そこで、以下の実施例6では、コンテンツ配信装置10dが再送開始位置を自動調整する場合として、実施例6におけるコンテンツ配信装置10dの構成および処理について図39〜図44を用いて説明する。
図39は、受信状況通知のデータ構成例を示す図である。図40は、コンテンツフォルダの制御データ構成例を示す図である。図41は、実施例6に係るクライアント装置の再送開始位置指定送信処理の動作を示すフローチャートである。図42は、実施例6に係るコンテンツ配信装置の再送開始位置指定受信処理の動作を示すフローチャートである。図43は、実施例6に係るコンテンツ配信装置のパラメータ調整処理の動作を示すフローチャートである。図44は、実施例6に係るコンテンツ配信装置のプログラム転送パケット送信処理の動作を示すフローチャートである。
まず最初に、実施例6に係るクライアント装置30bがコンテンツ配信装置10dにプログラム転送パケットの受信状況を通知するための「受信状況通知」を図39に例示する。実施例6に係るクライアント装置30bが送信する「受信状況通知」は、図28に示した実施例2に係るクライアント装置30aが送信する「受信状況通知」と比較して、新たに、プログラム転送パケットの再送開始を要求する位置を示す「再送開始位置」を記憶する。
また、実施例6に係るコンテンツ配信装置10dのプログラム配信制御データを図40に例示する。実施例6に係るコンテンツ配信装置10dの「プログラム配信制御データ」は、図26に示した実施例2に係るコンテンツ配信装置10aの「受信状況集約」と比較して、複数のクライアント装置30bから受信した受信状況通知によって決められるプログラム転送パケットの再送開始位置である「再送開始位置」を新たに記憶する。
そして、実施例6に係るコンテンツ配信装置10dの制御データ構成例を図40に例示する。実施例6に係るコンテンツ配信装置10dの「受信状況集約」は、図26に示した実施例2に係るコンテンツ配信装置10aの「受信状況集約」と比較して、複数のクライアント装置から受信した送受信状況通知を集約した再送開始位置である「再送開始位置」と、前回の再送開始位置を示す「前再送開始位置」を新たに記憶する。
コンテンツ配信装置10dでは、プログラム転送パケットの送信を一巡するたびに、プログラム配信制御データの「再送開始位置」に従って、当該巡回での先頭の分割データ位置を決定し、プログラム転送パケットを送信する。
次に、実施例6に係るクライアント装置30bの実施例6に係るクライアント装置の再送開始位置指定送信処理について説明する。実施例6に係るクライアント装置30bの再送開始位置指定送信処理は、図29に示した受信状況通知送信処理と比較して、コンテンツ配信装置10dへ再送開始位置を搭載した送受信状況通知を送信している点が相違する。
すなわち、図41に示すように、クライアント装置30bは、受信状況通知を編集した後(ステップS1203)、受信済み区間情報テーブルの開始位置が最小のレコードを取り出し(ステップS1204)、開始位置が「0」であるか判定する(ステップS1205)。
そして、クライアント装置30bは、開始位置が「0」である場合には(ステップS1205肯定)、受信状況通知の再送開始位置を「終了位置」として(ステップS1206)、コンテンツ配信装置10dに受信状況通知を送信する(ステップS1208)。
また、クライアント装置30bは、開始位置が「0」でない場合には(ステップS1205否定)、受信状況通知の再送開始位置を「0」にして(ステップS1207)、コンテンツ配信装置10dに受信状況通知を送信する(ステップS1208)。
続いて、コンテンツ配信装置10dの受信状況通知受信処理、送信速度パラメータ調整処理およびプログラム転送パケット送信処理について説明する。コンテンツ配信装置10dは、受信状況通知を受信すると、以下に説明する受信状況通知受信処理を行って、多数のクライアント装置の受信状況の集約を行う。
コンテンツ配信装置10dの受信状況通知受信処理は、図30に示した受信状況通知受信処理と比較して、受信状況集約の再送開始位置を集約している点が相違する。すなわち、図42に示すように、コンテンツ配信装置10dは、受信状況集約を更新した後(ステップS1306)、受信状況集約の「再送開始位置」と受信状況通知の「再送開始位置」のうち、再送開始位置が最小のものを受信状況集約の再送開始位置として記憶する(ステップS1307)。
次に、コンテンツ配信装置10dの送信速度パラメータ調整処理について説明する。コンテンツ配信装置10dは、以下に説明する送信速度パラメータ調整処理を一定周期(例えば、10秒周期)で実行し、プログラム転送パケットの送信間隔および再送開始位置を調整している。
コンテンツ配信装置10dの送信速度パラメータ調整処理は、図31に示した送信速度パラメータ調整処理と比較して、再送開始位置を調整している点が相違する。すなわち、コンテンツ配信装置10dは、図43に示すように、プログラム配信制御データの配信停止計数を「0」にし、受信状況集約の有効表示を「無効」にした後(ステップS1403)、受信状況集約の「再送開始位置」と受信状況集約の「前再送開始位置」のうち、再送開始位置が最小のものを受信状況集約の再送開始位置として記憶する(ステップS1404)。
そして、コンテンツ配信装置10dは、受信状況集約の「前再送開始位置」を受信状況集約の「再送開始位置」に更新した後(ステップS1405)、プログラム転送パケットの送信間隔を調整する処理を行う(ステップS1406〜S1416)。
次に、コンテンツ配信装置10dのプログラム転送パケット送信処理について説明する。コンテンツ配信装置10dは、以下に説明するプログラム転送パケット送信処理を実行し、プログラム転送パケットの送信を一巡するたびに、プログラム配信制御データの「再送開始位置」に従って、当該巡回での先頭の分割データ位置を決定し、プログラム転送パケットを送信する。
コンテンツ配信装置10dのプログラム転送パケット送信処理では、図21に示したプログラム転送パケット送信処理と比較して、再送開始位置を自動調整する点が相違する。すなわち、コンテンツ配信装置10dは、図44に示すように、プログラム配信制御データの送信周回「Pn」に1を加算した後(ステップS1508)、「i」をプログラム配信制御データの「再送開始位置」に更新する(ステップS1509)。
このように、コンテンツ配信装置が再送開始位置を自動調整して、受信済みである分割ブロックをスキップして、配信時間を短縮することが出来るので、より効率的に全パケットをクライアント装置に送信することが可能である。
ところで、上記の実施例6では、コンテンツ配信装置が再送開始位置を自動調整する場合を説明したが、本実施例はこれに限定されるものではなく、集約装置がコンテンツ配信装置に再送開始位置を指示するようにしてもよい。
そこで、以下の実施例7では、集約装置40aがコンテンツ配信装置に再送開始位置を指示する場合として、実施例7における集約装置40aの構成および処理について図45〜図47を用いて説明する。
図45は、集約装置の制御データ構成例を示す図である。図46は、実施例7に係る集約装置の再送開始位置指定受信処理の動作を示すフローチャートである。図47は、実施例7に係る集約装置の再送開始位置指定送信処理の動作を示すフローチャートである。
まず最初に、実施例7に係る集約装置40aの制御データ構成例について、図45を用いて説明する。図45に例示するように、実施例7に係る集約装置40aは、複数のクライアント装置40aから受信した受信状況を集約した「受信状況集約」を記憶する。かかる受信状況集約は、図40に示した実施例6に係るコンテンツ配信装置10dの受信状況集約と同様の情報を有する。
次に、実施例7に係る集約装置40aの再送開始位置指定受信処理および再送開始位置指定送信処理について説明する。実施例7に係る集約装置40aの再送開始位置指定受信処理は、図33に示した受信状況通知受信処理と比較して、受信状況集約の再送開始位置を集約している点が相違する。すなわち、集約装置40aは、図46に示すように、受信状況集約を更新した後(ステップS1606)、受信状況集約の「再送開始位置」と受信状況通知の「再送開始位置」のうち、再送開始位置が最小のものを受信状況集約の再送開始位置として記憶する(ステップS1607)。
次に、実施例7に係る集約装置40aの再送開始位置指定送信処理について説明する。実施例7に係る集約装置40aの再送開始位置指定送信処理は、図34に示した受信状況通知送信処理と比較して、コンテンツ配信装置または上位の集約装置へ再送開始位置を搭載した送受信状況通知を送信している点が相違する。
すなわち、図47に示すように、集約装置40aは、受信状況通知データを用いて受信状況通知を編集した後(ステップS1703)、受信状況集約の「再送開始位置」と受信状況集約の「前再送開始位置」のうち、再送開始位置が最小のものを受信状況集約の再送開始位置として記憶する(ステップS1704)。
そして、集約装置40aは、受信状況集約の「前再送開始位置」を受信状況集約の「再送開始位置」に更新した後(ステップS1705)、コンテンツ配信装置または上位の集約装置へ再送開始位置を搭載した送受信状況通知を送信する(ステップS1706)。
このように、集約装置40aがコンテンツ配信装置に再送開始位置を指示するので、コンテンツ配信装置10の負荷を低減しつつ、効率的に全パケットをクライアント装置に送信することが可能である。
ところで、本実施例では、中継装置が所定の分割位置のパケットを観測し、優先度の位相を進めるようにしてもよい。そこで、以下の実施例8では、中継装置20bが着目する分割位置のプログラム転送パケットをコンテンツ配信装置から規定回数(3回)受信するたびに、優先度の位相を進めるように制御する場合として、実施例8における中継装置20bの構成および処理について図48〜図49を用いて説明する。図48は、中継装置の制御データ構成例を説明するための図である。図49は、実施例8に係る中継装置の中継処理の動作を示すフローチャートである。
まず最初に、実施例8に係る中継装置20bの制御データ構成例について、図48を用いて説明する。図48に例示するように、実施例8に係る中継装置20bの優先度初期位相は、図37に示した実施例5に係る中継装置20aの優先度初期位相と比較して、新たに、プログラム転送パケットの開始位置を観測対象として示す「観測対象」、プログラム転送パケットの優先度を示す「優先度」、3回の観測をカウントする「カウンタ」を記憶する。
次に、実施例8に係る中継装置20bの中継処理について説明する。実施例8に係る中継装置20bの中継処理は、図38に示した中継処理と比較して、中継装置20bが着目する分割位置のプログラム転送パケットをコンテンツ配信装置から規定回数(3回)受信するたびに、優先度の位相を進める点が相違する。
すなわち、中継装置20bは、図49に示すように、優先度初期位相の期限を10秒に更新した後(ステップS1805)、優先度初期位相の観測対象が受信したプログラム転送パケットの再送開始位置よりも小さいか判定する(ステップS1806)。つまり、優先度初期位相の観測対象が受信済みの分割ブロックであるか否かを判定する。
その結果、中継装置20bは、優先度初期位相の観測対象が受信したプログラム転送パケットの再送開始位置よりも小さい場合には(ステップS1806肯定)、優先度初期位相の「観測対象」として、受信したプログラム転送パケットの「開始位置」を設定し、優先度初期位相の「優先度」として、受信したプログラム転送パケットの「優先度」を設定し、「優先度初期位相」のカウンタを「0」に設定する(ステップS1807)。
また、中継装置20bは、先度初期位相の観測対象が受信したプログラム転送パケットの再送開始位置以上である場合には(ステップS1806否定)、優先度初期位相の観測対象と受信したプログラム転送パケットの開始位置が同一であって、優先度初期位相の優先度と受信したプログラム転送パケットの優先度とが異なるかを判定する(ステップS180)。
この結果、中継装置20bは、優先度初期位相の観測対象と受信したプログラム転送パケットの開始位置が同一であって、優先度初期位相の優先度と受信したプログラム転送パケットの優先度とが異なる場合には(ステップS1808肯定)、優先度初期位相の優先度に受信したプログラム転送パケットの優先度を設定し、優先度初期位相のカウンタに「1」加算する(ステップS1809)。
そして、中継装置20bは、優先度初期位相のカウントが「0」であるか判定する(ステップS1810)。つまり、中継装置20bは、優先度初期位相のカウントに「1」加算された値が「2」となり、観測対象を3回観測したか否かを判定する(ステップS1810)。
その結果、中継装置20bは、優先度初期位相のカウントが「0」である場合には(ステップS1810肯定)、プログラム配信制御データの送信周回「Pn」に1を加算して(ステップS1811)、優先度の位相を一つ進める。その後の中継処理については、図38で説明した、実施例5に係る中継装置の中継処理と同様である。
ここで、速度比と配信完了までの巡回数の関係、速度比と配信完了までの巡回数の関係について図50、図51を用いて説明する。図50では、速度比と配信完了までの巡回数の関係の原理説明を示す。例えば、2のT乗個の位相xに対して、優先度Pr(x)を付与することで、{Pr(x)]=iのとき[x]を含め、その前後の2のi乗個の中には、i以上の優先度を持つものはない。これにより、[x]は、速度比が1/(2のi乗)より大きいとき、2のi乗回の巡回を実施すると確定的に選択されることになる。
つまり、図51に示すように、当該中継装置が速度比1/(2のi乗)以上の区域にあるとき、特定の観測対象[a]を3回観測した場合、(i−1)以上の優先度をもつものを3回観測することになる。これは、その間に(2のi乗)回の巡回を実施していることになる。ゆえに、図50に示すように、全ての分割したデータ位置を少なくとも1回確定的に選択し、中継処理したことがいえる。
このように、中継装置20bが着目する分割位置のプログラム転送パケットをコンテンツ配信装置から規定回数(3回)受信するたびに、優先度の位相を進めるように制御する。このため、クライアント装置に確定的に全てのプログラム転送パケットを受信させつつ、効率的に全パケットをクライアント装置に送信することができるという効果を奏する。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例9として本発明に含まれる他の実施例を説明する。
(1)システム構成等
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、データ分割部12aと優先度設定部12bとを統合してもよい。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
(2)プログラム
なお、本実施例で説明したマルチキャストデータ配信方法は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
実施例1に係るマルチキャストデータ配信システムのネットワーク構成を示す図である。
マルチキャスト配信について説明するための図である。
実施例1に係るコンテンツ配信装置の構成を示すブロック図である。
ダウンロード開始要求のデータ構成例を示す図である。
ダウンロード開始応答のデータ構成例を示す図である。
優先対応テーブルの一例を示す図である。
プログラム配信制御データの一例を示す図である。
プログラム転送パケットの分割例を示す図である。
位相とそれに対応する優先度の関係を示す図である。
速度比と位相による配信確度の関係を示す図である。
コンテンツ配信状況の推移の例を説明するための図である。
コンテンツ配信状況の推移の例を説明するための図である。
コンテンツ配信状況の推移の例を説明するための図である。
コンテンツ配信状況の推移の例を説明するための図である。
コンテンツ配信状況の推移の例を説明するための図である。
実施例1に係る中継装置の構成を示すブロック図である。
実施例1に係るクライアント装置の構成を示すブロック図である。
プログラムファイル配信情報の一例を示す図である。
受信済み区間情報テーブルの一例を示す図である。
受信状況の一例を示す図である。
プログラム転送パケットのデータ構成例を示す図である。
実施例1に係るコンテンツ配信装置の送信処理の動作を示すフローチャートである。
実施例1に係るパケット中継装置の中継処理の動作を示すフローチャートである。
実施例1に係るクライアント装置の受信処理の動作を示すフローチャートである。
実施例1に係るクライアント装置の受信済管理処理の動作を示すフローチャートである。
コンテンツ配信装置の制御データ構成例を示す図である。
クライアント装置の制御データ構成例を示す図である。
受信状況通知のデータ構成例を示す図である。
実施例2に係るクライアント装置の受信状況通知送信処理の動作を示すフローチャートである。
実施例2に係るコンテンツ配信装置の受信状況通知受信処理の動作を示すフローチャートである。
実施例2に係るコンテンツ配信装置の送信速度パラメータ調整処理の動作を示すフローチャートである。
集約装置の制御データ構成例を示す図である。
実施例3に係る集約装置の受信状況通知受信処理の動作を示すフローチャートである。
実施例3に係る集約装置の受信状況通知送信処理の動作を示すフローチャートである。
コンテンツ配信装置の制御データ構成例を説明するための図である。
実施例4に係るコンテンツ配信装置の送信速度パラメータ調整処理の動作を示すフローチャートである。
中継装置の制御データ構成例を示す図である。
実施例5に係る中継装置の中継処理の動作を示すフローチャートである。
実施例5に係る中継装置の中継処理の動作を示すフローチャートである。
受信状況通知のデータ構成例を示す図である。
コンテンツ配信装置の制御データ構成例を示す図である。
実施例6に係るクライアント装置の再送開始位置指定送信処理の動作を示すフローチャートである。
実施例6に係るコンテンツ配信装置の再送開始位置指定受信処理の動作を示すフローチャートである。
実施例6に係るコンテンツ配信装置のパラメータ調整処理の動作を示すフローチャートである。
実施例6に係るコンテンツ配信装置のプログラム転送パケット送信処理の動作を示すフローチャートである。
集約装置の制御データ構成例を示す図である。
実施例7に係る集約装置の再送開始位置指定受信処理の動作を示すフローチャートである。
実施例7に係る集約装置の再送開始位置指定送信処理の動作を示すフローチャートである。
中継装置の制御データ構成例を説明するための図である。
実施例8に係る中継装置の中継処理の動作を示すフローチャートである。
実施例8に係る中継装置の中継処理の動作を示すフローチャートである。
速度比と配信完了までの巡回数の関係を示す図である。
速度比と検出回数による配信確度の関係を示す図である。
従来技術を説明するための図である。
従来技術を説明するための図である。
符号の説明
10 コンテンツ配信装置
11 通信制御部
12 制御部
12a データ分割部
12b 優先度設定部
12c パケット送信部
12d 位相制御部
13 記憶部
13a 優先度対応テーブル
13b プログラム配信制御データ記憶部
20 中継装置
21 通信制御部
22 制御部
22a パケット受信部
22b 送信制御部
23 記憶部
23a 送信バッファ
30 クライアント装置
31 通信制御部
32 制御部
32a ダウンロード開始要求部
32b プログラム転送パケット受信部
32c 受信状況更新部
33 記憶部
33a プログラム配信情報記憶部
33b 受信済み区間情報テーブル
33c 受信状況記憶部