説明

コンテンツ配信システム、ノード装置、ノードプログラム、及び公開メッセージ送信方法

【課題】多くのコンテンツデータの公開メッセージが送信される状況下であっても、各ノード装置が他のノード装置からコンテンツデータを取得し易くし、コンテンツ管理サーバの負荷を低減すること等が可能なコンテンツ配信システム、ノード装置、ノードプログラム、及び公開メッセージ送信方法を提供する。
【解決手段】コンテンツ保持ノードは、保存されている各コンテンツデータの公開メッセージを、各コンテンツデータのルートノード宛に所定の時間間隔毎に送信する処理を行う。そして、この処理では、予め設定された送信優先基準にしたがって、各コンテンツデータの公開メッセージの送信順序が制御される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたピアツーピア(Peer to Peer(P2P))型の通信システムの技術分野に関する。
【背景技術】
【0002】
複数のコンテンツデータを複数のノード装置に分散して記憶させ、各ノード装置間でコンテンツデータを利用可能としたピアツーピア型のコンテンツ配信システムが知られている。ピアツーピア型のコンテンツ配信システムにおいて、コンテンツデータの所在は、例えば特許文献1に開示されるように、ルートノードと呼ばれるノード装置により管理されている。そして、あるノード装置がルートノード宛にクエリを送信することにより、コンテンツデータを記憶するノード装置を検索可能になっている。
【0003】
一方、コンテンツデータを記憶する各ノード装置は、例えば起動時等の所定のタイミングで、公開メッセージをルートノード宛に送信する。公開メッセージは、コンテンツデータを記憶していることを他のノード装置に公開するためのメッセージである。また、複数のコンテンツデータを記憶しているノード装置は、各コンテンツデータのファイル格納先のディレクトリをスキャンする。そして、ノード装置は各コンテンツデータの公開メッセージを登録順に送信する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−197400号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、ノード装置に記憶されているコンテンツデータのファイル数が少ない場合は、公開メッセージの送信が短時間に終了するため問題がない。しかし、コンテンツデータのファイル数が、例えば1万以上と多い場合、全てのコンテンツデータの公開メッセージを連続して送信すると、公開メッセージの送信側及び受信側のノード装置、並びにネットワークに過大な負荷がかかってしまう。そのため、コンテンツデータのファイル数が多い場合、例えば、一度に送信する公開メッセージの数を制限し、時間を空けながらゆっくりと公開メッセージの送信を行うことが考えられる。
【0006】
しかしながら、公開メッセージの送信をゆっくりと行うと、全てのコンテンツデータの公開メッセージの送信が完了するのに時間がかかってしまう。そのため、各ノード装置が他のノード装置から例えば人気のあるコンテンツデータを取得し難い状況になってしまう。このような状況になると、各ノード装置は、全てのコンテンツデータを記憶しているコンテンツ管理サーバからコンテンツデータを取得することになる。したがって、コンテンツ管理サーバの負荷が増大するという問題が生じる。
【0007】
そこで、本発明は、以上の点等に鑑みてなされたものであり、多くのコンテンツデータの公開メッセージが送信される状況下であっても、各ノード装置が他のノード装置からコンテンツデータを取得し易くし、コンテンツ管理サーバの負荷を低減すること等が可能なコンテンツ配信システム、ノード装置、ノードプログラム、及び公開メッセージ送信方法を提供すること等を課題とする。
【課題を解決するための手段】
【0008】
上記課題を解決するために、請求項1に記載の発明は、複数のコンテンツデータが複数のノード装置に分散して記憶されるコンテンツ配信システムに含まれるノード装置であって、複数の前記コンテンツデータを記憶する記憶手段と、前記コンテンツデータを記憶していることを他のノード装置に公開するための公開メッセージを当該コンテンツデータの所在を管理するノード装置または他の装置宛に送信する送信手段と、予め設定された送信優先基準にしたがって、各前記コンテンツデータの前記公開メッセージの送信順序を制御する送信制御手段と、を備えることを特徴とする。
【0009】
請求項2に記載の発明は、請求項1に記載のノード装置において、前記送信制御手段は、前記ノード装置にインストールされたオペレーティングシステムにより管理される各前記コンテンツデータの管理情報を取得する取得手段と、前記取得された管理情報に基づき、前記公開メッセージの送信順序を決定する決定手段と、を備え、前記送信制御手段は、前記決定手段により決定された前記送信順序を、前記送信優先基準として、前記公開メッセージの送信順序を制御することを特徴とする。
【0010】
請求項3に記載の発明は、請求項2に記載のノード装置において、前記取得手段は、前記各コンテンツデータの管理情報として、当該各コンテンツデータの取得時又は再生時に付与されたタイムスタンプを取得し、前記決定手段は、前記タイムスタンプが新しい順に前記公開メッセージを送信する送信順序を決定することを特徴とする。
【0011】
請求項4に記載の発明は、請求項2に記載のノード装置において、前記取得手段は、前記各コンテンツデータの管理情報として、当該各コンテンツデータのファイルサイズを取得し、前記決定手段は、前記ファイルサイズの大きい順に前記公開メッセージを送信する送信順序を決定することを特徴とする。
【0012】
請求項5に記載の発明は、請求項2に記載のノード装置において、前記コンテンツ配信システムに含まれる各ノード装置は、複数の分割コンテンツデータから構成されるコンテンツデータをノード装置に分散して記憶し、前記コンテンツ配信システムに含まれる各ノード装置は、前記記憶手段に記憶されているコンテンツデータは、前記分割コンテンツデータであり、前記取得手段は、前記コンテンツデータの管理情報として、前記分割コンテンツデータを構成要素とするコンテンツデータの全体ファイルサイズを取得し、前記決定手段は、前記全体ファイルサイズの大きい順に前記公開メッセージを送信する送信順序を決定することを特徴とする。
【0013】
請求項6に記載の発明は、請求項1に記載のノード装置において、前記送信制御手段は、前記ノード装置に配信されたコンテンツカタログ情報に記述される各前記コンテンツデータの属性情報を取得する取得手段と、前記取得された属性情報に基づき、前記公開メッセージの送信順序を決定する決定手段と、前記送信制御手段は、前記決定手段により決定された前記送信順序を、前記送信優先基準として、前記公開メッセージの送信順序を制御することを特徴とする。
【0014】
請求項7に記載の発明は、請求項6に記載のノード装置において、前記取得手段は、前記各コンテンツデータの属性情報として、当該各コンテンツデータが前記コンテンツ配信システムで利用開始となる利用開始日時を取得し、前記決定手段は、前記利用開始日時が現在日時に近い順に前記公開メッセージを送信する送信順序を決定することを特徴とする。
【0015】
請求項8に記載の発明は、請求項6に記載のノード装置において、前記取得手段は、前記各コンテンツデータの属性情報として、当該各コンテンツデータが前記コンテンツ配信システムで利用終了となる利用終了日時を取得し、前記決定手段は、前記利用終了日時が現在日時に近い順に前記公開メッセージを送信する送信順序を決定することを特徴とする。
【0016】
請求項9に記載の発明は、請求項1に記載のノード装置において、前記ノード装置は、指定されたコンテンツデータを記憶しているノード装置の検索処理を実行する検索手段と、前記検索処理によりノード装置が発見できた場合には、当該発見されたノード装置から、前記指定されたコンテンツデータを取得する第1コンテンツ取得手段と、前記検索処理により発見されたノード装置の数と、前記取得されたコンテンツデータとを対応付けて前記記憶手段に記憶させる記憶制御手段と、を備え、前記送信制御手段は、前記送信優先基準にしたがって、各前記コンテンツデータに対応付けられた前記ノード装置の数を取得する取得手段と、前記取得されたノード装置の数が少ない順に前記公開メッセージを送信する送信順序を決定する決定手段と、を備え、前記送信制御手段は、前記決定手段により決定された前記送信順序を、前記送信優先基準として、前記公開メッセージの送信順序を制御することを特徴とする。
【0017】
請求項10に記載の発明は、請求項1から請求項9の何れか一項に記載のノード装置において、指定されたコンテンツデータを記憶しているノード装置の検索処理を実行する検索手段と、前記検索処理によりノード装置が発見できた場合には、当該発見されたノード装置から、前記指定されたコンテンツデータを取得する第1コンテンツ取得手段と、前記検索処理によりノード装置が発見できない場合又は発見されたノード装置からコンテンツデータを取得できない場合には、前記複数のコンテンツデータを記憶しているサーバ装置から、前記指定されたコンテンツデータを取得する第2コンテンツ取得手段と、を備えることを特徴とする。
【0018】
請求項11に記載の発明は、請求項1から請求項10のいずれか一項に記載のノード装置において、前記ノード装置は、指定されたコンテンツデータを記憶しているノード装置の検索処理を実行する検索手段と、前記検索処理によりノード装置が発見できた場合には、当該発見されたノード装置から、前記指定されたコンテンツデータを取得する第1コンテンツ取得手段と、前記検索処理によりノード装置が発見できない場合又は発見されたノード装置からコンテンツデータを取得できない場合には、前記複数のコンテンツデータを記憶しているサーバ装置から、前記指定されたコンテンツデータを取得する第2コンテンツ取得手段と、前記取得されたコンテンツデータと、当該コンテンツデータを送信した装置の種別とを対応付けて前記記憶手段に記憶させる記憶制御手段と、を備え、前記送信制御手段は、前記送信優先基準にしたがって、各前記コンテンツデータに対応付けられた前記装置の種別を取得する取得手段と、前記取得された装置の種別がサーバ装置であるコンテンツデータの前記公開メッセージの送信を優先とする送信順序を決定する決定手段と、を備え、前記送信制御手段は、前記決定手段により決定された前記送信順序を、前記送信優先基準として、前記公開メッセージの送信順序を制御することを特徴とする。
【0019】
請求項12に記載の発明は、請求項1から請求項11のいずれか一項に記載のノード装置において、前記コンテンツ配信システムに含まれる各ノード装置には、所定桁数からなるノードIDが割り当てられ、前記複数のコンテンツデータは、複数のグループの何れかに属しており、前記送信制御手段は、当該送信制御手段を備えるノード装置自身に割り当てられたノードIDの所定桁目の値に対応するグループを決定する第1決定手段と、前記決定されたグループに属するコンテンツデータの前記公開メッセージの送信を優先とする送信順序を決定する第2決定手段と、を備えることを特徴とする。
【0020】
請求項13に記載のノードプログラムの発明は、複数のコンテンツデータが複数のノード装置に分散して記憶され、前記複数のコンテンツデータの所在が複数のノード装置に管理されるコンテンツ配信システムのノード装置に含まれるコンピュータを、複数の前記コンテンツデータを記憶する記憶ステップと、前記コンテンツデータを記憶していることを他のノード装置に公開するための公開メッセージを当該コンテンツデータの所在を管理するノード装置宛に所定間隔毎に送信する送信ステップと、予め設定された送信優先基準にしたがって、各前記コンテンツデータの前記公開メッセージの送信順序を制御する送信制御ステップと、を実行させる。
【0021】
請求項14に記載の発明は、複数のコンテンツデータが複数のノード装置に分散して記憶され、前記複数のコンテンツデータの所在が複数のノード装置に管理されるコンテンツ配信システムであって、前記ノード装置は、複数の前記コンテンツデータを記憶する記憶手段と、前記コンテンツデータを記憶していることを他のノード装置に公開するための公開メッセージを当該コンテンツデータの所在を管理するノード装置宛に所定間隔毎に送信する送信手段と、予め設定された送信優先基準にしたがって、各前記コンテンツデータの前記公開メッセージの送信順序を制御する送信制御手段と、を備えることを特徴とする。
【0022】
請求項15に記載の発明は、複数のコンテンツデータが複数のノード装置に分散して記憶され、前記複数のコンテンツデータの所在が複数のノード装置に管理されるコンテンツ配信システムにおける公開メッセージ送信方法であって、前記ノード装置が、複数の前記コンテンツデータを記憶する記憶ステップと、前記ノード装置が、前記コンテンツデータを記憶していることを他のノード装置に公開するための公開メッセージを当該コンテンツデータの所在を管理するノード装置宛に所定間隔毎に送信する送信ステップと、前記ノード装置が、予め設定された送信優先基準にしたがって、各前記コンテンツデータの前記公開メッセージの送信順序を制御する送信制御ステップと、を含むことを特徴とする。
【発明の効果】
【0023】
請求項1、10、13乃至15に記載の発明によれば、多くのコンテンツデータの公開メッセージが送信される状況下であっても、各ノード装置が他のノード装置からコンテンツデータを取得し易くすることができる。よって、サーバ装置の負荷を低減することができる。
【0024】
請求項2に記載の発明によれば、公開メッセージの送信順序を決定するための情報をネットワーク等を介さず、オペレーティングシステムから迅速に取得することができる。
【0025】
請求項3に記載の発明によれば、各ノード装置が他のノード装置から人気のあるコンテンツデータを取得し易くすることができる。従って、サーバ装置の負荷を低減することができる。
【0026】
請求項4に記載の発明によれば、各ノード装置が他のノード装置からファイルサイズの大きいコンテンツデータを取得し易くすることができる。従って、サーバ装置がファイルサイズの大きいコンテンツデータをノード装置へ送信するために帯域が占有されるのを回避することができる。
【0027】
請求項5に記載の発明によれば、複数の分割コンテンツデータが各ノード装置に分散されて記憶されている場合であっても、各ノード装置が他のノード装置から全体ファイルサイズの大きいコンテンツデータの構成要素である分割コンテンツデータを取得し易くすることができる。従って、サーバ装置が全体ファイルサイズの大きいコンテンツデータをノード装置へ送信するために帯域が占有されるのを回避することができる。
【0028】
請求項6に記載の発明によれば、公開メッセージの送信順序を決定するための情報をコンテンツカタログ情報から迅速に取得することができる。
【0029】
請求項7に記載の発明によれば、各ノード装置が他のノード装置からアクセス集中が予想されるコンテンツデータを取得し易くすることができる。従って、サーバ装置の負荷を低減することができる。
【0030】
請求項8に記載の発明によれば、各ノード装置が他のノード装置からアクセス集中が予想されるコンテンツデータを取得し易くすることができる。従って、サーバ装置の負荷を低減することができる。
【0031】
請求項9に記載の発明によれば、記憶しているノード装置の数が少ないコンテンツデータを、各ノード装置が他のノード装置から取得し易くすることができる。従って、サーバ装置の負荷を低減することができる。
【0032】
請求項11に記載の発明によれば、記憶しているノード装置の数が少ないコンテンツデータを、各ノード装置が他のノード装置から取得し易くすることができる。従って、サーバ装置の負荷を低減することができる。
【0033】
請求項12に記載の発明によれば、一部のコンテンツデータへのアクセス集中を回避することができる。
【図面の簡単な説明】
【0034】
【図1】本実施形態に係るコンテンツ配信システムにおける各ノード装置の接続態様の一例を示す図である。
【図2】ノードNnの概要構成例を示す図である。
【図3】ノードNnの制御部11におけるメイン処理の一例を示すフローチャートである。
【図4】図3に示すステップS4におけるパブリッシュ処理の一例を示すフローチャートである。
【図5】(A)は、図4に示すステップS47における送信優先基準に基づくパブリッシュ処理の一例を示すフローチャートである。(B)は、図4に示すステップS48における複数ディレクトリに対応したパブリッシュ処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0035】
以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ配信システムに本発明を適用した場合の実施形態である。
【0036】
1.コンテンツ配信システムの構成及び動作概要
始めに、図1を参照して、本実施形態に係るコンテンツ配信システムの構成及び動作概要について説明する。
【0037】
図1は、本実施形態に係るコンテンツ配信システムにおける各ノード装置の接続態様の一例を示す図である。
【0038】
図1の下部枠101内に示すように、コンテンツ配信システムSは、複数のノード装置Nnがインターネットを介して接続されることで構成される。また、図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が構築されている。なお、通信回線7としては、例えば、電話回線や光ケーブル等が用いられる。
【0039】
ネットワーク8には、複数のノード装置Nn(n=1,2,3・・・の何れか)が接続されている。なお、以下の説明において、ノード装置を「ノード」と称する。
【0040】
また、各ノードNnには、固有の製造番号およびIP(Internet Protocol)アドレスが割り当てられている。そして、本実施形態に係るコンテンツ配信システムSは、これらのノードNnのうち、図1の上部枠100内に示すように、何れか複数のノードNn接続により形成されるピアツーピア方式のネットワークシステムとなっている。
【0041】
なお、図1の上部枠100内に示すネットワーク9は、既存のネットワーク8を用いて形成された仮想的なリンクを構成するオーバーレイネットワーク9である。オーバーレイネットワーク9は、特定のアルゴリズム、例えば、分散ハッシュテーブルを利用したアルゴリズムにより実現される。分散ハッシュテーブルを、以下、DHT(Distributed Hash Table)という。
【0042】
そして、コンテンツ配信システムSにおける各ノードNnには、所定桁数からなる固有の識別情報であるノードIDが割り当てられている。また、ノードIDは、例えば、各ノードNnに個別に割り当てられたIPアドレス或いは製造番号を所定のハッシュ関数によりハッシュ化した値である。ハッシュ関数として、例えば、SHA−1が用いられる。これにより、ノードIDは、ID空間に偏りなく分散して配置される。なお、システム管理者が、ノード毎に一意のノードIDを付与しても良い。
【0043】
また、各ノードNnは、夫々、DHTを用いたルーティングテーブルを保持している。DHTを用いたルーティングテーブルは、コンテンツ配信システムS上における各種メッセージの転送先を規定している。具体的には、DHTを用いたルーティングテーブルには、複数のノード情報が登録されている。ノード情報は、ノードID、IPアドレス及びポート番号を含む情報である。また、DHTは、各ノードNnがオーバーレイネットワーク9に参加する際に生成される。ここで、オーバーレイネットワーク9への参加とは、ノードNnがP2Pプログラムを実行することにより、DHTを用いたルーティングテーブルを用いて他のノードNnとの間で情報の送受信が可能な状態に稼動することをいう。なお、DHTを用いたルーティングテーブルについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
【0044】
また、コンテンツ配信システムSにおいては、内容の異なる様々なコンテンツデータが所定のファイル形式で複数のノードNnに分散して保存されている。コンテンツデータは、例えば、映画や音楽、カラオケ曲等のデータである。なお、以下の説明において、コンテンツデータを「コンテンツ」と称する。例えば、コンテンツXはノードN3とノードN5に保存されている。また、コンテンツYはノードN4に保存されている。
【0045】
また、ファイルサイズが所定バイト以上のコンテンツは、複数に分割される。そして、分割されたコンテンツは、複数のノードNnに分散して保存されている。分割されたコンテンツを、以下、「分割コンテンツ」という。例えば、コンテンツZを構成する分割コンテンツZ1はノードN2とノードN6に保存されている。また、コンテンツZを構成する分割コンテンツZ2はノードN7に保存されている。
【0046】
なお、コンテンツ配信システムSにおいて、コンテンツと分割コンテンツは、同様に取り扱われる。従って、以下の説明において、特に区別しない限り、コンテンツという場合は、分割コンテンツも該当するものとする。
【0047】
以下、コンテンツを保存しているノードNnを、「コンテンツ保持ノード」と称する。
【0048】
そして、各コンテンツには、夫々、コンテンツIDが割り当てられている。コンテンツIDは、コンテンツ毎に固有の識別情報である。コンテンツIDは、例えば、コンテンツ名+任意の数値が、ノードIDを得るときと共通のハッシュ関数によりハッシュ化されて生成される。コンテンツIDはノードIDと同一ビット長である。なお、システム管理者が、コンテンツ毎に一意のコンテンツIDを付与しても良い。
【0049】
このように分散保存されているコンテンツの所在は、上述したように、ルートノードにより管理される。ルートノードは、コンテンツ保持ノードのIPアドレス及びポート番号と、コンテンツIDとの組を含むインデックス情報をインデックスキャッシュ領域に記憶している。インデックスキャッシュ領域とは、インデックス情報を記憶するために、ノードNnの記憶部に設けられた記憶領域である。ルートノードは、例えば、コンテンツIDと最も近いノードIDを有するノードNnであるように定められる。「コンテンツIDと最も近いノードID」とは、例えば、コンテンツIDと上位桁がより多く一致するノードIDを意味する。
【0050】
また、複数のノードNnに分散保存されている全てのコンテンツのオリジナルは、コンテンツ管理サーバSAに保存されている。コンテンツ管理サーバSAは、サーバ装置の一例である。また、コンテンツ管理サーバSAは、分散保存されているコンテンツの属性情報が記述されたコンテンツカタログ情報を管理している。そして、コンテンツ管理サーバSAは、コンテンツカタログ情報を全てのノードNnにDHTマルチキャストで配信する。なお、DHTマルチキャストは、例えば特開2007−053662号公報等で公知であるので、詳しい説明を省略する。
【0051】
コンテンツカタログ情報に記述される属性情報には、例えば、コンテンツID、コンテンツ名、公開開始日時、公開終了日時、及び検索キーワード等が含まれる。ここで、公開開始日時は、各ノードNnによりコンテンツがコンテンツ配信システムSで利用開始となる利用開始日時である。公開開始日時が到来したコンテンツのコンテンツIDは、コンテンツカタログ情報から検索できるようになる。一方、公開終了日時は、各ノードNnによりコンテンツがコンテンツ配信システムSで利用終了となる利用終了日時である。公開終了日時が到来したコンテンツは、コンテンツ保持ノードから削除される。また、公開終了日時が到来したコンテンツのコンテンツIDは、コンテンツカタログ情報から検索できないようになる。
【0052】
あるノードNnが、例えば、コンテンツカタログ情報上でユーザから指定されたコンテンツを、コンテンツ保持ノードから取得する場合、コンテンツ保持ノードの検索処理を実行する。なお、コンテンツ保持ノードの検索処理を実行するノードNnを、「ユーザノード」と称する。コンテンツ保持ノードの検索処理において、ユーザノードは、先ず、コンテンツ所在問合せメッセージを生成する。コンテンツ所在問合せメッセージは、コンテンツの所在をルートノードに問い合わせるためのメッセージである。言い換えれば、コンテンツ所在問合せメッセージは、コンテンツを保存しているコンテンツ保持ノードを検索するためのメッセージである。
【0053】
また、コンテンツ所在問合せメッセージには、取得対象となるコンテンツのコンテンツID、及びユーザノードのIPアドレス等が含まれる。ここで、分割コンテンツ以外のコンテンツのコンテンツIDは、コンテンツカタログ情報から抽出される。一方、分割コンテンツのコンテンツIDは、分割コンテンツを構成要素とするコンテンツのコンテンツIDが付与されたメタファイルに記述されている。このメタファイルは、コンテンツ保持ノードに保存される。
【0054】
そして、ユーザノードは、生成したコンテンツ所在問合せメッセージを、DHTを用いたルーティングテーブルにしたがって、ルートノード宛に送信する。これにより、コンテンツ所在問合せメッセージは、コンテンツIDをキーとするDHTルーティングによって、幾つかのノードNnにより転送され、最終的にルートノードに到着する。このようにコンテンツ所在問合せメッセージ等のメッセージを転送するノードNnを、「中継ノード」と称する。なお、DHTルーティングについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
【0055】
ルートノードは、コンテンツ所在問合せメッセージを受信すると、コンテンツ所在問合せメッセージに含まれるコンテンツIDに対応するインデックス情報を取得する。そして、ルートノードは、取得したインデックス情報を、受信したコンテンツ所在問合せメッセージの送信元であるユーザノードへ返信する。ユーザノードに返信されたインデックス情報には、上記指定されたコンテンツを保存している1又は複数のコンテンツ保持ノードのIPアドレス等が含まれている。こうして、ユーザノードは、コンテンツ保持ノードの検索処理によりコンテンツ保持ノードを発見できた場合には、発見されたコンテンツ保持ノードのIPアドレス等に基づいてコンテンツ保持ノードにアクセスする。これにより、ユーザノードは、コンテンツ保持ノードから、上記指定されたコンテンツを取得、すなわち、ダウンロードすることができる。
【0056】
ところで、ユーザノードが、発見されたコンテンツ保持ノードにアクセスを試みても、通信状況によっては、コンテンツ保持ノードから応答が無い場合がある。この場合、ユーザノードは、上記指定されたコンテンツを、コンテンツ保持ノードから取得することができない。また、ユーザノードが、コンテンツ保持ノードの検索処理を実行しても、通信状況によっては、ルートノードから応答が無い場合がある。この場合、ユーザノードは、上記指定されたコンテンツを保存しているコンテンツ保持ノードを発見できない。このように、ユーザノードは、コンテンツ保持ノードを発見できない場合又は発見されたコンテンツ保持ノードからコンテンツを取得できない場合には、コンテンツ管理サーバSAから、指定されたコンテンツを取得する。
【0057】
こうして、コンテンツ保持ノード又はコンテンツ管理サーバSAから取得されたコンテンツを保存したユーザノードは、コンテンツの新たなコンテンツ保持ノードとなる。新たなコンテンツ保持ノードは、パブリッシュメッセージを生成する。パブリッシュメッセージは、公開メッセージの一例である。また、パブリッシュメッセージは、コンテンツを保存していることを他のノードNnに公開するためのメッセージである。
【0058】
また、パブリッシュメッセージには、コンテンツのコンテンツID、及び新たなコンテンツ保持ノードのIPアドレス等が含まれる。
【0059】
そして、新たなコンテンツ保持ノードは、生成したパブリッシュメッセージを、DHTを用いたルーティングテーブルにしたがって、ルートノード宛に送信する。これにより、パブリッシュメッセージは、コンテンツIDをキーとするDHTルーティングによって、幾つかの中継ノードにより転送され、最終的にルートノードに到着する。
【0060】
ルートノードは、パブリッシュメッセージを受信すると、インデックス情報をインデックスキャッシュ領域に記憶する。インデックス情報には、パブリッシュメッセージに含まれるコンテンツIDと、新たなコンテンツ保持ノードのIPアドレス等との組が含まれる。なお、インデックス情報は、中継ノードにおいてもインデックスキャッシュ領域に記憶される。この中継ノードは、ルートノードに至るまでの転送経路でパブリッシュメッセージを中継するノードNnである。
【0061】
一方、コンテンツ保持ノードは、例えば電源オフ指令がなされると、オーバーレイネットワーク9から脱退する脱退処理を行う。脱退処理において、コンテンツ保持ノードは、削除要求メッセージを生成する。削除要求メッセージは、削除要求メッセージを生成したコンテンツ保持ノードのIPアドレス等をインデックスキャッシュ領域から削除する要求を示すメッセージである。なお、コンテンツ保持ノードに保存されているコンテンツは、オーバーレイネットワーク9からの脱退後も削除されずに残る。
【0062】
そして、コンテンツ保持ノードは、生成した削除要求メッセージを、DHTを用いたルーティングテーブルにしたがって、ルートノード宛に送信する。これにより、削除要求メッセージは、コンテンツIDをキーとするDHTルーティングによって、幾つかの中継ノードにより転送され、最終的にルートノードに到着する。
【0063】
ルートノードは、削除要求メッセージを受信すると、削除要求メッセージに含まれるコンテンツIDに対応付けられて記憶されたIPアドレス等をインデックスキャッシュ領域から削除する。なお、削除要求メッセージに含まれるIPアドレス等は、中継ノードにおいてもインデックスキャッシュ領域から削除される。この中継ノードは、ルートノードに至るまでの転送経路で削除要求メッセージを中継するノードNnである。
【0064】
このようにオーバーレイネットワーク9から脱退したコンテンツ保持ノードが再び、オーバーレイネットワーク9に参加した場合、コンテンツ保持ノードは、保存しているコンテンツのパブリッシュメッセージを生成する。そして、コンテンツ保持ノードは、上記と同様、生成したパブリッシュメッセージをルートノード宛に送信する。ここで、コンテンツ保持ノードが、複数のコンテンツを保存している場合、各コンテンツについてのパブリッシュメッセージをルートノード宛に送信する。
【0065】
2.ノードNnの構成及び機能
次に、図2を参照して、ノードNnの構成及び機能について説明する。
【0066】
図2は、ノードNnの概要構成例を示す図である。
【0067】
各ノードNnは、図2に示すように、制御部11、記憶部12、バッファメモリ13、デコーダ部14、映像処理部15、表示部16、音声処理部17、スピーカ18、通信部19、及び入力部20等を備えて構成される。制御部11、記憶部12、バッファメモリ13、デコーダ部14、通信部19、及び入力部19aはバス19bを介して相互に接続されている。なお、記憶部12は、記憶手段の一例である。ノードNnとしては、パーソナルコンピュータ、STB(Set Top Box)、或いは、TV受信機、カラオケ装置等が適用可能である。
【0068】
記憶部12は、各種データ及び各種プログラム等を記憶するためのハードディスクドライブ等から構成される。具体的には、記憶部12には、オペレーティングシステム(OS)、P2Pプログラム、コンテンツカタログ情報、インデックス情報、DHTを用いたルーティングテーブル等が記憶されている。P2Pプログラムは、ノードプログラムの一例である。また、P2Pプログラムは、オペレーティングシステム上で実行されるアプリケーションプログラムである。なお、P2Pプログラムは、例えば、ネットワーク8に接続された所定のサーバからダウンロードされるようにしても良い。或いは、P2Pプログラムは、例えば、記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
【0069】
また、記憶部12には、コンタクトノードのIPアドレス及びポート番号が記憶されている。コンタクトノードとは、オーバーレイネットワーク9に参加するノードNnからの参加要求を処理するノードNnである。
【0070】
更に、記憶部12には、複数のコンテンツを保存するためのコンテンツ記憶領域が設けられている。各コンテンツは、キャッシュファイルとしてコンテンツ記憶領域に保存される。各コンテンツのキャッシュファイルは、コンテンツ格納用ディレクトリに格納されて管理される。また、キャッシュファイル数が多くなる場合、1つのコンテンツ格納用ディレクトリに全てのキャッシュファイルが格納されると、キャッシュファイルのソートに時間がかかる。従って、このような場合、複数のコンテンツ格納用ディレクトリが作成される。そして、複数のキャッシュファイルは、各コンテンツ格納用ディレクトリに分けられて格納される。言い換えれば、複数のキャッシュファイルは、複数のコンテンツ格納用ディレクトリの何れかに属する。なお、コンテンツ格納用ディレクトリは、グループの一例である。また、各コンテンツ格納用ディレクトリには、固有のディレクトリ番号が付与される。例えば、ディレクトリ数が16あるとすると、各コンテンツ格納用ディレクトリには、16進数で0〜Fの何れかのディレクトリ番号が付与される。そして、キャッシュファイルに対応するコンテンツIDの所定桁目の値により、格納されるコンテンツ格納用ディレクトリが決定される。例えば、「所定桁目」を、16進数で構成されたコンテンツIDの上位1桁目とする。この場合、コンテンツIDの上位1桁目が“2”であるとすると、ディレクトリ番号が“2”のコンテンツ格納用ディレクトリが決定される。従って、コンテンツIDの上位1桁目が“2”のキャッシュファイルは、ディレクトリ番号が“2”のコンテンツ格納用ディレクトリに格納される。なお、コンテンツ格納用ディレクトリ内にコンテンツ格納用ディレクトリを格納して階層構造にするように構成してもよい。
【0071】
また、各コンテンツのキャッシュファイルには、コンテンツを送信した装置の種別を示す種別情報が対応付けられて記憶される。装置の種別としては、ノードとサーバが挙げられる。更に、コンテンツがコンテンツ保持ノードから取得されたものである場合、このコンテンツのキャッシュファイルには、上述した検索処理により発見されたコンテンツ保持ノードの数を示すノード数情報が対応付けられて記憶される。
【0072】
通信部19は、ネットワーク8を通じて他のノードNn等との間の情報の通信制御を行う。
【0073】
バッファメモリ13は、通信部19を通じて他のノードNnから受信されたコンテンツ等を一時蓄積する。バッファメモリ13に蓄積されたコンテンツは記憶部12に出力され、記憶、保存される。こうして、記憶部12に保存されたコンテンツは、ユーザからの入力部19aを介した指示に応じて読み出され、デコーダ部14等により再生出力される。
【0074】
デコーダ部14は、コンテンツに含まれるビデオデータ及びオーディオデータ等のデータ伸張や復号化等のデコード処理を行う。映像処理部15は、デコーダ部14によりデコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する。表示部16は、映像処理部15から出力されたビデオ信号に基づきディスプレイに映像等を表示する。音声処理部17は、デコーダ部14によりデコードされたオーディオデータをアナログオーディオ信号にD(Digital)/A(Analog)変換した後これをアンプにより増幅して出力する。スピーカ18は、音声処理部17から出力されたオーディオ信号を音波として出力する。
【0075】
制御部11は、演算機能を有するCPU,作業用RAM,各種データ及びプログラムを記憶するROM等から構成される。制御部11は、送信手段、送信制御手段、取得手段、決定手段、第1決定手段、第2決定手段、検索手段、第1コンテンツ取得手段、第2コンテンツ取得手段、及び記憶制御手段の一例である。
【0076】
また、制御部11は、時計機能及びタイマ機能を有する。制御部11は、時計機能により現在時刻を認識できる。
【0077】
そして、制御部11は、CPUがオペレーティングシステム実行下で記憶部12等に記憶されたP2Pプログラムを読み出して実行する。これにより、上述したように、ユーザノード、ルートノード、中継ノード及びコンテンツ保持ノード等の少なくとも何れか一つのノードとしての処理を行う。
【0078】
また、コンテンツ保持ノードの制御部11は、記憶部12に保存されている各コンテンツのパブリッシュメッセージを、各コンテンツのルートノード宛に所定の時間間隔毎に送信するパブリッシュ処理を行う。これにより、インデックス情報を記憶するルートノードがオーバーレイネットワーク9から脱退しても、新たなルートノードにインデックス情報を記憶させることができる。
【0079】
更に、コンテンツ保持ノードの制御部11は、パブリッシュ処理において、予め設定された送信優先基準にしたがって、各コンテンツのパブリッシュメッセージの送信順序を制御する。例えば、コンテンツ保持ノードの制御部11は、パブリッシュメッセージの送信順序を、後述するように決定する。そして、制御部11は、決定した送信順序を、送信優先基準として、パブリッシュメッセージの送信順序を制御する。ここで、送信優先基準は、複数のコンテンツの中で、どのコンテンツのパブリッシュメッセージの送信を優先するかを規定するものである。送信優先基準の例として、以下のa〜fが挙げられる。
【0080】
(1)送信優先基準a:ファイルサイズの大きいコンテンツを優先する。
ここで、ファイルサイズは、ノードNnにインストールされたオペレーティングシステムにより管理されるコンテンツの管理情報の一例である。送信優先基準aによれば、ユーザノードがコンテンツ保持ノードからファイルサイズの大きいコンテンツを取得し易くすることができる。そのため、コンテンツ管理サーバSAが、ファイルサイズの大きいコンテンツをユーザノードへ送信するために通信帯域が占有されるのを回避することができる。
【0081】
なお、パブリッシュ処理の対象のコンテンツが分割コンテンツの場合、分割コンテンツのファイルサイズに着目するのではなく、分割コンテンツを構成要素とするコンテンツの全体ファイルサイズに着目しても良い。この場合、ユーザノードがコンテンツ保持ノードからファイルサイズの大きいコンテンツの構成要素である分割コンテンツを取得し易くすることができる。そのため、コンテンツ管理サーバSAが、ファイルサイズの大きいコンテンツをユーザノードへ送信するために通信帯域が占有されるのを回避することができる。
【0082】
(2)送信優先基準b:タイムスタンプが新しいコンテンツを優先する。
ここで、タイムスタンプは、ノードNnにインストールされたオペレーティングシステムにより管理されるコンテンツの管理情報の一例である。また、タイムスタンプは、コンテンツの取得時又は再生時にコンテンツに付与される。タイムスタンプが最新のンテンツは、最近取得又は再生されたコンテンツであるので、人気のあるコンテンツということができる。送信優先基準bによれば、ユーザノードがコンテンツ保持ノードから人気のあるコンテンツを取得し易くすることができる。そのため、ユーザノードが人気のあるコンテンツを取得するために、コンテンツ管理サーバSAにアクセス集中することを低減することができる。従って、コンテンツ管理サーバSAの負荷を低減することができる。
【0083】
(3)送信優先基準c:公開開始日時が現在日時に近いコンテンツを優先する。
ここで、公開開始日時が現在日時に近いコンテンツは、アクセス集中が予想されるコンテンツということができる。送信優先基準cによれば、ユーザノードがコンテンツ保持ノードからアクセス集中が予想されるコンテンツを取得し易くすることができる。そのため、ユーザノードが、アクセス集中が予想されるコンテンツを取得するために、コンテンツ管理サーバSAにアクセス集中することを低減することができる。従って、コンテンツ管理サーバSAの負荷を低減することができる。
【0084】
(4)送信優先基準d:公開終了日時が現在日時に近いコンテンツを優先する。
ここで、公開終了日時が現在日時に近いコンテンツは、アクセス集中が予想されるコンテンツということができる。送信優先基準dによれば、ユーザノードがコンテンツ保持ノードからアクセス集中が予想されるコンテンツを取得し易くすることができる。そのため、ユーザノードがアクセス集中が予想されるコンテンツを取得するために、コンテンツ管理サーバSAにアクセス集中することを低減することができる。従って、コンテンツ管理サーバSAの負荷を低減することができる。
【0085】
なお、公開終了日時が現在日時に近いコンテンツを優先することに代えて、公開終了日時が現在日時から遠いコンテンツを優先することを送信優先基準dとしてもよい。この場合、公開終了日時までの時間までの期間に、より多くのユーザノードがコンテンツを取得することができる。
【0086】
(5)送信優先基準e:コンテンツ保持ノードの数が少ないコンテンツを優先する。
ここで、コンテンツ保持ノードの数は、上述した検索処理により取得されたインデックス情報に示されるコンテンツ保持ノードの数である。送信優先基準eによれば、ユーザノードがコンテンツ保持ノードから、コンテンツ保持ノードの数が少ないコンテンツを取得し易くすることができる。そのため、ユーザノードがコンテンツ保持ノードの数が少ないコンテンツを取得しているためにユーザノードもコンテンツ保持ノードとして機能することが可能になる。そのため、コンテンツ管理サーバSAにアクセス集中することを低減することができる。従って、コンテンツ管理サーバSAの負荷を低減することができる。
【0087】
(6)送信優先基準f:コンテンツ管理サーバから取得されたコンテンツを優先する。
ここで、コンテンツがコンテンツ管理サーバSAから取得されたということは、コンテンツ保持ノードの数が少ないということができる。また、コンテンツ管理サーバSAからコンテンツが取得されるということは、コンテンツ保持ノードにアクセスが集中しているということができる。送信優先基準fによれば、ユーザノードがコンテンツ保持ノードから、コンテンツ保持ノードの数が少ないコンテンツを取得し易くすることができる。そのため、ユーザノードがコンテンツ保持ノードの数が少ないコンテンツを取得しているためにユーザノードもコンテンツ保持ノードとして機能することが可能になる。そのため、コンテンツ管理サーバSAにアクセス集中することを低減することができる。従って、コンテンツ管理サーバSAの負荷を低減することができる。
【0088】
なお、上記送信優先基準a〜fの組合せを送信優先基準として設定しても良い。
【0089】
3.コンテンツ配信システムSの動作
次に、図3乃至図5を参照して、コンテンツ配信システムSの動作について説明する。
【0090】
図3は、ノードNnの制御部11におけるメイン処理の一例を示すフローチャートである。また、図4は、図3に示すステップS4におけるパブリッシュ処理の一例を示すフローチャートである。また、図5(A)は、図4に示すステップS47における送信優先基準に基づくパブリッシュ処理の一例を示すフローチャートである。また、図5(B)は、図4に示すステップS48における複数ディレクトリに対応したパブリッシュ処理の一例を示すフローチャートである。なお、図3乃至図5に示す処理は、コンテンツ配信システムSにおける全てのノードNnに共通する。
【0091】
図3に示す処理は、例えばノードNnにおいて電源オンがなされると開始される。
【0092】
先ず、制御部11は、パブリッシュ処理の終了時刻を“0:00”に設定する(ステップS1)。
【0093】
次いで、制御部11は、オーバーレイネットワーク9への参加処理を実行する(ステップS2)。具体的には、参加処理において、制御部11は、コンタクトノードに参加要求メッセージを送信する。これにより、コンタクトノード等から送信されてきた応答メッセージに含まれるノード情報等を用いてDHTを用いたルーティングテーブルを生成する。これにより、ノードNnは、オーバーレイネットワーク9に参加することになる。
【0094】
制御部11は、電源オフ指令があったか否かを判別する(ステップS3)。そして、制御部11は、電源オフ指令がない場合には(ステップS3:NO)、ステップS4に進む。一方、電源オフ指令があった場合には(ステップS3:YES)、制御部11は、オーバーレイネットワーク9からの脱退処理を実行する(ステップS5)。脱退処理後、図3に示す処理は終了する。
【0095】
ステップS4では、制御部11は、パブリッシュ処理を実行する。
【0096】
パブリッシュ処理では、図4に示すように、制御部11は、先ず、前回のパブリッシュ処理の終了時刻から所定時間T1以上経過しているか否かを判別する(ステップS41)。所定時間T1により、パブリッシュメッセージの送信が所定の時間間隔で行われるようになる。ここで、所定時間T1は、例えば30分程度に予め設定される。ただし、ノードのNnの参加、脱退が頻繁に行われる環境では、ルートノードが変わる可能性があるので、所定時間T1は、短くした方が良い。例えば、コンタクトノードが、一定期間内に受信した参加要求メッセージの数に基づいて所定時間T1を決定する。例えば、参加要求メッセージの数が多い場合には所定時間T1が短い時間に決定される。一方、参加要求メッセージが少ない場合には所定時間T1が長い時間に決定される。決定された所定時間T1はDHTマルチキャストで全ノードNnに通知される。そして、各ノードNnは通知された所定時間T1を設定する。
【0097】
そして、制御部11は、前回のパブリッシュ処理の終了時刻から所定時間T1以上経過していないと判別した場合には(ステップS41:NO)、図3に示す処理に戻る。
【0098】
一方、制御部11は、前回のパブリッシュ処理の終了時刻から所定時間T1以上経過したと判別した場合には(ステップS41:YES)、ステップS43に進む。ステップS43では、制御部11は、記憶部12におけるコンテンツ記憶領域にコンテンツが保存されているか否かを判別する。この判別は、例えば、コンテンツ格納用ディレクトリにキャッシュファイルが格納されているか否かが確認されることにより行われる。
【0099】
そして、制御部11は、コンテンツ記憶領域にコンテンツが保存されていないと判別した場合には(ステップS43:NO)、ステップS49に移行する。ステップS49では、制御部11は、パブリッシュ処理の終了時刻を現在時刻に設定し、図3に示す処理に戻る。
【0100】
一方、制御部11は、コンテンツ記憶領域にコンテンツが保存されていると判別した場合には(ステップS43:YES)、ステップS44に進む。
【0101】
ステップS44では、制御部11は、コンテンツ格納用ディレクトリに格納されているキャッシュファイルの数が、所定数M1以下であるか否かを判別する。なお、複数のコンテンツ格納用ディレクトリが設けられている場合、キャッシュファイルの数は、各コンテンツ格納用ディレクトリに格納されているキャッシュファイルの数の総和である。
【0102】
ここで、所定数M1は、ネットワーク8等に負荷をかけずに一度に送信可能なパブリッシュメッセージの数に設定される。例えば、所定数M1は、100程度に予め設定される。
【0103】
そして、制御部11は、キャッシュファイルの数が所定数M1以下であると判別した場合には(ステップS44:YES)、ステップS45に進む。ステップS45では、制御部11は、キャッシュファイルとして保存されているコンテンツのパブリッシュメッセージを、ルートノード宛に送信し、ステップS49に移行する。ステップS49では、制御部11は、パブリッシュ処理の終了時刻を現在時刻に設定し、図3に示す処理に戻る。
【0104】
一方、キャッシュファイルの数が所定数M1以下でないと判別した場合には(ステップS44:NO)、ステップS46に進む。ステップS46では、制御部11は、コンテンツ格納用ディレクトリが複数に分かれているか否かを判別する。
【0105】
そして、制御部11は、コンテンツ格納用ディレクトリが複数に分かれていないと判別した場合には(ステップS46:NO)、ステップS47に進む。一方、制御部11は、コンテンツ格納用ディレクトリが複数に分かれていると判別した場合には(ステップS46:YES)、ステップS48に進む。
【0106】
ステップS47では、制御部11は、送信優先基準に基づくパブリッシュ処理を実行する。送信優先基準に基づくパブリッシュ処理では、図5(A)に示すように、制御部11は、予め設定された送信優先基準にしたがって、コンテンツ格納用ディレクトリに格納されている複数のキャッシュファイルをソートし、パブリッシュリストを作成する(ステップS471)。パブリッシュリストには、例えば、パブリッシュメッセージの送信順に各コンテンツのコンテンツIDが記述される。
【0107】
例えば、上述した送信優先基準a又は送信優先基準bが設定されている場合、制御部11は、オペレーティングシステムから各コンテンツの管理情報として、ファイルサイズ又はタイムスタンプを取得する。なお、ファイルサイズ及びタイムスタンプ以外の情報を取得するように構成しても良い。そして、制御部11は、取得した管理情報に基づき、各コンテンツのパブリッシュメッセージの送信順序を決定する。オペレーティングシステムにより管理される管理情報は、ノードNnの記憶部12等に記憶されている。そのため、制御部11は、パブリッシュメッセージの送信順序を決定するための情報をネットワーク等を介さず、オペレーティングシステムから迅速に取得することができる。
【0108】
より具体的には、上述した送信優先基準aが設定されている場合、制御部11は、オペレーティングシステムから取得したファイルサイズの大きい順に各コンテンツのパブリッシュメッセージを送信する送信順序を決定する。次いで、制御部11は、決定した送信順序で、即ち、ファイルサイズの大きい順に各コンテンツのコンテンツIDを記述したパブリッシュリストを作成する。
【0109】
また、上述した送信優先基準bが設定されている場合、制御部11は、オペレーティングシステムから取得したタイムスタンプが新しい順に各コンテンツのパブリッシュメッセージを送信する送信順序を決定する。次いで、制御部11は、決定した送信順序で、即ち、タイムスタンプが新しい順に各コンテンツのコンテンツIDを記述したパブリッシュリストを作成する。なお、分割コンテンツの場合、制御部11は、分割コンテンツを構成要素とするコンテンツの全体ファイルサイズをオペレーティングシステムから取得するように構成しても良い。この場合、制御部11は、全体ファイルサイズの大きい順に各コンテンツのパブリッシュメッセージを送信する送信順序を決定する。
【0110】
なお、送信優先基準aと送信優先基準bの組合せが設定されるように構成しても良い。この場合、制御部11は、ファイルサイズの大きい順、かつタイムスタンプが新しい順に各コンテンツのパブリッシュメッセージを送信する送信順序を決定する。例えば、制御部11は、ファイルサイズの大きい順に高くなる得点を各コンテンツに付与すると共に、タイムスタンプが新しい順に高くなる得点を各コンテンツに付与する。そして、制御部11は、この2つの得点の合計が大きい順に各コンテンツのパブリッシュメッセージの送信 順序を決定する。この構成によれば、コンテンツ管理サーバSAが、ファイルサイズの大きいコンテンツをユーザノードへ送信するために通信帯域が占有されるのを回避することができる。加えて、ユーザノードが人気のあるコンテンツを取得するために、コンテンツ管理サーバSAにアクセス集中することを低減することができる。
【0111】
また、例えば、上述した送信優先基準c又は送信優先基準dが設定されている場合、制御部11は、各コンテンツの属性情報として、公開開始日時又は公開終了日時をコンテンツカタログ情報から取得する。なお、公開開始日時及び公開終了日時以外の情報を取得するように構成しても良い。そして、制御部11は、取得した属性情報に基づき、各コンテンツのパブリッシュメッセージの送信順序を決定する。コンテンツカタログ情報は、ノードNnの記憶部12に記憶されている。そのため、制御部11は、パブリッシュメッセージの送信順序を決定するための情報をコンテンツカタログ情報から迅速に取得することができる。
【0112】
より具体的には、上述した送信優先基準cが設定されている場合、制御部11は、コンテンツカタログ情報から各コンテンツの公開開始日時を取得する。次いで、制御部11は、取得した公開開始日時が現在日時に近い順に各コンテンツのパブリッシュメッセージを送信する送信順序を決定する。次いで、制御部11は、決定した送信順序で、即ち、公開開始日時が現在日時に近い順に各コンテンツのコンテンツIDを記述したパブリッシュリストを作成する。
【0113】
また、上述した送信優先基準dが設定されている場合、制御部11は、コンテンツカタログ情報から各コンテンツの公開終了日時を取得する。次いで、制御部11は、取得した公開終了日時が現在日時に近い順に各コンテンツのパブリッシュメッセージを送信する送信順序を決定する。次いで、制御部11は、決定した送信順序で、即ち、公開終了日時が現在日時に近い順に各コンテンツのコンテンツIDを記述したパブリッシュリストを作成する。なお、制御部11は、取得した公開終了日時が現在日時から遠い順にパブリッシュメッセージを送信する送信順序を決定するように構成しても良い。
【0114】
また、上述した送信優先基準eが設定されている場合、制御部11は、各キャッシュファイルに対応付けられて記憶されたノード数情報を取得する。次いで、制御部11は、ノード数情報に示されるコンテンツ保持ノードの数が少ない順に各コンテンツのパブリッシュメッセージを送信する送信順序を決定する。次いで、制御部11は、決定した送信順序で各コンテンツのコンテンツIDを記述したパブリッシュリストを作成する。即ち、コンテンツ保持ノードの数が少ない順に、各コンテンツのコンテンツIDが記述されたパブリッシュリストが作成される。
【0115】
また、上述した送信優先基準fが設定されている場合、制御部11は、各キャッシュファイルに対応付けられて記憶された種別情報を取得する。次いで、制御部11は、種別情報に示される装置の種別がサーバであるコンテンツのパブリッシュメッセージの送信を優先とする送信順序を決定する。次いで、制御部11は、決定した送信順序で各コンテンツのコンテンツIDを記述したパブリッシュリストを作成する。即ち、コンテンツ管理サーバSAから取得されたコンテンツを優先とする順に、各コンテンツのコンテンツIDが記述されたパブリッシュリストが作成される。このように優先とされたコンテンツは、パブリッシュメッセージの送信順序が上位にくることになる。
【0116】
なお、送信優先基準eと送信優先基準fの組合せが設定されるように構成しても良い。この場合、例えば、制御部11は、コンテンツ管理サーバSAから取得されたコンテンツのパブリッシュメッセージの送信を最優先としてより上位に順位付ける。そして、制御部11は、コンテンツ管理サーバSAから取得されたコンテンツのパブリッシュメッセージの送信順位より下位に、コンテンツ保持ノードの数が少ないコンテンツのパブリッシュメッセージの送信を順位付ける。コンテンツ管理サーバSAから取得されたコンテンツの方が、コンテンツ保持ノードの数が少ないコンテンツよりも取得し難いと言える。従って、この構成によれば、より取得し難いコンテンツのパブリッシュメッセージの送信をより優先することができる。
【0117】
次いで、制御部11は、作成したパブリッシュリストから上位所定数M2のコンテンツIDを取得する(ステップS472)。ここで、所定数M2は、一度に連続して送信するパブリッシュメッセージの数を制限するためのものである。所定数M2は、例えば、ノードNnの処理能力等のスペックに基づき設定することができる。所定数M2は、例えば50程度に予め設定される。M2=50に設定された場合、パブリッシュリストから1位から50位までのコンテンツIDがパブリッシュリストから取得される。
【0118】
次いで、制御部11は、取得した所定数M2のコンテンツIDをパブリッシュリストから削除する(ステップS473)。制御部11は、パブリッシュリストからコンテンツIDを削除すると、削除したコンテンツIDより下位のコンテンツIDの順位を繰り上げる。
【0119】
次いで、制御部11は、取得した各コンテンツIDを含む各パブリッシュメッセージを、各ルートノード宛に送信する(ステップS474)。例えば、制御部11は、送信順序1位から順に、コンテンツIDが含まれるパブリッシュメッセージを生成する。そして、制御部11は、生成したパブリッシュメッセージをルートノード宛に送信する。こうして、例えば、送信優先基準aが設定されている場合、ファイルサイズの大きいコンテンツの順にパブリッシュメッセージが送信される。
【0120】
次いで、制御部11は、パブリッシュリストが空になったか否かを判別する(ステップS475)。この処理は、パブリッシュリストに記述されたコンテンツIDが無くなるまで繰り返し行われる。そして、制御部11は、パブリッシュリストが空になっていないと判別した場合には(ステップS475:NO)、ステップS476に進む。一方、そして、制御部11は、パブリッシュリストが空になったと判別した場合には(ステップS475:YES)、図4に示す処理に戻る。図4に示す処理に戻ると、制御部11は、パブリッシュ処理の終了時刻を現在時刻に設定し(ステップS49)、図3に示す処理に戻る。
【0121】
次いで、制御部11は、所定時間T2待機し(ステップS476)、ステップS472に戻る。ここで、所定時間T2は、ノードNn及びネットワーク8にかかる負荷を低減するために、時間を空けながらゆっくりとパブリッシュメッセージの送信を行うためのものである。所定時間T2は、例えば、ノードNnの処理能力等のスペックに基づき設定することができる。所定時間T2は、例えば500ミリ秒程度に予め設定される。所定時間T2と、上記所定数M2とにより、例えば、50個のパブリッシュメッセージの送信→500ミリ秒休み→50個のパブリッシュメッセージの送信→500ミリ秒休み→・・・と処理が繰り返されることになる。
【0122】
ステップS48では、制御部11は、複数ディレクトリに対応したパブリッシュ処理を実行する。このパブリッシュ処理では、制御部11は、先ず、全てのコンテンツ格納用ディレクトリのディレクトリ番号をディレクトリリストに記述する。そして、図5(B)に示すように、制御部11は、この制御部11を備えるノードNn自身に割り当てられたノードIDの所定桁目の値に対応するディレクトリを基準ディレクトリとして決定する(ステップS481)。
【0123】
例えば、「所定桁目」を16進数で構成されたノードIDの上位1桁目とする。この場合、ノードIDの上位1桁目が“2”であるとすると、ディレクトリ番号が“2”のコンテンツ格納用ディレクトリが基準ディレクトリとして決定される。つまり、この例では、ノードIDの1桁目の値と一致するディレクトリ番号が付与されたコンテンツ格納用ディレクトリが基準ディレクトリとして決定される。この場合、ディレクトリ番号が“2”のコンテンツ格納用ディレクトリには、コンテンツIDの上位1桁目が“2”のキャッシュファイルが格納されている。なお、ノードIDの複数の桁目の値と一致するディレクトリ番号が付与されたコンテンツ格納用ディレクトリが基準ディレクトリとして決定されるように構成しても良い。
【0124】
次いで、制御部11は、決定された基準ディレクトリに対して、上述した図5(A)に示す送信優先基準に基づくパブリッシュ処理を実行する(ステップS482)。つまり、ステップS481及びステップS482の処理により、制御部11は、基準ディレクトリに属するコンテンツのパブリッシュメッセージの送信を優先とする送信順序を決定する。そして、制御部11は、決定した送信順序でパブリッッシュメッセージを送信する。言い換えれば、基準ディレクトリに格納されたキャッシュファイルに対応するパブリッシュメッセージの送信が、他のコンテンツ格納用ディレクトリに格納されたキャッシュファイルより優先される。オーバーレイネットワーク9に参加しているノードNnのノードIDの所定桁目の値は、例えば16進数とすると0〜Fの間でほぼ均等に分散される。つまり、ノードIDがSHA−1等のハッシュ関数により生成される場合、ハッシュ関数の特性より、ノードIDはさほど偏ることなく均等に分散される。その結果、ノードIDの所定桁目の値は、例えば16進数とすると0〜Fの間でほぼ均等に分散される。そのため、パブッリシュメッセージにより公開されるコンテンツを偏り無くほぼ均等に分散されることができる。その結果、特定のコンテンツへのアクセス集中を回避することができる。
【0125】
そして、ステップS482のパブリッシュ処理が終了すると、制御部11は、パブリッシュ処理されたコンテンツ格納用ディレクトリのディレクトリ番号をディレクトリリストから削除する。そして、制御部11は、全てのコンテンツ格納用ディレクトリに対して送信優先基準に基づくパブリッシュ処理を実行したか否かを判別する(ステップS483)。この判別は、例えば、ディレクトリリストにディレクトリ番号が記述されているか否かにより行われる。ディレクトリリストにディレクトリ番号が記述されていなければ、全てのコンテンツ格納用ディレクトリに対して送信優先基準に基づくパブリッシュ処理が実行されたことになる。
【0126】
そして、制御部11は、全てのコンテンツ格納用ディレクトリに対して送信優先基準に基づくパブリッシュ処理を実行したと判別した場合には(ステップS483:YES)、図4に示す処理に戻る。図4に示す処理に戻ると、制御部11は、パブリッシュ処理の終了時刻を現在時刻に設定し(ステップS49)、図3に示す処理に戻る。
【0127】
一方、制御部11は、全てのコンテンツ格納用ディレクトリに対して送信優先基準に基づくパブリッシュ処理を実行していないと判別した場合には(ステップS483:NO)、ステップS484に進む。
【0128】
ステップS484では、制御部11は、次に処理すべきコンテンツ格納用ディレクトリを選択する。例えば、制御部11は、ステップS482で処理したディレクトリのディレクトリ番号に“1”を加算する。なお、ディレクトリ番号から“1”を減算しても良い。そして、制御部11は、加算又は減算して得られたディレクトリ番号が付与されたコンテンツ格納用ディレクトリを、次に処理すべきコンテンツ格納用ディレクトリとして選択する。
【0129】
次いで、制御部11は、所定時間T3待機し(ステップS485)、ステップS482に戻る。所定時間T3は、所定時間T2と同様、ノードNn及びネットワーク8にかかる負荷を低減するために、時間を空けながらゆっくりとパブリッシュメッセージの送信を行うためのものである。コンテンツ格納用ディレクトリが複数ある場合、1つのコンテンツ格納用ディレクトリに格納されるキャッシュファイルの数は少なくなる。この場合、ステップS482における送信優先基準に基づくパブリッシュ処理において、図5(A)に示すステップS476の所定時間T2待機する処理が実行されない場合が生じる。つまり、ステップS482に移行した直後のステップS471〜ステップS473において、所定数M2のコンテンツIDがパブリッシュリストから削除されることによりパブリッシュリストが空になる場合(ステップS475:YES)がある。この場合、ステップS476の所定時間T2待機する処理は一度も実行されることなく、図5(B)に示す処理に戻る。このような場合、所定時間T3は所定時間T2と同様の時間に設定される。なお、所定時間T2待機する処理が実行される場合、例えば、所定時間T3は“0”としてよい。
【0130】
そして、ステップS482に戻ると、制御部11は、ステップS484で選択したコンテンツ格納用ディレクトリに対して、上述した図5(A)に示す送信優先基準に基づくパブリッシュ処理を実行する。
【0131】
図3に示す処理に戻り、ステップS6では、制御部11は、他のノードNnから送信されたパブリッシュメッセージを受信したか否かを判別する。そして、制御部11は、パブリッシュメッセージを受信したと判別した場合には(ステップS6:YES)、ステップS7へ進む。一方、制御部11は、パブリッシュメッセージを受信していないと判別した場合には(ステップS6:NO)、ステップS10に進む。
【0132】
ステップS7では、制御部11は、パブリッシュメッセージに含まれるコンテンツID及びIPアドレス等を、インデックス情報としてインデックスキャッシュ領域に記憶する。
【0133】
次いで、制御部11は、この制御部11を備えるノードNnが、ルートノードであるか否かを判別する(ステップS8)。例えば、制御部11は、この制御部11を備えるノードNnのノードIDが、DHTを用いたルーティングテーブルに登録されているどのノードIDよりも上記コンテンツIDと近い場合、ルートノードであると判別する。
【0134】
そして、制御部11は、ルートノードでないと判別した場合には(ステップS8:NO)、ステップS9に進む。一方、制御部11は、ルートノードであると判別した場合には(ステップS8:YES)、ステップS10に進む。
【0135】
ステップS9では、制御部11は、DHTを用いたルーティングテーブルにしたがって、パブリッシュメッセージを他のノードNnに転送し、ステップS10に進む。
【0136】
ステップS10では、制御部11は、その他の処理を実行する。その他の処理では、例えば、コンテンツの再生処理、各種メッセージの送受信処理等が実行される。
【0137】
なお、上記動作例において、キャッシュファイルが複数のコンテンツ格納用ディレクトリに格納されて管理されなくとも良い。この場合、上述したステップS48の処理は実行されない。
【0138】
以上説明したように、上記実施形態によれば、パブリッシュ処理において、予め設定された送信優先基準にしたがって、各コンテンツのパブリッシュメッセージの送信順序を制御するように構成した。そのため、多くのコンテンツのパブリッシュメッセージが送信される状況下であっても、ユーザノードがコンテンツ保持ノードからコンテンツを取得し易くすることができる。従って、コンテンツ管理サーバSAの負荷を低減することができる。
【0139】
なお、上記実施形態において、オーバーレイネットワーク9は、DHTを利用したアルゴリズムにより形成されるように構成した。しかし、これに限定されるものではなく、その他のアルゴリズムによりオーバーレイネットワーク9が形成されるものであっても良い。つまり、DHT以外のルーティングテーブルがノードに用いられるシステムであっても良い。なお、DHTを利用しないピアツーピアシステムとしては、例えば、ハイブリッド型のピアツーピアシステムがある。また、上記実施形態においては、ルートノードがコンテンツの所在を管理するように構成したが、ルートノード以外の管理装置がコンテンツの所在を管理するように構成してもよい。
【符号の説明】
【0140】
8 ネットワーク
9 オーバーレイネットワーク
11 制御部
12 記憶部
13 バッファメモリ
14 デコーダ部
15 映像処理部
16 表示部
17 音声処理部
18 スピーカ
19 通信部
19a 入力部
19b バス
SA コンテンツ管理サーバ
Nn ノード
S コンテンツ配信システム

