JP4867845B2 - コンテンツ分散保存システム、コンテンツデータ取得方法、ノード装置、及びノード処理プログラム - Google Patents

コンテンツ分散保存システム、コンテンツデータ取得方法、ノード装置、及びノード処理プログラム Download PDF

Info

Publication number
JP4867845B2
JP4867845B2 JP2007209032A JP2007209032A JP4867845B2 JP 4867845 B2 JP4867845 B2 JP 4867845B2 JP 2007209032 A JP2007209032 A JP 2007209032A JP 2007209032 A JP2007209032 A JP 2007209032A JP 4867845 B2 JP4867845 B2 JP 4867845B2
Authority
JP
Japan
Prior art keywords
node
content
content data
data
predetermined
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007209032A
Other languages
English (en)
Other versions
JP2009043129A (ja
Inventor
建太郎 牛山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Brother Industries Ltd
Original Assignee
Brother Industries Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Brother Industries Ltd filed Critical Brother Industries Ltd
Priority to JP2007209032A priority Critical patent/JP4867845B2/ja
Publication of JP2009043129A publication Critical patent/JP2009043129A/ja
Application granted granted Critical
Publication of JP4867845B2 publication Critical patent/JP4867845B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたピアツーピア(Peer to Peer(P2P))型の通信システムの技術分野に関する。
この種のピアツーピア型の通信システムにおいて、コンテンツデータを複数のノード装置に分散配置(分散保存)させておくコンテンツ分散保存システムが知られており、これにより、対故障性やアクセスの分散性が高められている。このように分散保存されたコンテンツデータの所在は、例えば特許文献1に開示されるような分散ハッシュテーブル(以下、DHT(Distributed Hash Table)という)を利用して効率良く検索可能になっている。
そして、コンテンツ分散保存システムに参加しているノード装置は、所望のコンテンツデータの取得を望む場合、上記DHTを利用して当該コンテンツデータの所在を管理しているノード装置(ルートノード)に問い合わせる(クエリの送出による)ことにより、当該コンテンツデータを保存している他のノード装置に接続するためのネットワークアドレス情報を取得し、当該ネットワークアドレス情報に基づいて、上記他のノード装置に接続し当該コンテンツデータを取得することができるようになっている。
特開2006−197400号公報
ところで、一のノード装置が、一つのコンテンツデータを取得する場合に、当該コンテンツデータを保存している他の複数のノード装置夫々のネットワークアドレス情報を取得し、取得した各ネットワークアドレス情報に基づいて各他のノード装置に接続し、当該コンテンツデータを構成する複数の部分データの夫々を、当該各他のノード装置から分散して取得する方法が考えられる。
しかしながら、コンテンツ分散保存システムに参加しているノード装置は、例えば電源OFFにより脱退したり、ディスク容量の制限によりコンテンツデータを削除することがあるので、時間が経過すると、上記一のノード装置がコンテンツデータを構成する部分データを取得できなくなることが想定される。特に、データ容量(データサイズ)が大きなコンテンツデータの取得の場合、当該取得中(例えば、ダウンロード中、又はストリーミング再生中)に、これを保存しているノード装置が脱退する確率が高くなる。
このような場合、当該一のノード装置は、全てのコンテンツデータを保存しているコンテンツ提供サーバに接続して当該部分データを取得することも考えられるが、当該コンテンツ提供サーバの負荷が増大するという問題がある。このことは、コンテンツデータを保存しているノード装置が脱退しなくとも、ネットワークの負荷や当該ノード装置の負荷が増大した場合も同様である。
そこで、上記コンテンツデータを保存しているノード装置が脱退すること等を考慮し、当該コンテンツデータを取得するために接続対象となるノード装置を補充すべき条件を満たす場合、当該コンテンツデータの所在を管理しているノード装置(ルートノード)に再問合わせを行うことにより、上記ネットワークアドレス情報を補充的に取得することが考えられる。
しかしながら、このような再問合せを短い時間で何度も(頻繁に)行っても、同じ結果となる、つまり、前回取得したネットワークアドレス情報が再度取得される可能性が高く、無駄な検索処理、及び無駄なトラフィックを発生させてしまい問題である。
本発明は、このような問題等に鑑みてなされたものであり、コンテンツデータの所在を管理しているノード装置への再問合わせに当たって、無駄な検索処理、及び無駄なトラフィックを極力減らすこと等を可能にしたコンテンツ分散保存システム、コンテンツデータ取得方法、ノード装置、及びノード処理プログラムを提供することを課題とする。
上記課題を解決するために、請求項1に記載の発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたコンテンツ分散保存システムであり、複数のコンテンツデータが複数のノード装置に分散保存され、当該分散保存されているコンテンツデータの所在がコンテンツデータ毎に管理されるコンテンツ分散保存システムにおける前記ノード装置であって、前記所定のコンテンツデータを保存しているノード装置の所在を管理している管理装置に問い合わせることにより、当該コンテンツデータを保存している他のノード装置に接続するためのネットワークアドレス情報を、所定数分取得するアドレス情報取得手段と、前記取得した各前記ネットワークアドレス情報に基づいて各前記他のノード装置に接続し、前記所定のコンテンツデータを構成する複数の部分データの夫々を、当該各他のノード装置から分散して取得するコンテンツデータ取得手段と、前記取得した部分データをバッファメモリに蓄積させつつ再生順序にしたがって再生させる再生制御手段と、前記部分データの再生中に、少なくとも前回の管理装置への問い合わせ時刻及び現在時刻をパラメータとして基準値を算出する基準値算出手段と、前記算出された基準値が所定の条件を満たすか否かを判別する基準値判別手段と、を備え、前記アドレス情報取得手段は、前記算出された基準値が所定の条件を満たす場合に、前記管理装置に再度問い合わせることにより、前記所定のコンテンツデータを保存している他のノード装置に接続するためのネットワークアドレス情報を、所定数分取得することを特徴とする。
この発明によれば、他のノード装置から取得された、コンテンツデータを構成する部分データの再生中に、少なくとも前回の管理装置への問い合わせ時刻及び現在時刻をパラメータとして基準値を算出し、当該基準値が所定の条件を満たすか否かを判別し、当該条件を満たす場合に、前記管理装置に再度問い合わせることにより、前記所定のコンテンツデータを保存している他のノード装置に接続するためのネットワークアドレス情報を、所定数分取得するように構成したので、再問合せの結果が前回と結果となることを極力回避し、無駄な検索処理、及び無駄なトラフィックを極力減らすことができる。
請求項2に記載の発明は、請求項1に記載のノード装置において、前記部分データの再生中に、前記接続対象となる他のノード装置を補充すべき条件を満たすか否かを判別する補充条件判別手段を備え、前記基準値判別手段は、前記補充条件判別手段が条件を満たした場合に、前記算出された基準値が所定の条件を満たすか否かを判別することを特徴とする。
この発明によれば、上記コンテンツデータを構成する部分データを提供するノード装置の数を十分に確保でき、したがって、コンテンツ提供サーバに負担をかけずに、当該コンテンツデータをより効率良く取得しスムーズに再生することができる。
請求項3に記載の発明は、請求項1又は2に記載のノード装置において、前記基準値算出手段は、前回の管理装置への問い合わせ時刻から現在時刻までに前記所定のコンテンツデータを提供可能になったノード装置の数を前記基準値として算出し、前記基準値判別手段は、前記算出されたノード装置の数が所定数以上であるか否かを判別し、前記アドレス情報取得手段は、前記算出されたノード装置の数が所定数以上である場合に、前記管理装置に再度問い合わせることにより、前記所定のコンテンツデータを保存している他のノード装置に接続するためのネットワークアドレス情報を、所定数分取得することを特徴とする。
この発明によれば、前回の管理装置への問い合わせ時刻から現在時刻までに前記所定のコンテンツデータを提供可能になったノード装置の数を前記基準値として算出し、前記算出されたノード装置の数が所定数以上であるか否かを判別し、当該算出されたノード装置の数が所定数以上である場合に、前記管理装置に再度問い合わせるように構成したので、再問合せの結果が前回と結果となることを、より一層回避でき、無駄な検索処理、及び無駄なトラフィックを、より一層減らすことができる。
請求項4に記載の発明は、請求項1乃至3の何れか一項に記載のノード装置において、前記基準値算出手段は、前回の管理装置への問い合わせ時刻から現在時刻までの時間を前記基準値として算出し、前記基準値判別手段は、前記算出された時間が所定時間以上であるか否かを判別し、前記アドレス情報取得手段は、前記算出された時間が所定時間以上である場合に、前記管理装置に再度問い合わせることにより、前記所定のコンテンツデータを保存している他のノード装置に接続するためのネットワークアドレス情報を、所定数分取得することを特徴とする。
請求項5に記載のノード処理プログラムの発明は、コンピュータを、請求項1乃至4の何れか一項に記載のノード装置として機能させることを特徴とする。
請求項6に記載の発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたコンテンツ分散保存システムであり、複数のコンテンツデータが複数のノード装置に分散保存され、当該分散保存されているコンテンツデータの所在がコンテンツデータ毎に管理されるコンテンツ分散保存システムであって、前記ノード装置は、前記所定のコンテンツデータを保存しているノード装置の所在を管理している管理装置に問い合わせることにより、当該コンテンツデータを保存している他のノード装置に接続するためのネットワークアドレス情報を、所定数分取得するアドレス情報取得手段と、前記取得した各前記ネットワークアドレス情報に基づいて各前記他のノード装置に接続し、前記所定のコンテンツデータを構成する複数の部分データの夫々を、当該各他のノード装置から分散して取得するコンテンツデータ取得手段と、前記取得した部分データをバッファメモリに蓄積させつつ再生順序にしたがって再生させる再生制御手段と、前記部分データの再生中に、少なくとも前回の管理装置への問い合わせ時刻及び現在時刻をパラメータとして基準値を算出する基準値算出手段と、前記算出された基準値が所定の条件を満たすか否かを判別する基準値判別手段と、を備え、前記アドレス情報取得手段は、前記算出された基準値が所定の条件を満たす場合に、前記管理装置に再度問い合わせることにより、前記所定のコンテンツデータを保存している他のノード装置に接続するためのネットワークアドレス情報を、所定数分取得することを特徴とする。
請求項7に記載の発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたコンテンツ分散保存システムであり、複数のコンテンツデータが複数のノード装置に分散保存され、当該分散保存されているコンテンツデータの所在がコンテンツデータ毎に管理されるコンテンツ分散保存システムにおけるコンテンツデータ取得方法であって、前記ノード装置は、前記所定のコンテンツデータを保存しているノード装置の所在を管理している管理装置に問い合わせることにより、当該コンテンツデータを保存している他のノード装置に接続するためのネットワークアドレス情報を、所定数分取得する工程と、前記取得した各前記ネットワークアドレス情報に基づいて各前記他のノード装置に接続し、前記所定のコンテンツデータを構成する複数の部分データの夫々を、当該各他のノード装置から分散して取得するコンテンツデータ取得工程と、前記取得した部分データをバッファメモリに蓄積しつつ再生順序にしたがって再生する工程と、前記部分データの再生中に、少なくとも前回の管理装置への問い合わせ時刻及び現在時刻をパラメータとして基準値を算出する工程と、前記算出された基準値が所定の条件を満たすか否かを判別する工程と、を備え、前記アドレス情報取得工程においては、前記算出された基準値が所定の条件を満たす場合に、前記管理装置に再度問い合わせることにより、前記所定のコンテンツデータを保存している他のノード装置に接続するためのネットワークアドレス情報を、所定数分取得することを特徴とする。
本発明によれば、他のノード装置から取得された、コンテンツデータを構成する部分データの再生中に、少なくとも前回の管理装置への問い合わせ時刻及び現在時刻をパラメータとして基準値を算出し、当該基準値が所定の条件を満たすか否かを判別し、当該条件を満たす場合に、前記管理装置に再度問い合わせることにより、前記所定のコンテンツデータを保存している他のノード装置に接続するためのネットワークアドレス情報を、所定数分取得するように構成したので、再問合せの結果が前回と結果となることを極力回避し、無駄な検索処理、及び無駄なトラフィックを極力減らすことができる。
以下、本発明の最良の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ分散保存システムに本発明を適用した場合の実施形態である。
1.コンテンツ分散保存システムの構成等
始めに、図1等を参照して、本実施形態に係るコンテンツ分散保存システムの概要構成等について説明する。
図1は、本実施形態に係るコンテンツ分散保存システムにおける各ノード装置の接続態様の一例を示す図である。
図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が構築されている。なお、図1の例におけるネットワーク8には、データ(パケット)を転送するためのルータが、適宜挿入されているが図示を省略している。
このようなネットワーク8には、複数のノード装置(以下、「ノード」という)Nn(n=1,2,3・・・の何れか)がルータを介して接続されている。また、各ノードNnには、固有の製造番号およびIP(Internet Protocol)アドレスが割り当てられている。そして、本実施形態に係るコンテンツ分散保存システムSは、これらのノードNnのうち、図1の上部枠100内に示すように、何れか複数のノードNnの参加により形成されるピアツーピア方式のネットワークシステムとなっている。
なお、図1の上部枠100内に示すネットワーク9は、既存のネットワーク8を用いて形成された仮想的なリンクを構成するオーバーレイネットワーク9(論理的なネットワーク)である。かかるオーバーレイネットワーク9は、特定のアルゴリズム、例えば、DHTを利用したアルゴリズムにより実現される。
そして、コンテンツ分散保存システムS(言い換えれば、オーバーレイネットワーク9)に参加している各ノードNnには、所定桁数からなる固有の識別情報であるノードIDが割り当てられている。また、当該ノードIDは、例えば、各ノードNnに個別に割り当てられたIPアドレス或いは製造番号を共通のハッシュ関数(例えば、SHA−1等)によりハッシュ化した値(例えば、bit長が160bit)であり、一つのID空間に偏りなく分散して配置されることになる。
なお、コンテンツ分散保存システムSへの参加は、参加していないノードNn(例えば、ノードN8)が、参加している任意のノードNn(例えば、当該システムSに常時参加しているコンタクトノード)に対して参加要求を示す参加メッセージを送信することによって行われる。
また、各ノードNnは、夫々、DHTを用いたルーティングテーブルを保持している。このルーティングテーブルは、コンテンツ分散保存システムS上における各種メッセージの転送先を規定しており、具体的には、ID空間内で適度に離れたノードNnのノードID、IPアドレス及びポート番号を含むノード情報が複数登録されている。なお、IPアドレス及びポート番号は、ネットワークアドレス情報の一例である。
コンテンツ分散保存システムSに参加している1台のノードNnは、該システムSに参加している全てのノードNnのうち、必要最低限のノードNnのノード情報をルーティングテーブルに登録しておき、ノード情報を知らない(記憶していない)ノードNnについては、各ノードNn間で互いに各種メッセージを転送し合って届けてもらうようになっている。
このようなDHTを用いたルーティングテーブルについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
ところで、コンテンツ分散保存システムSにおいては、内容の異なる様々なコンテンツ(例えば、映画や音楽等)データ(実際には、コンテンツデータの複製であるレプリカ)所定のファイル形式で複数のノードNnに分散して保存(格納)されている。
例えば、ノードN5、ノードN8、及びノードN12には、タイトルがXXXの映画のコンテンツデータ(ファイル)が保存されており、一方、ノードN3及びノードN6には、タイトルがYYYの映画のコンテンツデータが保存されるというように、複数のノードNn(以下、「コンテンツ保持ノード」という)に分散されて保存される。
また、これらのコンテンツデータには、夫々、コンテンツ名(タイトル)及びコンテンツID(コンテンツ毎に固有の識別情報)等の情報が付加されている。このコンテンツIDは、例えば、コンテンツ名+任意の数値(或いは、当該コンテンツデータの先頭数バイトでも良い)が、上記ノードIDを得るときと共通のハッシュ関数によりハッシュ化されて生成される(ノードIDと同一のID空間に配置)。或いは、システム管理者が、コンテンツ毎に一意のID値(ノードIDと同一ビット長)を付与しても良い。この場合は、コンテンツ名とそのコンテンツIDの対応が書かれたコンテンツカタログ情報が、全ノードNnに配布される。
また、このように分散保存されているコンテンツデータの所在、つまり、当該コンテンツデータを保存したノードNnのノード情報と当該コンテンツデータに対応するコンテンツID等の組が含まれるインデックス情報が、当該コンテンツデータの所在を管理しているノードNn(以下、「ルートノード」、又は「コンテンツデータ(コンテンツID)のルートノード」という、管理装置の一例)等により記憶(インデックスキャッシュに記憶)、管理されるようになっている。つまり、コンテンツデータを保存しているコンテンツ保持ノードのノード情報は、他のノードNnからの問い合わせに応じて提供可能なようにルートノードにより管理されている。
例えば、タイトルがXXXの映画のコンテンツデータについてのインデックス情報は、そのコンテンツ(コンテンツID)のルートノードであるノードN4により管理され、タイトルがYYYの映画のコンテンツデータについてのインデックス情報は、そのコンテンツ(コンテンツID)のルートノードであるノードN7により管理される。また、このようなルートノードは、例えば、コンテンツIDと最も近い(例えば、上位桁がより多く一致する)ノードIDを有するノードNnであるように定められる。
そして、あるノードNnのユーザが、所望するコンテンツデータを取得したい場合、当該コンテンツデータの取得を望むノードNn(以下、「ユーザノード」という)は、当該ユーザにより選択されたコンテンツデータのコンテンツID及び自己のIPアドレス等を含むコンテンツ所在問合せ(検索)メッセージ(クエリ)を生成し、これを自己のDHTを用いたルーティングテーブルにしたがって他のノードNnに対して送出する。つまり、ユーザノードは、コンテンツ所在問合せ(検索)メッセージを、ルートノードに向けて(ルートノード宛に)送出する(つまり、ルートノードにコンテンツデータの所在を問い合わせる)。これにより、コンテンツ所在問合せ(検索)メッセージは、コンテンツIDをキーとするDHTルーティングによって最終的にルートノードに到着することになる。
なお、各ノードNnにおいてユーザにより選択されるべきコンテンツデータのコンテンツ名及びコンテンツID等の属性情報は、例えばコンテンツ提供サーバSAから全てのノードNnに配信されるコンテンツカタログ情報に記述されている。また、上記コンテンツ所在問合せ(検索)メッセージに含まれるコンテンツIDは、ユーザノードによって、コンテンツ名が上記共通のハッシュ関数によりハッシュ化されて生成されるようにしても良い。なお、DHTルーティングについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
上記コンテンツ所在問合せ(検索)メッセージを受信したルートノードは、これに含まれるコンテンツIDに対応するインデックス情報をインデックスキャッシュから取得して、当該インデックス情報を、該コンテンツ所在問合せメッセージの送信元であるユーザノードに対して返信する。こうしてインデックス情報を取得したユーザノードは、当該インデックス情報に含まれるあるコンテンツ保持ノードのIPアドレス等に基づいて当該コンテンツ保持ノードに接続して、コンテンツ送信要求メッセージを送信(コンテンツデータの要求)し、そこから当該コンテンツデータを取得することが可能になる。なお、上記ユーザノードは、コンテンツ所在問合せメッセージがルートノードに辿り着くまでの間に、当該ルートノードと同じインデックス情報をキャッシュしているキャッシュノードから当該インデックス情報を取得することもできる。
ここで、本実施形態では、上記インデックス情報には、ユーザノードにおいて決定された数(複数)分のコンテンツ保持ノードのIPアドレス等を含むノード情報が含まれるようになっている。そして、ユーザノードは、各IPアドレス等に基づいて各コンテンツ保持ノードに接続し、上記コンテンツデータを構成する複数の部分データの夫々を、上記コンテンツ送信要求メッセージの送信(部分データの要求)により、当該各コンテンツ保持ノードから分散して(重複しないように)取得し、当該部分データをバッファメモリに蓄積しつつ再生順序(部分データの再生順序)にしたがって再生(ストリーミング再生)するようになっている。
図2は、コンテンツデータを構成する複数の部分データの夫々が、当該各コンテンツ保持ノードから分散して取得される様子を示す図である。図2の例では、コンテンツデータC1は、例えば所定時間毎に区切られ、全12個の部分データD1〜D12から構成されるようになっている。そして、図2(A)に示すように、例えば部分データD1がノードN5から、部分データD2がノードN8から、部分データD3がノードN12から、夫々取得され、その後、図2(B)に示すように、例えば部分データD4がノードN8から、部分データD5がノードN5から、部分データD6がノードN12から、夫々取得されている。このようにして、ユーザノードであるノードN1は、各部分データを、複数のノードNnから順次取得していくことになる。
なお、ユーザノードが、コンテンツ保持ノードから取得したコンテンツデータを例えば他のノードNnに提供可能にハードディスクに記憶保存した場合、当該ユーザノードは、当該コンテンツデータを保存したことをそのルートノードに知らせるために(言い換えれば、該システムSに参加している他のノードNnに対して公開するために)、そのコンテンツデータのコンテンツID及び自己のノード情報が含まれるパブリッシュ(登録通知)メッセージを生成し、該パブリッシュメッセージを、そのルートノードに向けて(ルートノード宛に)送出する。
これにより、パブリッシュメッセージは、コンテンツ所在問合せ(検索)メッセージと同じように、コンテンツIDをキーとするDHTルーティングによってルートノードに到着することになる。そして、該ルートノードは、受信したパブリッシュメッセージに含まれるノード情報及びコンテンツIDの組を含むインデックス情報を登録(インデックスキャッシュ領域に記憶)することになる。こうして、上記ユーザノードは、新たに、上記コンテンツデータを保持するコンテンツ保持ノードとなる。
なお、上記パブリッシュメッセージに含まれるノード情報及びコンテンツIDの組を含むインデックス情報は、ルートノードに至るまでの転送経路におけるキャッシュノードにおいても登録(キャッシュ)される。
2.ノードNnの構成及び機能等
次に、図3を参照して、ノードNnの構成及び機能について説明する。
図3は、ノードNnの概要構成例を示す図である。
各ノードNnは、図3に示すように、演算機能を有するCPU,作業用RAM,各種データおよびプログラムを記憶するROM等から構成されたコンピュータとしての制御部11と、各種データ(例えば、コンテンツデータ、インデックス情報、DHT等)及び各種プログラム等を記憶保存(格納)するためのHD等から構成された記憶部12と、受信されたコンテンツデータを一時蓄積するバッファメモリ13と、コンテンツデータに含まれるエンコードされたビデオデータ(映像情報)およびオーディオデータ(音声情報)等をデコード(データ伸張や復号化等)するデコーダ部14と、当該デコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部15と、当該映像処理部15から出力されたビデオ信号に基づき映像表示するCRT,液晶ディスプレイ等の表示部16と、上記デコードされたオーディオデータをアナログオーディオ信号にD (Digital)/A(Analog)変換した後これをアンプにより増幅して出力する音声処理部17と、当該音声処理部17から出力されたオーディオ信号を音波として出力するスピーカ18と、ネットワーク8を通じて他のノードNnや各種サーバとの間の情報の通信制御を行うための通信部20と、ユーザからの指示を受け付け当該指示に応じた指示信号を制御部11に対して与える入力部(例えば、キーボード、マウス、或いは、操作パネル等)21と、を備えて構成され、制御部11、記憶部12、バッファメモリ13、デコーダ部14、通信部20、及び入力部21はバス22を介して相互に接続されている。なお、ノードNnとしては、パーソナルコンピュータ、STB(Set Top Box)、或いは、TV受信機等を適用可能である。また、記憶部12には、コンテンツ分散保存システムSに参加する際のアクセス先となるコンタクトノードのIPアドレス及びポート番号、及び全てのコンテンツデータを保存しているコンテンツ提供サーバのIPアドレス及びポート番号等が記憶されている。
このような構成において、制御部11は、CPUが記憶部12等に記憶されたプログラム(本発明のノード処理プログラムを含む)を読み出して実行することにより、全体を統括制御し、コンテンツ分散保存システムSへの参加により上述したユーザノード、中継ノード、ルートノード、キャッシュノード、及びコンテンツ保持ノードの少なくとも何れか一つのノードとしての処理を行うようになっており、ユーザノードとしての処理を実行する場合には、本発明におけるアドレス情報取得手段、コンテンツデータ取得手段、再生制御手段、基準値算出手段、基準値判別手段及び補充条件判別手段等として機能するようになっている。なお、上記ノード処理プログラムは、例えば、ネットワーク8上の所定のサーバからダウンロードされるようにしてもよいし、例えば、CD−ROM等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
具体的には、ユーザノードの制御部11は、上述したように、所定(例えばユーザにより選択された)のコンテンツデータを取得するために接続対象となる他のノードNn、つまり、コンテンツ保持ノードの数を決定する。このコンテンツ保持ノードの数は、取得すべきコンテンツデータのビットレート(例えば単位時間当たりに処理(デコード等の再生処理)されるデータ量(bps))、再生時間、及びデータ容量(コンテンツサイズ)の少なくとも何れか一つに基づいて決定される。例えば、ビットレートが高いコンテンツデータ、再生時間が長いコンテンツデータ、及びデータ容量が大きいコンテンツデータは、より多くのコンテンツ保持ノードが確保されるように、当該コンテンツ保持ノードの数が多く決定される。
そして、ユーザノードの制御部11は、上記コンテンツデータのルートノードに問い合わせることにより、当該コンテンツデータを保存しているコンテンツ保持ノードに接続するためのIPアドレス等を含むノード情報を、上記決定された数分取得する。続いて、ユーザノードの制御部11は、取得した各IPアドレス等に基づいて各コンテンツ保持ノードに接続し、上記コンテンツデータを構成する複数の部分データの夫々を、図2に示すように、部分データの要求により、当該各コンテンツ保持ノードから分散して取得し、当該部分データをバッファメモリ13に蓄積させつつ再生順序にしたがって再生(ストリーミング再生)させる制御を行う。かかる再生は、当該コンテンツデータを構成する部分データの受信(取得)開始から、再生に必要なバッファ量(バッファリング量)がバッファメモリ13に蓄積されたときに開始される。このバッファ量は、コンテンツデータの再生が途切れることがないよう十分な量に設定される。こうして、コンテンツデータは、デコーダ部14、映像処理部15、表示部16、音声処理部17、及びスピーカ18を通じて再生出力される。
なお、各部分データには、コンテンツデータにおける位置や順番を示す情報が付加されるようになっており、これにより、制御部11は、各部分データの再生順序を判断することができる。
更に、ユーザノードの制御部11は、上記コンテンツデータの再生中(部分データの再生中)に、接続対象となるコンテンツ保持ノードを補充すべき条件を満たすか否かを判別するようになっている。当該条件が満たされる場合、ユーザノードの制御部11は、上記ルートノードに再度問い合わせることにより、上記再生中のコンテンツデータを保存しているコンテンツ保持ノードに接続するためのIPアドレス等を含むノード情報を所定数分取得するようになっている。ここで、「所定数」は、固定的な数であっても良いが、例えば、再生中のコンテンツデータのビットレート、再生時間、及びデータ容量の少なくとも何れか一つに基づいて再度決定されるようにすることが望ましい。このとき、例えば、当該再生中のコンテンツデータの残りの取得データ量又は残りの再生時間に基づいて、コンテンツ保持ノードの数を再度決定するように構成すれば、無駄無くコンテンツ保持ノードを確保することができる。
また、上記「コンテンツ保持ノードを補充すべき条件」としては、一例として、下記(1)〜(6)が挙げられる。
(1)取得されたノード情報に対応するコンテンツ保持ノードのうち接続(セッション確立)中にある又は接続可能なコンテンツ保持ノードの数が所定数以下になったこと。図4は、コンテンツ保持ノードの数(ノード情報の数)と、ルートノードへの問い合せのタイミングとの関係の一例を示す図である。図4の例では、ルートノードへの再生前の最初の問い合せ後、確保しているコンテンツ保持ノードの数が減少(例えばコンテンツ分散保存システムSからの脱退による)していき、当該数が予め定められていた最低確保数(所定数)以下になった(例えば、下回った)場合に、上記条件が満たされたと判断され、ルートノードへの再問い合わせが行われている。
ここで、ユーザノードは、例えば取得されたノード情報に対応するコンテンツ保持ノードの全てに対してセッションを確立し、当該セッションが切断されたら(または一定時間応答がなかったら)、コンテンツ保持ノードが1つ減ったと認識することができる。この場合、セッションの切断に対して直ちに対応することができる。
或いは、ユーザノードは、例えば取得されたノード情報に対応するコンテンツ保持ノードの全てではなく、それより少ない所定数のコンテンツ保持ノードとセッションを確立し、当該セッションが切断されたら(または一定時間応答がなかったら)、コンテンツ保持ノードが1つ減ったと認識するようにしても良い。当該ユーザノードは、当該セッションを確立しているコンテンツ保持ノードが減った場合、別の(予備の)コンテンツ保持ノード(未だセッションを確立していないもの)とセッションを確立し、当該セッションが切断されたら順々に別の(予備の)コンテンツ保持ノードとセッション確立し、残りのコンテンツ保持ノードの数が所定数を下回ったときに再問い合わせを行うようにする。この場合、実際は、予備のコンテンツ保持ノードが既に脱退している可能性があるが、メモリを節約できる。
(2)コンテンツ保持ノードから取得している部分データの受信速度(伝送速度)が所定速度以下になったこと。例えば、ルートノードへの再生前の最初の問い合せ後、コンテンツ保持ノードから取得(受信)している部分データの合計受信速度(合計伝送速度)が減少(例えば、当該コンテンツ保持ノードの負荷やネットワーク負荷の増加による)していき、当該速度が予め定められていた最低速度(所定速度)以下になった(例えば、下回った)場合に、上記条件が満たされたと判断され、ルートノードへの再問い合わせが行われる。
(3)バッファメモリ13における全部分データのバッファ量が所定量以下になったこと。図5は、バッファメモリ13におけるバッファ量と、ルートノードへの問い合せのタイミングとの関係の一例を示す図である。図5の例では、ルートノードへの再生前の最初の問い合せ後、バッファ量が減少(例えば、上記(2)の受信速度の低下による)していき、当該バッファ量が予め定められていた最低バッファ量(所定量)以下になった(例えば、下回った)場合に、上記条件が満たされたと判断され、ルートノードへの再問い合わせが行われている。
(4)接続されたコンテンツ保持ノードに対する部分データの要求から所定時間が経過しても応答が無いこと。図6は、部分データの要求から所定時間が経過しても応答が無い様子を示す図である。図6の例では、ノードN5及びノードN8からは応答があったものの、ノードN12からは、要求後所定時間経過しても応答が無く、かかる場合、タイムアウトとなり、上記条件が満たされたと判断され、ルートノードへの再問い合わせが行われる。ただし、この条件が満たされた場合において、例えば他のコンテンツ保持ノード(ノードN5及びノードN8)の何れかが空き状態、つまり、部分ノードの送信中でない場合には、当該空き状態にあるコンテンツ保持ノードに対して部分データの要求をできるので、ルートノードへの再問い合わせが行われないように構成しても良い。
(5)取得された全てのノード情報に対応する全てのコンテンツ保持ノードから夫々の部分データの取得中になったこと。例えば、図2(A)に示すように、部分データD1がノードN5から、部分データD2がノードN8から、部分データD3がノードN12から、夫々取得中にあり、しかもそれらの部分データの伝送速度が遅いと、次の部分データD4の要求待ち状態になる。このような要求待ち状態を無くすために、全てのコンテンツ保持ノードから部分データの取得中(言い換えれば、全てのコンテンツ保持ノードが部分データの送信中)になった場合に、上記条件が満たされたと判断され、ルートノードへの再問い合わせが行われる。
(6)取得されたノード情報に対応するコンテンツ保持ノードのうち、予め定められた予備のコンテンツ保持ノードの数が所定数以下になったこと。例えば、6つのコンテンツ保持ノードが確保され、そのうち3つのコンテンツ保持ノードに対して、図2に示すように、部分データの要求が行われる(つまり、予備のコンテンツ保持ノードが3つ確保される)場合において、例えば当該コンテンツ保持ノードが既に脱退しており応答がない場合(或いは応答が遅い場合)に、予備のコンテンツ保持ノードが使用されこれに部分データの要求が行われることになる。その使用により予備のコンテンツ保持ノードの数が最低確保数(所定数)以下になった(例えば、下回った)場合に、上記条件が満たされたと判断され、ルートノードへの再問い合わせが行われる。最低確保数の設定により、例えば予備のコンテンツ保持ノードが一つでも使用された場合、或いは全ての予備のコンテンツ保持ノードが使用された場合に、ルートノードへの再問い合わせを行うことができる。
ここで、上記条件が満たされることによりルートノードへの再度問い合わせが頻繁に行われても、同じ結果となる場合があるので、同じ結果となる、つまり、前回取得したノード情報が再度取得される可能性が高い。
そこで、本実施形態においては、ユーザノードの制御部11は、少なくとも前回のルートノードへの問い合わせ時刻及び現在時刻をパラメータとして基準値を算出し、当該算出された基準値が所定の条件を満たすか否かを判別する。
例えば、前回のルートノードへの問い合わせ時刻から現在時刻までの経過時間が基準値として算出される。又は、前回のルートノードへの問い合わせ時刻から現在時刻までに上記コンテンツデータを提供可能になった(例えば、コンテンツ分散保存システムSに新たに参加、又は当該コンテンツデータを新たに保存することによる)コンテンツ保持ノードの数が基準値として算出される。
そして、当該制御部11は、算出した基準値が所定の条件を満たす場合(例えば、当該基準値が閾値以上のとき)にはじめて、ルートノードに再度問い合わせることにより、上記再生中のコンテンツデータを保存しているコンテンツ保持ノードに接続するためのIPアドレス等を含むノード情報を所定数分取得するようになっている。
3.コンテンツ分散保存システムSの動作
次に、図7乃至図11を参照して、コンテンツ分散保存システムSの動作について説明する。
図7は、ノードNnの制御部11におけるメイン処理を示すフローチャートである。また、図8は、図7における検索コンテンツ保持ノード数決定処理の一例を示すフローチャートである。図9は、検索コンテンツ保持ノード数決定処理において参照されるテーブルの一例を示す図である。図10は、図7における再問い合せ処理の一例を示すフローチャートである。図11は、図7におけるメッセージ受信処理の一例を示すフローチャートである。
図7に示す処理は、任意のノードNnにおいて例えば電源ONになった場合に開始され、コンテンツ分散保存システムSへの参加処理が実行される(ステップS1)。この参加処理においては、当該ノードNnの制御部11は、記憶部12からコンタクトノードのIPアドレス及びポート番号を取得し、これに基づきコンタクトノードにネットワーク8を介して接続し、参加要求を示す参加メッセージ(自己のノードID及びノード情報等を含む)を送信する。これにより、当該ノードNnには、当該システムSに参加している他のノードNnからルーティングテーブルが送信されることになり、受信したルーティングテーブルに基づき自己のルーティングテーブルを生成し、コンテンツ分散保存システムSに参加が完了することになる。
こうしてコンテンツ分散保存システムSへの参加処理が完了すると、制御部11は、電源OFFの指示(例えば、ユーザから入力部21を介した電源OFF操作指示)があった場合には(ステップS2:YES)、当該処理を終了する。一方、電源OFFの指示がない場合には(ステップS2:NO)、制御部11は、コンテンツデータが再生中であるか否かを判別する(ステップS3)。コンテンツデータが再生中である場合、つまり、受信されバッファリングされている部分データが再生中である場合には(ステップS3:YES)、ステップS10に進み、コンテンツデータが再生中でない場合には(ステップS3:NO)、ステップS4に進む。
ステップS4では、制御部11は、コンテンツ再生指示があったか否かを判別する。かかるコンテンツ再生指示は、例えば、ユーザが入力部21を操作して、コンテンツカタログ情報の中から所望のコンテンツデータのコンテンツ名を選択し再生指示をすることよりなされる。コンテンツ再生指示があった場合には(ステップS4:YES)、ステップS5に進み、コンテンツ再生指示がない場合には(ステップS4:NO)、ステップS17に進む。
ステップS5では、制御部11は、前回の再問い合せ時刻Tqを“0”にセット(リセット)し、新しく発見(検索)されたコンテンツ保持ノードの追加数Nnewを“0”にセット(リセット)する。
ステップS6では、制御部11は、検索コンテンツ保持ノード数決定処理を行い、再生指示された取得すべきコンテンツデータのビットレート、再生時間、及びデータ容量の少なくとも何れか一つに基づいてコンテンツ保持ノードの数を決定する。
例えば、図8に示すように、制御部11は、ビットレート、再生時間、及びデータ容量のうちの何れかを判別パラメータとし(どれを判別パラメータとするかは予め設定)、その値を取得する(ステップS51)。そして、制御部11は、当該判別パラメータの値が、例えば図9(A)に示すテーブルにおける判別パターンAに該当するか(例えば、判別パラメータがビットレートである場合、当該コンテンツデータのビットレートが2Mbps以上であるか)否かを判別する(ステップS52)。そして、判別パターンAに該当する場合には(ステップS52:YES)、制御部11は、コンテンツ保持ノードの数をK1(例えば10個)に決定し(ステップS53)、図7の処理に戻る。
一方、判別パターンAに該当しない場合には(ステップS52:NO)、制御部11は、上記判別パラメータの値が、例えば図9(A)に示すテーブルにおける判別パターンBに該当するか(例えば、判別パラメータがビットレートである場合、当該コンテンツデータのビットレートが500K以上2Mbps未満であるか)否かを判別する(ステップS54)。そして、判別パターンBに該当する場合には(ステップS54:YES)、制御部11は、コンテンツ保持ノードの数をK2(例えば5個)に決定し(ステップS55)、図7の処理に戻る。一方、判別パターンBに該当しない場合(例えば図9(A)に示すテーブルにおける判別パターンCに該当)には(ステップS54:NO)、制御部11は、コンテンツ保持ノードの数をK3(例えば3個)に決定し(ステップS56)、図7の処理に戻る。
次に、図7に示すステップS7では、制御部11は、上記再生指示された取得すべきコンテンツデータのコンテンツID、及び上記決定されたコンテンツ保持ノードの数の指定等を含むコンテンツ所在問合せメッセージ(クエリ)を、当該コンテンツデータのルートノードに向けて送出することにより(つまり、当該コンテンツデータのルートノードに問い合わせることにより)、上記決定された数分のコンテンツ保持ノードのノード情報を含むインデックス情報を取得する。
そして、制御部11は、取得されたインデックス情報に含まれるコンテンツ保持ノードのノード情報を、RAM等に記憶されたコンテンツ保持ノードリストに登録し、上記コンテンツ保持ノードの総数Nh(コンテンツ保持ノードリストに登録されている数)に加算する(ステップS8)。
続いて、制御部11は、取得したインデックス情報(コンテンツ保持ノードリスト)に含まれるノード情報に基づきコンテンツ保持ノードに接続しコンテンツ送信要求メッセージを送信し(コンテンツ要求し)、一定時間待機する(ステップS9)。当該コンテンツ送信要求メッセージにより、複数のコンテンツ保持ノードから、コンテンツデータの各部分データがストリーム配信され、通信部20を介してバッファメモリ13にバッファリングされることになる。
なお、問い合わせたルートノードに、コンテンツ保持ノードのノード情報が登録されていない場合、ステップS8及びS9の処理は行われず、ステップS10に進むことになる。
ステップS10では、コンテンツ保持ノードのノード情報を含むインデックス情報を取得しているか否かを判別し、取得していない場合には(ステップS10:NO)、ステップS11に進み、取得している場合には(ステップS10:YES)、ステップS12に進む。
ステップS11では、制御部11は、上記問い合わせたルートノードからコンテンツ保持ノードのノード情報を得られなかったので、コンテンツ提供サーバに接続し、コンテンツ送信要求メッセージを送信し(コンテンツ要求し)、ステップS15に進む。これにより、コンテンツ提供サーバからコンテンツデータがストリーム配信され、通信部20を介してバッファメモリ13にバッファリングされることになる。
一方、ステップS12では、制御部11は、再問い合せ処理を行う。当該再問い合せ処理の詳細は後述する。
ステップS13では、制御部11は、再問い合せ処理により取得されたインデックス情報に含まれるコンテンツ保持ノードのノード情報のうち、新たに取得された(つまり、未だコンテンツ保持ノードリストに登録されていない)ノード情報を、上記コンテンツ保持ノードリストに登録し、上記コンテンツ保持ノードの総数Nh及び追加数Nnewに、新たに登録されたノード情報の数を夫々加算し、ステップS14に進む。
ステップS14では、制御部11は、再問い合せ処理により取得されたインデックス情報(コンテンツ保持ノードリスト)に含まれるノード情報に対応するコンテンツ保持ノードのうち、未だコンテンツ送信要求メッセージを送信していない(コンテンツ要求をしていない)コンテンツ保持ノードに接続しコンテンツ送信要求メッセージを送信し、ステップS15に進む。これにより、そのコンテンツ保持ノードから、コンテンツデータの各部分データがストリーム配信され、通信部20を介してバッファメモリ13にバッファリングされることになる。ただし、当該コンテンツ保持ノードに対して接続(セッション確立)を試みたが応答がなく接続に失敗した場合には、制御部11は、当該コンテンツ保持ノードのノード情報をコンテンツ保持ノードリストから削除する。
ここで、上記ステップS12における再問い合せ処理の詳細について説明する。
当該再問い合せ処理においては、例えば、図10に示すように、制御部11は、上記(1)〜(6)で挙げられた何れかのコンテンツ保持ノードを補充すべき条件(どれを条件とするかは予め設定)を満たすか否かを判別する(ステップS101)。そして、当該条件が満たされる場合(ステップS101:YES)、制御部11は、ステップS102に進み、当該条件が満たされない場合(ステップS101:NO)、図7に示す処理に戻る。
なお、この再問い合せ処理において、ステップS101の処理が行われることなく、ステップS109から開始されるように構成しても良い。
ステップS102では、制御部11は、後述する、単位時間当たりの参加率Pを含む統計情報の記録があるか(つまり、統計情報が記憶されているか)否かを判別し、統計情報の記録がない場合には(ステップS102:NO)、ステップS103に進み、統計情報の記録がある場合には(ステップS102:YES)、ステップS104に進む。
ステップS103では、制御部11は、前回の再問い合せ時刻Tqから現在時刻までの経過時間(「現在時刻」−Tq)が所定時間以上であるか否かを判別し、所定時間以上である場合には(ステップS103:YES)、ステップS106に進み、所定時間以上でない場合には(ステップS103:NO)、図7に示す処理に戻る。ここで、かかるステップS103の処理は、統計情報の記録がない間だけ行われるものである。また、「所定時間」には、例えば30秒、又は1分など適当な時間が設定される。これにより、前回のルートノードへの再問い合わせから間もない頃は、同じ結果となる可能性が高いため、再問い合わせしないようにされる。
ステップS104では、制御部11は、単位時間当たりの参加率Pの平均値Pavrを算出する。なお、統計情報に、一つの参加率Pのみが含まれている場合、当該参加率Pが平均値Pavrとなる。
次いで、制御部11は、前回の再問い合わせから現在時刻までのコンテンツ保持ノードの推定参加数(Pavr×Nh×(「現在時刻」−Tq))が所定数以上であるか否かを判別し(ステップS105)、所定数以上である場合には(ステップS105:YES)、ステップS106に進み、所定時間以上でない場合には(ステップS105:NO)、図7に示す処理に戻る。ここで、「Pavr×Nh」は、単位時間当たりのコンテンツ保持ノードの推定参加数を意味する。また、前回の再問い合わせから現在時刻までのコンテンツ保持ノードの推定参加数は、前回の再問い合わせから現在時刻までに、例えば当該コンテンツデータを保存、又は当該コンテンツデータを保存している状態で当該システムSに参加することにより、新たなコンテンツ保持ノードがルートノードに登録された数に相当する。そして、「所定数」には、再問い合わせする価値がある数(例えば1〜3)が設定される。
ステップS106では、制御部11は、前回の再問い合せ時刻Tq=0であるか否かを判別し、0でない場合には(ステップS106:NO)、ステップS107に進み、0である場合には(ステップS106:YES)、ステップS108に進む。
ステップS107では、制御部11は、単位時間当たりの参加率Pを算出(P=(Nnew÷Nh)÷(「現在時刻」−Tq))し、これを統計情報として記憶し、ステップS108に進む。ここで、「Nnew÷Nh」は、前回の再問い合わせから増加(コンテンツ保持ノードとして新たに参加)したコンテンツ保持ノードの割合(参加率)を意味する。このように算出される参加率Pは、当該ステップS107が行われる度に統計情報中に登録されることになる。
ステップS108では、制御部11は、前回の再問い合せ時刻Tqを「現在時刻」にセットし、コンテンツ保持ノードの追加数Nnewを“0”にセット(リセット)する。
次いで、制御部11は、ステップS6と同じように、図8に示すような検索コンテンツ保持ノード数決定処理を行い、コンテンツ保持ノードの数を決定する(ステップS109)。
ただし、この場合、上述したように、再生中のコンテンツデータの残りの取得データ量又は残りの再生時間に基づいて、コンテンツ保持ノードの数を再度決定することが望ましい。例えば、図8に示すステップS52において、制御部11は、残りの再生時間、及び残りのデータ容量のうちの何れかを判別パラメータとし(どれを判別パラメータとするかは予め設定)、その値を取得する。そして、上記ステップS52において、制御部11は、当該判別パラメータの値が、例えば図9(B)に示すテーブルにおける判別パターンAに該当するか(例えば、判別パラメータが残りの再生時間である場合、当該コンテンツデータの残りの再生時間が2時間以上であるか)否かを判別する。そして、判別パターンAに該当しない場合には、上記ステップS54において、上記判別パラメータの値が、例えば図9(B)に示すテーブルにおける判別パターンBに該当するか(例えば、判別パラメータが残りの再生時間である場合、当該コンテンツデータの残りの再生時間が30分以上2時間未満であるか)否かを判別する。このようにして、コンテンツ保持ノードの数が決定される。
次いで、制御部11は、上記再生中のコンテンツデータのコンテンツID、及び上記ステップS109で決定されたコンテンツ保持ノードの数の指定等を含むコンテンツ所在問合せメッセージ(クエリ)を、当該コンテンツデータのルートノードに向けて送出することにより(つまり、当該コンテンツデータのルートノードに問い合わせることにより)(ステップS110)、上記ステップS109で決定された数分のコンテンツ保持ノードのノード情報を含むインデックス情報を取得し、図7に示す処理に戻り、上述したようにステップS13及びS14の処理が行われる。
図7に示すステップS15では、制御部11は、再生に必要なバッファ量がバッファメモリ13に蓄積された否かを判別し、蓄積された場合には(ステップS15:YES)、ステップS16に進み、蓄積されていない場合には(ステップS15:NO)、ステップS17に進む。
ステップS16では、制御部11は、バッファメモリ13に蓄積されたコンテンツデータの再生処理を行う(データをバッファメモリ13からデコーダ部14に転送するなどの制御を行う)。
ステップS17では、制御部11は、コンテンツデータの受信中であるか否かを判別し、受信中である場合には(ステップS17:YES)、ステップS18に進み、受信中でない場合には(ステップS17:NO)、ステップS21に進む。
ステップS18では、制御部11は、受信され、バッファメモリ13にバッファリングされているコンテンツデータ(部分データ)を所定のファイル形式で記憶部12に書き込む(保存)ように制御する。
次いで、制御部11は、当該コンテンツデータの全部が書き込まれたか否かを判別し(ステップS19)、書き込まれていない場合には(ステップS19:NO)、ステップS21に進み、書き込まれた場合には(ステップS19:YES)、当該コンテンツデータのルートノードに向けて上述したパブリッシュメッセージを送出し(ステップS20)、ステップS21に進む。
ステップS21では、制御部11は、メッセージを受信したか否かを判別し、受信していない場合には(ステップS21:NO)、ステップS2に戻り、受信した場合には(ステップS21:YES)、メッセージ受信処理を行う(ステップS22)。
このメッセージ受信処理においては、図11に示すように、制御部11は、受信したメッセージがパブリッシュメッセージであるか否かを判別し(ステップS191)、パブリッシュメッセージである場合には(ステップS191:YES)、ステップS192に進み、パブリッシュメッセージでない場合には(ステップS191:NO)、ステップS195に進む。
ステップS192では、制御部11は、受信したパブリッシュメッセージに含まれるノード情報及びコンテンツIDの組をインデックス情報としてインデックスキャッシュに記憶する。
次いで、制御部11は、自己(自ノード)がルートノードであるか否かを判別(つまり、自己のルーティングテーブルを参照して、当該パブリッシュメッセージに含まれるコンテンツIDと最も近いノードIDが自分であるか否かを判別)し(ステップS193)、自己がルートノードでない(つまり、中継ノードである)場合には(ステップS193:NO)、ステップS194に進み、自己がルートノードである場合には(ステップS193:YES)、図7に示す処理に戻る。
ステップS194では、制御部11は、メッセージを、自己のルーティングテーブルにしたがって他のノードNn(つまり、当該コンテンツIDと最も近い(例えば、上位桁がより多く一致する)ノードIDを有するノードNn)に対して転送し、図7に示す処理に戻る。なお、ステップS191のYES経由の場合には、ステップS194にて上記パブリッシュメッセージが転送される。一方、ステップS195のYES経由の場合には、ステップS194にて、後述するコンテンツ所在問合せメッセージが転送される。
ステップS195では、制御部11は、受信したメッセージがコンテンツ所在問合せメッセージ(クエリ)であるか否かを判別し、コンテンツ所在問合せメッセージである場合には(ステップS195:YES)、ステップS196に進み、コンテンツ所在問合せメッセージない場合には(ステップS195:NO)、ステップS198に進む。
ステップS196では、制御部11は、コンテンツ所在問合せメッセージに含まれるコンテンツIDに対応するコンテンツデータを保存するコンテンツ保持ノードのノード情報がインデックスキャッシュに登録されているか否かを判別する。そして、当該ノード情報がインデックスキャッシュに登録されている場合には(ステップS196:YES)、制御部11は、ステップS197に進み、当該ノード情報がインデックスキャッシュに登録されていない場合には(ステップS196:NO)、ステップS193に移行する。
ステップS197では、制御部11は、コンテンツ所在問合せメッセージにおいて指定された数(指定された数に満たない場合は、当該数に最も近い数)分の上記ノード情報をインデックスキャッシュから取得して、当該ノード情報を含むインデックス情報を、当該コンテンツ所在問合せメッセージの送信元であるユーザノードに対して返信し、ステップS193に移行する。
ステップS198では、制御部11は、受信したメッセージがコンテンツ送信要求メッセージであるか否かを判別し、コンテンツ送信要求メッセージでない場合には(ステップS198:NO)、ステップS200に進む。一方、コンテンツ送信要求メッセージである場合には(ステップS198:YES)、当該コンテンツ送信要求メッセージを送信したユーザノードに対して、当該要求に係るコンテンツデータの部分データをストリーム配信し(ステップS199)、図7に示す処理に戻る。
なお、ステップS200におけるその他のメッセージ処理では、上記メッセージ以外のメッセージ(例えば参加メッセージ等)が受信された場合の処理が行われる。
以上説明したように、上記実施形態によれば、ユーザノードは、コンテンツ保持ノードから取得された、コンテンツデータを構成する部分データの再生中に、少なくとも前回のルートノードへの問い合わせ時刻及び現在時刻をパラメータとして基準値を算出し、当該基準値が所定の条件を満たすか否かを判別し、当該条件を満たす場合に、当該ルートノードに再度問い合わせることにより、コンテンツ保持ノードのノード情報を、所定数分取得するように構成したので、再問合せの結果が前回と結果となることを極力回避し、無駄な検索処理、及び無駄なトラフィックを極力減らすことができる。
また、前回の再問い合わせから現在時刻までのコンテンツ保持ノードの推定参加数を上記基準値として算出し、その推定参加数が所定数以上である場合に、当該ルートノードに再度問い合わせるようにすれば、再問合せの結果が前回と結果となることを、より一層回避でき、無駄な検索処理、及び無駄なトラフィックを、より一層減らすことができる。
また、ユーザノードは、コンテンツ保持ノードから取得された、コンテンツデータを構成する部分データの再生中に、接続対象となるコンテンツ保持ノードを補充すべき条件を満たすか否かを判別し、当該条件が満たされる場合に、当該コンテンツデータのルートノードに再度問い合わせることにより、当該コンテンツデータを保存しているコンテンツ保持ノードのノード情報を取得するように構成したので、上記コンテンツデータを構成する部分データを提供するコンテンツ保持ノードの数を十分に確保でき、したがって、コンテンツ提供サーバに負担をかけずに(言い換えれば、当該サーバへ頼る確率を下げ)、当該コンテンツデータをより効率良く取得しスムーズに再生することができる。
また、上記コンテンツ保持ノードを補充すべき条件として、取得されたノード情報に対応するコンテンツ保持ノードのうち接続中にある又は接続可能なコンテンツ保持ノードの数が所定数以下になったこととすれば、当該コンテンツ保持ノードが例えばコンテンツ分散保存システムSからの脱退によりその数が減少しても当該コンテンツ保持ノードを迅速に補充できる。
また、上記コンテンツ保持ノードを補充すべき条件として、コンテンツ保持ノードから取得している部分データの受信速度(伝送速度)が所定速度以下になったこととすれば、ネットワーク負荷或いは部分データの送信元のコンテンツ保持ノードの負荷の増大等により部分データの伝送速度が低下してもコンテンツ保持ノードを補充して伝送速度を向上させることができる。
また、上記コンテンツ保持ノードを補充すべき条件として、バッファメモリ13における全部分データのバッファ量が所定量以下になったこととすれば、ネットワーク負荷或いは部分データの送信元のコンテンツ保持ノードの負荷の増大等により上記バッファ量が低下してもコンテンツ保持ノードを補充してバッファ量を向上させることができる。
また、上記コンテンツ保持ノードを補充すべき条件として、接続されたコンテンツ保持ノードに対する部分データの要求から所定時間が経過しても応答が無いこととすれば、接続されたコンテンツ保持ノードから応答が無い場合であってもコンテンツ保持ノードを迅速に補充できる。
また、上記コンテンツ保持ノードを補充すべき条件として、取得された全てのノード情報に対応する全てのコンテンツ保持ノードから夫々の部分データの取得中になったこととすれば、コンテンツ保持ノードを迅速に補充して次の部分データの要求待ち状態をなくすことができる。
更に、取得すべきコンテンツデータのビットレート、再生時間、及びデータ容量の少なくとも何れか一つに基づいて接続対象となるコンテンツ保持ノードの数を決定するように構成したので、当該コンテンツ保持ノードの数を無駄のない適切な数に設定することができる。例えば、メッセージの転送回数が無駄に増すことを回避することができる。
なお、上記実施形態におけるコンテンツ分散保存システムSは、DHTを利用したアルゴリズムによって形成されることを前提として説明したが、本発明はこれに限定されるものではない。
本実施形態に係るコンテンツ分散保存システムにおける各ノード装置の接続態様の一例を示す図である。 コンテンツデータを構成する複数の部分データの夫々が、当該各コンテンツ保持ノードから分散して取得される様子を示す図である。 ノードNnの概要構成例を示す図である。 コンテンツ保持ノードの数(ノード情報の数)と、ルートノードへの問い合せのタイミングとの関係の一例を示す図である。 バッファメモリ13におけるバッファ量と、ルートノードへの問い合せのタイミングとの関係の一例を示す図である。 部分データの要求から所定時間が経過しても応答が無い様子を示す図である。 ノードNnの制御部11におけるメイン処理を示すフローチャートである。 図7における検索コンテンツ保持ノード数決定処理の一例を示すフローチャートである。 検索コンテンツ保持ノード数決定処理において参照されるテーブルの一例を示す図である。 図7における再問い合せ処理の一例を示すフローチャートである。 図7におけるメッセージ受信処理の一例を示すフローチャートである。
符号の説明
8 ネットワーク
9 オーバーレイネットワーク
11 制御部
12 記憶部
13 バッファメモリ
14 デコーダ部
15 映像処理部
16 表示部
17 音声処理部
18 スピーカ
20 通信部
21 入力部
22 バス
Nn ノード
S コンテンツ分散保存システム

Claims (7)

  1. ネットワークを介して互いに通信可能な複数のノード装置を備えたコンテンツ分散保存システムであり、複数のコンテンツデータが複数のノード装置に分散保存され、当該分散保存されているコンテンツデータの所在がコンテンツデータ毎に管理されるコンテンツ分散保存システムにおける前記ノード装置であって、
    前記所定のコンテンツデータを保存しているノード装置の所在を管理している管理装置に問い合わせることにより、当該コンテンツデータを保存している他のノード装置に接続するためのネットワークアドレス情報を、所定数分取得するアドレス情報取得手段と、
    前記取得した各前記ネットワークアドレス情報に基づいて各前記他のノード装置に接続し、前記所定のコンテンツデータを構成する複数の部分データの夫々を、当該各他のノード装置から分散して取得するコンテンツデータ取得手段と、
    前記取得した部分データをバッファメモリに蓄積させつつ再生順序にしたがって再生させる再生制御手段と、
    前記部分データの再生中に、少なくとも前回の管理装置への問い合わせ時刻及び現在時刻をパラメータとして基準値を算出する基準値算出手段と、
    前記算出された基準値が所定の条件を満たすか否かを判別する基準値判別手段と、
    を備え、
    前記アドレス情報取得手段は、前記算出された基準値が所定の条件を満たす場合に、前記管理装置に再度問い合わせることにより、前記所定のコンテンツデータを保存している他のノード装置に接続するためのネットワークアドレス情報を、所定数分取得することを特徴とするノード装置。
  2. 請求項1に記載のノード装置において、
    前記部分データの再生中に、前記接続対象となる他のノード装置を補充すべき条件を満たすか否かを判別する補充条件判別手段を備え、
    前記基準値判別手段は、前記補充条件判別手段が条件を満たした場合に、前記算出された基準値が所定の条件を満たすか否かを判別することを特徴とするノード装置。
  3. 請求項1又は2に記載のノード装置において、
    前記基準値算出手段は、前回の管理装置への問い合わせ時刻から現在時刻までに前記所定のコンテンツデータを提供可能になったノード装置の数を前記基準値として算出し、
    前記基準値判別手段は、前記算出されたノード装置の数が所定数以上であるか否かを判別し、
    前記アドレス情報取得手段は、前記算出されたノード装置の数が所定数以上である場合に、前記管理装置に再度問い合わせることにより、前記所定のコンテンツデータを保存している他のノード装置に接続するためのネットワークアドレス情報を、所定数分取得することを特徴とするノード装置。
  4. 請求項1乃至3の何れか一項に記載のノード装置において、
    前記基準値算出手段は、前回の管理装置への問い合わせ時刻から現在時刻までの時間を前記基準値として算出し、
    前記基準値判別手段は、前記算出された時間が所定時間以上であるか否かを判別し、
    前記アドレス情報取得手段は、前記算出された時間が所定時間以上である場合に、前記管理装置に再度問い合わせることにより、前記所定のコンテンツデータを保存している他のノード装置に接続するためのネットワークアドレス情報を、所定数分取得することを特徴とするノード装置。
  5. コンピュータを、請求項1乃至4の何れか一項に記載のノード装置として機能させることを特徴とするノード処理プログラム。
  6. ネットワークを介して互いに通信可能な複数のノード装置を備えたコンテンツ分散保存システムであり、複数のコンテンツデータが複数のノード装置に分散保存され、当該分散保存されているコンテンツデータの所在がコンテンツデータ毎に管理されるコンテンツ分散保存システムであって、
    前記ノード装置は、
    前記所定のコンテンツデータを保存しているノード装置の所在を管理している管理装置に問い合わせることにより、当該コンテンツデータを保存している他のノード装置に接続するためのネットワークアドレス情報を、所定数分取得するアドレス情報取得手段と、
    前記取得した各前記ネットワークアドレス情報に基づいて各前記他のノード装置に接続し、前記所定のコンテンツデータを構成する複数の部分データの夫々を、当該各他のノード装置から分散して取得するコンテンツデータ取得手段と、
    前記取得した部分データをバッファメモリに蓄積させつつ再生順序にしたがって再生させる再生制御手段と、
    前記部分データの再生中に、少なくとも前回の管理装置への問い合わせ時刻及び現在時刻をパラメータとして基準値を算出する基準値算出手段と、
    前記算出された基準値が所定の条件を満たすか否かを判別する基準値判別手段と、
    を備え、
    前記アドレス情報取得手段は、前記算出された基準値が所定の条件を満たす場合に、前記管理装置に再度問い合わせることにより、前記所定のコンテンツデータを保存している他のノード装置に接続するためのネットワークアドレス情報を、所定数分取得することを特徴とするコンテンツ分散保存システム。
  7. ネットワークを介して互いに通信可能な複数のノード装置を備えたコンテンツ分散保存システムであり、複数のコンテンツデータが複数のノード装置に分散保存され、当該分散保存されているコンテンツデータの所在がコンテンツデータ毎に管理されるコンテンツ分散保存システムにおけるコンテンツデータ取得方法であって、
    前記ノード装置は、
    前記所定のコンテンツデータを保存しているノード装置の所在を管理している管理装置に問い合わせることにより、当該コンテンツデータを保存している他のノード装置に接続するためのネットワークアドレス情報を、所定数分取得する工程と、
    前記取得した各前記ネットワークアドレス情報に基づいて各前記他のノード装置に接続し、前記所定のコンテンツデータを構成する複数の部分データの夫々を、当該各他のノード装置から分散して取得するコンテンツデータ取得工程と、
    前記取得した部分データをバッファメモリに蓄積しつつ再生順序にしたがって再生する工程と、
    前記部分データの再生中に、少なくとも前回の管理装置への問い合わせ時刻及び現在時刻をパラメータとして基準値を算出する工程と、
    前記算出された基準値が所定の条件を満たすか否かを判別する工程と、
    を備え、
    前記アドレス情報取得工程においては、前記算出された基準値が所定の条件を満たす場合に、前記管理装置に再度問い合わせることにより、前記所定のコンテンツデータを保存している他のノード装置に接続するためのネットワークアドレス情報を、所定数分取得することを特徴とするコンテンツデータ取得方法。
JP2007209032A 2007-08-10 2007-08-10 コンテンツ分散保存システム、コンテンツデータ取得方法、ノード装置、及びノード処理プログラム Expired - Fee Related JP4867845B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007209032A JP4867845B2 (ja) 2007-08-10 2007-08-10 コンテンツ分散保存システム、コンテンツデータ取得方法、ノード装置、及びノード処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007209032A JP4867845B2 (ja) 2007-08-10 2007-08-10 コンテンツ分散保存システム、コンテンツデータ取得方法、ノード装置、及びノード処理プログラム

Publications (2)

Publication Number Publication Date
JP2009043129A JP2009043129A (ja) 2009-02-26
JP4867845B2 true JP4867845B2 (ja) 2012-02-01

Family

ID=40443794

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007209032A Expired - Fee Related JP4867845B2 (ja) 2007-08-10 2007-08-10 コンテンツ分散保存システム、コンテンツデータ取得方法、ノード装置、及びノード処理プログラム

Country Status (1)

Country Link
JP (1) JP4867845B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006178782A (ja) * 2004-12-22 2006-07-06 Fuji Xerox Co Ltd 情報処理方法、配信情報の処理方法、配信情報処理プログラム及び配信処理装置
JP4670042B2 (ja) * 2005-01-13 2011-04-13 ブラザー工業株式会社 ノード装置、ノード装置情報更新方法、及びノード装置情報更新プログラム
JP4418897B2 (ja) * 2005-01-14 2010-02-24 ブラザー工業株式会社 情報配信システム、情報更新プログラム、及び情報更新方法等
JP4599581B2 (ja) * 2005-02-08 2010-12-15 ブラザー工業株式会社 情報配信システム、配信要求プログラム、転送プログラム及び配信プログラム等
JP2006244054A (ja) * 2005-03-02 2006-09-14 Sony Corp 情報処理装置および方法、記録媒体、プログラム、並びに情報処理システム

Also Published As

Publication number Publication date
JP2009043129A (ja) 2009-02-26

Similar Documents

Publication Publication Date Title
US20080235321A1 (en) Distributed contents storing system, copied data acquiring method, node device, and program processed in node
JP4692414B2 (ja) 通信システム、コンテンツデータ送信可否決定方法、ノード装置、及びノード処理プログラム等
JP4715388B2 (ja) 情報配信システム、情報配信方法、情報配信システムに含まれるノード装置および情報処理プログラム
JP4910881B2 (ja) 通信システム、ノード装置、ノード処理プログラム、及びメッセージ送受信方法
JP5136581B2 (ja) 情報通信システム、情報処理装置、情報処理方法、及び情報処理プログラム
JP4765876B2 (ja) コンテンツ配信システムにおける端末装置及びその情報処理方法並びにプログラム
JP5272991B2 (ja) 情報通信システム、情報通信方法及びプログラム
JP5007624B2 (ja) コンテンツ分散保存システム、コンテンツデータ取得方法、ノード装置、及びノード処理プログラム
JP4867845B2 (ja) コンテンツ分散保存システム、コンテンツデータ取得方法、ノード装置、及びノード処理プログラム
US20080240138A1 (en) Tree type broadcast system, connection target determination method, connection management device, connection management process program, and the like
US20100250593A1 (en) Node device, information communication system, method for managing content data, and computer readable medium
JP5257001B2 (ja) ノード装置、ノード処理プログラム及び利用状況管理方法
JP2009232272A (ja) コンテンツ分散保存システム、コンテンツ再生方法、ノード装置、管理装置、ノード処理プログラム、及び管理処理プログラム
JP4935734B2 (ja) コンテンツ分散保存システム、ノード装置及びノード処理プログラム並びにノード処理方法
JP5423497B2 (ja) 情報通信システム、ノード装置、情報通信方法、及びプログラム
JP2010039722A (ja) ノード装置、管理ノード装置、ノード処理プログラム、管理ノード処理プログラム、コンテンツ分散保存システム、複製データ取得方法
JP2011008657A (ja) コンテンツ配信システム、ノード装置、コンテンツ配信方法及びノードプログラム
JP5157770B2 (ja) ノード装置、プログラム及び保存指示方法
JP5287059B2 (ja) ノード装置、ノード処理プログラム及び保存指示方法
JP5412924B2 (ja) ノード装置、ノード処理プログラム及びコンテンツデータ削除方法
JP5195794B2 (ja) 情報通信システム、情報処理装置、及び情報通信方法
JP2008310621A (ja) コンテンツ分散保存システム、コンテンツデータ取得方法、ノード装置、及びノード処理プログラム
JP2008181408A (ja) 通信システム、稼動制御方法、ノード装置及びノード処理プログラム
JP2009140383A (ja) コンテンツ分散保存システム、情報配信方法、配信装置、及び配信処理プログラム
JP2009020669A (ja) コンテンツ分散保存システム、コンテンツデータ保存方法、稼働率管理装置、及びノード装置等

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100118

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111013

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111018

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111031

R150 Certificate of patent or registration of utility model

Ref document number: 4867845

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141125

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees