以下、本発明の最良の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、DHT(Distributed Hash Table)を利用したコンテンツ配信システムに本発明を適用した場合の実施形態である。
[1.コンテンツ配信システムの構成等]
始めに、図1を参照して、情報配信システムの一例としてのコンテンツ配信システムの概要構成等について説明する。
図1は、本実施形態に係るコンテンツ配信システムにおける各ノード装置の接続態様の一例を示す図である。
図1の下部枠101内に示すように、IX(Internet eXchange)3、ISP(Internet Service Provider)4、DSL(Digital Subscriber Line)回線事業者(の装置)5、FTTH(Fiber To The Home)回線事業者(の装置)6、および通信回線(例えば、電話回線や光ケーブル等)7等によって、インターネット等のネットワーク(現実世界のネットワーク)8が構築されている。なお、図1の例におけるネットワーク(通信ネットワーク)8には、メッセージ(パケット)を転送するためのルータが、適宜挿入されているが図示を省略している。
コンテンツ配信システムSは、このようなネットワーク8を介して相互に接続された複数のノード装置(以下、「ノード」という)A,B,C・・・X,Y,Z・・・を備えて構成されることになり、ピアツーピア方式のネットワークシステムとなっている。各ノードA,B,C・・・X,Y,Z・・・には、固有の製造番号及び宛先情報としてのIP(Internet Protocol)アドレスが割り当てられている。このような製造番号およびIPアドレスは、複数のノード間で重複しないものである。
次に、本実施形態に係る分散ハッシュテーブル(以下、「DHT」という)を利用したアルゴリズムについて説明する。
上述したコンテンツ配信システムSにおいて、当該ノード同士が、互いに情報をやり取りする際には、お互いのIPアドレス等を知っていなければならない。
例えば、コンテンツを互いに共有するシステムにおいては、ネットワーク8に参加している各ノードが互いにネットワーク8に参加している全てのノードのIPアドレスを知っておくのが単純な手法であるが、端末数が何万何十万と多数になると、その全てのノードのIPアドレスを覚えておくのは現実的ではない。また、任意のノードの電源がON或いはOFFとすると、各ノードにて記憶している当該任意のノードのIPアドレスの更新が頻繁になり、運用上困難となる。
そこで、1台のノードでは、ネットワーク8に参加している全てのノードのうち、必要最低限のノードのIPアドレスだけを覚えて(記憶して)おいて、IPアドレスを知らない(記憶していない)ノードについては、各ノード間で互いに情報を転送し合って届けてもらうというシステムが考案されている。
このようなシステムの一例として、DHTを利用したアルゴリズムによって、図1の上部枠100内に示すような、オーバーレイネットワーク9が構築されることになる。つまり、このオーバーレイネットワーク9は、既存のネットワーク8を用いて形成された仮想的なリンクを構成するネットワークを意味する。
本実施形態においては、DHTを利用したアルゴリズムによって構築されたオーバーレイネットワーク9を前提としており、このオーバーレイネットワーク9上に配置されたノードを、オーバーレイネットワーク9に参加しているノードという。なお、オーバーレイネットワーク9への参加は、未だ参加していないノードが、既に参加している任意のノード(例えば、オーバーレイネットワーク9に常時参加しているコンタクトノード)に対して参加要求を送ることによって行われる。
また、各ノードは、固有のノード識別情報としてのノードIDを有しており、当該ノードIDは、例えば、IPアドレスあるいは製造番号を共通のハッシュ関数(例えば、SHA−1等)によりハッシュ化して得た一定桁数からなるハッシュ値であり、一つのID空間に偏りなく分散して配置されることになる。このノードIDは、ノードの最大運用台数を収容できるだけのbit数を持たせる必要がある。例えば、128bitの番号とすれば、2^128=340×10^36台のノードを運用できる。
このように共通のハッシュ関数により求められたノードIDは、当該IPアドレスあるいは製造番号が異なれば、同じ値になる確率が極めて低いものである。なお、ハッシュ関数については公知であるので詳しい説明を省略する。
[1.1 DHTを用いたルーティングテーブルの作成手法]
次に、図2及び図3を参照して、DHTの内容であるルーティングテーブルの作成手法の一例について説明する。
図2は、ルーティングテーブルが作成される様子の一例を示す図であり、図3は、ルーティングテーブルの一例を示す図である。
各ノードに付与されたノードIDは、共通のハッシュ関数によって生成したため、図2(A)乃至図2(C)に示す如く、同一のリング状のID空間上にさほど偏ることなく、散らばって存在するものとして考えることができる。同図は8bitでノードIDを付与し、図示したものである。図中黒点はノードIDを示し、反時計回りでIDが増加するものとする。
先ず、図2(A)に示す如く、ID空間が、所定の規則に従って幾つかのエリアに分割される(分けられる)。実際には、16分割程度が良く用いられるが、説明を簡単にするためここでは4分割とし、IDをビット長8Bitの4進数で表すこととした。そして、ノードNのノードIDを「1023」とし、このノードNのルーティングテーブルを作る例について説明する。
(レベル1のルーティング)
ID空間を4分割とすると、それぞれのエリアは4進数で表すと最大桁が異なる4つのエリア「0XXX」、「1XXX」、「2XXX」、「3XXX」(Xは0から3の整数、以下同様。)で分けられる。ノードNは、当該ノードN自身のノードIDが「1023」であるため、図中左下「1XXX」のエリアに存在することになる。
そして、ノードNは、自分の存在するエリア(すなわち、「1XXX」のエリア)以外のエリアに存在する各ノードを代表のノードとして任意に選択し、当該ノードIDのIPアドレス等(実際には、ポート番号も含まれる、以下同様)をレベル1のテーブルにおける各欄(テーブルエントリー)に登録(記憶)する。図3(A)がレベル1のテーブルの一例である。なお、レベル1のテーブルにおける2列目の欄は、ノードN自身を示しているため、IPアドレス等を登録する必要は無い。
(レベル2のルーティング)
次に、図2(B)に示す如く、上記ルーティングによって4分割したエリアのうち、自分の存在するエリアを更に4分割し、4つのエリア「10XX」、「11XX」、「12XX」、「13XX」に分ける。
そして、上記と同様に自分の存在するエリア以外のエリアに存在する各ノードを代表のノードとして任意に選択し、当該ノードIDのIPアドレス等をレベル2のテーブルにおける各欄(テーブルエントリー)に登録する。図3(B)がレベル2のテーブルの一例である。なお、レベル2のテーブルにおける1列目の欄は、ノードN自身を示しているため、IPアドレス等を登録する必要は無い。
(レベル3のルーティング)
更に、図2(C)に示す如く、上記ルーティングによって4分割したエリアのうち、自分の存在するエリアを更に4分割し、4つのエリア「100X」、「101X」、「102X」、「103X」に分ける。そして、上記と同様に自分の存在するエリア以外のエリアに存在する各ノードを代表のノードとして任意に選択し、当該ノードIDのIPアドレス等をレベル3のテーブルにおける各欄(テーブルエントリー)に登録する。図3(C)がレベル3のテーブルの一例である。なお、レベル3のテーブルにおける3列目の欄は、ノードN自身を示しているため、IPアドレス等を登録する必要は無く、2列目及び4列目の欄はそのエリアにノードが存在しないため空白となる。
このようにして、レベル4まで同様にルーティングテーブルが図3(D)に示す如く作成されることにより、8bitのID全てを網羅することができる。レベルが上がる毎にテーブルの中に空白が目立つようになる。
以上説明した手法(規則)に従って作成したルーティングテーブルを、全てのノードが夫々作成して所有することになる(かかるルーティングテーブルの作成は、例えば、未参加のノードがオーバーレイネットワーク9に参加する際に行われるが、本発明とは直接の関係がないので詳しい説明を省略する)。
つまり、各ノードは、複数に分けられた各エリアに属する一のノードのIPアドレス等を、夫々のエリアに対応付けて一の段階(レベル)として規定し、さらに自己が属するエリアが複数のエリアに分けられ、当該分けられた各エリアに属する一のノードのIPアドレス等を、夫々のエリアに対応付けて次の段階(レベル)として規定するルーティングテーブルを記憶している。
なお、ノードIDの桁数に応じてレベルの数が決まり、進数の数に応じて図3(D)における各レベルの注目桁の数が決まる。具体的に、16桁16進数である場合には、64bitのIDとなり、レベル16で注目桁の(英)数字は0〜Fとなる。後述するルーティングテーブルの説明においては、各レベルの注目桁の数を示す部分を単に「列」ともいう。
[1.2 コンテンツデータの保存及び発見方法]
次に、コンテンツ配信システムSにおいて取得可能なコンテンツデータの保存及び発見方法について説明する。
オーバーレイネットワーク9においては、様々なコンテンツ(例えば、映画や音楽等)データが複数のノードに分散して保存(格納)されている(言い換えれば、コンテンツデータが複製されその複製情報であるレプリカが分散保存されている)。
例えば、ノードA及びノードDには、タイトルがXXXの映画のコンテンツデータが保存されており、一方、ノードB及びノードCには、タイトルがYYYの映画のコンテンツデータが保存されるというように、複数のノード(以下、「コンテンツ保持ノード」という)に分散されて保存される。
また、これらのコンテンツデータには、夫々、コンテンツ名(タイトル)及びコンテンツID(コンテンツ毎に固有のコンテンツ識別情報)等の情報が付加されている。このコンテンツIDは、例えば、コンテンツ名+任意の数値(或いは、当該コンテンツデータの先頭数バイトでも良い)が、上記ノードIDを得るときと共通のハッシュ関数によりハッシュ化されて生成される(ノードIDと同一のID空間に配置)。或いは、システム運営者が、コンテンツ毎に一意のID値(ノードIDと同一ビット長)を付与しても良い。この場合は、後述するコンテンツカタログ情報に、コンテンツ名とそのコンテンツIDの対応が書かれた状態で、各ノードに配布される。
また、このように分散保存されているコンテンツデータの所在、つまり、当該コンテンツデータを保存したノードのIPアドレス等と、当該コンテンツデータに対応するコンテンツID等の組が含まれるインデックス情報が、当該コンテンツデータの所在の管理元のノード(以下、「ルートノード」、又は「コンテンツ(コンテンツID)のルートノード」という)等により記憶(インデックスキャッシュに記憶)、管理されるようになっている。
例えば、タイトルがXXXの映画のコンテンツデータのインデックス情報は、そのコンテンツ(コンテンツID)のルートノードであるノードMにより管理され、タイトルがYYYの映画のコンテンツデータのインデックス情報は、そのコンテンツ(コンテンツID)のルートノードであるノードOにより管理される。
つまり、コンテンツ毎にルートノードが分けられるので負荷分散が図らており、しかも、同一のコンテンツデータ(コンテンツIDが同一)が、夫々、複数のコンテンツ保持ノードに保存されている場合であっても、かかるコンテンツデータのインデックス情報は、1つのルートノードで管理することができる。また、このようなルートノードは、例えば、コンテンツIDと最も近い(例えば、上位桁がより多く一致する)ノードIDを有するノードであるように定められる。
このようにしてコンテンツデータを保存したノード(コンテンツ保持ノード)は、当該コンテンツデータを保存したことをそのルートノードに知らせるために、そのコンテンツデータのコンテンツID及び自己のIPアドレス等が含まれるパブリッシュ(登録通知)メッセージ(コンテンツデータを保存したので、IPアドレス等の登録の要求を示す登録メッセージ)を生成し、該パブリッシュメッセージを、そのルートノードに向けて送出する。これにより、パブリッシュメッセージは、コンテンツIDをキーとするDHTルーティングによってルートノードに到着することになる。
図4は、コンテンツ保持ノードから送出されたパブリッシュメッセージの流れの一例をDHTのノードID空間にて示した概念図である。
図4の例において、例えば、コンテンツ保持ノードであるノードAは、自己のDHTのレベル1のテーブルを参照して、パブリッシュメッセージに含まれるコンテンツIDと最も近い(例えば、上位桁がより多く一致する)ノードIDを有する例えばノードHのIPアドレス等を取得し、そのIPアドレス等宛てに、上記パブリッシュメッセージを送信する。
これに対して、ノードHは、当該パブリッシュメッセージを受信し、自己のDHTのレベル2のテーブルを参照して、当該パブリッシュメッセージに含まれるコンテンツIDと最も近い(例えば、上位桁がより多く一致する)ノードIDを有する例えばノードIのIPアドレス等を取得し、そのIPアドレス等宛てに、上記パブリッシュメッセージを転送する。
これに対して、ノードIは、当該パブリッシュメッセージを受信し、自己のDHTのレベル3のテーブルを参照して、当該パブリッシュメッセージに含まれるコンテンツIDと最も近い(例えば、上位桁がより多く一致する)ノードIDを有する例えばノードMの転送先ノード情報に含まれるIPアドレス等を取得し、そのIPアドレス等宛てに、上記パブリッシュメッセージを転送する。
これに対して、ノードMは、パブリッシュメッセージを受信し、自己のDHTのレベル4のテーブルを参照して、当該パブリッシュメッセージに含まれるコンテンツIDと最も近い(例えば、上位桁がより多く一致する)ノードIDが自分である、つまり、自分がそのコンテンツIDのルートノードであることを認識し、当該パブリッシュメッセージに含まれるIPアドレス等及びコンテンツIDの組を含むインデックス情報を登録(インデックスキャッシュ領域に記憶)することになる。
なお、パブリッシュメッセージに含まれるIPアドレス等及びコンテンツIDの組を含むインデックス情報は、コンテンツ保持ノードからルートノードに至るまでの転送経路におけるノード(以下、「中継ノード」という。図4の例では、ノードH、及びノードI)においても登録(キャッシュ)される(このように、インデックス情報をキャッシュする中継ノードをキャッシュノードという)。
そして、あるノードのユーザが、所望するコンテンツデータを取得したい場合、当該コンテンツデータの取得を望むノード(以下、「ユーザノード」という)は、当該ユーザによりコンテンツカタログ情報から選択されたコンテンツデータのコンテンツIDを含むコンテンツ所在問合せメッセージを、自己のDHTのルーティングテーブルにしたがって他のノードに対して送出する。これにより、当該コンテンツ所在問合せメッセージは、上述したパブリッシュメッセージと同様に、コンテンツIDをキーとするDHTルーティングによって、いくつかの中継ノードを経由(転送)されて、そのコンテンツIDのルートノードに辿り着く。そして、上記ユーザノードは、当該ルートノードから、上述したそのコンテンツデータのインデックス情報を取得(受信)し、当該IPアドレス等に基づいて上記コンテンツデータを保存しているコンテンツ保持ノードに接続し、そこから当該コンテンツデータを取得(ダウンロード)することが可能になる。なお、上記ユーザノードは、コンテンツ所在問合せメッセージがルートノードに辿り着くまでの間に、当該ルートノードと同じインデックス情報をキャッシュしている中継ノード(キャッシュノード)から当該IPアドレス等を取得(受信)することもできる。
[1.3 コンテンツカタログ情報の内容]
次に、コンテンツカタログ情報の内容等について説明する。
コンテンツカタログ情報(コンテンツリストともいう)には、コンテンツ配信システムSにおいて各ノードが取得可能なコンテンツデータの属性情報が、夫々のコンテンツIDに対応付けられて記述(登録ともいう)されている。
この属性情報としては、例えば、コンテンツ名(コンテンツが映画の場合、映画タイトル、コンテンツが楽曲の場合、楽曲タイトル、コンテンツが放送番組の場合、番組タイトル)、種別の一例としてのジャンル(コンテンツが映画の場合、アニメ、アクション、ホラー、コメディ、ラブストーリー等、コンテンツが音楽の場合、ロック、ジャズ、ポップス、クラシック等、コンテンツが放送番組の場合、ドラマ、スポーツ、ニュース、映画、音楽、アニメ、バラエティ等)、アーティスト名(コンテンツが音楽の場合の歌手、グループ等)、出演者(コンテンツが映画や放送番組の場合のキャスト)、監督名(コンテンツが映画の場合)、データ量、総再生時間等が挙げられる。
このような属性情報は、ユーザが所望のコンテンツデータを特定する場合の要素であり、多くのコンテンツデータの中から所望のコンテンツデータを検索するための検索条件としての検索キーワードとしても利用される。
例えば、ユーザが検索キーワードとして「ジャズ」を入力すると、属性情報に「ジャズ」に該当する全てのコンテンツデータが検索され、検索されたコンテンツデータの属性情報(例えば、コンテンツ名、ジャンル等)がユーザに選択可能に提示されることになる。
図5は、ノードにおけるミュージックカタログの表示形態遷移の一例を示す概念図である。このようなミュージックカタログ(映画カタログであっても良い)に対して、上述したコンテンツカタログ情報が組み込まれることになる。図5(A)に示す例では、表示されたジャンル一覧の中から、検索キーワードとして例えばジャズが入力され検索されることにより、図5(B)に示すように、当該ジャズに該当するアーティスト名一覧が表示され、そのアーティスト名一覧の中から、検索キーワードとして例えばアーティスト「AABBC」が入力され検索されることにより、図5(C)に示すように、当該アーティストに該当する(例えば、当該アーティストにより歌われる、又は演奏される)楽曲タイトル一覧が表示される。そして、かかる楽曲タイトル一覧の中から、ユーザが入力部を介して所望の楽曲タイトルを選択すると、その楽曲データ(コンテンツデータの一例)のコンテンツIDが取得され、上述したように、コンテンツIDを含むコンテンツ所在問合せメッセージが、そのルートノードに向かって送出されることになる。なお、当該コンテンツIDは、コンテンツカタログ情報に記述されなくとも良く、この場合、各ノードは、例えば属性情報に含まれるコンテンツ名+任意の数値を、上述したノードIDをハッシュ化した共通のハッシュ関数によりハッシュ化してコンテンツIDを生成するものであっても良い。
このようなコンテンツカタログ情報は、例えばシステム管理者等により管理されるノード(以下、「カタログ管理ノード」(配信装置の一例)という)、或いは、カタログ管理サーバ(配信装置の一例)により管理されるようになっている。
そして、新規コンテンツデータ(つまり、各ノードにより新たに取得可能となるべき新規コンテンツデータ)が、コンテンツ配信システムS上における、あるノードに投入(初めて保存)される際に、当該新規コンテンツデータの属性情報が登録された新規コンテンツカタログ情報が作成され、オーバーレイネットワーク9に参加している全てのノードに配信(配布)されることになる。なお、一旦投入されたコンテンツデータは、上述したように、コンテンツ保持ノードから取得、その複製が保存されていくことになる。
[1.4 コンテンツカタログ情報の配信方法]
新たに作成された新規コンテンツカタログ情報は、1又は複数のカタログ管理サーバにより、オーバーレイネットワーク9に参加している全てのノードに対して配信されるように構成しても良い(この場合、カタログ管理サーバが配信対象のノードのIPアドレス等を記憶している)が、上記DHTを利用したマルチキャスト(以下、「DHTマルチキャスト」という)によれば、オーバーレイネットワーク9に参加している全てのノードに対してより効率良く新規コンテンツカタログ情報を配信することができる。
ここで、図6乃至図11を参照して、DHTマルチキャストによるコンテンツカタログ情報の配信方法について説明する。
図6は、カタログ管理ノードであるノードXが保持するルーティングテーブルの一例であり、図7は、カタログ配布メッセージを模式的に表した図であり、図8乃至図11は、DHTマルチキャストが行われる様子を示す図である。
なお、ノードXは、図6に示すようなルーティングテーブルを保持しているものとし、当該ルーティングテーブルのレベル1〜4の各エリアに対応する欄には、ノードA〜ノードIの何れかのノードのノードID(4桁4進数)及びIPアドレス等が記憶されているものとする。
カタログ配布メッセージは、図7(A)に示すように、ヘッダ部とペイロード部から構成されるパケットからなり、ヘッダ部には、ターゲットノードID、IDマスク、及びターゲットノードIDに対応するノードのIPアドレス等(図示せず)が含まれており、ペイロード部には、新規コンテンツカタログ情報等を有する主情報が含まれている。
ここで、ターゲットノードIDとIDマスクとの関係について詳しく説明する。
ターゲットノードIDは、ノードIDと同等の桁数であり(図6の例では、4桁4進数)、送信先ターゲットとなるノードを設定するものであり、IDマスクの値に応じて、例えば、カタログ配布メッセージの送信元又は転送元のノードのノードIDとしたり、送信先のノードのノードIDとする。
また、IDマスクは、ターゲットノードIDの有効桁数を指定するものであり、有効桁数により、ターゲットノードIDにおける上位から有効桁数分が共通するノードIDが示される。具体的には、IDマスク(IDマスクの値)は、0以上ノードIDの最大桁数以下の整数となり、例えば、ノードIDが4桁4進数の場合、0〜4までの整数となる。
例えば、図7(B)に示すように、ターゲットノードIDが「2132」であり、IDマスクの値が「4」の場合には、ターゲットノードIDの「4」桁全てが有効であり、ノードIDが「2132」であるノードのみがカタログ配布メッセージの送信先タッゲートとなる。
また、図7(C)に示すように、ターゲットノードIDが「3301」であり、IDマスクの値が「2」の場合には、ターゲットノードIDの上位「2」が有効であり(ノードIDが「33**」)上位二桁が「33」である(下位2桁はどのような値でも良い)ルーティングテーブル上の全てのノードがカタログ配布メッセージの送信先ターゲットとなる。
更に、図7(D)に示すように、ターゲットノードIDが「1220」であり、IDマスクの値が「0」の場合には、ターゲットノードIDの上位「0」桁が有効、すなわち、いずれの桁もどのような値であっても良く(そのため、このときのターゲットノードIDは、どのような値であってもよいことになる。)、ルーティングテーブル上の全てのノードがカタログ配布メッセージの送信先ターゲットとなる。
そして、ノードIDを4桁4進数とした場合、カタログ管理ノードであるノードXから送出されるカタログ配布メッセージのDHTマルチキャストは、図8乃至図11に示すように、第1段階から第4段階までのステップで行われる。
(第1段階)
先ず、ノードXは、ヘッダ部におけるターゲットノードIDを自己(自ノード)のノードID「3102」とし、IDマスクを「0」として、当該ヘッダ部及びペイロード部を含むカタログ配布メッセージを生成する。そして、図7(A)、(B)に示すように、ノードXは、図6に示すルーティングテーブルを参照し、IDマスク「0」に「1」を加算したレベル「1」のテーブルにおける各欄に登録された(つまり、各エリアに属する)代表のノード(ノードA,B,C)に対してカタログ配布メッセージを送信する。
(第2段階)
次に、ノードXは、上記カタログ配布メッセージのヘッダ部におけるIDマスク「0」を「1」に変換したカタログ配布メッセージを生成する。なお、ターゲットノードIDは自己のノードIDであるため、変更されない。そして、ノードXは、図6に示すルーティングテーブルを参照し、図9(A)のノードID空間の右上のエリア及び図9(B)に示すように、IDマスク「1」に「1」を加算したレベル「2」のテーブルにおける各欄に登録された各ノード(ノードD,E,F)に対して当該カタログ配布メッセージを送信する。
一方、第1段階において、ノードXからカタログ配布メッセージ(自己が属するエリアに対するカタログ配布メッセージ)を受信したノードAは、当該カタログ配布メッセージのヘッダ部におけるIDマスク「0」を「1」に変換し、且つ、ターゲットノードID「3102」を自己のノードID「0132」に変換したカタログ配布メッセージを生成する。
そして、ノードAは、図示しない自己のルーティングテーブルを参照し、図9(A)のノードID空間の左上のエリア及び図9(B)に示すように、IDマスク「1」に「1」を加算したレベル「2」のテーブルにおける各欄に登録された各ノード(ノードA1,A2,A3)に対して当該カタログ配布メッセージを送信する。
つまり、ノードAは、自己が属するエリア「0XXX」がさらに複数のエリア(「00XX」、「01XX」、「02XX」、「03XX」)に分けられている場合には、当該さらに分けられている各エリアに属する一の(代表の)ノード(ノードA1,A2,A3)を決定し、当該決定された全てのノード(ノードA1,A2,A3)に対して、上記受信したカタログ配布メッセージを送信する(以下、同様)。
同様にして、図9(A)のノードID空間の左下及び右下のエリア及び図9(B)に示すように、第1段階において、ノードXからカタログ配布メッセージを受信したノードB及びノードCも、夫々、自己のルーティングテーブルを参照し、レベル2のテーブルにおける各欄に登録された各ノード(ノードB1,B2,B3,C1,C2,C3)に対して、IDマスクを「1」とし、且つ、自己のノードIDをターゲットノードIDとしたカタログ配布メッセージを生成し、これを送信する。
(第3段階)
次に、ノードXは、上記カタログ配布メッセージのヘッダ部におけるIDマスク「1」を「2」に変換したカタログ配布メッセージを生成する。なお、上記と同様、ターゲットノードIDは変更されない。そして、ノードXは、図6に示すルーティングテーブルを参照し、図10(A)のノードID空間の右上のエリア及び図10(B)に示すように、IDマスク「2」に「1」を加算したレベル「3」のテーブルにおける各欄に登録された各ノード(ノードG,H)に対して当該カタログ配布メッセージを送信する。
一方、第2段階において、ノードXからカタログ配布メッセージを受信したノードDは、当該カタログ配布メッセージのヘッダ部におけるIDマスク「1」を「2」に変換し、且つ、ターゲットノードID「3102」を自己のノードID「3001」に変換したカタログ配布メッセージを生成する。そして、ノードDは、自己のルーティングテーブルを参照し、図10(B)に示すように、IDマスク「2」に「1」を加算したレベル「3」のテーブルにおける各欄に登録された各ノード(ノードD1,D2,D3)に対して当該カタログ配布メッセージを送信する。
同様にして、図示しないが、第2段階において、カタログ配布メッセージを受信したノードE,F,A1,A2,A3,B1,B2,B3,C1,C2,C3も、夫々、自己のルーティングテーブルを参照し、レベル3のテーブルにおける各欄に登録された各ノード(図示せず)に対して、IDマスクを「2」とし、且つ、自己のノードIDをターゲットノードIDとしたカタログ配布メッセージを生成し、これを送信する。
(第4段階)
次に、ノードXは、上記カタログ配布メッセージのヘッダ部におけるIDマスク「2」を「3」に変換したカタログ配布メッセージを生成する。なお、上記と同様、ターゲットノードIDは変更されない。そして、ノードXは、図6に示すルーティングテーブルを参照し、図11(A)のノードID空間の右上のエリア及び図11(B)に示すように、IDマスク「3」に「1」を加算したレベル「4」のテーブルにおける各欄に登録されたノードIに対して当該カタログ配布メッセージを送信する。
一方、第3段階において、ノードXからカタログ配布メッセージを受信したノードGは、当該カタログ配布メッセージのヘッダ部におけるIDマスク「2」を「3」に変換し、且つ、ターゲットノードID「3102」を自己のノードID「3123」に変換したカタログ配布メッセージを生成する。そして、ノードGは、自己のルーティングテーブルを参照し、図11(B)に示すように、IDマスク「3」に「1」を加算したレベル「4」のテーブルにおける各欄に登録されたノードG1に対して当該カタログ配布メッセージを送信する。
同様にして、図示しないが、第3段階において、カタログ配布メッセージを受信した各ノードも、自己のルーティングテーブルを参照し、レベル4のテーブルにおける各欄に登録された各ノードに対して、IDマスクを「3」とし、且つ、自己のノードIDをターゲットノードIDとしたカタログ配布メッセージを生成し、これを送信する。
(最終段階)
最後に、ノードXは、上記カタログ配布メッセージのヘッダ部におけるIDマスク「3」を「4」に変換したカタログ配布メッセージを生成する。そうすると、ターゲットノードIDとIDマスクから、当該カタログ配布メッセージが自己(自ノード)宛であることを認識し、送信処理を終了する。
一方、第4段階において、カタログ配布メッセージを受信した各ノードも、当該カタログ配布メッセージのヘッダ部におけるIDマスク「3」を「4」に変換したカタログ配布メッセージを生成する。そうすると、ターゲットノードIDとIDマスクから、当該カタログ配布メッセージが自己(自ノード)宛であることを認識し、送信処理を終了する。
以上のように、新規コンテンツカタログ情報は、カタログ管理ノードであるノードXから、DHTマルチキャストにより、オーバーレイネットワーク9に参加している全てのノードに配布され、各ノードは、コンテンツカタログ情報を保存することになる。
[1.5 コンテンツカタログ情報の時分割での提示]
ところで、上述したように、一時期に全てのノードに配信された新規コンテンツカタログ情報がそれら全てのノードのユーザにより同時期に提示可能(つまり、利用可能)となると、多くのノードが新規コンテンツカタログ情報に属性情報が登録されている新規コンテンツデータを取得(ダウンロード)するために、該新規コンテンツデータのインデックス情報の要求がそのルートノードに対して集中(つまり、新規コンテンツデータのコンテンツIDを含むコンテンツ所在問合せメッセージが集中)し、更には、新規コンテンツデータの要求がそのコンテンツ保持ノードに集中し、ノード負荷及びネットワーク負荷が増大することが懸念され、これによる待ち時間の発生はユーザの不満を生じさせる結果となる。特に、新規コンテンツカタログ情報が配布された当初は、そこに登録されている新規コンテンツデータが投入されたばかりであり、これを取得して保存しているノードの数が少なく、多くのノードからの要求に耐えうる保存数に達していない状況にあると考えられる。
そこで、本実施形態においては、オーバーレイネットワーク9に参加しているノードが所定のグループ分け条件に応じて(により)複数のグループに分けられるようにし、各ノードが、上記グループ分け条件を示す条件情報と、新規コンテンツカタログ情報をユーザに対して提示すべき提示時期がグループ毎に例えば相違しつつ規定された提示時期情報と、を記憶しておく。そして、各ノードは、配信された新規コンテンツカタログ情報を受信して保存した後、自己が属するグループに対応する上記提示時期になった場合に、当該新規コンテンツカタログ情報をユーザに対して提示可能(公開可能)状態に設定するように構成した。これにより、夫々のグループに属するノードに保存された新規コンテンツカタログ情報が、そのグループ毎に異なるタイミングで(言い換えれば、グループ毎に時間をずらして)ユーザに提示されることになるので、そのルートノードやコンテンツ保持ノードへのアクセスを分散することができる。
ここで、上記グループ分け条件となる要素としては、ノードIDにおける所定桁目の値、ノードの設置地域、ノードのネットワーク8への接続サービス提供者、ノードにおけるコンテンツデータの再生時間(試聴時間)又は再生回数(試聴回数)、ノードにおける通電時間等が挙げられる。
ノードIDにおける所定桁目の値をグループ分け条件の要素とする場合、例えば、最下位桁目(最上位桁目等でも良い)が「1」であるノードのグループ、「2」であるノードのグループ・・・と、いうように分けることができる。また、ノードIDが16進数である場合、所定桁目の値は、0〜Fのうち何れかで表されるので、16のグループに分けることができる。そして、オーバーレイネットワーク9に参加している全てのノードが新規コンテンツカタログ情報を受信(各ノードは新規コンテンツカタログ情報をほぼ同時に(0〜数十秒の時間ずれはあるが)受信)後、例えばノードIDの最下位桁目が「0」と「5」のグループに属する全てのノードが、直ちに当該新規コンテンツカタログ情報の提示可能状態となり、次に、例えばノードIDの最下位桁目が「1」と「6」のグループに属する全てのノードが、例えば6時間経過後(当該新規コンテンツカタログ情報の受信時から6時間経過後)に当該新規コンテンツカタログ情報の提示可能状態となり、次に、例えばノードIDの最下位桁目が「2」と「7」のグループに属する全てのノードが、例えば12時間経過後(当該新規コンテンツカタログ情報の受信時から12時間経過後)に当該新規コンテンツカタログ情報の提示可能状態となる。
また、ノードの設置地域をグループ分け条件の要素とする場合、例えば、設置地域が東京都港区であるノードのグループ、東京都渋谷区であるノードのグループ・・・と、いうように分けることができる。かかる設置地域は、例えば各ノードにおいて設定された郵便番号や電話番号から判断することができる。そして、オーバーレイネットワーク9に参加している全てのノードが新規コンテンツカタログ情報を受信後、例えば設置地域が東京都渋谷区のグループに属する全てのノードが、直ちに当該新規コンテンツカタログ情報の提示可能状態となり、次に、設置地域が東京都港区のグループに属する全てのノードが、例えば6時間経過後(当該新規コンテンツカタログ情報の受信時から6時間経過後)に当該新規コンテンツカタログ情報の提示可能状態となる。
また、ノードのネットワーク8への接続サービス提供者(例えば、インターネット接続サービスプロバイダ(以下、「ISP」という))をグループ分け条件の要素とする場合、例えば、AS(Autonomous System)番号の違いで分けることができる。ここで、ASとは、インターネットを構成する、一つ(共通)の運用ポリシーを持ったネットワークの塊をいい(自律システムともいう)、インターネットはこのASの集合体ととらえることができ、例えば各ISPにより構成されるネットワーク毎にASが区分され、互いに異なる一意のAS番号が、例えば、1〜65535の範囲から割り当てられるようになっている。また、各ノードは、自分が属するAS番号を取得するには、IRR(Internet Routing Registry)やJPNIC(社団法人日本ネットワークインフォメーションセンター)のWHOISデータベースにアクセスする方法(IPアドレスからAS番号が分かる)、或いはユーザがISPから契約している回線のAS番号を入手して、その値をユーザがノードに予め入力しておく方法、などが可能である。そして、オーバーレイネットワーク9に参加している全てのノードが新規コンテンツカタログ情報を受信後、例えばAS番号が「2345」のグループに属する全てのノードが、直ちに当該新規コンテンツカタログ情報の提示可能状態となり、次に、AS番号が「3456」のグループに属する全てのノードが、例えば6時間経過後(当該新規コンテンツカタログ情報の受信時から6時間経過後)に当該新規コンテンツカタログ情報の提示可能状態となる。
また、ノードにおけるコンテンツデータの再生時間(視聴時間)又は再生回数(視聴回数)をグループ分け条件の要素とする場合、例えば再生時間が「30時間以上」(又は再生回数が「30回以上」)であるノードのグループ、再生時間が「20時間以上30時間未満」(又は再生回数が「20回以上30回未満」)であるノードのグループ、・・・と、いうように分けることができる。ここで、再生時間には、連続再生時間、平均再生時間、累積再生時間等の種類がある。連続再生時間は、例えば途中で停止されることなく連続的にコンテンツデータが再生された連続時間(例えば最近の連続再生時間)を意味し、平均再生時間は、例えば過去複数回の連続再生時間の平均時間を意味し、累積再生時間は、過去所定期間(例えば1ヶ月、或いはノード設置から現在まで)内にコンテンツデータが再生された累積(累計)時間を意味する。また、再生回数とは、過去所定期間(例えば1ヶ月、或いはノード設置から現在まで)内にコンテンツデータが例えば最初から最後まで再生された累積(累計)回数を意味する。再生時間又は再生回数が長いノードほど、新規コンテンツデータを長く再生する可能性が高く、当該コンテンツデータのレプリカが作成され易いということができる。なお、コンテンツデータの再生時間及び再生回数は各ノードにおいて計測され、記憶される。
そして、オーバーレイネットワーク9に参加している全てのノードが新規コンテンツカタログ情報を受信後、例えば再生時間が「30時間以上」のグループに属する全てのノードが、直ちに当該新規コンテンツカタログ情報の提示可能状態となり、次に、例えば再生時間が「20時間以上30時間未満」のグループに属する全てのノードが、例えば6時間経過後(当該新規コンテンツカタログ情報の受信時から6時間経過後)に当該新規コンテンツカタログ情報の提示可能状態となる。このように、例えば、再生時間が最も長い又は再生回数が最も多いグループが優先され、当該グループに属するノードが、最も早く新規コンテンツカタログ情報の提示可能状態になる。これにより、新規コンテンツデータ(レプリカ)を他のノードに提供可能に保存するコンテンツ保持ノードとして貢献する可能性が高いノードを、優先的に新規コンテンツカタログ情報の提示可能状態とすることができる。
また、かかる再生時間又は再生回数は、コンテンツデータのジャンル毎に計測されれば、ユーザの好みが分かるので望ましい。例えば、あるノードにおいて、ジャンルが「アニメ」のコンテンツデータが過去所定期間内に再生された累積再生時間が30時間で、ジャンルが「アクション」のコンテンツデータが過去所定期間内に再生された累積再生時間が13時間、であれば、当該ノードのユーザは「アニメ」が好きであるということが分かる。そして、この場合、新規コンテンツカタログ情報に属性情報が登録される新規コンテンツデータと同一ジャンルにおいて累積再生時間が最も長い又は再生回数が最も多いグループが優先され、当該グループに属するノードが、最も早く当該新規コンテンツカタログ情報の提示可能状態になる。
また、ノードにおける通電時間をグループ分け条件の要素とする場合、例えば通電時間が「200時間以上」であるノードのグループ、通電時間が「150時間以上200時間未満」であるノードのグループ、・・・と、いうように分けることができる。ここで、通電時間には、連続通電時間、平均通電時間、累積通電時間等の種類がある。連続通電時間は、現在(新規コンテンツカタログ情報の受信時)ノードにおいて電源ON状態が継続している継続時間を意味し、平均通電時間は、例えば過去複数回(電源ONから電源OFFまでを1回と数える)の連続通電時間の平均時間を意味し、例えば累積通電時間は、過去所定期間(例えば1ヶ月、或いはノード設置から現在まで)内に電源ON状態になっていた累積(累計)時間を意味する。また、各ノードは、通常、電源ONによりオーバーレイネットワーク9に参加するので、通電時間とはオーバーレイネットワーク9に参加している時間とも言える。
そして、オーバーレイネットワーク9に参加している全てのノードが新規コンテンツカタログ情報を受信後、例えば通電時間が「200時間以上」のグループに属する全てのノードが、直ちに当該新規コンテンツカタログ情報の提示可能状態となり、次に、例えば通電時間が「150時間以上200時間未満」のグループに属する全てのノードが、例えば6時間経過後(当該新規コンテンツカタログ情報の受信時から6時間経過後)に当該新規コンテンツカタログ情報の提示可能状態となる。このように、例えば、通電時間が最も長いグループが優先され、当該グループに属するノードが、最も早く新規コンテンツカタログ情報の提示可能状態になる。これにより、新規コンテンツデータ(レプリカ)を他のノードに提供可能に保存するコンテンツ保持ノードとして貢献する可能性が高いノードを、優先的に新規コンテンツカタログ情報の提示可能状態とすることができる。
なお、上記再生時間(視聴時間)は視聴率で表し、上記通電時間は通電率で表すようにしても良い。視聴率(つまり、当該ノードにおいてコンテンツデータが再生された割合)は、例えばノード設置から現在までの経過時間を、ノード設置から現在までの累積再生時間で除して(経過時間/累積再生時間)得られる。また、通電率(つまり、当該ノードが通電されていた割合)は、例えばノード設置から現在までの経過時間を、ノード設置から現在までの累積通電時間で除して得られる。
また、ノードIDにおける所定桁目の値、ノードの設置地域、ノードのネットワーク8への接続サービス提供者、ノードにおけるコンテンツデータの再生時間(視聴時間)又は再生回数(視聴回数)、及びノードにおける通電時間等のうちの何れか二つ以上の組合せによりグループ分けを行うようにすれば、より効果的である。
ところで、グループ分け条件に応じて分けられるグループの数は、オーバーレイネットワーク9に参加しているノードの数と、当該システムSの処理能力と、コンテンツカタログ情報の提示間隔(つまり、一のグループに属する全てのノードにおいて新規コンテンツカタログ情報が提示可能状態になってから次のグループに属するノードにおいて当該新規コンテンツカタログ情報が提示可能状態になるまでの提示時期の間隔)により決まってくるが、当該提示間隔の最大値を1日(24時間)に設定した場合は、10グループ程度が妥当である、この場合、最初のグループに対する最終のグループへの提示遅れは最大10日になる。
また、新規コンテンツデータのレプリカができる時間を考慮して、当該コンテンツデータの開始から終了までの総再生時間(例えば、2時間〜3時間)を確保できるように、上記提示間隔は、当該総再生時間の少なくともn倍(例えば、1.5〜3倍程度)とすることが望ましい。
また、1日の間でコンテンツ保持ノードへのアクセス頻度の分布が変化する、特に、日中よりも夜中の方がアクセス頻度が少ないと考えられるので、午後9時〜午前7時の間における提示間隔よりも、午前7時〜午後9時の間における提示間隔の方を長く設定することで、アクセス集中が生じないようにすることが考えられる。
また、ユーザの試聴(視聴)可能時間は、1日のうちで変動が大きいが、曜日による変動は1日よりは大きくないと想定されるので、上記提示間隔は、1日(24時間)程度とすることが考えられる。例えば、子供向けのコンテンツの場合、試聴頻度は曜日に関わらず午後5時〜午後8時位に高くなると想定されるので、この間にはレプリカも多く作成されると期待できる。よって、この短時間に次の提示順位のグループに属するノードに新規コンテンツデータを提供するのに十分な数のレプリカができる(つまり、コンテンツ保持ノードにレプリカが保存される)可能性があるが、夜中では試聴される可能性は殆どないので、レプリカの作成は翌日にならないと期待できない。そこで、最大提示間隔を1日(24時間)とすることでこのようなアクセス頻度の変動を吸収することができる。
更にまた、上記提示間隔は、新規コンテンツデータが複数のノードにより要求される推定要求数(例えばコンテンツ所在問合せメッセージの数、或いはコンテンツ保持ノードに新規コンテンツデータを要求する数)であって、時間経過に伴い変化する当該推定要求数を示す情報(例えば、新規コンテンツデータの推定人気曲線)に基づいて定められるように構成すれば、より効率良く提示時期を設定することができる。
図12は、新規コンテンツデータの推定人気曲線の一例を示す図である。なお、図12(A)及び(B)とも、縦軸が、新規コンテンツデータの推定要求数を、横軸が、時間を示しており、当該推定要求数は、時間経過に伴い変化する曲線で表されている。今回配信される新規コンテンツカタログ情報に属性情報が記述される新規コンテンツデータが、図12(A)に示す曲線パターンをとるか、或いは図12(B)に示す曲線パターンをとるかは、過去の分析等により決定される。例えば、新規コンテンツデータと同一ジャンルのコンテンツデータの過去の要求パターンから、当該新規コンテンツデータの曲線パターンが決定される。
そして、例えば、図12(A)に示す曲線パターンをとる新規コンテンツデータの場合は、投入後直ちに要求が集中し易い傾向にあるので、新規コンテンツカタログ情報の配信開始直後は、上記提示間隔を長く(例えば、第1番目のグループと第2番目のグループとの間の提示間隔は2日程度)し(当該要求数を抑え、レプリカができるのを待つ)、徐々に当該提示間隔を縮めいていく(例えば、第2番目のグループと第3番目のグループとの間の提示間隔は1.5日程度、更に、例えば、第3番目のグループと第4番目のグループとの間の提示間隔は1日程度というように)ように設定する。
一方、図12(B)に示す曲線パターンをとる新規コンテンツデータの場合は、投入後徐々に要求が増加する傾向にあるので、新規コンテンツカタログ情報の配信開始直後の記提示間隔を短く(例えば、各グループ間の提示間隔を2時間程度というように)設定し、早く各ノードにコンテンツカタログ情報が行き渡るようにする。
[2.ノードの構成等]
次に、図13を参照して、ノードの構成及び機能について説明する。
図13は、ノードの概要構成例を示す図である。
各ノードは、図13に示すように、演算機能を有するCPU,作業用RAM,各種データおよびプログラムを記憶するROM等から構成されたコンピュータとしての制御部11と、コンテンツデータ、コンテンツカタログ情報、ルーティングテーブル及び各種プログラム等を記憶保存(格納)するためのHD等から構成された新規コンテンツカタログ記憶手段、及び条件情報記憶手段としての記憶部12と、受信されたコンテンツデータ等を一時蓄積するバッファメモリ13と、コンテンツデータに含まれるエンコードされたビデオデータ(映像情報)およびオーディオデータ(音声情報)等をデコード(データ伸張や復号化等)するデコーダ部14と、当該デコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部15と、当該映像処理部15から出力されたビデオ信号に基づき映像表示するCRT,液晶ディスプレイ等の表示部16と、上記デコードされたオーディオデータをアナログオーディオ信号にD(Digital)/A(Analog)変換した後これをアンプにより増幅して出力する音声処理部17と、当該音声処理部17から出力されたオーディオ信号を音波として出力するスピーカ18と、ネットワーク8を通じて他のノードやサーバとの間の情報の通信制御を行うための通信部20と、ユーザからの指示を受け付け当該指示に応じた指示信号を制御部11に対して与える入力部(例えば、キーボード、マウス、或いは、操作パネル等)21と、を備えて構成され、制御部11、記憶部12、バッファメモリ13、デコーダ部14及び通信部20はバス22を介して相互に接続されている。なお、ノードとしては、パーソナルコンピュータ、STB(Set Top Box)、或いは、TV受信機等を適用可能である。
そして、このような構成において、制御部11は、CPUが記憶部12等に記憶された各種プログラム(本発明のノード処理プログラムを含む)を読み出して実行することにより、全体を統括制御し、コンテンツ配信システムSへの参加により上述したユーザノード、中継ノード、ルートノード、キャッシュノード、及びコンテンツ保持ノードの少なくとも何れか一つのノードとしての処理を行い、特に、ユーザノードとして本発明における新規コンテンツカタログ受信手段、グループ判別手段、提示時期判別手段、及びコンテンツカタログ提示設定手段等として機能するようになっている。
そして更に、カタログ管理ノードとなるノードの制御部11は、CPUが記憶部12等に記憶されたプログラム(本発明の配信処理プログラムを含む)を読み出して実行することにより、本発明における新規コンテンツカタログ配信手段等として機能するようになっている。
また、制御部11は、取得されたコンテンツデータが、デコーダ部14、映像処理部15、表示部16、音声処理部17及びスピーカ18を通じて再生出力される場合、当該コンテンツデータの再生時間(又は再生回数)を計測し、当該コンテンツデータのジャンルに対応付けて記憶するようになっている。なお、平均再生時間及び累積再生時間は、計測された再生時間に基づき算出される。
また、制御部11は、電源ONとなったときに通電時間の計測を開始し、電源OFF指令があったときに当該計測を終了し、当該計測された通電時間を記憶するようになっている。なお、平均通電時間及び累積通電時間は、計測された通電時間に基づき算出される。
また、各ノードの記憶部12には、上記グループ分け条件と、当該グループ毎に対応する新規コンテンツカタログ情報の提示時期と、を規定しているグループ分け条件テーブルが記憶されるようになっており、制御部11は、当該グループ分け条件テーブルを用いて、自己が属するグループを判別し、且つ、自己が属するグループに対応する提示時期になったか(達したか)否かを判別し、自己が属するグループに対応する提示時期になったと判別した場合には、上述したように保存された新規コンテンツカタログ情報をユーザに対して提示可能状態に設定するようになっている。なお、グループ分け条件テーブルは、例えば予め記憶部12に記憶されるように構成しても良いが、新規コンテンツカタログ情報に付加されて配信されるように構成すれば、新規コンテンツカタログ情報の配信時のノードの参加数やネットワーク8の負荷状況に応じて上記グループ分け条件や上記提示時期を適宜設定できるので望ましい。
ここで、「提示可能状態に設定」には、例えば、以下の(i)〜(iii)の方法が挙げられる。
(i)新規コンテンツカタログ情報に記述された新規コンテンツデータの属性情報が表示部16における表示画面上に選択可能に表示(例えば、ユーザが映像を見ている最中にポップアップ表示)されるように設定
(ii)新規コンテンツカタログ情報に記述された新規コンテンツデータが図5に示すようなカタログで検索可能となるように設定
(iii)表示部16におけるメニュー画面に設けられた新規コンテンツボタンの選択(ユーザの入力部21の操作指示による)により、新規コンテンツカタログ情報に記述された新規コンテンツデータの属性情報が選択可能に表示されるように設定
なお、上記(i)の方法の場合、ユーザは、新規コンテンツカタログ情報が提示可能状態になったことを直ちに把握できるが、上記(ii)及び(iii)の方法の場合、新規コンテンツカタログ情報が提示可能状態になったことを直ちに把握できないので、この場合、新規コンテンツカタログ情報が利用可能になったことを示すマークを表示部16における表示画面上に表示したり、当該新規コンテンツカタログ情報が利用可能になったことを示す音声をスピーカ18から出力するように構成すれば効果的である。
また、各ノードの記憶部12には、コンタクトノードのIPアドレス等が予め記憶され、更に、ネットワーク8への接続時に割り当てられたAS番号、並びにユーザにより入力された郵便番号(又は電話番号)が後から記憶されるようになっている。
また、上記ノード処理プログラム及び配信処理プログラムは、例えば、ネットワーク8上の所定のサーバからダウンロードされるようにしてもよいし、例えば、CD−ROM等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしてもよい。
なお、カタログ管理サーバのハードウェア構成としては、図示しないが、演算機能を有するCPU,作業用RAM,各種データおよびプログラムを記憶するROM等から構成されたコンピュータとしての制御部、コンテンツカタログ情報及び各種プログラム等を記憶保存(格納)するためのHD等から構成された新規コンテンツカタログ記憶手段としての記憶部、及びネットワーク8を通じて他のノードとの間の情報の通信制御を行うための通信部等を備えるサーバコンピュータにより構成される。
[3.コンテンツ配信システムの動作例]
次に、コンテンツ配信システムSの動作について説明する。
[3.1 新規コンテンツカタログ情報を配信するカタログ管理ノードの処理]
先ず、新規コンテンツカタログ情報をDHTマルチキャストにより配信するカタログ管理ノードの処理について、図14を用いて説明する。
図14は、カタログ管理ノードの制御部11における新規コンテンツカタログ情報配信処理を示すフローチャートである。
図14に示す処理は、カタログ管理ノードであるノードXにおいて、新規コンテンツデータがあるノードに投入されたことを示す情報(当該新規コンテンツデータの属性情報を含む)を、例えばコンテンツ投入サーバ(コンテンツ配信システムSにおいて新規コンテンツデータの投入許可をし、これを1又は複数のノードに投入するサーバ)から受信したときに開始される。
なお、新規コンテンツカタログ情報には、1つずつ新規コンテンツデータの属性情報が記述されるものであっても良いし、同時期に投入される複数の新規コンテンツデータを纏めてそれら属性情報が記述されるものであっても良い。更に、同時期に投入される複数の新規コンテンツデータをジャンル毎に纏めてそれらの属性情報が記述されるものであっても良い。
先ず、ノードXの制御部11は、コンテンツ投入サーバから取得した新規コンテンツデータの属性情報が記述された新規コンテンツカタログ情報、当該新規コンテンツカタログ情報のシリアル番号(このシリアル番号は、例えば、配信年月日時により構成される)、及び上述したグループ分け条件テーブルをペイロード部に含むカタログ配布メッセージを生成する(ステップS1)。生成されたカタログ配布メッセージは一時記憶される。
次いで、制御部11は、上記生成したカタログ配布メッセージのヘッダ部におけるターゲットノードIDとして自己のノードID例えば「3102」を設定し、IDマスクとして「0」を設定し、IPアドレスとして自己のIPアドレス等を設定する(ステップS2)。
次いで、当該制御部11は、上記設定したIDマスクの値が、自己のルーティングテーブルの全レベル数(図6の例では、「4」)よりも小さいか否かを判別(判断)する(ステップS3)。
このとき、IDマスクに「0」が設定されているので、ルーティングテーブルの全レベル数よりも小さいため、当該制御部11は、IDマスクがルーティングテーブルの全レベル数よりも小さいと判別し(ステップS3:YES)、自己のルーティングテーブルにおける「上記設定したIDマスク+1」のレベルに登録されている全てのノードを決定し(つまり、ノードXが属するエリアがさらに複数のエリアに分けられているので、当該さらに分けられている各エリアに属する一のノードが決定される)、当該決定したノードに対して上記生成したカタログ配布メッセージを送信する(ステップS4)。
例えば、図6の例では、「IDマスク「0」+1」であるレベル1に登録されたノードA、ノードB、及びノードCに対してカタログ配布メッセージが送信されることになる。
次いで、当該制御部11は、上記カタログ配布メッセージのヘッダ部において設定されたIDマスクの値に「1」を加算して当該IDマスクを再設定し(ステップS5)、ステップS3に戻る。
その後、当該制御部11は、IDマスク「1」,「2」,「3」について同様にステップS3〜S5の処理を繰り返す。これにより、上記カタログ配布メッセージは、自己のルーティングテーブルに登録されている全てのノードに送信されることになる。
一方、ステップS3において、IDマスクの値が、自己のルーティングテーブルの全レベル数よりも小さくないと判別された場合(図6の例では、IDマスクの値が「4」の場合)には(ステップS3:NO)、当該処理を終了する。
このように、カタログ管理ノードによる新規コンテンツカタログ情報の配信の場合は、当該新規コンテンツカタログ情報は、DHTマルチキャストによりオーバーレイネットワーク9に参加している全てのノードに順次転送されつつ配信されるので、カタログ管理サーバのような特定のサーバに与える負荷を大幅に低減することができる。
[3.2 新規コンテンツカタログ情報を受信するノードの処理]
次に、新規コンテンツカタログ情報を受信するノードの処理について、図15を用いて説明する。
図15は、新規コンテンツカタログ情報を受信するノードの制御部11における処理を示すフローチャートであり、図16は、図15に示すカタログ配布メッセージ受信処理の詳細を示すフローチャートである。
図15に示す処理は、例えばノードAのユーザによる電源ONにより開始され、先ず、制御部11は、オーバーレイネットワーク9への参加処理を実行する(ステップS11)。当該参加処理においては、上述したように、ノードAがコンタクトノードに接続(記憶部12に記憶されたコンタクトノードのIPアドレス等に基づき接続)して参加要求を行い、例えばコンタクトノード等から返信されたルーティングテーブルに基づき、自己のルーティングテーブルを作成する。こうして、当該ノードAは、オーバーレイネットワーク9に参加することになる。
次いで、当該制御部11は、カタログ配布メッセージを受信したか否かを判別し(ステップS12)、受信した場合には(ステップS12:YES)、ステップS13に進み、受信していない場合には(ステップS12:NO)、ステップS14に進む。なお、当該受信されたカタログ配布メッセージはバッファメモリ13に一時格納される。
ステップS13では、カタログ配布メッセージ受信処理が行われる。当該カタログ配布メッセージ受信処理においては、図16に示すように、ノードAの制御部11は、自己のノードIDが、受信したカタログ配布メッセージのヘッダ部におけるターゲットノードID及びIDマスクにより特定されるターゲットに含まれるか否かを判別する(ステップS31)。
ここで、ターゲットとは、ターゲットノードIDにおいて、IDマスクの値に該当する上位桁が共通するノードIDを示し、例えば、IDマスクが「0」であれば、全てのノードIDがターゲットに含まれ、IDマスクが「2」でターゲットノードIDが「3102」であれば、上位「2」桁が「31」となる「31**」(**はどのような値でも良い)のノードIDがターゲットに含まれることとなる。
ノードAが受信したカタログ配布メッセージのヘッダ部におけるIDマスクは「0」であり、有効桁数が指定されていないので、ノードAの制御部11は、自己のノードID「0132」がターゲットに含まれると判別し(ステップS31:YES)、当該カタログ配布メッセージのヘッダ部におけるターゲットノードIDを、自己のノードID「0132」に変換設定する(ステップS32)。
次いで、当該制御部11は、上記カタログ配布メッセージのヘッダ部におけるIDマスクの値に「1」を加算して当該IDマスクを再設定(ここでは、「0」から「1」に変換(一のレベルを示すIDマスクを次のレベルを示すIDマスクに変えて))する(ステップS33)。
次いで、当該制御部11は、上記再設定したIDマスクの値が、自己のルーティングテーブルの全レベル数よりも小さいか否かを判別する(ステップS34)。
このとき、IDマスクに「1」が設定されているので、ルーティングテーブルの全レベル数よりも小さいため、当該制御部11は、IDマスクがルーティングテーブルの全レベル数よりも小さいと判別し(ステップS34:YES)、自己のルーティングテーブルにおける「上記再設定したIDマスク+1」のレベルに登録されている全てのノードを決定し(つまり、ノードAが属するエリアがさらに複数のエリアに分けられているので、当該さらに分けられている各エリアに属する一のノードが決定される)、当該決定したノードに対して上記生成したカタログ配布メッセージを送信し(ステップS35)、ステップS33に戻る。
例えば、「IDマスク「1」+1」であるレベル2に登録されたノードA1、ノードA2、及びノードA3に対してカタログ配布メッセージが送信されることになる。
その後、当該制御部11は、IDマスク「2」,「3」について同様にステップS34及びS35の処理を繰り返す。これにより、上記カタログ配布メッセージは、自己のルーティングテーブルに登録されている全てのノードに送信されることになる。
一方、上記ステップS31において、当該制御部11は、自己のノードIDが、受信したカタログ配布メッセージのヘッダ部におけるターゲットノードID及びIDマスクにより特定されるターゲットに含まれないと判別した場合には(ステップS31:NO)、ルーティングテーブル中で、当該ターゲットノードIDと上位桁から一致する桁数が最も多いノードに対して上記受信したカタログ配布メッセージを送信(通常のDHTを用いたメッセージの転送)し(ステップS38)、当該処理を終了する。例えば、IDマスクが「2」でターゲットノードIDが「3102」であったとすると、ノードAのノードID「0132」は、ターゲット「31**」に含まれないと判別される。
一方、上記ステップS34において、当該制御部11は、IDマスクの値が、自己のルーティングテーブルの全レベル数よりも小さくないと判別した場合には(ステップS34:NO)、バッファメモリ13に格納されているカタログ配布メッセージに含まれる新規コンテンツカタログ情報を当該新規コンテンツカタログ情報のシリアル番号と共に記憶部12に記憶保存する(ステップS36)。
そして、制御部11は、上記カタログ配布メッセージに含まれるグループ分け条件テーブルを取り込み、当該グループ分け条件テーブルを参照して、上述したように前もって計測して記憶部12に記憶しておいた再生時間に基づいてグループ判別処理(グループ分け条件(例えば、コンテンツデータの再生時間、ノードにおける通電時間、又はこれらの組合せ)に応じて複数に分けられるグループのうち、自己が属するグループを判別する処理)を行い、自己が属するグループを決定し(ステップS37)、続いて、当該決定したグループに対応する、新規コンテンツカタログ情報の提示時期をセット(例えば、6時間)し、計時(カウント)を開始し、図15に示す処理に戻る。
図17(A)〜(C)は、グループ分け条件テーブルの内容の一例を示す図である。
図17(A)に示すグループ分け条件テーブルでは、コンテンツデータの再生時間(例えば、累積再生時間)をグループ分け条件の要素としており、「再生時間が30時間以上」のグループa、「再生時間が20時間以上30時間未満」のグループb、「再生時間が10時間以上20時間未満」のグループc、及び「再生時間が10時間未満」のグループdに区分されている。そして、新規コンテンツカタログ情報の提示時期は、グループaが「0時間後」(つまり直ちに)、グループbが「6時間後」、グループcが「12時間後」、グループdが「24時間後」となっている(つまり、再生時間が最も長いグループaに対応する提示時期が最も早く規定されている)。例えば、ノードAにおけるコンテンツデータの再生時間(例えば、累積再生時間)が15時間であった場合、当該ノードAは「再生時間が20時間以上30時間未満」のグループbに属するとして判別されることになる。
また、図17(B)に示すグループ分け条件テーブルでは、通電時間をグループ分け条件の要素としており、「通電時間が200時間以上」のグループe、「通電時間が150時間以上200時間未満」のグループf、「通電時間が100時間以上150時間未満」のグループg、及び「通電時間が100時間未満」のグループhに区分されている。そして、新規コンテンツカタログ情報の提示時期は、グループeが「0時間後」(つまり直ちに)、グループfが「6時間後」、グループgが「12時間後」、グループhが「24時間後」となっている(つまり、通電時間が最も長いグループeに対応する提示時期が最も早く規定されている)。例えば、ノードAにおける通電時間(例えば、累積通電時間)が120時間であった場合、当該ノードAは「通電時間が100時間以上150時間未満」のグループgに属するとして判別されることになる。
また、図17(C)に示すグループ分け条件テーブルでは、再生時間と通電時間の組合せをグループ分け条件の要素としており、「再生時間が30時間以上、且つ、通電時間が200時間以上」のグループi、「再生時間が30時間以上、且つ、通電時間が200時間未満」のグループj・・・等に区分されている。そして、新規コンテンツカタログ情報の提示時期は、グループiが「0時間後」(つまり直ちに)、グループjが「6時間後」・・・、となっている。このように、「再生時間が30時間以上、且つ、通電時間が200時間以上」のグループiを最優先とすることで、新規コンテンツデータの試聴可能性が高いユーザに対して優先して新規コンテンツカタログ情報を提示できるので、新規コンテンツデータのレプリカをオーバーレイネットワーク9上で増やす(つまり、当該新規コンテンツデータのレプリカを保存するコンテンツ保持ノードを増やす)確率を高めることができ、更に、通電時間が長くオーバーレイネットワーク9から脱退する可能性が低いノードのユーザに対して優先して新規コンテンツカタログ情報を提示できるので、当該新規コンテンツデータを他のノードが取得する(新規コンテンツデータの取得要求に応える)確率を高めることができる。このように、最初に効率良くレプリカが保存されるので、次からは新規コンテンツデータへのアクセスが分散されるようになる。
なお、図17(C)に示すグループ分け条件テーブルにおいて、グループjを「再生時間が30時間以上、且つ、通電時間が150時間以上200時間未満」とし、グループkを「再生時間が30時間以上、且つ、通電時間が100時間以上150時間未満」とし、グループlを「再生時間が30時間以上、且つ、通電時間が100時間未満」とし、グループmを「再生時間が20時間以上30時間未満、且つ、通電時間が200時間以上」・・・というように、組合せ条件を変えても良い。
また、カタログ配布メッセージに含まれるグループ分け条件テーブルには、当該カタログ配布メッセージに含まれる新規コンテンツカタログ情報に属性情報が記述された新規コンテンツデータのジャンル(例えば、アニメ)を示す情報が付加されているようにし、制御部11は、上述したように計測してジャンル毎に対応付けて記憶部12に記憶しておいた再生時間等に基づいて、当該新規コンテンツデータと同一ジャンルに対応する再生時間等に応じて複数に分けられるグループのうち、自己が属するグループを判別するように構成すれば、より新規コンテンツデータの試聴可能性が高いユーザに対して優先して新規コンテンツカタログ情報を提示できるので、効果的である。
また、図17(A)〜(C)に示す上記グループ分け条件テーブルの例では、新規コンテンツカタログ情報の提示時期を段階的に区切った例を示したが、これに限定されるものではなく、新規コンテンツカタログ情報の提示時期を各ノードが所定の条件式に基づき算出するように構成すれば、例えば再生時間や再生回数等に応じて、よりきめ細かく提示時期を規定することができる。例えば、提示時期をT(時間)、コンテンツデータの再生回数をS(回)とし、上記条件式を「T=72−3N」(ただし、Tがマイナスの場合は“0”とする)とすれば、当該再生回数Sが24回以上のグループに属するノードの提示時期Tは“0”時間後(つまり、直ちに)となり、当該再生回数Sが18回のグループに属するノードの提示時期Tは“24”時間後(1日)後となり、当該再生回数Sが0回のグループに属するノードの提示時期Tは“72”時間(3日)後となる。
図15に示す処理に戻り、ステップS14では、上記決定したグループに対応する、新規コンテンツカタログ情報の提示時期になったか(つまり、上記ステップS37におけるグループ決定により開始されたカウントがアップしたか)否かを判別する。そして、新規コンテンツカタログ情報の提示時期になっていない場合には(ステップS14:NO)、ステップS16に移行され、新規コンテンツカタログ情報の提示時期になった場合には(ステップS14:YES)、制御部11は、上記ステップS36にて記憶された新規コンテンツカタログ情報をユーザに対して提示可能状態に設定(ステップS15)、例えば、当該新規コンテンツカタログ情報に記述された新規コンテンツデータの属性情報を表示部16における表示画面上に選択可能に表示する。
図18は、新規コンテンツカタログ情報に記述された新規コンテンツデータのリストが表示部16における映像が表示された表示画面上にポップアップ表示された例を示す図である。図18に示すリスト51には、新規コンテンツデータのタイトル、ジャンル、総再生時間等の属性情報が示されており、ユーザが入力部21を操作してカーソル52により所望の新規コンテンツデータのタイトルを選択実行することで、上述したように、当該新規コンテンツデータのコンテンツIDを含むコンテンツ所在問合せメッセージが、そのルートノード向かって送出されることになる。
ステップS16におけるその他の処理では、例えば、ユーザからの入力部21を介した指示に応じた処理、又は他のノードから受信したメッセージ(例えば、コンテンツ所在問合せメッセージ等)に応じた処理が行われ、ステップS17に移行される。
ステップS17では、例えばユーザからの電源OFF指示があったか否かが判断され、電源OFF指示がない場合には(ステップS17:NO)、ステップS12に戻り処理が継続され、電源OFF指示があった場合には(ステップS17:YES)、当該処理は終了する。
以上説明したように、上記実施形態によれば、全てのノードに新規コンテンツカタログ情報を配信しておき、グループ分け条件に応じて分けられるグループ毎に異なるタイミングで(タイミングをずらして)、夫々のグループに属するノードのユーザに対して新規コンテンツカタログ情報を提示するように構成したので、アクセスの集中による装置(ノードやサーバ)負荷及びネットワーク負荷を極力抑えることができる。また、各ノードが自己が属するグループの判断及び当該グループの提示時期の判断を行って自律的に新規コンテンツカタログ情報をユーザに対して提示することができる。
また、新規コンテンツデータを初期保存するための当該システムの増強等の設備費用を増やすことなく、ユーザによる待ち時間を少なくさせることができる。
また、新規コンテンツカタログ情報を利用する可能性がより高い(つまり、新規コンテンツデータを要求(リクエスト)する可能性が高い)グループ)、例えば、再生時間が最も長い(又は前記再生回数が最も多い)グループや、通電時間が最も長いグループ等を優先して、当該グループに属するノードのユーザに対して新規コンテンツカタログ情報を提示するように構成(つまり、レプリカを他のノードが取得可能に保存するコンテンツ保持ノードとして貢献度が高そうなノードに優先して公開)したので、システム負荷を上げることなく、十分な数の新規コンテンツデータのレプリカを早い段階でノードに分散保存させることができる。
[4.変形実施形態]
上述した実施形態においては、各ノードが受信し保存した新規コンテンツカタログ情報について、自己が属するグループに対応する提示時期になったか否かを判別し、提示時期になった場合に、上記新規コンテンツカタログ情報をユーザに対して提示可能状態に設定するように構成したが、以下に説明する変形実施形態では、カタログ管理ノード又はカタログ管理サーバが、全てのノードに対して新規コンテンツカタログ情報を送信した後、当該新規コンテンツカタログ情報をユーザに対して提示させるための提示指令メッセージ(提示指令情報)をグループ毎に異なるタイミングで送信するように構成した。
なお、この変形実施形態におけるノードの構成及び機能は上述した実施形態と同様である。また、この変形実施形態におけるカタログ管理ノードとなるノードの制御部11は、更に、本発明における提示指令情報送信手段、要求数情報取得手段及びノード数情報取得手段等として機能するようになっている。
また、この変形実施形態においても、新規コンテンツカタログ情報は、例えばカタログ管理ノードによるDHTマルチキャストにより(図14に示す処理により)配信される。
[4.1 提示指令メッセージを配信するカタログ管理ノードの処理1]
先ず、提示指令メッセージを配信するカタログ管理ノードの処理について、図19を用いて説明する。
図19は、カタログ管理ノードの制御部11における提示指令メッセージ配信処理を示すフローチャートである。
この場合、カタログ管理ノードは、上述したグループ分け条件テーブルを記憶している。
図19に示す処理は、例えばカタログ管理ノードであるノードXにおいて、上述した新規コンテンツカタログ情報の配信後例えば直ちに開始される。
先ず、ノードXの制御部11は、提示指令メッセージを生成し(ステップS41)、一時記憶する。
次いで、制御部11は、上記生成した提示指令メッセージのヘッダ部におけるターゲットノードIDとして自己のノードID例えば「3102」を設定し、IDマスクとして「0」を設定し、IPアドレスとして自己のIPアドレス等を設定する(ステップS42)。
次いで、制御部11は、例えば記憶部12に記憶されたグループ分け条件テーブルを参照して、配信対象となるグループを決定(選定)する(ステップS43)。例えば、図17(A)に示すグループ分け条件テーブルを用いる場合、提示指令メッセージの配信順序は、グループaが1位、グループbが2位、グループcが3位、グループdが4位となっており、例えば配信順序が1位である、再生時間が最も長いグループaが始めに(最初のループで)選定される(次回以降のループで順次、再生時間が長い順(配信順序2位→3位→4位の順)に選定される)。
なお、当該処理で一度選定されたグループは重複して選定されないように当該グループに対して例えばフラグ(“1”)が立てられる。
次いで、制御部11は、決定したグループに対応するグループ分け条件(例えば再生時間が30時間以上、或いは、例えば再生時間が30時間以上、且つ、通電時間が200時間以上)を示す条件情報、及びユーザに対する提示対象となる新規コンテンツカタログ情報を特定するためのシリアル番号を、上記提示指令メッセージにおけるペイロード部に設定する(組み込む)(ステップS44)。
ここで、例えば図17(A)に示すグループ分け条件テーブルを用いる場合には、「ジャンル(例えば提示対象となる新規コンテンツカタログ情報に属性情報が登録された新規コンテンツデータと同一ジャンル)がアニメであるコンテンツデータの再生時間が30時間以上」とのグループ分け条件を示す条件情報を提示指令メッセージにおけるペイロード部に設定するようにし、例えば図17(C)に示すグループ分け条件テーブルを用いる場合には、例えば「ジャンルがアニメであるコンテンツデータの再生時間が30時間以上、且つ、通電時間が200時間以上」とのグループ分け条件を示す条件情報を提示指令メッセージにおけるペイロード部に設定するように構成すれば、より当該新規コンテンツカタログ情報を欲し、利用される可能性が高いユーザに対して新規コンテンツカタログ情報を優先して提示させることができる。
次いで、制御部11は、上記設定したIDマスク(値)が、自己のルーティングテーブルの全レベル数(図6の例では、「4」)よりも小さいか否かを判別(判断)する(ステップS45)。IDマスクが「0」に設定されている場合は、ルーティングテーブルの全レベル数よりも小さいため、当該制御部11は、IDマスクがルーティングテーブルの全レベル数よりも小さいと判別し(ステップS45:YES)、自己のルーティングテーブルにおける「上記設定したIDマスク+1」のレベルに登録されている全てのノードを決定し、当該決定したノードに対して上記提示指令メッセージを送信し(ステップS46)、計時を開始する。なお、当該計時は、全てのグループに属するノードに対する提示指令メッセージが完了するまで継続する。つまり、計時開始→6時間→12時間・・・と計時時間は進んで行くことになる。
次いで、制御部11は、上記提示指令メッセージのヘッダ部において設定されたIDマスクに「1」を加算して当該IDマスクを再設定し(ステップS47)、ステップS45に戻る。
その後、制御部11は、IDマスク「1」,「2」,「3」について同様にステップS45〜S47の処理を繰り返す。これにより、上記提示指令メッセージは、自己のルーティングテーブルに登録されている全てのノードに送信されることになる。
一方、上記ステップS45において、IDマスクが、自己のルーティングテーブルの全レベル数よりも小さくないと判別された場合には(ステップS45:NO)、ステップS48に移行する。
ステップS48においては、制御部11は、グループ分け条件テーブルに規定された全グループに対して提示指令メッセージを配信したか否かを判別し、全グループに対して提示指令メッセージを配信していない(例えば、図17(A)に示すグループ分け条件テーブルにおける4つのグループの全てが上記ステップS43において選定されていない)場合には(ステップS48:NO)、次のグループに対する配信条件を満たすか否か(例えば、ステップS46の提示指令メッセージの送信後に開始された計時時間が、次のグループに対応する提示時期(例えば図17(A)に示すグループbの提示時期である6時間後の時期)になった(達したか)否か)を判断する(ステップS49)。次のグループに対する配信条件を満たさない(例えば、上記提示時期になっていない)場合には(ステップS49:NO)、制御部11は、その他の処理を行い(ステップS50)、ステップS49に戻る。ステップS50におけるその他の処理においては、例えば他のノードから受信した各種メッセージに応じた処理等が行われる。
一方、次のグループに対する配信条件を満たす(例えば、上記提示時期になった)場合には(ステップS49:YES)、ステップS43に戻り、提示指令メッセージの配信対象となる次のグループ(例えば、次に再生時間が長いグループ)が選定され、上記と同様にステップS44以降の処理が行われる。
そして、上記ステップS48において、全グループに対して提示指令メッセージが配信されたと判断された場合には(ステップS48:YES)、当該処理が終了する。
なお、上記ステップS43においては、コンテンツデータの再生時間をグループ分け条件の要素として配信対象となるグループが決定されるように構成したが、この他にも、コンテンツデータの再生回数、ノードIDにおける所定桁目(例えば、最下位桁)の値、ノードの設置地域、ノードのネットワーク8への接続サービス提供者、又はノードにおける通電時間、或いはこれらの組合せ等をグループ分け条件の要素として配信対象となるグループに属するノードが決定されるように構成しても良い。
また、上記ステップS49において、カタログ管理ノードの制御部11は、一のグループに属するノードに対する提示指令メッセージの配信後、これらのノードによる新規コンテンツデータを取得するための要求(例えばコンテンツ所在問合せメッセージ)の数を示す要求数情報を、例えば当該新規コンテンツデータのルートノードやキャッシュノードから取得(所定時間毎(例えば、1時間毎)に取得)し、当該要求数情報に示される要求の数が、予め設定された基準数(例えば十分なレプリカが確保される数)以上となったか否かを判断し、当該基準数以上となった場合に、配信条件を満たすと判断して、ステップS43に戻り、提示指令メッセージの配信対象となる次のグループを選定するように構成しても良い。この構成によれば、人気のある新規コンテンツデータは、その要求の数が基準数以上となるのが比較的早いことが想定されるので、次のグループに属するノードに対して提示指令メッセージを迅速に配信し、既にノードに保存されているコンテンツカタログ情報をユーザに対して提示できる。
なお、新規コンテンツデータを取得するための要求(例えばコンテンツ所在問合せメッセージ)の数が、予め設定された基準数以上となったか否かの判断は、ルートノードやキャッシュノード、或いはルートノードやキャッシュノードを管理するライセンスサーバ等が行い、当該基準数以上となった場合に、基準数以上となったことを示す情報をカタログ管理ノードへ送信し、当該カタログ管理ノードは、基準数以上となったことを示す情報を受信した場合に、上記ステップS49において配信条件を満たすと判断するように構成しても良い。
更にまた、上記ステップS49において、上記新規コンテンツデータを取得するための要求の数が予め設定された基準数以上となったか否かを判断し、且つ、次のグループへの提示時期になったか否かを判断し、何れか一方を満たす場合に、配信条件を満たすと判断するように構成すればより効果的である。すなわち、人気のある新規コンテンツデータは、その要求の数が基準数以上となるのが比較的早いことが想定されるので、上記提示時期が到来するのを待たずに、上記要求の数が基準数以上となったことをもって、次のグループに属するノードに対して提示指令メッセージを迅速に配信でき、一方、あまり人気のない新規コンテンツデータは、いつまでたってもその要求の数が基準数以上とならないことが想定されるので、上記要求の数が基準数以上にならなくても、上記提示時期が到来したら、次のグループに属するノードに対して提示指令メッセージを迅速に配信できるというメリットがある。
また、カタログ管理ノードの制御部11が、各グループに属するノードの数(オーバーレイネットワーク9に参加しているノードの数)を示す情報を取得できるのであれば、上記要求数情報に示される要求の数が、直前に提示指令メッセージが配信されたグループに属するノードの数の所定割合(例えば、10%)に達した場合に、次のグループを決定し、当該グループに属するノードに対して提示指令メッセージを送信するように構成しても良い。更に、この場合、カタログ管理ノードの制御部11は、要求数情報に示される要求の数が、直前に提示指令メッセージが送信されたグループに属するノードの数の所定割合に達した場合であり、且つ、要求数情報に示される要求の単位時間当たりの数が減少した(つまり、上記要求が減少傾向にある)場合に、次のグループを決定し、当該グループに属するノードに対して提示指令メッセージを送信するように構成しても良い。このように構成すれば、ノード負荷及びネットワーク負荷を抑えつつ、より迅速に新規コンテンツカタログ情報を多くのノードのユーザに提示することができる。
なお、各グループに属するノードの数は、例えばオーバーレイネットワーク9に参加している全てのノードから、コンテンツデータの再生時間(又は再生回数)、ノードの設置地域、ノードのネットワーク8への接続サービス提供者、又はノードにおける通電時間等のグループ分けするために必要な情報を収集するサーバ(例えば、ライセンスサーバ)により算出され、カタログ管理ノードに提供される。
[4.2 提示指令メッセージを受信するノードの処理]
次に、提示指令メッセージを受信するノードの処理について、図20を用いて説明する。
図20は、提示指令メッセージを受信するノードの制御部11における処理を示すフローチャートである。
次に、上記のように送信された提示指令メッセージを受信した各ノードは、当該提示指令メッセージを一時格納し、図20に示す処理を開始する。ここでは、ノードAを例にとって説明する。
なお、図20に示すステップS61〜S64,及びS69の処理は、図16に示すステップS31〜S34,及びS38の処理と同様(カタログ配布メッセージと提示指令メッセージとの違いのみ)であるので、説明を省略する。
ステップS64において、制御部11は、IDマスクがルーティングテーブルの全レベル数よりも小さいと判別した場合には(ステップS64:YES)、自己のルーティングテーブルにおける「上記再設定したIDマスク+1」のレベルに登録されている全てのノードを決定し、当該決定したノードに対して、ターゲットノードIDが変換設定されIDマスクを再設定された提示指令メッセージを送信(転送)し(ステップS65)、ステップS63に戻る。
その後、制御部11は、IDマスク「2」,「3」について同様にステップS64及びS65の処理を繰り返す。これにより、上記提示指令メッセージは、自己のルーティングテーブルに登録されている全てのノードに送信されることになる。
一方、上記ステップS64において、制御部11は、IDマスクの値が、自己のルーティングテーブルの全レベル数よりも小さくないと判別した場合には(ステップS64:NO)、一時格納した提示指令メッセージのペイロード部に含まれるグループ分け条件を示す条件情報、及び新規コンテンツカタログ情報を特定するためのシリアル番号を抽出し、抽出した条件情報に示されるグループ分け条件を満たすか否かを判別する(ステップS66)。
例えば、当該条件情報にグループ分け条件として「再生時間が30時間以上」と示されている場合、制御部11は、記憶部12に記憶された再生時間(例えば、累積再生時間)が30時間以上であるか否かを判断(当該グループ分け条件に、ジャンルが指定されていない場合、各ジャンルに対応する累積再生時間の総和が30時間以上であるか否かが判断される、再生回数についても同様)し、累積再生時間が30時間以上でない場合、グループ分け条件を満たさないと判別し(ステップS66:NO)、上記一時格納した提示指令メッセージを破棄(削除)し(ステップS67)、当該処理を終了する。
また、例えば、当該条件情報にグループ分け条件として「ジャンルがアニメであるコンテンツデータの再生時間が30時間以上」というように、ジャンルが指定されている場合、制御部11は、ジャンル「アニメ」に対応する累積再生時間が30時間以上であるか否かを判断(再生回数についても同様)し、30時間以上でない場合は、グループ分け条件を満たさないと判別する(なお、通電時間等、その他のグループ分け条件の要素についても同様)。
一方、制御部11は、グループ分け条件を満たすと判別した場合(つまり、提示指令メッセージが自己が属するグループ宛ての場合)には(ステップS66:YES)、上記抽出したシリアル番号に対応する新規コンテンツカタログ情報を、図15に示すステップS15と同様、ユーザに対して提示可能状態に設定(ステップS68)、例えば、当該新規コンテンツカタログ情報に記述された新規コンテンツデータの属性情報を表示部16における表示画面上に選択可能に表示する。
こうして、提示指令メッセージは、実質的に、当該グループ分け条件を満たすノードに対してのみ配信され、新規コンテンツカタログ情報がユーザにより利用(例えば、新規コンテンツカタログ情報における新規コンテンツデータのコンテンツIDを取得し、コンテンツIDを含むコンテンツ所在問合せメッセージを、上述したように、ルートノード向けて送出)可能になる。
このように、カタログ管理ノードが各ノードに対して、既に配信した新規コンテンツカタログ情報の提示指令をグループ毎に異なるタイミングで送信し、各ノードは当該提示指令を受けた場合に、上記新規コンテンツカタログ情報をユーザに提示可能状態に設定するように構成したので、アクセスの集中による装置負荷及びネットワーク負荷を極力抑えることができ、ユーザによる待ち時間を少なくさせることができると共に、各ノード側で新規コンテンツカタログ情報の提示時期になったか否かを判断しなくて良い。
[4.3 提示指令メッセージを配信するカタログ管理ノードの処理2]
なお、ノードIDにおける最上位桁目の値をグループ分け条件の要素とする場合、DHTマルチキャストを利用して配信対象となるグループに属するノードのみに提示指令メッセージを配信することができる。
この場合のカタログ管理ノードの処理について、図21を用いて説明する。
この場合、カタログ管理ノードも、上述したグループ分け条件テーブルを記憶している。
図21は、ノードIDにおける最上位桁目の値をグループ分け条件の要素とした場合における、カタログ管理ノードの制御部11における提示指令メッセージ配信処理を示すフローチャートである。
なお、図21におけるステップS71及びS72の処理は、図19におけるステップS41及びS42と同様であるので説明を省略する。
そして、ステップS73では、カタログ管理ノードの制御部11は、上記生成した提示指令メッセージの配信対象となるグループγを決定する。なお、ノードIDが16進数である場合、γは0〜Fの何れかの値をとることになるが、ここでは説明の便宜上、ノードIDが4桁4進数であるとして説明する。
次いで、制御部11は、自己(自ノード)のノードID(例えば、「3102」とする)の最上位桁がγ(例えば、3)であるか否かを判別し(ステップS74)、γである場合には(ステップS74:YES)、上記提示指令メッセージのヘッダ部において設定されたIDマスクに「1」を加算して当該IDマスクを再設定する(ステップS75)。
次いで、制御部11は、上記IDマスクが、自己のルーティングテーブルの全レベル数(図6の例では、「4」)よりも小さいか否かを判別し(ステップS76)、IDマスクがルーティングテーブルの全レベル数よりも小さい場合には(ステップS76:YES)、自己のルーティングテーブルにおける「IDマスク+1」のレベル(このときは、「IDマスク「1」+1」=2となる)に登録されている全てのノードを決定し、当該決定したノードに対して上記生成した提示指令メッセージを送信し(ステップS77)、計時を開始する。
図6の例では、「IDマスク「1」+1」であるレベル2に登録されたノードD、ノードE、及びノードFに対して提示指令メッセージが送信されることになるが、レベル1に登録されたノードA、ノードB、及びノードCに対しては配信されない。
次いで、制御部11は、上記提示指令メッセージのヘッダ部において設定されたIDマスクに「1」を加算して当該IDマスクを再設定し(ステップS78)、ステップS76に戻る。
その後、制御部11は、IDマスク「2」,「3」について同様にステップS76〜S78の処理を繰り返す。これにより、上記提示指令メッセージは、自己のルーティングテーブルに登録されているレベル2〜レベル4の全てのノードに送信されることになる。そして、当該送信された提示指令メッセージを受信した各ノードにより、図20に示すステップS61〜ステップS65の処理が行われることによって、例えばグループγ(=3)に属するノード(例えば、図8(A)の右上の「3000」〜「3333」内のノードIDを有するノード)に提示指令メッセージが配信される。この場合、ステップS66及びS68の処理は行われず、当該提示指令メッセージを受信した各ノードは、提示指令メッセージに含まれるシリアル番号に対応する新規コンテンツカタログ情報を、図15に示すステップS15と同様、ユーザに対して提示可能状態に設定することになる。
一方、上記ステップS76において、IDマスクが、自己のルーティングテーブルの全レベル数よりも小さくないと判別された場合(図6の例では、IDマスクが「4」の場合)には(ステップS76:NO)、ステップS80に移行する。
そして、制御部11は、全グループ(γ=0〜3)に対して提示指令メッセージを配信したか否かを判別し、全グループに対して提示指令メッセージを配信していない場合には(ステップS80:NO)、上述したステップS49と同様、次のグループに対する配信条件を満たすか否か(例えば、ステップS77の提示指令メッセージの送信後に開始された計時時間が、次のグループに対応する提示時期になったか否か)を判断する(ステップS81)。
次のグループに対する配信条件を満たさない場合には(ステップS81:NO)、制御部11は、上述したステップS50と同様、その他の処理を行い(ステップS82)、ステップS81に戻る。
一方、次のグループに対する配信条件を満たす場合には(ステップS81:YES)、ステップS73に戻り、提示指令メッセージの配信対象となる次のグループγ(例えば、0)が選定される。
なお、上記ステップS81において、上記ステップS49と同様、カタログ管理ノードの制御部11は、一のグループに属するノードに対する提示指令メッセージの配信後、これらのノードによる新規コンテンツデータを取得するための要求の数を示す要求数情報を取得し、当該要求数情報に示される要求の数が、予め設定された基準数以上となった場合に、配信条件を満たすと判断するように構成しても良い。また、上記ステップS81において、カタログ管理ノードの制御部11は、上記新規コンテンツデータを取得するための要求の数が予め設定された基準数以上となったか否かを判断し、且つ、次のグループへの提示時期になったか否かを判断し、何れか一方を満たす場合に、配信条件を満たすと判断するように構成しても良い。
また、上記ステップS81において、カタログ管理ノードの制御部11は、上記要求数情報に示される要求の数が、直前に提示指令メッセージが配信されたグループに属するノードの数の所定割合(例えば、10%)に達した場合に、配信条件を満たすと判断するように構成しても良く、更に、この場合、要求数情報に示される要求の数が、直前に提示指令メッセージが送信されたグループに属するノードの数の所定割合に達した場合であり、且つ、要求数情報に示される要求の単位時間当たりの数が減少した(つまり、上記要求が減少傾向にある)場合に、配信条件を満たすと判断するように構成しても良い。
そして、この場合、カタログ管理ノードの制御部11は、各グループ(ノードIDの最上位桁が“0”のグループ、“1”のグループ、“2”のグループ・・・)に属するノードの数(おおよその数)を、自己が記憶しているDHTを用いたルーティングテーブルに基づいて(当該ルーティングテーブルの埋まり具合から)算出(推定)することができる。
例えば、一つのID空間にノードIDが偏りなく分散している場合において、上述した図3に示すレベル1のテーブルの各欄の全てにノードID及びIPアドレス等が登録されている(自己に対応する欄も登録されているとして数える)ならば、オーバーレイネットワーク9には少なくとも44/4=41=4台のノードがオーバーレイネットワーク9に参加しているという計算となり、また、例えば、上述した図3に示すレベル1及びレベル2のテーブルの各欄の全てにノードID及びIPアドレス等が登録されているならば、オーバーレイネットワーク9には少なくとも48/4=42=16台のノードが参加しているという計算となる。また、例えば、レベル1及びレベル2のテーブルの各欄の全てにノードID及びIPアドレス等が登録されており、且つ、レベル3のテーブルに空白の欄が2つあるならば(通常、低いレベルの欄から埋まっていく)、410/4=32台のノードが参加しているという計算となる。従って、例えば、ノードIDが16桁16進数である場合において、このルーティングテーブルのK個の欄にノードID及びIPアドレス等が登録されている(自己に対応する欄も登録されているとして数える)ものとすると、オーバーレイネットワーク9には、「16K/16」台のノードが参加しているという計算となり、そして、グループの数は“0”〜“F”までの16グループであるから「16K/16」を16で除した値が1グループ当たりのノードの数となる。
そして、上記ステップS74において、自己のノードIDの最上位桁がγでない場合には(ステップS74:NO)、制御部11は、自己のルーティングテーブルの最上位のレベル1に登録されているノードのうち、ノードIDの最上位桁がγ(例えば、0)のノード(例えば、ノードIDが「0132」のノードA)を決定し、当該決定したノードに対して上記生成した提示指令メッセージを送信した(ステップS79)後、ステップS80に移行し、上記と同様の処理を行う。そして、当該送信された提示指令メッセージを受信した各ノードにより、図20に示すステップS61〜ステップS65の処理が行われることによって、例えばグループγ(=0)に属するノード(例えば、図8(A)の左上の「0000」〜「0333」内のノードIDを有するノード)に提示指令メッセージが配信される。この場合も、ステップS66及びS68の処理は行われず、当該提示指令メッセージを受信した各ノードは、提示指令メッセージに含まれるシリアル番号に対応する新規コンテンツカタログ情報を、図15に示すステップS15と同様、ユーザに対して提示可能状態に設定することになる。
こうして、順次、残りのグループγ(例えば1及び2)が選定され、当該グループに属するノードに提示指令メッセージが配信されることになる。
このように、ノードIDにおける最上位桁目の値をグループ分け条件の要素とする場合、配信対象となるグループに属するノードのみに提示指令メッセージが配信されるので、各ノードは、上記ステップS66に示すようにグループ分け条件を満たすか否かを判別する処理を削減することができ、また、ネットワーク8の負荷を低減することができる。
[4.4 提示指令メッセージを配信するカタログ管理サーバの処理]
次に、カタログ管理サーバにより提示指令メッセージを配信する場合について、図22を用いて説明する。
図22は、カタログ管理サーバにおける提示指令メッセージ配信処理を示すフローチャートである。
図22に示す処理は、例えばカタログ管理サーバにおいて、上述した新規コンテンツカタログ情報の配信後例えば直ちに開始される。
なお、カタログ管理サーバは、カタログ管理ノードと同様、上述したグループ分け条件テーブルを記憶しており、更に、各グループに属するノードのノードID及びIPアドレス等を記憶している。また、グループ分け条件に必要な各ノードの情報(例えば、ノードの設置地域(例えば、郵便番号や電話番号)、ノードのネットワーク8への接続サービス提供者(例えば、AS番号)、ノードにおけるコンテンツデータのジャンル毎の再生時間又は再生回数、ノードにおける通電時間等)を記憶しており、かかる情報は、例えば、各ノードがオーバーレイネットワーク9に参加する際にアクセスするコンタクトノード(通常、複数設置)から取得される。すなわち、各ノードは、自己に割り当てられたコンタクトノードにアクセスしたときに、そのとき記憶している上記グループ分け条件に必要なノードの情報をコンタクトノードに送信し、オーバーレイネットワーク9への参加後に変わる情報(例えば、上記コンテンツデータのジャンル毎の再生時間又は再生回数、ノードにおける通電時間等の情報)については、定期的に、コンタクトノードに送信するようになっている。カタログ管理サーバは、これらのコンタクトノードから定期的にグループ分け条件に必要な各ノードの情報を収集することにより、定期的に、上記グループ分けを再編することになる。カタログ管理サーバが、各ノードから、上記グループ分け条件に必要な各ノードの情報を取得することも可能であるが、コンタクトノードを介することで、カタログ管理サーバの負荷等を低減することができる。
図22に示す処理が開始されると、カタログ管理サーバの制御部は、例えばペイロード部に提示対象となる新規コンテンツカタログ情報を特定するためのシリアル番号を含む提示指令メッセージを生成し(ステップS91)、一時記憶する。
次いで、カタログ管理サーバの制御部は、記憶されたグループ分け条件テーブルを参照して、配信対象となるグループを決定(選定)する(ステップS92)。例えば、図17(A)に示すグループ分け条件テーブルを用いる場合、配信順序が1位である「30時間以上」のグループaが始めに(最初のループで)選定される。なお、当該ステップS92においてグループ分け条件テーブルを用いてグループを決定する方法については、図19に示すステップS43と同様であるが、コンテンツデータの再生時間(又は再生回数)に関してジャンルを考慮する場合、例えば図17(A)に示されるグループ分け条件テーブルをコンテンツデータのジャンル毎に記憶しておくことを要し、新規コンテンツデータのジャンル(例えば、アニメ)に対応するグループ分け条件テーブルが参照されて、配信対象となるグループが決定(選定)されることになる。
次いで、カタログ管理サーバの制御部は、上記選定されたグループに属するノードのIPアドレス等を特定し、当該特定したノードに対して上記生成した提示指令メッセージを配信し(ステップS93)、計時を開始する。
次いで、カタログ管理サーバの制御部は、グループ分け条件テーブルに規定された全グループに対して提示指令メッセージを配信したか否かを判別し(ステップS94)、全グループに対して提示指令メッセージを配信していない場合には(ステップS94:NO)、次のグループに対する配信条件を満たすか否か(上述したステップS49と同様)を判断する(ステップS95)。
次のグループに対する配信条件を満たさない場合には(ステップS95:NO)、当該制御部は、その他の処理を行い(ステップS96)、ステップS95に戻る。
一方、次のグループに対する配信条件を満たす場合には(ステップS95:YES)、ステップS92に戻り、提示指令メッセージの配信対象となる次のグループ(例えば、次に再生時間が長いグループ)が選定され、上記と同様にステップS93以降の処理が行われる。
そして、上記ステップS94において、全グループに対して提示指令メッセージが配信されたと判断された場合には(ステップS94:YES)、当該処理が終了する。
こうして配信された提示指令メッセージは、各ノードにより受信され、当該各ノードは、当該提示指令メッセージに含まれるシリアル番号に対応する新規コンテンツカタログ情報を、図15に示すステップS15と同様、ユーザに対して提示可能状態に設定することになる。
このように、カタログ管理サーバにより提示指令メッセージを配信する場合は、当該カタログ管理サーバ側で配信対象となるグループに属するノードが特定され、当該ノードにのみ提示指令メッセージが配信されるので、各ノードは、グループ分け条件を満たすか否かを判別する処理を削減することができる。
また、上記実施形態においては、DHTを利用したアルゴリズムによって構築されたオーバーレイネットワーク9を前提として説明したが、本発明はこれに限定されるものではない。