【特許請求の範囲】
【請求項1】
複数のコンテンツデータが複数のノード装置に分散して記憶されるコンテンツ配信システムに含まれるノード装置であって、
複数の前記コンテンツデータを記憶する記憶手段と、
前記コンテンツデータを記憶していることを他のノード装置に公開するための公開メッセージを当該コンテンツデータの所在を管理するノード装置または他の装置宛に送信する送信手段と、
予め設定された送信優先基準にしたがって、各前記コンテンツデータの前記公開メッセージの送信順序を制御する送信制御手段と、
を備えることを特徴とするノード装置。
【請求項2】
前記送信制御手段は、
前記ノード装置にインストールされたオペレーティングシステムにより管理される各前記コンテンツデータの管理情報を取得する取得手段と、
前記取得された管理情報に基づき、前記公開メッセージの送信順序を決定する決定手段と、を備え、
前記送信制御手段は、前記決定手段により決定された前記送信順序を、前記送信優先基準として、前記公開メッセージの送信順序を制御することを特徴とする請求項1に記載のノード装置。
【請求項3】
前記取得手段は、前記各コンテンツデータの管理情報として、当該各コンテンツデータの取得時又は再生時に付与されたタイムスタンプを取得し、
前記決定手段は、前記タイムスタンプが新しい順に前記公開メッセージを送信する送信順序を決定することを特徴とする請求項2に記載のノード装置。
【請求項4】
前記取得手段は、前記各コンテンツデータの管理情報として、当該各コンテンツデータのファイルサイズを取得し、
前記決定手段は、前記ファイルサイズの大きい順に前記公開メッセージを送信する送信順序を決定することを特徴とする請求項2に記載のノード装置。
【請求項5】
前記コンテンツ配信システムに含まれる各ノード装置は、複数の分割コンテンツデータから構成されるコンテンツデータをノード装置に分散して記憶し、
前記コンテンツ配信システムに含まれる各ノード装置は、
前記記憶手段に記憶されているコンテンツデータは、前記分割コンテンツデータであり、
前記取得手段は、前記コンテンツデータの管理情報として、前記分割コンテンツデータを構成要素とするコンテンツデータの全体ファイルサイズを取得し、
前記決定手段は、前記全体ファイルサイズの大きい順に前記公開メッセージを送信する送信順序を決定することを特徴とする請求項2に記載のノード装置。
【請求項6】
前記送信制御手段は、
前記ノード装置に配信されたコンテンツカタログ情報に記述される各前記コンテンツデータの属性情報を取得する取得手段と、
前記取得された属性情報に基づき、前記公開メッセージの送信順序を決定する決定手段と、
前記送信制御手段は、前記決定手段により決定された前記送信順序を、前記送信優先基準として、前記公開メッセージの送信順序を制御することを特徴とする請求項1に記載のノード装置。
【請求項7】
前記取得手段は、前記各コンテンツデータの属性情報として、当該各コンテンツデータが前記コンテンツ配信システムで利用開始となる利用開始日時を取得し、
前記決定手段は、前記利用開始日時が現在日時に近い順に前記公開メッセージを送信する送信順序を決定することを特徴とする請求項6に記載のノード装置。
【請求項8】
前記取得手段は、前記各コンテンツデータの属性情報として、当該各コンテンツデータが前記コンテンツ配信システムで利用終了となる利用終了日時を取得し、
前記決定手段は、前記利用終了日時が現在日時に近い順に前記公開メッセージを送信する送信順序を決定することを特徴とする請求項6に記載のノード装置。
【請求項9】
前記ノード装置は、
指定されたコンテンツデータを記憶しているノード装置の検索処理を実行する検索手段と、
前記検索処理によりノード装置が発見できた場合には、当該発見されたノード装置から、前記指定されたコンテンツデータを取得する第1コンテンツ取得手段と、
前記検索処理により発見されたノード装置の数と、前記取得されたコンテンツデータとを対応付けて前記記憶手段に記憶させる記憶制御手段と、
を備え、
前記送信制御手段は、
各前記コンテンツデータに対応付けられた前記ノード装置の数を取得する取得手段と、
前記取得されたノード装置の数が少ない順に前記公開メッセージを送信する送信順序を決定する決定手段と、
を備え、
前記送信制御手段は、前記決定手段により決定された前記送信順序を、前記送信優先基準として、前記公開メッセージの送信順序を制御することを特徴とする請求項1に記載のノード装置。
【請求項10】
指定されたコンテンツデータを記憶しているノード装置の検索処理を実行する検索手段と、
前記検索処理によりノード装置が発見できた場合には、当該発見されたノード装置から、前記指定されたコンテンツデータを取得する第1コンテンツ取得手段と、
前記検索処理によりノード装置が発見できない場合又は発見されたノード装置からコンテンツデータを取得できない場合には、前記複数のコンテンツデータを記憶しているサーバ装置から、前記指定されたコンテンツデータを取得する第2コンテンツ取得手段と、
を備えることを特徴とする請求項1から請求項9の何れか一項に記載のノード装置。
【請求項11】
前記ノード装置は、
指定されたコンテンツデータを記憶しているノード装置の検索処理を実行する検索手段と、
前記検索処理によりノード装置が発見できた場合には、当該発見されたノード装置から、前記指定されたコンテンツデータを取得する第1コンテンツ取得手段と、
前記検索処理によりノード装置が発見できない場合又は発見されたノード装置からコンテンツデータを取得できない場合には、前記複数のコンテンツデータを記憶しているサーバ装置から、前記指定されたコンテンツデータを取得する第2コンテンツ取得手段と、
前記取得されたコンテンツデータと、当該コンテンツデータを送信した装置の種別とを対応付けて前記記憶手段に記憶させる記憶制御手段と、
を備え、
前記送信制御手段は、
各前記コンテンツデータに対応付けられた前記装置の種別を取得する取得手段と、
前記取得された装置の種別がサーバ装置であるコンテンツデータの前記公開メッセージの送信を優先とする送信順序を決定する決定手段と、
を備え、
前記送信制御手段は、前記決定手段により決定された前記送信順序を、前記送信優先基準として、前記公開メッセージの送信順序を制御することを特徴とする請求項1から請求項10のいずれか一項に記載のノード装置。
【請求項12】
前記コンテンツ配信システムに含まれる各ノード装置には、所定桁数からなるノードIDが割り当てられ、
前記複数のコンテンツデータは、複数のグループの何れかに属しており、
前記送信制御手段は、
当該送信制御手段を備えるノード装置自身に割り当てられたノードIDの所定桁目の値に対応するグループを決定する第1決定手段と、
前記決定されたグループに属するコンテンツデータの前記公開メッセージの送信を優先とする送信順序を決定する第2決定手段と、
を備えることを特徴とする請求項1から請求項11のいずれか一項に記載のノード装置。
【請求項13】
複数のコンテンツデータが複数のノード装置に分散して記憶され、前記複数のコンテンツデータの所在が複数のノード装置に管理されるコンテンツ配信システムのノード装置に含まれるコンピュータを、
複数の前記コンテンツデータを記憶する記憶ステップと、
前記コンテンツデータを記憶していることを他のノード装置に公開するための公開メッセージを当該コンテンツデータの所在を管理するノード装置宛に送信する送信ステップと、
予め設定された送信優先基準にしたがって、各前記コンテンツデータの前記公開メッセージの送信順序を制御する送信制御ステップと、
を実行させるためのノードプログラム。
【請求項14】
複数のコンテンツデータが複数のノード装置に分散して記憶され、前記複数のコンテンツデータの所在が複数のノード装置に管理されるコンテンツ配信システムであって、
前記ノード装置は、
複数の前記コンテンツデータを記憶する記憶手段と、
前記コンテンツデータを記憶していることを他のノード装置に公開するための公開メッセージを当該コンテンツデータの所在を管理するノード装置宛に送信する送信手段と、
予め設定された送信優先基準にしたがって、各前記コンテンツデータの前記公開メッセージの送信順序を制御する送信制御手段と、
を備えることを特徴とするコンテンツ配信システム。
【請求項15】
複数のコンテンツデータが複数のノード装置に分散して記憶され、前記複数のコンテンツデータの所在が複数のノード装置に管理されるコンテンツ配信システムにおける公開メッセージ送信方法であって、
前記ノード装置が、複数の前記コンテンツデータを記憶する記憶ステップと、
前記ノード装置が、前記コンテンツデータを記憶していることを他のノード装置に公開するための公開メッセージを当該コンテンツデータの所在を管理するノード装置宛に送信する送信ステップと、
前記ノード装置が、予め設定された送信優先基準にしたがって、各前記コンテンツデータの前記公開メッセージの送信順序を制御する送信制御ステップと、
を含むことを特徴とする公開メッセージ送信方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2011−70588(P2011−70588A)
【公開日】平成23年4月7日(2011.4.7)
【国際特許分類】
【出願番号】特願2009−223353(P2009−223353)
【出願日】平成21年9月28日(2009.9.28)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】