(57)【要約】【課題】データの分割配信において，データ分割配信中の障害によって一部の配信サーバとの通信が途絶した場合においても，途切れることなく高速なデータ配信を継続することを可能にする。【解決手段】クライアント１からの配信要求により，複数の配信サーバが，配信対象データをクライアント１に分割配信するとともに，他の配信サーバが，分割配信したデータに対するエラー訂正情報を同時にクライアント１に配信する。クライアント１は，通常はエラー訂正情報を利用しないで配信されたデータを結合し配信対象データを復元するが，一部の配信サーバからのデータが障害により受信できないか，または所定の転送速度以下になった場合には，エラー訂正情報を利用して配信対象データを復元する。【選択図】　　　　　図１
2004070712.tif 000002
【特許請求の範囲】
【請求項１】
複数台の配信サーバを有し，ネットワークを介してデータ受信装置に配信対象データを配信するデータ配信方法であって，
前記配信サーバは，配信対象データを複数のブロックに分割し，
先頭から順次連続するｎ（ｎ≧２）ブロックの配信対象データを１ブロックずつ分担してｎ台の配信サーバによりデータ受信装置へ配信し，
前記ｎブロックの配信対象データに関するエラー訂正情報を，他の配信サーバにより同時にデータ受信装置に配信する
ことを特徴とするデータ配信方法。
【請求項２】
請求項１記載のデータ配信方法において，
前記エラー訂正情報として，前記ｎブロックの配信対象データのパリティを利用する
ことを特徴とするデータ配信方法。
【請求項３】
複数台の配信サーバを有し，ネットワークを介してデータ受信装置に配信対象データを配信するデータ配信システムであって，
前記各配信サーバは，
それぞれ同一の配信対象データを保持する手段と，
前記配信対象データを複数のブロックに分割する手段と，
前記分割された配信対象データの先頭から順次連続するｎ（ｎ≧２）ブロックに関するエラー訂正情報を生成する手段と，
データ受信装置からの配信要求に対し，先頭から順次連続するｎブロックの配信対象データの中の指定された１ブロックを分担して配信するか，または前記エラー訂正情報を配信する手段とを備える
ことを特徴とするデータ配信システム。
【請求項４】
複数ブロックに分割された配信対象データを複数台の配信サーバから受信する分割配信データ受信方法であって，
前記分割された配信対象データのうち，先頭から順次連続するｎ（ｎ≧２）ブロックの配信対象データの配信を１ブロックずつｎ台の配信サーバに担当させて，該ｎ台の配信サーバから受信し，
同時に前記ｎブロックの配信対象データに関するエラー訂正情報を，他の配信サーバから受信し，
前記ｎ台の配信サーバからのｎブロックの配信対象データを受信した場合には，それらを結合して連続するｎブロックの受信データとし，
前記ｎ台の配信サーバからの配信対象データのうち，障害により一部の配信サーバからの配信対象データを受信できなかった場合，またはあらかじめ定めた時間内に一部の配信サーバからの配信対象データを受信できなかった場合に，受信できなかったブロックの配信対象データを，前記他の配信サーバから受信したエラー訂正情報を用いて復元し，受信したブロックと復元したブロックとを結合して連続するｎブロックの受信データとする
ことを特徴とする分割配信データ受信方法。
【請求項５】
請求項４に記載の分割配信データ受信方法において，
前記ｎ台の配信サーバからの配信対象データのうち，障害により一部の配信サーバからの配信対象データを受信できなかった場合，またはあらかじめ定めた時間内に一部の配信サーバからの配信対象データを受信できなかった場合に，配信対象データの配信機能を持つ他の新たな配信サーバに配信要求先を変更して，前記一部の配信サーバが配信を担当していたブロックの配信対象データを，該他の新たな配信サーバから受信する
ことを特徴とする分割配信データ受信方法。
【請求項６】
複数ブロックに分割された配信対象データを複数台の配信サーバから受信する分割配信データ受信装置であって，
ｎ台の配信サーバから重複がないように分割されて配信されたｎブロックの配信対象データをそれぞれ受信するｎ個のデータ受信手段と，
前記ｎ個の受信手段により受信したｎブロックの配信対象データを蓄積するバッファと，
前記ｎブロックの配信対象データに対するエラー訂正情報を，前記ｎ台の配信サーバと異なる配信サーバから受信する手段と，
受信したエラー訂正情報を蓄積するバッファと，
所定の時間内に配信対象データを受信したかどうかを監視するための時間監視手段と，
所定の時間内に前記ｎブロックの配信対象データを受信したときに，それらを結合して一連のｎブロック分の配信対象データを復元し，一部の配信サーバからのデータが障害により受信できない場合，またはあらかじめ定めた転送速度以下になった場合に，前記エラー訂正情報を利用して配信対象データを復元する制御を行う制御手段とを備える
ことを特徴とする分割配信データ受信装置。
【請求項７】
請求項４または請求項５記載の分割配信データ受信方法を，データ受信装置が備えるコンピュータに実行させるための分割配信データ受信プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は，ネットワーク上でデータを分割配信する方法および装置に関し，特にロバストなデータ配信を可能にしたデータ配信方法，データ配信システム，分割配信データ受信方法，分割配信データ受信装置および分割配信データ受信プログラムに関するものである。
【０００２】
【従来の技術】
ネットワーク上でデータを高速に配信しようとする場合，一般的に配信サーバを複数用意して負荷分散と配信経路の最適化を図るという手法が用いられる。さらに，複数のサーバにデータを分割して配置し，より高度な負荷分散を行う手法も用いられている（特開２００２−３２２８０など）。
【０００３】
特に，ＡＤＳＬやＣＡＴＶといった受信側帯域が送信側帯域よりも大きい回線で構成されているネットワークの場合，複数のサーバから同時に送信を行うことで確実に受信速度が向上する。
【０００４】
一方，データを確実に配信する手段としては，同一内容のデータを保持した複数の配信サーバを待機状態にしておき，配信に使用しているサーバに障害が発生した場合，他の配信サーバに切り替えるという手法が用いられている。
【０００５】
また，ＬＡＮ環境においては，固定的に設置した複数のサーバにファイルを配置し冗長構成とすることで，一部のサーバに障害が発生してもデータ送受信を可能とする方法として，ネットワークＲＡＩＤファイルシステムが考案されている。
【０００６】
【発明が解決しようとする課題】
上記のネットワーク上でデータを分割配信する方法は，基本的には関連するすべての配信サーバおよびネットワークが常に正常な状態であることを前提としており，データ配信中に障害が発生すると即座にデータ配信が失敗するという脆弱な構成となっている。
【０００７】
一般的なデータ配信においては，配信失敗が判明した場合，正常なサーバの組み合わせで再配信を行えばよいが，リアルタイム性が重要な動画や音声のストリーム配信においては，その時点で画像・音声が途切れてしまうという問題が発生する。
【０００８】
Ｐｅｅｒ　ｔｏ　Ｐｅｅｒのようなエンドユーザ同士の通信においては，サーバ，ネットワークとも十分な信頼性を期待することができないため，障害が頻繁に発生することを前提としなければならない。
【０００９】
本発明は，ネットワーク上の複数の配信サーバを使用してデータの分割配信を行うにあたって，配信サーバやネットワークが十分な信頼性を持たず，データ配信中の障害によって一部のサーバとの通信が途絶した場合においても，途切れることなく高速なデータ配信を継続することができるようにすることを目的とする。
【００１０】
【課題を解決するための手段】
本発明は，上記課題を解決するため，ネットワーク上に同一データを保持しデータを部分的に配信する手段を有する複数の配信サーバと，複数の配信サーバにデータを部分的に配信要求する手段およびそれらの部分的データを結合して元のデータを復元する機能を有するクライアントとを備えたシステムにおける配信方法であって，配信サーバがエラー訂正情報を生成する手段を有し，クライアントは配信対象データを重複のないよう分割して複数の配信サーバに部分的に配信要求を行うと同時に，配信対象データのエラー訂正情報の配信を要求し，通常はエラー訂正情報は利用せず配信されたデータを結合して配信対象データを復元するが，ネットワーク障害や配信サーバ障害で，一部のサーバからのデータが受信できない場合，もしくはあらかじめ定めた転送速度以下になった場合には，エラー訂正情報を利用して配信対象データを復元することを特徴とする。
【００１１】
本発明を用いることにより，通常は配信サーバから配信される分割されたデータのみを組み合わせることで元の配信データを得ることができる。また，一部のサーバからの配信データが途切れた場合においても，他のサーバから配信されたデータとエラー訂正情報とを組み合わせることで，欠損部分を復元し，元の配信データを得ることができる。
【００１２】
さらに，ネットワーク障害やサーバの異常負荷などで転送速度が動画などのリアルタイム配信に必要な速度を下回った場合にも，他のサーバから配信されたデータとエラー訂正情報とを組み合わせることで，不足部分を補完しリアルタイム性を維持することができる。
【００１３】
また，本発明は，前記配信方法において，エラー訂正情報としてパリティを利用することを特徴とする。パリティによるエラー訂正は，他のエラー訂正方法と比較して計算量が少ないため，配信サーバおよびクライアントに大きな負荷を掛けることなくロバストなデータ配信を行うことができる。
【００１４】
また，本発明は，前記配信方法において，ネットワーク上に配信サーバのリストを保持しているリストサーバを備え，クライアントは，ネットワーク障害や配信サーバ障害で，一部のサーバからのデータが受信できない場合，もしくはあらかじめ定めた転送速度以下になった場合に，リストサーバから別の配信サーバの情報を入手し，配信要求先を変更してデータ受信を再開することで，通常状態に復帰することを特徴とする。
【００１５】
一部のサーバやネットワークに障害が発生した場合でもデータ配信を継続することができるが，さらに他の部分にも障害が発生してエラー訂正機能の限界を超えてしまうとデータ配信の継続が不可能になる。
【００１６】
これを避けるため，クライアントは障害を検知すると同時に，リストサーバに代替サーバの情報を要求し，障害の発生したサーバとの接続を切断し，リストサーバから入手した情報に基づき配信サーバを代替サーバに変更する。この動作により，通常状態に復帰しておけば，新たな障害が発生した場合にもエラー訂正機能によって対応することが可能となる。
【００１７】
【発明の実施の形態】
図１は，本発明の実施の形態におけるネットワーク構成図である。１はデータ配信を要求するクライアント，２は配信サーバのリストを保持しているリストサーバ，３〜７は保持しているデータを配信する配信サーバＡ〜Ｅ，８はネットワークを表す。
【００１８】
データ配信を開始するに当たり，まず，クライアント１は，リストサーバ２に接続し，配信を要求するデータの情報（ファイル名，ＩＤ等）を送信する。リストサーバ２はクライアント１の要求したデータを保持している配信サーバ群の情報を返信する。
【００１９】
図２は，リストサーバ２から送られる情報の内容の一例を示しており，この情報は，各配信サーバＡ３〜配信サーバＥ７のＩＰアドレスと，そのサーバに接続している他のクライアント数（コネクション数）とのリストとなっている。
【００２０】
クライアント１は，コネクション数の少ない順に配信サーバを例えば４台選択する。選択に当たって同一負荷のサーバが複数あった場合には，ランダムに選択する。以下では，選択された配信サーバが，配信サーバＡ３，配信サーバＢ４，配信サーバＣ５，配信サーバＤ６であったとして説明する。
【００２１】
データ配信に当たっては，配信対象データを３２ＫＢのブロックに区切って考える。クライアント１は，配信サーバＡ３にｎ番目のブロックを，配信サーバＢ４にｎ＋１番目のブロックを，配信サーバＣ５にｎ＋２番目のブロックの配信を，配信サーバＤ６には，ｎ，ｎ＋１，ｎ＋２番目のブロックのパリティデータの配信を要求する。ｎ，ｎ＋１，ｎ＋２番目のブロックの配信が完了すると，同様にして，ｎ＋３，ｎ＋４，ｎ＋５番目のブロックの配信を行う。以後，配信対象データすべての配信が完了するまでこの動作を繰り返す。
【００２２】
配信サーバＤ６は，図３のようにブロックｎ，ｎ＋１，ｎ＋２の排他的論理和を計算することでパリティデータを生成する。データのサイズが９６ＫＢの倍数にならない場合には，０を補って９６ＫＢの倍数にしてから計算を行う。
【００２３】
データ配信は，クライアント１の主導で行われる。以下，クライアント１の動作の一例について詳細に説明する。図４は，クライアント１のブロック図である。１１は配信サーバやリストサーバ２への接続指示や配信サーバの選択を行う制御部，１２はタイマー，１３〜１６はサーバ接続部Ａ〜Ｄ，１７は配信されたパリティデータが書き込まれるパリティバッファ，１８〜２０は配信されたデータが書き込まれるバッファＡ〜Ｃ，２１は動画再生などを行うアプリケーション（プログラム）を表す。
【００２４】
本発明の実施の形態では，制御部１１は，リストサーバ２へ接続して図２に示すようなリストを取得するようサーバ接続部Ａ１３に指示する。制御部１１は，リストを受け取ると，コネクション数の少ない順に配信サーバを４台選択し，それぞれサーバ接続部Ａ１３〜サーバ接続部Ｄ１６に接続を指示する。同時に，アプリケーション２１からの要請，もしくはユーザからの直接指定により設定された転送速度に合わせてタイマー１２を設定する。具体的には，指定転送速度がｍＫｂｐｓであるとすれば，この例では，１ブロックのサイズが３２ＫＢで，３ブロック分のデータが同時に送られてくるので，１バイトが８ビットであることから，３２×３×８／ｍ秒＝７６８／ｍ秒に，転送速度の変動を考慮した余裕時間α秒を加えた値とする。
【００２５】
サーバ接続部Ａ１３〜サーバ接続部Ｃ１５は，前述のように各サーバに配信対象データのｎ，ｎ＋１，ｎ＋２ブロックの配信を要求し，配信されたデータは，それぞれバッファＡ１８〜バッファＣ２０に書き込まれる。サーバ接続部Ｄ１６は，配信サーバＤ６にパリティデータの配信を要求し，配信されたデータはパリティバッファ１７に書き込まれる。なお，バッファＡ１８〜バッファＣ２０は，実際には一つのバッファであるが，説明の都合上，論理的に３つに区切って表現している。サーバ接続部Ａ１３〜サーバ接続部Ｃ１５は，それぞれのブロックの受信が完了すると，制御部１１に受信完了を通知する。
【００２６】
以下に，制御部１１の動作の一例を図５のフロー図に従って説明する。制御部１１は，サーバ接続部Ａ１３〜サーバ接続部Ｃ１５からのブロックデータの受信完了の通知もしくはタイマー１２からのシグナルがあるまで待機している（ステップＳ１）。通知もしくはタイマー１２からのシグナルを検出すると，配信サーバＡ３〜Ｃ５のいずれかのサーバからの受信完了の通知かを判断し（ステップＳ２），配信サーバからの通知である場合には，配信サーバＡ３〜配信サーバＣ５の３つの配信サーバすべてからのブロック配信が完了したかを判断する（ステップＳ３）。すべてのブロック配信が完了した場合には，アプリケーション２１にバッファＡ１８〜バッファＣ２０の内容を転送する（ステップＳ８）。すべてのブロック配信が完了していない場合には，待機状態に戻る（ステップＳ１）。
【００２７】
また，ステップＳ１における待機状態において，タイマー１２からのシグナルがあった場合には，配送が指定された転送速度を下回った，もしくは障害が発生していることになる。そこで，制御部１１は，４台の配信サーバのうち３台の配信サーバからのブロック配信が完了したかどうかを判断する（ステップＳ４）。そして，４台中３台のサーバからのブロック配信が完了していた場合，復旧動作を行う。
【００２８】
この復旧動作では，配信が間に合わなかったサーバを配信サーバＡ３とすれば，制御部１１は，リストサーバ２から受け取ったリストのうち，選択されなかった配信サーバで最もコネクション数の少ないものを１台（これを配信サーバＥ７とする）選択し，配信サーバＡ３を担当していたサーバ接続部Ａ１３に接続先を配信サーバＥ７に変更するよう指示する（ステップＳ５）。
【００２９】
次に，パリティデータを受信済みかを判断し（ステップＳ６），受信済みの場合，パリティバッファ１７を使い，バッファＡ１８のデータを補完する（ステップＳ７）。すなわち，制御部１１は，パリティバッファ１７のパリティデータと，バッファＢ１９，バッファＣ２０のブロックデータとの排他的論理和を計算し，計算結果をバッファＡ１８に書き込む。そして，アプリケーション２１にバッファＡ１８〜Ｃ２０の内容を転送する（ステップＳ８）。
【００３０】
配信が間に合わなかったのがパリティの配信サーバＤ６であり，パリティが未受信である場合（ステップＳ６の判定がＮＯの場合）には，パリティバッファ１７の内容は無視して，そのままアプリケーション２１にバッファＡ１８〜Ｃ２０の内容を転送する（ステップＳ８）。上記ステップＳ４において，２台以上のサーバからの配信が間に合わなかった場合（ステップＳ４の判定がＮＯの場合），ブロックデータの復元（エラー訂正）はできないので，アプリケーション２１にエラーを通知する（ステップＳ９）。
【００３１】
以上の制御部１１が行う処理は，コンピュータとソフトウェアプログラムとによって実現することができ，そのプログラムは，コンピュータが読み取り可能な可搬媒体メモリ，半導体メモリ，ハードディスク等の適当な記録媒体に格納して，そこから読み出すことによりコンピュータに実行させることができる。
【００３２】
図６は，配信サーバＡ３のブロック図である。他の配信サーバＢ４〜Ｅ７も同様に構成される。配信サーバＡ３において，３０は配信対象データを記憶する配信対象データ記憶手段，３１はクライアント１からの配信要求をネットワークを介して受信する配信要求受信手段，３２は受信した配信要求を解析する配信要求解析手段，３３は配信対象データを複数ブロックに分割する配信対象データ分割手段，３４は分割したデータの一部をクライアント１へ送信する分割配信データ送信手段，３５は複数ブロックに分割した配信対象データに対するエラー訂正情報を生成するエラー訂正情報生成手段，３６はエラー訂正情報をクライアント１へ送信するエラー訂正情報送信手段を表す。
【００３３】
配信要求受信手段３１がネットワーク８を介してクライアント１から配信要求を受信すると，配信要求解析手段３２は配信要求を解析する。配信要求では，例えば配信対象データ名（ファイル名など），配信対象データの分割ブロックサイズ，転送速度，分割されたデータの何番目のブロックから何ブロックおきに転送するか（何台の配信サーバにより転送するか）またはエラー訂正情報を転送するかなどの情報が指定される。配信対象データの分割ブロックサイズ，転送速度，また何ブロックおきに転送するかなど，あらかじめシステム内で固定的に定まっている場合には，配信要求でのこれらの情報の指定は不要である。
【００３４】
エラー訂正情報ではなく，配信対象データの配信を要求された場合，配信対象データ分割手段３３は，配信対象データ記憶手段３０から配信対象データを読み出し，これを指定された分割ブロックサイズで分割し，分割配信データ送信手段３４は，分割されたデータの自装置が配信を担当するブロックをクライアント１へ送信する。
【００３５】
エラー訂正情報の配信を要求された場合，エラー訂正情報生成手段３５は，他のｎ台の配信サーバによって送信されるブロックに対するエラー訂正情報を，例えば図３で説明した方法によって生成し，エラー訂正情報送信手段３６は，そのエラー訂正情報をクライアント１へ送信する。
【００３６】
【発明の効果】
本発明を用いることにより，一部のサーバからの配信データが途切れたり転送速度が低下した場合においても，欠損部分を復元し，リアルタイム性を維持したままデータ配信を継続することができる。特に，エラー訂正情報としてパリティを利用することにより，サーバおよびクライアントに大きな負荷を掛けることなくロバストなデータ配信を行うことができる。
【００３７】
また，データの配信が行われている状態で動的に配信サーバを変更することができることにより，一部のサーバやネットワークに障害が発生したのち，さらに新たな障害が発生した場合にもデータ配信を継続することが可能となる。
【図面の簡単な説明】
【図１】本発明の実施の形態におけるネットワーク構成図である。
【図２】リストサーバから送られる情報の内容の一例を示す図である。
【図３】パリティ配信サーバによるパリティデータの生成を示す図である。
【図４】本発明の実施の形態におけるクライアントのブロック図である。
【図５】クライアントの制御部の動作処理フローの一例を示す図である。
【図６】本発明の実施の形態における配信サーバのブロック図である。
【符号の説明】
１　クライアント
２　リストサーバ
３　配信サーバＡ
４　配信サーバＢ
５　配信サーバＣ
６　配信サーバＤ
７　配信サーバＥ
８　ネットワーク
１１　制御部
１２　タイマー
１３　サーバ接続部Ａ
１４　サーバ接続部Ｂ
１５　サーバ接続部Ｃ
１６　サーバ接続部Ｄ
１７　パリティバッファ
１８　バッファＡ
１９　バッファＢ
２０　バッファＣ
２１　アプリケーション
３０　配信対象データ記憶手段
３１　配信要求受信手段
３２　配信要求解析手段
３３　配信対象データ分割手段
３４　分割配信データ送信手段
３５　エラー訂正情報生成手段
３６　エラー訂正情報送信手段
【図１】
2004070712.tif 000003
【図２】
2004070712.tif 000004
【図３】
2004070712.tif 000005
【図４】
2004070712.tif 000006
【図５】
2004070712.tif 000007
【図６】
2004070712.tif 000008