(57)【要約】【課題】複数のノードの間で大容量のデータを構成するデータを相互に転送すると共に、当該転送ルートを動的に変更することにより、大容量のデータを効率的に配信する。【解決手段】データ配信方法は、データを複数の分割データに分割して配信する。データ配信方法において、ルートノード装置１が配信情報を末端ノード装置３に送信する。末端ノード装置３が、配信情報に基づいて最初にルートノード装置１に配信を要求する分割データを決定して、その配信をルートノード装置１に要求する。末端ノード装置３が、配信情報に基づいて、他の分割データについて他の末端ノード装置３のいずれに配信を要求するかを決定して、その配信を他の末端ノード装置３に要求する。【選択図】図１
2007272540.tif 000002
【特許請求の範囲】
【請求項１】
データを配信する元となるルートノード装置と、前記データを配信される複数の末端ノード装置と、これらの間を接続するネットワークとからなり、前記データを複数の分割データに分割して配信するデータ配信装置におけるデータ配信方法であって、
前記ルートノード装置が、少なくとも、その末端ノード装置に割り当てられたノードＩＤと、前記複数の末端ノード装置の総数と、前記データを分割した分割データの総数とを含む配信情報を、前記複数の末端ノード装置の各々に送信し、
前記複数の末端ノード装置が、各々、前記配信情報に基づいてその末端ノード装置が最初に前記ルートノード装置に配信を要求する分割データを決定して、その分割データの配信を前記ルートノード装置に要求し、
前記ルートノード装置が、前記分割データの配信の要求に応じて、その分割データを前記複数の末端ノード装置の各々に配信し、
前記複数の末端ノード装置が、各々、前記配信情報に基づいて前記ルートノード装置から配信された分割データ以外の分割データについて他の末端ノード装置のいずれに配信を要求するかを決定して、その分割データの配信を前記決定した他の末端ノード装置に要求する
ことを特徴とするデータ配信方法。
【請求項２】
前記ルートノード装置が、前記データの配信を行う場合に、これに先立って、前記配信情報を前記複数の末端ノード装置の各々に送信する
ことを特徴とする請求項１記載のデータ配信方法。
【請求項３】
前記複数の末端ノード装置が、各々、前記他の末端ノード装置毎に分割データが配信される配信速度を計測し、前記配信速度に基づいて、前記決定した他の末端ノード装置を前記配信速度の速い末端ノード装置に変更し、前記変更した末端ノード装置にその分割データの配信を要求する
ことを特徴とする請求項１記載のデータ配信方法。
【請求項４】
前記ルートノード装置が、その末端ノード装置が前記データの配信の要求を開始する時間である配信時間を、前記配信情報と共に前記複数の末端ノード装置の各々に送信し、
前記複数の末端ノード装置が、各々、前記配信時間の経過の後に、前記ルートノード装置に対する前記データの配信の要求を開始する
ことを特徴とする請求項１記載のデータ配信方法。
【請求項５】
前記ルートノード装置が、前記データを分割した分割データの各々についてそのハッシュ値を算出し、前記算出したハッシュ値を、前記配信情報の一部として前記複数の末端ノード装置の各々に送信し、
前記複数の末端ノード装置が、各々、前記ルートノード装置から受信した分割データについてそのハッシュ値を算出し、当該ハッシュ値と前記配信情報に含まれる前記受信した分割データについてのハッシュ値とを比較し、両者が一致した場合、前記受信した分割データを正しいデータとして管理する
ことを特徴とする請求項１記載のデータ配信方法。
【請求項６】
データを配信する元となるルートノード装置と、前記データを配信される複数の末端ノード装置と、これらの間を接続するネットワークとからなり、前記データを複数の分割データに分割して配信するデータ配信装置であって、
前記ルートノード装置が、
少なくとも、その末端ノード装置に割り当てられたノードＩＤと、前記複数の末端ノード装置の総数と、前記データを分割した分割データの総数とを含む配信情報を、前記複数の末端ノード装置の各々に送信する手段と、
前記複数の末端ノード装置の各々からの分割データの配信の要求に応じて、その分割データを前記複数の末端ノード装置の各々に配信する手段とを備え、
前記複数の末端ノード装置が、各々、
前記配信情報に基づいてその末端ノード装置が最初に前記ルートノード装置に配信を要求する分割データを決定して、その分割データの配信を前記ルートノード装置に要求する手段を備える
ことを特徴とするデータ配信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ配信方法及びデータ配信システムに関し、特に、複数のノードが接続されるネットワークシステムにおいて複数のノードの協調的な動作により大容量のデータを効率良く配信するデータ配信方法及びデータ配信システムに関する。
【背景技術】
【０００２】
コンピュータで使用される基本ソフトウェア（オペレーティングシステム：ＯＳ) 及びそのアプリケーションソフトウェアは、機能の向上、不具合の修正又はセキュリティ対策等の観点から、定期的に更新され、ユーザに配信される。即ち、これらのソフトウェアは、コンピュータに簡単にインストールし設定できるように、パッケージ化され、ネットワーク上の配信サーバに公開され、ユーザによりダウンロードされる。このようなパッケージ化されたソフトウェアとしては、例えばＣＤ−ＲＯＭやＤＶＤ用のイメージファイルがある。このため、そのファイル容量は極めて大きい。
【０００３】
また、様々な業務において、動画映像を使ったマニュアル、説明書、コマーシャル映像（いわゆるコンテンツ）等が使用されることが多くなっている。これらの動画映像も、定期的に新しいものが作成され配信される。このような動画映像としては、例えば操作手順を表現するマニュアル動画映像、細かな部分までを表現している動画、高精細画像を使用した説明書、訴求力を必要とするコマーシャル等がある。このファイル容量は極めて大きい。
【０００４】
このように配信サーバから大容量のファイルを定期的に多くの拠点（ノード即ちネットワークコンピュータ）に配信する需要は多く、それを効率的に行う方法が望まれている。例えば、ユーザのプロファイルを用いて、ある情報を得たユーザが、プロファイルの類似するユーザに対して、当該情報を配信することが知られている（特許文献１参照）。また、例えば、コンテンツ配信サーバからコンテンツを取得して保存しているクライアントが、コンテンツに付加されている送り先指定情報に従って、当該コンテンツを他のクライアントに配信することが知られている（特許文献２参照）。
【特許文献１】特開２００２−２９８００７号公報
【特許文献２】特開２００３−３４５６９２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
前述のように、配信サーバから大容量ファイルを多数のノードに配信する場合、以下のような問題がある。
【０００６】
即ち、配信サーバは、同時に接続可能なノードの数に上限を設ける。従って、ダウンロード要求が前記上限を超えた後にダウンロード要求を行ったノードは、その時点でダウンロードしているノードのいずれかが当該ダウンロードを終了するまで、自己のダウンロードの実行を待たされる。従って、ユーザの数の増加に比例して、ダウンロード設備とネットワーク帯域の増強が必要となる。
【０００７】
また、全てのネットワークの実行速度が上り（送信方向）及び下り（受信方向）の双方向共に例えば１０Ｍｂｐｓである場合、配信サーバの前記上限（同時接続数）が「３」であるとすると、１個のノードあたりの下りの帯域は、３．３（＝１０／３）Ｍｂｐｓとなる。これは、１０Ｍｂｐｓの帯域で接続されているノードからみると、その一部しか用いていないことになるので、効率的ではない。これに加えて、ノードの上りの帯域が、大容量ファイルの配信のためには活用されていない。
【０００８】
一方、前述のように、ユーザ間で情報を転送する場合やクライアント間でコンテンツを配信する場合、以下のような問題がある。即ち、ユーザ間で情報を転送する場合、ユーザのプロファイルを用いなければならず、また、クライアント間でコンテンツを配信する場合、コンテンツに付加されている送り先指定情報を用いなければならない。これらのプロファイルや送り先指定情報は固定的なものであり、動的に変更することはできない。このため、実際にどのノードにどの情報又はコンテンツが配信されているかに応じて、又は、ネットワークの状況に応じて、情報又はコンテンツの配信のルートを変更することができない。
【０００９】
本発明は、複数のノードの間で大容量のデータを構成するデータを相互に転送すると共に、当該転送ルートを動的に変更することにより、大容量のデータを効率的に配信するデータ配信方法を提供することを目的とする。
【００１０】
また、本発明は、複数のノードの間で大容量のデータを構成するデータを相互に転送すると共に、当該転送ルートを動的に変更することにより、大容量のデータを効率的に配信するデータ配信システムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明のデータ配信方法は、データを配信する元となるルートノード装置と、前記データを配信される複数の末端ノード装置と、これらの間を接続するネットワークとからなり、前記データを複数の分割データに分割して配信するデータ配信装置におけるデータ配信方法である。本発明のデータ配信方法において、前記ルートノード装置が、少なくとも、その末端ノード装置に割り当てられたノードＩＤと、前記複数の末端ノード装置の総数と、前記データを分割した分割データの総数とを含む配信情報を、前記複数の末端ノード装置の各々に送信する。前記複数の末端ノード装置が、各々、前記配信情報に基づいてその末端ノード装置が最初に前記ルートノード装置に配信を要求する分割データを決定して、その分割データの配信を前記ルートノード装置に要求する。前記ルートノード装置が、前記分割データの配信の要求に応じて、その分割データを前記複数の末端ノード装置の各々に配信する。前記複数の末端ノード装置が、各々、前記配信情報に基づいて、前記ルートノード装置から配信された分割データ以外の分割データについて他の末端ノード装置のいずれに配信を要求するかを決定して、その分割データの配信を前記決定した他の末端ノード装置に要求する。
【００１２】
また、好ましくは、本発明のデータ配信方法の一実施態様において、前記ルートノード装置が、前記データの配信を行う場合に、これに先立って、前記配信情報を前記複数の末端ノード装置の各々に送信する。
【００１３】
また、好ましくは、本発明のデータ配信方法の一実施態様において、前記複数の末端ノード装置が、各々、前記他の末端ノード装置毎に分割データが配信される配信速度を計測し、前記配信速度に基づいて、前記決定した他の末端ノード装置を前記配信速度の速い末端ノード装置に変更し、前記変更した末端ノード装置にその分割データの配信を要求する。
【００１４】
また、好ましくは、本発明のデータ配信方法の一実施態様において、前記ルートノード装置が、その末端ノード装置が前記データの配信の要求を開始する時間である配信時間を、前記配信情報と共に前記複数の末端ノード装置の各々に送信し、前記複数の末端ノード装置が、各々、前記配信時間の経過の後に、前記ルートノード装置に対する前記データの配信の要求を開始する。
【００１５】
また、好ましくは、本発明のデータ配信方法の一実施態様において、前記ルートノード装置が、前記データを分割した分割データの各々についてそのハッシュ値を算出し、前記算出したハッシュ値を、前記配信情報の一部として前記複数の末端ノード装置の各々に送信し、前記複数の末端ノード装置が、各々、前記ルートノード装置から受信した分割データについてそのハッシュ値を算出し、当該ハッシュ値と前記配信情報に含まれる前記受信した分割データについてのハッシュ値とを比較し、両者が一致した場合、前記受信した分割データを正しいデータとして管理する。
【００１６】
本発明のデータ配信システムは、データを配信する元となるルートノード装置と、前記データを配信される複数の末端ノード装置と、これらの間を接続するネットワークとからなり、前記データを複数の分割データに分割して配信する。データ配信システムにおいて、前記ルートノード装置が、少なくとも、その末端ノード装置に割り当てられたノードＩＤと、前記複数の末端ノード装置の総数と、前記データを分割した分割データの総数とを含む配信情報を、前記複数の末端ノード装置の各々に送信する手段と、前記複数の末端ノード装置の各々からの分割データの配信の要求に応じて、その分割データを前記複数の末端ノード装置の各々に配信する手段とを備える。また、前記複数の末端ノード装置が、各々、前記配信情報に基づいてその末端ノード装置が最初に前記ルートノード装置に配信を要求する分割データを決定して、その分割データの配信を前記ルートノード装置に要求する手段を備える。
【発明の効果】
【００１７】
本発明のデータ配信方法及びデータ配信システムによれば、末端ノード装置が、配信情報に基づいて、最初にルートノード装置に配信を要求する分割データの配信をルートノード装置に要求し、更に、配信情報に基づいて、ルートノード装置から配信された分割データ以外の分割データについて、その配信を他の末端ノード装置に要求する。
【００１８】
これにより、ダウンロード要求がルートノード装置に集中せず複数の末端ノード装置に分散され、また、複数の末端ノード装置の各々に割り当てられる上り及び下りの帯域のほぼ全体を使用することができるので、大容量ファイルの配信のために有効に活用することができる。従って、末端ノード装置に対して他の末端ノード装置から分割データを効率的に配信することができる。一方、ユーザのプロファイルやコンテンツに付加されている送り先指定情報を用いる必要が無い。従って、どの末端ノード装置にどの分割データが配信されているかに応じて、配信のルートを変更することができ、また、配信情報の要素である複数の末端ノード装置の総数と分割データの総数の変化に応じて、分割データの配信のルートを変更することができる。従って、データ配信システムの規模と配信すべきデータの大きさ（容量）の双方に応じて、システム管理者の介入無しで、最適な配信のルートを選択することができる。以上に加えて、ルートノード装置は、同時に接続可能なノードの数に上限を設ける必要が無い。従って、他の末端ノード装置より遅くダウンロード要求を行った末端ノード装置であっても、他の末端ノード装置のダウンロードを終了するまで、自己のダウンロードの実行を待つ必要が無い。
【００１９】
また、本発明の一実施態様によれば、データの配信を行う場合に配信情報が末端ノード装置に送信される。これにより、末端ノード装置はルートノード装置が配信を希望する場合にその配信情報を得て、これに基づいてデータの配信のルートを動的に変更することができ、結果として、最適な配信のルートを選択することができる。
【００２０】
また、本発明の一実施態様によれば、分割データが配信される配信速度に基づいて、配信速度の速い末端ノード装置に分割データの配信を要求する。これにより、末端ノード装置は、ネットワークの状況に応じてデータの配信のルートを動的に変更することができ、結果として、最適な配信のルートを選択することができる。
【００２１】
また、本発明の一実施態様によれば、配信時間が配信情報と共に送信され、末端ノード装置が配信時間の経過の後にルートノード装置にデータの配信の要求を開始する。これにより、ダウンロード要求をルートノード装置と末端ノード装置とに分散した上で、更に、ルートノード装置に対するダウンロード要求を時間的に分散することができる。
【００２２】
また、本発明の一実施態様によれば、末端ノード装置が、受信した分割データのハッシュ値と予め受信したハッシュ値とを比較することにより、受信した分割データの正誤を判定する。これにより、大容量データを分割データに分割して配信することを利用して、データの配信におけるセキュリティを向上することができる。
【発明を実施するための最良の形態】
【００２３】
図１は本発明のデータ配信システムの構成図であり、図２は本発明のルートノード装置の説明図である。
【００２４】
本発明のデータ配信システムは、ルートノード装置１と、複数の末端ノード装置３と、これらの間を接続するネットワーク２とからなる。ネットワーク２は、例えばインターネットからなる。即ち、ネットワーク２は、多くのＬＡＮ（Local Area Network）及びＷＡＮ（Wide Area Network ）等を相互に接続することにより構築され、その物理的なトポロジーを明確に知ることはできないネットワークである。
【００２５】
ルートノード装置１は、データである大容量ファイル１６を配信する、即ち送信する（即ち、配信元となる）コンピュータ又は配信サーバであり、末端ノード管理手段１１、ファイル配信手段１２、データ管理手段１３からなる。末端ノード装置３は、各々、大容量ファイル１６を配信される、即ち受信する（即ち、配信先となる）コンピュータであり、状況報告手段３１、ファイル配信要求手段３２、ファイル配信手段３３で構成される。複数の末端ノード装置３を相互に区別する場合には、Ａ、Ｂ等の符号を付加して区別する。末端ノード装置３の状況報告手段３１等についても同様である。
【００２６】
本発明のデータ配信システムは、データを複数の配信単位データ（分割データ）に分割して配信する。具体的には、１個の大容量ファイル１６を小さな容量の複数のファイル（以下、分割ファイルと言う）１６１に分割した上で、配信を行う。従って、大容量ファイル１６は、配信されるべき１個のデータ（ソフトウェア）であり、分割ファイル１６１は、配信（ダウンロード又は転送）の単位である。分割ファイル１６１の大きさは予め定められる。大容量ファイル１６の配信の途中においては、複数の分割ファイル１６１がネットワーク２（の複数の末端ノード装置３）上に、分散されて存在する。大容量ファイル１６は、例えばＯＳ等のプログラム、映像等のコンテンツ等からなるが、複数の転送の単位に分割することができるものであれば良く、特に制限されない。
【００２７】
本発明のデータ配信システムにおいて、ルートノード装置１が、末端ノード装置３に対して、大容量ファイル１６を構成する分割ファイル１６１を配信する。これと共に、分割ファイル１６１を既に受信した末端ノード装置３が、他の末端ノード装置３に対して、当該受信した分割ファイル１６１を配信する。これにより、多くの末端ノード装置３が、相互に協調しながら、最終的には、全ての末端ノード装置３に全ての分割ファイル１６１即ち大容量ファイル１６を配信する。
【００２８】
大容量ファイル１６の配信を希望する場合、末端ノード装置３において、状況報告手段３１又はファイル配信要求手段３２は、予めルートノード装置１の末端ノード管理手段１１にアクセスして、受信したい旨と自己のアクセス情報とを通知する。この例では、アクセス情報は、例えばそのＩＰアドレス及びポート番号からなる。末端ノード装置３は、各々、ルートノード装置１へのアクセス情報を予め備える。
【００２９】
ルートノード装置１において、末端ノード管理手段１１は、図２に示すように、大容量ファイル１６の配信に先立って、複数の末端ノード装置３からそのアクセス情報を受信して、これに基づいて、ノードＩＤテーブル１４を作成して、末端ノード装置３を管理する。ノードＩＤテーブル１４にそのアクセス情報が登録された末端ノード装置３に対して（のみ）、大容量ファイル１６の配信が行われる。図３（Ａ）は、本発明のノードＩＤテーブル１４の一例を示す。ノードＩＤテーブル１４は、ノードＩＤ毎に、ＩＰアドレス及びポート番号（即ち、当該アクセス情報）を格納する。ノードＩＤは、当該データ配信システムにおいてユニークなものとされ、末端ノード管理手段１１により末端ノード装置３毎に付与される。即ち、末端ノード管理手段１１が、アクセス情報を受信した順に、当該末端ノード装置３に対してノードＩＤを発行する。
【００３０】
末端ノード管理手段１１は、作成したノードＩＤテーブル１４を、図３（Ｂ）に示すように、所定の時間間隔で定期的に又は逐次、ＩＰアドレス（の数字の大きさ）の昇順にソートする。ＩＰアドレスが同じ場合、ポート番号（の数字の大きさ）の昇順にソートされる。このソート処理において、ノードＩＤは、再度当該昇順に付与し直される。これにより、ノードＩＤテーブル１４は、その利用時（配信時）においては、ＩＰアドレス及びポート番号によりソートされている。
【００３１】
この例では、末端ノード管理手段１１は、全ての末端ノード装置３からアクセス情報を受信してノードＩＤテーブル１４の最終的なソートが終了した場合、末端ノード装置３（状況報告手段３１又はファイル配信要求手段３２）の各々に対して、最終的に割り当てたノードＩＤを通知する。即ち、末端ノード管理手段１１は、ノードＩＤテーブル１４を参照して、末端ノード装置３のＩＰアドレスを求め、更に、これに対応するノードＩＤを求め、当該ＩＰアドレスに対して当該ノードＩＤを通知する。
【００３２】
例えば、図４（Ｂ）に示すように、最終的なノードＩＤテーブル１４が得られたとする。この場合、末端ノード装置３が全部で１０００ノード有る。末端ノード装置３のＩＰアドレスが「10.8.2.5」である場合、ノードＩＤは「00125 」である。即ち、ＩＰアドレス「10.8.2.5」を持つ末端ノード装置３は、大容量ファイル１６の配信についてノードＩＤ「00125 」を有する。このノードＩＤは、当該大容量ファイル１６の配信についてのみ有効である。
【００３３】
ルートノード装置１において、ユーザの指示入力に従って、配信を行う大容量ファイル１６が予めデータ管理手段１３に登録される。データ管理手段１３は、図２に示すように、登録された大容量ファイル１６を、その配信に先立って予め複数の分割ファイル（サンプルとも言う）１６１に分割する。分割ファイル１６１のサイズは、例えば予め定められたデータ容量とされる。データ管理手段１３は、分割した各々の分割ファイル１６１に対して、ファイル名を付加する。ファイル名は、少なくとも分割ファイル番号を含み、当該データ配信システムにおいてユニークなものとされる。分割ファイル番号は、元の大容量ファイル１６における先頭の分割ファイル１６１の番号を「１」として、以下分割ファイル１６１の並び順に連続した番号とされる。なお、大容量ファイル１６の分割は配信前のいずれの時点において行っても良い。
【００３４】
データ管理手段１３は、図２に示すように、大容量ファイル１６（即ち、全ての分割ファイル１６１）についてのファイル名テーブル１７を生成する。このために、データ管理手段１３は、分割ファイル１６１の各々について、そのハッシュ（Hash）値を求める。図４（Ａ）は、本発明のファイル名テーブル１７の一例を示す。ファイル名テーブル１７は、ファイル名毎に、そのハッシュ値を格納する。大容量ファイル１６とこれに対応するファイル名テーブル１７とにより、登録データ１５が構成される。
【００３５】
図４（Ａ）において、例えば、大容量ファイル１６が、ファイル名「sample.dat」を持ち、１ギガバイトの容量を持つとする。データ管理手段１３は、これを１０００個（ｎ＝１０００）の１メガバイト毎の分割ファイル１６１に分割し、各々の分割ファイル１６１についてのハッシュ値を求め、ファイル名テーブル１７を生成する。分割ファイル１６１のファイル名は、例えば「サンプル＃１」等とされる。末端ノード装置３は、各々、大容量ファイル１６のファイル名「sample.dat」とファイル数ｎの値とを予め備える。
【００３６】
データ管理手段１３（又はファイル配信手段１２、以下同じ）は、ノードＩＤテーブル１４とファイル名テーブル１７とに基づいて、末端ノード装置３毎に対応するリスト１８を生成する。この生成処理は、例えば全ての末端ノード装置３についてのノードＩＤテーブル１４の作成を終了した時点で実行される。リスト１８は、少なくとも、その末端ノード装置３に割り当てられたノードＩＤと、複数の末端ノード装置３の総数と、大容量ファイル１６を分割した分割ファイル１６１の総数とを含む。ルートノード装置１はリスト１８を複数の末端ノード装置３の各々に送信する。
【００３７】
図５は、本発明のリスト１８の一例を示す。リスト１８は、ノード情報を格納するノード情報部分１８１、ファイル名テーブル１７に対応するファイル名テーブル部分１８２、ノードＩＤテーブル１４に対応するノードＩＤテーブル部分１８３からなる。データ管理手段１３は、ノードＩＤテーブル１４を参照して最大のノードＩＤ番号「01000 」を抽出し、これと当該末端ノード装置３のノードＩＤ「00125 」とに基づいて、ノード情報部分１８１を生成する。また、データ管理手段１３は、ファイル名テーブル１７を取得して、これに基づいて、ファイル名テーブル部分１８２を生成する。また、データ管理手段１３は、ノードＩＤテーブル１４を参照して、隣接する複数の末端ノード装置３のアクセス情報（ノードＩＤ、ＩＰアドレス、ポート番号）を取得し、ノードＩＤテーブル部分１８３を生成する。即ち、その「ノードＩＤ」の「次ノードＩＤ」「次々ノードＩＤ」等の「ＩＰアドレス」等を用いて、ノードＩＤテーブル部分１８３を生成する。ノードＩＤテーブル部分１８３は、ノードＩＤテーブル１４からなるようにしても良い。
【００３８】
データ管理手段１３は、生成したリスト１８を末端ノード装置３に対して、ファイル要求への応答として返送する。この時、この例においては、データ管理手段１３は、リスト１８と共に、配信時間を通知する。配信時間は、末端ノード装置３が分割ファイル１６１の取得動作を、リスト１８を取得（受信）してからどれだけ時間が経過してから開始するかを定める時間である。配信時間は、例えばリスト１８を受信してからの相対時間として定められるが、絶対時間として定めるようにしても良い。
【００３９】
末端ノード装置３において、ファイル配信要求手段３２は、ルートノード装置１からのリスト１８を受信して、これに基づいて、自己がルートノード装置１から最初に取得すべき分割ファイル１６１がいずれであるかを判断する。即ち、ルートノード装置１から最初に取得すべき分割ファイル１６１のファイル番号を算出する。取得すべき分割ファイル１６１の数（取得数）は１又は複数である。この算出処理のために、ファイル配信要求手段３２は、リスト１８におけるその末端ノード装置３に割り当てられた（自己の）ノードＩＤ（以下、自ノードＩＤ）と、分割ファイル１６１の総数（以下、ファイル数）と、末端ノード装置３の総数（以下、ノード数）とを用いる。この算出結果に基づいて、複数の末端ノード装置３が、各々、当該分割ファイル１６１の配信を、ルートノード装置１に要求する。
【００４０】
第１に、ファイル配信要求手段３２は、ノード数とファイル数とが等しい場合、自ノードＩＤと等しい分割ファイル番号をファイル名に含む分割ファイル１６１を、最初に取得すべき分割ファイル１６１とする。具体的には、図１２（Ｂ）に示すように、末端ノード装置３は、図５（Ａ）に示すリスト１８において、最大ノードＩＤのノード番号「01000 」と、ファイル名テーブル部分１８２からファイル名「sample.xxxxx」の「xxxxx 」の最大値「01000 」とを得て、両者を比較する。この比較の結果、両者が等しい場合、リスト１８における自ノードＩＤと同じ分割ファイル番号を含むファイル名「sample.00125」の分割ファイル１６１を、配信依頼の対象とする。なお、図５（Ａ）に示すリスト１８は、ノード数とファイル数とが等しい場合のリスト１８の一例を示す。
【００４１】
第２に、ファイル配信要求手段３２は、前記比較の結果、ノード数がファイル数より大きい場合、（自ノードＩＤ）÷（（ノード数）÷（ファイル数））により定まる分割ファイル番号をファイル名に含む分割ファイル１６１を、最初に取得すべき分割ファイル１６１とする。具体的には、図１２（Ａ）に示すように、末端ノード装置３は、（自ノードＩＤ）÷（（ノード数）÷（分割ファイル数））の値の小数点以下を繰り上げた自然数を求め、これと同じ分割ファイル番号を含むファイル名を求める。例えば、リスト１８（図５（Ａ）とは異なる）において、最大ノードＩＤのノード番号が「01000 」、ファイル名「sample.xxxxx」の「xxxxx 」の最大値が「00250 」、自ノードＩＤの分割ファイル番号が「00125 」であるとすると、１２５／（１０００／２５０）＝３２から、ファイル名「sample.00032」の分割ファイル１６１を、配信依頼の対象とする。
【００４２】
第３に、ファイル配信要求手段３２は、前記比較の結果、ノード数がファイル数より小さい場合、最初に、（ファイル数）÷（ノード数）により取得する（すべき）分割ファイル１６１の数（取得数）を求め、次に、（ファイル数）÷（取得数）によりオフセットを求め、更に、これらに基づいて定まる分割ファイル番号をファイル名に含む分割ファイル１６１を、最初に取得すべき分割ファイル１６１とする。
【００４３】
具体的には、図１２（Ｃ）に示すように、自ノードＩＤから（ファイル数）÷（ノード数）の計算結果値の小数点以下を繰り上げた自然数を求め、これと同じ数だけ、それらの番号が付いたファイル名を求める。例えば、前述のように、最大ノードＩＤのノード番号が「00250 」、ファイル名「sample.xxxxx」の「xxxxx 」の最大値が「01000 」、自ノードＩＤの分割ファイル番号が「00125 」であるとすると、取得数は１０００／２５０＝４となり、オフセットは１０００／４＝２５０となる。従って、自ノードＩＤと同じ分割ファイル番号を初期値（基準）として、取得数の回数だけ、オフセットの数のインクリメントを繰り返す。即ち、ファイル名「sample.00125」「sample.00375」「sample.00625」「sample.00875」の分割ファイル１６１を、配信依頼の対象とする。ファイル数を超えた場合は、最初のsample.00001に折り返して取得数の分だけの分割ファイル１６１を配信依頼の対象とする。
【００４４】
配信依頼を受信したルートノード装置１のファイル配信手段１２は、例えば、ファイル名「sample.00125」の分割ファイル１６１（以下、これを分割ファイルsample.00125と表す、他の分割ファイル１６１も同じ）を末端ノード装置３に配信する。分割ファイルsample.00125を受信した末端ノード装置３は、そのファイルのハッシュ値を求め、リスト１８のファイル名テーブル部分１８２からファイル名「sample.00125」のハッシュ値を取得して、両者を比較する。
【００４５】
この比較の結果、両者が同じであれば、末端ノード装置３は自分のデータ管理手段（図示せず）にそれを通知し、分割ファイルsample.00125を正しいデータとして保持し、他の末端ノード装置３に対しては既に当該分割ファイル１６１を所持しているとして管理する。なお、このデータ管理手段はルートノード装置１のデータ管理手段１３と同様の機能を備える。即ち、末端ノード装置３は、受信した分割ファイル１６１の各々に基づいて、ルートノード装置１と同様のファイル名テーブル（図示せず）を作成し、これにより（正しく）受信した分割ファイル１６１を管理する。
【００４６】
ルートノード装置１及び末端ノード装置３は、共に、ルートノード装置１から末端ノード装置３への応答の通信ルート自体又は通信データを暗号化し、その通信の機密性を保持する。具体的には、この例においては、ハッシュ値の比較によりデータの正確性を保つために、ルートノード装置１からのリスト１８の送信を、例えばＳＳＬ等により暗号化する。これにより、この通信の機密性を保持することができる。
【００４７】
このように片側の機密性を保てる場合、分割ファイル１６１の送受信において、ルートノード装置１と末端ノード装置３ともに、ＳＳＬ等による暗号化を行わない。即ち、リスト１８の送受信を暗号化した通信により行い、分割ファイル１６１の送受信を暗号化しない（暗号化を省略した）通信により行う。この暗号化の省略により、暗号化処理のためにコストが高くなることを回避することができる。なお、この場合でも、ファイルの受信側において、ルートノード装置１と末端ノード装置３ともに、ＳＳＬ等暗号化を行うようにしても良い。
【００４８】
以上の処理を、複数の末端ノード装置３の各々が行うことにより、大容量ファイル１６（分割ファイル１６１）の配信の途中においては、ルートノード装置１に存在した全ての「分割ファイル１６１」が、複数の末端ノード装置３に分散して存在することになる。この状態の一例を、図６に示す。
【００４９】
図６は、本発明のデータ配信処理の説明図である。図６の例は、図５（Ａ）に示すリスト１８に対応する。即ち、図６は、ノード数とファイル数とが等しい場合における分割ファイル１６１の分散の一例を示し、具体的には、この場合において、末端ノード装置３がルートノード装置１に最初の分割データ１６１の配信を要求し、これが配信された状態を示す。
【００５０】
図６において、末端ノード装置３Ａには、ファイル名「サンプル＃ｉ」の分割ファイル１６１が分散され、保持される。ここで、末端ノード装置３ＡのノードＩＤは「00125 」であり、ファイル名「サンプル＃ｉ」は「sample.00125」である。同様に、末端ノード装置３Ｂ、３Ｃ及び３ＤのノードＩＤは「00126 」、「00127 」及び「00128 」であり、各々に、分割ファイル「sample.00126」、「sample.00127」及び「sample.00128」が分散保持される。
【００５１】
なお、この例においては、前述のように、リスト１８と共に配信時間が送信される。従って、全ての末端ノード装置３が同時にルートノード装置１に対して分割ファイル１６１の配信を要求することはない。例えば、１０００個の末端ノード装置３が存在する場合、５０個づつの末端ノード装置３が、時間的にずらして設定された配信時間に従って、ルートノード装置１への配信の要求を行う。これにより、ルートノード装置１のネットワーク２の帯域が少ない場合、又は、ルートノード装置１が同時に配信できる末端ノード装置３の数が限られている場合であっても、ルートノード装置１に配信の要求が集中することを防止することができる。
【００５２】
この例のデータ配信システムにおいては、ＩＰアドレスの連続性に着目して、これを利用する。即ち、ＩＰアドレスは、それを管理する団体により、まとまって１つの組織に割り当てられることが多い。このため、上位ビットが同じであるＩＰアドレスは、論理的なネットワークトポロジーが近いことが多い。換言すれば、自己のＩＰアドレスの次のＩＰアドレスを有する他の末端ノード装置３は、その末端ノード装置３の近傍（例えば、同一組織内）に存在し、かつ、他の分割ファイル１６１（連続する分割ファイル１６１）を保持している可能性が大きい。そこで、末端ノード装置３は、図７に示すように、ルートノード装置１ではなく、他の末端ノード装置３から、他の分割ファイル１６１を配信されるようにする。図７は、本発明のデータ配信処理の説明図であり、図６に対応する。
【００５３】
図７において、末端ノード装置３は、リスト１８にある「次ノード」「次々ノード」等の複数のアクセス情報（ＩＰアドレス等）を使用して、他の分割ファイル１６１を順次取得する。例えば、ルートノード装置１から自ノードＩＤ「00125 」と同じ番号がついた分割ファイルsample.00125を受信した末端ノード装置３（３Ａ）は、リスト１８からノードＩＤが「00126 」（次ノードＩＤ）である末端ノード装置３（３Ｂ）のＩＰアドレスを得る。これは自ノードのＩＰアドレスに番号が隣接するＩＰアドレスである。これにより、末端ノード装置３Ａは、末端ノード装置３Ｂに対して、分割ファイルsample.00126の配信を要求する。この時点で、ノードＩＤが「00126 」の末端ノード装置３Ｂは、既に分割ファイルsample.00126を取得しているので、これを末端ノード装置３Ａに配信する。
【００５４】
ノードＩＤが「00125 」の末端ノード装置３Ａは、分割ファイルsample.00126を受信しながら、その平均ダウンロード時間を計測する。この後、末端ノード装置３Ａは、前述のように、ハッシュ値によるチェック処理を行い、自己のデータ管理手段（図示せず）に分割ファイルsample.00126を登録し、これを「取得済み」であること、その平均ダウンロード時間を登録し、分割ファイルsample.00126を管理する。
【００５５】
次に、以上と同様にして、ノードＩＤが「00125 」の末端ノード装置３Ａは、リスト１８から「次々ノードＩＤ」即ちノードＩＤが「00127 」の末端ノード装置３ＣのＩＰアドレスを得て、これに対して、分割ファイルsample.00126の次の分割ファイルsample.00127の配信を要求する。この時、ノードＩＤが「00127 」の末端ノード装置３Ｃは、既に分割ファイルsample.00127を取得している。
【００５６】
従って、ノードＩＤが「00125 」の末端ノード装置３Ａは、分割ファイルsample.00127を受信しながら、その平均ダウンロード時間を計測する。この後、末端ノード装置３Ａは、前述のように、ハッシュ値によるチェック処理を行い、自己のデータ管理手段（図示せず）に分割ファイルsample.00127を登録し、これを「取得済み」であること、その平均ダウンロード時間を登録し、分割ファイルsample.00127を管理する。
【００５７】
末端ノード装置３は、予め指定された任意の回数（指定回数）だけ、複数の分割ファイル１６１を順次取得する（配信される）。指定回数は、経験的に定めることができ、例えばファイル数の約１／１０の値とされる。末端ノード装置３は、各々の配信における平均ダウンロード時間を計測し、管理する。例えば、図５（Ｂ）に示すように、リスト１８において、ダウンロード時間部分１８４を付加する（他の部分１８２及び１８３はその図示を省略する）。
【００５８】
これにより、末端ノード装置３は、リスト１８に基づいて、他のいずれの末端ノード装置３が分割ファイル１６１を取得するために良好なネットワーク２の回線状態で接続されているかを判断する。また、末端ノード装置３は、同一の末端ノード装置３から他の分割ファイル１６１の配信を受ける場合、以前の平均ダウンロード時間を参照して、平均ダウンロード時間の変化が事前に設定されたある条件に該当する際、又は、平均ダウンロード時間にそれ程の変化がなくても意図的に、配信の数回毎に、配信の要求先を他の末端ノード装置３に変更する。これにより、特定の末端ノード装置３に配信の要求が集中することを防止することができる。
【００５９】
末端ノード装置３（３Ｂ）から分割ファイル１６１を配信された他の末端ノード装置３（３Ａ）は、末端ノード装置３Ｂに対して、その完了通知として当該平均ダウンロード時間（又は、これに基づく平均ダウンロード速度）を通知する。この平均ダウンロード時間を受信した末端ノード装置３Ｂは、前述のように、分割ファイル１６１の平均ダウンロード時間を管理して、「次ノード」「次々ノード」等の他の末端ノード装置３のそれと比べて、前述のようにある条件に合致（該当）した場合（例えば、所定の速度よりも遅い場合）等において、他の分割ファイル１６１の取得を、末端ノード装置３ではなく、ルートノード装置１から行う。
【００６０】
更に、ノードＩＤ「00125 」を持つ末端ノード装置３Ａは、例えば、ノードＩＤが「00126 」の末端ノード装置３Ｂからの平均ダウンロード時間と、ノードＩＤが「00127 」の末端ノード装置３Ｃからの平均ダウンロード時間を比較し（双方からのダウンロードが事前にあったとする）、より速いほうの末端ノード装置３に対して、次以降の分割ファイル１６１の配信要求を行う。例えば、図７に「×」で示すように、末端ノード装置３Ｃからの平均ダウンロード時間が末端ノード装置３Ｂからのそれより所定の条件（予め経験的に定まる）以上に遅い場合、末端ノード装置３Ａは、図７に点線で示すように、以後の配信の要求先を末端ノード装置３Ｂに変更して、これから分割ファイル１６１の配信を受ける。なお、両者の平均ダウンロード時間に所定の条件以上の違いがない場合であっても、数回毎に、配信の要求先を交互に変更する。
【００６１】
この場合、所定の条件以上に遅い末端ノード装置３のＩＰアドレスが連続している場合、当該遅い末端ノード装置３のために、隣接したノードＩＤを持つ末端ノード装置３以降が、全て影響を受ける結果、全体への分割ファイル１６１の配信が遅れてしまう可能性がある。そこで、この例では、末端ノード装置３は、所定の条件以上に遅い末端ノード装置３のＩＰアドレスが連続している場合、全ての分割ファイル１６１を持つルートノード装置１に対して配信要求を出す。
【００６２】
このために、末端ノード装置３は、分割ファイル１６１の配信要求を他の末端ノード装置３に出す際に、自ノードがその末端ノード装置３から配信を受信した際の平均ダウンロード時間を通知する。末端ノード装置３は、他の末端ノード装置３から受信した自ノードの平均ダウンロード時間と、自ノードＩＤに対して「次ノードＩＤ」「次々ノードＩＤ」の関係にある他の末端ノード装置３の平均ダウンロード時間とを比べて、「次ノードＩＤ」「次々ノードＩＤ」である末端ノード装置３の平均ダウンロード時間」が所定の条件以上に遅い場合、ルートノード装置１に対して配信の要求を行う。
【００６３】
以上によっても、複数の末端ノード装置３の間に、分割ファイル１６１の配信の程度に差が出ることも考えられる。そこで、この例では、末端ノード装置３は、各々、分割ファイル１６１の取得済み状況と、その時点の自ノードの配信帯域とからなる取得済みリスト（図示せず）を生成して、これをルートノード装置１の末端ノード管理手段１１に対して通知することにより、所定の時間ごとに定期的に状況報告を行う。
【００６４】
末端ノード装置３は、分割ファイル１６１を順次他の末端ノード装置３から取得する場合、他の末端ノード装置３から完了通知として取得した自ノードの現時点のアップロード状況（配信帯域）と、分割ファイル１６１の取得状況とを、予め定められた時間ごとに定期的に、ルートノード装置１に対して通知する。ルートノード装置１は、その通知を受信して、分割ファイル１６１の取得が完了しており、また、現時点のアップロード状況に余裕がある末端ノード装置３のアクセス情報を、末端ノード装置３からの通知に対して、応答として返信する。末端ノード装置３は、ルートノード装置１への分割ファイル１６１の配信の要求を、当該通知された末端ノード装置３への配信の要求に変更する。これにより、ルートノード装置１への配信の要求の集中を防止することができる。
【００６５】
ルートノード装置１は、末端ノード装置３からの状況報告の中に、全ての分割ファイル１６１を取得済みの末端ノード装置３があった場合、その時点の後に、状況報告が届いた末端ノード装置３に対して、完了済みでかつ配信帯域の少ない末端ノード装置３のノードＩＤとＩＰアドレスを応答として返信する。この応答を受信した末端ノード装置３は、当該応答にあるノードＩＤとＩＰアドレスを利用して、ルートノード装置１ではなく、当該末端ノード装置３に対して、分割ファイル１６１の配信要求を出す。これにより、ルートノード装置１への配信の要求の集中を防止することができる。なお、実際は、以上に述べた種々の配信要求先を変更する手段をランダムに（即ち、柔軟に又は適宜）組み合わせて実行する。
【００６６】
末端ノード装置３は、全ての分割ファイル１６１を受信した場合、それらのファイルを統合して本来の配信の対象であった大容量ファイル１６に再構成する。この後、末端ノード装置３は、ルートノード装置１への状況通知を継続的に行い、未だ全部の分割ファイル１６１を取得していない他の末端ノード装置３に対して、分割ファイル１６１の配信の要求を受信した場合、その配信を行う。ルートノード装置１は、末端ノード装置３からの状況通知を受信して、全ての末端ノード装置３がファイル取得を完了した場合、これに基づいて、複数の末端ノード装置３の全てに対して、完了応答を行う。複数の末端ノード装置３は、各々、完了通知を受信した場合、全ての末端ノード装置３への大容量ファイル１６の配信が完了したと判断して、ルートノード装置１への状況通知を停止する。
【００６７】
以下、本発明のデータ配信システムにおけるデータ配信方法について、図８〜図１９に示すフローチャートを参照しつつ説明する。
【００６８】
大容量ファイル１６の配信を希望する末端ノード装置３が、自己のアクセス情報をルートノード装置１に登録する。これに応じて、ルートノード装置１が、図８に示すように、当該末端ノード装置３を登録し、管理する。図８は、本発明の末端ノード管理処理フローである。
【００６９】
図８において、ルートノード装置１の末端ノード管理手段１１が、末端ノード装置（末端ノード）３の情報を受け付け待ちの状態にある状態で（ステップＳ１１）、新たに大容量ファイル１６の配信を受信したい末端ノード装置３が「ＩＰアドレス」及び「ポート番号」からなる自己のアクセス情報を送信してくると、これを受信してノードＩＤテーブル１４に当該アクセス情報を追加して（ステップＳ１２）、ノードＩＤテーブル１４のソートを行う（ステップＳ１３）。
【００７０】
一方、ルートノード装置１は、図９に示すように、大容量ファイル１６をデータ管理手段１３に登録した後、全ての末端ノード装置３からのアクセス情報の登録が終了しノードＩＤテーブル１４の作成が終了すると、リスト１８を作成する。図９は、本発明のデータ管理処理フローである。
【００７１】
図９において、ルートノード装置１のデータ管理手段１３が、ユーザの指示入力に従って大容量ファイル１６を読み込んで（ステップＳ２１）、これを複数の分割ファイル１６１に分割し（ステップＳ２２）、当該大容量ファイル１６についてのファイル名テーブル１７を作成する（ステップＳ２３）。これにより、登録データ１５が生成される。この後、データ管理手段１３が、分割ファイル１６１のファイルの数を取得して（ステップＳ２４）、ユーザの指示入力に従って当該大容量ファイル１６の配信時間を決定し（ステップＳ２５）、末端ノード管理手段１１からノードＩＤテーブル１４を取得して（ステップＳ２６）、これらに基づいてリスト１８を作成し（ステップＳ２７）、これを全ての末端ノード装置３にネットワーク２を介して配信する（ステップＳ２８）。
【００７２】
前述のように、リスト１８の生成の過程で、ルートノード装置１が、大容量ファイル１６を分割した分割ファイル１６１の各々についてそのハッシュ値を算出し、これをリスト１８の一部とする。更に、前述のように、ルートノード装置１が、その末端ノード装置３が大容量ファイル１６の配信の要求を開始する時間である配信時間を決定する。従って、ハッシュ値と配信時間は、リスト１８と共に、複数の末端ノード装置３の各々に送信される。
【００７３】
更に、ルートノード装置１は、図１０に示すように、複数の末端ノード装置３の各々に対して、ルートノード情報（自己のアクセス情報）を送信する。図１０は、本発明の状況報告の初期登録処理フローである。
【００７４】
図１０において、末端ノード装置３の状況報告手段３１は、ルートノード装置１からそのＩＰアドレス及びポート番号を受信すると、これを自己の所有するメモリ領域（図示せず）に登録する（ステップＳ３１）。
【００７５】
リスト１８を受信した複数の末端ノード装置３は、各々、大容量ファイル１６の配信をルートノード装置１に要求する。このために、図１１及び図１２に示すように、複数の末端ノード装置３は、各々、リスト１８に基づいてその末端ノード装置３が最初にルートノード装置１に配信を要求する分割ファイル１６１を決定して、その分割ファイル１６１の配信をルートノード装置１に要求する。この時、複数の末端ノード装置３は、各々、配信時間の経過の後に、当該要求を開始する。図１１は、本発明のファイル配信要求処理フローであり、図１２は、本発明のファイル配信要求処理の説明図である。
【００７６】
図１１において、末端ノード装置３のファイル配信要求手段３２は、通知された配信時間か否かを調べ（ステップＳ４１）、配信時間でない場合、ステップＳ４１を繰り返す。配信時間である場合、ファイル配信要求手段３２は、ノード数とファイル数とを比較して（ステップＳ４２）、これに基づいて、以下のように取得すべき分割ファイル１６１の数及びファイル番号を決定する。
【００７７】
即ち、ノード数がファイル数より大きい場合、ファイル配信要求手段３２は、図１２（Ａ）に示すように、取得するファイル番号を（自ノードＩＤ）÷（（ノード数）÷（ファイル数））により算出して（ステップＳ４３）、これに基づいてルートノード装置１に対して当該ファイル番号の分割ファイル１６１の配信を要求する（ステップＳ４８）。ステップＳ４３において、少数点以下は繰り上げる（ステップＳ４５において同じ）。
【００７８】
ノード数がファイル数と等しい場合、ファイル配信要求手段３２は、図１２（Ｂ）に示すように、取得するファイル番号を自ノードＩＤと同じ番号とし（ステップＳ４４）、この後、ステップＳ４８を実行する。
【００７９】
ノード数がファイル数より小さい場合、ファイル配信要求手段３２は、図１２（Ｃ）に示すように、取得するファイルの数（取得数）を（ファイル数）÷（ノード数）により算出して（ステップＳ４５）、これに基づいて、取得するファイルのオフセット（即ち、ファイル番号の間隔）を（ファイル数）÷（取得数）により算出して（ステップＳ４６）、以上に基づいて、取得する分割ファイル１６１を決定する（ステップＳ４７）。即ち、自ノードＩＤと同じ番号のファイル番号を取得の対象とし、更に、取得数になるまで、自ノードＩＤにオフセットを加えたファイル番号を取得の対象とする。この後、ステップＳ４８を実行する。
【００８０】
以上のような複数の末端ノード装置３の各々からの分割ファイル１６１の配信の要求に応じて、ルートノード装置１が、要求された分割ファイル１６１を複数の末端ノード装置３の各々に配信する。
【００８１】
複数の末端ノード装置３が、各々、ルートノード装置１から受信した分割ファイル１６１についてそのハッシュ値を算出し、当該ハッシュ値とリスト１８に含まれる前記受信した分割ファイル１６１についてのハッシュ値とを比較し、両者が一致した場合、前記受信した分割ファイル１６１を正しいデータとして管理する。
【００８２】
この後、複数の末端ノード装置３は、各々、図１３（Ａ）及び図１３（Ｂ）に示すように、リスト１８に基づいて、配信を要求する分割ファイル１６１と、当該分割ファイル１６１の配信を要求する他の末端ノード装置３を決定する。図１３（Ａ）は、本発明のファイル配信要求処理フローであり、図１３（Ｂ）は本発明のファイル配信要求処理の説明図である。
【００８３】
図１３（Ａ）において、末端ノード装置３のファイル配信要求手段３２は、ノード数とファイル数とを比較して（ステップＳ５１）、ノード数がファイル数と等しいかそれより大きい場合、更に、取得済みの分割ファイル１６１のファイル番号はファイル数の最大番号か否かを調べる（ステップＳ５２）。最大番号でない場合、ファイル配信要求手段３２は、取得済みの分割ファイル１６１のファイル番号の次のファイル番号を持つ分割ファイル１６１を取得すべき分割ファイル１６１の候補とする（ステップＳ５３）。ステップＳ５２において最大番号である場合、ファイル配信要求手段３２は、ファイル番号「１」を持つ分割ファイル１６１を取得すべき分割ファイル１６１の候補とする（ステップＳ５４）。
【００８４】
ステップＳ５１において、ノード数がファイル数より小さい場合、ファイル配信要求手段３２は、図１３（Ｂ）に示すように、取得済みの分割ファイル１６１のファイル番号の次のファイル番号を持つ分割ファイル１６１を、オフセットの数の分だけ、順に取得すべき分割ファイル１６１の候補とする（ステップＳ５５）。
【００８５】
この後、図１４に示すように、複数の末端ノード装置３は、各々、決定した分割ファイル１６１の配信を決定した他の末端ノード装置３に要求する。図１４は、本発明のファイル配信要求処理フローである。
【００８６】
図１４において、末端ノード装置３のファイル配信要求手段３２は、指定回数以上か否かを調べ（ステップＳ６１）、指定回数以上である場合、以下のステップＳ６２〜Ｓ６５の処理を省略する。指定回数以上でない場合、ファイル配信要求手段３２は、次ノードＩＤを持つ末端ノード装置３に対する分割ファイル１６１の配信の要求を作成し（ステップＳ６２）、当該末端ノード装置３が当該分割ファイル１６１を所有しているか否かを調べ（ステップＳ６３）、当該分割ファイル１６１を所有していない場合、ステップＳ６１以下を繰り返す。ステップＳ６３において、当該分割ファイル１６１を所有している場合、ファイル配信要求手段３２は、これを取得して（ステップＳ６４）、平均ダウンロード時間を算出する（ステップＳ６５）。
【００８７】
この後、ファイル配信要求手段３２は、指定回数以上か否かを調べ（ステップＳ６６）、指定回数以上である場合、以下のステップＳ６７〜Ｓ６１０の処理を省略する。指定回数以上でない場合、ファイル配信要求手段３２は、次次ノードＩＤを持つ末端ノード装置３に対する分割ファイル１６１の配信の要求を作成し（ステップＳ６７）、当該末端ノード装置３が当該分割ファイル１６１を所有しているか否かを調べ（ステップＳ６８）、当該分割ファイル１６１を所有していない場合、ステップＳ６６以下を繰り返す。ステップＳ６８において、当該分割ファイル１６１を所有している場合、ファイル配信要求手段３２は、これを取得して（ステップＳ６９）、平均ダウンロード時間を算出する（ステップＳ６１０）。
【００８８】
この後、ファイル配信要求手段３２は、指定回数か否かを調べ（ステップＳ６１１）、指定回数でない場合、以上の処理を任意のノードＩＤまで任意の回数だけ（即ち、指定回数に達するまで）繰り返す。指定回数である場合、ファイル配信要求手段３２は、平均ダウンロード時間を比較して、ＩＤを決定する（ステップＳ６１２）。
【００８９】
複数の末端ノード装置３は、各々、図１４に示す処理を任意の回数だけ繰り返した後、図１５及び図１６に示すように、ネットワーク２の状況、即ち、平均ダウンロード時間に基づいて、決定した分割ファイル１６１の配信の要求先を動的に変更しながら、他の末端ノード装置３に要求する。図１５及び図１６は、本発明のファイル配信要求処理フローであり、両者が一体となって１個のファイル配信要求処理フローを構成する。
【００９０】
図１５において、末端ノード装置３のファイル配信要求手段３２は、指定回数以上か否かを調べ（ステップＳ７１）、指定回数以上である場合、以下のステップＳ７２〜Ｓ７８の処理を省略する。指定回数以上でない場合、ファイル配信要求手段３２は、決定したノードＩＤを持つ末端ノード装置３に対して分割ファイル１６１の配信を要求し（ステップＳ７２）、この要求に対する応答として当該末端ノード装置３から代替のノードＩＤの提示があったか否かを調べる（ステップＳ７３）。代替のノードＩＤの提示があった場合、ファイル配信要求手段３２は、分割ファイル１６１の要求先を当該代替のノードＩＤを持つ末端ノード装置３に変更し（ステップＳ７４）、この後、ステップＳ７１以下を繰り返す。
【００９１】
代替のノードＩＤの提示がなかった場合、ファイル配信要求手段３２は、決定したノードＩＤを持つ末端ノード装置３に対して平均ダウンロード時間を通知し（ステップＳ７５）、当該分割ファイル１６１を所有しているか否かを調べ（ステップＳ７６）、所有していない場合、ステップＳ７１以下を繰り返す。所有している場合、ファイル配信要求手段３２は、当該末端ノード装置３から当該分割ファイル１６１を取得して（ステップＳ７７）、平均ダウンロード時間を算出する（ステップＳ７８）。
【００９２】
図１６において、ファイル配信要求手段３２は、算出した平均ダウンロード時間と他の末端ノード装置３から受信した平均ダウンロード時間とを比較して、前者が後者より極端に遅いか否かを調べ（ステップＳ７９）、極端に遅くない場合、ステップＳ７１以下を繰り返す。極端に遅い場合、ファイル配信要求手段３２は、分割ファイル１６１の配信を要求する要求先をルートノード装置１に変更し（ステップＳ７１０）、分割ファイル１６１の取得状況をルートノード装置１に通知する（ステップＳ７１１）。
【００９３】
この後、ファイル配信要求手段３２は、分割ファイル１６１の全てを取得したか否かを調べ（ステップＳ７１２）、全てを取得していない場合、ステップＳ７１以下を繰り返す。全てを取得している場合、ファイル配信要求手段３２は、取得した分割ファイル１６１を結合して元の大容量ファイル１６を復元し（ステップＳ７１３）、分割ファイル１６１の全てを取得したことをルートノード装置１に通知し（ステップＳ７１４）、この後、自己が取得した分割ファイル１６１の他の末端ノード装置１への配信状況を、定期的にルートノード装置１に対して通知する（ステップＳ７１５）。
【００９４】
一方、ルートノード装置１は、分割ファイル１６１の配信を開始した後に末端ノード装置３からの配信の要求を受信すると、図１７に示すように、当該配信を行うか、又は、これに代わる通知を行う。図１７は、本発明のルートノードにおけるファイル配信処理フローである。
【００９５】
図１７において、ルートノード装置１のファイル配信手段１２は、末端ノード装置３から分割ファイル１６１の配信の要求を受信すると（ステップＳ８１）、全ての分割ファイル１６１を取得した末端ノード装置３が存在するか否かを調べ（ステップＳ８２）、存在しない場合、当該要求された分割ファイル１６１を当該末端ノード装置３に配信し（ステップＳ８３）、存在する場合、全ての分割ファイル１６１を取得した末端ノード装置３のノードＩＤを、代替ノードＩＤとして、当該要求をした末端ノード装置３に対して通知する（ステップＳ８４）。
【００９６】
また、ルートノード装置１は、図１７のステップＳ８４における通知を可能とするために、図１８に示すように、末端ノード装置３からの状況報告に応じて、大容量ファイル１６の配信状況を管理する。図１８は、本発明の末端ノード管理処理フローである。
【００９７】
図１８において、ルートノード装置１の末端ノード管理手段１１は、末端ノード装置３から状況管理のための情報を受け付けると（ステップＳ９１）、これを所定のメモリ領域（図示せず）に格納して、これに基づいて、大容量ファイル１６についての配信状況を管理する（ステップＳ９２）。
【００９８】
末端ノード装置３から分割ファイル１６１の配信を要求された他の末端ノード装置３は、図１９に示すように、要求元の末端ノード装置３への当該分割ファイル１６１の配信を行う。図１９は、本発明の末端ノード装置３におけるファイル配信処理フローである。
【００９９】
図１９において、末端ノード装置３のファイル配信手段３３は、他の末端ノード装置３から分割ファイル１６１の配信の要求を受信すると（ステップＳ１０１）、当該要求された分割ファイル１６１は取得済みであるか否かを調べ（ステップＳ１０２）、取得済みである場合、当該分割ファイル１６１を当該他の末端ノード装置３に配信し（ステップＳ１０３）、取得済みで無い場合、当該他の末端ノード装置３に未取得を通知する（ステップＳ１０４）。
【０１００】
以上のようにして、全ての分割ファイル１６１を受信した末端ノード装置３は、分割ファイル１６１を元の一つのファイルに合体して、元の大容量ファイル１６を復元する。末端ノード装置３は、自ノードは全ての分割ファイル１６１を受信し終わっていても、他の末端ノード装置３からの要求に応じて、これに対して分割ファイル１６１の配信を行う。このために、末端ノード装置３は、例えば以下の完了応答を受信するまで、全ての分割ファイル１６１を自己のデータ管理手段（図示せず）に保持する。また、末端ノード装置３は、予め定められた周期で定期的に、分割ファイル１６１の受信の状況報告をルートノード装置１に対して行う。
【０１０１】
この状況報告に基づいて、ルートノード装置１は、全ての末端ノード装置３が分割ファイル１６１の全てを受信したことを知ると、この旨を示す完了応答を、末端ノード装置３からの状況報告に対して通知する。この完了応答を受信した末端ノード装置３は、大容量ファイル１６の受信処理を終了する。
【産業上の利用可能性】
【０１０２】
以上説明したように、本発明によれば、データ配信方法及びシステムにおいて、ダウンロード要求を分散し、ネットワークの帯域のほぼ全体を試用することにより、大容量ファイルを効率的に配信することができる。また、本発明によれば、分割データの配信の状況、ネットワークの状況、データ配信システムの規模、配信すべきデータの大きさに応じて、配信のルートを動的に変更することができる。従って、本発明によれば、ダウンロード設備とネットワーク帯域の増強を図ることなく、大容量のデータを、最小の時間で、全ての末端ノード装置にダウンロードすることができる。
【図面の簡単な説明】
【０１０３】
【図１】本発明のデータ配信システムの構成図である。
【図２】本発明のルートノード装置の説明図である。
【図３】本発明のノードＩＤテーブルの説明図である。
【図４】本発明のファイル名テーブル及びノードＩＤテーブルの説明図である。
【図５】本発明のリストの説明図である。
【図６】本発明のデータ配信処理の説明図である。
【図７】本発明のデータ配信処理の説明図である。
【図８】本発明の末端ノード管理処理フローである。
【図９】本発明のデータ管理処理フローである。
【図１０】本発明の状況報告の初期登録処理フローである。
【図１１】本発明のファイル配信要求処理フローである。
【図１２】本発明のファイル配信要求処理の説明図である。
【図１３】本発明のファイル配信要求処理フロー及びその説明図である。
【図１４】本発明のファイル配信要求処理フローである。
【図１５】本発明のファイル配信要求処理フローである。
【図１６】本発明のファイル配信要求処理フローである。
【図１７】本発明のルートノードにおけるファイル配信処理フローである。
【図１８】本発明の末端ノード管理処理フローである。
【図１９】本発明の末端ノードにおけるファイル配信処理フローである。
【符号の説明】
【０１０４】
１    ルートノード装置
２    ネットワーク
３    末端ノード装置
１１  末端ノード管理手段
１２  ファイル配信手段
１３  データ管理手段
１６  大容量ファイル
３１  状況報告手段
３２  ファイル配信要求手段
３３  ファイル配信手段
【図１】
2007272540.tif 000003
【図２】
2007272540.tif 000004
【図３】
2007272540.tif 000005
【図４】
2007272540.tif 000006
【図５】
2007272540.tif 000007
【図６】
2007272540.tif 000008
【図７】
2007272540.tif 000009
【図８】
2007272540.tif 000010
【図９】
2007272540.tif 000011
【図１０】
2007272540.tif 000012
【図１１】
2007272540.tif 000013
【図１２】
2007272540.tif 000014
【図１３】
2007272540.tif 000015
【図１４】
2007272540.tif 000016
【図１５】
2007272540.tif 000017
【図１６】
2007272540.tif 000018
【図１７】
2007272540.tif 000019
【図１８】
2007272540.tif 000020
【図１９】
2007272540.tif 000021