以下、本発明の最良の実施形態を図面に基づいて説明する。
[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)アドレスが割り当てられている。このような製造番号およびIPアドレスは、複数のノード間で重複しないものである。
そして、本実施形態に係るツリー型放送システムSは、これらのノードNnのうち、図1の上部枠100内に示すように、何れか複数のノードNnの参加により形成(構成)されるピアツーピア方式のネットワークシステムであり、該システムS(言い換えれば、ツリートポロジー)に参加している複数のノードNnが放送局(放送装置)10を最上位として複数の階層を形成しつつネットワーク8を介してツリー状に接続されている。なお、図1の上部枠100内に示すネットワーク9は、既存のネットワーク8を用いて形成された仮想的なリンクを構成するオーバーレイネットワーク9(論理的なネットワーク)である。
このようなツリー型放送システムSにおいては、放送局10により放送(例えばストリーム配信)されたコンテンツデータストリームが、上位階層(以下、「上流」という)のノードNnから下位階層(以下、「下流」という)のノードNnに順次転送(ALM(Application Layer Multicast))されるようになっている。また、ツリー型放送システムSにおいて形成されたツリートポロジーは、接続先紹介サーバ20により管理されている。
また、ツリー型放送システムSに参加しているノードNnのうちの何れか複数のノードNnは、上流のノードNnからコンテンツデータストリームを受信している接続(以下、「本接続」という)とは別に、当該本接続が途絶したとき、又は途絶しそうになったときのための予備接続を確保している。すなわち、この予備接続は、本接続が途絶したとき、又は途絶しそうになったときに本接続から切り換わるものである。ここで、「途絶しそうになったとき」とは、例えば、上流のノードNnからのコンテンツデータストリームの受信品質の低下などが該当する。
また、この予備接続は、本接続されている上流のノード(以下、「本接続上流ノード」という)Nnとは異なる上流のノード(以下、「予備接続上流ノード」という)Nn(放送局10の場合もある)との間でなされており、本接続とは別の通信ポートが使用される。また、予備接続上流ノードNnとの間では定期的に生存確認が行われるが、当該予備接続上流ノードNnからはコンテンツデータストリームが受信されない。すなわち、本接続から予備接続に切り換わったときに、予備接続上流ノードNnが本接続上流ノードNnになり、このノードNnからコンテンツデータストリームの受信が開始される。これにより、コンテンツデータストリームの受信が滞らないようにしている。なお、放送局10の直下に接続されているノードNnは予備接続を行う必要はない。
そして、本実施形態では、上流のノードNn側から、当該上流のノードNnの下流側に位置されるべきノードNnに対して接続要求を行うことにより本接続又は予備接続が確立されることを特徴の一つとしている。
具体的には、ツリー型放送システムSにおいて、接続(本接続又は予備接続)を必要とするノードNnのノード情報(例えば、IPアドレス及びポート番号等のネットワーク上のアドレス情報)を含む接続未ノード情報パケットを放送局10から下流方向へ放送させる。そして、上記接続未ノード情報パケットを受信したノードNnは、これに含まれるノード情報に対応するノードNnが自己の下流側に接続(つまり、下位階層として接続)可能であるか否かを判断し、可能である場合、上記接続を必要とするノードNnに対して接続要求を行って自己の下流側に接続するための接続処理を行う。
図2は、本接続を必要とするノードNnが本接続するまでの様子(一例)を示す概念図であり、図3は、予備接続を必要とするノードNnが予備接続するまでの様子(一例)を示す概念図である。なお、図2及び図3において、実線は本接続を示し、破線は予備接続を示している。例えば、ノードN7は、本接続上流ノードN3と本接続していると共に、ノードN3よりさらに上流の予備接続上流ノードN1と予備接続している。
図2の例において、ツリー型放送システムSに参加を望むノードN14は、本接続を必要とするノードとして、自己のノード情報を含む本接続未ノード情報を放送局10に対して送信する(図2(A)の本接続未ノード情報送信(1))。当該本接続未ノード情報を受信した放送局10は、当該本接続未ノード情報を含む本接続未ノード情報パケットP1を放送、つまり、自己に本接続されているノードN1及びN2に対して送信する(図2(A)の放送(2))。
そして、当該本接続未ノード情報パケットP1を受信した各ノードNnは、自己の下流側にノードNnを本接続可能である場合(本接続に余裕がある場合)、上記本接続を必要とするノードN14に対して本接続要求メッセージを送信する(図2(B)の本接続要求(3))。図2(B)の例の場合、ノードN6がノードN14に対して本接続要求を行っている。そして、当該本接続要求を受けたノードN14が、当該本接続要求を行ったノードN6に対して本接続応答メッセージを送信する(図2(B)の本接続応答(4))ことにより、本接続が確立し、ノードN6からノードN14に対してコンテンツデータストリームの送信(ストリーミング)が開始される。その後、ノードN14は、接続先紹介サーバ20に対して本接続が完了したことを示す本接続完了通知メッセージを送信する(図2(B)の本接続完了通知(5))。
一方、図3の例において、予備接続を必要とするノードN14は、自己のノード情報を含む予備接続未ノード情報を接続先紹介サーバ20に送信する(図3(A)の予備接続未ノード情報送信(1))。なお、予備接続を必要とするか否かは、例えばシステム管理者により決定される。放送局10の直下に本接続されているノードNnは予備接続を行う必要はない。上記予備接続未ノード情報を受信した接続先紹介サーバ20は、定期的に、又は放送局10からの要求に応じて当該予備接続未ノード情報を放送局10に送信する(図3(A)の予備接続未ノード情報送信(2))。当該予備接続未ノード情報を受信した放送局10は、当該予備接続未ノード情報を含む予備接続未ノード情報パケットP2を放送する(図3(A)の放送(3))。
ここで、予備接続を必要とするノードN14は、本接続の場合と同様、上記予備接続未ノード情報を直接、放送局10に送信するように構成しても良いが、予備接続の場合、本接続に比べて必ずしも迅速に確立する必要がないので、接続先紹介サーバ20が複数のノードNnの夫々に対応する予備接続未ノード情報をまとめて放送局10に送信することの方が効率的であり望ましい。逆に、本接続を必要とするノードN14は、迅速に本接続を確立する必要があるので、上記本接続未ノード情報を直接、放送局10に送信することが好適である。
そして、当該予備接続未ノード情報パケットP2を受信した各ノードNnは、自己の下流側にノードNnを予備接続可能である場合(予備接続に余裕がある場合)、上記予備接続を必要とするノードN14に対して予備接続要求メッセージを送信する(図3(B)の予備接続要求(4))。そして、当該予備接続要求を受けたノードN14が、当該予備接続要求を行ったノードN6に対して予備接続応答メッセージを送信する(図3(B)の予備接続応答(5))ことにより、予備接続が確立する。その後、ノードN14は、接続先紹介サーバ20に対して予備接続が完了したことを示す予備接続完了通知メッセージを送信する(図3(B)の予備接続完了通知(6))。
[1−1.放送局10の構成等]
次に、図4を参照して、放送局10の構成及び機能について説明する。
図4は、放送局10の概要構成例を示す図である。
放送局10は、図4に示すように、主電源101、主記憶装置102、ハードディスク装置103、CPU104、ネットワークインタフェース105、周辺機器制御チップ106、ビデオチップ107、音源チップ108、及び内蔵スピーカ112等を備えて構成されている。また、放送局10は、ルータ114を介してネットワーク8に接続される。なお、このような放送局10として、専用の放送サーバの他、何れかのノードNnが適用されても良い。
また、主電源101、主記憶装置102、ハードディスク装置103、CPU104、ネットワークインタフェース105、周辺機器制御チップ106、ビデオチップ107、及び音源チップ108は、システムバス113を介して相互に接続されている。また、キーボード109及びマウス110は、周辺機器制御チップ106に接続され、ディスプレイ111は、ビデオチップ107に接続されている。
主記憶装置102は、RAM及びROM等を備えて構成されており、オペレーティングシステム、ストリーム制御プログラム、画面制御プログラム、トポロジー制御プログラム、接続未ノード情報送信プログラム、及びデコーダ(プログラム)等が記憶されている。また、主記憶装置102は、ノード管理テーブルを記憶しており、該ノード管理テーブルには、放送局10に接続された下流のノードNnのアドレス情報が登録される。また、主記憶装置102は、バッファメモリ(例えば、リングバッファ)を有する。
また、ハードディスク装置103には、放送用コンテンツデータが記録されている。
CPU104は、主記憶装置102に記憶された各種プログラムにしたがって(つまり、プログラムの実行により)、例えばハードディスク装置103に記録されたコンテンツデータをパケット化し、ノード管理テーブルに登録された下流のノードNnに対して放送(ストリーム配信)する放送処理を行う。
また、CPU104は、上述した接続(本接続又は予備接続)未ノード情報パケットをノード管理テーブルに登録された下流のノードNnに対して放送する放送処理を行う。
[1−2.接続先紹介サーバ20の構成等]
次に、図5を参照して、接続先紹介サーバ20の構成及び機能について説明する。
図5は、接続先紹介サーバ20の概要構成例を示す図である。
接続先紹介サーバ20は、図5に示すように、主電源201、主記憶装置202、ハードディスク装置203、CPU204、ネットワークインタフェース205、周辺機器制御チップ206、及びビデオチップ207等を備えて構成されている。また、接続先紹介サーバ20は、ルータ212を介してネットワーク8に接続される。
また、主電源201、主記憶装置202、ハードディスク装置203、CPU204、ネットワークインタフェース205、周辺機器制御チップ206、及びビデオチップ207は、システムバス211を介して相互に接続されている。また、キーボード208及びマウス209は、周辺機器制御チップ206に接続され、ディスプレイ210は、ビデオチップ207に接続されている。
主記憶装置202は、RAM及びROM等を備えて構成されており、オペレーティングシステム、ノード管理プログラム、トポロジー管理プログラム、接続先候補紹介プログラム、及び運用管理プログラム等が記憶されている。
また、ハードディスク装置203には、放送局管理データベース及びトポロジーデータベースが構築されている。放送局管理データベースには、各放送局10の所在情報(IPアドレス及びポート番号等)が放送チャンネル情報(例えばチャンネル番号)に対応付けられて登録される。また、トポロジーデータベースには、トポロジー管理情報が登録されている。かかるトポロジー管理情報は、放送チャンネル毎に、且つツリートポロジーに参加しているノードNn毎に存在している。そして、各ノードNnのトポロジー管理情報には、ノード情報と、ツリートポロジーにおける階層レベルと、下流に本接続されているノードNnを示すノード情報と、下流に本接続可能なノードNnの本接続許容数と、予備接続上流ノードNnへの予備接続の有無と、下流に予備接続されているノードNnを示すノード情報と、下流に予備接続可能なノードの予備接続許容数と、他のノードNnへコンテンツデータを転送する転送能力と、が含まれている。ここで、転送能力とは、例えば、ノードNnのCPUの処理速度(GHz)やネットワーク8における有効帯域(例えば、データ転送速度(bps))のことをいう。
CPU204は、主記憶装置202に記憶された各種プログラムにしたがって、例えばノードNnからの接続先紹介要求メッセージに応じて上記トポロジー管理情報から、下流に本接続されているノードの数が本接続許容数に満たない(下流側に本接続が可能なノードNn)接続先候補を検索し、当該検索した1以上の接続先候補のノード情報を含む接続先候補紹介メッセージを返信する返信処理を行う。
また、CPU204は、ノードNnからの本接続完了通知メッセージに応じて当該ノードNnについてのトポロジー管理情報をトポロジーデータベースに登録する。
また、CPU204は、ノードNnからの予備接続完了通知メッセージ、又は後述する予備接続有無通知メッセージに応じてトポロジー管理情報における予備接続上流ノードNnへの予備接続の有無を更新する。
また、CPU204は、定期的に、又は放送局10からの要求などに応じて、トポロジー管理情報を参照し、予備接続上流ノードNnへの予備接続が無であるノードNnのノード情報を含む予備接続未ノード情報を放送局10に送信する送信処理を行う。ここで、予備接続上流ノードNnへの予備接続が無であるノードNnが複数存在する場合、夫々のノードNnの予備接続未ノード情報が放送局10に送信されることになる。また、予備接続上流ノードNnへの予備接続が無であるノードNnであっても、例えばシステム管理者により予備接続が否設定になっている場合には、当該ノードNnの予備接続未ノード情報の放送局10への送信処理が行われない。
[1−3.ノードNnの構成等]
次に、図6を参照して、ノードNnの構成及び機能について説明する。
図6は、ノードNnの概要構成例を示す図である。
ノードNnは、図6に示すように、主電源301a、補助電源301b、主記憶装置302、ハードディスク装置303、CPU304、ネットワークインタフェース305、周辺機器制御チップ306、ビデオチップ307、音源チップ308、ユーザ入力用リモコン310との間で赤外線通信を行うための赤外線ポート309、内蔵ディスプレイ311、及び内蔵スピーカ312等を備えて構成されている。また、ノードNnは、ルータ314を介してネットワーク8に接続される。なお、ノードNnとしては、PC、STB(Set Top Box)、或いは、TV受信機等を適用可能である。
また、主電源301a、主記憶装置302、ハードディスク装置303、CPU304、ネットワークインタフェース305、周辺機器制御チップ306、ビデオチップ307、及び音源チップ308は、システムバス313を介して相互に接続されている。
主記憶装置302は、RAM及びROM等を備えて構成されており、オペレーティングシステム、ストリーム制御プログラム、画面制御プログラム、トポロジー制御プログラム、バッファメモリ監視プログラム、及びデコーダ等が記憶されている。
また、主記憶装置302には、放送局10の所在情報(IPアドレス及びポート番号等)及び接続先紹介サーバ20の所在情報が記憶されている。また、主記憶装置302は、ノード管理テーブルを記憶しており、該ノード管理テーブルには、自ノードに本接続及び予備接続されている下流のノードNnのノード情報(IPアドレス及びポート番号等)が登録される。
また、主記憶装置302は、受信したコンテンツデータを構成する各パケットを一時的に蓄積するためのバッファメモリ(例えば、リングバッファ)を有する。
CPU304は、主記憶装置302に記憶された各種プログラム(本発明のノード処理プログラムを含む)にしたがって、ツリー型放送システムSに参加するための参加処理を実行し、参加後に放送局10又は上流のノードNnから配信されネットワークインタフェース305を介して受信されたコンテンツデータのパケットをバッファリングさせつつ再生処理を行う。この再生処理では、受信されバッファメモリに蓄積されたコンテンツデータ(例えば、ビデオデータ及びオーディオデータ)が読み出されデコーダによりデコードされる。そして、デコードされたビデオデータ(映像情報)がビデオチップ307を通じて内蔵ディスプレイ311(又は図示しない外部ディスプレイ)に出力され、デコードされたオーディオデータ(音声情報)が音源チップ308を通じて内蔵スピーカ312(又は図示しない外部スピーカ)から出力される。
また、自ノードの下流にノードNnが接続されている場合、CPU304は、バッファメモリに蓄積されたコンテンツデータの各パケットを当該下流のノードNnに転送(コンテンツストリームの中継)する転送処理を行う。
また、上記参加処理では、CPU304は、上述した本接続未ノード情報を含む接続先探索メッセージを放送局10に対して送信する。
そして、上述したように、放送局10から放送された、本接続未ノード情報(本接続を必要とするノードNnのノード情報を含む)を含む本接続未ノード情報パケットを受信したノードNnのCPU304は、上記プログラムの実行により本発明の接続可否判断手段、接続処理手段、及び接続未ノード情報転送手段等として機能する。
具体的には、本接続未ノード情報パケットを受信したノードNnのCPU304は、当該本接続未ノード情報パケットに含まれる本接続未ノード情報に対応するノードNnが、自ノードの下流に本接続可能であるか否かを判断する。例えば、当該CPU304は、自ノードが本接続許容数(例えば、2つ)に達していないか否かを判断して本接続許容数に達していなければ、本接続可能であると判断する。
そして、当該CPU304は、本接続可能であると判断した場合、上記本接続未ノード情報に含まれるノード情報に基づいて、当該ノード情報に対応するノードNnに対して本接続要求を行って自ノードの下流に本接続するための接続処理を行う。この接続処理では、当該CPU304は、上記本接続未ノード情報に含まれるノード情報がヘッダに記述された本接続要求メッセージを当該ノード情報に対応するノードNnに対して送信する。
また、本接続未ノード情報パケットを受信したノードNnのCPU304は、自ノードの下流にノードNnが既に本接続されている場合、当該本接続未ノード情報パケットを当該下流のノードNnに転送する転送処理を行う。これにより、本接続未ノード情報パケットが下流方向へ中継されていくことになる。なお、かかる転送処理は、自ノードの下流に本接続可能でないと判断された場合にのみに行われるように構成すれば、余分なメッセージの転送を回避し、ノードNnの負荷やネットワーク負荷を抑えることができるので望ましい。
一方、本接続要求メッセージを受信したノードNnのCPU304は、本発明の接続処理手段として機能し、当該本接続要求メッセージを送信したノードNnからの接続要求に応じて当該ノードNnの下流に本接続するための接続処理を行う。この接続処理では、当該CPU304は、本接続要求メッセージを送信したノードNnに対して本接続応答メッセージ及びストリーム開始要求メッセージを送信する。また、当該CPU304は、接続先紹介サーバ20に対して本接続完了通知メッセージを送信する。
そして、本接続応答メッセージ及びストリーム開始要求メッセージを受信したノードNnのCPU304は、当該本接続応答メッセージ等を送信したノードNnのノード情報をノード管理テーブルに追加登録し、当該ノードNnに対してストリーミング処理を開始する。
なお、ツリー型放送システムSに参加するノードNnのCPU304は、接続先探索メッセージを放送局10に対して送信する上記参加処理と、接続先紹介要求メッセージを接続先紹介サーバ20に対して送信する従来の参加処理と、の何れか一方を選択するように構成しても良い。
更に、ツリー型放送システムSに参加しているノードNnのCPU304は、予め設定された時間(例えば、5分)が経過する度に、自ノードのノード情報と予備接続上流ノードNnへの予備接続の有無を示す情報(例えば、予備接続の完了/未完了のフラグ)を含む予備接続有無通知メッセージを接続先紹介サーバ20に送信する送信処理を行う。予備接続上流ノードNnへの予備接続が無である場合、予備接続有無通知メッセージに含まれる情報は、予備接続未ノード情報ということになる。なお、各ノードNnにおいてユーザが予備接続の要否を任意に設定可能とし、予備接続が否設定の場合には、上記予備接続有無通知メッセージを接続先紹介サーバ20に送信しないように構成しても良い。この場合、その後に予備接続が要設定に変更された場合、上記予備接続有無通知メッセージが接続先紹介サーバ20に送信される。
そして、上述したように、放送局10から放送された、予備接続未ノード情報(予備接続を必要とするノードNnのノード情報を含む)を含む予備接続未ノード情報パケットを受信したノードNnのCPU304は、上記プログラムの実行により本発明の接続可否判断手段、接続処理手段、接続先選択手段、接続未ノード情報転送手段、転送可否判断手段、及び転送先選択手段等として機能する。
具体的には、予備接続未ノード情報パケットを受信したノードNnのCPU304は、当該予備接続未ノード情報パケットに含まれる予備接続未ノード情報に対応するノードNnが、自ノードの下流に予備接続可能であるか否かを判断する。例えば、当該CPU304は、自ノードが予備接続の予備接続許容数(例えば、本接続用とは別に確保された数(例えば、4つ))に達していないか否かを判断して予備接続許容数に達していなければ、予備接続可能であると判断する。
そして、当該CPU304は、予備接続可能であると判断した場合、本接続の場合と同様、上記予備接続未ノード情報に含まれるノード情報に基づいて、当該ノード情報に対応するノードNnに対して予備接続要求を行って自ノードの下流に予備接続するための接続処理を行う。この接続処理では、当該CPU304は、上記予備接続未ノード情報に含まれるノード情報がヘッダに記述された予備接続要求メッセージを当該ノード情報に対応するノードNnに対して送信する。
また、予備接続未ノード情報パケットを受信したノードNnのCPU304は、自ノードの下流にノードNnが既に本接続されている場合、当該予備接続未ノード情報パケットを当該下流のノードNnに転送する転送処理を行う。
ここで、予備接続未ノード情報パケットに一つのノードNnの予備接続未ノード情報だけが含まれている場合、かかる転送処理は、本接続の場合と同様、自ノードの下流に予備接続可能でないと判断された場合にのみに行われるように構成することが望ましい。一方、予備接続未ノード情報パケットに複数のノードNnの予備接続未ノード情報が含まれている場合であって、自ノードの下流に予備接続可能であると判断された場合、上記CPU304は、当該複数のノードNnのうち何れか一つ(或いは、予備接続許容数未満であれば、幾つでも良い)のノードNnを予備接続先として選択し、選択したノードNnに対して上記予備接続処理を行うことになる。つまり、受信された予備接続未ノード情報パケットに含まれる複数の予備接続未ノード情報のうちから何れか一つの予備接続未ノード情報が選択され、選択された予備接続未ノード情報に含まれるノード情報に対応するノードNnに予備接続するための接続処理が行われる。また、この場合において、自ノードの下流にノードNnが既に本接続されているとき、上記CPU304は、受信された予備接続未ノード情報パケットに含まれる複数の予備接続未ノード情報のうち上記選択された予備接続未ノード情報を除いて(この情報は転送する必要はないため)、当該予備接続未ノード情報パケットを、自ノードに本接続された下流のノードNnに転送する転送処理を行う。
一方、予備接続要求メッセージを受信したノードNnのCPU304は、本発明の接続処理手段として機能し、当該予備接続要求メッセージを送信したノードNnからの予備接続要求に応じて当該ノードNnの下流に予備接続するための接続処理を行う。この接続処理では、当該CPU304は、予備接続要求メッセージを送信したノードNnに対して予備接続応答メッセージを送信する。また、当該CPU304は、接続先紹介サーバ20に対して予備接続完了通知メッセージを送信する。
そして、予備接続応答メッセージを受信したノードNnのCPU304は、当該予備接続応答メッセージを送信したノードNnのノード情報をノード管理テーブルに追加登録する。
こうして、予備接続が確保されたノードNnのCPU304は、上流のノードNnの該システムSからの脱退や、上流からのコンテンツデータストリームの受信品質の低下などの接続切換事象を検出した場合、つまり、本接続が途絶したとき、又は途絶しそうになったとき、本接続から予備接続に切り換える切換処理を行う。この切換処理では、当該CPU304は、自ノードが本接続している本接続上流ノードNnに対してストリーム停止要求メッセージを送信する。なお、ストリーム停止要求メッセージは、自ノードと本接続上流ノードNnとの接続が既に途絶えている場合、送信されない。また、当該切換処理では、当該CPU304は、自ノードが予備接続している予備接続上流ノードNnに対してストリーム開始要求メッセージを送信する。これにより、予備接続のポートによりコンテンツデータストリームの受信が継続される。
ところで、上記放送された接続(本接続又は予備接続未)ノード情報パケットが多くのノードNnにより受信された場合、上記本接続又は予備接続を必要とするノードNnは、これらの多くのノードNnから接続要求(本接続要求又は予備接続要求)を受ける場合が想定される。かかる場合、上記本接続又は予備接続を必要とするノードNnは、例えば、最も早く接続要求をしてきたノードNnに対して接続応答を行うことが考えられるが、少しでも接続要求を減らし当該メッセージの受信処理負荷を低減するために、接続未ノード情報パケットの転送範囲を制限することが望ましい。
第一の方法として、上記接続未ノード情報パケットに、当該接続未ノード情報パケットの転送回数を制限するための転送制限情報が含まれる、つまり、当該接続未ノード情報に転送制限情報が付加されるように構成する。この転送回数情報は、例えば転送が許可される許可階層レベルで記述されても良いし、転送が許可される許可回数(ホップ数)で記述されても良い。当該転送制限情報が接続未ノード情報パケットに含まれる場合、当該転送制限情報に基づいて、当該接続未ノード情報パケットを転送可能か否かが判断される。例えば、転送回数情報が許可階層レベル(例えば、3)で記述されている場合、自ノードの階層レベル(例えば、図3(A)の例でノードN3の階層レベルは2)が許可階層レベルより小さい場合に転送可能と判断される。また、例えば、転送回数情報が許可回数(例えば、3)で記述されている場合、当該許可回数は接続未ノード情報パケットが転送される度に1減り、当該許可回数が0でない場合、転送可能と判断される。そして、転送可能であると判断された場合に、接続未ノード情報パケットの転送処理が行われる。
第二の方法として、接続未ノード情報パケットを受信したノードNnに既に下流のノードNnが既に複数接続されている場合、当該複数のノードNnのうち何れか一つのノードNnが転送先として選択され、選択されたノードNnに対してのみ接続未ノード情報パケットが転送されるように構成する。例えば、図3(A)において、接続未ノード情報パケットを受信したノードN1は、自己に接続しているノードN3及びN4のうち何れか一方のノードNnに対してのみ接続未ノード情報パケットを送信する。なお、第一の方法と第二の方法とを併用しても効果的である。
[2.ツリー型放送システムSの動作]
次に、本実施形態に係るツリー型放送システムSの動作について説明する。
(放送局10の処理)
先ず、図7及び図8を参照して、放送局10におけるCPU104の処理について説明する。
図7は、実施例1に係る放送局10におけるCPU104により実行される処理を示すフローチャートであり、図8は、実施例2に係る放送局10におけるCPU104により実行される処理を示すフローチャートである。
先ず、実施例1における図7の処理は、例えば主電源101のオンにより放送局10が起動することにより開始される。当該処理が開始されると、放送局10における各種プログラム及びタイマが初期化(タイマのカウント開始)される(ステップS1)。
次いで、CPU104は、放送開始命令が有ったか否かを判別する(ステップS2)。そして、例えば管理者から放送開始命令が有った場合には(ステップS2:YES)、CPU104は、コンテンツデータストリームの放送を開始する(ステップS3)。そして、CPU104は、接続先紹介サーバ20に対して放送開始通知メッセージを送信し(ステップS4)、ステップS9Eに進む。
一方、放送開始命令が無い場合には(ステップS2:NO)、CPU104は、放送停止命令が有ったか否かを判別する(ステップS5)。そして、例えば管理者から放送停止命令が有った場合には(ステップS5:YES)、CPU104は、コンテンツデータストリームの放送を停止する(ステップS6)。そして、CPU104は、接続先紹介サーバ20に対して放送停止通知メッセージを送信し(ステップS7)、ステップS9Eに進む。
一方、放送停止命令が無い場合には(ステップS5:NO)、CPU104は、システムSへの参加を希望するノードNnからの接続先探索メッセージを受信したか否かを判別する(ステップS8)。そして、接続先探索メッセージが受信された場合には(ステップS8:YES)、CPU104は、当該メッセージから本接続未ノード情報を抽出し、当該本接続未ノード情報を含む本接続未ノード情報パケットを、放送局10に接続されている下流のノードNnに対して送信し(ステップS9)、ステップS9Eに進む。こうして、本接続未ノード情報パケットは下流方向に向かって放送されていく。
一方、接続先探索メッセージが受信されない場合には(ステップS8:NO)、CPU104は、予備接続未ノード情報の要求契機になったか否かを、例えばタイマがカウントアップ(例えば、5分)したか否かにより判別する(ステップS9A)。そして、予備接続未ノード情報の要求契機になった場合には(ステップS9A:YES)、CPU104は、接続先紹介サーバ20に対して予備接続未ノード情報の要求を行い(ステップS9B)、これに応じて当該接続先紹介サーバ20から送信された予備接続未ノード情報を受信する(ステップS9C)。このとき、上記タイマのカウントはリセットされ、再びカウントが開始される。
次いで、CPU104は、受信された予備接続未ノード情報を含む予備接続未ノード情報パケットを、放送局10に接続されている下流のノードNnに対して送信し(ステップS9D)、ステップS9Eに進む。こうして、予備接続未ノード情報パケットは下流方向に向かって放送されていく。
一方、予備接続未ノード情報の要求契機になっていない場合には(ステップS9A:NO)、ステップS9Eに進む。
ステップS9Eでは、主電源101のオフ指令があったか否かが判別され、電源オフ指令がない場合には(ステップS9E:NO)、ステップS2に戻り、電源オフ指令があった場合には(ステップS9E:YES)、当該処理が終了する。
次に、実施例2の図8に示す処理では、CPU104は、実施例1のように放送局10から接続先紹介サーバ20に対して予備接続未ノード情報の要求を行わずに、後述する図10の処理で接続先紹介サーバ20から送信された予備接続未ノード情報を受信し(ステップS19A:YES)、受信された予備接続未ノード情報を含む予備接続未ノード情報パケットを、放送局10に接続されている下流のノードNnに対して送信する(ステップS19B)。その他の実施例2の図8に示す処理は、実施例1の図7に示す処理と同様である。
(接続先紹介サーバ20の処理)
次に、図9及び図10を参照して、接続先紹介サーバ20におけるCPU204の処理について説明する。
図9は、実施例1に係る接続先紹介サーバ20おけるCPU204により実行される処理を示すフローチャートであり、図7に対応する。また、図10は、実施例2に係る接続先紹介サーバ20におけるCPU204により実行される処理を示すフローチャートであり、図8に対応する。
先ず、実施例1における図9の処理は、主電源201のオンにより接続先紹介サーバ20が起動することにより開始される。当該処理が開始されると、接続先紹介サーバ20における各種プログラムが初期化される(ステップS21)。
次いで、CPU204は、放送局10からの放送開始通知又は放送停止通知メッセージを受信したか否かを判別する(ステップS22)。そして、放送開始通知又は放送停通知メッセージが受信された場合には(ステップS22:YES)、CPU204は、当該メッセージを送信した放送局10が放送開始した又は放送停止したことを示す情報を登録し(ステップS23)、ステップS35に進む。
一方、放送開始通知及び放送停通知メッセージが受信されていない場合には(ステップS22:NO)、CPU204は、ノードNnからの接続先紹介要求メッセージを受信したか否かを判別する(ステップS24)。そして、接続先紹介要求メッセージが受信された場合には(ステップS24:YES)、CPU204は、トポロジーデータベースのトポロジー管理情報から、接続先候補のノードNnを検索する(ステップS25)。
次いで、CPU204は、上記検索した1以上の接続先候補のノードNnのノード情報を含む接続先候補紹介メッセージを、接続先紹介要求メッセージの送信元のノードNnに対して送信(返信)し、ステップS35に進む。
一方、接続先紹介要求メッセージが受信されていない場合には(ステップS24:NO)、CPU204は、ノードNnからの本接続完了通知メッセージを受信したか否かを判別する(ステップS27)。そして、本接続完了通知メッセージが受信された場合には(ステップS27:YES)、CPU204は、当該メッセージを送信したノードNnのトポロジー管理情報をトポロジーデータベースに登録し(ステップS28)、ステップS35に進む。
一方、本接続完了通知メッセージが受信されていない場合には(ステップS27:NO)、CPU204は、ノードNnからの予備接続完了通知メッセージを受信したか否かを判別する(ステップS29)。そして、予備接続完了通知メッセージが受信された場合には(ステップS29:YES)、CPU204は、当該メッセージを送信したノードNnのトポロジー管理情報における、予備接続上流ノードNnへの予備接続の有無(「無」から「有」へ変更)を更新し(ステップS30)、ステップS35に進む。
一方、予備接続完了通知メッセージが受信されていない場合には(ステップS29:NO)、CPU204は、ノードNnからの予備接続有無通知メッセージ又は本接続から予備接続への切換通知メッセージを受信したか否かを判別する(ステップS31)。そして、予備接続有無通知メッセージ又は切換通知メッセージが受信された場合には(ステップS31:YES)、CPU204は、当該メッセージを送信したノードNnのトポロジー管理情報における、予備接続上流ノードNnへの予備接続の有無を更新し(ステップS30)、ステップS35に進む。
一方、予備接続有無通知メッセージ及び切換通知メッセージが受信されていない場合には(ステップS31:NO)、CPU204は、放送局10からの予備接続未ノード情報の要求(つまり、図7のステップS9B)が有ったか否かを判別する(ステップS32)。そして、予備接続未ノード情報の要求が有った場合には(ステップS32:YES)、CPU204は、トポロジー管理情報を参照し、予備接続上流ノードNnへの予備接続が無であるノードNnを検索する(ステップS33)。
次いで、上記検索された1以上の予備接続が無のノードNnのノード情報を含む予備接続未ノード情報を放送局10に対して送信し(ステップS34)、ステップS35に進む。
一方、予備接続未ノード情報の要求が無い場合には(ステップS32:NO)、ステップS35に進む。
ステップS35では、主電源201のオフ指令があったか否かが判別され、電源オフ指令がない場合には(ステップ35:NO)、ステップS22に戻り、電源オフ指令があった場合には(ステップS35:YES)、当該処理が終了する。
次に、実施例2の図10に示すステップS41〜S48の処理は、図9に示すステップS21〜S28の処理と同様である。図10に示すステップS49では、CPU204は、本接続完了通知メッセージを送信したノードNnのノード情報を含む予備接続未ノード情報を放送局10に対して送信し(ステップS49)、ステップS56に進む。
図10に示すステップS50では、CPU204は、ノードNnからの予備接続完了通知メッセージを受信したか否かを判別し、予備接続完了通知メッセージが受信された場合には(ステップS50:YES)、当該メッセージを送信したノードNnのトポロジー管理情報における、予備接続上流ノードNnへの予備接続の有無を更新し(ステップS51)、ステップS56に進む。
一方、予備接続完了通知メッセージが受信されていない場合には(ステップS50:NO)、CPU204は、ノードNnからの予備接続有無通知メッセージ又は本接続から予備接続への切換通知メッセージを受信したか否かを判別する(ステップS52)。そして、予備接続有無通知メッセージ又は切換通知メッセージが受信された場合には(ステップS52:YES)、CPU204は、当該メッセージを送信したノードNnのトポロジー管理情報における、予備接続上流ノードNnへの予備接続の有無を更新する(ステップS53)。次いで、CPU204は、当該メッセージを送信したノードNnの予備接続上流ノードNnへの予備接続が無であるか否かを判別する(ステップS54)。そして、当該予備接続が無である場合には(ステップS54:YES)、CPU204は、当該ノードNnのノード情報を含む予備接続未ノード情報を放送局10に対して送信し(ステップS55)、ステップS56に進む。
(ノードNnの処理)
次に、図11乃至図13を参照して、ノードNnにおけるCPU304の処理について説明する。
図11乃至図13は、ノードNnにおけるCPU304により実行される処理を示すフローチャートである。
図11の処理は、例えば主電源301a及び補助電源301bのオンによりノードNnが起動することにより開始される。当該処理が開始されると、ノードNnにおける各種プログラム及びタイマが初期化(タイマのカウント開始)される(ステップS61)。
次いで、CPU304は、例えばユーザからユーザ入力用リモコン310を通じて参加要求指令が有ったか否かを判別する(ステップS62)。そして、参加要求指令が有った場合には(ステップS62:YES)、ステップS63に進み、参加要求指令が無い場合にが(ステップS62:NO)、ステップS75に進む。
ステップS63では、CPU304は、上流のノードNnへの接続方法として接続先紹介サーバ20を利用するか否かを決定する。当該接続先紹介サーバ20を利用するかは例えばランダムに決定される。そして、接続先紹介サーバ20を利用する場合(ステップS63:YES)、ステップS64に進み、接続先紹介サーバ20を利用しない場合(放送局10を利用する場合)(ステップS63:NO)、ステップS72に進む。このように、接続先紹介サーバ20を利用する接続方法と、放送局10を利用する接続方法との何れか一つをランダムに選択することで、接続先紹介サーバ20と放送局10の双方の負担を低減させることができる。
ステップS64では、CPU304は、接続先紹介サーバ20の所在情報にしたがって当該接続先紹介サーバ20に対して接続先候補紹介要求メッセージを送信する。そして、これに応じて接続先紹介サーバ20からの接続先候補紹介メッセージが受信されると(ステップS65)、サーバ利用時の接続処理が行われる(ステップS66)。
かかる接続処理では、接続先候補紹介メッセージにより取得された1又は複数の接続先(上流のノード)候補の中から条件に合う(或いは、ランダムに)ノードNnが接続先として一つ選択され、当該選択されたノードNnに対して本接続要求メッセージが送信される。そして、これに応じて上記選択されたノードNnからの本接続応答メッセージが受信されると、当該ノードNnに対してストリーム開始要求メッセージが送信される(ステップS67)。こうして、本接続上流ノードNnからのコンテンツデータストリームの受信処理が開始され(ステップS68)、受信されバッファメモリに蓄積されたコンテンツデータの再生処理が開始される(ステップS69)。
次いで、CPU304は、接続先紹介サーバ20に対して、本接続が完了したことを示す本接続完了通知メッセージを送信し(ステップS70)、ステップS71に進む。
ステップS71では、主電源301aのオフ指令があったか否かが判別され、電源オフ指令がない場合には(ステップ71:NO)、ステップS62に戻り、電源オフ指令があった場合には(ステップS71:YES)、当該処理が終了する。
一方、ステップS72では、CPU304は、放送局10の所在情報にしたがって放送局10に対して、上述した本接続未ノード情報を含む接続先探索メッセージを送信する。こうして送信された本接続未ノード情報は、放送局10により本接続未ノード情報パケットに含められて放送される。そして、当該本接続未ノード情報に応じて上流のノードNnから送信された本接続要求メッセージが受信されると(ステップS73)、当該上流のノードNnに対して本接続応答メッセージが返信され(ステップS74)、続いて、ステップS67に移行されて上記同様の処理が行われる。
一方、ステップS75では、CPU304は、上流からの本接続未ノード情報パケットを受信したか否かを判別し、受信した場合には(ステップS75:YES)、ステップS76に進み、受信していない場合には(ステップS75:NO)、図12に示すステップS83に進む。
ステップS76では、CPU304は、上述したように、自ノードの下流に本接続可能であるか否かを判別し、本接続可能である場合には(ステップS76:YES)、ステップS77に進み、本接続可能でない場合には(ステップS76:NO)、ステップS81に進む。
ステップS77では、CPU304は、本接続未ノード情報パケットに含まれる本接続未ノード情報に対応するノードNnに対して本接続要求メッセージを送信する。これに応じて当該本接続未ノード情報に対応するノードNnからの本接続応答メッセージが受信され(ステップS78)、続いてストリーム開始要求メッセージが受信されると(ステップS79)、CPU304は、コンテンツデータストリームの送信(転送)処理を開始し(ステップS80)、ステップS71に移行する。
一方、ステップS81では、CPU304は、自ノードに下流のノードNnが存在するか(自ノードの下流にノードNnが直接接続されているか)否かを判別する。そして、自ノードに下流のノードNnが存在する場合には(ステップS81:YES)、ステップS82に進み、自ノードに下流のノードNnが存在しない場合には(ステップS81:NO)、ステップS71に移行する。
ステップS82では、CPU304は、自ノードに接続されている下流のノードNnに対して上記本接続未ノード情報パケットを転送し、ステップS71に移行する。
次に、図12に示すステップS83では、CPU304は、予備接続有無の通知契機になったか否かを、例えばタイマがカウントアップ(例えば、5分)したか否かにより判別する。そして、予備接続有無の通知契機になった場合には(ステップS83:YES)、CPU104は、接続先紹介サーバ20に対して、上述した予備接続有無通知メッセージを送信し(ステップS84)、ステップS71に戻る。このとき、上記タイマのカウントはリセットされ、再びカウントが開始される。
一方、予備接続有無の通知契機になっていない場合には(ステップS83:NO)、CPU104は、上流からの予備接続未ノード情報パケットを受信したか否かを判別し、受信した場合には(ステップS85:YES)、ステップS86に進み、受信していない場合には(ステップS85:NO)、ステップS87に進む。
ステップS86では、予備接続未ノード情報パケット受信処理が行われる。かかる予備接続未ノード情報パケット受信処理では、図13に示すように、先ず、CPU304は、上述したように、自ノードの下流に予備接続可能であるか否かを判別し、予備接続可能である場合には(ステップS861:YES)、ステップS862に進み、予備接続可能でない場合には(ステップS861:NO)、ステップS866に進む。
ステップS862では、CPU304は、予備接続未ノード情報パケットから予備接続未ノード情報を一つ選択する。
次いで、CPU304は、選択した予備接続未ノード情報に対応するノードNnに対して予備接続要求メッセージを送信する(ステップS863)。これに応じて当該予備接続未ノード情報に対応するノードNnからの予備接続応答メッセージが受信されると(ステップS864)、CPU304は、予備接続未ノード情報が残っているか否かを判別する(ステップS865)。そして、予備接続未ノード情報が残っている場合(ステップS865:YES)、つまり、予備接続未ノード情報パケットに複数のノードNnの予備接続未ノード情報が含まれており、上記選択した予備接続未ノード情報以外にも予備接続未ノード情報がある場合には、ステップS866に進み、予備接続未ノード情報が残っていない場合(ステップS865:NO)、図12に示す処理に戻る。
ステップS866では、CPU304は、自ノードに下流のノードNnが存在するか否かを判別する。そして、自ノードに下流のノードNnが存在する場合には(ステップS866:YES)、ステップS867に進み、自ノードに下流のノードNnが存在しない場合には(ステップS866:NO)、図12に示す処理に戻る。
ステップS867では、CPU304は、自ノードの下流のノードが複数であるか否かを判別し、複数である場合には(ステップS867:YES)、ステップS868に進み、複数でない場合には(ステップS867:NO)、ステップS869に進む。
ステップS868では、CPU304は、予備接続未ノード情報パケットを転送するノードNnを選択する。例えば、自ノードに接続されている下流のノードNnの全てが選択される。或いは、上述したように、予備接続未ノード情報に転送制限情報を付加することで、例えば予備接続未ノード情報パケットの転送を許可する許可階層レベルと自ノードの階層レベルが等しければ、自ノードに接続されている下流のノードNnのうちから一つのノードNnも選択されない。また、自ノードに接続されている下流のノードNnのうちから何れか一つのノードNnが選択される。例えば、図3(A)の例で、ノードN1に接続されている下流のノードN3及びN4のうちノードN3が選択される。
そして、ステップS869では、CPU304は、自ノードに接続されている下流のノードNn(選択されたノードNn)に対して上記予備接続未ノード情報パケットを転送し、図12に示す処理に戻る。
次に、ステップS87では、CPU304は、上流からの予備接続要求メッセージを受信したか否かを判別し、受信した場合には(ステップS87:YES)、ステップS88に進み、受信していない場合には(ステップS87:NO)、ステップS90に進む。
ステップS88では、CPU304は、予備接続要求メッセージを送信したノードNnに対して予備接続応答メッセージを送信する。
次いで、CPU304は、接続先紹介サーバ20に対して、予備接続が完了したことを示す予備接続完了通知メッセージを送信し(ステップS89)、ステップS71に戻る。
ステップS90では、CPU304は、上述した接続切換事象を検出したか否かを判別し、接続切換事象が検出された場合には(ステップS90:YES)、ステップS91に進み、接続切換事象が検出されない場合には(ステップS90:NO)、ステップS97に進む。
ステップS91では、CPU304は、予備接続上流ノードNnへの予備接続が有るか否かを判別し、予備接続が有る場合には(ステップS91:YES)、ステップS92に進み、予備接続が無い場合には(ステップS91:NO)、ステップS63に戻って上記と同様の処理を行う。
ステップS92では、CPU304は、コンテンツデータストリームを受信する接続を、本接続から予備接続に切り換える。
次いで、CPU304は、当該予備接続している予備接続上流ノードNnに対してストリーム開始要求メッセージを送信する(ステップS93)。これにより、当該予備接続上流ノードNnは本接続上流ノードNnになる。
次いで、CPU304は、予備接続のポートを通じてコンテンツデータストリームの受信処理を開始し(ステップS94)、受信されバッファメモリに蓄積されたコンテンツデータの再生処理を開始する(ステップS95)。
次いで、CPU304は、接続先紹介サーバ20に対して、本接続から予備接続への切換通知メッセージを送信し(ステップS96)、ステップS71に戻る。
ステップS97のその他の処理では、その他のメッセージ、例えばストリーム停止要求メッセージの送受信処理や、システムSから脱退する際の接続先紹介サーバ20への脱退報告メッセージの送信処理が行われるが、詳しい説明は省略する。
なお、上記ステップS75において本接続未ノード情報パケットが受信されたときにも、予備接続未ノード情報パケットが受信されたときに行われるステップS867及びS868の処理が行われるようにして、本接続未ノード情報パケットの転送範囲を制限するように構成しても良い。この場合において、接続先探索メッセージを送信したノードNnが、本接続先となる上流のノードNnからの本接続要求が一定時間得られなかった場合にはじめて接続先紹介サーバ20に対して接続先紹介要求メッセージを送信するように構成すればより効果的である。
以上説明したように上記実施形態によれば、放送局10から、接続(本接続又は予備接続)を必要とするノードNnのノード情報を含む接続未ノード情報パケットを放送させ、当該接続未ノード情報パケットを受信したノードNnが、当該パケットに含まれるノード情報に対応するノードNnが自己の下流に接続可能である(言い換えれば、下流へのノード接続数に余裕がある)と判断した場合に、当該ノードNnに対して接続要求を行って自己の下流に接続するための接続処理を行うように構成したので、接続先紹介サーバ20の負荷を低減させることができ、接続を必要とするノードNnが迅速に他のノードNnに接続をすることができる。
また、上記接続未ノード情報パケットを、コンテンツデータストリームの放送経路(配信経路)を利用して、上流のノードNnから下流のノードNnに向かって順次転送されるようにし、上流のノードNn側から、当該上流のノードNnの下流側に位置されるべきノードNnに対して接続要求を行うことにより本接続又は予備接続が確立されるようにしたので、より上流に位置するノードNnを優先して上記接続を必要とするノードNnの接続先にさせることができ、より安定的なツリートポロジーを形成し易くすることができる。また、ツリートポロジーの上位階層が埋まったきれいなツリートポロジーをできやすい。
また、予備接続未ノードパケットに予備接続を必要とする複数のノードNnのノード情報を含ませて当該パケットを放送するようにしたので、予備接続が必要な複数のノードNnの当該予備接続をより効率良く行わせることができる。
また、上述したように、接続未ノード情報パケットの転送する転送範囲を制限することで、多くのノードNnから接続要求があるのを回避でき、当該接続要求の処理負荷を低減することができる。
更に、接続未ノード情報パケットを転送する階層レベルや転送回数などを制限することで、より上流に位置するノードNnのみに接続未ノード情報パケットを受信させることができるので、情報の伝達遅延を低減させることができ、接続を必要とするノードNnが迅速、かつ効率良く他のノードNnに接続することができる。特に、予備接続未ノードパケットは、コンテンツデータの放送品質を低下させないように低ビットレートで放送されるので、ツリートポロジーの階層レベル数(段数)が増加した場合に、より下流に位置する(つまり、階層レベルが大きい)ノードNnは、接続未ノード情報パケットの受信に時間がかかってしまったり、途中の放送経路の断により当該パケットの未到達がおきやすいが、上述したように、より上流に位置するノードNnのみに接続未ノード情報パケットが受信されるように制限し、なおかつ、上流のノードNn側から、当該上流のノードNnの下流側に位置されるべきノードNnに対して接続要求を行うようにすることで、情報の伝達遅延を無くし、接続を必要とするノードNnがより迅速、かつ効率良く他のノードNnに接続することができる。