以下、本発明の最良の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ分散保存システムに本発明を適用した場合の実施形態である。
[1.コンテンツ分散保存システムの構成及び動作概要]
始めに、図1等を参照して、本実施形態に係るコンテンツ分散保存システムの構成及び動作概要について説明する。
図1は、本実施形態に係るコンテンツ分散保存システムSにおける各ノード装置の接続態様の一例を示す図である。
図1の下部枠101内に示すように、IX(Internet eXchange)3、ISP(Internet Service Provider)4a,4b、DSL(Digital Subscriber Line)回線事業者(の装置)5a,5b、FTTH(Fiber To The Home)回線事業者(の装置)6、及び通信回線7等によって、インターネット等のネットワーク8が構築されている。ネットワーク8は、現実世界の通信ネットワークである。なお、図1の例におけるネットワーク(通信ネットワーク)8には、データ(パケット)を転送するためのルータが適宜挿入されているが、図1では図示を省略している。なお、通信回線7としては、例えば、電話回線や光ケーブル等が用いられる。
このようなネットワーク8には、複数のノード装置(以下、「ノード」という)Nn(n=1,2,3・・・の何れか)が接続されている。また、各ノードNnには、固有の製造番号及びIP(Internet Protocol)アドレスが割り当てられている。そして、本実施形態に係るコンテンツ分散保存システムSは、これらのノードNnのうち、図1の上部枠100内に示すように、何れか複数のノードNnの参加により形成されるピアツーピア方式のネットワークシステムとなっている。
なお、図1の上部枠100内に示すネットワーク9は、既存のネットワーク8を用いて形成された仮想的なリンクを構成するオーバーレイネットワーク9である。オーバーレイネットワーク9は、論理的なネットワークであるかかるオーバーレイネットワーク9は、特定のアルゴリズム、例えば、DHTを利用したアルゴリズムにより実現される。そして、コンテンツ分散保存システムS(言い換えれば、オーバーレイネットワーク9)に参加している各ノードNnには、所定桁数からなる固有の識別情報であるノードIDが割り当てられている。
また、ノードIDは、例えば、各ノードNnに個別に割り当てられたIPアドレス或いは製造番号を共通のハッシュ関数によりハッシュ化した値である。ノードIDは、ID空間に偏りなく分散して配置されることになる。ハッシュ関数としては、例えば、SHA−1等が用いられる。また、ハッシュ化した値は、例えば、bit長が160bitとなる。そして、このノードIDは、ID空間に偏りなく分散して配置されることになる。
なお、コンテンツ分散保存システムSへの参加は、参加していないノードNn(例えば、ノードN8)が、参加している任意のノードNnに対して参加要求を示す参加メッセージを送信することによって行われる。任意のノードNnは、例えば、当該システムSに常時参加しているコンタクトノードである。
また、各ノードNnは、夫々、DHTを用いたルーティングテーブルを保持している。このルーティングテーブルは、コンテンツ分散保存システムS上における各種メッセージの転送先を規定している。具体的に、このルーティングテーブルには、ID空間内で適度に離れたノードNnのノードID、IPアドレス及びポート番号を含むノード情報が複数登録されている。
コンテンツ分散保存システムSに参加している1台のノードは、必要最低限のノードNnのノード情報をルーティングテーブルとして記憶している。各ノードNn間で互いに各種メッセージが転送されることで、ノード情報を知らない(記憶していない)ノードNnについてのノード情報が取得される。
このようなDHTを用いたルーティングテーブルについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
コンテンツ分散保存システムSは、内容の異なる様々なコンテンツのレプリカを所定のファイル形式で複数のノードNnに分散して保存(格納)する。レプリカを保存しているノードNnは、以下「コンテンツ保持ノード」という。コンテンツ分散保存システムSは、各ノードNn間でレプリカを利用可能になっている。各コンテンツのオリジナルはセンターサーバSAに保存されている。例えば、ノードN5には、タイトルがXXXの映画のコンテンツのレプリカが保存されている。一方、ノードN3には、タイトルがYYYの映画のコンテンツのレプリカが保存される。このように、複数のノードNn(以下、「コンテンツ保持ノード」という)に分散されて保存されている。
上述のコンテンツのレプリカには、夫々、コンテンツ名(タイトル)及びコンテンツID(コンテンツ毎に固有の識別情報)等の情報が付加されている。このコンテンツIDは、例えば、コンテンツ名+任意の数値が、上記ノードIDを得るときと共通のハッシュ関数によりハッシュ化されて生成される。或いは、システム管理者が、コンテンツ毎に一意のID値を付与しても良い。この場合は、コンテンツ名とそのコンテンツIDの対応が書かれたコンテンツカタログ情報が、全ノードNnに配布される。また、この場合のコンテンツIDは、ノードIDと同一ビット長である。
分散保存されているコンテンツのレプリカの所在は、インデックス情報として、コンテンツのレプリカの所在を管理(記憶)しているノードNn(以下、「ルートノード」という)等により記憶される。インデックス情報は、レプリカを保存したノードNnのノード情報と、コンテンツのコンテンツIDと等の組を含む。このようなルートノードは、例えば、コンテンツIDと最も近い(例えば、上位桁がより多く一致する)ノードIDを有するノードNnであるように定められる。
例えば、タイトルがXXXの映画のコンテンツのレプリカについてのインデックス情報は、そのコンテンツ(コンテンツID)のルートノードであるノードN4により管理される。また、例えば、タイトルがYYYの映画のコンテンツのレプリカについてのインデックス情報は、そのコンテンツ(コンテンツID)のルートノードであるノードN7により管理される。また、このようなルートノードは、例えば、コンテンツIDと最も近いノードIDを有するノードNnであるように定められる。コンテンツIDと最も近いノードIDとは、例えば、コンテンツIDと上位桁がより多く一致するノードIDである。
そして、あるノードNnのユーザが、所望するコンテンツのレプリカを取得したい場合、当該レプリカの取得を望むノードNn(以下、「ユーザノード」という)は、メッセージ(クエリ)を生成する。このメッセージ(クエリ)は、取得を望むコンテンツのコンテンツID及びユーザノードのIPアドレス等を含むコンテンツ所在問合せメッセージである。コンテンツ所在問合せメッセージは、コンテンツ保持ノードを検索するためのメッセージでもある。上述のコンテンツ所在問合せメッセージが、ユーザノードが取得するDHTのルーティングテーブルに従って、他のノードNnに対して送出される。つまり、ユーザノードは、コンテンツ所在問合せメッセージを、ルートノードに向けて送出する。これにより、コンテンツ所在問合せメッセージは、コンテンツIDをキーとするDHTルーティングによって最終的にルートノードに到着することになる。
なお、各ノードNnにおいて、コンテンツのコンテンツ名及びコンテンツID等の属性情報は、例えばセンターサーバSAから全てのノードNnに配信されるコンテンツカタログ情報に記述されている。
また、上記コンテンツ所在問合せ(検索)メッセージに含まれるコンテンツIDは、ユーザノードによって、コンテンツ名が上記共通のハッシュ関数によりハッシュ化されて生成されるようにしても良い。なお、DHTルーティングについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
上記コンテンツ所在問合せメッセージを受信したルートノードは、これに含まれるコンテンツIDに対応するインデックス情報をインデックスキャッシュから取得(検索)する。取得されたインデックス情報は、コンテンツ所在問合せメッセージの送信元であるユーザノードに対して返信される。こうしてインデックス情報を取得したユーザノードは、インデックス情報に基づいてコンテンツのレプリカをダウンロード(取得)することができる。インデックス情報に含まれるコンテンツ保持ノードのIPアドレス等に基づいて、ユーザノードはコンテンツ保持ノードにアクセスする。アクセスしたコンテンツ保持ノードから、コンテンツのレプリカをダウンロード(取得)することが可能になる。なお、当該インデックス情報には、例えば複数のコンテンツ保持ノードのノード情報が含まれていることもある(同一のコンテンツのレプリカが複数のコンテンツ保持ノードに保存されている場合)。かかる場合、ユーザノードは、当該複数のコンテンツ保持ノードのうち一つのコンテンツ保持ノードを選択する。そして、ユーザノードは、選択したコンテンツ保持ノードに接続してコンテンツのレプリカをダウンロードすることができる。
なお、ルートノードは、当該インデックス情報に含まれるIPアドレス等に示されたコンテンツ保持ノードに対してコンテンツ送信要求メッセージを送信し、これにより、ユーザノードは、上記コンテンツ保持ノードからそのレプリカをダウンロードすることもできる。また、上記ユーザノードは、コンテンツ所在問合せメッセージがルートノードに辿り着くまでの間に、当該ルートノードと同じインデックス情報をキャッシュしているキャッシュノードから当該インデックス情報を取得することもできる。
また、ユーザノードは、コンテンツ保持ノードからコンテンツのレプリカを取得して保存したとき、保存したユーザノードは、パブリッシュ(登録通知)メッセージを生成する。パブリッシュメッセージは、レプリカを保存したことをルートノードへ知らせるためのメッセージである。パブリッシュメッセージは、レプリカのコンテンツID及び自己のノード情報を含む。パブリッシュメッセージは、ルートノードに向けて(ルートノード宛に)送出される。これにより、パブリッシュメッセージは、コンテンツ所在問合せメッセージと同じように、コンテンツIDをキーとするDHTルーティングによってルートノードに到着することになる。そして、ルートノードは、パブリッシュメッセージを受信する。ルートノードは、パブリッシュメッセージに含まれるノード情報及びコンテンツIDの組を含むインデックス情報を登録(インデックスキャッシュ領域に記憶)する。こうして、上記ユーザノードは、新たに、上記コンテンツのレプリカを保持するコンテンツ保持ノードとなる。
[2.コンテンツ配信の概要]
次に、コンテンツ分散保存システムSにおけるコンテンツ配信について、図2乃至図5を用いて説明する。なお、ここからの説明においては、各ノードNnが保存しているレプリカも、コンテンツと称する。
コンテンツ分散保存システムSにおいては、当該システムに参加する複数のノードNnが、夫々がネットワーク8に接続する回線の伝送速度、つまり回線速度に応じて複数のグループにグループ分けされている。そして、当該システムにおいては、本実施形態では、例えば、回線速度の速いグループから順に、コンテンツの取得を開始するようになっている。先ず、コンテンツがどのように配信されるかを説明する。
図2は、本実施形態に係るコンテンツ分散保存システムSにおいて、コンテンツが配信される様子の一例を示す図である。
例えば、図2に示す9台のノードN1〜N9の回線速度の最も速いグループ1に所属しているとする。また、全ノードNnに配信されるべきコンテンツは、最初はセンターサーバSAのみが保持している。コンテンツ配信の開始とともに、ノードN1〜N9のうち、例えば、1台のノードNnがコンテンツを取得する。
グループ1に所属するノードNnのうち、どのノードNnがどのタイミングでコンテンツを取得するかは予め決められてはいない。これは、確率計算によって決められる。図2に示す例では、9台のうち1台のノードNnがコンテンツを取得する。従って、ノードN1〜N9は、夫々1/9の確率でコンテンツの取得に当選する抽選処理を実行する。そして、当選したノードNn、例えばノードN1のみがコンテンツを取得する。ノードN1は、コンテンツを取得するために、コンテンツの所在をルートノードに問い合わせる(コンテンツ所在問合せメッセージをルートノードに送信することにより、インデックス情報を取得する)。この時点では、取得すべきコンテンツを保存しているノードNnは存在していないので、ノードN1は、センターサーバSAから当該コンテンツをダウンロードする。
ノードN1のコンテンツ取得開始から所定時間が経過した後、次は2台のノードNnがコンテンツを取得する。ここでは、未だコンテンツを取得していない8台のノードN2〜N9のうち2台のノードNnがコンテンツを取得するので、当選確率は2/8となる。ノードノードN2〜N9は、夫々当選確率2/8の抽選処理を行う。そして、当選した、例えばノードN2及びN3がコンテンツの取得を開始する。ノードN2及びN3が、コンテンツの所在をルートノードに問い合わせると、ノードN1がコンテンツ保持ノードであることを特定することができる。そこで、ノードN2及びN3は、夫々ノードN1からコンテンツをダウンロードする。ノードN1としては、同時に2台のノードNnに対してコンテンツをアップロードすることになる。
ノードN2及びN3のコンテンツ取得開始から所定時間が経過した後、次は6台のノードNnがコンテンツを取得する。ここでは、未だコンテンツを取得していない6台のノードN4〜N9のうち6台のノードNnがコンテンツを取得するので、当選確率は1となる。従って、ノードN4〜N9全てがコンテンツの取得を開始する。ノードN4〜N9が、コンテンツの所在をルートノードに問い合わせると、ノードN1〜3がコンテンツ保持ノードであることを特定することができる。そこで、ノードN4〜N9は、夫々ノードN1〜3の何れかのノードNnからコンテンツをダウンロードする。このとき、ノードN4〜N9は、例えば、コンテンツ取得先のノードNnをノードN1〜3の中からランダムに選択する。そのため、ノードN1〜N3は、夫々平均して同時に2台のノードNnに対してコンテンツをアップロードすることになる。このようにしてコンテンツが配信されていく。
図2に示す例では、1台のノードNnが、同時に2台のノードNnに対してコンテンツをアップロードするようになっている。この台数(以下、「アップロード可能台数」という)は、例えばコンテンツをアップロードする側の回線速度の上り帯域幅によって予め設定されている。回線速度が速いほど、同時に多くのノードNnに対してアップロードすることが可能であるので、アップロード可能台数も多くなるようになっている。図2に示す例では、ノードN1〜N9は同一のグループ1に所属している。つまり、ノードN1〜N9の回線速度は、同一であるか又は所定の範囲内に収まっている。従って、ノードN1〜N9のアップロード可能台数は同一(2台)であり、この台数が、グループ1のアップロード可能台数となる。
また、ノードN1がコンテンツの取得を開始してからノードN2及びN3がコンテンツの取得を開始するまでの時間は、ノードN1がコンテンツをダウンロードに要する時間以上とする必要がある。同様に、ノードN2及びN3がコンテンツの取得を開始してからノードN4〜N7がコンテンツの取得を開始するまでの時間は、ノードN2及びN3がコンテンツをダウンロードに要する時間以上とする必要がある。具体的に、この時間(以下、「待機時間」という)は、コンテンツをアップロードする側の回線速度の上り帯域幅と、コンテンツをダウンロードする側の回線速度の下り帯域幅とによって予め設定される。図2に示す例では、ノードN1〜N9は同一のグループ1に所属しているので、各待機時間は同一となる。また、グループ1よりも回線速度が速いグループは存在しないので、待機時間は、グループ1の回線速度を考慮すれば良い。
更に、待機時間が経過する毎にコンテンツを取得するノードNnの台数(以下、「当選台数」という)は、既にコンテンツを取得しているノードNnの台数及びアップロード可能台数によって決定される。図2に示す例では、ノードN1がコンテンツを取得した後は、既にコンテンツを取得しているノードNnの台数は1台である。従って、次の当選台数は、1台×アップロード可能台数2=2台となる。その次の当選台数は、3台×アップロード可能台数2=6となる。そして、その次の当選台数は、9台×アップロード可能台数2=18となる。なお、最初にコンテンツを取得するノードNnの当選台数は、1台に限られるものではなく、複数台であっても良い。
このように、グループに所属する各ノードNnが、待機時間が経過する毎に到来する各タイミング(取得時期)の何れかに夫々コンテンツを取得するようになっている。
当選台数の決定において、複数のグループでコンテンツが既に取得されている場合には、その各グループのアップロード可能台数が考慮される。
図3は、複数のグループがコンテンツを既に取得している場合の当選台数と当選確率の計算方法を示す図である。
例えば、図3に示すように、グループ1には20台、グループ2には60台、グループ3には300台のノードNnが所属しているとする。ここで、回線速度はグループ1、グループ2、グループ3の順に速くなっている。また、グループ1のアップロード可能台数は3台であり、グループ2のアップロード可能台数は1台であるとする。
グループ1では20台全てのノードNnが既にコンテンツを取得している。また、グループ2でも30台全てのノードNnが既にコンテンツを取得している。一方、グループ3においては、未だ1台もコンテンツを取得していない。
この状態で、グループ3に所属する300台のノードNnが、夫々抽選処理において当選台数及び当選確率を計算する。グループ1では、20台のノードNnが夫々アップロード可能台数である3台のノードNnに対してアップロードを行う。従って、20×3=60台のノードNnに対してコンテンツがアップロードされる。グループ2では、60台のノードNnが夫々アップロード可能台数である1台のノードNnに対してアップロードを行う。従って、60×1=60台のノードNnに対してコンテンツがアップロードされる。そして、グループ1のアップロード台数とグループ2のアップロード台数の和は120台となる。これが、グループ3の当選台数となる。そして、グループ3の全ノードNnが未だコンテンツを取得していないので、当選確率は120/300=0.4となる。
図2を用いて説明したように、各ノードNnは、コンテンツ取得先のノードNnを、例えばランダムに選択する。そうすると、グループ1に所属する各ノードNnに対してもグループ2に所属する各ノードNnに対しても、夫々同じ台数のノードNnからコンテンツが要求されることとなる。そうすると、グループ1に所属するノードNnは、コンテンツのアップロードに余裕ができてしまうが、グループ2に所属するノードNnは、負荷が大きくなる。そこで、本実施形態においては、実際のコンテンツのアップロード台数が各グループのアップロード可能台数に調整されるようにしている。具体的に、コンテンツを取得するユーザノードは、ルートノードからコンテンツ保持ノードのインデックス情報を取得すると、当該インデックス情報に示されるノードNnの中から所定数の複数のノードNnを選択する。次いで、ユーザノードは、選択した複数のノードNnにアクセスし、夫々のノードNnからコンテンツの一部をダウンロードする。コンテンツの一部のダウンロードは、例えば、一定時間ダウンロードすることにより行われても良いし、一定バイト数ダウンロードすることにより行われても良い。コンテンツの一部をダウンロードしたユーザノードは、夫々の受信速度を算出する。そして、ユーザノードは受信速度が最速であるノードNnのみからコンテンツのダウンロードを継続し、それ以外のノードNnに対してはダウンロードを中断する。そうすると、アップロードする側のノードNnの回線速度に応じて、実際のアップロード台数が調整される。そして、最終的なアップロード台数は、各ノードNnが所属するグループのアップロード可能台数に収束する。
図4は、本実施形態に係るパラメータ情報に設定される内容の一例を示す図である。
各ノードNnは、抽選処理を行うため及び抽選処理を行うタイミングを求めるために、センターサーバSAからパラメータ情報(順序情報及び送信数情報の一例)を取得する。図3に示すように、パラメータ情報には、例えば、コンテンツを取得する順序番号毎に対応付けて、その順序のグループを示す識別情報、グループに所属するノードNnの台数(以下、「所属台数」という)、待機時間及びアップロード可能台数等が設定される。順序は1から始まり、Gが最後の順序を示している。以下、I番目のグループは、グループIとして示す。また、このIを、グループ番号ともいう。そして、グループ番号が小さいグループであるほど、回線速度が速くなるようになっている。
また、MIは、グループIの所属台数である。また、TIは、グループIの待機時間である。待機時間TIは、グループT1〜TIの回線速度の上り帯域幅及びグループTIの回線速度の下り帯域幅に基づいて設定される。待機時間TIには、グループIに所属するノードNnがコンテンツのダウンロードに要する時間以上の値が設定される。そして、待機時間TIは、コンテンツの取得順序が早いほど短くなっている。また、UIは、グループIのアップロード可能台数である。アップロード可能台数UIは、グループIの回線速度の上り帯域幅に基づいて設定される。例えば、アップロード可能台数UIには、回線に負荷がかからない範囲で台数が極力多くなるように設定される。そして、アップロード可能台数UIは、コンテンツの取得順序が早いほど多くなっている。なお、取得順序が隣り合うグループ間で、アップロード可能台数が同値に設定される場合がある。
本実施形態においては、各ノードNnの回線速度における上り帯域幅と下り帯域幅の比率を調整することができる。回線速度(所属するグループ)にもよるが、各ノードNnは、コンテンツを複数台のノードNnに対して同時にアップロードする場合がある。その一方で、各ノードNnは、同時に1台のノードNnからのみしかコンテンツをダウンロードしない。そこで、例えば、各ノードNnの上り帯域幅を下り帯域幅よりも広く設定することで、回線を効率よく使用することができる。
また、パラメータ情報には、当該パラメータを取得したノードNnが所属するグループ(自グループ)のグループ番号としてKが示されている。よって、グループKの所属台数、待機時間及びアップロード台数は、Mk、Tk及びUkとなる。なお、実際には、所属するグループ番号Kが示される代わりに、各グループにどのノードNnが所属しているかが、ノードIDで示されている。
次に、どのようにして各グループに対してコンテンツが配信されているかを説明する。ここで、グループ1の所属台数、待機時間及びアップロード可能台数は、例えば、図4に示すように、20台、60秒及び3台とする。また、グループ2の所属台数、待機時間及びアップロード可能台数は、30台、180秒及び1台とする。
図5は、各グループのコンテンツの取得時期の一例を時系列で示す図である。
コンテンツ配信開始時に、先ずグループ1に所属する1台のノードNnがコンテンツの取得を開始する。そして、コンテンツ配信開始からグループ1の待機時間である60秒経過後、グループ1に所属するノードNnのうちコンテンツ取得済の台数1×アップロード可能台数3=3台のノードNnがコンテンツを取得する。コンテンツ配信開始から120秒経過後、配信が完了しているノードNnの台数は4台である。従って次は、グループ1に所属するノードNnのうち12台のノードNnがコンテンツを取得する。コンテンツ配信開始から180秒経過後、配信が完了しているノードNnの台数は16台である。従って次の当選台数は48台である。しかし、グループ1に所属するノードNnのうち、この時点でコンテンツを取得していないノードNnは4台である。従って、4台のノードNnがコンテンツを取得する。
ここで、tIは、コンテンツ配信開始からI番目のグループの全ノードNnに対してコンテンツ配信が完了するまでに要する時間である。コンテンツ配信開始から240秒経過後、グループ1の全ノードNnに対してコンテンツ配信が完了する。グループ1のコンテンツ取得期間は、コンテンツ配信開始から240秒までの間である。そして、t1=240である。の時点で、グループ2に所属するノードNnがコンテンツの取得を開始する。ここでは、当選台数は60台である。従って、グループ2に所属する30台のノードNn全てがコンテンツを取得する。そして、グループ2の待機時間である180秒が経過し、コンテンツ配信開始からt2=420秒が経過すると、グループ1の所属台数M1+グループ2の所属台数M2=50台に対してコンテンツ配信が完了する。グループ2のコンテンツ取得期間は、コンテンツ配信開始から240秒経過してから、420秒までの間である。
このようにして、或るグループに所属するノードNn全てがコンテンツを取得し終わった後、その次の順番のグループに所属するノードNnがコンテンツの取得を開始する。例えば、グループK−1に所属する全てのノードNnがコンテンツを取得し終わった後、グループKに所属するノードNnがコンテンツの取得を開始する。コンテンツ配信開始からtk秒経過後は、M1+M2+・・・MK台のノードNnに対してコンテンツ配信が完了する。そして、コンテンツ配信開始からtG秒経過後、M1+M2+・・・MG台、つまり、全てのノードNnに対してコンテンツ配信が完了する。
このように、回線速度が速いグループからコンテンツの取得が開始される。各グループにおいては、そのコンテンツ取得期間中、所属する各ノードNnが、夫々待機時間が経過する毎に到来する各タイミング(取得時期)の何れかのタイミングでコンテンツを取得する。また、取得順序が前のグループに所属する全ノードNnがコンテンツを取得し終わった後に、次のグループに所属するノードNnがコンテンツの取得を開始する。
次に、このようにしてグループ分けしてコンテンツを配信する場合と、グループ分けしないでコンテンツを配信しない場合の配信完了までに要する時間の違いについて説明する。
第1の例として、回線速度に応じて待機時間を変えた場合について説明する。この例において、グループは、グループ1とグループ2が存在するものとする。回線速度はグループ1の方がグループ2よりも速くなっている。そして、グループ1の所属台数M1、待機時間T1及びアップロード可能台数U1は、256台、60秒、1台とする。また、グループ2の所属台数M2、待機時間T2及びアップロード可能台数U2は、256台、180秒、1台とする。理解を容易にするため、両グループの所属台数及びアップロード可能台数を同値にしている。
この場合、コンテンツ配信開始時にグループ1に所属する1台のノードNnがコンテンツを取得する。そして、60秒経過後に配信が完了したノードNnの台数は1台となる。その後、60秒ごとに、配信が完了するノードNnの台数は、2、4、8、16、32、64、124、256台と増加する。このようにして、コンテンツ配信開始から9×T1=540秒経過後にグループ1に所属する全ノードNnに対して配信が完了する。次に、グループ2に所属する256台全てのノードNnがコンテンツを取得する。そうすると、コンテンツ配信開始から540秒+1×T2=720秒後に全ノードNnに対して配信が完了する。
一方、グループ分けをしない場合、グループ1に所属するはずのノードNnとグループ2に所属するはずのノードNnが混在することになる。従って、待機時間は回線速度が最も遅いグループ2の180秒に合わせる必要がある。また、アップロード可能台数は、例えば平均値を取ることとする。この例の場合は、(U1×M1+U2×M2)/(M1+M2)=1となる。
そうすると、コンテンツ配信開始時に1台のノードNnがコンテンツを取得する。そして、180秒経過後に配信が完了したノードNnの台数は1台となる。その後、180秒ごとに、配信が完了するノードNnの台数は、2、4、8、16、32、64、124、256、512台と増加する。このようにして、コンテンツ配信開始から10×180秒=1800秒経過後に全ノードNnに対して配信が完了する。
以上の結果から、グループ分けをして、回線速度が速いグループから順にコンテンツを取得すると、コンテンツ配信完了までに要する時間を短縮することができることが分かる。
第2の例として、回線速度に応じてアップロード可能台数を変えた場合について説明する。この例においても、グループは、グループ1とグループ2が存在するものとする。回線速度はグループ1の方がグループ2よりも速くなっている。そして、グループ1の所属台数M1、待機時間T1及びアップロード可能台数U1は、256台、60秒、3台とする。また、グループ2の所属台数M2、待機時間T2及びアップロード可能台数U2は、256台、60秒、1台とする。
回線速度が速いほど、アップロード可能台数を多くすることができるので、グループ1の方がグループ2よりもアップロード可能台数が多くなっている。また、待機時間が同じであれば、アップロード可能台数が多いほど、多くのノードNnに対して早くコンテンツを送信することができる。従って、回線速度が速いほど、コンテンツの配信完了に要する時間を短くすることができる。
この場合、コンテンツ配信開始時にグループ1に所属する1台のノードNnがコンテンツを取得する。そして、60秒経過後に配信が完了したノードNnの台数は1台となる。その後、60秒ごとに、配信が完了するノードNnの台数は、4、16、64、256台と増加する。このようにして、コンテンツ配信開始から5×T1=300秒経過後にグループ1に所属する全ノードNnに対して配信が完了する。次に、グループ2に所属する256台全てのノードNnがコンテンツを取得する。そうすると、コンテンツ配信開始から300秒+1×T2=360秒後に全ノードNnに対して配信が完了する。
一方、グループ分けをしない場合、待機時間はこれまでと同じ60秒である。また、アップロード可能台数は、(U1×M1+U2×M2)/(M1+M2)=2となる。
そうすると、コンテンツ配信開始時に1台のノードNnがコンテンツを取得する。そして、60経過後に配信が完了したノードNnの台数は1台となる。その後、60秒ごとに、配信が完了するノードNnの台数は、3、9、27、81、243、256台と増加する。このようにして、コンテンツ配信開始から7×60秒=420秒経過後に全ノードNnに対して配信が完了する。
以上の結果からも、グループ分けをして、回線速度が速いグループから順にコンテンツを取得すると、コンテンツ配信完了までに要する時間を短縮することができることが分かる。
上記第1及び第2の例は、待機時間又はアップロード可能台数のうち何れか一方のみをグループ毎に変えた場合である。待機時間及びアップロード可能台数の両方を変えるようにすれば、更に効果的である。
なお、これまでの説明においては、コンテンツを丸ごと一度に配信する場合を述べたが、コンテンツを分割して順次配信する場合についても同様に行うことができる。例えば、コンテンツを複数のデータ(以下、「断片データ」という)に分割して、これらの断片データをセンターサーバSAに記憶させておく。各断片データは、通常のコンテンツと同様に、夫々コンテンツIDが割り当てられている。よって、各ノードNnは、各断片データを、通常のコンテンツと同様にして取得することができる。図2を例にして説明すると、コンテンツ配信開始時には、ノードN1が、センターサーバSAからコンテンツを構成する複数の断片データのうち1番目の断片データをダウンロードする。待機時間が経過した後、ノードN1は、センターサーバSAから2番目の断片データをダウンロードする。これと同時に、ノードN2及びN3は、夫々ノードN1から1番目の断片データをダウンロードする。待機時間が経過した後、ノードN1は、センターサーバSAから3番目の断片データをダウンロードする。これと同時に、ノードN2及びN3は、夫々ノードN1から2番目の断片データをダウンロードする。さらに同時に、ノードN4〜N9は、夫々、ノードN1〜N3の何れかから1番目の断片データをダウンロードする。このようにして、断片データが次々に配信されていく。このときの待機時間は、断片データのダウンロードに要する時間以上とされる。
[3.センターサーバSAの構成等]
次に、図6を参照して、センターサーバSAの構成及び機能について説明する。
図6は、センターサーバSAの概要構成例を示す図である。
センターサーバSAは、図6に示すように、演算機能を有するCPU,作業用RAM,各種データ及びプログラムを記憶するROM等から構成された制御部11と、各種データ及び各種プログラム等を記憶保存(格納)するためのHD等から構成された記憶部12と、ネットワーク8等を通じてノードNnとの間の情報の通信制御を行うための通信部13と、を備えて構成され、制御部11、記憶部12、及び通信部13はバス14を介して相互に接続されている。
記憶部12には、各ノードNnのノードID、IPアドレス及びポート番号等が記憶されている。また、記憶部12には、配信対象となるコンテンツが記憶されている。また、記憶部12には、全ノードNn分の回線速度情報が夫々ノードIDに対応付けて記憶されている。回線速度情報は、対応するノードNnの回線速度を示す情報である。更に、記憶部12には、コンテンツを配信するためのパラメータ情報が記憶されている。
制御部11は、CPUが記憶部12等に記憶されたプログラムを読み出して実行することにより、センターサーバSA全体を統括制御する。
例えば、制御部11は、各ノードNnの回線速度を回線速度情報として各ノードNnから取得する。そして、制御部11は、パラメータ情報を作成する。具体的に、制御部11は、取得した回線速度情報に基づいて、ノードNnのグループ分けを行う。このグループ分けは、例えば、各グループの回線速度の範囲が予め定められており、制御部11が、どのノードNnがどの回線速度の範囲に入るかを判断することによって行われても良い。また、例えば、制御部11が、各ノードNnの回線速度の分布に応じて、その都度グループ毎の回線速度の範囲をフレキシブルに決定しても良い。また、グループ数もフレキシブルに決定しても良い。各グループの待機時間及びダウンロード可能台数は、例えば、予め設定されていても良い。また、例えば、制御部11が、各グループの所属台数、回線速度等に応じて、各グループの待機時間及びダウンロード可能台数をフレキシブルに決定しても良い。制御部11は、各グループの所属台数、待機時間及びアップロード可能台数を決定すると、これらの情報に基づいて、パラメータ情報を作成する。
パラメータ情報を作成した制御部11は、このパラメータ情報を全ノードNnに配信する。このパラメータ情報の配信は、例えば、特開2007−053662号公報にて開示されたDHTマルチキャスト(マルチキャストメッセージ転送処理)によりコンテンツ分散保存システムSに参加している全てのノードNnに対して行っても良い。
また、制御部11は、外部からセンターサーバSAにコンテンツが投入されると、コンテンツ分散保存システムSに参加している全てのノードNnに対して配信開始指令を送信する。これにより、コンテンツの配信が開始されることとなる。なお、例えば、コンテンツを予め記憶部12に記憶させておいて、制御部11が、コンテンツの配信を開始すべき日時が到来したときに、配信開始指令を送信するようにしても良い。
なお、上記プログラムは、例えば、ネットワーク8上の所定のサーバからダウンロードされるようにしても良い。また、上記プログラムは、例えば、CD−ROM等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
[4.ノードNnの構成及び機能等]
次に、図7を参照して、ノードNnの構成及び機能について説明する。
図7は、ノードNnの概要構成例を示す図である。
各ノードNnは、図7に示すように、演算機能を有するCPU,作業用RAM,各種データ及びプログラムを記憶するROM等から構成されたコンピュータとしての制御部21と、各種データ及び各種プログラム等を記憶保存(格納)するためのHD(ハードディスク)等から構成された記憶部22と、受信されたコンテンツのレプリカ等を一時蓄積するバッファメモリ23と、コンテンツのレプリカに含まれるエンコードされたビデオデータ(映像情報)及びオーディオデータ(音声情報)等をデコード(データ伸張や復号化等)するデコーダ部24と、当該デコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部25と、当該映像処理部25から出力されたビデオ信号に基づき映像表示するCRT,液晶ディスプレイ等の表示部26と、上記デコードされたオーディオデータをアナログオーディオ信号にD (Digital)/A(Analog)変換した後これをアンプにより増幅して出力する音声処理部27と、当該音声処理部27から出力されたオーディオ信号を音波として出力するスピーカ28と、ネットワーク8を通じて他のノードNn等間の情報の通信制御を行うための通信部29と、ユーザからの指示を受け付け当該指示に応じた指示信号を制御部21に対して与える入力部(例えば、キーボード、マウス、或いは、リモコンや操作パネル等)30と、を備えて構成され、制御部21、記憶部22、バッファメモリ23、デコーダ部24、通信部29、及び入力部30はバス31を介して相互に接続されている。なお、ノードNnとしては、専用のサーバ装置のほか、パーソナルコンピュータ、STB(Set Top Box)等を適用可能である。
記憶部22には、DHTを用いたルーティングテーブル、インデックス情報、及びコンテンツカタログ情報、並びに、コンテンツ分散保存システムSに参加する際のアクセス先となるコンタクトノードのIPアドレス及びポート番号、及びセンターサーバSAのIPアドレス及びポート番号等が記憶されている。
また、記憶部22には、センターサーバSAから取得されたパラメータ情報が記憶される。
制御部21は、CPUが記憶部22等に記憶されたプログラム(本発明のコンテンツ取得処理プログラムを含む)を読み出して実行することにより、本発明におけるグループ情報取得手段、取得時期決定手段及びコンテンツ取得手段として機能する。
グループ情報取得手段としての制御部21は、センターサーバSAから配信されたパラメータ情報を受信する。
また、制御部21は、取得時期決定手段として、センターサーバSAから送信された配信開始指令を受信すると、予め受信しているパラメータ情報に基づいて、自ノードのコンテンツの取得時期を決定する。具体的に、制御部21は、待機時間が経過する毎に、自ノードが所属する自グループの抽選処理を行う時期か否かを判定する。この待機時間は、その時点で抽選処理を行うグループの待機時間とされる。どのグループの待機時間が用いられるかは、パラメータ情報に基づいて決定される。そして、制御部21は、自グループの抽選処理を行う時期であると判定すると、抽選処理を実行する。この抽選処理において、制御部21は、コンテンツの取得に当選した場合には、コンテンツ取得処理を実行する。一方、制御部21は、コンテンツの取得に当選しなかった場合には、自グループの待機時間が経過した後、再度抽選処理を実行する。なお、詳細な処理内容については後述する。
コンテンツの取得に当選した制御部21は、コンテンツ取得手段として、コンテンツ保持ノード(コンテンツを配信可能なノードNn)からコンテンツを取得する。ここで、制御部21は、コンテンツ保持ノードを検索する。具体的に、制御部21は、コンテンツ所在問い合わせメッセージをルートノードに向けて送信する。そして、制御部21は、ルートノードから送信されてきたインデックス情報を受信する。これによりコンテンツ保持ノードが検索される。
そして、制御部21は、検索されたコンテンツ保持ノードからコンテンツをダウンロードする。ここで、制御部21は、上述したように、最初は複数のコンテンツ保持ノードからコンテンツの一部をダウンロードする。そして、制御部21は、これらのコンテンツ保持ノードのうち受信速度が最速であるコンテンツ保持ノードからコンテンツのダウンロードを継続する。
なお、上記コンテンツ取得処理プログラムは、例えば、ネットワーク8上の所定のサーバからダウンロードされるようにしても良いし、例えば、CD−ROM等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
[5.コンテンツ分散保存システムSの動作]
次に、図8乃至図11を参照して、本実施形態に係るコンテンツ分散保存システムSの動作について説明する。
図8は、本実施形態に係るコンテンツ分散保存システムSの回線速度計測時における処理例を示すフローチャートである。
図8に示すノードNnの処理は、例えば、定期的に実行される。先ず、ステップS1において、ノードNnの制御部21は、自ノードの回線速度を計測する(ステップS1)。例えば、制御部21は、所定の回線速度計測用のサーバに、計測用のデータを所定量送信する。回線速度計測用のサーバは、このときの受信時間を計測し、これを受信時間情報として要求元のノードNnに送信する。受信時間情報を受信した制御部21は、データ送信量と受信時間に基づいて回線速度の上り帯域幅を算出する。また、回線速度計測用のサーバは、要求元のノードNnに対して、計測用のデータを所定量送信する。計測用のデータを受信した制御部21は、このときの受信速度を算出し、回線速度の下り帯域幅とする。
次いで、ステップS2において、制御部21は、回線速度情報及び自ノードのノードIDをセンターサーバSAに送信する(ステップS2)。ここで、制御部21は、算出した回線速度の上り帯域幅と下り帯域幅を統合して回線速度情報とする。
回線速度情報及びノードIDを受信したセンターサーバSAの制御部11は、ステップS11において、これらの情報を対応付けて記憶部12に記憶させる(ステップS11)。このようにして、各ノードNnの回線速度情報がセンターサーバSAにより収集される。
図9は、本実施形態に係るコンテンツ分散保存システムSのパラメータ情報作成時における処理例を示すフローチャートである。
図9に示すセンターサーバSAの処理は、例えば、定期的に実行される。先ず、ステップS21において、制御部11は、各ノードNnの回線速度情報に基づいて、パラメータ情報を作成する(ステップS21)。具体的に、制御部11は、回線速度情報が示す各ノードNnの回線速度に基づいてグループ分けを行う。次いで、制御部11は、各グループの所属台数を求める。更に、制御部11は、各グループの待機時間及びダウンロード可能台数を決定する。そして、制御部11は、これらの情報からパラメータ情報作成し、これを記憶部12に記憶させる。
次いで、ステップS22において、制御部11は、作成したパラメータ情報を各ノードNnに送信する(ステップS22)。
パラメータ情報を受信したノードNnの制御部21は、ステップS31において、このパラメータ情報を記憶部22に記憶させる(ステップS31)。このとき、制御部21は、古いパラメータ情報が記憶部22に記憶されていた場合には、受信した新しいパラメータ情報を上書きする。
図10は、本実施形態に係るコンテンツ分散保存システムSのコンテンツ配信時における処理例を示すフローチャートである。
図10に示すセンターサーバSAの処理は、例えば、配信対象となるコンテンツがセンターサーバSAに投入されたときに実行される。先ず、ステップS41において、制御部11は、各ノードNnに配信開始指令を送信する(ステップS41)。
配信開始指令を受信したノードNnの制御部21は、ステップS51において、タイマーをスタートさせる(ステップS51)。具体的に、制御部21は、タイマーtに0を設定する。このタイマーtは、1秒ごとに1加算されるタイマー変数である。また、このタイマー変数の値は、コンテンツ配信開始時からの経過時間を示す。
次いで、ステップS52において、制御部21は、定数設定及び初期値設定を行う(ステップS52)。具体的に、制御部21は、記憶部22に記憶されているパラメータ情報から、定数である自ノードの所属するグループ番号K、各グループの所属台数M1〜MG、待機時間T1〜TG、アップロード可能台数U1〜UGを設定する。また、制御部21は、変数の初期値として、グループ番号I、施行回数i、コンテンツ配信完了時期t0及び当選済台数H1〜HGを設定する。グループ番号Iは現時点でどのグループが抽選処理を行うかを示す変数である。コンテンツ配信開始時であるので、グループ番号Iの初期値は1となる。施行回数iは、現時点で抽選処理を行っているグループの抽選処理の回数を示す変数である。グループ1の1回目の抽選処理が行われるので、施行回数iの初期値は0である。コンテンツ配信完了時期tIは、グループIに所属する全ノードNnがコンテンツを取得し終わった時期を、コンテンツ配信開始時からの経過時間で示す変数である。ここでは、現時点で抽選処理を行っているグループが抽選処理を開始させる時期を示す情報として、前の順番のグループのコンテンツ配信完了時期が使用される。グループ1が抽選処理を開始するので、初期値としてTi−1=T0=0が設定される。当選済台数H1〜HGは、抽選処理においてコンテンツの取得に当選したノードNnの個数をグループ毎に示す変数である。コンテンツ配信開始時は、何れのノードNnも当選していないので、当選済台数H1〜HGの初期値は全て0である。
次いで、ステップS53において、制御部21は、タイマーtがtI−1+TI×iと等しいか否かを判定する(ステップS53)。つまり、制御部21は、グループIが抽選処理を実行すべきタイミングになったか否かを判定する。このとき、制御部21は、タイマーtがtI−1+TI×iと等しくはない場合、すなわち、グループIが抽選処理を実行すべきタイミングではない場合には(ステップS53:NO)、ステップS53に移行して同じ判定を繰り返す。
一方、ステップS53において、制御部21は、タイマーtがtI−1+TI×iと等しい場合、すなわち、グループIが抽選処理を実行すべきタイミングである場合には(ステップS53:YES)、i=i+1を計算する(ステップS54)。次いで、ステップS55において、制御部21は、グループ番号Iが1であり且つ施行回数iが1であるか否かを判定する(ステップS55)。つまり、制御部21は、最初のグループの最初の抽選処理(コンテンツ配信開始時)であるか否かを判定する。このとき、制御部21は、グループ番号Iが1であり且つ施行回数iが1である場合には(ステップS55:YES)、当選台数hに1を設定する(ステップS56)。当選台数hは、今回の抽選処理において、コンテンツの取得に当選する台数を示す変数である。コンテンツ配信開始時であるので、当選台数hとしては定数が設定される。
一方、ステップS55において、制御部21は、グループ番号Iが1ではないか、又は施行回数iが1ではない場合には(ステップS55:NO)、当選台数hを算出する(ステップS57)。コンテンツ配信開始時ではない場合、既にコンテンツの取得に当選することによってコンテンツを取得したノードNnが、所属するグループのアップロード可能台数分のノードNnに対してコンテンツを送信する。そしてコンテンツを送信される方のノードNnの台数の総和が当選台数hとなる。従って、当選台数hは、各グループについて、アップロード可能台数に対して既に当選しているノードNnの台数を掛けて得られた値を、グループ1からグループIまで合計して得られる。つまり、
h=U1×H1+U2×H2+・・・+UI−1×HI−1+UI×HI ・・・式1
となる。ただし、グループ1からグループI−1までのグループについては、全ノードNnが既に当選している。従って、hは、以下の式2で得られる。
h=U1×M1+U2×M2+・・・+UI−1×MI−1+UI×HI ・・・式2
となる。
制御部21は、ステップS56又はS57の処理を終えると、ステップS58において、グループ番号Iが自グループのグループ番号Kと等しいか否かを判定する(ステップS58)。つまり、制御部21は、自グループが抽選処理を実行するタイミングであるか否かを判定する。このとき、制御部21は、グループ番号Iが自グループのグループ番号Kと等しくはない場合、すなわち、自グループが抽選処理を実行するタイミングではない場合には(ステップS58:NO)、HI=HI+hを計算する(ステップS59)。つまり、制御部21は、今回当選した台数分だけグループIの当選済台数を増加させるのである。
次いで、ステップS60において、制御部21は、当選済台数HIが所属台数NI以上であるか否かを判定する(ステップS60)。つまり、制御部21は、グループIに所属する全ノードNnがコンテンツの取得に当選したか否かを判定する。このとき、制御部21は、当選済台数HIが所属台数NI未満である場合、すなわち、グループIに所属するノードNnのうちコンテンツの取得に当選していないノードNnが存在する場合には(ステップS60:NO)、ステップS53に移行する。つまり、制御部21は、グループIの抽選処理が終わっていないので、待機時間TIだけ待機するのである。
一方、ステップS60において、制御部21は、当選済台数HIが所属台数NI以上である場合、すなわち、グループIに所属する全ノードNnがコンテンツの取得に当選した場合には(ステップS60:YES)、tI=tI−1+TI×iを計算する(ステップS61)。つまり、制御部21は、グループIの抽選処理が全て終わったので、グループI+1の抽選処理を開始させる時期を設定するのである。次いで、ステップS62において、制御部21は、I=I+1を計算し、iに0を設定する(ステップS62)。つまり、制御部21は、抽選処理を行う対象をグループI+1とするのである。制御部21は、この処理を終えると、ステップS53に移行する。
ステップS57において、制御部21は、グループ番号Iが自グループのグループ番号Kと等しい場合、すなわち、自グループが抽選処理を実行するタイミングである場合には(ステップS57:YES)、ステップS64〜S66の抽選処理を実行する。先ず、制御部21は、コンテンツの取得に当選する当選確率Pを算出する(ステップS63)。当選台数Pは、未だコンテンツの取得に当選していない自グループのノードNnのうち今回当選するノードNnの割合となる。従って、当選台数Pは、以下の式3で得られる。
P=h/(NK−Hk) ・・・式3
次いで、ステップS64において、制御部21は、当選確率Pが1より大きいか否かを判定する(ステップS64)。このとき、制御部11は、当選確率Pが1以下である場合には(ステップS64:NO)、0以上1未満の乱数を発生させ、この乱数を乱数値Rに設定する(ステップS65)。次いで、ステップS66において、制御部21は、当選確率Pが乱数値Rよりも大きいか否かを判定する(ステップS66)。つまり、制御部21は、コンテンツの取得に当選したか否かを判定する。このとき、制御部21は、当選確率Pが乱数値R以下である場合、すなわち、落選した場合には(ステップS66:NO)、ステップS59に移行する。つまり、制御部21は、今回当選した台数分だけグループKの当選済台数Hkを増加させ、待機時間Tk分だけ待機した後、再度抽選処理を行うのである。
一方、ステップS66において、制御部21は、当選確率Pが乱数値Rより大きい場合、すなわち、当選した場合には、後述するコンテンツ取得処理を実行する(ステップS67)。また、制御部21は、ステップS64において、当選確率Pが1より大きい場合にも(ステップS64:YES)、コンテンツ取得処理を実行する(ステップS67)。当選台数hが未だコンテンツの取得に当選していないノードNnの台数を上回る場合がある。この場合は、当選確率Pが1を上回る。このときは、コンテンツの取得に100%当選するので、制御部21は、不必要な処理を省略するのである。
図11は、本実施形態に係るノードNnの制御部21のコンテンツ取得処理における処理例を示すフローチャートである。
図11に示すように、ステップS71において、制御部21は、コンテンツ所在問い合わせメッセージをルートノードに向けて送信する(ステップS71)。次いで、ステップS72において、制御部21は、ルートノードから送信されてきたインデックス情報を受信する(ステップS72)。次いで、ステップS73において、制御部21は、受信したインデックス情報を参照して、コンテンツ保持ノードの台数を判定する(ステップS73)。このとき、制御部21は、コンテンツ保持ノードの台数が0である場合には(ステップS73:0台)、センターサーバSAからコンテンツをダウンロードする(ステップS74)。
また、ステップS73において、制御部21は、コンテンツ保持ノードの台数が1である場合には(ステップS73:1台)、この1台のコンテンツ保持ノードからコンテンツの全部をダウンロードする(ステップS75)。
また、ステップS73において、制御部21は、コンテンツ保持ノードの台数が2以上である場合には(ステップS73:2台以上)、所定数のコンテンツ保持ノードからコンテンツの一部をダウンロードする(ステップS76)。このとき、制御部21は、コンテンツ保持ノードの台数が所定数に満たない場合には、例えば、全コンテンツ保持ノードからダウンロードする。次いで、ステップS77において、制御部21は、コンテンツの一部のダウンロードによる夫々の受信速度を算出する(ステップS77)。次いで、ステップS78において、制御部21は、受信速度が最速であったコンテンツ保持ノードからのダウンロードを継続し、コンテンツの全部をダウンロードする(ステップS78)。一方、制御部21は、それ以外のコンテンツ保持ノードからのダウンロードを中断する。
制御部21は、コンテンツのダウンロードを完了すると(ステップS74、S75又はS78の処理を終えたとき)、パブリッシュメッセージをルートノードに向けて送信する(ステップS79)。これにより、自ノードがコンテンツ保持ノードとして登録される。制御部21は、この処理を終えると、コンテンツ取得処理を終了させる。また、制御部21は、コンテンツ取得処理を終了させると、図10に示す処理を終了させる。
以上説明したように、本実施形態によれば、ノードNnの制御部21が、回線速度が速いほどコンテンツの取得順序が早くなるように設定されたパラメータ情報を受信する。また、制御部21が、受信したパラメータ情報に基づいて、自グループが抽選処理を行うタイミングであるか否かを判定する。このとき、制御部21が、自グループが抽選処理を行うタイミングである場合には、自グループの待機時間間隔で抽選処理を行う。そして、制御部21が、抽選処理で当選した場合には、コンテンツ保持ノードからコンテンツを取得する。制御部21は、このようにして、コンテンツの取得時期を決定する。そして、これにより、各グループに所属する各ノードNnがその待機時間間隔で到来する取得時期の何れかの取得時期にコンテンツを取得することのより各グループによりコンテンツが取得される。そして、各グループによるコンテンツの取得(抽選処理)が、パラメータ情報により示される取得順序が早いグループから順に開始される。
従って、他のノードNnにコンテンツを送信可能となるノードNnが早く増加する。よって、コンテンツの配信に要する時間を短縮させることができる。
また、制御部21が、パブリッシュメッセージをルートノードに向けて送信することによりインデックス情報を取得する。このようにして、制御部21は、コンテンツ保持ノードを検索する。そして、制御部21が、検索されたコンテンツ保持ノードからコンテンツを取得する。
従って、各ノードNnは、コンテンツ配信開始から早い段階で増加したコンテンツ保持ノードの中からコンテンツを取得することができる。よって、コンテンツの配信に要する時間を短縮させることができる。
また、制御部21が受信するパラメータ情報には、回線速度が速いグループほど多い値のアップロード可能台数がグループ毎に設定されている。そして、制御部21が、式2を計算することにより、コンテンツの取得に当選するノードhの台数を算出する。つまり、コンテンツ保持ノードが所属しているグループのアップロード可能台数が多いほど、当選するノードNnの台数が多くなる。
従って、コンテンツ保持ノード、すなわち、コンテンツを配信可能となったノードNnの台数の増加率を高めることができる。
また、制御部21が、パラメータ情報に従って取得順序が最初のグループから最後のグループまで順次前のグループに所属する全てのノードNnがコンテンツの取得に当選した後、次のグループに所属するノードNnにより抽選処理が行われるように、各グループの抽選処理のタイミングを特定する。そして、制御部21が、このタイミングで抽選処理を行うことにより、自ノードのコンテンツの取得時期が決定される。
従って、各グループの待機時間としては、そのグループの回線速度を考慮すれば良い。よって、各グループの待機時間を調節することにより、コンテンツの配信に要する時間を短縮させることができる。
なお、上記実施形態においては、アップロード可能台数を、回線速度に応じてグループ毎に設定していたが、これを固定値としても良い。つまり、全グループのアップロード可能台数が同値であっても良い。この場合のアップロード可能台数は、予め各ノードNnが保持していれば良く(コンテンツ取得プログラムにハードコーディングされていても良い)、パラメータ情報に含めなくても良い。
また、上記実施形態においては、前のグループに所属する全てのノードNnがコンテンツの取得に当選した後、次のグループに所属するノードNnにより抽選処理が行われるようにしていた。しかし、コンテンツの取得を開始する順序は、回線速度の速い順とする一方で、抽選処理を行う時期(コンテンツの取得時期)をグループ間で一部重複させても良い。この場合、コンテンツの取得時期が重複する期間については、グループ間でタイミングを合わせるため、期間が重複するグループの中で回線速度が最も遅いグループに待機時間を合わせる必要がある。
また、上記実施形態においては、各ノードNnは、パラメータ情報に基づいて抽選処理を行うことにより、コンテンツの取得時期を決定していた。しかし、これとは別の方法を用いても良い。例えば、グループ毎に、どのノードNnがどの順番でコンテンツを取得するかを、例えば、センターサーバSAが予め決定する。そして、センターサーバSAが、グループのコンテンツの取得順序(回線速度が速いグループほど早い)、各グループ内における各ノードの取得タイミング、待機時間等を設定したパラメータ情報を作成し、これを全ノードNnに配信する。各ノードNnは、自グループのコンテンツの取得順序、自グループより取得順序が前のグループの待機時間、各グループ内で何回コンテンツの取得が行われるか、によって、自グループのコンテンツの取得開始時期を求めることができる。そして、各ノードNnは、自グループ内における自ノードの順番と自グループの待機時間から、自ノードのコンテンツの取得時期を求めることができる。
また、グループ分けに用いられる回線速度としては、上り帯域幅の方を用いても良いし、下り帯域幅の方を用いても良い。また、上り帯域幅と下り帯域幅とを総合して用いても良い。
また、上記実施形態においては、抽選処理において例えば式2に示したように、アップロード可能台数、既に当選しているノードNnの台数等に基づいて当選台数を決定し、当選確率を算出していたが、これに限られるものではない。例えば、グループ毎に各ノードNnが予め決められた当選確率でランダムにコンテンツを取得するようにしても良い。ただし、全てのノードNnがコンテンツを取得しないとコンテンツの配信が完了しない。従って、当選確率が最終的に1になるようにするか、ある時点になったらグループ内で当選していない残り全てのノードNnにコンテンツを取得させるようにするなどの方法が必要である。
また、上記実施形態においては、ノードNnがコンテンツを取得する際、最初は複数のコンテンツ保持ノードからコンテンツの一部をダウンロードし、その後、受信速度が最速であるコンテンツ保持ノードからコンテンツの全部をダウンロードしていたが(図11に示すステップS76〜S78)、これに限られるものではない。例えば、最初から1台のコンテンツ保持ノードを選択し、選択したコンテンツ保持ノードからコンテンツを全部ダウンロードしても良い。ただし、前者の方法でダウンロードすることにより、各コンテンツ保持ノードの実際のアップロード数がアップロード可能台数に近づいていく。従って、アップロードする側の負荷がその回線速度に応じて分散される。よって、前者の方法をとれば、より好ましい。
また、上記実施形態においては、各グループに所属する各ノードNnが、待機時間毎に到来する各取得時期の何れかに夫々コンテンツを取得するようにしていたが、これに限られるものではない。例えば、所属する全ノードNnが同じ時期にコンテンツを取得するようにしても良い。この場合には、例えば、先ず、回線速度が最速であるグループ1に所属する全ノードNnがコンテンツを取得する。グループ1によるコンテンツの取得開始から、グループ1の待機時間が経過した後、次は、回線速度が2番目に速いグループ2に所属する全ノードNnがコンテンツを取得する。グループ2によるコンテンツの取得開始から、グループ2の待機時間が経過した後、次は、回線速度が3番目に速いグループ3に所属する全ノードNnがコンテンツを取得する。このようにして、次々にコンテンツが取得されるようにする。なお、一部のグループについては、全ノードNnが同じ時期にコンテンツを取得し、これとは別のグループについては、各ノードNnが待機時間毎に到来する各取得時期の何れかに夫々コンテンツを取得するようにしても良い。